Device node at /dev/tty* not getting created for uart serial driver

Manavendra Nath Manav mnm.kernel at gmail.com
Wed Nov 28 03:05:16 EST 2012


On Mon, Nov 26, 2012 at 2:02 PM, Jinqiang Zeng <jinqiangzeng at gmail.com> 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 at gmail.com>
>>
>>
>> On Sat, Nov 24, 2012 at 2:20 PM, Manavendra Nath Manav <mnm.kernel at gmail.com> wrote:
>>>
>>> Hi RK
>>>
>>> On Sat, Nov 24, 2012 at 2:03 PM, Manavendra Nath Manav <mnm.kernel at gmail.com> 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?

--
Manavendra Nath Manav



More information about the Kernelnewbies mailing list