板卡3536,內核使能了iic,但海思的sil9024驅動是用的gpio模擬iic,所以把這部分的給改了,模塊初始化時初始化iic
static struct i2c_board_info sil_info = {
I2C_BOARD_INFO("sil9022", TX_SLAVE_ADDR),
};
static struct i2c_board_info ddc_info = {
I2C_BOARD_INFO("sil9022_ddc", EDID_ROM_ADDR),
static int i2c_client_init(void)
{
struct i2c_adapter *i2c_sil_adap;
// use i2c2
i2c_sil_adap = i2c_get_adapter(0);
if (NULL == i2c_sil_adap)
{
printk("find i2c adapter fail. \n");
return -1;
}
sil_client = i2c_new_device(i2c_sil_adap, &sil_info);
i2c_put_adapter(i2c_sil_adap);
struct i2c_adapter *i2c_ddc_adap;
i2c_ddc_adap = i2c_get_adapter(0);
if (NULL == i2c_ddc_adap)
{
printk("find i2c adapter fail. \n");
return -1;
}
ddc_client = i2c_new_device(i2c_ddc_adap, &ddc_info);
i2c_put_adapter(i2c_ddc_adap);
return 0;
}同理讀寫iic都換成使用iic控制器的方式,這樣改完之后。insmod sil9024.ko
內核列印出來的device id正常,為0xb0,但在檢測熱插拔事件的函式里跑到獲取ddc之后,獲取到了DDC的總線訪問,但讀取EDID ROM的iic地址0xa0時就會讀不到資料,一直回圈列印
hi_i2c_wait_rxfifo_notempty->307:
wait timeout! auto_status: 0xc0b00000
hi_i2c_wait_rxfifo_notempty->321:
transmit error, int_raw_status: 0x750!
hi_i2c_wait_rxfifo_notempty->323:
tx_abrt_cause is 1.
請問有改過sil902x系列驅動的能指點一下嗎?我的訪問機制有問題嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/48971.html
標籤:驅動開發/核心開發
