高通平台mipi panel kernel讀包方法

2021-07-06 02:02:44 字數 2363 閱讀 2980

熟悉高通平台mipi panel kernel讀包方法,我想我們可以是的同一客戶要是使用2塊mipi panel的話我想我們可以通過讀取id來下不同序列而不用更換boot.img,還有能否讀id可以說明mipi通訊是否正常。

還有我們只需在lk下面讀一次id再對全域性變數賦值通過lk傳遞到kernel裡面,通過不同賦值傳送不同初始化序列,至於時序clk則調整好相容2塊屏的,也可以通過全域性變數來區分。

在mipi_***.c中加入下面函式即可,很好用的!關鍵時候起作用。注意所讀的暫存器必須是可讀的,之前好幾次讀失敗了原因就是這個。

static u32 mipi_truely_read_reg(struct msm_fb_data_type *mfd, u16 reg)

;mipi_dsi_buf_init(&truly_tx_buf);

mipi_dsi_buf_init(&truly_rx_buf);

/* mutex had been acquried at dsi_on */

len = mipi_dsi_cmds_rx(mfd, &truly_tx_buf, &truly_rx_buf,

&cmd_read_reg, len);

data = *(u32 *)truly_rx_buf.data;

if (len != 4)

printk("%s: invalid rlen=%d, expecting 4.\n", __func__, len);

printk("%s: reg=0x%x.data=0x%08x.\n", __func__, reg, data);

return data;

}static int mipi_truly_lcd_on(struct platform_device *pdev)

msleep(20);

mipi_dsi_cmds_tx(mfd, &truly_tx_buf,

truly_video_display_on_cmds,array_size(truly_video_display_on_cmds));

printk("mipi_dsi_cmds_tx called here");

mdelay(20);

//add for testdata=mipi_truely_read_reg(mfd,0xe1);

printk("data =0x%x",data);

}display_n = true;

return 0;

}static char a13[5]=;

static char a14[2]=;

static char

a15[17]=;

log:

<4>[    5.672508] [(1980-01-06 05:56:05.862078335 utc)]

mipi_truely_read_reg: reg=0xc1.data=0x260e3017.

<4>[    5.672588] [(1980-01-06 05:56:05.862156668 utc)]

mipi_truely_read_reg: reg=0x5f.data=0x00000055.

<4>[    5.672733] [(1980-01-06 05:56:05.862301668 utc)]

mipi_truely_read_reg: reg=0xe1.data=0x13140b00.

還有乙個函式也可以寫法不一樣而已:

static struct dsi_cmd_desc novatek_manufacture_id_cmd = ;

static uint32 mipi_novatek_manufacture_id(struct msm_fb_data_type *mfd)

;static struct mipi_dsi_cmd otm9601a_panel_manufacture_id_cmd =

;static uint32_t mipi_otm_manufacture_id(void ){

char rec_buf[32];

char *rp = rec_buf;

uint32_t *lp, data;

mipi_dsi_cmds_tx(&otm9601a_panel_manufacture_id_cmd, 1);

mipi_dsi_cmds_rx(&rp, 2);

lp = (uint32_t *) rp;

data = (uint32_t) * lp;

data = ntohl(data);

data = data >> 8;

otm_lcd_id = data;

dprintf(spew, "[%s] lcd id = %d = %x\n",__func__,otm_lcd_id,otm_lcd_id);

高通平台Bring up

3.2.amss 部分編譯 主要由以下部分構成 adsp,boot,debug,modem,rpm,trustzone,wcnss,分別根據高通的說明編譯這些模組,不過其中有些模組我們不會改,直接用release的binary檔案就行,比如 debug,rpm,trustzone,wcnss。3.3...

高通平台 USB OTG功能

1 什麼是otg?usb otg 是usbon the go 的縮寫,即 otg技術就是實現在沒有 host 的情況下,實現裝置間的資料傳送。2 硬體介面 5根線 usb hs id usb hs d p usb hs d m usb vbus in gnd3 otg線 otg通訊的乙個關鍵是如何判...

高通平台 USB OTG功能

1 什麼是otg?usb otg 是usbon the go 的縮寫,即 otg技術就是實現在沒有 host 的情況下,實現裝置間的資料傳送。2 硬體介面 5根線usb hs id usb hs d p usb hs d m usb vbus in gnd3 otg線 otg通訊的乙個關鍵是如何判斷...