jasonyanys 2024-10-12 16:22 采纳率: 0%
浏览 38
已结题

F1C100S下的红外解码IR_RX驱动问题

有个问题想请各位帮帮忙,目前用全志的F1C100S做红外解码IR_RX,嵌入式Linux的版本是5.4.77,目前IR_RX已经可以启动:

# cat /proc/bus/input/devices
I: Bus=0019 Vendor=0001 Product=0001 Version=0100
N: Name="sunxi-ir"
P: Phys=sunxi-ir/input0
S: Sysfs=/devices/platform/soc/1c22c00.cir/rc/rc0/input2
U: Uniq=
H: Handlers=kbd event1 
B: PROP=20
B: EV=100017
B: KEY=1000000 0 0 0 0
B: REL=3
B: MSC=10
//这是设备树里的IR_RX的相关配置:
cir: cir@1c22c00 {
            compatible = "allwinner,sun6i-a31-ir";
            //compatible = "allwinner,sun4i-a10-ir";
            //compatible = "allwinner,suniv-f1c100s-ir";
            clocks = <&ccu CLK_BUS_IR>, <&ccu CLK_CIR>;
            clock-names = "apb", "ir";
            resets = <&ccu RST_BUS_IR>;
            interrupts = <6>;
            reg = <0x01c22c00 0x400>;
            pinctrl-names = "default";
            pinctrl-0 = <&cir_pins_f>;
            status = "okay";
        };
cir_pins_f: cir_pins_f {
                pins = "PF0";
                function = "ir";
                allwinner,muxsel = <4>;
                allwinner,drive = <1>;
                allwinner,pull = <0>;
            };
//这是内核启动的过程:
[    1.218393] IR NEC protocol handler initialized
[    1.223066] IR RC5(x/sz) protocol handler initialized
[    1.228122] IR RC6 protocol handler initialized
[    1.232696] IR JVC protocol handler initialized
[    1.237226] IR Sony protocol handler initialized
[    1.241871] IR SANYO protocol handler initialized
[    1.246572] IR Sharp protocol handler initialized
[    1.251301] IR MCE Keyboard/mouse protocol handler initialized
[    1.257124] IR XMP protocol handler initialized
[    1.261679] ir_imon_decoder: IR iMON protocol handler initialized
[    1.267761] IR RCMM protocol handler initialized
[    1.272883] suniv-f1c100s-pinctrl 1c20800.pinctrl: unsupported function ir on pin PF0
[    1.281416] Registered IR keymap rc-empty
[    1.285800] rc rc0: sunxi-ir as /devices/platform/soc/1c22c00.cir/rc/rc0
[    1.293094] input: sunxi-ir as /devices/platform/soc/1c22c00.cir/rc/rc0/input2
[    1.302046] sunxi-ir 1c22c00.cir: initialized sunXi IR driver

问题是在内核启动的时候出现了[ 1.272883] suniv-f1c100s-pinctrl 1c20800.pinctrl: unsupported function ir on pin PF0,接上红外接收模块到PF0管脚,然后evtest /dev/input/event1,就会停在
Testing ...不动,请问是怎么回事?

  • 写回答

28条回答 默认 最新

  • 越重天 新星创作者: Java技术领域 2024-10-12 16:38
    关注
    获得0.50元问题酬金

    本答案参考ChatGPT-3.5

    1. 分析“unsupported function ir on pin PF0”错误
      • 原因探讨
        • 这个错误提示表明在PF0引脚设置为ir(红外功能)时,suniv - f1c100s - pinctrl不支持这种设置。这可能是由于引脚复用配置的问题。虽然在设备树中已经设置了cir_pins_f节点来配置PF0引脚为ir功能,但是可能与实际的硬件引脚复用设置存在冲突或者不匹配。
        • 例如,可能是内核中的引脚复用驱动没有正确识别这个特定的ir功能在PF0引脚的设置。也许在全志F1C100S的硬件设计中,PF0引脚有其他特殊的复用规则或者限制,而当前的设备树配置没有遵循这些规则。
      • 解决思路
        • 首先,需要检查全志F1C100S的芯片手册,查看PF0引脚关于ir功能的正确复用设置。确认是否需要设置其他的寄存器或者参数来使能ir功能在该引脚。
        • 然后,检查设备树中与PF0引脚复用相关的其他设置,看是否存在冲突的配置。例如,是否有其他功能也在尝试使用PF0引脚,或者是否有一些默认的引脚复用设置覆盖了当前的ir设置。
    2. 关于evtest /dev/input/event1停在Testing...不动的分析
      • 可能原因
        • 由于前面的引脚复用问题,可能导致红外接收模块无法正确初始化或者与内核的输入子系统无法正常通信。当执行evtest时,它在等待来自输入设备(这里是红外接收设备)的事件,但是由于前面的初始化问题,没有事件能够被正确接收和处理,所以就停在Testing...状态。
        • 另外,也有可能是红外接收模块本身存在问题。即使引脚复用设置正确,但是如果红外接收模块的硬件连接有问题(例如电源连接不正确、信号线路存在短路或者断路等),也会导致无法接收红外信号,从而使evtest无法正常工作。
      • 排查步骤
        • 硬件方面,使用万用表检查红外接收模块与PF0引脚的连接是否正常,包括电源、地和信号线路。确保红外接收模块的供电正常,并且信号能够正确传输到PF0引脚。
        • 在软件方面,除了检查引脚复用设置,还需要检查内核中红外驱动的其他相关配置。例如,检查是否正确加载了所有必要的红外协议处理模块(从内核启动信息看,各种协议处理模块似乎已经初始化,但仍需确认是否存在潜在问题)。可以尝试在设备树中调整一些与红外驱动相关的参数,比如时钟设置、中断设置等,看是否能够解决问题。同时,查看内核日志是否有其他相关的错误或者警告信息,可能会提供更多的线索。
    评论

报告相同问题?

问题事件

  • 系统已结题 10月20日
  • 赞助了问题酬金50元 10月12日
  • 创建了问题 10月12日