Использовать драйвер UART из ядра Linux

Существует внешнее устройство (сенсорная клавиатура), подключенное к порту UART процессора (tx rx) и линии прерывания gpio. Нужно написать драйвер для этой клавиатуры (не стандартный собственный протокол, ядро ​​linux 4.1).

Я написал модуль со строчной дисциплиной и запросил функцию irq для open() (когда он открыт из пространства пользователя /dev/ttymxc3). Это работа, но структура линейной дисциплины не имеет освобожденных обратных вызовов для функций приостановки и возобновления.

Необходимо отключить спящую клавиатуру, когда система спит.

Я пытаюсь написать драйвер tty, который использует драйвер uart, но не знаю как. Как связаться с модулем ядра с внешними устройствами через порт UART?

Благодарю.

1 ответ

Вы можете использовать устройство UART в пространстве ядра

    // call userspace
    {
            mm_segment_t fs;
            fs=get_fs();
            set_fs(get_ds());//KERNEL DS
            handle = sys_open(UTS_UART_DEV_NAME, O_RDWR | O_NOCTTY | O_NONBLOCK, 0);
            if( handle < 0 )
            {
                    printk(KERN_INFO "UTS Port Open Fail [%s] \n ", UTS_UART_DEV_NAME);
                    return -1;
            }

            set_fs(fs);
    }
    // call userspace
Другие вопросы по тегам