summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2013-09-26 20:12:42 +0200
committerAmaury Pouly <amaury.pouly@gmail.com>2013-09-26 20:12:42 +0200
commit120701646f939eb2c360a9917e56fd2cf78631cd (patch)
treefab42bd26ee3aaebc89a1f773e29dd99a681c4d4
parentf75310598c6daa51f0d2e5839f031bbf100ba4ba (diff)
downloadrockbox-120701646f939eb2c360a9917e56fd2cf78631cd.tar.gz
rockbox-120701646f939eb2c360a9917e56fd2cf78631cd.zip
imx233: always start SSPCLK before ungating the spp blocks
This should fix some boot hang issues which appeared at random. Change-Id: I5430690a61c042b45ed26b58f485a1cc5d82987f
-rw-r--r--firmware/target/arm/imx233/ssp-imx233.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/firmware/target/arm/imx233/ssp-imx233.c b/firmware/target/arm/imx233/ssp-imx233.c
index 2873ab9604..686436af74 100644
--- a/firmware/target/arm/imx233/ssp-imx233.c
+++ b/firmware/target/arm/imx233/ssp-imx233.c
@@ -117,16 +117,8 @@ void imx233_ssp_init(void)
117 } 117 }
118} 118}
119 119
120void imx233_ssp_start(int ssp) 120static void start_ssp_clock(void)
121{ 121{
122 ASSERT_SSP(ssp)
123 if(ssp_in_use[ssp - 1])
124 return;
125 ssp_in_use[ssp - 1] = true;
126 /* Gate block */
127 imx233_ssp_softreset(ssp);
128 /* Gate dma channel */
129 imx233_dma_clkgate_channel(APB_SSP(ssp), true);
130 /* If first block to start, start SSP clock */ 122 /* If first block to start, start SSP clock */
131 if(ssp_nr_in_use == 0) 123 if(ssp_nr_in_use == 0)
132 { 124 {
@@ -140,6 +132,20 @@ void imx233_ssp_start(int ssp)
140#endif 132#endif
141 imx233_clkctrl_enable(CLK_SSP, true); 133 imx233_clkctrl_enable(CLK_SSP, true);
142 } 134 }
135}
136
137void imx233_ssp_start(int ssp)
138{
139 ASSERT_SSP(ssp)
140 if(ssp_in_use[ssp - 1])
141 return;
142 ssp_in_use[ssp - 1] = true;
143 /* Enable SSP clock (need to start block) */
144 start_ssp_clock();
145 /* Gate block */
146 imx233_ssp_softreset(ssp);
147 /* Gate dma channel */
148 imx233_dma_clkgate_channel(APB_SSP(ssp), true);
143 ssp_nr_in_use++; 149 ssp_nr_in_use++;
144} 150}
145 151