提交 d1f5857e 编写于 作者: T Tomi Valkeinen

OMAP: DSS2: DSI: Add DSI pad muxing support

Add dsi_mux_pads function pointer to omap_dss_board_info, and use the
function pointer in DSI code to configure the DSI pads either to normal
DSI operation, or to pull down when in ULPS.
Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
上级 22d6d676
...@@ -244,6 +244,8 @@ static struct ...@@ -244,6 +244,8 @@ static struct
void __iomem *base; void __iomem *base;
int irq; int irq;
void (*dsi_mux_pads)(bool enable);
struct dsi_clock_info current_cinfo; struct dsi_clock_info current_cinfo;
bool vdds_dsi_enabled; bool vdds_dsi_enabled;
...@@ -2035,6 +2037,9 @@ static int dsi_cio_init(struct omap_dss_device *dssdev) ...@@ -2035,6 +2037,9 @@ static int dsi_cio_init(struct omap_dss_device *dssdev)
DSSDBGF(); DSSDBGF();
if (dsi.dsi_mux_pads)
dsi.dsi_mux_pads(true);
dsi_enable_scp_clk(); dsi_enable_scp_clk();
/* A dummy read using the SCP interface to any DSIPHY register is /* A dummy read using the SCP interface to any DSIPHY register is
...@@ -2122,6 +2127,8 @@ static int dsi_cio_init(struct omap_dss_device *dssdev) ...@@ -2122,6 +2127,8 @@ static int dsi_cio_init(struct omap_dss_device *dssdev)
dsi_cio_disable_lane_override(); dsi_cio_disable_lane_override();
err_scp_clk_dom: err_scp_clk_dom:
dsi_disable_scp_clk(); dsi_disable_scp_clk();
if (dsi.dsi_mux_pads)
dsi.dsi_mux_pads(false);
return r; return r;
} }
...@@ -2129,6 +2136,8 @@ static void dsi_cio_uninit(void) ...@@ -2129,6 +2136,8 @@ static void dsi_cio_uninit(void)
{ {
dsi_cio_power(DSI_COMPLEXIO_POWER_OFF); dsi_cio_power(DSI_COMPLEXIO_POWER_OFF);
dsi_disable_scp_clk(); dsi_disable_scp_clk();
if (dsi.dsi_mux_pads)
dsi.dsi_mux_pads(false);
} }
static int _dsi_wait_reset(void) static int _dsi_wait_reset(void)
...@@ -3993,10 +4002,16 @@ static void dsi_calc_clock_param_ranges(void) ...@@ -3993,10 +4002,16 @@ static void dsi_calc_clock_param_ranges(void)
static int dsi_init(struct platform_device *pdev) static int dsi_init(struct platform_device *pdev)
{ {
struct omap_display_platform_data *dss_plat_data;
struct omap_dss_board_info *board_info;
u32 rev; u32 rev;
int r, i; int r, i;
struct resource *dsi_mem; struct resource *dsi_mem;
dss_plat_data = pdev->dev.platform_data;
board_info = dss_plat_data->board_data;
dsi.dsi_mux_pads = board_info->dsi_mux_pads;
spin_lock_init(&dsi.irq_lock); spin_lock_init(&dsi.irq_lock);
spin_lock_init(&dsi.errors_lock); spin_lock_init(&dsi.errors_lock);
dsi.errors = 0; dsi.errors = 0;
......
...@@ -233,6 +233,7 @@ struct omap_dss_board_info { ...@@ -233,6 +233,7 @@ struct omap_dss_board_info {
int num_devices; int num_devices;
struct omap_dss_device **devices; struct omap_dss_device **devices;
struct omap_dss_device *default_device; struct omap_dss_device *default_device;
void (*dsi_mux_pads)(bool enable);
}; };
#if defined(CONFIG_OMAP2_DSS_MODULE) || defined(CONFIG_OMAP2_DSS) #if defined(CONFIG_OMAP2_DSS_MODULE) || defined(CONFIG_OMAP2_DSS)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册