Rockchip RK3399平台EMMC驱动能力修改方法

Rockchip RK3399平台EMMC驱动能力修改方法

RK3399 EMMC的驱动能力可以通过如下代码修改:

@sys2_206:~/1_Android11_sdk_29/kernel$ vim drivers/phy/rockchip/phy-rockchip-emmc.c
static int rockchip_emmc_phy_power_on(struct phy *phy)
{
        struct rockchip_emmc_phy *rk_phy = phy_get_drvdata(phy);

        /* Drive impedance: 50 Ohm */
        regmap_write(rk_phy->reg_base,
                     rk_phy->reg_offset + GRF_EMMCPHY_CON6,
                     HIWORD_UPDATE(PHYCTRL_DR_50OHM,
                                   PHYCTRL_DR_MASK,
                                   PHYCTRL_DR_SHIFT));

        /* Output tap delay: enable */
        regmap_write(rk_phy->reg_base,
                     rk_phy->reg_offset + GRF_EMMCPHY_CON0,
                     HIWORD_UPDATE(PHYCTRL_OTAPDLYENA,
                                   PHYCTRL_OTAPDLYENA_MASK,
                                   PHYCTRL_OTAPDLYENA_SHIFT));

        /* Output tap delay */
        regmap_write(rk_phy->reg_base,
                     rk_phy->reg_offset + GRF_EMMCPHY_CON0,
                     HIWORD_UPDATE(4,
                                   PHYCTRL_OTAPDLYSEL_MASK,
                                   PHYCTRL_OTAPDLYSEL_SHIFT));

        /* Power up emmc phy analog blocks */
        return rockchip_emmc_phy_power(phy, PHYCTRL_PDB_PWR_ON);
}

上面代码中的PHYCTRL_DR_50OHM可以根据实际需求改为下面的其他阻抗值:

 68 #define PHYCTRL_DR_50OHM                0x0
 69 #define PHYCTRL_DR_33OHM                0x1
 70 #define PHYCTRL_DR_66OHM                0x2
 71 #define PHYCTRL_DR_100OHM               0x3
 72 #define PHYCTRL_DR_40OHM                0x4

驱动阻抗越小驱动能力越大

### RK3399 驱动程序修改方法 #### 了解驱动架构 对于RK3399平台上的驱动开发,理解其底层硬件抽象层(HAL)以及Linux内核中的设备模型至关重要。这有助于开发者定位并修改特定功能模块内的代码逻辑[^1]。 #### 准备工作环境 确保拥有合适的编译工具链和支持库来构建定制化的固件镜像。通常情况下,官方提供的SDK包里包含了必要的交叉编译器和其他依赖项。安装完成后,还需配置好宿主机到目标板之间的通信接口以便于下载更新后的二进制文件至嵌入式系统中运行测试[^2]。 #### 修改现有驱动 当需要调整现有的外设控制器行为时,比如改变触摸屏响应特性或是优化网络连接性能,则要深入研究对应类型的驱动实现细节。以太网适配器为例,在`drivers/net/ethernet/rockchip/rk_gmac.c`这样的路径下找到源码后,可以根据实际需求编辑参数设定部分;而对于触控面板而言,则可能涉及到对`drivers/input/touchscreen/gt9xx_ts.c`这类文件的操作,其中会有关于如何使能新特性的说明,如在配置选项处添加或取消某些宏定义。 #### 设备树节点调整 除了直接改动C语言级别的函数之外,有时仅需简单地更改DTS(Device Tree Source)描述文档就能达到目的。例如为了支持双MIPI显示屏共存就需要向`.dtsi`模板增加额外的显示子结点声明,并指明各自的物理属性和电气规格等信息。 #### 测试验证变更效果 完成上述任何一项变动之后都应当进行全面的功能性和稳定性检验。利用诸如`ls`, `cat`之类的命令可以从/sys/block/mmcblk*/目录读取当前挂载状态下的各类属性值,从而确认新的设置是否生效。另外也可以借助专门的日志分析工具跟踪启动过程期间产生的消息记录,帮助快速排查潜在错误所在位置[^3]。 ```bash # 查看SD/eMMC基本信息 $ ls /sys/block/mmcblk0 -l $ cat /sys/block/mmcblk0/size $ cat /proc/self/mounts $ cat /sys/block/mmcblk0/device/{cid,csd,date,fwrev,hwrev,manfid,name,oemid,serial,type,uevent} ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loitawu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值