mfd: rkx110_x120: reset dsi tx host when generator pattern

Change-Id: I92b4733152532c62e79d39eabdf2ec99d006a257
Signed-off-by: Zhang Yubing <yubing.zhang@rock-chips.com>
This commit is contained in:
Zhang Yubing
2023-12-21 19:14:59 +08:00
committed by Tao Huang
parent bd48aceb6a
commit 730004820b
3 changed files with 15 additions and 1 deletions

View File

@@ -9,6 +9,7 @@
#include "rkx110_x120.h"
#include "rkx110_x120_display.h"
#include "rkx120_dsi_tx.h"
#include "hal/cru_api.h"
#define PATTERN_GEN_PATTERN_CTRL 0x0000
@@ -114,7 +115,7 @@ static void pattern_start_stream(struct pattern_gen *pattern_gen, bool is_patter
return;
if (pattern_gen->chip != &serdes->chip[DEVICE_LOCAL])
return;
goto out;
if (!strcmp(pattern_gen->name, "lvds0")) {
hwclk_reset_deassert(serdes->chip[DEVICE_LOCAL].hwclk,
@@ -170,6 +171,12 @@ static void pattern_start_stream(struct pattern_gen *pattern_gen, bool is_patter
}
rk_serdes_display_video_start(serdes, pattern_gen->route, true);
out:
if (pattern_gen->route->remote0_port0 == RK_SERDES_DSI_TX0)
rkx120_dsi_tx_reset(serdes, DEVICE_REMOTE0);
if (pattern_gen->route->remote1_port0 == RK_SERDES_DSI_TX0)
rkx120_dsi_tx_reset(serdes, DEVICE_REMOTE1);
}
static void pattern_switch_clk_to_pattern(struct pattern_gen *pattern_gen, struct videomode *vm)

View File

@@ -1181,3 +1181,9 @@ void rkx120_dsi_tx_disable(struct rk_serdes *des, struct rk_serdes_route *route,
dsi_write(des, remote_id, DSI_MODE_CFG, CMD_VIDEO_MODE(COMMAND_MODE));
dsi_write(des, remote_id, DSI_PWR_UP, POWER_UP);
}
void rkx120_dsi_tx_reset(struct rk_serdes *des, u8 remote_id)
{
dsi_write(des, remote_id, DSI_PWR_UP, RESET);
dsi_write(des, remote_id, DSI_PWR_UP, POWER_UP);
}

View File

@@ -20,4 +20,5 @@ void rkx120_dsi_tx_post_disable(struct rk_serdes *serdes,
struct rk_serdes_route *route, u8 remote_id);
void rkx120_dsi_tx_disable(struct rk_serdes *serdes,
struct rk_serdes_route *route, u8 remote_id);
void rkx120_dsi_tx_reset(struct rk_serdes *des, u8 remote_id);
#endif