Hi ,
I am trying to understand how device driver works in linux.
I have a device node as follows (Major number 89, device name i2c-0)
crw-r--r-- 1 0 0 89, 0 Sep 29 01:36 /dev/i2c-0
I have the i2c driver with the name
i2c.ko
and I will doinsmod i2c.ko
during start up.And in the driver , following function will be called during initialization:
register_chrdev(89, "i2c", &i2chtv_fops)<0 // not "i2c-0"
My question is : When user call open("/dev/i2c-0", O_RDWR)
,how the kernel knows which driver to use ? I noticed the device name is i2c-0
but registered device name is i2c
. Is it because they are use the same major number that the kernel can use the correct driver?