您尚未登录。

#1 Re: 全志 SOC » AXP2101 PMU 资料 » 今天 00:21:11

这个帖子很实用,AXP2101 这种 PMU 真正调起来,资料是一部分,现场能不能快速看清状态更关键。楼主后面贴的这些 debugfs/sysfs 路径特别有用,建议调板子时先把这几条命令收起来。

我补充一个排查思路,尤其是遇到“掉电重启、充电异常、电压不对、按键行为不对”这几类问题时:

  1. 先确认 I2C 设备是否正常起来

AXP2101 常见地址是 1-0034,先看目录是否存在:

ls /sys/devices/platform/soc/twi1/i2c-1/1-0034/

如果这个都没有,先别看 regulator,优先查 twi 节点、I2C 地址、PMU 中断脚、电源和 dts。

  1. 用 regmap 看寄存器快照

cat /sys/kernel/debug/regmap/1-0034/registers

这个对比“正常板”和“异常板”很方便。比如掉电、充电状态、IRQ 状态、电源输出开关,有时候一眼就能看出差异。

  1. 用 regulator_summary 看各路电压是否真的打开

cat /sys/kernel/debug/regulator/regulator_summary

这个比只看 dts 靠谱。dts 写了不代表运行时一定开了,也不代表 consumer 绑定对了。尤其 DCDC/ALDO/BLDO/DLDO 这些,最好确认 use/open/voltage 是否符合预期。

  1. 充电和电池状态走 power_supply

cat /sys/class/power_supply/battery/status
cat /sys/class/power_supply/battery/voltage_now
cat /sys/class/power_supply/battery/capacity
cat /sys/class/power_supply/battery/temp

如果电量显示很离谱,不一定是驱动坏了,可能是电池模型/内阻/容量参数没匹配。AXP2101 的电量计这块最好按实际电池做验证,不要直接拿 demo 板参数量产。

  1. PEK 按键用 evtest 看最直接

evtest /dev/input/eventX

能看到 KEY_POWER 按下/松开,说明输入事件链路通了。长按关机/重启这种再去查 PMU 配置和系统策略。

  1. 掉电重启类问题要分硬件和策略

如果是按 reset/PEK 后掉电,建议同时看:

  • PMU 寄存器状态;

  • 各路 regulator 是否被关;

  • dts 里各路电源 always-on/boot-on 是否合理;

  • 电池/USB/DCIN 供电路径是否切换异常;

  • 长按按键策略是不是触发 poweroff 而不是 reset。

我感觉 AXP2101 调试最怕“只看现象不看状态”。把 regmap、regulator_summary、power_supply、evtest 这几套信息同时抓下来,再对照原理图和 dts,基本能把问题分到 I2C/电源树/充电/按键策略这几层。

#2 全志 SOC » 全志平台 HDMI 热插拔调试整理:HPD、EDID、mode 重设几个关键点 » 昨天 23:06:06

陆苹果
回复: 0

最近整理 HDMI 热插拔相关问题,发现这类故障经常不是“HDMI 完全不能用”,而是冷启动能亮、插拔后不亮,或者换显示器后 mode 没更新。这里把排查思路记一下,后面遇到类似问题可以少绕一点。

1. 热插拔先看 HPD,不要一上来改 timing

HDMI 热插拔的第一信号是 HPD。显示器插上后,HPD 电平应该变化,驱动再去读 EDID、选择 mode、重新 enable 输出。

如果插拔时系统完全没反应,优先查:

  • HDMI HPD 引脚是否接对;

  • DTS/pinctrl 里 HPD 是否配置;

  • 是否有 GPIO/IRQ 被别的功能占用;

  • HDMI 5V 是否正常输出;

  • 线材/转接头是否把 HPD 断了。

很多“热插拔不生效”其实还没走到 EDID 阶段,HPD 事件就丢了。

2. HPD 有了,再看 EDID 是否重新读取

插入显示器后,正常流程应该是读取 EDID,再根据显示器支持的分辨率选择输出模式。

如果 HPD 有变化,但插上后仍然黑屏,可以重点看:

  • DDC 的 SCL/SDA 是否正常;

  • I2C 上拉、电平转换是否合适;

  • EDID 是否读取失败或读到全 0/错误数据;

  • 是否复用了错误的旧 EDID;

  • 是否 fallback 到显示器不支持的 mode。

有条件的话,逻辑分析仪看 DDC 很直观。软件层面可以看 dmesg 里有没有 EDID read failed、mode invalid 之类信息。

3. 冷启动能亮,不代表热插拔流程没问题

有些板子开机前 HDMI 已经插着能亮,但运行中拔插就不行。这个时候说明基本显示链路没问题,问题更可能在:

  • HPD 中断没有配置好;

  • 驱动没有处理 disconnect/connect;

  • 用户态没有重新 modeset;

  • framebuffer/DRM 没有重新绑定输出;

  • HDMI PHY 没有在拔插后重新 enable。

所以调试时建议分别测三种场景:

  1. 开机前插着 HDMI;

  2. 开机后再插 HDMI;

  3. 显示中拔掉再插回。

这三种能暴露不同问题。

4. BSP disp 和 DRM/KMS 排查方式不一样

如果是老 BSP/disp2,一般看 disp/hdmi 相关 log,以及 sys_config/dts 里的 hdmi_used、screen 输出配置。

如果是主线 DRM/KMS,可以用:

modetest -M sun4i-drm

看 connector 状态是否从 disconnected 变成 connected,mode 列表是否刷新。也可以用用户态程序重新 set mode,确认是不是内核已识别但应用没处理。

5. 建议先固定一个保守分辨率

热插拔调试阶段不要一开始就依赖自动 EDID 选最高分辨率。可以先固定 720p60 或 1080p60 中较稳的模式,确认拔插后能重新出图。

如果固定模式能亮,自动模式不亮,大概率是 EDID/mode 选择问题;如果固定模式也不亮,就回头查 HPD、PHY、TCON/DE 重新 enable。

6. 一个实用排查顺序

我一般会这样排:

  1. 量 HDMI 5V 和 HPD 电平;

  2. 看插拔时内核有没有 HPD/connector 事件;

  3. 看 EDID 是否重新读取成功;

  4. 固定 720p60 测输出;

  5. 看拔插后 HDMI PHY/TCON/DE 是否重新 enable;

  6. 最后再查应用层是否重新 modeset 或刷新 framebuffer。

简单说,HDMI 热插拔要拆成三步:检测到插拔、读到显示器、重新出图。只要按这三层分开验证,基本能定位是硬件 HPD/DDC 问题、驱动热插拔流程问题,还是用户态没有重新设置显示模式。

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn


东莞哇酷科技有限公司开发