固件类型:官方提供的固件
固件文件名称:RK356x_NorFlash2eMMCLoader_20211209
固件下载地址:Firefly | 让科技更简单,让生活更智能
Log日志:新建文本文档 (2).txt
我的项目需要在kernel中获取vendor中的一些数据,所以参考gmac驱动中获取mac地址的方式。
而从kernel代码得知,设备的两个gmac的mac地址是从uboot传下来的设备树中获取的(kernel有从vendor获取mac的代码逻辑,但实际并没有走也不会去走)
改从vendor获取数据后,发现emmc状态一直返回busy,直到init进程起来后,emmc vendor模块才初始化完毕,而此时相关驱动早已probe完毕。
请问,上述是否有解决办法?
tchip_askquestions
新建文本文档 (2).txt (3 Bytes)
- 内核的话,尝试用 rk_vendor_read/rk_vendor_write 函数
- 内核定义的 ID 有如下:
#define RSV_ID 0
#define SN_ID 1
#define WIFI_MAC_ID 2
#define LAN_MAC_ID 3
#define BT_MAC_ID 4
#define HDCP_14_HDMI_ID 5
#define HDCP_14_DP_ID 6
#define HDCP_2X_ID 7
#define DRM_KEY_ID 8
#define PLAYREADY_CERT_ID 9
#define ATTENTION_KEY_ID 10
#define PLAYREADY_ROOT_KEY_0_ID 11
#define PLAYREADY_ROOT_KEY_1_ID 12
#define HDCP_14_HDMIRX_ID 13
#define SENSOR_CALIBRATION_ID 14
#define IMEI_ID 15
#define LAN_RGMII_DL_ID 16
#define EINK_VCOM_ID 17
firefly_zhongw 发表于 2022-11-25 11:52
- 内核的话,尝试用 rk_vendor_read/rk_vendor_write 函数
- 内核定义的 ID 有如下:
尝试过不经过rk_vendor_resigter直接怼_vendor_read/write赋相关接口,但读取时报错。
sdmmc_vendor_storage.c::emmc_vendor_storage_init()一直无法成功(emmc busy),直到拉起init前后才返回成功。而此时再获取vendor数据已经没有意义了,因为项目需要在gmac/usb/pcie网卡probe过程中获取vendor数据
- rk_vendor_resigter后,才能使用 rk_vendor_read/rk_vendor_write,详细看内核代码
int rk_vendor_register(void *read, void *write)
{
if (!_vendor_read) {
_vendor_read = read;
_vendor_write = write;
return 0;
}
return -1;
}
- 可以尝试其他分区,比如oem
- 没有现成的demo,需要自己实现
firefly_zhongw 发表于 2022-11-25 14:12
- 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失败的原因
结贴,已解决。
通过uboot读取vendor,然后将相关数据传入usb、pcie设备树中,下发给kernel即可。