diff options
-rw-r--r-- | arch/arm/mach-s3c2410/clock.c | 206 |
1 files changed, 103 insertions, 103 deletions
diff --git a/arch/arm/mach-s3c2410/clock.c b/arch/arm/mach-s3c2410/clock.c index 5830ae3ddd19..fc09ba92d66a 100644 --- a/arch/arm/mach-s3c2410/clock.c +++ b/arch/arm/mach-s3c2410/clock.c | |||
@@ -253,100 +253,101 @@ struct clk s3c24xx_uclk = { | |||
253 | /* clock definitions */ | 253 | /* clock definitions */ |
254 | 254 | ||
255 | static struct clk init_clocks[] = { | 255 | static struct clk init_clocks[] = { |
256 | { .name = "nand", | 256 | { |
257 | .id = -1, | 257 | .name = "nand", |
258 | .parent = &clk_h, | 258 | .id = -1, |
259 | .enable = s3c24xx_clkcon_enable, | 259 | .parent = &clk_h, |
260 | .ctrlbit = S3C2410_CLKCON_NAND | 260 | .enable = s3c24xx_clkcon_enable, |
261 | }, | 261 | .ctrlbit = S3C2410_CLKCON_NAND, |
262 | { .name = "lcd", | 262 | }, { |
263 | .id = -1, | 263 | .name = "lcd", |
264 | .parent = &clk_h, | 264 | .id = -1, |
265 | .enable = s3c24xx_clkcon_enable, | 265 | .parent = &clk_h, |
266 | .ctrlbit = S3C2410_CLKCON_LCDC | 266 | .enable = s3c24xx_clkcon_enable, |
267 | }, | 267 | .ctrlbit = S3C2410_CLKCON_LCDC, |
268 | { .name = "usb-host", | 268 | }, { |
269 | .id = -1, | 269 | .name = "usb-host", |
270 | .parent = &clk_h, | 270 | .id = -1, |
271 | .enable = s3c24xx_clkcon_enable, | 271 | .parent = &clk_h, |
272 | .ctrlbit = S3C2410_CLKCON_USBH | 272 | .enable = s3c24xx_clkcon_enable, |
273 | }, | 273 | .ctrlbit = S3C2410_CLKCON_USBH, |
274 | { .name = "usb-device", | 274 | }, { |
275 | .id = -1, | 275 | .name = "usb-device", |
276 | .parent = &clk_h, | 276 | .id = -1, |
277 | .enable = s3c24xx_clkcon_enable, | 277 | .parent = &clk_h, |
278 | .ctrlbit = S3C2410_CLKCON_USBD | 278 | .enable = s3c24xx_clkcon_enable, |
279 | }, | 279 | .ctrlbit = S3C2410_CLKCON_USBD, |
280 | { .name = "timers", | 280 | }, { |
281 | .id = -1, | 281 | .name = "timers", |
282 | .parent = &clk_p, | 282 | .id = -1, |
283 | .enable = s3c24xx_clkcon_enable, | 283 | .parent = &clk_p, |
284 | .ctrlbit = S3C2410_CLKCON_PWMT | 284 | .enable = s3c24xx_clkcon_enable, |
285 | }, | 285 | .ctrlbit = S3C2410_CLKCON_PWMT, |
286 | { .name = "sdi", | 286 | }, { |
287 | .id = -1, | 287 | .name = "sdi", |
288 | .parent = &clk_p, | 288 | .id = -1, |
289 | .enable = s3c24xx_clkcon_enable, | 289 | .parent = &clk_p, |
290 | .ctrlbit = S3C2410_CLKCON_SDI | 290 | .enable = s3c24xx_clkcon_enable, |
291 | }, | 291 | .ctrlbit = S3C2410_CLKCON_SDI, |
292 | { .name = "uart", | 292 | }, { |
293 | .id = 0, | 293 | .name = "uart", |
294 | .parent = &clk_p, | 294 | .id = 0, |
295 | .enable = s3c24xx_clkcon_enable, | 295 | .parent = &clk_p, |
296 | .ctrlbit = S3C2410_CLKCON_UART0 | 296 | .enable = s3c24xx_clkcon_enable, |
297 | }, | 297 | .ctrlbit = S3C2410_CLKCON_UART0, |
298 | { .name = "uart", | 298 | }, { |
299 | .id = 1, | 299 | .name = "uart", |
300 | .parent = &clk_p, | 300 | .id = 1, |
301 | .enable = s3c24xx_clkcon_enable, | 301 | .parent = &clk_p, |
302 | .ctrlbit = S3C2410_CLKCON_UART1 | 302 | .enable = s3c24xx_clkcon_enable, |
303 | }, | 303 | .ctrlbit = S3C2410_CLKCON_UART1, |
304 | { .name = "uart", | 304 | }, { |
305 | .id = 2, | 305 | .name = "uart", |
306 | .parent = &clk_p, | 306 | .id = 2, |
307 | .enable = s3c24xx_clkcon_enable, | 307 | .parent = &clk_p, |
308 | .ctrlbit = S3C2410_CLKCON_UART2 | 308 | .enable = s3c24xx_clkcon_enable, |
309 | }, | 309 | .ctrlbit = S3C2410_CLKCON_UART2, |
310 | { .name = "gpio", | 310 | }, { |
311 | .id = -1, | 311 | .name = "gpio", |
312 | .parent = &clk_p, | 312 | .id = -1, |
313 | .enable = s3c24xx_clkcon_enable, | 313 | .parent = &clk_p, |
314 | .ctrlbit = S3C2410_CLKCON_GPIO | 314 | .enable = s3c24xx_clkcon_enable, |
315 | }, | 315 | .ctrlbit = S3C2410_CLKCON_GPIO, |
316 | { .name = "rtc", | 316 | }, { |
317 | .id = -1, | 317 | .name = "rtc", |
318 | .parent = &clk_p, | 318 | .id = -1, |
319 | .enable = s3c24xx_clkcon_enable, | 319 | .parent = &clk_p, |
320 | .ctrlbit = S3C2410_CLKCON_RTC | 320 | .enable = s3c24xx_clkcon_enable, |
321 | }, | 321 | .ctrlbit = S3C2410_CLKCON_RTC, |
322 | { .name = "adc", | 322 | }, { |
323 | .id = -1, | 323 | .name = "adc", |
324 | .parent = &clk_p, | 324 | .id = -1, |
325 | .enable = s3c24xx_clkcon_enable, | 325 | .parent = &clk_p, |
326 | .ctrlbit = S3C2410_CLKCON_ADC | 326 | .enable = s3c24xx_clkcon_enable, |
327 | }, | 327 | .ctrlbit = S3C2410_CLKCON_ADC, |
328 | { .name = "i2c", | 328 | }, { |
329 | .id = -1, | 329 | .name = "i2c", |
330 | .parent = &clk_p, | 330 | .id = -1, |
331 | .enable = s3c24xx_clkcon_enable, | 331 | .parent = &clk_p, |
332 | .ctrlbit = S3C2410_CLKCON_IIC | 332 | .enable = s3c24xx_clkcon_enable, |
333 | }, | 333 | .ctrlbit = S3C2410_CLKCON_IIC, |
334 | { .name = "iis", | 334 | }, { |
335 | .id = -1, | 335 | .name = "iis", |
336 | .parent = &clk_p, | 336 | .id = -1, |
337 | .enable = s3c24xx_clkcon_enable, | 337 | .parent = &clk_p, |
338 | .ctrlbit = S3C2410_CLKCON_IIS | 338 | .enable = s3c24xx_clkcon_enable, |
339 | }, | 339 | .ctrlbit = S3C2410_CLKCON_IIS, |
340 | { .name = "spi", | 340 | }, { |
341 | .id = -1, | 341 | .name = "spi", |
342 | .parent = &clk_p, | 342 | .id = -1, |
343 | .enable = s3c24xx_clkcon_enable, | 343 | .parent = &clk_p, |
344 | .ctrlbit = S3C2410_CLKCON_SPI | 344 | .enable = s3c24xx_clkcon_enable, |
345 | }, | 345 | .ctrlbit = S3C2410_CLKCON_SPI, |
346 | { .name = "watchdog", | 346 | }, { |
347 | .id = -1, | 347 | .name = "watchdog", |
348 | .parent = &clk_p, | 348 | .id = -1, |
349 | .ctrlbit = 0 | 349 | .parent = &clk_p, |
350 | .ctrlbit = 0, | ||
350 | } | 351 | } |
351 | }; | 352 | }; |
352 | 353 | ||
@@ -390,16 +391,15 @@ int __init s3c24xx_setup_clocks(unsigned long xtal, | |||
390 | clk_p.rate = pclk; | 391 | clk_p.rate = pclk; |
391 | clk_f.rate = fclk; | 392 | clk_f.rate = fclk; |
392 | 393 | ||
393 | /* it looks like just setting the register here is not good | 394 | /* We must be careful disabling the clocks we are not intending to |
394 | * enough, and causes the odd hang at initial boot time, so | 395 | * be using at boot time, as subsytems such as the LCD which do |
395 | * do all of them indivdually. | 396 | * their own DMA requests to the bus can cause the system to lockup |
397 | * if they where in the middle of requesting bus access. | ||
396 | * | 398 | * |
397 | * I think disabling the LCD clock if the LCD is active is | 399 | * Disabling the LCD clock if the LCD is active is very dangerous, |
398 | * very dangerous, and therefore the bootloader should be | 400 | * and therefore the bootloader should be careful to not enable |
399 | * careful to not enable the LCD clock if it is not needed. | 401 | * the LCD clock if it is not needed. |
400 | * | 402 | */ |
401 | * and of course, this looks neater | ||
402 | */ | ||
403 | 403 | ||
404 | s3c24xx_clk_enable(S3C2410_CLKCON_NAND, 0); | 404 | s3c24xx_clk_enable(S3C2410_CLKCON_NAND, 0); |
405 | s3c24xx_clk_enable(S3C2410_CLKCON_USBH, 0); | 405 | s3c24xx_clk_enable(S3C2410_CLKCON_USBH, 0); |