在读/写指令时,Generic指令 是不区分 Index 和 parameter 的,而 DCS 会默认把 data0 作为Index 然后计算 parameter 数目。
1 | /* dcs read/write */ |
static LCM_UTIL_FUNCS lcm_util;
#define dsi_set_cmdq_V2(cmd, count, ppara, force_update) lcm_util.dsi_set_cmdq_V2(cmd, count, ppara, force_update)
#define dsi_set_cmdq(pdata, queue_size, force_update) lcm_util.dsi_set_cmdq(pdata, queue_size, force_update)
static void lcm_set_util_funcs(const struct LCM_UTIL_FUNCS *util)
{
memcpy(&lcm_util, util, sizeof(struct LCM_UTIL_FUNCS));
}
struct LCM_DRIVER bn080hd182a_mipi_drv =
{
.name = "BN080HD182A_MIPI",
.set_util_funcs = lcm_set_util_funcs,
.get_params = lcm_get_params,
.init = lcm_init,
.suspend = lcm_suspend,
.resume = lcm_resume,
.init_power = lcm_init_power,
.resume_power = lcm_resume_power,
//.suspend_power = lcm_suspend_power,
//.compare_id = lcm_compare_id,
};
static void push_table(struct LCM_setting_table *table, unsigned int count, unsigned char force_update)
{
unsigned int i;
unsigned cmd;
for (i = 0; i < count; i++) {
cmd = table[i].cmd;
switch (cmd) {
case REGFLAG_DELAY:
MDELAY(table[i].count);
break;
case REGFLAG_END_OF_TABLE:
break;
default:
dsi_set_cmdq_V2(cmd, table[i].count, table[i].para_list, force_update);
}
}
}
#endif
unsigned int data_array[16];
data_array[0] = 0x014F1500;
dsi_set_cmdq(data_array, 1, 1);
MDELAY(40);
data_array[0]=0x00053902;
data_array[1]=0x100206BF;
data_array[2]=0x00000004;
dsi_set_cmdq(data_array,3,1);
-------------------------------------------
//SLP IN
data_array[0] = 0x00100500;
dsi_set_cmdq(data_array, 1, 1);
MDELAY(120);
//DISP OFF
data_array[0] = 0x00280500;
dsi_set_cmdq(data_array, 1, 1);
MDELAY(10);
-------------------------------------------
//SLP OUT
data_array[0]=0x00110500;
dsi_set_cmdq(data_array,1,1);
MDELAY(200);
//DISP ON
data_array[0]=0x00290500;
dsi_set_cmdq(data_array,1,1);
MDELAY(5);
//--- TE----//
//data_array[0]=0x00350500;
//dsi_set_cmdq(data_array,1,1);