diff options
Diffstat (limited to 'arch/mips/bcm63xx/clk.c')
-rw-r--r-- | arch/mips/bcm63xx/clk.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/arch/mips/bcm63xx/clk.c b/arch/mips/bcm63xx/clk.c index 9d57c71b7b58..1db48adb543a 100644 --- a/arch/mips/bcm63xx/clk.c +++ b/arch/mips/bcm63xx/clk.c | |||
@@ -120,7 +120,7 @@ static void enetsw_set(struct clk *clk, int enable) | |||
120 | { | 120 | { |
121 | if (!BCMCPU_IS_6368()) | 121 | if (!BCMCPU_IS_6368()) |
122 | return; | 122 | return; |
123 | bcm_hwclock_set(CKCTL_6368_ROBOSW_CLK_EN | | 123 | bcm_hwclock_set(CKCTL_6368_ROBOSW_EN | |
124 | CKCTL_6368_SWPKT_USB_EN | | 124 | CKCTL_6368_SWPKT_USB_EN | |
125 | CKCTL_6368_SWPKT_SAR_EN, enable); | 125 | CKCTL_6368_SWPKT_SAR_EN, enable); |
126 | if (enable) { | 126 | if (enable) { |
@@ -163,7 +163,7 @@ static void usbh_set(struct clk *clk, int enable) | |||
163 | if (BCMCPU_IS_6348()) | 163 | if (BCMCPU_IS_6348()) |
164 | bcm_hwclock_set(CKCTL_6348_USBH_EN, enable); | 164 | bcm_hwclock_set(CKCTL_6348_USBH_EN, enable); |
165 | else if (BCMCPU_IS_6368()) | 165 | else if (BCMCPU_IS_6368()) |
166 | bcm_hwclock_set(CKCTL_6368_USBH_CLK_EN, enable); | 166 | bcm_hwclock_set(CKCTL_6368_USBH_EN, enable); |
167 | } | 167 | } |
168 | 168 | ||
169 | static struct clk clk_usbh = { | 169 | static struct clk clk_usbh = { |
@@ -181,9 +181,11 @@ static void spi_set(struct clk *clk, int enable) | |||
181 | mask = CKCTL_6338_SPI_EN; | 181 | mask = CKCTL_6338_SPI_EN; |
182 | else if (BCMCPU_IS_6348()) | 182 | else if (BCMCPU_IS_6348()) |
183 | mask = CKCTL_6348_SPI_EN; | 183 | mask = CKCTL_6348_SPI_EN; |
184 | else | 184 | else if (BCMCPU_IS_6358()) |
185 | /* BCMCPU_IS_6358 */ | ||
186 | mask = CKCTL_6358_SPI_EN; | 185 | mask = CKCTL_6358_SPI_EN; |
186 | else | ||
187 | /* BCMCPU_IS_6368 */ | ||
188 | mask = CKCTL_6368_SPI_EN; | ||
187 | bcm_hwclock_set(mask, enable); | 189 | bcm_hwclock_set(mask, enable); |
188 | } | 190 | } |
189 | 191 | ||
@@ -199,7 +201,7 @@ static void xtm_set(struct clk *clk, int enable) | |||
199 | if (!BCMCPU_IS_6368()) | 201 | if (!BCMCPU_IS_6368()) |
200 | return; | 202 | return; |
201 | 203 | ||
202 | bcm_hwclock_set(CKCTL_6368_SAR_CLK_EN | | 204 | bcm_hwclock_set(CKCTL_6368_SAR_EN | |
203 | CKCTL_6368_SWPKT_SAR_EN, enable); | 205 | CKCTL_6368_SWPKT_SAR_EN, enable); |
204 | 206 | ||
205 | if (enable) { | 207 | if (enable) { |
@@ -222,6 +224,18 @@ static struct clk clk_xtm = { | |||
222 | }; | 224 | }; |
223 | 225 | ||
224 | /* | 226 | /* |
227 | * IPsec clock | ||
228 | */ | ||
229 | static void ipsec_set(struct clk *clk, int enable) | ||
230 | { | ||
231 | bcm_hwclock_set(CKCTL_6368_IPSEC_EN, enable); | ||
232 | } | ||
233 | |||
234 | static struct clk clk_ipsec = { | ||
235 | .set = ipsec_set, | ||
236 | }; | ||
237 | |||
238 | /* | ||
225 | * Internal peripheral clock | 239 | * Internal peripheral clock |
226 | */ | 240 | */ |
227 | static struct clk clk_periph = { | 241 | static struct clk clk_periph = { |
@@ -278,6 +292,8 @@ struct clk *clk_get(struct device *dev, const char *id) | |||
278 | return &clk_periph; | 292 | return &clk_periph; |
279 | if (BCMCPU_IS_6358() && !strcmp(id, "pcm")) | 293 | if (BCMCPU_IS_6358() && !strcmp(id, "pcm")) |
280 | return &clk_pcm; | 294 | return &clk_pcm; |
295 | if (BCMCPU_IS_6368() && !strcmp(id, "ipsec")) | ||
296 | return &clk_ipsec; | ||
281 | return ERR_PTR(-ENOENT); | 297 | return ERR_PTR(-ENOENT); |
282 | } | 298 | } |
283 | 299 | ||