mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
misc: rk628: gvi: check gvi state when enable
Try to disable and enable GVI and TX phy when GVI lock failed. Signed-off-by: Sandy Huang <hjc@rock-chips.com> Change-Id: I190ed60884850946091185c89e54a7bb551eb03d
This commit is contained in:
@@ -520,6 +520,7 @@ struct rk628_lvds {
|
||||
struct rk628_gvi {
|
||||
enum gvi_bus_format bus_format;
|
||||
enum gvi_color_depth color_depth;
|
||||
int retry_times;
|
||||
uint8_t lanes;
|
||||
bool division_mode;
|
||||
bool frm_rst;
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
#include "rk628_gvi.h"
|
||||
#include "panel.h"
|
||||
|
||||
#define GVI_RETRY_TIMEOUT 10
|
||||
|
||||
int rk628_gvi_parse(struct rk628 *rk628, struct device_node *gvi_np)
|
||||
{
|
||||
const char *string;
|
||||
@@ -253,6 +255,7 @@ void rk628_gvi_enable(struct rk628 *rk628)
|
||||
unsigned int rate;
|
||||
u32 mask = SW_OUTPUT_MODE_MASK;
|
||||
u32 val = SW_OUTPUT_MODE(OUTPUT_MODE_GVI);
|
||||
int i = 0;
|
||||
|
||||
rk628_gvi_get_info(gvi);
|
||||
rate = rk628_gvi_get_lane_rate(rk628);
|
||||
@@ -276,6 +279,29 @@ void rk628_gvi_enable(struct rk628 *rk628)
|
||||
rk628_gvi_enable_color_bar(rk628, gvi);
|
||||
rk628_gvi_post_enable(rk628, gvi);
|
||||
rk628_panel_enable(rk628);
|
||||
|
||||
for (i = 0; i < 100; i++) {
|
||||
rk628_i2c_read(rk628, GVI_STATUS, &val);
|
||||
if ((val & GVI_LOCKED_MASK) == GVI_LOCKED_STATUS)
|
||||
break;
|
||||
usleep_range(1000, 1100);
|
||||
}
|
||||
|
||||
if (i == 100 && gvi->retry_times < GVI_RETRY_TIMEOUT) {
|
||||
dev_info(rk628->dev, "GVI Lock failed: 0x%x, try again: %d\n", val, gvi->retry_times);
|
||||
gvi->retry_times++;
|
||||
rk628_gvi_disable(rk628);
|
||||
usleep_range(50000, 51000);
|
||||
rk628_gvi_enable(rk628);
|
||||
}
|
||||
|
||||
if (gvi->retry_times >= GVI_RETRY_TIMEOUT && i == 100) {
|
||||
dev_info(rk628->dev, "GVI Lock failed, please check hardware!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (i != 100)
|
||||
gvi->retry_times = 0;
|
||||
dev_info(rk628->dev,
|
||||
"GVI-Link bandwidth: %d x %d Mbps, Byte mode: %d, Color Depty: %d, %s division mode\n",
|
||||
rate, gvi->lanes, gvi->byte_mode, gvi->color_depth,
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
#define GVI_SYS_RST HOSTREG(0x0014)
|
||||
#define GVI_LINE_FLAG HOSTREG(0x0018)
|
||||
#define GVI_STATUS HOSTREG(0x001c)
|
||||
#define GVI_LOCKED_MASK 0x70
|
||||
#define GVI_LOCKED_STATUS 0x40
|
||||
#define GVI_PLL_LOCK_TIMEOUT HOSTREG(0x0030)
|
||||
#define GVI_HTPDN_TIMEOUT HOSTREG(0x0034)
|
||||
#define GVI_LOCKN_TIMEOUT HOSTREG(0x0038)
|
||||
|
||||
Reference in New Issue
Block a user