1.需求在spl階段識別i2c和pmic的驅動,並對pmic進行配置.
1.1 i2c的識別
/*1. 可以通過裝置樹檔案掃到i2 cdevice
*/int pmic_i2c_init(void
)
printk(
"%s find i2c\n
", __func__);
return
ret;
}
/*2 this way could scan i2c master
*/if (uclass_get_device(uclass_i2c, 0, &i2c_dev))
printf(
"i2c master: not found!\n
");
1.2 pmic的識別
int power_init_board(struct udevice **dev_pmic)printk(
"%s find pmic\n
", __func__);
dev_id =pmic_reg_read(pdev, pca9450_reg_dev_id);
printf(
"pmic: pca9450! dev_id=0x%x\n
", dev_id);
/*buckxout_dvs0/1 control buck123 output
*/pmic_reg_write(pdev, pca9450_buck123_dvs,
0x29
);
return0;
}
但是有個非常非常重要的引數需要在dts中配置:u-boot,dm-spl;
1.3 當然還有一些方法
尋找node--->node 有效尋找i2c外設的裝置位址---->依據子裝置找到父裝置---->dm_i2c_probe, 成功之後,dm_i2c_read/write 就可以對i2c連線的外設進行訪問。
int power_init_board(struct udevice **dev_pmic)printf(
"%s:find the node.\n
", __func__);
/*when node valid, get reg
*/ret = ofnode_read_u32(node, "
reg", &chip_addr);
if(ret)
return -einval;
printf(
"reg check done 0x%x.\n
", chip_addr);
ret = uclass_get_device_by_ofnode(uclass_i2c, ofnode_get_parent(node), &bus);
if(ret)
ret = dm_i2c_probe(bus, chip_addr, 0, &pdev);
printf(
"%s ret 0x%x.\n
", __func__, ret);
if (!ret)
*dev_pmic =pdev;
return0;
}
RTTI 執行階段型別識別
rtti是執行階段型別識別 c 有3個支援rtti的元素 dynamic cast 如可能,使用乙個指向基類的指標生成派生類指標,否則返回空指標 typeid 返回乙個指出物件型別的值 type info 結構儲存了有關特定型別的資訊 只能將rtti用於包含虛函式的類層次結構 dynamic cas...
RTTI 執行階段型別識別
rtti是執行階段型別識別 c 有3個支援rtti的元素 dynamic cast 如可能,使用乙個指向基類的指標生成派生類指標,否則返回空指標 typeid 返回乙個指出物件型別的值 type info 結構儲存了有關特定型別的資訊 只能將rtti用於包含虛函式的類層次結構 dynamic cas...
Ubuntu識別android裝置
前段時間有同事讓替其裝了ubuntu系統,用來跑monkey。但是裝完ubuntu之後插上android裝置後執行adb devices命令時顯示沒有裝置。再一番折騰之後,終於解決了這個問題。其實這個問題很簡單,是可以在android官網找的。1 已開啟手機除錯模式 2 按官網說明增加 etc ud...