IR-RX 红外接收 配置
1. 硬件确认
开始修改前必须记录:控制器编号、引脚复用、电压域、供电、复位/使能脚、中断以及外接器件型号。高速接口还要确认走线拓扑、参考时钟和 PHY 复用。
2. 查找当前平台配置
cd <ANDROID_TOP>/longan
find bsp device kernel -type f \( -name '*.dts' -o -name '*.dtsi' -o -name 'Kconfig' \) | grep -Ei '<MODULE>|t527|sun55iw3'
grep -Rni '<compatible-or-config-keyword>' bsp device kernel
不要假设发布指南中的目录与当前分支完全一致,特别是 Linux 5.15 BSP 独立仓库和旧内核目录存在差异。
3. Kernel menuconfig
./build.sh menuconfig
重点检查:
- Allwinner BSP > Device Drivers > IR-RX Drivers
RC_CORE / MEDIA_SUPPORTINPUT_EVDEV
保存配置:
./build.sh saveconfig
# 再检查目标 defconfig 是否发生变化
git diff -- device bsp
4. Device Tree 示例
下面是整理后的参考结构,不应覆盖 SoC dtsi 中已有的 reg、interrupts、clocks 和 resets,除非芯片勘误或官方补丁明确要求。
&irrx {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&irrx_pins_a>;
pinctrl-1 = <&irrx_pins_b>;
wakeup-source;
status = "okay";
};
/* U-Boot 假关机唤醒示例,属性以当前分支为准 */
&irrx {
s_cir0_used = <1>;
ir_power_key_code0 = <0x40>;
ir_addr_code0 = <0xfe01>;
};
5. 编译与产物检查
./build.sh kernel 2>&1 | tee /tmp/module-kernel-build.log
./build.sh pack
确认配置和节点进入最终产物:
grep -E '<CONFIG_KEY>' out/*/*/kernel/build/.config 2>/dev/null
find out -type f \( -name '*.dtb' -o -name '*.ko' \) | sort
dtc -I dtb -O dts -o /tmp/final.dts <FINAL_DTB>
grep -n -A30 -B5 '<NODE_OR_COMPATIBLE>' /tmp/final.dts
6. 变更边界
- SoC 资源和公共默认值放在
bsp/configs/linux-5.15/*.dtsi。 - 板级引脚、供电、复位、外设子节点和
status放在板级board.dts。 - 不在构建生成目录或软链接镜像中直接修改。
- 多产品共用改动应评估是否会影响其他板型。