Не могу запросить IRQ 1 клавиатуры на Raspberry Pi в драйвере Linux - PullRequest
0 голосов
/ 07 марта 2019

Вот часть моего исходного кода драйвера:

#define KEYBOARD_IRQ        1

err = request_irq(KEYBOARD_IRQ, (irq_handler_t) st7735_keyboard_interrupt, 
                  IRQF_SHARED, "st7735_keyboard_interrupt", 
                  (void *)(st7735_keyboard_interrupt));
if(err) {
        printk(KERN_ERR "ST7735 : ERROR : Failed to request keyboard interrupt\n");
        return err;
}

Возвращаемое значение -22 - EINVAL. Я подозреваю, что проблема в номере IRQ клавиатуры. Клавиатура подключена к RPi.

cat / proc / bus / input / devices:

I: Bus=0003 Vendor=1c4f Product=0026 Version=0110
N: Name="SIGMACHIP USB Keyboard"
P: Phys=usb-3f980000.usb-1.4/input0
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/0003:1C4F:0026.0001/input/input0
U: Uniq=
H: Handlers=sysrq kbd leds event0 
B: PROP=0
B: EV=120013
B: KEY=10000 7 ff800000 7ff febeffdf f3cfffff ffffffff fffffffe
B: MSC=10
B: LED=7

I: Bus=0003 Vendor=1c4f Product=0026 Version=0110
N: Name="SIGMACHIP USB Keyboard"
P: Phys=usb-3f980000.usb-1.4/input1
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.1/0003:1C4F:0026.0002/input/input1
U: Uniq=
H: Handlers=kbd event1 
B: PROP=0
B: EV=1f
B: KEY=3007f 0 0 0 0 483ffff 17aff32d bf544446 0 0 1 130c13 b17c000 267bfa d941dfed 9e1680 4400 0 10000002
B: REL=40
B: ABS=1 0
B: MSC=10

cat / proc / interrupts:

           CPU0       CPU1       CPU2       CPU3       
 16:          0          0          0          0  bcm2836-timer   0 Edge      arch_timer
 17:      11098      13199      12423       3164  bcm2836-timer   1 Edge      arch_timer
 21:          0          0          0          0  bcm2836-pmu   9 Edge      arm-pmu
 23:        929          0          0          0  ARMCTRL-level   1 Edge      3f00b880.mailbox
 24:          2          0          0          0  ARMCTRL-level   2 Edge      VCHIQ doorbell
 46:          0          0          0          0  ARMCTRL-level  48 Edge      bcm2708_fb dma
 48:          0          0          0          0  ARMCTRL-level  50 Edge      DMA IRQ
 50:          0          0          0          0  ARMCTRL-level  52 Edge      DMA IRQ
 51:        355          0          0          0  ARMCTRL-level  53 Edge      DMA IRQ
 54:       1995          0          0          0  ARMCTRL-level  56 Edge      DMA IRQ
 55:          0          0          0          0  ARMCTRL-level  57 Edge      DMA IRQ
 56:          0          0          0          0  ARMCTRL-level  58 Edge      DMA IRQ
 59:          0          0          0          0  ARMCTRL-level  61 Edge      bcm2835-auxirq
 62:    1348363          0          0          0  ARMCTRL-level  64 Edge      dwc_otg, dwc_otg_pcd, dwc_otg_hcd:usb1
 83:          0          0          0          0  ARMCTRL-level  85 Edge      3f804000.i2c
 84:     102410          0          0          0  ARMCTRL-level  86 Edge      3f204000.spi
 86:        285          0          0          0  ARMCTRL-level  88 Edge      mmc0
 87:       4819          0          0          0  ARMCTRL-level  89 Edge      uart-pl011
 92:      30543          0          0          0  ARMCTRL-level  94 Edge      mmc1
FIQ:              usb_fiq
IPI0:          0          0          0          0  CPU wakeup interrupts
IPI1:          0          0          0          0  Timer broadcast interrupts
IPI2:       3946      26730      81970      29799  Rescheduling interrupts
IPI3:         17          4          7          7  Function call interrupts
IPI4:          0          0          0          0  CPU stop interrupts
IPI5:       1854       1806       5681        314  IRQ work interrupts
IPI6:          0          0          0          0  completion interrupts

Помогите мне, пожалуйста, понять, как я должен запрашивать IRQ клавиатуры в моей системе.

1 Ответ

0 голосов
/ 07 марта 2019

Вы не можете определить номера IRQ по своему выбору, просто так. IRQ1, вероятно, является прерыванием базовой системы очень низкого уровня. Кажется, это клавиатура USB, которая в идеале должна работать из коробки или это какой-то специальный чип ?. Пожалуйста, ознакомьтесь с тем, как писать драйверы с интерфейсом через USB. Например, см. здесь . См. Глава 13 .

...