]> Pileus Git - ~andy/linux/commitdiff
Merge tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 2 Oct 2012 01:48:30 +0000 (18:48 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 2 Oct 2012 01:48:30 +0000 (18:48 -0700)
Pull ARM soc board specific updates from Olof Johansson:
 "Misc board updates:
   - Greg added a handful of boards to KS8695 (since he has stepped up
     to maintain it).
   - Qualcomm has added DT-only board support for a couple of their
     newer SoCs.
   - misc other updates for Samsung and Freescale boards."

Fix up trivial conflict in arch/arm/mach-shmobile/board-armadillo800eva.c
due to gpio device data being added next to hdmi device data that got moved.

* tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
  ARM: msm: Allow 8960 and 8660 to compile together
  ARM: msm: Allow msm_iomap-8x60 and msm_iomap-8960 to coexist
  ARM: EXYNOS: Add generic PWM lookup support for SMDKV310
  ARM: EXYNOS: Add generic PWM lookup support for SMDK4X12
  ARM: EXYNOS: Use generic pwm driver in Origen board
  ARM: shmobile: armadillo800eva: Add support RTC
  ARM: ks8695: add board support for the OpenGear boards based on the KS8695
  ARM: ks8695: add board support for the SnapGear boards based on the KS8695
  ARM: dts: Add heartbeat gpio-leds support to Origen
  ARM: dts: Use active low flag for gpio-keys on Origen
  ARM: shmobile: marzen: enable thermal sensor
  ARM: shmobile: marzen: fixup regulator id for smsc911x
  ARM: shmobile: marzen: add SDHI0 support
  ARM: mmp: enable debug uart port in defconfig
  ARM: mmp: implement DEBUG_LL port choice
  ARM: S3C64XX: Register audio platform devices for Bells on Cragganmore
  ARM: S3C64XX: Update configuration for WM5102 module on Cragganmore
  ARM: mx27pdk: Add audio support
  ARM: ttc_dkb: add nand support

26 files changed:
arch/arm/Kconfig.debug
arch/arm/boot/dts/exynos4210-origen.dts
arch/arm/configs/armadillo800eva_defconfig
arch/arm/configs/marzen_defconfig
arch/arm/configs/mmp2_defconfig
arch/arm/configs/pxa910_defconfig
arch/arm/mach-exynos/Kconfig
arch/arm/mach-exynos/mach-origen.c
arch/arm/mach-exynos/mach-smdk4x12.c
arch/arm/mach-exynos/mach-smdkv310.c
arch/arm/mach-imx/Kconfig
arch/arm/mach-imx/mach-mx27_3ds.c
arch/arm/mach-ks8695/Kconfig
arch/arm/mach-ks8695/Makefile
arch/arm/mach-ks8695/board-og.c [new file with mode: 0644]
arch/arm/mach-ks8695/board-sg.c [new file with mode: 0644]
arch/arm/mach-mmp/include/mach/debug-macro.S
arch/arm/mach-mmp/ttc_dkb.c
arch/arm/mach-msm/Kconfig
arch/arm/mach-msm/include/mach/msm_iomap-8x60.h
arch/arm/mach-msm/include/mach/msm_iomap.h
arch/arm/mach-msm/io.c
arch/arm/mach-s3c64xx/mach-crag6410-module.c
arch/arm/mach-s3c64xx/mach-crag6410.c
arch/arm/mach-shmobile/board-armadillo800eva.c
arch/arm/mach-shmobile/board-marzen.c

index e968a52e4881967a01f8aa68fc586aafe61edf38..58c74e737f7ac504f887d22948ab5df3a6b47167 100644 (file)
@@ -224,6 +224,20 @@ choice
                  Say Y here if you want kernel low-level debugging support
                  on i.MX6Q UART4.
 
+       config DEBUG_MMP_UART2
+               bool "Kernel low-level debugging message via MMP UART2"
+               depends on ARCH_MMP
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 on MMP UART2.
+
+       config DEBUG_MMP_UART3
+               bool "Kernel low-level debugging message via MMP UART3"
+               depends on ARCH_MMP
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 on MMP UART3.
+
        config DEBUG_MSM_UART1
                bool "Kernel low-level debugging messages via MSM UART1"
                depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50
index 0c49caa099786b4c247831da4b539da7a32711ab..d69a7999a12b0c752b979d6155b64eb1f8ad8153 100644 (file)
 
                up {
                        label = "Up";
-                       gpios = <&gpx2 0 0 0 2>;
+                       gpios = <&gpx2 0 0 0x10000 2>;
                        linux,code = <103>;
                };
 
                down {
                        label = "Down";
-                       gpios = <&gpx2 1 0 0 2>;
+                       gpios = <&gpx2 1 0 0x10000 2>;
                        linux,code = <108>;
                };
 
                back {
                        label = "Back";
-                       gpios = <&gpx1 7 0 0 2>;
+                       gpios = <&gpx1 7 0 0x10000 2>;
                        linux,code = <158>;
                };
 
                home {
                        label = "Home";
-                       gpios = <&gpx1 6 0 0 2>;
+                       gpios = <&gpx1 6 0 0x10000 2>;
                        linux,code = <102>;
                };
 
                menu {
                        label = "Menu";
-                       gpios = <&gpx1 5 0 0 2>;
+                       gpios = <&gpx1 5 0 0x10000 2>;
                        linux,code = <139>;
                };
        };
 
+       leds {
+               compatible = "gpio-leds";
+               status {
+                       gpios = <&gpx1 3 0 0x10000 2>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
        keypad@100A0000 {
                status = "disabled";
        };
index 90610c7030f7aafd4ccc9663983bc367e89324dd..f78d259f8d23d900d4a2abb6461f8921ce74389c 100644 (file)
@@ -85,6 +85,7 @@ CONFIG_SERIAL_SH_SCI_NR_UARTS=8
 CONFIG_SERIAL_SH_SCI_CONSOLE=y
 # CONFIG_HW_RANDOM is not set
 CONFIG_I2C=y
+CONFIG_I2C_GPIO=y
 CONFIG_I2C_SH_MOBILE=y
 # CONFIG_HWMON is not set
 CONFIG_MEDIA_SUPPORT=y
@@ -120,6 +121,8 @@ CONFIG_USB_ETH=m
 CONFIG_MMC=y
 CONFIG_MMC_SDHI=y
 CONFIG_MMC_SH_MMCIF=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_S35390A=y
 CONFIG_DMADEVICES=y
 CONFIG_SH_DMAE=y
 CONFIG_UIO=y
index 864f9a5c39dd218c00ed6757702f522e1e8504ee..f513acedc10a57ee67099773019e2c4c54ab252e 100644 (file)
@@ -68,6 +68,8 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
 # CONFIG_HW_RANDOM is not set
 CONFIG_GPIO_SYSFS=y
 # CONFIG_HWMON is not set
+CONFIG_THERMAL=y
+CONFIG_RCAR_THERMAL=y
 CONFIG_SSB=y
 # CONFIG_HID_SUPPORT is not set
 # CONFIG_USB_SUPPORT is not set
index 5a584520db2fcfbed8193d7fd65309a90eb9facf..f1cb95e58af030ca1225e1e6272dbb9361b90557 100644 (file)
@@ -16,7 +16,7 @@ CONFIG_PREEMPT=y
 CONFIG_AEABI=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
-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"
+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"
 CONFIG_VFP=y
 CONFIG_NET=y
 CONFIG_PACKET=y
@@ -90,6 +90,9 @@ CONFIG_DEBUG_INFO=y
 # CONFIG_RCU_CPU_STALL_DETECTOR is not set
 # CONFIG_DYNAMIC_DEBUG is not set
 CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_LL=y
+CONFIG_DEBUG_MMP_UART3=y
+CONFIG_EARLY_PRINTK=y
 CONFIG_DEBUG_ERRORS=y
 # CONFIG_CRYPTO_ANSI_CPRNG is not set
 CONFIG_CRC_CCITT=y
index 1cd381e1d47d9e9c0b53cda80dfe26ebea19e93d..191118caa5c0c37c2dad31dccda5e4994fe527a6 100644 (file)
@@ -17,7 +17,7 @@ CONFIG_PREEMPT=y
 CONFIG_AEABI=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
-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"
+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"
 CONFIG_FPE_NWFPE=y
 CONFIG_NET=y
 CONFIG_PACKET=y
@@ -66,5 +66,7 @@ CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_USER=y
 CONFIG_DEBUG_ERRORS=y
 CONFIG_DEBUG_LL=y
+CONFIG_DEBUG_MMP_UART2=y
+CONFIG_EARLY_PRINTK=y
 # CONFIG_CRYPTO_ANSI_CPRNG is not set
 CONFIG_CRC_CCITT=y
index 412884dafa6ce605e8a02c16ecf3da90059ab39e..4372075c551f922380dbd66467221584cd8c902c 100644 (file)
@@ -221,6 +221,7 @@ config MACH_SMDKV310
        select EXYNOS4_SETUP_KEYPAD
        select EXYNOS4_SETUP_SDHCI
        select EXYNOS4_SETUP_USB_PHY
+       select S3C24XX_PWM
        help
          Machine support for Samsung SMDKV310
 
@@ -348,6 +349,7 @@ config MACH_ORIGEN
        select EXYNOS4_SETUP_FIMD0
        select EXYNOS4_SETUP_SDHCI
        select EXYNOS4_SETUP_USB_PHY
+       select S3C24XX_PWM
        help
          Machine support for ORIGEN based on Samsung EXYNOS4210
 
@@ -383,6 +385,7 @@ config MACH_SMDK4212
        select EXYNOS4_SETUP_KEYPAD
        select EXYNOS4_SETUP_SDHCI
        select EXYNOS4_SETUP_USB_PHY
+       select S3C24XX_PWM
        help
          Machine support for Samsung SMDK4212
 
index 4e574c24581ca2869fa37f96d487879ffe0c016a..b45600fcf73e94ab23127133fa3c8e9dd253382b 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/platform_device.h>
 #include <linux/io.h>
 #include <linux/input.h>
+#include <linux/pwm.h>
 #include <linux/pwm_backlight.h>
 #include <linux/gpio_keys.h>
 #include <linux/i2c.h>
@@ -614,6 +615,10 @@ static struct platform_device origen_lcd_hv070wsa = {
        .dev.platform_data      = &origen_lcd_hv070wsa_data,
 };
 
+static struct pwm_lookup origen_pwm_lookup[] = {
+       PWM_LOOKUP("s3c24xx-pwm.0", 0, "pwm-backlight.0", NULL),
+};
+
 #ifdef CONFIG_DRM_EXYNOS
 static struct exynos_drm_fimd_pdata drm_fimd_pdata = {
        .panel  = {
@@ -798,6 +803,7 @@ static void __init origen_machine_init(void)
 
        platform_add_devices(origen_devices, ARRAY_SIZE(origen_devices));
 
+       pwm_add_table(origen_pwm_lookup, ARRAY_SIZE(origen_pwm_lookup));
        samsung_bl_set(&origen_bl_gpio_info, &origen_bl_data);
 
        origen_bt_setup();
index b26beb13ebef40ff03bb524a6a8a9e8733e7efe9..81bf59c6f4bf5f57c4f5fc722859d07128baaa1f 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/mfd/max8997.h>
 #include <linux/mmc/host.h>
 #include <linux/platform_device.h>
+#include <linux/pwm.h>
 #include <linux/pwm_backlight.h>
 #include <linux/regulator/machine.h>
 #include <linux/serial_core.h>
@@ -222,6 +223,10 @@ static struct platform_pwm_backlight_data smdk4x12_bl_data = {
        .pwm_period_ns  = 1000,
 };
 
+static struct pwm_lookup smdk4x12_pwm_lookup[] = {
+       PWM_LOOKUP("s3c24xx-pwm.1", 0, "pwm-backlight.0", NULL),
+};
+
 static uint32_t smdk4x12_keymap[] __initdata = {
        /* KEY(row, col, keycode) */
        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)
                                ARRAY_SIZE(smdk4x12_i2c_devs7));
 
        samsung_bl_set(&smdk4x12_bl_gpio_info, &smdk4x12_bl_data);
+       pwm_add_table(smdk4x12_pwm_lookup, ARRAY_SIZE(smdk4x12_pwm_lookup));
 
        samsung_keypad_set_platdata(&smdk4x12_keypad_data);
 
index 73f2bce097e179822d9a08d4dc14bba6f104888c..12a1db29e1a18171e7d66c57e5fbc01177b49136 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/io.h>
 #include <linux/i2c.h>
 #include <linux/input.h>
+#include <linux/pwm.h>
 #include <linux/pwm_backlight.h>
 #include <linux/platform_data/s3c-hsotg.h>
 
@@ -360,6 +361,10 @@ static struct i2c_board_info hdmiphy_info = {
        I2C_BOARD_INFO("hdmiphy-exynos4210", 0x38),
 };
 
+static struct pwm_lookup smdkv310_pwm_lookup[] = {
+       PWM_LOOKUP("s3c24xx-pwm.1", 0, "pwm-backlight.0", NULL),
+};
+
 static void s5p_tv_setup(void)
 {
        /* direct HPD to HDMI chip */
@@ -399,6 +404,8 @@ static void __init smdkv310_machine_init(void)
        samsung_keypad_set_platdata(&smdkv310_keypad_data);
 
        samsung_bl_set(&smdkv310_bl_gpio_info, &smdkv310_bl_data);
+       pwm_add_table(smdkv310_pwm_lookup, ARRAY_SIZE(smdkv310_pwm_lookup));
+
 #ifdef CONFIG_DRM_EXYNOS
        s5p_device_fimd0.dev.platform_data = &drm_fimd_pdata;
        exynos4_fimd0_gpio_setup_24bpp();
index 7ca5fe45945f2afafb900cd67a808364b72f3016..3a2042fb97127d780fd2ecda6a1fa78a67523d21 100644 (file)
@@ -298,6 +298,7 @@ config MACH_MX27_3DS
        select IMX_HAVE_PLATFORM_IMX_FB
        select IMX_HAVE_PLATFORM_IMX_I2C
        select IMX_HAVE_PLATFORM_IMX_KEYPAD
+       select IMX_HAVE_PLATFORM_IMX_SSI
        select IMX_HAVE_PLATFORM_IMX_UART
        select IMX_HAVE_PLATFORM_MX2_CAMERA
        select IMX_HAVE_PLATFORM_MXC_EHCI
index 58c24c1a7ab70ac26e47db241e882800a2cf9cc5..05996f39005c2dfcd2a6eb1df57b4fc92b2abc03 100644 (file)
@@ -158,6 +158,11 @@ static const int mx27pdk_pins[] __initconst = {
        PB21_PF_CSI_HSYNC,
        CSI_PWRDWN | GPIO_GPIO | GPIO_OUT,
        CSI_RESET | GPIO_GPIO | GPIO_OUT,
+       /* SSI4 */
+       PC16_PF_SSI4_FS,
+       PC17_PF_SSI4_RXD,
+       PC18_PF_SSI4_TXD,
+       PC19_PF_SSI4_CLK,
 };
 
 static struct gpio mx27_3ds_camera_gpios[] = {
@@ -329,13 +334,24 @@ static struct mc13xxx_regulator_init_data mx27_3ds_regulators[] = {
 };
 
 /* MC13783 */
+static struct mc13xxx_codec_platform_data mx27_3ds_codec = {
+       .dac_ssi_port = MC13783_SSI1_PORT,
+       .adc_ssi_port = MC13783_SSI1_PORT,
+};
+
 static struct mc13xxx_platform_data mc13783_pdata = {
        .regulators = {
                .regulators = mx27_3ds_regulators,
                .num_regulators = ARRAY_SIZE(mx27_3ds_regulators),
 
        },
-       .flags  = MC13XXX_USE_TOUCHSCREEN | MC13XXX_USE_RTC,
+       .flags  = MC13XXX_USE_TOUCHSCREEN | MC13XXX_USE_RTC |
+                                               MC13XXX_USE_CODEC,
+       .codec = &mx27_3ds_codec,
+};
+
+static struct imx_ssi_platform_data mx27_3ds_ssi_pdata = {
+       .flags = IMX_SSI_DMA | IMX_SSI_NET,
 };
 
 /* SPI */
@@ -512,6 +528,9 @@ static void __init mx27pdk_init(void)
        }
 
        imx27_add_mx2_camera(&mx27_3ds_cam_pdata);
+       imx27_add_imx_ssi(0, &mx27_3ds_ssi_pdata);
+
+       imx_add_platform_device("imx_mc13783", 0, NULL, 0, NULL, 0);
 }
 
 static void __init mx27pdk_timer_init(void)
index f5c39a8c2b00f39b683819e2b0c93ab89705b243..a545976bdbd6df0c4dbd025a97d0b34a4b257892 100644 (file)
@@ -21,6 +21,67 @@ config MACH_ACS5K
          say 'Y' here if you want your kernel to run on the Brivo
          Systems LLC, ACS-5000 Master board.
 
+config MACH_LITE300
+       bool "SecureComputing SG300"
+       help
+         Say 'Y' here if you want your kernel to support the
+         SecureComputing / SnapGear SG300 VPN Internet Router.
+         See http://www.securecomputing.com for more details.
+
+config MACH_SG310
+       bool "McAfee SG310"
+       help
+         Say 'Y' here if you want your kernel to support the
+         McAfee / SnapGear SG310 VPN Internet Router.
+         See http://www.mcafee.com for more details.
+
+config MACH_SE4200
+       bool "SecureComputing SE4200"
+       help
+         Say 'Y' here if you want your kernel to support the
+         SecureComputing / SnapGear SE4200 Secure Wireless VPN
+         Internet Router.
+         See http://www.securecomputing.com for more details.
+
+config MACH_CM4002
+       bool "OpenGear CM4002"
+       help
+         Say 'Y' here if you want your kernel to support the OpenGear
+         CM4002 Secure Access Server. See http://www.opengear.com for
+         more details.
+
+config MACH_CM4008
+       bool "OpenGear CM4008"
+       select MIGHT_HAVE_PCI
+       help
+         Say 'Y' here if you want your kernel to support the OpenGear
+         CM4008 Console Server. See http://www.opengear.com for more
+         details.
+
+config MACH_CM41xx
+       bool "OpenGear CM41xx"
+       select MIGHT_HAVE_PCI
+       help
+         Say 'Y' here if you want your kernel to support the OpenGear
+         CM4016 or CM4048 Console Servers. See http://www.opengear.com for
+         more details.
+
+config MACH_IM4004
+       bool "OpenGear IM4004"
+       select MIGHT_HAVE_PCI
+       help
+         Say 'Y' here if you want your kernel to support the OpenGear
+         IM4004 Secure Access Server. See http://www.opengear.com for
+         more details.
+
+config MACH_IM42xx
+       bool "OpenGear IM42xx"
+       select MIGHT_HAVE_PCI
+       help
+         Say 'Y' here if you want your kernel to support the OpenGear
+         IM4216 or IM4248 Console Servers. See http://www.opengear.com for
+         more details.
+
 endmenu
 
 endif
index 9324ef965c26d28a48c6447dcfda827e3f5fe48c..e370caf0c91beacf86ba38305e97f7182f3e4730 100644 (file)
@@ -15,3 +15,11 @@ obj-$(CONFIG_PCI)            += pci.o
 obj-$(CONFIG_MACH_KS8695)      += board-micrel.o
 obj-$(CONFIG_MACH_DSM320)      += board-dsm320.o
 obj-$(CONFIG_MACH_ACS5K)       += board-acs5k.o
+obj-$(CONFIG_MACH_LITE300)     += board-sg.o
+obj-$(CONFIG_MACH_SG310)       += board-sg.o
+obj-$(CONFIG_MACH_SE4200)      += board-sg.o
+obj-$(CONFIG_MACH_CM4002)      += board-og.o
+obj-$(CONFIG_MACH_CM4008)      += board-og.o
+obj-$(CONFIG_MACH_CM41xx)      += board-og.o
+obj-$(CONFIG_MACH_IM4004)      += board-og.o
+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 (file)
index 0000000..1623ba4
--- /dev/null
@@ -0,0 +1,199 @@
+/*
+ * board-og.c -- support for the OpenGear KS8695 based boards.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/interrupt.h>
+#include <linux/init.h>
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+#include <linux/serial_8250.h>
+#include <linux/gpio.h>
+#include <linux/irq.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <mach/devices.h>
+#include <mach/regs-gpio.h>
+#include <mach/gpio-ks8695.h>
+#include "generic.h"
+
+static int og_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
+{
+       if (machine_is_im4004() && (slot == 8))
+               return KS8695_IRQ_EXTERN1;
+       return KS8695_IRQ_EXTERN0;
+}
+
+static struct ks8695_pci_cfg __initdata og_pci = {
+       .mode           = KS8695_MODE_PCI,
+       .map_irq        = og_pci_map_irq,
+};
+
+static void __init og_register_pci(void)
+{
+       /* Initialize the GPIO lines for interrupt mode */
+       ks8695_gpio_interrupt(KS8695_GPIO_0, IRQ_TYPE_LEVEL_LOW);
+
+       /* Cardbus Slot */
+       if (machine_is_im4004())
+               ks8695_gpio_interrupt(KS8695_GPIO_1, IRQ_TYPE_LEVEL_LOW);
+
+       ks8695_init_pci(&og_pci);
+}
+
+/*
+ * The PCI bus reset is driven by a dedicated GPIO line. Toggle it here
+ * and bring the PCI bus out of reset.
+ */
+static void __init og_pci_bus_reset(void)
+{
+       unsigned int rstline = 1;
+
+       /* Some boards use a different GPIO as the PCI reset line */
+       if (machine_is_im4004())
+               rstline = 2;
+       else if (machine_is_im42xx())
+               rstline = 0;
+
+       gpio_request(rstline, "PCI reset");
+       gpio_direction_output(rstline, 0);
+
+       /* Drive a reset on the PCI reset line */
+       gpio_set_value(rstline, 1);
+       gpio_set_value(rstline, 0);
+       mdelay(100);
+       gpio_set_value(rstline, 1);
+       mdelay(100);
+}
+
+/*
+ * Direct connect serial ports (non-PCI that is).
+ */
+#define        S8250_PHYS      0x03800000
+#define        S8250_VIRT      0xf4000000
+#define        S8250_SIZE      0x00100000
+
+static struct __initdata map_desc og_io_desc[] = {
+       {
+               .virtual        = S8250_VIRT,
+               .pfn            = __phys_to_pfn(S8250_PHYS),
+               .length         = S8250_SIZE,
+               .type           = MT_DEVICE,
+       }
+};
+
+static struct resource og_uart_resources[] = {
+       {
+               .start          = S8250_VIRT,
+               .end            = S8250_VIRT + S8250_SIZE,
+               .flags          = IORESOURCE_MEM
+       },
+};
+
+static struct plat_serial8250_port og_uart_data[] = {
+       {
+               .mapbase        = S8250_VIRT,
+               .membase        = (char *) S8250_VIRT,
+               .irq            = 3,
+               .flags          = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
+               .iotype         = UPIO_MEM,
+               .regshift       = 2,
+               .uartclk        = 115200 * 16,
+       },
+       { },
+};
+
+static struct platform_device og_uart = {
+       .name                   = "serial8250",
+       .id                     = 0,
+       .dev.platform_data      = og_uart_data,
+       .num_resources          = 1,
+       .resource               = og_uart_resources
+};
+
+static struct platform_device *og_devices[] __initdata = {
+       &og_uart
+};
+
+static void __init og_init(void)
+{
+       ks8695_register_gpios();
+
+       if (machine_is_cm4002()) {
+               ks8695_gpio_interrupt(KS8695_GPIO_1, IRQ_TYPE_LEVEL_HIGH);
+               iotable_init(og_io_desc, ARRAY_SIZE(og_io_desc));
+               platform_add_devices(og_devices, ARRAY_SIZE(og_devices));
+       } else {
+               og_pci_bus_reset();
+               og_register_pci();
+       }
+
+       ks8695_add_device_lan();
+       ks8695_add_device_wan();
+}
+
+#ifdef CONFIG_MACH_CM4002
+MACHINE_START(CM4002, "OpenGear/CM4002")
+       /* OpenGear Inc. */
+       .atag_offset    = 0x100,
+       .map_io         = ks8695_map_io,
+       .init_irq       = ks8695_init_irq,
+       .init_machine   = og_init,
+       .timer          = &ks8695_timer,
+       .restart        = ks8695_restart,
+MACHINE_END
+#endif
+
+#ifdef CONFIG_MACH_CM4008
+MACHINE_START(CM4008, "OpenGear/CM4008")
+       /* OpenGear Inc. */
+       .atag_offset    = 0x100,
+       .map_io         = ks8695_map_io,
+       .init_irq       = ks8695_init_irq,
+       .init_machine   = og_init,
+       .timer          = &ks8695_timer,
+       .restart        = ks8695_restart,
+MACHINE_END
+#endif
+
+#ifdef CONFIG_MACH_CM41xx
+MACHINE_START(CM41XX, "OpenGear/CM41xx")
+       /* OpenGear Inc. */
+       .atag_offset    = 0x100,
+       .map_io         = ks8695_map_io,
+       .init_irq       = ks8695_init_irq,
+       .init_machine   = og_init,
+       .timer          = &ks8695_timer,
+       .restart        = ks8695_restart,
+MACHINE_END
+#endif
+
+#ifdef CONFIG_MACH_IM4004
+MACHINE_START(IM4004, "OpenGear/IM4004")
+       /* OpenGear Inc. */
+       .atag_offset    = 0x100,
+       .map_io         = ks8695_map_io,
+       .init_irq       = ks8695_init_irq,
+       .init_machine   = og_init,
+       .timer          = &ks8695_timer,
+       .restart        = ks8695_restart,
+MACHINE_END
+#endif
+
+#ifdef CONFIG_MACH_IM42xx
+MACHINE_START(IM42XX, "OpenGear/IM42xx")
+       /* OpenGear Inc. */
+       .atag_offset    = 0x100,
+       .map_io         = ks8695_map_io,
+       .init_irq       = ks8695_init_irq,
+       .init_machine   = og_init,
+       .timer          = &ks8695_timer,
+       .restart        = ks8695_restart,
+MACHINE_END
+#endif
diff --git a/arch/arm/mach-ks8695/board-sg.c b/arch/arm/mach-ks8695/board-sg.c
new file mode 100644 (file)
index 0000000..f35b98b
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * board-sg.c -- support for the SnapGear KS8695 based boards
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/map.h>
+#include <linux/mtd/physmap.h>
+#include <linux/mtd/partitions.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <mach/devices.h>
+#include "generic.h"
+
+/*
+ * The SG310 machine type is fitted with a conventional 8MB Strataflash
+ * device. Define its partitioning.
+ */
+#define        FL_BASE         0x02000000
+#define        FL_SIZE         SZ_8M
+
+static struct mtd_partition sg_mtd_partitions[] = {
+       [0] = {
+               .name   = "SnapGear Boot Loader",
+               .size   = SZ_128K,
+       },
+       [1] = {
+               .name   = "SnapGear non-volatile configuration",
+               .size   = SZ_512K,
+               .offset = SZ_256K,
+       },
+       [2] = {
+               .name   = "SnapGear image",
+               .offset = SZ_512K + SZ_256K,
+       },
+       [3] = {
+               .name   = "SnapGear StrataFlash",
+       },
+       [4] = {
+               .name   = "SnapGear Boot Tags",
+               .size   = SZ_128K,
+               .offset = SZ_128K,
+       },
+};
+
+static struct physmap_flash_data sg_mtd_pdata = {
+       .width          = 1,
+       .nr_parts       = ARRAY_SIZE(sg_mtd_partitions),
+       .parts          = sg_mtd_partitions,
+};
+
+
+static struct resource sg_mtd_resource[] = {
+       [0] = {
+               .start = FL_BASE,
+               .end   = FL_BASE + FL_SIZE - 1,
+               .flags = IORESOURCE_MEM,
+       },
+};
+
+static struct platform_device sg_mtd_device = {
+       .name           = "physmap-flash",
+       .id             = 0,
+       .num_resources  = ARRAY_SIZE(sg_mtd_resource),
+       .resource       = sg_mtd_resource,
+       .dev            = {
+               .platform_data = &sg_mtd_pdata,
+       },
+};
+
+static void __init sg_init(void)
+{
+       ks8695_add_device_lan();
+       ks8695_add_device_wan();
+
+       if (machine_is_sg310())
+               platform_device_register(&sg_mtd_device);
+}
+
+#ifdef CONFIG_MACH_LITE300
+MACHINE_START(LITE300, "SecureComputing/SG300")
+       /* SnapGear */
+       .atag_offset    = 0x100,
+       .map_io         = ks8695_map_io,
+       .init_irq       = ks8695_init_irq,
+       .init_machine   = sg_init,
+       .timer          = &ks8695_timer,
+       .restart        = ks8695_restart,
+MACHINE_END
+#endif
+
+#ifdef CONFIG_MACH_SG310
+MACHINE_START(SG310, "McAfee/SG310")
+       /* SnapGear */
+       .atag_offset    = 0x100,
+       .map_io         = ks8695_map_io,
+       .init_irq       = ks8695_init_irq,
+       .init_machine   = sg_init,
+       .timer          = &ks8695_timer,
+       .restart        = ks8695_restart,
+MACHINE_END
+#endif
+
+#ifdef CONFIG_MACH_SE4200
+MACHINE_START(SE4200, "SecureComputing/SE4200")
+       /* SnapGear */
+       .atag_offset    = 0x100,
+       .map_io         = ks8695_map_io,
+       .init_irq       = ks8695_init_irq,
+       .init_machine   = sg_init,
+       .timer          = &ks8695_timer,
+       .restart        = ks8695_restart,
+MACHINE_END
+#endif
index b6f14d203c25a6b416ead991adfeb37e66343e50..5c3cc29688ab6df97e3002df05748a951b8036ae 100644 (file)
@@ -9,13 +9,21 @@
  * published by the Free Software Foundation.
  */
 
+#if defined(CONFIG_DEBUG_MMP_UART2)
+#define MMP_UART_OFFSET        0x00017000
+#elif defined(CONFIG_DEBUG_MMP_UART3)
+#define MMP_UART_OFFSET        0x00018000
+#else
+#error "Select uart for DEBUG_LL"
+#endif
+
 #include <mach/addr-map.h>
 
                .macro  addruart, rp, rv, tmp
                ldr     \rp, =APB_PHYS_BASE             @ physical
                ldr     \rv, =APB_VIRT_BASE             @ virtual
-               orr     \rp, \rp, #0x00017000
-               orr     \rv, \rv, #0x00017000
+               orr     \rp, \rp, #MMP_UART_OFFSET
+               orr     \rv, \rv, #MMP_UART_OFFSET
                .endm
 
 #define UART_SHIFT     2
index 7a7de2b12a622d06abe13daa7efad655772f0fb4..ce55fd8821c40f3bdff6bd757ef9bc47af5b32c5 100644 (file)
@@ -177,12 +177,22 @@ static struct mv_usb_platform_data ttc_usb_pdata = {
 #endif
 #endif
 
+#ifdef CONFIG_MTD_NAND_PXA3xx
+static struct pxa3xx_nand_platform_data dkb_nand_info = {
+       .enable_arbiter = 1,
+       .num_cs = 1,
+};
+#endif
+
 static void __init ttc_dkb_init(void)
 {
        mfp_config(ARRAY_AND_SIZE(ttc_dkb_pin_config));
 
        /* on-chip devices */
        pxa910_add_uart(1);
+#ifdef CONFIG_MTD_NAND_PXA3xx
+       pxa910_add_nand(&dkb_nand_info);
+#endif
 
        /* off-chip devices */
        pxa910_add_twsi(0, NULL, ARRAY_AND_SIZE(ttc_dkb_i2c_info));
index b2740c800e8cb934869f88142bbcb3ccf343a9e1..7902de151cc5bedf339b2f5d75e694f5ad70cd78 100644 (file)
@@ -1,8 +1,12 @@
 if ARCH_MSM
 
+comment "Qualcomm MSM SoC Type"
+       depends on (ARCH_MSM8X60 || ARCH_MSM8960)
+
 choice
        prompt "Qualcomm MSM SoC Type"
        default ARCH_MSM7X00A
+       depends on !(ARCH_MSM8X60 || ARCH_MSM8960)
 
 config ARCH_MSM7X00A
        bool "MSM7x00A / MSM7x01A"
@@ -36,6 +40,8 @@ config ARCH_QSD8X50
        select GPIO_MSM_V1
        select MSM_PROC_COMM
 
+endchoice
+
 config ARCH_MSM8X60
        bool "MSM8X60"
        select ARCH_MSM_SCORPIONMP
@@ -57,8 +63,6 @@ config ARCH_MSM8960
        select MSM_SCM if SMP
        select USE_OF
 
-endchoice
-
 config MSM_HAS_DEBUG_UART_HS
        bool
 
index c6d38f1d0c989a329007722a94b9928ac435e2ab..199372e62defbf3241ea20eb0b48bce3c917614d 100644 (file)
 #define MSM8X60_QGIC_CPU_PHYS  0x02081000
 #define MSM8X60_QGIC_CPU_SIZE  SZ_4K
 
-#define MSM_ACC_BASE           IOMEM(0xF0002000)
-#define MSM_ACC_PHYS           0x02001000
-#define MSM_ACC_SIZE           SZ_4K
-
-#define MSM_GCC_BASE           IOMEM(0xF0003000)
-#define MSM_GCC_PHYS           0x02082000
-#define MSM_GCC_SIZE           SZ_4K
-
 #define MSM_TLMM_BASE          IOMEM(0xF0004000)
 #define MSM_TLMM_PHYS          0x00800000
 #define MSM_TLMM_SIZE          SZ_16K
 
-#define MSM_SHARED_RAM_BASE    IOMEM(0xF0100000)
-#define MSM_SHARED_RAM_SIZE    SZ_1M
-
 #define MSM8X60_TMR_PHYS       0x02000000
 #define MSM8X60_TMR_SIZE       SZ_4K
 
index 00afdfb8c38fe24eacc2d0c87709fe448b06eed0..2ab7cf0919b37f53afc3b4c563b850170f65fa64 100644 (file)
 #include "msm_iomap-7x30.h"
 #elif defined(CONFIG_ARCH_QSD8X50)
 #include "msm_iomap-8x50.h"
-#elif defined(CONFIG_ARCH_MSM8X60)
-#include "msm_iomap-8x60.h"
 #else
 #include "msm_iomap-7x00.h"
 #endif
 
+#include "msm_iomap-8x60.h"
 #include "msm_iomap-8960.h"
 
 #define MSM_DEBUG_UART_SIZE    SZ_4K
index 3854f6f20ce2fce18150a584cce02ad077275dee..123ef9cbce1b2c42f605b3bb19aaacb44dbdd378 100644 (file)
@@ -111,8 +111,6 @@ static struct map_desc msm8x60_io_desc[] __initdata = {
        MSM_CHIP_DEVICE(QGIC_CPU, MSM8X60),
        MSM_CHIP_DEVICE(TMR, MSM8X60),
        MSM_CHIP_DEVICE(TMR0, MSM8X60),
-       MSM_DEVICE(ACC),
-       MSM_DEVICE(GCC),
 #ifdef CONFIG_DEBUG_MSM8660_UART
        MSM_DEVICE(DEBUG_UART),
 #endif
index 9e382e7c77cb77a04450dffa5ecc90e8f13f674d..7f4f9ebee25d508486d7ca8498acded12938cd28 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/mfd/wm831x/irq.h>
 #include <linux/mfd/wm831x/gpio.h>
 #include <linux/mfd/wm8994/pdata.h>
+#include <linux/mfd/arizona/pdata.h>
 
 #include <linux/regulator/machine.h>
 
@@ -181,9 +182,33 @@ static const struct i2c_board_info wm1277_devs[] = {
        },
 };
 
-static const struct i2c_board_info wm5102_devs[] = {
-       { I2C_BOARD_INFO("wm5102", 0x1a),
-         .irq = GLENFARCLAS_PMIC_IRQ_BASE + WM831X_IRQ_GPIO_2, },
+static struct arizona_pdata wm5102_pdata = {
+       .ldoena = S3C64XX_GPN(7),
+       .gpio_base = CODEC_GPIO_BASE,
+       .irq_active_high = true,
+       .micd_pol_gpio = CODEC_GPIO_BASE + 4,
+       .gpio_defaults = {
+               [2] = 0x10000, /* AIF3TXLRCLK */
+               [3] = 0x4,     /* OPCLK */
+       },
+};
+
+static struct s3c64xx_spi_csinfo wm5102_spi_csinfo = {
+       .line = S3C64XX_GPN(5),
+};
+
+static struct spi_board_info wm5102_spi_devs[] = {
+       [0] = {
+               .modalias       = "wm5102",
+               .max_speed_hz   = 10 * 1000 * 1000,
+               .bus_num        = 0,
+               .chip_select    = 0,
+               .mode           = SPI_MODE_0,
+               .irq            = GLENFARCLAS_PMIC_IRQ_BASE +
+                                 WM831X_IRQ_GPIO_2,
+               .controller_data = &wm5102_spi_csinfo,
+               .platform_data = &wm5102_pdata,
+       },
 };
 
 static const struct i2c_board_info wm6230_i2c_devs[] = {
@@ -223,8 +248,9 @@ static __devinitdata const struct {
        { .id = 0x3c, .name = "1273-EV1 Longmorn" },
        { .id = 0x3d, .name = "1277-EV1 Littlemill",
          .i2c_devs = wm1277_devs, .num_i2c_devs = ARRAY_SIZE(wm1277_devs) },
-       { .id = 0x3e, .name = "WM5102-6271-EV1-CS127",
-         .i2c_devs = wm5102_devs, .num_i2c_devs = ARRAY_SIZE(wm5102_devs) },
+       { .id = 0x3e, .name = "WM5102-6271-EV1-CS127 Amrut",
+         .spi_devs = wm5102_spi_devs,
+         .num_spi_devs = ARRAY_SIZE(wm5102_spi_devs) },
 };
 
 static __devinit int wlf_gf_module_probe(struct i2c_client *i2c,
index 09cd81207a3fd39cbdfb061f9939dc728487a398..a095f7f6009da2eaa940b52960af0658a94c4020 100644 (file)
@@ -287,6 +287,16 @@ static struct platform_device littlemill_device = {
        .id             = -1,
 };
 
+static struct platform_device bells_wm5102_device = {
+       .name           = "bells",
+       .id             = 0,
+};
+
+static struct platform_device bells_wm5110_device = {
+       .name           = "bells",
+       .id             = 1,
+};
+
 static struct regulator_consumer_supply wallvdd_consumers[] = {
        REGULATOR_SUPPLY("SPKVDD", "1-001a"),
        REGULATOR_SUPPLY("SPKVDD1", "1-001a"),
@@ -359,6 +369,8 @@ static struct platform_device *crag6410_devices[] __initdata = {
        &tobermory_device,
        &littlemill_device,
        &lowland_device,
+       &bells_wm5102_device,
+       &bells_wm5110_device,
        &wallvdd_device,
 };
 
index 45b33e02dff55c17aece60c0c3bb5b5adf196397..9615a78d30b2c2aaceec2b5ac97ac5f2fbc49aa2 100644 (file)
@@ -37,6 +37,7 @@
 #include <linux/mmc/host.h>
 #include <linux/mmc/sh_mmcif.h>
 #include <linux/mmc/sh_mobile_sdhi.h>
+#include <linux/i2c-gpio.h>
 #include <mach/common.h>
 #include <mach/irqs.h>
 #include <mach/r8a7740.h>
@@ -877,6 +878,21 @@ static struct platform_device fsi_hdmi_device = {
        },
 };
 
+/* RTC: RTC connects i2c-gpio. */
+static struct i2c_gpio_platform_data i2c_gpio_data = {
+       .sda_pin        = GPIO_PORT208,
+       .scl_pin        = GPIO_PORT91,
+       .udelay         = 5, /* 100 kHz */
+};
+
+static struct platform_device i2c_gpio_device = {
+       .name = "i2c-gpio",
+       .id = 2,
+       .dev = {
+               .platform_data = &i2c_gpio_data,
+       },
+};
+
 /* I2C */
 static struct i2c_board_info i2c0_devices[] = {
        {
@@ -888,6 +904,13 @@ static struct i2c_board_info i2c0_devices[] = {
        },
 };
 
+static struct i2c_board_info i2c2_devices[] = {
+       {
+               I2C_BOARD_INFO("s35390a", 0x30),
+               .type = "s35390a",
+       },
+};
+
 /*
  * board devices
  */
@@ -904,6 +927,7 @@ static struct platform_device *eva_devices[] __initdata = {
        &fsi_device,
        &fsi_wm8978_device,
        &fsi_hdmi_device,
+       &i2c_gpio_device,
 };
 
 static void __init eva_clock_init(void)
@@ -1174,6 +1198,7 @@ static void __init eva_init(void)
 #endif
 
        i2c_register_board_info(0, i2c0_devices, ARRAY_SIZE(i2c0_devices));
+       i2c_register_board_info(2, i2c2_devices, ARRAY_SIZE(i2c2_devices));
 
        r8a7740_add_standard_devices();
 
index fcf5a47f47724ccd2be52005adcef685487671a8..4834bdd849cf575c982cbe966983232200c79976 100644 (file)
@@ -30,6 +30,8 @@
 #include <linux/regulator/fixed.h>
 #include <linux/regulator/machine.h>
 #include <linux/smsc911x.h>
+#include <linux/mmc/sh_mobile_sdhi.h>
+#include <linux/mfd/tmio.h>
 #include <mach/hardware.h>
 #include <mach/r8a7779.h>
 #include <mach/common.h>
 #include <asm/hardware/gic.h>
 #include <asm/traps.h>
 
+/* Fixed 3.3V regulator to be used by SDHI0 */
+static struct regulator_consumer_supply fixed3v3_power_consumers[] = {
+       REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"),
+       REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.0"),
+};
+
 /* Dummy supplies, where voltage doesn't matter */
 static struct regulator_consumer_supply dummy_supplies[] = {
        REGULATOR_SUPPLY("vddvario", "smsc911x"),
@@ -75,13 +83,61 @@ static struct platform_device eth_device = {
        .num_resources  = ARRAY_SIZE(smsc911x_resources),
 };
 
+static struct resource sdhi0_resources[] = {
+       [0] = {
+               .name   = "sdhi0",
+               .start  = 0xffe4c000,
+               .end    = 0xffe4c0ff,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = gic_spi(104),
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct sh_mobile_sdhi_info sdhi0_platform_data = {
+       .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_HAS_IDLE_WAIT,
+       .tmio_caps = MMC_CAP_SD_HIGHSPEED,
+};
+
+static struct platform_device sdhi0_device = {
+       .name = "sh_mobile_sdhi",
+       .num_resources = ARRAY_SIZE(sdhi0_resources),
+       .resource = sdhi0_resources,
+       .id = 0,
+       .dev = {
+               .platform_data = &sdhi0_platform_data,
+       }
+};
+
+/* Thermal */
+static struct resource thermal_resources[] = {
+       [0] = {
+               .start          = 0xFFC48000,
+               .end            = 0xFFC48038 - 1,
+               .flags          = IORESOURCE_MEM,
+       },
+};
+
+static struct platform_device thermal_device = {
+       .name           = "rcar_thermal",
+       .resource       = thermal_resources,
+       .num_resources  = ARRAY_SIZE(thermal_resources),
+};
+
 static struct platform_device *marzen_devices[] __initdata = {
        &eth_device,
+       &sdhi0_device,
+       &thermal_device,
 };
 
 static void __init marzen_init(void)
 {
-       regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
+       regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers,
+                               ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
+       regulator_register_fixed(1, dummy_supplies,
+                               ARRAY_SIZE(dummy_supplies));
 
        r8a7779_pinmux_init();
 
@@ -97,6 +153,16 @@ static void __init marzen_init(void)
        gpio_request(GPIO_FN_EX_CS0, NULL); /* nCS */
        gpio_request(GPIO_FN_IRQ1_B, NULL); /* IRQ + PME */
 
+       /* SD0 (CN20) */
+       gpio_request(GPIO_FN_SD0_CLK, NULL);
+       gpio_request(GPIO_FN_SD0_CMD, NULL);
+       gpio_request(GPIO_FN_SD0_DAT0, NULL);
+       gpio_request(GPIO_FN_SD0_DAT1, NULL);
+       gpio_request(GPIO_FN_SD0_DAT2, NULL);
+       gpio_request(GPIO_FN_SD0_DAT3, NULL);
+       gpio_request(GPIO_FN_SD0_CD, NULL);
+       gpio_request(GPIO_FN_SD0_WP, NULL);
+
        r8a7779_add_standard_devices();
        platform_add_devices(marzen_devices, ARRAY_SIZE(marzen_devices));
 }