diff options
-rw-r--r-- | arch/arm/mach-s3c2412/mach-jive.c | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/arch/arm/mach-s3c2412/mach-jive.c b/arch/arm/mach-s3c2412/mach-jive.c index 71bf9000e253..2e6350d68779 100644 --- a/arch/arm/mach-s3c2412/mach-jive.c +++ b/arch/arm/mach-s3c2412/mach-jive.c | |||
@@ -409,8 +409,28 @@ static struct platform_device jive_device_lcdspi = { | |||
409 | .dev.platform_data = &jive_lcd_spi, | 409 | .dev.platform_data = &jive_lcd_spi, |
410 | }; | 410 | }; |
411 | 411 | ||
412 | /* JIVE SPI devices. */ | 412 | /* WM8750 audio code SPI definition */ |
413 | |||
414 | static void jive_wm8750_chipselect(struct s3c2410_spigpio_info *spi, int cs) | ||
415 | { | ||
416 | s3c2410_gpio_setpin(S3C2410_GPH10, cs ? 0 : 1); | ||
417 | } | ||
418 | |||
419 | static struct s3c2410_spigpio_info jive_wm8750_spi = { | ||
420 | .bus_num = 2, | ||
421 | .pin_clk = S3C2410_GPB4, | ||
422 | .pin_mosi = S3C2410_GPB9, | ||
423 | .chip_select = jive_wm8750_chipselect, | ||
424 | }; | ||
425 | |||
426 | static struct platform_device jive_device_wm8750 = { | ||
427 | .name = "s3c24xx-spi-gpio", | ||
428 | .id = 2, | ||
429 | .num_resources = 0, | ||
430 | .dev.platform_data = &jive_wm8750_spi, | ||
431 | }; | ||
413 | 432 | ||
433 | /* JIVE SPI devices. */ | ||
414 | 434 | ||
415 | static struct spi_board_info __initdata jive_spi_devs[] = { | 435 | static struct spi_board_info __initdata jive_spi_devs[] = { |
416 | [0] = { | 436 | [0] = { |
@@ -420,10 +440,15 @@ static struct spi_board_info __initdata jive_spi_devs[] = { | |||
420 | .mode = SPI_MODE_3, /* CPOL=1, CPHA=1 */ | 440 | .mode = SPI_MODE_3, /* CPOL=1, CPHA=1 */ |
421 | .max_speed_hz = 100000, | 441 | .max_speed_hz = 100000, |
422 | .platform_data = &jive_lcm_config, | 442 | .platform_data = &jive_lcm_config, |
443 | }, { | ||
444 | .modalias = "WM8750", | ||
445 | .bus_num = 2, | ||
446 | .chip_select = 0, | ||
447 | .mode = SPI_MODE_0, /* CPOL=0, CPHA=0 */ | ||
448 | .max_speed_hz = 100000, | ||
423 | }, | 449 | }, |
424 | }; | 450 | }; |
425 | 451 | ||
426 | |||
427 | static struct platform_device *jive_devices[] __initdata = { | 452 | static struct platform_device *jive_devices[] __initdata = { |
428 | &s3c_device_usb, | 453 | &s3c_device_usb, |
429 | &s3c_device_rtc, | 454 | &s3c_device_rtc, |
@@ -431,6 +456,7 @@ static struct platform_device *jive_devices[] __initdata = { | |||
431 | &s3c_device_i2c, | 456 | &s3c_device_i2c, |
432 | &s3c_device_lcd, | 457 | &s3c_device_lcd, |
433 | &jive_device_lcdspi, | 458 | &jive_device_lcdspi, |
459 | &jive_device_wm8750, | ||
434 | &s3c_device_nand, | 460 | &s3c_device_nand, |
435 | &s3c_device_usbgadget, | 461 | &s3c_device_usbgadget, |
436 | }; | 462 | }; |
@@ -595,6 +621,11 @@ static void __init jive_machine_init(void) | |||
595 | s3c2410_gpio_setpin(S3C2410_GPG8, 1); | 621 | s3c2410_gpio_setpin(S3C2410_GPG8, 1); |
596 | s3c2410_gpio_cfgpin(S3C2410_GPG8, S3C2410_GPIO_OUTPUT); | 622 | s3c2410_gpio_cfgpin(S3C2410_GPG8, S3C2410_GPIO_OUTPUT); |
597 | 623 | ||
624 | /* initialise the WM8750 spi */ | ||
625 | |||
626 | s3c2410_gpio_setpin(S3C2410_GPH10, 1); | ||
627 | s3c2410_gpio_cfgpin(S3C2410_GPH10, S3C2410_GPIO_OUTPUT); | ||
628 | |||
598 | /* Turn off suspend on both USB ports, and switch the | 629 | /* Turn off suspend on both USB ports, and switch the |
599 | * selectable USB port to USB device mode. */ | 630 | * selectable USB port to USB device mode. */ |
600 | 631 | ||