Commit 95360fd6 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'boards' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

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
parents 8f446a7a e6ca4ae8
......@@ -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
......
......@@ -62,35 +62,43 @@
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";
};
......
......@@ -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
......
......@@ -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
......
......@@ -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
......@@ -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
......@@ -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
......
......@@ -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();
......
......@@ -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);
......
......@@ -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();
......
......@@ -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
......
......@@ -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)
......
......@@ -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
......@@ -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
/*
* 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
/*
* 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,