Firefly开源社区

打印 上一主题 下一主题

[Linux] kernel中无法读取vendor数据,emmc状态常忙

45

积分

0

威望

0

贡献

技术小白

积分
45

kernel中无法读取vendor数据,emmc状态常忙

发表于 2022-11-25 10:16:29      浏览:3605 | 回复:5        打印     [复制链接] 楼主
问题描述及复现步骤:
我的项目需要在kernel中获取vendor中的一些数据,所以参考gmac驱动中获取mac地址的方式。
而从kernel代码得知,设备的两个gmac的mac地址是从uboot传下来的设备树中获取的(kernel有从vendor获取mac的代码逻辑,但实际并没有走也不会去走)
改从vendor获取数据后,发现emmc状态一直返回busy,直到init进程起来后,emmc vendor模块才初始化完毕,而此时相关驱动早已probe完毕。

请问,上述是否有解决办法?

新建文本文档 (2).txt

3 Bytes, 下载次数: 2, 下载积分: 灯泡 -1 , 经验 -1

回复

使用道具 举报

45

积分

0

威望

0

贡献

技术小白

积分
45
发表于 2022-11-25 13:16:46      沙发
firefly_zhongw 发表于 2022-11-25 11:52
1. 内核的话,尝试用 rk_vendor_read/rk_vendor_write 函数
2. 内核定义的 ID 有如下:

尝试过不经过rk_vendor_resigter直接怼_vendor_read/write赋相关接口,但读取时报错。
sdmmc_vendor_storage.c::emmc_vendor_storage_init()一直无法成功(emmc busy),直到拉起init前后才返回成功。而此时再获取vendor数据已经没有意义了,因为项目需要在gmac/usb/pcie网卡probe过程中获取vendor数据

回复

使用道具 举报

45

积分

0

威望

0

贡献

技术小白

积分
45
发表于 2022-11-25 15:57:24      板凳
firefly_zhongw 发表于 2022-11-25 14:12
1. rk_vendor_resigter后,才能使用 rk_vendor_read/rk_vendor_write,详细看内核代码

问题在于 rk_vendor_resigter需要先emmc_vendor_storage_init()返回成功,实际上emmc_vendor_storage_init一直在sleep。
我现在再找导致emmc_vendor_storage_init失败的原因
回复

使用道具 举报

45

积分

0

威望

0

贡献

技术小白

积分
45
发表于 2022-11-29 10:21:50      地板
结贴,已解决。
通过uboot读取vendor,然后将相关数据传入usb、pcie设备树中,下发给kernel即可。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表