diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2013-09-26 20:12:42 +0200 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2013-09-26 20:12:42 +0200 |
commit | 120701646f939eb2c360a9917e56fd2cf78631cd (patch) | |
tree | fab42bd26ee3aaebc89a1f773e29dd99a681c4d4 | |
parent | f75310598c6daa51f0d2e5839f031bbf100ba4ba (diff) | |
download | rockbox-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.c | 24 |
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 | ||
120 | void imx233_ssp_start(int ssp) | 120 | static 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 | |||
137 | void 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 | ||