This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/am5716:am5716上键盘控制器的 Linux 驱动程序支持

Guru**** 2555630 points
Other Parts Discussed in Thread: AM5716

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/608763/linux-am5716-linux-driver-support-for-the-keyboard-controller-on-the-am5716

器件型号:AM5716

工具/软件:Linux

am5716上的内置键盘控制器是否支持 Linux 驱动程序?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在内核配置中启用了 keyboard_omap4并将以下内容添加到器件树中(主要取自 omap5.dtsi)
    当内核启动时,我收到消息“[0.36777] platform 4ae1c000.keypad: cannot lookup hwmod 'kbd'”。
    要使其正常工作、还需要做些什么?

    键盘@4ae1c000{
    兼容="ti、OMAP4-keypad";
    Linux、keymap =< 0x00000001
    0x0001006A
    0x01000067
    0x0101001c
    0x02000069
    0x0201006c >;
    键盘、num-rows =<3>;
    键盘、num 列=<2>;
    linux、input-no-autorepeat;
    reg =<0x4ae1c000 0x80>;
    reg-names ="MPU";
    ti、hwmods ="kbd";
    };

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您是否在相应的 DTS 文件中添加了状态为"确定"的键盘(&P)?

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Yordan、您好!

    是的、我在其他地方有用于键盘的 status="oke"。

    我在文件/arch/arm/mach-omap2/omap_hwmod_7xx_data.c 中发现键盘的定义缺失。  它看起来是为键盘定义时钟、是驾驶员所需的。

    定义此参数后、驱动程序立即初始化、并自动创建/dev/input/event0器件。

    但是、当我按下按钮时、键盘不会产生中断。

    我注意到数据表显示键盘控制器具有 IRQ_crossbar_115的 IRQ_crossbar 输入、并且默认映射为 MPU_IRQ_120。

    根据一些其他定义(例如 UART3等)、我认为我错误地为键盘定义了中断、因此我将其更改为115。

    当我这么做时、内核现在显示以下内容。

    我不确定此 IRQ 交叉开关是如何工作的。

    [34.217006] IRQ 369:无人照管(尝试使用"irqpoll"选项引导)
    [34.299004] CPU:0 PID:1 Comm:swapper/0未被污染4.4.32 #131
    [34.372591]硬件名称:通用 DRA72X (平展器件树)
    [34.446173]背迹:
    [34.475674][ ](dump_backtrace)从[ ](show_stack+0x18/0x1c)
    [34.567120] r7:00000171 R6:20000193 R5:00000000 R4:c0963e34
    [34.635588][ ](show_stack)从[ ](dump_stack+0x84/0xa0)
    [34.722835][ ](dump_stack)从[ ](__REPORT_BAD_IRQ+0x2C/0xc4)
    [34.816382] r7:00000171 R6:00000000 R5:00000002 R4:ef206c00
    [34.884845][ ](__report_BAD_IRQ),来自[ ](NOTE_INTERRUPT+0x1ec/0x294)
    [34.984699] R9:00000171 R8:00000000 r7:00000171 R6:00000000 R5:00000002 R4:ef206c00
    [35.078415][ ](NOTE_INTERRUPT)从[ ](handle_irq_event_perpu + 0x110/0x130)
    [35.185621] R10:c0991e33 R9:00000002 R8:00000000 r7:00000171 R6:ef206c00 R5:00000002
    [35.280379] R4:00000000 R3:00000000
    [35.323564][ ](handle_irq_event_perpu)、来自[ ](handle_IRQ_EVENT_+0x40/0x64)
    [35.430771] R10:c0938080 R9:eeb47c00 R8:ef006000 r7:00000171 R6:ef206c60 R5:ef206c60
    [35.25528] R4:ef206c00
    [35.556063][ ](handle_irq_event)从[ ](handle_fasteoi_IRQ+b0/0x12c)
    [35.659067] r7:00000171 r6:ef206c60 r5:c09644b0 r4:ef206c00
    [35.727532][ ](handle_fasteoi_IRQ)、来自[ ](generic_handle_IRQ+0x20/0x30)
    [35.831586] r7:00000171 R6:c0933424 R5:ef07fc58 R4:00000000
    [35.900044][ ](generic_handle_IRQ)、来自[ ](_handle_domain_IRQ+0x94/bb)
    [36.005157][ ](_handle_domain_IRQ)、来自[ ](GIC_Handle_IRQ+0x50/0x7c)
    [36.1060606060] R9:eeb47c00 R8:ef006000 r7:fa213000 R6:ef07fb50 R5:c09388e0 R4:fa212000
    [36.199772][ ](GIC_Handle_IRQ)、来自[ ](_IRQ_Svc+0x40/0x74)
    [36.290171]异常堆栈(0xef07fb50至0xef07fb98)
    [36.351147] fb40:00000000 00200140 00000000 00000000
    [36.449950] fb60:ef07e000 00000000 00000002 c0995300 ef006000 eeb47c00 c0938080 ef07fbf4
    [36.548748] fb80:ef07fbf8 ef07fb0 c0034aec c00346ac 60000113 ffff
    [36.628634] r7:ef07fb84 R6:ffff R5:60000113 R4:c00346ac
    [36.697098][ ](__do_softirq)、从[ ](IRQ_EXIT+0x8c/0xf8)
    [36.784341] R10:00000000 R9:eeb47c00 R8:ef006000 r7:00000012 R6:c0933424 R5:00000000
    [36.879100] R4:ffe000
    [36.909642][ ](IRQ_EXIT)从[ ](_handle_domain_IRQ+0x98/bb)
    [37.004241] R5:00000000 R4:00000000
    [37.047423][ ](_handle_domain_IRQ)、来自[ ](GIC_Handle_IRQ+0x50/0x7c)
    [37.148327] R9:eeb47c00 R8:eeb47c1c r7:fa213000 R6:ef07fc58 R5:c09388e0 R4:fa212000
    [37.242031][ ](GIC_Handle_IRQ)、来自[ ](_IRQ_Svc+0x40/0x74)
    [37.332430]异常堆栈(0xef07fc58至0xef07fca0)
    [37.393406] fc40:ef206c60 60000013
    [37.492208] fc60:00000001 0000000b ef206c00 00000001 EEb29ec0 EEb47d78 EEb47c1c EEb47c00
    [37.591008] fc80:00000000 ef07fcb4 ef07fcb8 ef07fca8 c00723e8 c066fect4 00000013 ffffff
    [37.689806] r7:ef07fc8c r6:ffFFFF r5:00000013 r4:c066fect4
    [37.758267][ ](_raW_spin_unlock_irqrestore)从[ ](__IRQ_PLOT_desc_unlock+0x1c/0x40)
    [37.874932][ ](__IRQ_PLOT_desc_unlock)从[ ](ENABLE_IRQ+0x5c/0x78)
    [37.973734] R5:00000171 R4:ef206c00
    [38.016920][ ](ENABLE_IRQ)从[ ](OMAP4_SPACK_OPEN+0xa8/0xc0)
    [38.111516] R5:eeb47c00 R4:eeb29c40
    [38.154692][ ](OMAP4_SPACK_OPEN)从[ ](input_open_device+0x74/b0)
    [38.256646] R5:eeb29ec0 R4:eeb47c00
    [38.299822][ ](input_open_device)来自[ ](kbd_connect+0x50/0x88)
    [38.395470] r7:c06bb97c r6:eeb47c00 r5:eeb29ec0 r4:00000000
    [38.463918][ ](kbd_connect)、来自[ ](INPUT_ATE_handler + 0x1c4/0x1F4)
    [38.564822] r7:c06bb97c r6:c096ba74 r5:eeb47c00 r4:c06bb98c
    [38.633285][ ](input_attach_handler)从[ ](INPUT_REGISTER_DEVICE_0x310/0x3cc)
    [38.74467] R9:eeb47c00 R8:eeb47d98 r7:00000000 R6:c097eb0c R5:c096ba74 R4:eeb47c00
    [38.838412][ ](INPUT_REGISTER_DEVICE)、来自[ ](OMAP4_SPACK_PROBE +0x430/0x544)
    [38.947720] R9:eeb47c00 R8:00000000 r7:ef20c00 R6:eeb29c80 R5:ef20c10 R4:eeb29c40
    [39.041421][ ](OMAP4_SPACK_PROBE)、来自[ ](platform_drv_probe +0x58/0xa8)
    [39.145474] R9:c0931674 R8:c097f008 r7:00000000 R6:c097f008 r5:ef20ca10 r4:c0440f44
    [39.239190][ ](platform_drv_probe)、来自[ ](DRIVER_PROBLE_DEVICE_0x118/0x29c)
    [39.346396] r7:00000000 R6:c09e5c1c R5:00000000 R4:ef20ca10
    [39.414852][ ](driver_probe_device)从[ ](__driver_attach+0x70/0x94)
    [39.516807] R9:c0931674 R8:c093b8a0 r7:c0974b88 R6:c097f008 R5:ef20ca44 R4:ef20ca10
    [39.610522][ ](__driver_attach)从[ ](BUS_TO_EASE_DEV_0x74/0x98)
    [39.709323] r7:c0974b88 r6:c039d4cc r5:c097f008 r4:00000000
    [39.777778][ ](bus_for_each_dev)、来自[ ](DRIVER_ATT+0x20/0x28)
    [39.874480] R6:eeb2a900 R5:00000000 R4:c097f008
    [39.930295][ ](driver_attach)从[ ](BUS_ADD_DRIVER+0xd4/0x1f0)
    [40.025951][ ](BUS_ADD_DRIVER)从[ ](DRIVER_REGISTER+0xa4/0xe8)
    [40.122652] r7:c093b8a0 r6:00000000 r5:c090bbcc r4:c097f008
    [40.191110][ ](driver_register)、从[ ](__platform_driver_register+0x38/0x4c)
    [40.300418] R5:c090bbcc R4:eeb29bc0
    [40.343603][ ](__platform_driver_register)、来自[ ](OMAP4_SPACK_DRIVER_INIT+0x18/0x20)
    [40.462373][ ](OMAP4_SPACK_DRIVER_INIT)、来自[ ](do_one _initcall+0x10c/0x1c0)
    [40.571691][ ](多个_initcall)、来自[ ](kernel_init_freeable + 0x194/0x25c)
    [40.676796] R9:c0931674 R8:c0994000 r7:c0923834 R6:000000ba R5:c0994000 R4:00000007
    [40.770511][ ](kernel_init_freable)从[ ](kernel_init+0x14/0xf4)
    [40.869311] R9:00000000 R8:00000000 r7:00000000 R6:00000000 R5:c066b7d4 R4:c0994000
    [40.963025][ ](kernel_init)、来自[ ](RET_FANK_F叉+0x14/0x2C)
    [41.054472] R5:c066b7d4 R4:00000000
    [41.097649]处理程序:
    [41.125004][ ] OMAP4_SPACK_IRQ_handler 线程化[ ] OMAP4_SPACK_IRQ_THREAD_Fn
    [41.23322]正在禁用 IRQ #369