From: Tomi Valkeinen <tomi.valkeinen@ti.com> To: linux-omap@vger.kernel.org, linux-fbdev@vger.kernel.org Cc: Tomi Valkeinen <tomi.valkeinen@ti.com> Subject: [PATCH 09/19] OMAP: DSS2: DSI: fix CIO init and uninit Date: Tue, 19 Apr 2011 09:22:12 +0000 [thread overview] Message-ID: <1303204942-25450-10-git-send-email-tomi.valkeinen@ti.com> (raw) In-Reply-To: <1303204942-25450-1-git-send-email-tomi.valkeinen@ti.com> Use dsi_enable_scp_clk and dsi_disable_scp_clk in CIO init and uninit, and improve the CIO init by adding a few status checks and error handling. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> --- drivers/video/omap2/dss/dsi.c | 54 ++++++++++++++++++++++------------------- 1 files changed, 29 insertions(+), 25 deletions(-) diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c index 9a0f9e4..9f450af 100644 --- a/drivers/video/omap2/dss/dsi.c +++ b/drivers/video/omap2/dss/dsi.c @@ -1971,13 +1971,12 @@ static void dsi_cio_disable_lane_override(void) static int dsi_cio_init(struct omap_dss_device *dssdev) { - int r = 0; + int r; u32 l; DSSDBGF(); - if (dsi.ulps_enabled) - DSSDBG("manual ulps exit\n"); + dsi_enable_scp_clk(); /* A dummy read using the SCP interface to any DSIPHY register is * required after DSIPHY reset to complete the reset of the DSI complex @@ -1985,17 +1984,13 @@ static int dsi_cio_init(struct omap_dss_device *dssdev) dsi_read_reg(DSI_DSIPHY_CFG5); if (wait_for_bit_change(DSI_DSIPHY_CFG5, 30, 1) != 1) { - DSSERR("ComplexIO PHY not coming out of reset.\n"); - r = -ENODEV; - goto err; + DSSERR("CIO SCP Clock domain not coming out of reset.\n"); + r = -EIO; + goto err_scp_clk_dom; } dsi_set_lane_config(dssdev); - dsi_if_enable(true); - dsi_if_enable(false); - REG_FLD_MOD(DSI_CLK_CTRL, 1, 20, 20); /* LP_CLK_ENABLE */ - /* set TX STOP MODE timer to maximum for this operation */ l = dsi_read_reg(DSI_TIMING1); l = FLD_MOD(l, 1, 15, 15); /* FORCE_TX_STOP_MODE_IO */ @@ -2005,6 +2000,8 @@ static int dsi_cio_init(struct omap_dss_device *dssdev) dsi_write_reg(DSI_TIMING1, l); if (dsi.ulps_enabled) { + DSSDBG("manual ulps exit\n"); + /* ULPS is exited by Mark-1 state for 1ms, followed by * stop state. DSS HW cannot do this via the normal * ULPS exit sequence, as after reset the DSS HW thinks @@ -2019,7 +2016,17 @@ static int dsi_cio_init(struct omap_dss_device *dssdev) r = dsi_cio_power(DSI_COMPLEXIO_POWER_ON); if (r) - goto err; + goto err_cio_pwr; + + if (wait_for_bit_change(DSI_COMPLEXIO_CFG1, 29, 1) != 1) { + DSSERR("CIO PWR clock domain not coming out of reset.\n"); + r = -ENODEV; + goto err_cio_pwr_dom; + } + + dsi_if_enable(true); + dsi_if_enable(false); + REG_FLD_MOD(DSI_CLK_CTRL, 1, 20, 20); /* LP_CLK_ENABLE */ if (dsi.ulps_enabled) { /* Keep Mark-1 state for 1ms (as per DSI spec) */ @@ -2035,24 +2042,28 @@ static int dsi_cio_init(struct omap_dss_device *dssdev) /* FORCE_TX_STOP_MODE_IO */ REG_FLD_MOD(DSI_TIMING1, 0, 15, 15); - if (wait_for_bit_change(DSI_COMPLEXIO_CFG1, 29, 1) != 1) { - DSSERR("ComplexIO not coming out of reset.\n"); - r = -ENODEV; - goto err; - } - dsi_cio_timings(); dsi.ulps_enabled = false; DSSDBG("CIO init done\n"); -err: + + return 0; + +err_cio_pwr_dom: + dsi_cio_power(DSI_COMPLEXIO_POWER_OFF); +err_cio_pwr: + if (dsi.ulps_enabled) + dsi_cio_disable_lane_override(); +err_scp_clk_dom: + dsi_disable_scp_clk(); return r; } static void dsi_cio_uninit(void) { dsi_cio_power(DSI_COMPLEXIO_POWER_OFF); + dsi_disable_scp_clk(); } static int _dsi_wait_reset(void) @@ -3631,11 +3642,6 @@ static int dsi_display_init_dsi(struct omap_dss_device *dssdev) { int r; - /* The SCPClk is required for both PLL and CIO registers on OMAP4 */ - dsi_enable_scp_clk(); - - _dsi_print_reset_status(); - r = dsi_pll_init(dssdev, true, true); if (r) goto err0; @@ -3688,7 +3694,6 @@ err2: err1: dsi_pll_uninit(true); err0: - dsi_disable_scp_clk(); return r; } @@ -3709,7 +3714,6 @@ static void dsi_display_uninit_dsi(struct omap_dss_device *dssdev, dss_select_dsi_clk_source(OMAP_DSS_CLK_SRC_FCK); dsi_cio_uninit(); dsi_pll_uninit(disconnect_lanes); - dsi_disable_scp_clk(); } static int dsi_core_init(void) -- 1.7.1
WARNING: multiple messages have this Message-ID (diff)
From: Tomi Valkeinen <tomi.valkeinen@ti.com> To: linux-omap@vger.kernel.org, linux-fbdev@vger.kernel.org Cc: Tomi Valkeinen <tomi.valkeinen@ti.com> Subject: [PATCH 09/19] OMAP: DSS2: DSI: fix CIO init and uninit Date: Tue, 19 Apr 2011 12:22:12 +0300 [thread overview] Message-ID: <1303204942-25450-10-git-send-email-tomi.valkeinen@ti.com> (raw) In-Reply-To: <1303204942-25450-1-git-send-email-tomi.valkeinen@ti.com> Use dsi_enable_scp_clk and dsi_disable_scp_clk in CIO init and uninit, and improve the CIO init by adding a few status checks and error handling. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> --- drivers/video/omap2/dss/dsi.c | 54 ++++++++++++++++++++++------------------- 1 files changed, 29 insertions(+), 25 deletions(-) diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c index 9a0f9e4..9f450af 100644 --- a/drivers/video/omap2/dss/dsi.c +++ b/drivers/video/omap2/dss/dsi.c @@ -1971,13 +1971,12 @@ static void dsi_cio_disable_lane_override(void) static int dsi_cio_init(struct omap_dss_device *dssdev) { - int r = 0; + int r; u32 l; DSSDBGF(); - if (dsi.ulps_enabled) - DSSDBG("manual ulps exit\n"); + dsi_enable_scp_clk(); /* A dummy read using the SCP interface to any DSIPHY register is * required after DSIPHY reset to complete the reset of the DSI complex @@ -1985,17 +1984,13 @@ static int dsi_cio_init(struct omap_dss_device *dssdev) dsi_read_reg(DSI_DSIPHY_CFG5); if (wait_for_bit_change(DSI_DSIPHY_CFG5, 30, 1) != 1) { - DSSERR("ComplexIO PHY not coming out of reset.\n"); - r = -ENODEV; - goto err; + DSSERR("CIO SCP Clock domain not coming out of reset.\n"); + r = -EIO; + goto err_scp_clk_dom; } dsi_set_lane_config(dssdev); - dsi_if_enable(true); - dsi_if_enable(false); - REG_FLD_MOD(DSI_CLK_CTRL, 1, 20, 20); /* LP_CLK_ENABLE */ - /* set TX STOP MODE timer to maximum for this operation */ l = dsi_read_reg(DSI_TIMING1); l = FLD_MOD(l, 1, 15, 15); /* FORCE_TX_STOP_MODE_IO */ @@ -2005,6 +2000,8 @@ static int dsi_cio_init(struct omap_dss_device *dssdev) dsi_write_reg(DSI_TIMING1, l); if (dsi.ulps_enabled) { + DSSDBG("manual ulps exit\n"); + /* ULPS is exited by Mark-1 state for 1ms, followed by * stop state. DSS HW cannot do this via the normal * ULPS exit sequence, as after reset the DSS HW thinks @@ -2019,7 +2016,17 @@ static int dsi_cio_init(struct omap_dss_device *dssdev) r = dsi_cio_power(DSI_COMPLEXIO_POWER_ON); if (r) - goto err; + goto err_cio_pwr; + + if (wait_for_bit_change(DSI_COMPLEXIO_CFG1, 29, 1) != 1) { + DSSERR("CIO PWR clock domain not coming out of reset.\n"); + r = -ENODEV; + goto err_cio_pwr_dom; + } + + dsi_if_enable(true); + dsi_if_enable(false); + REG_FLD_MOD(DSI_CLK_CTRL, 1, 20, 20); /* LP_CLK_ENABLE */ if (dsi.ulps_enabled) { /* Keep Mark-1 state for 1ms (as per DSI spec) */ @@ -2035,24 +2042,28 @@ static int dsi_cio_init(struct omap_dss_device *dssdev) /* FORCE_TX_STOP_MODE_IO */ REG_FLD_MOD(DSI_TIMING1, 0, 15, 15); - if (wait_for_bit_change(DSI_COMPLEXIO_CFG1, 29, 1) != 1) { - DSSERR("ComplexIO not coming out of reset.\n"); - r = -ENODEV; - goto err; - } - dsi_cio_timings(); dsi.ulps_enabled = false; DSSDBG("CIO init done\n"); -err: + + return 0; + +err_cio_pwr_dom: + dsi_cio_power(DSI_COMPLEXIO_POWER_OFF); +err_cio_pwr: + if (dsi.ulps_enabled) + dsi_cio_disable_lane_override(); +err_scp_clk_dom: + dsi_disable_scp_clk(); return r; } static void dsi_cio_uninit(void) { dsi_cio_power(DSI_COMPLEXIO_POWER_OFF); + dsi_disable_scp_clk(); } static int _dsi_wait_reset(void) @@ -3631,11 +3642,6 @@ static int dsi_display_init_dsi(struct omap_dss_device *dssdev) { int r; - /* The SCPClk is required for both PLL and CIO registers on OMAP4 */ - dsi_enable_scp_clk(); - - _dsi_print_reset_status(); - r = dsi_pll_init(dssdev, true, true); if (r) goto err0; @@ -3688,7 +3694,6 @@ err2: err1: dsi_pll_uninit(true); err0: - dsi_disable_scp_clk(); return r; } @@ -3709,7 +3714,6 @@ static void dsi_display_uninit_dsi(struct omap_dss_device *dssdev, dss_select_dsi_clk_source(OMAP_DSS_CLK_SRC_FCK); dsi_cio_uninit(); dsi_pll_uninit(disconnect_lanes); - dsi_disable_scp_clk(); } static int dsi_core_init(void) -- 1.7.1
next prev parent reply other threads:[~2011-04-19 9:22 UTC|newest] Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-04-19 9:22 [PATCH 00/19] OMAP: DSS2: ULPS support Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 01/19] OMAP: DSS2: DSI: Add lane override functions Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 02/19] OMAP: DSS2: DSI: Remove CIO LDO status check Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 03/19] OMAP: DSS2: DSI: implement ULPS enter and exit Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 04/19] OMAP: DSS2: DSI: add option to leave DSI lanes powered on Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 05/19] OMAP: DSS2: DSI: rename complexio related functions Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 06/19] OMAP: DSS2: Add FEAT_DSI_REVERSE_TXCLKESC Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 07/19] OMAP: DSS2: DSI: fix _dsi_print_reset_status Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 08/19] OMAP: DSS2: DSI: implement enable/disable SCP clk Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen [this message] 2011-04-19 9:22 ` [PATCH 09/19] OMAP: DSS2: DSI: fix CIO init and uninit Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 10/19] OMAP: DSS2: DSI: wait for TXCLKESC domain to come out of reset Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 11/19] OMAP: DSS2: DSI: add parameter to enter ulps on disable Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 12/19] OMAP: DSS2: DSI: Add DSI pad muxing support Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 13/19] OMAP: DSS2: DSI: ensure VDDS_DSI is disabled on exit Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 14/19] OMAP: DSS2: Taal: Implement configurable ESD interval Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 15/19] OMAP: DSS2: Taal: Clean up ESD queueing Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 16/19] OMAP: DSS2: Taal: Add sysfs file for ESD interval Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 17/19] OMAP: DSS2: Taal: Separate panel reset Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 18/19] OMAP: DSS2: Taal: Rename esd_wq to workqueue Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-19 9:22 ` [PATCH 19/19] OMAP: DSS2: Taal: Implement ULPS functionality Tomi Valkeinen 2011-04-19 9:22 ` Tomi Valkeinen 2011-04-20 5:43 ` [PATCH 00/19] OMAP: DSS2: ULPS support Archit Taneja 2011-04-20 5:55 ` Archit Taneja 2011-04-20 6:08 ` Tomi Valkeinen 2011-04-20 6:08 ` Tomi Valkeinen
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1303204942-25450-10-git-send-email-tomi.valkeinen@ti.com \ --to=tomi.valkeinen@ti.com \ --cc=linux-fbdev@vger.kernel.org \ --cc=linux-omap@vger.kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.