int dsim_reg_set_hs_clock(u32 id, struct decon_lcd *lcd, u32 en) { int ret; int is_non = dsim_reg_is_noncontinuous_clk_enabled(id); if (en) { dsim_reg_set_cmd_transfer_mode(id, 0); dsim_reg_set_data_transfer_mode(id, 0); dsim_reg_enable_hs_clock(id, 1); if (!is_non) { ret = dsim_reg_wait_hs_clk_ready(id); if (ret) return ret; } dsim_reg_set_standby(id, lcd, 1); /* for preventing 2C miss issue */ dsim_reg_funtion_reset(id); } else { dsim_reg_set_standby(id, lcd, 0); dsim_reg_enable_hs_clock(id, 0); } return 0; }
int dsim_reg_set_hs_clock(u32 en) { int ret; if (en) { dsim_reg_set_cmd_transfer_mode(0); dsim_reg_set_data_transfer_mode(0); /* 1. change mdclk source to byteclk */ dsim_reg_set_mdclk(1); /* 2. do function rst */ dsim_reg_function_reset(); /* 3. do hsclk request */ dsim_reg_enable_hs_clock(1); /* wait hs ready */ ret = dsim_reg_wait_hs_clk_ready(); if (ret) return ret; /* 4. set mdstandby */ dsim_reg_set_standby(1); /* 5. change mdclk source to external clk */ dsim_reg_set_mdclk(0); } else { /* MD stand_by off */ dsim_reg_set_standby(0); dsim_reg_enable_hs_clock(0); } return 0; }
void dsim_reg_set_link_standby(void) { dsim_reg_set_mdclk(1); /* reset ip state_machine */ dsim_reg_function_reset(); dsim_reg_set_standby(1); dsim_reg_set_mdclk(0); }
int dsim_reg_set_hs_clock(u32 en) { int ret; if (en) { dsim_reg_set_cmd_transfer_mode(0); dsim_reg_set_data_transfer_mode(0); dsim_reg_enable_hs_clock(1); ret = dsim_reg_wait_hs_clk_ready(); if (ret) return ret; dsim_reg_set_link_standby(); } else { /* MD stand_by off */ dsim_reg_set_standby(0); dsim_reg_enable_hs_clock(0); } return 0; }