On Wed, Nov 28, 2012 at 1:35 PM, Manavendra Nath Manav <mnm.kernel@xxxxxxxxx> wrote: > On Mon, Nov 26, 2012 at 2:02 PM, Jinqiang Zeng <jinqiangzeng@xxxxxxxxx> wrote: >> >> first creat a device class,then register a device to the kernel. using the following functions: >> struct class *class_create(struct module *owner, char *name); >> struct class_device *class_device_create(struct class *cls, >> struct class_device *parent, >> dev_t devt, >> struct device *device, char *fmt, ...) >> >> >> 2012/11/26 Manavendra Nath Manav <mnm.kernel@xxxxxxxxx> >>> >>> >>> On Sat, Nov 24, 2012 at 2:20 PM, Manavendra Nath Manav <mnm.kernel@xxxxxxxxx> wrote: >>>> >>>> Hi RK >>>> >>>> On Sat, Nov 24, 2012 at 2:03 PM, Manavendra Nath Manav <mnm.kernel@xxxxxxxxx> wrote: >>>>> >>>>> I have written a simple UART serial driver in embedded Linux running busybox with mdev rules. I have provided .dev_name as "ttyC2C" in my driver code. >>>>> >>>>> static struct uart_driver serial_omap_reg = { >>>>> .owner = THIS_MODULE, >>>>> .driver_name = "Omap-C2C-Serial", >>>>> .dev_name = "ttyC2C", >>>>> .nr = OMAP_MAX_HSUART_PORTS, >>>>> .cons = NULL, >>>>> }; >>>>> >>>>> However the node is getting created in >>>>> >>>>> ./sys/devices/platform/omap_c2c_uart.0/tty/ttyC2C0 >>>>> ./sys/class/tty/ttyC2C0 >>>>> >>>>> / # ls -l ./sys/class/tty/ttyC2C0 >>>>> lrwxrwxrwx 1 root 0 0 Jan 1 00:14 ./sys/class/tty/ttyC2C0 -> ../../devices/platform/omap_c2c_uart.0/tty/ttyC2C0 >>>>> >>>>> / # ls -l ./sys/devices/platform/omap_c2c_uart.0/tty/ttyC2C0 >>>>> -r--r--r-- 1 root 0 4096 Jan 1 00:14 dev >>>>> lrwxrwxrwx 1 root 0 0 Jan 1 00:14 device -> ../../../omap_c2c_uart.0 >>>>> drwxr-xr-x 2 root 0 0 Jan 1 00:14 power >>>>> lrwxrwxrwx 1 root 0 0 Jan 1 00:14 subsystem -> ../../../../../class/tty >>>>> -rw-r--r-- 1 root 0 4096 Jan 1 00:14 uevent >>>>> / # >>>>> >>>>> The mdev rules for tty are: >>>>> >>>>> tty 0:5 0666 >>>>> tty.* 0:0 0620 >>>>> >>>>> How to get device node as /dev/ttyC2C ? >>>>> >>>>> -- >>>>> Manavendra Nath Manav >>>> >>>> >>>> can you help me on following issue? >>>> >>>> -- >>>> Manavendra Nath Manav >>> >>> >>> In "Essential Linux Device Drivers" book, it says that that the driver name in "struct platform_driver" and "struct uart_driver" should be same. I modified the code according but still /dev/ttyC2C node is not being populated. >>> >>> -- >>> Manavendra Nath Manav > > > When i add .major and .minor to the struct uart_driver and create the > device node manually using "mknod" then the driver works fine. Why the > kernel (3.4.0) is not able to create it automatically? In the driver, you just need to take care of populating the appropriate device class and device information into the /sys. udev should then take care of the rest (assuming you are using udev). Something like this should work: struct class *cl = class_create(THIS_MODULE, "<device_class_name>"); device_create(cl, NULL, first, NULL, "<device_name>", ...); first is dev_t with the corresponding <major, minor>. /dev should than have the /dev/device_name entry. This should work. If it does not, please share your code if possible. HTH! Regards Mayur _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel