diff options
| author | Olof Johansson <olof@lixom.net> | 2012-10-01 17:34:39 -0400 |
|---|---|---|
| committer | Olof Johansson <olof@lixom.net> | 2012-10-01 17:34:39 -0400 |
| commit | a8e1ceb728d249fbe0bc5e30b9b8ceb0f33b54f5 (patch) | |
| tree | 653ab2d3049d1231e7e462155564a6953d0a720a | |
| parent | 8b1a13b02812b60b88920801363920956691feb3 (diff) | |
| parent | e6ca4ae895e9fbf8b96d3ee1dd44ea96e95babad (diff) | |
Merge branch 'next/boards' into HEAD
Conflicts:
arch/arm/mach-shmobile/board-armadillo800eva.c
26 files changed, 633 insertions, 33 deletions
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug index e968a52e4881..58c74e737f7a 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug | |||
| @@ -224,6 +224,20 @@ choice | |||
| 224 | Say Y here if you want kernel low-level debugging support | 224 | Say Y here if you want kernel low-level debugging support |
| 225 | on i.MX6Q UART4. | 225 | on i.MX6Q UART4. |
| 226 | 226 | ||
| 227 | config DEBUG_MMP_UART2 | ||
| 228 | bool "Kernel low-level debugging message via MMP UART2" | ||
| 229 | depends on ARCH_MMP | ||
| 230 | help | ||
| 231 | Say Y here if you want kernel low-level debugging support | ||
| 232 | on MMP UART2. | ||
| 233 | |||
| 234 | config DEBUG_MMP_UART3 | ||
| 235 | bool "Kernel low-level debugging message via MMP UART3" | ||
| 236 | depends on ARCH_MMP | ||
| 237 | help | ||
| 238 | Say Y here if you want kernel low-level debugging support | ||
| 239 | on MMP UART3. | ||
| 240 | |||
| 227 | config DEBUG_MSM_UART1 | 241 | config DEBUG_MSM_UART1 |
| 228 | bool "Kernel low-level debugging messages via MSM UART1" | 242 | bool "Kernel low-level debugging messages via MSM UART1" |
| 229 | depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 | 243 | depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 |
diff --git a/arch/arm/boot/dts/exynos4210-origen.dts b/arch/arm/boot/dts/exynos4210-origen.dts index 0c49caa09978..d69a7999a12b 100644 --- a/arch/arm/boot/dts/exynos4210-origen.dts +++ b/arch/arm/boot/dts/exynos4210-origen.dts | |||
| @@ -62,35 +62,43 @@ | |||
| 62 | 62 | ||
| 63 | up { | 63 | up { |
| 64 | label = "Up"; | 64 | label = "Up"; |
| 65 | gpios = <&gpx2 0 0 0 2>; | 65 | gpios = <&gpx2 0 0 0x10000 2>; |
| 66 | linux,code = <103>; | 66 | linux,code = <103>; |
| 67 | }; | 67 | }; |
| 68 | 68 | ||
| 69 | down { | 69 | down { |
| 70 | label = "Down"; | 70 | label = "Down"; |
| 71 | gpios = <&gpx2 1 0 0 2>; | 71 | gpios = <&gpx2 1 0 0x10000 2>; |
| 72 | linux,code = <108>; | 72 | linux,code = <108>; |
| 73 | }; | 73 | }; |
| 74 | 74 | ||
| 75 | back { | 75 | back { |
| 76 | label = "Back"; | 76 | label = "Back"; |
| 77 | gpios = <&gpx1 7 0 0 2>; | 77 | gpios = <&gpx1 7 0 0x10000 2>; |
| 78 | linux,code = <158>; | 78 | linux,code = <158>; |
| 79 | }; | 79 | }; |
| 80 | 80 | ||
| 81 | home { | 81 | home { |
| 82 | label = "Home"; | 82 | label = "Home"; |
| 83 | gpios = <&gpx1 6 0 0 2>; | 83 | gpios = <&gpx1 6 0 0x10000 2>; |
| 84 | linux,code = <102>; | 84 | linux,code = <102>; |
| 85 | }; | 85 | }; |
| 86 | 86 | ||
| 87 | menu { | 87 | menu { |
| 88 | label = "Menu"; | 88 | label = "Menu"; |
| 89 | gpios = <&gpx1 5 0 0 2>; | 89 | gpios = <&gpx1 5 0 0x10000 2>; |
| 90 | linux,code = <139>; | 90 | linux,code = <139>; |
| 91 | }; | 91 | }; |
| 92 | }; | 92 | }; |
| 93 | 93 | ||
| 94 | leds { | ||
| 95 | compatible = "gpio-leds"; | ||
| 96 | status { | ||
| 97 | gpios = <&gpx1 3 0 0x10000 2>; | ||
| 98 | linux,default-trigger = "heartbeat"; | ||
| 99 | }; | ||
| 100 | }; | ||
| 101 | |||
| 94 | keypad@100A0000 { | 102 | keypad@100A0000 { |
| 95 | status = "disabled"; | 103 | status = "disabled"; |
| 96 | }; | 104 | }; |
diff --git a/arch/arm/configs/armadillo800eva_defconfig b/arch/arm/configs/armadillo800eva_defconfig index 90610c7030f7..f78d259f8d23 100644 --- a/arch/arm/configs/armadillo800eva_defconfig +++ b/arch/arm/configs/armadillo800eva_defconfig | |||
| @@ -85,6 +85,7 @@ CONFIG_SERIAL_SH_SCI_NR_UARTS=8 | |||
| 85 | CONFIG_SERIAL_SH_SCI_CONSOLE=y | 85 | CONFIG_SERIAL_SH_SCI_CONSOLE=y |
| 86 | # CONFIG_HW_RANDOM is not set | 86 | # CONFIG_HW_RANDOM is not set |
| 87 | CONFIG_I2C=y | 87 | CONFIG_I2C=y |
| 88 | CONFIG_I2C_GPIO=y | ||
| 88 | CONFIG_I2C_SH_MOBILE=y | 89 | CONFIG_I2C_SH_MOBILE=y |
| 89 | # CONFIG_HWMON is not set | 90 | # CONFIG_HWMON is not set |
| 90 | CONFIG_MEDIA_SUPPORT=y | 91 | CONFIG_MEDIA_SUPPORT=y |
| @@ -120,6 +121,8 @@ CONFIG_USB_ETH=m | |||
| 120 | CONFIG_MMC=y | 121 | CONFIG_MMC=y |
| 121 | CONFIG_MMC_SDHI=y | 122 | CONFIG_MMC_SDHI=y |
| 122 | CONFIG_MMC_SH_MMCIF=y | 123 | CONFIG_MMC_SH_MMCIF=y |
| 124 | CONFIG_RTC_CLASS=y | ||
| 125 | CONFIG_RTC_DRV_S35390A=y | ||
| 123 | CONFIG_DMADEVICES=y | 126 | CONFIG_DMADEVICES=y |
| 124 | CONFIG_SH_DMAE=y | 127 | CONFIG_SH_DMAE=y |
| 125 | CONFIG_UIO=y | 128 | CONFIG_UIO=y |
diff --git a/arch/arm/configs/marzen_defconfig b/arch/arm/configs/marzen_defconfig index 864f9a5c39dd..f513acedc10a 100644 --- a/arch/arm/configs/marzen_defconfig +++ b/arch/arm/configs/marzen_defconfig | |||
| @@ -68,6 +68,8 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y | |||
| 68 | # CONFIG_HW_RANDOM is not set | 68 | # CONFIG_HW_RANDOM is not set |
| 69 | CONFIG_GPIO_SYSFS=y | 69 | CONFIG_GPIO_SYSFS=y |
| 70 | # CONFIG_HWMON is not set | 70 | # CONFIG_HWMON is not set |
| 71 | CONFIG_THERMAL=y | ||
| 72 | CONFIG_RCAR_THERMAL=y | ||
| 71 | CONFIG_SSB=y | 73 | CONFIG_SSB=y |
| 72 | # CONFIG_HID_SUPPORT is not set | 74 | # CONFIG_HID_SUPPORT is not set |
| 73 | # CONFIG_USB_SUPPORT is not set | 75 | # CONFIG_USB_SUPPORT is not set |
diff --git a/arch/arm/configs/mmp2_defconfig b/arch/arm/configs/mmp2_defconfig index 5a584520db2f..f1cb95e58af0 100644 --- a/arch/arm/configs/mmp2_defconfig +++ b/arch/arm/configs/mmp2_defconfig | |||
| @@ -16,7 +16,7 @@ CONFIG_PREEMPT=y | |||
| 16 | CONFIG_AEABI=y | 16 | CONFIG_AEABI=y |
| 17 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 17 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
| 18 | CONFIG_ZBOOT_ROM_BSS=0x0 | 18 | CONFIG_ZBOOT_ROM_BSS=0x0 |
| 19 | CONFIG_CMDLINE="root=/dev/nfs rootfstype=nfs nfsroot=192.168.1.100:/nfsroot/ ip=192.168.1.101:192.168.1.100::255.255.255.0::eth0:on console=ttyS2,38400 mem=128M user_debug=255" | 19 | CONFIG_CMDLINE="root=/dev/nfs rootfstype=nfs nfsroot=192.168.1.100:/nfsroot/ ip=192.168.1.101:192.168.1.100::255.255.255.0::eth0:on console=ttyS2,38400 mem=128M user_debug=255 earlyprintk" |
| 20 | CONFIG_VFP=y | 20 | CONFIG_VFP=y |
| 21 | CONFIG_NET=y | 21 | CONFIG_NET=y |
| 22 | CONFIG_PACKET=y | 22 | CONFIG_PACKET=y |
| @@ -90,6 +90,9 @@ CONFIG_DEBUG_INFO=y | |||
| 90 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set | 90 | # CONFIG_RCU_CPU_STALL_DETECTOR is not set |
| 91 | # CONFIG_DYNAMIC_DEBUG is not set | 91 | # CONFIG_DYNAMIC_DEBUG is not set |
| 92 | CONFIG_DEBUG_USER=y | 92 | CONFIG_DEBUG_USER=y |
| 93 | CONFIG_DEBUG_LL=y | ||
| 94 | CONFIG_DEBUG_MMP_UART3=y | ||
| 95 | CONFIG_EARLY_PRINTK=y | ||
| 93 | CONFIG_DEBUG_ERRORS=y | 96 | CONFIG_DEBUG_ERRORS=y |
| 94 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 97 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
| 95 | CONFIG_CRC_CCITT=y | 98 | CONFIG_CRC_CCITT=y |
diff --git a/arch/arm/configs/pxa910_defconfig b/arch/arm/configs/pxa910_defconfig index 1cd381e1d47d..191118caa5c0 100644 --- a/arch/arm/configs/pxa910_defconfig +++ b/arch/arm/configs/pxa910_defconfig | |||
| @@ -17,7 +17,7 @@ CONFIG_PREEMPT=y | |||
| 17 | CONFIG_AEABI=y | 17 | CONFIG_AEABI=y |
| 18 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 18 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
| 19 | CONFIG_ZBOOT_ROM_BSS=0x0 | 19 | CONFIG_ZBOOT_ROM_BSS=0x0 |
| 20 | CONFIG_CMDLINE="root=/dev/nfs rootfstype=nfs nfsroot=192.168.2.100:/nfsroot/ ip=192.168.2.101:192.168.2.100::255.255.255.0::eth0:on console=ttyS0,115200 mem=128M" | 20 | CONFIG_CMDLINE="root=/dev/nfs rootfstype=nfs nfsroot=192.168.2.100:/nfsroot/ ip=192.168.2.101:192.168.2.100::255.255.255.0::eth0:on console=ttyS0,115200 mem=128M earlyprintk" |
| 21 | CONFIG_FPE_NWFPE=y | 21 | CONFIG_FPE_NWFPE=y |
| 22 | CONFIG_NET=y | 22 | CONFIG_NET=y |
| 23 | CONFIG_PACKET=y | 23 | CONFIG_PACKET=y |
| @@ -66,5 +66,7 @@ CONFIG_DEBUG_INFO=y | |||
| 66 | CONFIG_DEBUG_USER=y | 66 | CONFIG_DEBUG_USER=y |
| 67 | CONFIG_DEBUG_ERRORS=y | 67 | CONFIG_DEBUG_ERRORS=y |
| 68 | CONFIG_DEBUG_LL=y | 68 | CONFIG_DEBUG_LL=y |
| 69 | CONFIG_DEBUG_MMP_UART2=y | ||
| 70 | CONFIG_EARLY_PRINTK=y | ||
| 69 | # CONFIG_CRYPTO_ANSI_CPRNG is not set | 71 | # CONFIG_CRYPTO_ANSI_CPRNG is not set |
| 70 | CONFIG_CRC_CCITT=y | 72 | CONFIG_CRC_CCITT=y |
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig index 412884dafa6c..4372075c551f 100644 --- a/arch/arm/mach-exynos/Kconfig +++ b/arch/arm/mach-exynos/Kconfig | |||
| @@ -221,6 +221,7 @@ config MACH_SMDKV310 | |||
| 221 | select EXYNOS4_SETUP_KEYPAD | 221 | select EXYNOS4_SETUP_KEYPAD |
| 222 | select EXYNOS4_SETUP_SDHCI | 222 | select EXYNOS4_SETUP_SDHCI |
| 223 | select EXYNOS4_SETUP_USB_PHY | 223 | select EXYNOS4_SETUP_USB_PHY |
| 224 | select S3C24XX_PWM | ||
| 224 | help | 225 | help |
| 225 | Machine support for Samsung SMDKV310 | 226 | Machine support for Samsung SMDKV310 |
| 226 | 227 | ||
| @@ -348,6 +349,7 @@ config MACH_ORIGEN | |||
| 348 | select EXYNOS4_SETUP_FIMD0 | 349 | select EXYNOS4_SETUP_FIMD0 |
| 349 | select EXYNOS4_SETUP_SDHCI | 350 | select EXYNOS4_SETUP_SDHCI |
| 350 | select EXYNOS4_SETUP_USB_PHY | 351 | select EXYNOS4_SETUP_USB_PHY |
| 352 | select S3C24XX_PWM | ||
| 351 | help | 353 | help |
| 352 | Machine support for ORIGEN based on Samsung EXYNOS4210 | 354 | Machine support for ORIGEN based on Samsung EXYNOS4210 |
| 353 | 355 | ||
| @@ -383,6 +385,7 @@ config MACH_SMDK4212 | |||
| 383 | select EXYNOS4_SETUP_KEYPAD | 385 | select EXYNOS4_SETUP_KEYPAD |
| 384 | select EXYNOS4_SETUP_SDHCI | 386 | select EXYNOS4_SETUP_SDHCI |
| 385 | select EXYNOS4_SETUP_USB_PHY | 387 | select EXYNOS4_SETUP_USB_PHY |
| 388 | select S3C24XX_PWM | ||
| 386 | help | 389 | help |
| 387 | Machine support for Samsung SMDK4212 | 390 | Machine support for Samsung SMDK4212 |
| 388 | 391 | ||
diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c index 4e574c24581c..b45600fcf73e 100644 --- a/arch/arm/mach-exynos/mach-origen.c +++ b/arch/arm/mach-exynos/mach-origen.c | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
| 16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
| 17 | #include <linux/input.h> | 17 | #include <linux/input.h> |
| 18 | #include <linux/pwm.h> | ||
| 18 | #include <linux/pwm_backlight.h> | 19 | #include <linux/pwm_backlight.h> |
| 19 | #include <linux/gpio_keys.h> | 20 | #include <linux/gpio_keys.h> |
| 20 | #include <linux/i2c.h> | 21 | #include <linux/i2c.h> |
| @@ -614,6 +615,10 @@ static struct platform_device origen_lcd_hv070wsa = { | |||
| 614 | .dev.platform_data = &origen_lcd_hv070wsa_data, | 615 | .dev.platform_data = &origen_lcd_hv070wsa_data, |
| 615 | }; | 616 | }; |
| 616 | 617 | ||
| 618 | static struct pwm_lookup origen_pwm_lookup[] = { | ||
| 619 | PWM_LOOKUP("s3c24xx-pwm.0", 0, "pwm-backlight.0", NULL), | ||
| 620 | }; | ||
| 621 | |||
| 617 | #ifdef CONFIG_DRM_EXYNOS | 622 | #ifdef CONFIG_DRM_EXYNOS |
| 618 | static struct exynos_drm_fimd_pdata drm_fimd_pdata = { | 623 | static struct exynos_drm_fimd_pdata drm_fimd_pdata = { |
| 619 | .panel = { | 624 | .panel = { |
| @@ -798,6 +803,7 @@ static void __init origen_machine_init(void) | |||
| 798 | 803 | ||
| 799 | platform_add_devices(origen_devices, ARRAY_SIZE(origen_devices)); | 804 | platform_add_devices(origen_devices, ARRAY_SIZE(origen_devices)); |
| 800 | 805 | ||
| 806 | pwm_add_table(origen_pwm_lookup, ARRAY_SIZE(origen_pwm_lookup)); | ||
| 801 | samsung_bl_set(&origen_bl_gpio_info, &origen_bl_data); | 807 | samsung_bl_set(&origen_bl_gpio_info, &origen_bl_data); |
| 802 | 808 | ||
| 803 | origen_bt_setup(); | 809 | origen_bt_setup(); |
diff --git a/arch/arm/mach-exynos/mach-smdk4x12.c b/arch/arm/mach-exynos/mach-smdk4x12.c index b26beb13ebef..81bf59c6f4bf 100644 --- a/arch/arm/mach-exynos/mach-smdk4x12.c +++ b/arch/arm/mach-exynos/mach-smdk4x12.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #include <linux/mfd/max8997.h> | 17 | #include <linux/mfd/max8997.h> |
| 18 | #include <linux/mmc/host.h> | 18 | #include <linux/mmc/host.h> |
| 19 | #include <linux/platform_device.h> | 19 | #include <linux/platform_device.h> |
| 20 | #include <linux/pwm.h> | ||
| 20 | #include <linux/pwm_backlight.h> | 21 | #include <linux/pwm_backlight.h> |
| 21 | #include <linux/regulator/machine.h> | 22 | #include <linux/regulator/machine.h> |
| 22 | #include <linux/serial_core.h> | 23 | #include <linux/serial_core.h> |
| @@ -222,6 +223,10 @@ static struct platform_pwm_backlight_data smdk4x12_bl_data = { | |||
| 222 | .pwm_period_ns = 1000, | 223 | .pwm_period_ns = 1000, |
| 223 | }; | 224 | }; |
| 224 | 225 | ||
| 226 | static struct pwm_lookup smdk4x12_pwm_lookup[] = { | ||
| 227 | PWM_LOOKUP("s3c24xx-pwm.1", 0, "pwm-backlight.0", NULL), | ||
| 228 | }; | ||
| 229 | |||
| 225 | static uint32_t smdk4x12_keymap[] __initdata = { | 230 | static uint32_t smdk4x12_keymap[] __initdata = { |
| 226 | /* KEY(row, col, keycode) */ | 231 | /* KEY(row, col, keycode) */ |
| 227 | KEY(1, 3, KEY_1), KEY(1, 4, KEY_2), KEY(1, 5, KEY_3), | 232 | KEY(1, 3, KEY_1), KEY(1, 4, KEY_2), KEY(1, 5, KEY_3), |
| @@ -349,6 +354,7 @@ static void __init smdk4x12_machine_init(void) | |||
| 349 | ARRAY_SIZE(smdk4x12_i2c_devs7)); | 354 | ARRAY_SIZE(smdk4x12_i2c_devs7)); |
| 350 | 355 | ||
| 351 | samsung_bl_set(&smdk4x12_bl_gpio_info, &smdk4x12_bl_data); | 356 | samsung_bl_set(&smdk4x12_bl_gpio_info, &smdk4x12_bl_data); |
| 357 | pwm_add_table(smdk4x12_pwm_lookup, ARRAY_SIZE(smdk4x12_pwm_lookup)); | ||
| 352 | 358 | ||
| 353 | samsung_keypad_set_platdata(&smdk4x12_keypad_data); | 359 | samsung_keypad_set_platdata(&smdk4x12_keypad_data); |
| 354 | 360 | ||
diff --git a/arch/arm/mach-exynos/mach-smdkv310.c b/arch/arm/mach-exynos/mach-smdkv310.c index 73f2bce097e1..12a1db29e1a1 100644 --- a/arch/arm/mach-exynos/mach-smdkv310.c +++ b/arch/arm/mach-exynos/mach-smdkv310.c | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
| 19 | #include <linux/i2c.h> | 19 | #include <linux/i2c.h> |
| 20 | #include <linux/input.h> | 20 | #include <linux/input.h> |
| 21 | #include <linux/pwm.h> | ||
| 21 | #include <linux/pwm_backlight.h> | 22 | #include <linux/pwm_backlight.h> |
| 22 | #include <linux/platform_data/s3c-hsotg.h> | 23 | #include <linux/platform_data/s3c-hsotg.h> |
| 23 | 24 | ||
| @@ -360,6 +361,10 @@ static struct i2c_board_info hdmiphy_info = { | |||
| 360 | I2C_BOARD_INFO("hdmiphy-exynos4210", 0x38), | 361 | I2C_BOARD_INFO("hdmiphy-exynos4210", 0x38), |
| 361 | }; | 362 | }; |
| 362 | 363 | ||
| 364 | static struct pwm_lookup smdkv310_pwm_lookup[] = { | ||
| 365 | PWM_LOOKUP("s3c24xx-pwm.1", 0, "pwm-backlight.0", NULL), | ||
| 366 | }; | ||
| 367 | |||
| 363 | static void s5p_tv_setup(void) | 368 | static void s5p_tv_setup(void) |
| 364 | { | 369 | { |
| 365 | /* direct HPD to HDMI chip */ | 370 | /* direct HPD to HDMI chip */ |
| @@ -399,6 +404,8 @@ static void __init smdkv310_machine_init(void) | |||
| 399 | samsung_keypad_set_platdata(&smdkv310_keypad_data); | 404 | samsung_keypad_set_platdata(&smdkv310_keypad_data); |
| 400 | 405 | ||
| 401 | samsung_bl_set(&smdkv310_bl_gpio_info, &smdkv310_bl_data); | 406 | samsung_bl_set(&smdkv310_bl_gpio_info, &smdkv310_bl_data); |
| 407 | pwm_add_table(smdkv310_pwm_lookup, ARRAY_SIZE(smdkv310_pwm_lookup)); | ||
| 408 | |||
| 402 | #ifdef CONFIG_DRM_EXYNOS | 409 | #ifdef CONFIG_DRM_EXYNOS |
| 403 | s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata; | 410 | s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata; |
| 404 | exynos4_fimd0_gpio_setup_24bpp(); | 411 | exynos4_fimd0_gpio_setup_24bpp(); |
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 7ca5fe45945f..3a2042fb9712 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig | |||
| @@ -298,6 +298,7 @@ config MACH_MX27_3DS | |||
| 298 | select IMX_HAVE_PLATFORM_IMX_FB | 298 | select IMX_HAVE_PLATFORM_IMX_FB |
| 299 | select IMX_HAVE_PLATFORM_IMX_I2C | 299 | select IMX_HAVE_PLATFORM_IMX_I2C |
| 300 | select IMX_HAVE_PLATFORM_IMX_KEYPAD | 300 | select IMX_HAVE_PLATFORM_IMX_KEYPAD |
| 301 | select IMX_HAVE_PLATFORM_IMX_SSI | ||
| 301 | select IMX_HAVE_PLATFORM_IMX_UART | 302 | select IMX_HAVE_PLATFORM_IMX_UART |
| 302 | select IMX_HAVE_PLATFORM_MX2_CAMERA | 303 | select IMX_HAVE_PLATFORM_MX2_CAMERA |
| 303 | select IMX_HAVE_PLATFORM_MXC_EHCI | 304 | select IMX_HAVE_PLATFORM_MXC_EHCI |
diff --git a/arch/arm/mach-imx/mach-mx27_3ds.c b/arch/arm/mach-imx/mach-mx27_3ds.c index 58c24c1a7ab7..05996f39005c 100644 --- a/arch/arm/mach-imx/mach-mx27_3ds.c +++ b/arch/arm/mach-imx/mach-mx27_3ds.c | |||
| @@ -158,6 +158,11 @@ static const int mx27pdk_pins[] __initconst = { | |||
| 158 | PB21_PF_CSI_HSYNC, | 158 | PB21_PF_CSI_HSYNC, |
| 159 | CSI_PWRDWN | GPIO_GPIO | GPIO_OUT, | 159 | CSI_PWRDWN | GPIO_GPIO | GPIO_OUT, |
| 160 | CSI_RESET | GPIO_GPIO | GPIO_OUT, | 160 | CSI_RESET | GPIO_GPIO | GPIO_OUT, |
| 161 | /* SSI4 */ | ||
| 162 | PC16_PF_SSI4_FS, | ||
| 163 | PC17_PF_SSI4_RXD, | ||
| 164 | PC18_PF_SSI4_TXD, | ||
| 165 | PC19_PF_SSI4_CLK, | ||
| 161 | }; | 166 | }; |
| 162 | 167 | ||
| 163 | static struct gpio mx27_3ds_camera_gpios[] = { | 168 | static struct gpio mx27_3ds_camera_gpios[] = { |
| @@ -329,13 +334,24 @@ static struct mc13xxx_regulator_init_data mx27_3ds_regulators[] = { | |||
| 329 | }; | 334 | }; |
| 330 | 335 | ||
| 331 | /* MC13783 */ | 336 | /* MC13783 */ |
| 337 | static struct mc13xxx_codec_platform_data mx27_3ds_codec = { | ||
| 338 | .dac_ssi_port = MC13783_SSI1_PORT, | ||
| 339 | .adc_ssi_port = MC13783_SSI1_PORT, | ||
| 340 | }; | ||
| 341 | |||
| 332 | static struct mc13xxx_platform_data mc13783_pdata = { | 342 | static struct mc13xxx_platform_data mc13783_pdata = { |
| 333 | .regulators = { | 343 | .regulators = { |
| 334 | .regulators = mx27_3ds_regulators, | 344 | .regulators = mx27_3ds_regulators, |
| 335 | .num_regulators = ARRAY_SIZE(mx27_3ds_regulators), | 345 | .num_regulators = ARRAY_SIZE(mx27_3ds_regulators), |
| 336 | 346 | ||
| 337 | }, | 347 | }, |
| 338 | .flags = MC13XXX_USE_TOUCHSCREEN | MC13XXX_USE_RTC, | 348 | .flags = MC13XXX_USE_TOUCHSCREEN | MC13XXX_USE_RTC | |
| 349 | MC13XXX_USE_CODEC, | ||
| 350 | .codec = &mx27_3ds_codec, | ||
| 351 | }; | ||
| 352 | |||
| 353 | static struct imx_ssi_platform_data mx27_3ds_ssi_pdata = { | ||
| 354 | .flags = IMX_SSI_DMA | IMX_SSI_NET, | ||
| 339 | }; | 355 | }; |
| 340 | 356 | ||
| 341 | /* SPI */ | 357 | /* SPI */ |
| @@ -512,6 +528,9 @@ static void __init mx27pdk_init(void) | |||
| 512 | } | 528 | } |
| 513 | 529 | ||
| 514 | imx27_add_mx2_camera(&mx27_3ds_cam_pdata); | 530 | imx27_add_mx2_camera(&mx27_3ds_cam_pdata); |
| 531 | imx27_add_imx_ssi(0, &mx27_3ds_ssi_pdata); | ||
| 532 | |||
| 533 | imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0); | ||
| 515 | } | 534 | } |
| 516 | 535 | ||
| 517 | static void __init mx27pdk_timer_init(void) | 536 | static void __init mx27pdk_timer_init(void) |
diff --git a/arch/arm/mach-ks8695/Kconfig b/arch/arm/mach-ks8695/Kconfig index f5c39a8c2b00..a545976bdbd6 100644 --- a/arch/arm/mach-ks8695/Kconfig +++ b/arch/arm/mach-ks8695/Kconfig | |||
| @@ -21,6 +21,67 @@ config MACH_ACS5K | |||
| 21 | say 'Y' here if you want your kernel to run on the Brivo | 21 | say 'Y' here if you want your kernel to run on the Brivo |
| 22 | Systems LLC, ACS-5000 Master board. | 22 | Systems LLC, ACS-5000 Master board. |
| 23 | 23 | ||
| 24 | config MACH_LITE300 | ||
| 25 | bool "SecureComputing SG300" | ||
| 26 | help | ||
| 27 | Say 'Y' here if you want your kernel to support the | ||
| 28 | SecureComputing / SnapGear SG300 VPN Internet Router. | ||
| 29 | See http://www.securecomputing.com for more details. | ||
| 30 | |||
| 31 | config MACH_SG310 | ||
| 32 | bool "McAfee SG310" | ||
| 33 | help | ||
| 34 | Say 'Y' here if you want your kernel to support the | ||
| 35 | McAfee / SnapGear SG310 VPN Internet Router. | ||
| 36 | See http://www.mcafee.com for more details. | ||
| 37 | |||
| 38 | config MACH_SE4200 | ||
| 39 | bool "SecureComputing SE4200" | ||
| 40 | help | ||
| 41 | Say 'Y' here if you want your kernel to support the | ||
| 42 | SecureComputing / SnapGear SE4200 Secure Wireless VPN | ||
| 43 | Internet Router. | ||
| 44 | See http://www.securecomputing.com for more details. | ||
| 45 | |||
| 46 | config MACH_CM4002 | ||
| 47 | bool "OpenGear CM4002" | ||
| 48 | help | ||
| 49 | Say 'Y' here if you want your kernel to support the OpenGear | ||
| 50 | CM4002 Secure Access Server. See http://www.opengear.com for | ||
| 51 | more details. | ||
| 52 | |||
| 53 | config MACH_CM4008 | ||
| 54 | bool "OpenGear CM4008" | ||
| 55 | select MIGHT_HAVE_PCI | ||
| 56 | help | ||
| 57 | Say 'Y' here if you want your kernel to support the OpenGear | ||
| 58 | CM4008 Console Server. See http://www.opengear.com for more | ||
| 59 | details. | ||
| 60 | |||
| 61 | config MACH_CM41xx | ||
| 62 | bool "OpenGear CM41xx" | ||
| 63 | select MIGHT_HAVE_PCI | ||
| 64 | help | ||
| 65 | Say 'Y' here if you want your kernel to support the OpenGear | ||
| 66 | CM4016 or CM4048 Console Servers. See http://www.opengear.com for | ||
| 67 | more details. | ||
| 68 | |||
| 69 | config MACH_IM4004 | ||
| 70 | bool "OpenGear IM4004" | ||
| 71 | select MIGHT_HAVE_PCI | ||
| 72 | help | ||
| 73 | Say 'Y' here if you want your kernel to support the OpenGear | ||
| 74 | IM4004 Secure Access Server. See http://www.opengear.com for | ||
| 75 | more details. | ||
| 76 | |||
| 77 | config MACH_IM42xx | ||
| 78 | bool "OpenGear IM42xx" | ||
| 79 | select MIGHT_HAVE_PCI | ||
| 80 | help | ||
| 81 | Say 'Y' here if you want your kernel to support the OpenGear | ||
| 82 | IM4216 or IM4248 Console Servers. See http://www.opengear.com for | ||
| 83 | more details. | ||
| 84 | |||
| 24 | endmenu | 85 | endmenu |
| 25 | 86 | ||
| 26 | endif | 87 | endif |
diff --git a/arch/arm/mach-ks8695/Makefile b/arch/arm/mach-ks8695/Makefile index 9324ef965c26..e370caf0c91b 100644 --- a/arch/arm/mach-ks8695/Makefile +++ b/arch/arm/mach-ks8695/Makefile | |||
| @@ -15,3 +15,11 @@ obj-$(CONFIG_PCI) += pci.o | |||
| 15 | obj-$(CONFIG_MACH_KS8695) += board-micrel.o | 15 | obj-$(CONFIG_MACH_KS8695) += board-micrel.o |
| 16 | obj-$(CONFIG_MACH_DSM320) += board-dsm320.o | 16 | obj-$(CONFIG_MACH_DSM320) += board-dsm320.o |
| 17 | obj-$(CONFIG_MACH_ACS5K) += board-acs5k.o | 17 | obj-$(CONFIG_MACH_ACS5K) += board-acs5k.o |
| 18 | obj-$(CONFIG_MACH_LITE300) += board-sg.o | ||
| 19 | obj-$(CONFIG_MACH_SG310) += board-sg.o | ||
| 20 | obj-$(CONFIG_MACH_SE4200) += board-sg.o | ||
| 21 | obj-$(CONFIG_MACH_CM4002) += board-og.o | ||
| 22 | obj-$(CONFIG_MACH_CM4008) += board-og.o | ||
| 23 | obj-$(CONFIG_MACH_CM41xx) += board-og.o | ||
| 24 | obj-$(CONFIG_MACH_IM4004) += board-og.o | ||
| 25 | obj-$(CONFIG_MACH_IM42xx) += board-og.o | ||
diff --git a/arch/arm/mach-ks8695/board-og.c b/arch/arm/mach-ks8695/board-og.c new file mode 100644 index 000000000000..1623ba461e47 --- /dev/null +++ b/arch/arm/mach-ks8695/board-og.c | |||
| @@ -0,0 +1,199 @@ | |||
| 1 | /* | ||
| 2 | * board-og.c -- support for the OpenGear KS8695 based boards. | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License version 2 as | ||
| 6 | * published by the Free Software Foundation. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #include <linux/kernel.h> | ||
| 10 | #include <linux/types.h> | ||
| 11 | #include <linux/interrupt.h> | ||
| 12 | #include <linux/init.h> | ||
| 13 | #include <linux/delay.h> | ||
| 14 | #include <linux/platform_device.h> | ||
| 15 | #include <linux/serial_8250.h> | ||
| 16 | #include <linux/gpio.h> | ||
| 17 | #include <linux/irq.h> | ||
| 18 | #include <asm/mach-types.h> | ||
| 19 | #include <asm/mach/arch.h> | ||
| 20 | #include <asm/mach/map.h> | ||
| 21 | #include <mach/devices.h> | ||
| 22 | #include <mach/regs-gpio.h> | ||
| 23 | #include <mach/gpio-ks8695.h> | ||
| 24 | #include "generic.h" | ||
| 25 | |||
| 26 | static int og_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | ||
| 27 | { | ||
| 28 | if (machine_is_im4004() && (slot == 8)) | ||
| 29 | return KS8695_IRQ_EXTERN1; | ||
| 30 | return KS8695_IRQ_EXTERN0; | ||
| 31 | } | ||
| 32 | |||
| 33 | static struct ks8695_pci_cfg __initdata og_pci = { | ||
| 34 | .mode = KS8695_MODE_PCI, | ||
| 35 | .map_irq = og_pci_map_irq, | ||
| 36 | }; | ||
| 37 | |||
| 38 | static void __init og_register_pci(void) | ||
| 39 | { | ||
| 40 | /* Initialize the GPIO lines for interrupt mode */ | ||
| 41 | ks8695_gpio_interrupt(KS8695_GPIO_0, IRQ_TYPE_LEVEL_LOW); | ||
| 42 | |||
| 43 | /* Cardbus Slot */ | ||
| 44 | if (machine_is_im4004()) | ||
| 45 | ks8695_gpio_interrupt(KS8695_GPIO_1, IRQ_TYPE_LEVEL_LOW); | ||
| 46 | |||
| 47 | ks8695_init_pci(&og_pci); | ||
| 48 | } | ||
| 49 | |||
| 50 | /* | ||
| 51 | * The PCI bus reset is driven by a dedicated GPIO line. Toggle it here | ||
| 52 | * and bring the PCI bus out of reset. | ||
| 53 | */ | ||
| 54 | static void __init og_pci_bus_reset(void) | ||
| 55 | { | ||
| 56 | unsigned int rstline = 1; | ||
| 57 | |||
| 58 | /* Some boards use a different GPIO as the PCI reset line */ | ||
| 59 | if (machine_is_im4004()) | ||
| 60 | rstline = 2; | ||
| 61 | else if (machine_is_im42xx()) | ||
| 62 | rstline = 0; | ||
| 63 | |||
| 64 | gpio_request(rstline, "PCI reset"); | ||
| 65 | gpio_direction_output(rstline, 0); | ||
| 66 | |||
| 67 | /* Drive a reset on the PCI reset line */ | ||
| 68 | gpio_set_value(rstline, 1); | ||
| 69 | gpio_set_value(rstline, 0); | ||
| 70 | mdelay(100); | ||
| 71 | gpio_set_value(rstline, 1); | ||
| 72 | mdelay(100); | ||
| 73 | } | ||
| 74 | |||
| 75 | /* | ||
| 76 | * Direct connect serial ports (non-PCI that is). | ||
| 77 | */ | ||
| 78 | #define S8250_PHYS 0x03800000 | ||
| 79 | #define S8250_VIRT 0xf4000000 | ||
| 80 | #define S8250_SIZE 0x00100000 | ||
| 81 | |||
| 82 | static struct __initdata map_desc og_io_desc[] = { | ||
| 83 | { | ||
| 84 | .virtual = S8250_VIRT, | ||
| 85 | .pfn = __phys_to_pfn(S8250_PHYS), | ||
| 86 | .length = S8250_SIZE, | ||
| 87 | .type = MT_DEVICE, | ||
| 88 | } | ||
| 89 | }; | ||
| 90 | |||
| 91 | static struct resource og_uart_resources[] = { | ||
| 92 | { | ||
| 93 | .start = S8250_VIRT, | ||
| 94 | .end = S8250_VIRT + S8250_SIZE, | ||
| 95 | .flags = IORESOURCE_MEM | ||
| 96 | }, | ||
| 97 | }; | ||
| 98 | |||
| 99 | static struct plat_serial8250_port og_uart_data[] = { | ||
| 100 | { | ||
| 101 | .mapbase = S8250_VIRT, | ||
| 102 | .membase = (char *) S8250_VIRT, | ||
| 103 | .irq = 3, | ||
| 104 | .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, | ||
| 105 | .iotype = UPIO_MEM, | ||
| 106 | .regshift = 2, | ||
| 107 | .uartclk = 115200 * 16, | ||
| 108 | }, | ||
| 109 | { }, | ||
| 110 | }; | ||
| 111 | |||
| 112 | static struct platform_device og_uart = { | ||
| 113 | .name = "serial8250", | ||
| 114 | .id = 0, | ||
| 115 | .dev.platform_data = og_uart_data, | ||
| 116 | .num_resources = 1, | ||
| 117 | .resource = og_uart_resources | ||
| 118 | }; | ||
| 119 | |||
| 120 | static struct platform_device *og_devices[] __initdata = { | ||
| 121 | &og_uart | ||
| 122 | }; | ||
| 123 | |||
| 124 | static void __init og_init(void) | ||
| 125 | { | ||
| 126 | ks8695_register_gpios(); | ||
| 127 | |||
| 128 | if (machine_is_cm4002()) { | ||
| 129 | ks8695_gpio_interrupt(KS8695_GPIO_1, IRQ_TYPE_LEVEL_HIGH); | ||
| 130 | iotable_init(og_io_desc, ARRAY_SIZE(og_io_desc)); | ||
| 131 | platform_add_devices(og_devices, ARRAY_SIZE(og_devices)); | ||
| 132 | } else { | ||
| 133 | og_pci_bus_reset(); | ||
| 134 | og_register_pci(); | ||
| 135 | } | ||
| 136 | |||
| 137 | ks8695_add_device_lan(); | ||
| 138 | ks8695_add_device_wan(); | ||
| 139 | } | ||
| 140 | |||
| 141 | #ifdef CONFIG_MACH_CM4002 | ||
| 142 | MACHINE_START(CM4002, "OpenGear/CM4002") | ||
| 143 | /* OpenGear Inc. */ | ||
| 144 | .atag_offset = 0x100, | ||
| 145 | .map_io = ks8695_map_io, | ||
| 146 | .init_irq = ks8695_init_irq, | ||
| 147 | .init_machine = og_init, | ||
| 148 | .timer = &ks8695_timer, | ||
| 149 | .restart = ks8695_restart, | ||
| 150 | MACHINE_END | ||
| 151 | #endif | ||
| 152 | |||
| 153 | #ifdef CONFIG_MACH_CM4008 | ||
| 154 | MACHINE_START(CM4008, "OpenGear/CM4008") | ||
| 155 | /* OpenGear Inc. */ | ||
| 156 | .atag_offset = 0x100, | ||
| 157 | .map_io = ks8695_map_io, | ||
| 158 | .init_irq = ks8695_init_irq, | ||
| 159 | .init_machine = og_init, | ||
| 160 | .timer = &ks8695_timer, | ||
| 161 | .restart = ks8695_restart, | ||
| 162 | MACHINE_END | ||
| 163 | #endif | ||
| 164 | |||
| 165 | #ifdef CONFIG_MACH_CM41xx | ||
| 166 | MACHINE_START(CM41XX, "OpenGear/CM41xx") | ||
| 167 | /* OpenGear Inc. */ | ||
| 168 | .atag_offset = 0x100, | ||
| 169 | .map_io = ks8695_map_io, | ||
| 170 | .init_irq = ks8695_init_irq, | ||
| 171 | .init_machine = og_init, | ||
| 172 | .timer = &ks8695_timer, | ||
| 173 | .restart = ks8695_restart, | ||
| 174 | MACHINE_END | ||
| 175 | #endif | ||
| 176 | |||
| 177 | #ifdef CONFIG_MACH_IM4004 | ||
| 178 | MACHINE_START(IM4004, "OpenGear/IM4004") | ||
| 179 | /* OpenGear Inc. */ | ||
| 180 | .atag_offset = 0x100, | ||
| 181 | .map_io = ks8695_map_io, | ||
| 182 | .init_irq = ks8695_init_irq, | ||
| 183 | .init_machine = og_init, | ||
| 184 | .timer = &ks8695_timer, | ||
| 185 | .restart = ks8695_restart, | ||
| 186 | MACHINE_END | ||
| 187 | #endif | ||
| 188 | |||
| 189 | #ifdef CONFIG_MACH_IM42xx | ||
| 190 | MACHINE_START(IM42XX, "OpenGear/IM42xx") | ||
| 191 | /* OpenGear Inc. */ | ||
| 192 | .atag_offset = 0x100, | ||
| 193 | .map_io = ks8695_map_io, | ||
| 194 | .init_irq = ks8695_init_irq, | ||
| 195 | .init_machine = og_init, | ||
| 196 | .timer = &ks8695_timer, | ||
| 197 | .restart = ks8695_restart, | ||
| 198 | MACHINE_END | ||
| 199 | #endif | ||
diff --git a/arch/arm/mach-ks8695/board-sg.c b/arch/arm/mach-ks8695/board-sg.c new file mode 100644 index 000000000000..f35b98b5bf37 --- /dev/null +++ b/arch/arm/mach-ks8695/board-sg.c | |||
| @@ -0,0 +1,121 @@ | |||
| 1 | /* | ||
| 2 | * board-sg.c -- support for the SnapGear KS8695 based boards | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License version 2 as | ||
| 6 | * published by the Free Software Foundation. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #include <linux/kernel.h> | ||
| 10 | #include <linux/types.h> | ||
| 11 | #include <linux/init.h> | ||
| 12 | #include <linux/platform_device.h> | ||
| 13 | #include <linux/mtd/mtd.h> | ||
| 14 | #include <linux/mtd/map.h> | ||
| 15 | #include <linux/mtd/physmap.h> | ||
| 16 | #include <linux/mtd/partitions.h> | ||
| 17 | #include <asm/mach-types.h> | ||
| 18 | #include <asm/mach/arch.h> | ||
| 19 | #include <mach/devices.h> | ||
| 20 | #include "generic.h" | ||
| 21 | |||
| 22 | /* | ||
| 23 | * The SG310 machine type is fitted with a conventional 8MB Strataflash | ||
| 24 | * device. Define its partitioning. | ||
| 25 | */ | ||
| 26 | #define FL_BASE 0x02000000 | ||
| 27 | #define FL_SIZE SZ_8M | ||
| 28 | |||
| 29 | static struct mtd_partition sg_mtd_partitions[] = { | ||
| 30 | [0] = { | ||
| 31 | .name = "SnapGear Boot Loader", | ||
| 32 | .size = SZ_128K, | ||
| 33 | }, | ||
| 34 | [1] = { | ||
| 35 | .name = "SnapGear non-volatile configuration", | ||
| 36 | .size = SZ_512K, | ||
| 37 | .offset = SZ_256K, | ||
| 38 | }, | ||
| 39 | [2] = { | ||
| 40 | .name = "SnapGear image", | ||
| 41 | .offset = SZ_512K + SZ_256K, | ||
| 42 | }, | ||
| 43 | [3] = { | ||
| 44 | .name = "SnapGear StrataFlash", | ||
| 45 | }, | ||
| 46 | [4] = { | ||
| 47 | .name = "SnapGear Boot Tags", | ||
| 48 | .size = SZ_128K, | ||
| 49 | .offset = SZ_128K, | ||
| 50 | }, | ||
| 51 | }; | ||
| 52 | |||
| 53 | static struct physmap_flash_data sg_mtd_pdata = { | ||
| 54 | .width = 1, | ||
| 55 | .nr_parts = ARRAY_SIZE(sg_mtd_partitions), | ||
| 56 | .parts = sg_mtd_partitions, | ||
| 57 | }; | ||
| 58 | |||
| 59 | |||
| 60 | static struct resource sg_mtd_resource[] = { | ||
| 61 | [0] = { | ||
| 62 | .start = FL_BASE, | ||
| 63 | .end = FL_BASE + FL_SIZE - 1, | ||
| 64 | .flags = IORESOURCE_MEM, | ||
| 65 | }, | ||
| 66 | }; | ||
| 67 | |||
| 68 | static struct platform_device sg_mtd_device = { | ||
| 69 | .name = "physmap-flash", | ||
| 70 | .id = 0, | ||
| 71 | .num_resources = ARRAY_SIZE(sg_mtd_resource), | ||
| 72 | .resource = sg_mtd_resource, | ||
| 73 | .dev = { | ||
| 74 | .platform_data = &sg_mtd_pdata, | ||
| 75 | }, | ||
| 76 | }; | ||
| 77 | |||
| 78 | static void __init sg_init(void) | ||
| 79 | { | ||
| 80 | ks8695_add_device_lan(); | ||
| 81 | ks8695_add_device_wan(); | ||
| 82 | |||
| 83 | if (machine_is_sg310()) | ||
| 84 | platform_device_register(&sg_mtd_device); | ||
| 85 | } | ||
| 86 | |||
| 87 | #ifdef CONFIG_MACH_LITE300 | ||
| 88 | MACHINE_START(LITE300, "SecureComputing/SG300") | ||
| 89 | /* SnapGear */ | ||
| 90 | .atag_offset = 0x100, | ||
| 91 | .map_io = ks8695_map_io, | ||
| 92 | .init_irq = ks8695_init_irq, | ||
| 93 | .init_machine = sg_init, | ||
| 94 | .timer = &ks8695_timer, | ||
| 95 | .restart = ks8695_restart, | ||
| 96 | MACHINE_END | ||
| 97 | #endif | ||
| 98 | |||
| 99 | #ifdef CONFIG_MACH_SG310 | ||
| 100 | MACHINE_START(SG310, "McAfee/SG310") | ||
| 101 | /* SnapGear */ | ||
| 102 | .atag_offset = 0x100, | ||
| 103 | .map_io = ks8695_map_io, | ||
| 104 | .init_irq = ks8695_init_irq, | ||
| 105 | .init_machine = sg_init, | ||
| 106 | .timer = &ks8695_timer, | ||
| 107 | .restart = ks8695_restart, | ||
| 108 | MACHINE_END | ||
| 109 | #endif | ||
| 110 | |||
| 111 | #ifdef CONFIG_MACH_SE4200 | ||
| 112 | MACHINE_START(SE4200, "SecureComputing/SE4200") | ||
| 113 | /* SnapGear */ | ||
| 114 | .atag_offset = 0x100, | ||
| 115 | .map_io = ks8695_map_io, | ||
| 116 | .init_irq = ks8695_init_irq, | ||
| 117 | .init_machine = sg_init, | ||
| 118 | .timer = &ks8695_timer, | ||
| 119 | .restart = ks8695_restart, | ||
| 120 | MACHINE_END | ||
| 121 | #endif | ||
diff --git a/arch/arm/mach-mmp/include/mach/debug-macro.S b/arch/arm/mach-mmp/include/mach/debug-macro.S index b6f14d203c25..5c3cc29688ab 100644 --- a/arch/arm/mach-mmp/include/mach/debug-macro.S +++ b/arch/arm/mach-mmp/include/mach/debug-macro.S | |||
| @@ -9,13 +9,21 @@ | |||
| 9 | * published by the Free Software Foundation. | 9 | * published by the Free Software Foundation. |
| 10 | */ | 10 | */ |
| 11 | 11 | ||
| 12 | #if defined(CONFIG_DEBUG_MMP_UART2) | ||
| 13 | #define MMP_UART_OFFSET 0x00017000 | ||
| 14 | #elif defined(CONFIG_DEBUG_MMP_UART3) | ||
| 15 | #define MMP_UART_OFFSET 0x00018000 | ||
| 16 | #else | ||
| 17 | #error "Select uart for DEBUG_LL" | ||
| 18 | #endif | ||
| 19 | |||
| 12 | #include <mach/addr-map.h> | 20 | #include <mach/addr-map.h> |
| 13 | 21 | ||
| 14 | .macro addruart, rp, rv, tmp | 22 | .macro addruart, rp, rv, tmp |
| 15 | ldr \rp, =APB_PHYS_BASE @ physical | 23 | ldr \rp, =APB_PHYS_BASE @ physical |
| 16 | ldr \rv, =APB_VIRT_BASE @ virtual | 24 | ldr \rv, =APB_VIRT_BASE @ virtual |
| 17 | orr \rp, \rp, #0x00017000 | 25 | orr \rp, \rp, #MMP_UART_OFFSET |
| 18 | orr \rv, \rv, #0x00017000 | 26 | orr \rv, \rv, #MMP_UART_OFFSET |
| 19 | .endm | 27 | .endm |
| 20 | 28 | ||
| 21 | #define UART_SHIFT 2 | 29 | #define UART_SHIFT 2 |
diff --git a/arch/arm/mach-mmp/ttc_dkb.c b/arch/arm/mach-mmp/ttc_dkb.c index 7a7de2b12a62..ce55fd8821c4 100644 --- a/arch/arm/mach-mmp/ttc_dkb.c +++ b/arch/arm/mach-mmp/ttc_dkb.c | |||
| @@ -177,12 +177,22 @@ static struct mv_usb_platform_data ttc_usb_pdata = { | |||
| 177 | #endif | 177 | #endif |
| 178 | #endif | 178 | #endif |
| 179 | 179 | ||
| 180 | #ifdef CONFIG_MTD_NAND_PXA3xx | ||
| 181 | static struct pxa3xx_nand_platform_data dkb_nand_info = { | ||
| 182 | .enable_arbiter = 1, | ||
| 183 | .num_cs = 1, | ||
| 184 | }; | ||
| 185 | #endif | ||
| 186 | |||
| 180 | static void __init ttc_dkb_init(void) | 187 | static void __init ttc_dkb_init(void) |
| 181 | { | 188 | { |
| 182 | mfp_config(ARRAY_AND_SIZE(ttc_dkb_pin_config)); | 189 | mfp_config(ARRAY_AND_SIZE(ttc_dkb_pin_config)); |
| 183 | 190 | ||
| 184 | /* on-chip devices */ | 191 | /* on-chip devices */ |
| 185 | pxa910_add_uart(1); | 192 | pxa910_add_uart(1); |
| 193 | #ifdef CONFIG_MTD_NAND_PXA3xx | ||
| 194 | pxa910_add_nand(&dkb_nand_info); | ||
| 195 | #endif | ||
| 186 | 196 | ||
| 187 | /* off-chip devices */ | 197 | /* off-chip devices */ |
| 188 | pxa910_add_twsi(0, NULL, ARRAY_AND_SIZE(ttc_dkb_i2c_info)); | 198 | pxa910_add_twsi(0, NULL, ARRAY_AND_SIZE(ttc_dkb_i2c_info)); |
diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig index b2740c800e8c..7902de151cc5 100644 --- a/arch/arm/mach-msm/Kconfig +++ b/arch/arm/mach-msm/Kconfig | |||
| @@ -1,8 +1,12 @@ | |||
| 1 | if ARCH_MSM | 1 | if ARCH_MSM |
| 2 | 2 | ||
| 3 | comment "Qualcomm MSM SoC Type" | ||
| 4 | depends on (ARCH_MSM8X60 || ARCH_MSM8960) | ||
| 5 | |||
| 3 | choice | 6 | choice |
| 4 | prompt "Qualcomm MSM SoC Type" | 7 | prompt "Qualcomm MSM SoC Type" |
| 5 | default ARCH_MSM7X00A | 8 | default ARCH_MSM7X00A |
| 9 | depends on !(ARCH_MSM8X60 || ARCH_MSM8960) | ||
| 6 | 10 | ||
| 7 | config ARCH_MSM7X00A | 11 | config ARCH_MSM7X00A |
| 8 | bool "MSM7x00A / MSM7x01A" | 12 | bool "MSM7x00A / MSM7x01A" |
| @@ -36,6 +40,8 @@ config ARCH_QSD8X50 | |||
| 36 | select GPIO_MSM_V1 | 40 | select GPIO_MSM_V1 |
| 37 | select MSM_PROC_COMM | 41 | select MSM_PROC_COMM |
| 38 | 42 | ||
| 43 | endchoice | ||
| 44 | |||
| 39 | config ARCH_MSM8X60 | 45 | config ARCH_MSM8X60 |
| 40 | bool "MSM8X60" | 46 | bool "MSM8X60" |
| 41 | select ARCH_MSM_SCORPIONMP | 47 | select ARCH_MSM_SCORPIONMP |
| @@ -57,8 +63,6 @@ config ARCH_MSM8960 | |||
| 57 | select MSM_SCM if SMP | 63 | select MSM_SCM if SMP |
| 58 | select USE_OF | 64 | select USE_OF |
| 59 | 65 | ||
| 60 | endchoice | ||
| 61 | |||
| 62 | config MSM_HAS_DEBUG_UART_HS | 66 | config MSM_HAS_DEBUG_UART_HS |
| 63 | bool | 67 | bool |
| 64 | 68 | ||
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h b/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h index c6d38f1d0c98..199372e62def 100644 --- a/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h +++ b/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h | |||
| @@ -41,21 +41,10 @@ | |||
| 41 | #define MSM8X60_QGIC_CPU_PHYS 0x02081000 | 41 | #define MSM8X60_QGIC_CPU_PHYS 0x02081000 |
| 42 | #define MSM8X60_QGIC_CPU_SIZE SZ_4K | 42 | #define MSM8X60_QGIC_CPU_SIZE SZ_4K |
| 43 | 43 | ||
| 44 | #define MSM_ACC_BASE IOMEM(0xF0002000) | ||
| 45 | #define MSM_ACC_PHYS 0x02001000 | ||
| 46 | #define MSM_ACC_SIZE SZ_4K | ||
| 47 | |||
| 48 | #define MSM_GCC_BASE IOMEM(0xF0003000) | ||
| 49 | #define MSM_GCC_PHYS 0x02082000 | ||
| 50 | #define MSM_GCC_SIZE SZ_4K | ||
| 51 | |||
| 52 | #define MSM_TLMM_BASE IOMEM(0xF0004000) | 44 | #define MSM_TLMM_BASE IOMEM(0xF0004000) |
| 53 | #define MSM_TLMM_PHYS 0x00800000 | 45 | #define MSM_TLMM_PHYS 0x00800000 |
| 54 | #define MSM_TLMM_SIZE SZ_16K | 46 | #define MSM_TLMM_SIZE SZ_16K |
| 55 | 47 | ||
| 56 | #define MSM_SHARED_RAM_BASE IOMEM(0xF0100000) | ||
| 57 | #define MSM_SHARED_RAM_SIZE SZ_1M | ||
| 58 | |||
| 59 | #define MSM8X60_TMR_PHYS 0x02000000 | 48 | #define MSM8X60_TMR_PHYS 0x02000000 |
| 60 | #define MSM8X60_TMR_SIZE SZ_4K | 49 | #define MSM8X60_TMR_SIZE SZ_4K |
| 61 | 50 | ||
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap.h b/arch/arm/mach-msm/include/mach/msm_iomap.h index 00afdfb8c38f..2ab7cf0919b3 100644 --- a/arch/arm/mach-msm/include/mach/msm_iomap.h +++ b/arch/arm/mach-msm/include/mach/msm_iomap.h | |||
| @@ -41,12 +41,11 @@ | |||
| 41 | #include "msm_iomap-7x30.h" | 41 | #include "msm_iomap-7x30.h" |
| 42 | #elif defined(CONFIG_ARCH_QSD8X50) | 42 | #elif defined(CONFIG_ARCH_QSD8X50) |
| 43 | #include "msm_iomap-8x50.h" | 43 | #include "msm_iomap-8x50.h" |
| 44 | #elif defined(CONFIG_ARCH_MSM8X60) | ||
| 45 | #include "msm_iomap-8x60.h" | ||
| 46 | #else | 44 | #else |
| 47 | #include "msm_iomap-7x00.h" | 45 | #include "msm_iomap-7x00.h" |
| 48 | #endif | 46 | #endif |
| 49 | 47 | ||
| 48 | #include "msm_iomap-8x60.h" | ||
| 50 | #include "msm_iomap-8960.h" | 49 | #include "msm_iomap-8960.h" |
| 51 | 50 | ||
| 52 | #define MSM_DEBUG_UART_SIZE SZ_4K | 51 | #define MSM_DEBUG_UART_SIZE SZ_4K |
diff --git a/arch/arm/mach-msm/io.c b/arch/arm/mach-msm/io.c index 3854f6f20ce2..123ef9cbce1b 100644 --- a/arch/arm/mach-msm/io.c +++ b/arch/arm/mach-msm/io.c | |||
| @@ -111,8 +111,6 @@ static struct map_desc msm8x60_io_desc[] __initdata = { | |||
| 111 | MSM_CHIP_DEVICE(QGIC_CPU, MSM8X60), | 111 | MSM_CHIP_DEVICE(QGIC_CPU, MSM8X60), |
| 112 | MSM_CHIP_DEVICE(TMR, MSM8X60), | 112 | MSM_CHIP_DEVICE(TMR, MSM8X60), |
| 113 | MSM_CHIP_DEVICE(TMR0, MSM8X60), | 113 | MSM_CHIP_DEVICE(TMR0, MSM8X60), |
| 114 | MSM_DEVICE(ACC), | ||
| 115 | MSM_DEVICE(GCC), | ||
| 116 | #ifdef CONFIG_DEBUG_MSM8660_UART | 114 | #ifdef CONFIG_DEBUG_MSM8660_UART |
| 117 | MSM_DEVICE(DEBUG_UART), | 115 | MSM_DEVICE(DEBUG_UART), |
| 118 | #endif | 116 | #endif |
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410-module.c b/arch/arm/mach-s3c64xx/mach-crag6410-module.c index 9e382e7c77cb..7f4f9ebee25d 100644 --- a/arch/arm/mach-s3c64xx/mach-crag6410-module.c +++ b/arch/arm/mach-s3c64xx/mach-crag6410-module.c | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include <linux/mfd/wm831x/irq.h> | 16 | #include <linux/mfd/wm831x/irq.h> |
| 17 | #include <linux/mfd/wm831x/gpio.h> | 17 | #include <linux/mfd/wm831x/gpio.h> |
| 18 | #include <linux/mfd/wm8994/pdata.h> | 18 | #include <linux/mfd/wm8994/pdata.h> |
| 19 | #include <linux/mfd/arizona/pdata.h> | ||
| 19 | 20 | ||
| 20 | #include <linux/regulator/machine.h> | 21 | #include <linux/regulator/machine.h> |
| 21 | 22 | ||
| @@ -181,9 +182,33 @@ static const struct i2c_board_info wm1277_devs[] = { | |||
| 181 | }, | 182 | }, |
| 182 | }; | 183 | }; |
| 183 | 184 | ||
| 184 | static const struct i2c_board_info wm5102_devs[] = { | 185 | static struct arizona_pdata wm5102_pdata = { |
| 185 | { I2C_BOARD_INFO("wm5102", 0x1a), | 186 | .ldoena = S3C64XX_GPN(7), |
| 186 | .irq = GLENFARCLAS_PMIC_IRQ_BASE + WM831X_IRQ_GPIO_2, }, | 187 | .gpio_base = CODEC_GPIO_BASE, |
| 188 | .irq_active_high = true, | ||
| 189 | .micd_pol_gpio = CODEC_GPIO_BASE + 4, | ||
| 190 | .gpio_defaults = { | ||
| 191 | [2] = 0x10000, /* AIF3TXLRCLK */ | ||
| 192 | [3] = 0x4, /* OPCLK */ | ||
| 193 | }, | ||
| 194 | }; | ||
| 195 | |||
| 196 | static struct s3c64xx_spi_csinfo wm5102_spi_csinfo = { | ||
| 197 | .line = S3C64XX_GPN(5), | ||
| 198 | }; | ||
| 199 | |||
| 200 | static struct spi_board_info wm5102_spi_devs[] = { | ||
| 201 | [0] = { | ||
| 202 | .modalias = "wm5102", | ||
| 203 | .max_speed_hz = 10 * 1000 * 1000, | ||
| 204 | .bus_num = 0, | ||
| 205 | .chip_select = 0, | ||
| 206 | .mode = SPI_MODE_0, | ||
| 207 | .irq = GLENFARCLAS_PMIC_IRQ_BASE + | ||
| 208 | WM831X_IRQ_GPIO_2, | ||
| 209 | .controller_data = &wm5102_spi_csinfo, | ||
| 210 | .platform_data = &wm5102_pdata, | ||
| 211 | }, | ||
| 187 | }; | 212 | }; |
| 188 | 213 | ||
| 189 | static const struct i2c_board_info wm6230_i2c_devs[] = { | 214 | static const struct i2c_board_info wm6230_i2c_devs[] = { |
| @@ -223,8 +248,9 @@ static __devinitdata const struct { | |||
| 223 | { .id = 0x3c, .name = "1273-EV1 Longmorn" }, | 248 | { .id = 0x3c, .name = "1273-EV1 Longmorn" }, |
| 224 | { .id = 0x3d, .name = "1277-EV1 Littlemill", | 249 | { .id = 0x3d, .name = "1277-EV1 Littlemill", |
| 225 | .i2c_devs = wm1277_devs, .num_i2c_devs = ARRAY_SIZE(wm1277_devs) }, | 250 | .i2c_devs = wm1277_devs, .num_i2c_devs = ARRAY_SIZE(wm1277_devs) }, |
| 226 | { .id = 0x3e, .name = "WM5102-6271-EV1-CS127", | 251 | { .id = 0x3e, .name = "WM5102-6271-EV1-CS127 Amrut", |
| 227 | .i2c_devs = wm5102_devs, .num_i2c_devs = ARRAY_SIZE(wm5102_devs) }, | 252 | .spi_devs = wm5102_spi_devs, |
| 253 | .num_spi_devs = ARRAY_SIZE(wm5102_spi_devs) }, | ||
| 228 | }; | 254 | }; |
| 229 | 255 | ||
| 230 | static __devinit int wlf_gf_module_probe(struct i2c_client *i2c, | 256 | static __devinit int wlf_gf_module_probe(struct i2c_client *i2c, |
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c index 09cd81207a3f..a095f7f6009d 100644 --- a/arch/arm/mach-s3c64xx/mach-crag6410.c +++ b/arch/arm/mach-s3c64xx/mach-crag6410.c | |||
| @@ -287,6 +287,16 @@ static struct platform_device littlemill_device = { | |||
| 287 | .id = -1, | 287 | .id = -1, |
| 288 | }; | 288 | }; |
| 289 | 289 | ||
| 290 | static struct platform_device bells_wm5102_device = { | ||
| 291 | .name = "bells", | ||
| 292 | .id = 0, | ||
| 293 | }; | ||
| 294 | |||
| 295 | static struct platform_device bells_wm5110_device = { | ||
| 296 | .name = "bells", | ||
| 297 | .id = 1, | ||
| 298 | }; | ||
| 299 | |||
| 290 | static struct regulator_consumer_supply wallvdd_consumers[] = { | 300 | static struct regulator_consumer_supply wallvdd_consumers[] = { |
| 291 | REGULATOR_SUPPLY("SPKVDD", "1-001a"), | 301 | REGULATOR_SUPPLY("SPKVDD", "1-001a"), |
| 292 | REGULATOR_SUPPLY("SPKVDD1", "1-001a"), | 302 | REGULATOR_SUPPLY("SPKVDD1", "1-001a"), |
| @@ -359,6 +369,8 @@ static struct platform_device *crag6410_devices[] __initdata = { | |||
| 359 | &tobermory_device, | 369 | &tobermory_device, |
| 360 | &littlemill_device, | 370 | &littlemill_device, |
| 361 | &lowland_device, | 371 | &lowland_device, |
| 372 | &bells_wm5102_device, | ||
| 373 | &bells_wm5110_device, | ||
| 362 | &wallvdd_device, | 374 | &wallvdd_device, |
| 363 | }; | 375 | }; |
| 364 | 376 | ||
diff --git a/arch/arm/mach-shmobile/board-armadillo800eva.c b/arch/arm/mach-shmobile/board-armadillo800eva.c index 45b33e02dff5..9615a78d30b2 100644 --- a/arch/arm/mach-shmobile/board-armadillo800eva.c +++ b/arch/arm/mach-shmobile/board-armadillo800eva.c | |||
| @@ -37,6 +37,7 @@ | |||
| 37 | #include <linux/mmc/host.h> | 37 | #include <linux/mmc/host.h> |
| 38 | #include <linux/mmc/sh_mmcif.h> | 38 | #include <linux/mmc/sh_mmcif.h> |
| 39 | #include <linux/mmc/sh_mobile_sdhi.h> | 39 | #include <linux/mmc/sh_mobile_sdhi.h> |
| 40 | #include <linux/i2c-gpio.h> | ||
| 40 | #include <mach/common.h> | 41 | #include <mach/common.h> |
| 41 | #include <mach/irqs.h> | 42 | #include <mach/irqs.h> |
| 42 | #include <mach/r8a7740.h> | 43 | #include <mach/r8a7740.h> |
| @@ -877,6 +878,21 @@ static struct platform_device fsi_hdmi_device = { | |||
| 877 | }, | 878 | }, |
| 878 | }; | 879 | }; |
| 879 | 880 | ||
| 881 | /* RTC: RTC connects i2c-gpio. */ | ||
| 882 | static struct i2c_gpio_platform_data i2c_gpio_data = { | ||
| 883 | .sda_pin = GPIO_PORT208, | ||
| 884 | .scl_pin = GPIO_PORT91, | ||
| 885 | .udelay = 5, /* 100 kHz */ | ||
| 886 | }; | ||
| 887 | |||
| 888 | static struct platform_device i2c_gpio_device = { | ||
| 889 | .name = "i2c-gpio", | ||
| 890 | .id = 2, | ||
| 891 | .dev = { | ||
| 892 | .platform_data = &i2c_gpio_data, | ||
| 893 | }, | ||
| 894 | }; | ||
| 895 | |||
| 880 | /* I2C */ | 896 | /* I2C */ |
| 881 | static struct i2c_board_info i2c0_devices[] = { | 897 | static struct i2c_board_info i2c0_devices[] = { |
| 882 | { | 898 | { |
| @@ -888,6 +904,13 @@ static struct i2c_board_info i2c0_devices[] = { | |||
| 888 | }, | 904 | }, |
| 889 | }; | 905 | }; |
| 890 | 906 | ||
| 907 | static struct i2c_board_info i2c2_devices[] = { | ||
| 908 | { | ||
| 909 | I2C_BOARD_INFO("s35390a", 0x30), | ||
| 910 | .type = "s35390a", | ||
| 911 | }, | ||
| 912 | }; | ||
| 913 | |||
| 891 | /* | 914 | /* |
| 892 | * board devices | 915 | * board devices |
| 893 | */ | 916 | */ |
| @@ -904,6 +927,7 @@ static struct platform_device *eva_devices[] __initdata = { | |||
| 904 | &fsi_device, | 927 | &fsi_device, |
| 905 | &fsi_wm8978_device, | 928 | &fsi_wm8978_device, |
| 906 | &fsi_hdmi_device, | 929 | &fsi_hdmi_device, |
| 930 | &i2c_gpio_device, | ||
| 907 | }; | 931 | }; |
| 908 | 932 | ||
| 909 | static void __init eva_clock_init(void) | 933 | static void __init eva_clock_init(void) |
| @@ -1174,6 +1198,7 @@ static void __init eva_init(void) | |||
| 1174 | #endif | 1198 | #endif |
| 1175 | 1199 | ||
| 1176 | i2c_register_board_info(0, i2c0_devices, ARRAY_SIZE(i2c0_devices)); | 1200 | i2c_register_board_info(0, i2c0_devices, ARRAY_SIZE(i2c0_devices)); |
| 1201 | i2c_register_board_info(2, i2c2_devices, ARRAY_SIZE(i2c2_devices)); | ||
| 1177 | 1202 | ||
| 1178 | r8a7740_add_standard_devices(); | 1203 | r8a7740_add_standard_devices(); |
| 1179 | 1204 | ||
diff --git a/arch/arm/mach-shmobile/board-marzen.c b/arch/arm/mach-shmobile/board-marzen.c index fcf5a47f4772..4834bdd849cf 100644 --- a/arch/arm/mach-shmobile/board-marzen.c +++ b/arch/arm/mach-shmobile/board-marzen.c | |||
| @@ -30,6 +30,8 @@ | |||
| 30 | #include <linux/regulator/fixed.h> | 30 | #include <linux/regulator/fixed.h> |
| 31 | #include <linux/regulator/machine.h> | 31 | #include <linux/regulator/machine.h> |
| 32 | #include <linux/smsc911x.h> | 32 | #include <linux/smsc911x.h> |
| 33 | #include <linux/mmc/sh_mobile_sdhi.h> | ||
| 34 | #include <linux/mfd/tmio.h> | ||
| 33 | #include <mach/hardware.h> | 35 | #include <mach/hardware.h> |
| 34 | #include <mach/r8a7779.h> | 36 | #include <mach/r8a7779.h> |
| 35 | #include <mach/common.h> | 37 | #include <mach/common.h> |
| @@ -39,6 +41,12 @@ | |||
| 39 | #include <asm/hardware/gic.h> | 41 | #include <asm/hardware/gic.h> |
| 40 | #include <asm/traps.h> | 42 | #include <asm/traps.h> |
| 41 | 43 | ||
| 44 | /* Fixed 3.3V regulator to be used by SDHI0 */ | ||
| 45 | static struct regulator_consumer_supply fixed3v3_power_consumers[] = { | ||
| 46 | REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"), | ||
| 47 | REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.0"), | ||
| 48 | }; | ||
| 49 | |||
| 42 | /* Dummy supplies, where voltage doesn't matter */ | 50 | /* Dummy supplies, where voltage doesn't matter */ |
| 43 | static struct regulator_consumer_supply dummy_supplies[] = { | 51 | static struct regulator_consumer_supply dummy_supplies[] = { |
| 44 | REGULATOR_SUPPLY("vddvario", "smsc911x"), | 52 | REGULATOR_SUPPLY("vddvario", "smsc911x"), |
| @@ -75,13 +83,61 @@ static struct platform_device eth_device = { | |||
| 75 | .num_resources = ARRAY_SIZE(smsc911x_resources), | 83 | .num_resources = ARRAY_SIZE(smsc911x_resources), |
| 76 | }; | 84 | }; |
| 77 | 85 | ||
| 86 | static struct resource sdhi0_resources[] = { | ||
| 87 | [0] = { | ||
| 88 | .name = "sdhi0", | ||
| 89 | .start = 0xffe4c000, | ||
| 90 | .end = 0xffe4c0ff, | ||
| 91 | .flags = IORESOURCE_MEM, | ||
| 92 | }, | ||
| 93 | [1] = { | ||
| 94 | .start = gic_spi(104), | ||
| 95 | .flags = IORESOURCE_IRQ, | ||
| 96 | }, | ||
| 97 | }; | ||
| 98 | |||
| 99 | static struct sh_mobile_sdhi_info sdhi0_platform_data = { | ||
| 100 | .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_HAS_IDLE_WAIT, | ||
| 101 | .tmio_caps = MMC_CAP_SD_HIGHSPEED, | ||
| 102 | }; | ||
| 103 | |||
| 104 | static struct platform_device sdhi0_device = { | ||
| 105 | .name = "sh_mobile_sdhi", | ||
| 106 | .num_resources = ARRAY_SIZE(sdhi0_resources), | ||
| 107 | .resource = sdhi0_resources, | ||
| 108 | .id = 0, | ||
| 109 | .dev = { | ||
| 110 | .platform_data = &sdhi0_platform_data, | ||
| 111 | } | ||
| 112 | }; | ||
| 113 | |||
| 114 | /* Thermal */ | ||
| 115 | static struct resource thermal_resources[] = { | ||
| 116 | [0] = { | ||
| 117 | .start = 0xFFC48000, | ||
| 118 | .end = 0xFFC48038 - 1, | ||
| 119 | .flags = IORESOURCE_MEM, | ||
| 120 | }, | ||
| 121 | }; | ||
| 122 | |||
| 123 | static struct platform_device thermal_device = { | ||
| 124 | .name = "rcar_thermal", | ||
| 125 | .resource = thermal_resources, | ||
| 126 | .num_resources = ARRAY_SIZE(thermal_resources), | ||
| 127 | }; | ||
| 128 | |||
| 78 | static struct platform_device *marzen_devices[] __initdata = { | 129 | static struct platform_device *marzen_devices[] __initdata = { |
| 79 | ð_device, | 130 | ð_device, |
| 131 | &sdhi0_device, | ||
| 132 | &thermal_device, | ||
| 80 | }; | 133 | }; |
| 81 | 134 | ||
| 82 | static void __init marzen_init(void) | 135 | static void __init marzen_init(void) |
| 83 | { | 136 | { |
| 84 | regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies)); | 137 | regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers, |
| 138 | ARRAY_SIZE(fixed3v3_power_consumers), 3300000); | ||
| 139 | regulator_register_fixed(1, dummy_supplies, | ||
| 140 | ARRAY_SIZE(dummy_supplies)); | ||
| 85 | 141 | ||
| 86 | r8a7779_pinmux_init(); | 142 | r8a7779_pinmux_init(); |
| 87 | 143 | ||
| @@ -97,6 +153,16 @@ static void __init marzen_init(void) | |||
| 97 | gpio_request(GPIO_FN_EX_CS0, NULL); /* nCS */ | 153 | gpio_request(GPIO_FN_EX_CS0, NULL); /* nCS */ |
| 98 | gpio_request(GPIO_FN_IRQ1_B, NULL); /* IRQ + PME */ | 154 | gpio_request(GPIO_FN_IRQ1_B, NULL); /* IRQ + PME */ |
| 99 | 155 | ||
| 156 | /* SD0 (CN20) */ | ||
| 157 | gpio_request(GPIO_FN_SD0_CLK, NULL); | ||
| 158 | gpio_request(GPIO_FN_SD0_CMD, NULL); | ||
| 159 | gpio_request(GPIO_FN_SD0_DAT0, NULL); | ||
| 160 | gpio_request(GPIO_FN_SD0_DAT1, NULL); | ||
| 161 | gpio_request(GPIO_FN_SD0_DAT2, NULL); | ||
| 162 | gpio_request(GPIO_FN_SD0_DAT3, NULL); | ||
| 163 | gpio_request(GPIO_FN_SD0_CD, NULL); | ||
| 164 | gpio_request(GPIO_FN_SD0_WP, NULL); | ||
| 165 | |||
| 100 | r8a7779_add_standard_devices(); | 166 | r8a7779_add_standard_devices(); |
| 101 | platform_add_devices(marzen_devices, ARRAY_SIZE(marzen_devices)); | 167 | platform_add_devices(marzen_devices, ARRAY_SIZE(marzen_devices)); |
| 102 | } | 168 | } |
