]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge tag 'fixes-non-critical' of git://git.kernel.org/pub/scm/linux/kernel/git/arm...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 2 Oct 2012 01:02:07 +0000 (18:02 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 2 Oct 2012 01:02:07 +0000 (18:02 -0700)
Pull non-critical ARM soc bug fixes from Olof Johansson:
 "These were submitted as bug fixes before v3.6 but not considered
  important enough to be included in it.  Some of them cross over to
  cleanup territory as well, and aren't strictly bugfixes."

* tag 'fixes-non-critical' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (48 commits)
  ARM: nomadik: remove NAND_NO_READRDY use
  ARM: pxa: fix return value check in pxa2xx_drv_pcmcia_probe()
  ARM: SAMSUNG: Add missing variable declaration in s3c64xx_spi1_set_platdata()
  ARM: S3C24XX: removes unnecessary semicolon
  ARM: S3C24xx: delete double assignment
  ARM: EXYNOS: fix address for EXYNOS4 MDMA1
  ARM: EXYNOS: fixed SYSMMU setup definition to mate parameter name
  ARM: ep93xx: Move ts72xx.h out of include/mach
  ARM: ep93xx: use __iomem pointers for MMIO
  ARM: msm: Fix early debug uart mapping on some memory configs
  ARM: msm: io: Change the default static iomappings to be shared
  ARM: msm: io: Remove 7x30 iomap region from 7x00
  ARM: msm: Remove call to missing FPGA init on 8660
  ARM: OMAP4: wakeupgen: remove duplicate AUXCOREBOOT* read/write
  ARM: OMAP4: wakeupgen: Fix the typo in AUXCOREBOOT register save
  dma: tegra: make data used as *of_device_id.data const
  can: mpc5xxx_can: make data used as *of_device_id.data const
  macintosh/mediabay: make data used as *of_device_id.data const
  i2c/mpc: make data used as *of_device_id.data const
  mfd/da9052: make i2c_device_id array const
  ...

43 files changed:
arch/arm/Kconfig
arch/arm/mach-ep93xx/adssphere.c
arch/arm/mach-ep93xx/gesbc9312.c
arch/arm/mach-ep93xx/ts72xx.c
arch/arm/mach-ep93xx/ts72xx.h [moved from arch/arm/mach-ep93xx/include/mach/ts72xx.h with 89% similarity]
arch/arm/mach-exynos/include/mach/map.h
arch/arm/mach-exynos/include/mach/sysmmu.h
arch/arm/mach-msm/board-msm8x60.c
arch/arm/mach-msm/include/mach/msm_iomap-8960.h
arch/arm/mach-msm/include/mach/msm_iomap-8x60.h
arch/arm/mach-msm/io.c
arch/arm/mach-nomadik/board-nhk8815.c
arch/arm/mach-omap2/gpio.c
arch/arm/mach-omap2/omap-wakeupgen.c
arch/arm/mach-s3c24xx/mach-h1940.c
arch/arm/mach-tegra/powergate.c
arch/arm/mach-ux500/Kconfig
arch/arm/mach-ux500/board-mop500-regulators.c
arch/arm/mach-ux500/board-mop500-regulators.h
arch/arm/mach-ux500/board-mop500.c
arch/arm/mach-ux500/cpu-db8500.c
arch/arm/mach-ux500/cpu.c
arch/arm/mm/cache-l2x0.c
arch/arm/plat-samsung/devs.c
arch/powerpc/platforms/83xx/suspend.c
arch/powerpc/platforms/cell/celleb_pci.c
arch/powerpc/sysdev/fsl_msi.c
drivers/dma/tegra20-apb-dma.c
drivers/gpio/gpio-mpc8xxx.c
drivers/gpio/gpio-omap.c
drivers/i2c/busses/i2c-mpc.c
drivers/i2c/busses/i2c-omap.c
drivers/macintosh/mediabay.c
drivers/mfd/da9052-i2c.c
drivers/mmc/host/omap_hsmmc.c
drivers/net/can/mscan/mpc5xxx_can.c
drivers/pcmcia/pxa2xx_base.c
drivers/spi/spi-imx.c
drivers/spi/spi-omap2-mcspi.c
drivers/tty/serial/mpc52xx_uart.c
drivers/watchdog/mpc8xxx_wdt.c
include/linux/atmel_tc.h
include/linux/mod_devicetable.h

index de325f4615bd0ae6a76b9ba82b828a928cfdcbd6..4c428dc999eadad285e326e14900766d9719b3aa 100644 (file)
@@ -2312,7 +2312,7 @@ menu "Power management options"
 source "kernel/power/Kconfig"
 
 config ARCH_SUSPEND_POSSIBLE
-       depends on !ARCH_S5PC100 && !ARCH_TEGRA
+       depends on !ARCH_S5PC100
        depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \
                CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE || CPU_MOHAWK
        def_bool y
index a472777e9eba4523acd0386af0595715c9bb16ee..41383bf03d4bcc1161aa8fc617786b5d5ead783a 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/platform_device.h>
+#include <linux/sizes.h>
 
 #include <mach/hardware.h>
 
index 437c3411115513156bf252c569a22ac636f3de0a..7fd705b5efe4890895800c97bf1cd9f6703b6b7a 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/platform_device.h>
+#include <linux/sizes.h>
 
 #include <mach/hardware.h>
 
index 75cab2d7ec73a6a4a4619d606a2f9c506501a957..3c4c233391dc43b0d730c80d60e5bdd3319418db 100644 (file)
@@ -21,7 +21,6 @@
 #include <linux/mtd/partitions.h>
 
 #include <mach/hardware.h>
-#include <mach/ts72xx.h>
 
 #include <asm/hardware/vic.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 
 #include "soc.h"
+#include "ts72xx.h"
 
 static struct map_desc ts72xx_io_desc[] __initdata = {
        {
-               .virtual        = TS72XX_MODEL_VIRT_BASE,
+               .virtual        = (unsigned long)TS72XX_MODEL_VIRT_BASE,
                .pfn            = __phys_to_pfn(TS72XX_MODEL_PHYS_BASE),
                .length         = TS72XX_MODEL_SIZE,
                .type           = MT_DEVICE,
        }, {
-               .virtual        = TS72XX_OPTIONS_VIRT_BASE,
+               .virtual        = (unsigned long)TS72XX_OPTIONS_VIRT_BASE,
                .pfn            = __phys_to_pfn(TS72XX_OPTIONS_PHYS_BASE),
                .length         = TS72XX_OPTIONS_SIZE,
                .type           = MT_DEVICE,
        }, {
-               .virtual        = TS72XX_OPTIONS2_VIRT_BASE,
+               .virtual        = (unsigned long)TS72XX_OPTIONS2_VIRT_BASE,
                .pfn            = __phys_to_pfn(TS72XX_OPTIONS2_PHYS_BASE),
                .length         = TS72XX_OPTIONS2_SIZE,
                .type           = MT_DEVICE,
        }, {
-               .virtual        = TS72XX_RTC_INDEX_VIRT_BASE,
+               .virtual        = (unsigned long)TS72XX_RTC_INDEX_VIRT_BASE,
                .pfn            = __phys_to_pfn(TS72XX_RTC_INDEX_PHYS_BASE),
                .length         = TS72XX_RTC_INDEX_SIZE,
                .type           = MT_DEVICE,
        }, {
-               .virtual        = TS72XX_RTC_DATA_VIRT_BASE,
+               .virtual        = (unsigned long)TS72XX_RTC_DATA_VIRT_BASE,
                .pfn            = __phys_to_pfn(TS72XX_RTC_DATA_PHYS_BASE),
                .length         = TS72XX_RTC_DATA_SIZE,
                .type           = MT_DEVICE,
similarity index 89%
rename from arch/arm/mach-ep93xx/include/mach/ts72xx.h
rename to arch/arm/mach-ep93xx/ts72xx.h
index f1397a13e76b87b563b4343c848a023f57e71f09..071feaa30adc6094a995738a0b812a7f0b7b5a34 100644 (file)
@@ -14,7 +14,7 @@
  */
 
 #define TS72XX_MODEL_PHYS_BASE         0x22000000
-#define TS72XX_MODEL_VIRT_BASE         0xfebff000
+#define TS72XX_MODEL_VIRT_BASE         IOMEM(0xfebff000)
 #define TS72XX_MODEL_SIZE              0x00001000
 
 #define TS72XX_MODEL_TS7200            0x00
@@ -26,7 +26,7 @@
 
 
 #define TS72XX_OPTIONS_PHYS_BASE       0x22400000
-#define TS72XX_OPTIONS_VIRT_BASE       0xfebfe000
+#define TS72XX_OPTIONS_VIRT_BASE       IOMEM(0xfebfe000)
 #define TS72XX_OPTIONS_SIZE            0x00001000
 
 #define TS72XX_OPTIONS_COM2_RS485      0x02
 
 
 #define TS72XX_OPTIONS2_PHYS_BASE      0x22800000
-#define TS72XX_OPTIONS2_VIRT_BASE      0xfebfd000
+#define TS72XX_OPTIONS2_VIRT_BASE      IOMEM(0xfebfd000)
 #define TS72XX_OPTIONS2_SIZE           0x00001000
 
 #define TS72XX_OPTIONS2_TS9420         0x04
 #define TS72XX_OPTIONS2_TS9420_BOOT    0x02
 
 
-#define TS72XX_RTC_INDEX_VIRT_BASE     0xfebf9000
+#define TS72XX_RTC_INDEX_VIRT_BASE     IOMEM(0xfebf9000)
 #define TS72XX_RTC_INDEX_PHYS_BASE     0x10800000
 #define TS72XX_RTC_INDEX_SIZE          0x00001000
 
-#define TS72XX_RTC_DATA_VIRT_BASE      0xfebf8000
+#define TS72XX_RTC_DATA_VIRT_BASE      IOMEM(0xfebf8000)
 #define TS72XX_RTC_DATA_PHYS_BASE      0x11700000
 #define TS72XX_RTC_DATA_SIZE           0x00001000
 
index c72b675b3e4b98f07dd26353d1dcbb3ee7ae12e6..c941053dd5a170b7eb81bdcae87c34653c7e4040 100644 (file)
@@ -89,7 +89,7 @@
 #define EXYNOS4_PA_L2CC                        0x10502000
 
 #define EXYNOS4_PA_MDMA0               0x10810000
-#define EXYNOS4_PA_MDMA1               0x12840000
+#define EXYNOS4_PA_MDMA1               0x12850000
 #define EXYNOS4_PA_PDMA0               0x12680000
 #define EXYNOS4_PA_PDMA1               0x12690000
 #define EXYNOS5_PA_MDMA0               0x10800000
index 998daf2add92d9548733bc21ebe2bc167fcbe8f0..88a4543b00012ce67e433c12190d885a829e50e3 100644 (file)
@@ -58,7 +58,7 @@ static inline void platform_set_sysmmu(
 #endif
 
 #else /* !CONFIG_EXYNOS_DEV_SYSMMU */
-#define platform_set_sysmmu(dev, sysmmu) do { } while (0)
+#define platform_set_sysmmu(sysmmu, dev) do { } while (0)
 #endif
 
 #define SYSMMU_CLOCK_DEVNAME(ipname, id) (SYSMMU_DEVNAME_BASE "." #id)
index e37a724cd1eb5c1e2703571deb84f0adfc3d28f9..06003b4ccb10679a155390364e4a459c67909e50 100644 (file)
@@ -93,11 +93,6 @@ static struct of_dev_auxdata msm_auxdata_lookup[] __initdata = {
 
 static void __init msm8x60_dt_init(void)
 {
-       if (of_machine_is_compatible("qcom,msm8660-surf")) {
-               printk(KERN_INFO "Init surf UART registers\n");
-               msm8x60_init_uart12dm();
-       }
-
        of_platform_populate(NULL, of_default_bus_match_table,
                        msm_auxdata_lookup, NULL);
 }
index a1752c0284fca2e25ebdd74d100c6442c8799b1c..facf434d09bef45495049deab3a8e80e03a698f3 100644 (file)
@@ -46,7 +46,7 @@
 #define MSM8960_TMR0_SIZE      SZ_4K
 
 #ifdef CONFIG_DEBUG_MSM8960_UART
-#define MSM_DEBUG_UART_BASE    0xE1040000
+#define MSM_DEBUG_UART_BASE    0xF0040000
 #define MSM_DEBUG_UART_PHYS    0x16440000
 #endif
 
index 5aed57dc808c081f13c99f5d6ed0883c4ba46b56..21a2a8859a9ac12f6079d28b51fa927ca69f838f 100644 (file)
@@ -63,7 +63,7 @@
 #define MSM8X60_TMR0_SIZE      SZ_4K
 
 #ifdef CONFIG_DEBUG_MSM8660_UART
-#define MSM_DEBUG_UART_BASE    0xE1040000
+#define MSM_DEBUG_UART_BASE    0xF0040000
 #define MSM_DEBUG_UART_PHYS    0x19C40000
 #endif
 
index a1e7b11688500fb0e08040dbe4ddaf7f95f6eabf..af43f6acd7fc30c99467cc99034840719e743bdb 100644 (file)
 
 #include <mach/board.h>
 
-#define MSM_CHIP_DEVICE(name, chip) {                        \
+#define MSM_CHIP_DEVICE_TYPE(name, chip, mem_type) {                         \
                .virtual = (unsigned long) MSM_##name##_BASE, \
                .pfn = __phys_to_pfn(chip##_##name##_PHYS), \
                .length = chip##_##name##_SIZE, \
-               .type = MT_DEVICE_NONSHARED, \
+               .type = mem_type, \
         }
 
+#define MSM_DEVICE_TYPE(name, mem_type) \
+               MSM_CHIP_DEVICE_TYPE(name, MSM, mem_type)
+#define MSM_CHIP_DEVICE(name, chip) \
+               MSM_CHIP_DEVICE_TYPE(name, chip, MT_DEVICE)
 #define MSM_DEVICE(name) MSM_CHIP_DEVICE(name, MSM)
 
 #if defined(CONFIG_ARCH_MSM7X00A) || defined(CONFIG_ARCH_MSM7X27) \
        || defined(CONFIG_ARCH_MSM7X25)
 static struct map_desc msm_io_desc[] __initdata = {
-       MSM_DEVICE(VIC),
-       MSM_CHIP_DEVICE(CSR, MSM7X00),
-       MSM_DEVICE(DMOV),
-       MSM_CHIP_DEVICE(GPIO1, MSM7X00),
-       MSM_CHIP_DEVICE(GPIO2, MSM7X00),
-       MSM_DEVICE(CLK_CTL),
+       MSM_DEVICE_TYPE(VIC, MT_DEVICE_NONSHARED),
+       MSM_CHIP_DEVICE_TYPE(CSR, MSM7X00, MT_DEVICE_NONSHARED),
+       MSM_DEVICE_TYPE(DMOV, MT_DEVICE_NONSHARED),
+       MSM_CHIP_DEVICE_TYPE(GPIO1, MSM7X00, MT_DEVICE_NONSHARED),
+       MSM_CHIP_DEVICE_TYPE(GPIO2, MSM7X00, MT_DEVICE_NONSHARED),
+       MSM_DEVICE_TYPE(CLK_CTL, MT_DEVICE_NONSHARED),
 #if defined(CONFIG_DEBUG_MSM_UART1) || defined(CONFIG_DEBUG_MSM_UART2) || \
        defined(CONFIG_DEBUG_MSM_UART3)
-       MSM_DEVICE(DEBUG_UART),
-#endif
-#ifdef CONFIG_ARCH_MSM7X30
-       MSM_DEVICE(GCC),
+       MSM_DEVICE_TYPE(DEBUG_UART, MT_DEVICE_NONSHARED),
 #endif
        {
                .virtual =  (unsigned long) MSM_SHARED_RAM_BASE,
index f4535a7dadf537d7ffc0a691598db24103ba4ab1..c3841a9a8fa8f7b2f090b1404a2ea3bef2998305 100644 (file)
@@ -112,8 +112,7 @@ static struct mtd_partition nhk8815_partitions[] = {
 static struct nomadik_nand_platform_data nhk8815_nand_data = {
        .parts          = nhk8815_partitions,
        .nparts         = ARRAY_SIZE(nhk8815_partitions),
-       .options        = NAND_COPYBACK | NAND_CACHEPRG | NAND_NO_PADDING \
-                       | NAND_NO_READRDY,
+       .options        = NAND_COPYBACK | NAND_CACHEPRG | NAND_NO_PADDING,
        .init           = nhk8815_nand_init,
 };
 
index 9ad7d489b0deb8d2166b0288450fdba087dc450b..fe626e903deaa3683ff8cef9b328484ef8dbfb5a 100644 (file)
@@ -60,6 +60,7 @@ static int __init omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused)
        pdata->regs = kzalloc(sizeof(struct omap_gpio_reg_offs), GFP_KERNEL);
        if (!pdata->regs) {
                pr_err("gpio%d: Memory allocation failed\n", id);
+               kfree(pdata);
                return -ENOMEM;
        }
 
@@ -121,6 +122,7 @@ static int __init omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused)
                break;
        default:
                WARN(1, "Invalid gpio bank_type\n");
+               kfree(pdata->regs);
                kfree(pdata);
                return -EINVAL;
        }
index 330d4c6e746b703819f95ba41d733a88523b555a..c4bee21f421002ac378592110f2a0a3f34e7f33b 100644 (file)
@@ -229,13 +229,7 @@ static inline void omap4_irq_save_context(void)
        /* Save AuxBoot* registers */
        val = __raw_readl(wakeupgen_base + OMAP_AUX_CORE_BOOT_0);
        __raw_writel(val, sar_base + AUXCOREBOOT0_OFFSET);
-       val = __raw_readl(wakeupgen_base + OMAP_AUX_CORE_BOOT_0);
-       __raw_writel(val, sar_base + AUXCOREBOOT1_OFFSET);
-
-       /* Save SyncReq generation logic */
-       val = __raw_readl(wakeupgen_base + OMAP_AUX_CORE_BOOT_0);
-       __raw_writel(val, sar_base + AUXCOREBOOT0_OFFSET);
-       val = __raw_readl(wakeupgen_base + OMAP_AUX_CORE_BOOT_0);
+       val = __raw_readl(wakeupgen_base + OMAP_AUX_CORE_BOOT_1);
        __raw_writel(val, sar_base + AUXCOREBOOT1_OFFSET);
 
        /* Save SyncReq generation logic */
index bb8d008d5a5ca478ff1fb62e13ba7730a74c47ef..7e15cc430688025a746427c014bca3a1777692a6 100644 (file)
@@ -380,7 +380,7 @@ int h1940_led_blink_set(unsigned gpio, int state,
        default:
                blink_gpio = S3C2410_GPA(3);
                check_gpio1 = S3C2410_GPA(1);
-               check_gpio1 = S3C2410_GPA(7);
+               check_gpio2 = S3C2410_GPA(7);
                break;
        }
 
@@ -460,7 +460,7 @@ static void h1940_set_mmc_power(unsigned char power_mode, unsigned short vdd)
                break;
        default:
                break;
-       };
+       }
 }
 
 static struct s3c24xx_mci_pdata h1940_mmc_cfg __initdata = {
index 15d506501cccbb64dc25e5a1178bd91d40e94901..de0662de28a0dec38ff3c3ec5edd0db3d03f4195 100644 (file)
@@ -199,7 +199,9 @@ int __init tegra_powergate_init(void)
 
 #ifdef CONFIG_DEBUG_FS
 
-static const char * const powergate_name[] = {
+static const char * const *powergate_name;
+
+static const char * const powergate_name_t20[] = {
        [TEGRA_POWERGATE_CPU]   = "cpu",
        [TEGRA_POWERGATE_3D]    = "3d",
        [TEGRA_POWERGATE_VENC]  = "venc",
@@ -209,6 +211,23 @@ static const char * const powergate_name[] = {
        [TEGRA_POWERGATE_MPE]   = "mpe",
 };
 
+static const char * const powergate_name_t30[] = {
+       [TEGRA_POWERGATE_CPU]   = "cpu0",
+       [TEGRA_POWERGATE_3D]    = "3d0",
+       [TEGRA_POWERGATE_VENC]  = "venc",
+       [TEGRA_POWERGATE_VDEC]  = "vdec",
+       [TEGRA_POWERGATE_PCIE]  = "pcie",
+       [TEGRA_POWERGATE_L2]    = "l2",
+       [TEGRA_POWERGATE_MPE]   = "mpe",
+       [TEGRA_POWERGATE_HEG]   = "heg",
+       [TEGRA_POWERGATE_SATA]  = "sata",
+       [TEGRA_POWERGATE_CPU1]  = "cpu1",
+       [TEGRA_POWERGATE_CPU2]  = "cpu2",
+       [TEGRA_POWERGATE_CPU3]  = "cpu3",
+       [TEGRA_POWERGATE_CELP]  = "celp",
+       [TEGRA_POWERGATE_3D1]   = "3d1",
+};
+
 static int powergate_show(struct seq_file *s, void *data)
 {
        int i;
@@ -237,14 +256,24 @@ static const struct file_operations powergate_fops = {
 int __init tegra_powergate_debugfs_init(void)
 {
        struct dentry *d;
-       int err = -ENOMEM;
 
-       d = debugfs_create_file("powergate", S_IRUGO, NULL, NULL,
-               &powergate_fops);
-       if (!d)
-               return -ENOMEM;
+       switch (tegra_chip_id) {
+       case TEGRA20:
+               powergate_name = powergate_name_t20;
+               break;
+       case TEGRA30:
+               powergate_name = powergate_name_t30;
+               break;
+       }
+
+       if (powergate_name) {
+               d = debugfs_create_file("powergate", S_IRUGO, NULL, NULL,
+                       &powergate_fops);
+               if (!d)
+                       return -ENOMEM;
+       }
 
-       return err;
+       return 0;
 }
 
 #endif
index a258996d954b9fc5f260196f48f8e8449a28d277..c77c86c47369c8aa8aefbbdb671704d5e5a6f0c3 100644 (file)
@@ -29,6 +29,7 @@ config MACH_MOP500
        select I2C
        select I2C_NOMADIK
        select SOC_BUS
+       select REGULATOR_FIXED_VOLTAGE
        help
          Include support for the MOP500 development platform.
 
index 52426a4257871cf62e3f2681d7d36b3ca83bea22..2a17bc506cff7cdad26d95d243d97c7e8a71295a 100644 (file)
 #include <linux/regulator/ab8500.h>
 #include "board-mop500-regulators.h"
 
+static struct regulator_consumer_supply gpio_en_3v3_consumers[] = {
+       REGULATOR_SUPPLY("vdd33a", "smsc911x.0"),
+};
+
+struct regulator_init_data gpio_en_3v3_regulator = {
+       .constraints = {
+               .name = "EN-3V3",
+               .min_uV = 3300000,
+               .max_uV = 3300000,
+               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
+       },
+       .num_consumer_supplies = ARRAY_SIZE(gpio_en_3v3_consumers),
+       .consumer_supplies = gpio_en_3v3_consumers,
+};
+
 /*
  * TPS61052 regulator
  */
index 94992158d96230ad42f65aca2fdfd5e05ceeb5ae..78a0642a2206a175150ed8749f90d60068507fe2 100644 (file)
@@ -18,5 +18,6 @@ extern struct ab8500_regulator_reg_init
 ab8500_regulator_reg_init[AB8500_NUM_REGULATOR_REGISTERS];
 extern struct regulator_init_data ab8500_regulators[AB8500_NUM_REGULATORS];
 extern struct regulator_init_data tps61052_regulator;
+extern struct regulator_init_data gpio_en_3v3_regulator;
 
 #endif
index 1d2e3c6f8b5911a0cc2d6c59602559bca823c75f..c8922bca68a468d5e461d29ae6966234c6ba9b02 100644 (file)
@@ -23,6 +23,7 @@
 #include <linux/spi/spi.h>
 #include <linux/mfd/abx500/ab8500.h>
 #include <linux/regulator/ab8500.h>
+#include <linux/regulator/fixed.h>
 #include <linux/mfd/tc3589x.h>
 #include <linux/mfd/tps6105x.h>
 #include <linux/mfd/abx500/ab8500-gpio.h>
@@ -76,6 +77,23 @@ static struct platform_device snowball_led_dev = {
        },
 };
 
+static struct fixed_voltage_config snowball_gpio_en_3v3_data = {
+       .supply_name            = "EN-3V3",
+       .gpio                   = SNOWBALL_EN_3V3_ETH_GPIO,
+       .microvolts             = 3300000,
+       .enable_high            = 1,
+       .init_data              = &gpio_en_3v3_regulator,
+       .startup_delay          = 5000, /* 1200us */
+};
+
+static struct platform_device snowball_gpio_en_3v3_regulator_dev = {
+       .name   = "reg-fixed-voltage",
+       .id     = 1,
+       .dev    = {
+               .platform_data  = &snowball_gpio_en_3v3_data,
+       },
+};
+
 static struct ab8500_gpio_platform_data ab8500_gpio_pdata = {
        .gpio_base              = MOP500_AB8500_PIN_GPIO(1),
        .irq_base               = MOP500_AB8500_VIR_GPIO_IRQ_BASE,
@@ -565,6 +583,7 @@ static struct platform_device *snowball_platform_devs[] __initdata = {
        &snowball_led_dev,
        &snowball_key_dev,
        &snowball_sbnet_dev,
+       &snowball_gpio_en_3v3_regulator_dev,
 };
 
 static void __init mop500_init_machine(void)
index db3c52d56ca46ad54bddbcaaa2f48d7c64f025a6..4e59746bcff42501b849b3049c2fe43d156bea83 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/io.h>
 #include <linux/mfd/abx500/ab8500.h>
 
+#include <asm/pmu.h>
 #include <asm/mach/map.h>
 #include <asm/pmu.h>
 #include <plat/gpio-nomadik.h>
index 17a78ec516ff8950be37330acceaae172d89731a..8e755638aa76184923ad644a6d5ba4e4aced2de1 100644 (file)
@@ -49,6 +49,8 @@ void __init ux500_init_irq(void)
        void __iomem *dist_base;
        void __iomem *cpu_base;
 
+       gic_arch_extn.flags = IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND;
+
        if (cpu_is_u8500_family()) {
                dist_base = __io_address(U8500_GIC_DIST_BASE);
                cpu_base = __io_address(U8500_GIC_CPU_BASE);
index 2a8e380501e81a2c0bcaf08c8d018f0c9f20050c..577baf7d0a8de418aa7a949dcbfb0ec824b7c3d0 100644 (file)
@@ -554,7 +554,7 @@ static const struct of_device_id l2x0_ids[] __initconst = {
 int __init l2x0_of_init(u32 aux_val, u32 aux_mask)
 {
        struct device_node *np;
-       struct l2x0_of_data *data;
+       const struct l2x0_of_data *data;
        struct resource res;
 
        np = of_find_matching_node(NULL, l2x0_ids);
index fc49f3dabd7653624b7f9ccc8e78ef12b102d527..2195209aa54384fca8673194463e12e482066ead 100644 (file)
@@ -1591,6 +1591,8 @@ struct platform_device s3c64xx_device_spi1 = {
 void __init s3c64xx_spi1_set_platdata(int (*cfg_gpio)(void), int src_clk_nr,
                                                int num_cs)
 {
+       struct s3c64xx_spi_info pd;
+
        /* Reject invalid configuration */
        if (!num_cs || src_clk_nr < 0) {
                pr_err("%s: Invalid SPI configuration\n", __func__);
index 1a046715e4615fdb469ae95b81a99ba855c87e5c..1d769a29249f846a444bee68819730b5d12496ea 100644 (file)
@@ -326,7 +326,7 @@ static int pmc_probe(struct platform_device *ofdev)
        const struct of_device_id *match;
        struct device_node *np = ofdev->dev.of_node;
        struct resource res;
-       struct pmc_type *type;
+       const struct pmc_type *type;
        int ret = 0;
 
        match = of_match_device(pmc_match, &ofdev->dev);
index 5822141aa63f3f21f73739ea1b2210971698040b..abc8af43ea7c5abf293d56abca685963de63560b 100644 (file)
@@ -472,7 +472,7 @@ int __init celleb_setup_phb(struct pci_controller *phb)
 {
        struct device_node *dev = phb->dn;
        const struct of_device_id *match;
-       struct celleb_phb_spec *phb_spec;
+       const struct celleb_phb_spec *phb_spec;
        int rc;
 
        match = of_match_node(celleb_phb_match, dev);
index 6e097de00e093741890b12c45cb13b16d99d1d20..51ffafae561ea5a4a12da1f401c76da164811fff 100644 (file)
@@ -368,7 +368,7 @@ static int __devinit fsl_of_msi_probe(struct platform_device *dev)
        int err, i, j, irq_index, count;
        int rc;
        const u32 *p;
-       struct fsl_msi_feature *features;
+       const struct fsl_msi_feature *features;
        int len;
        u32 offset;
        static const u32 all_avail[] = { 0, NR_MSI_IRQS };
@@ -502,15 +502,15 @@ static const struct fsl_msi_feature vmpic_msi_feature = {
 static const struct of_device_id fsl_of_msi_ids[] = {
        {
                .compatible = "fsl,mpic-msi",
-               .data = (void *)&mpic_msi_feature,
+               .data = &mpic_msi_feature,
        },
        {
                .compatible = "fsl,ipic-msi",
-               .data = (void *)&ipic_msi_feature,
+               .data = &ipic_msi_feature,
        },
        {
                .compatible = "fsl,vmpic-msi",
-               .data = (void *)&vmpic_msi_feature,
+               .data = &vmpic_msi_feature,
        },
        {}
 };
index 24acd711e0326852e2bf97bce308fb1fe272cea6..4708467e4d83fd1cc5219a8fc24ddaf3081bd804 100644 (file)
@@ -201,7 +201,7 @@ struct tegra_dma {
        struct clk                      *dma_clk;
        spinlock_t                      global_lock;
        void __iomem                    *base_addr;
-       struct tegra_dma_chip_data      *chip_data;
+       const struct tegra_dma_chip_data *chip_data;
 
        /* Some register need to be cache before suspend */
        u32                             reg_gen;
@@ -1173,14 +1173,14 @@ static void tegra_dma_free_chan_resources(struct dma_chan *dc)
 }
 
 /* Tegra20 specific DMA controller information */
-static struct tegra_dma_chip_data tegra20_dma_chip_data = {
+static const struct tegra_dma_chip_data tegra20_dma_chip_data = {
        .nr_channels            = 16,
        .max_dma_count          = 1024UL * 64,
 };
 
 #if defined(CONFIG_OF)
 /* Tegra30 specific DMA controller information */
-static struct tegra_dma_chip_data tegra30_dma_chip_data = {
+static const struct tegra_dma_chip_data tegra30_dma_chip_data = {
        .nr_channels            = 32,
        .max_dma_count          = 1024UL * 64,
 };
@@ -1204,7 +1204,7 @@ static int __devinit tegra_dma_probe(struct platform_device *pdev)
        struct tegra_dma *tdma;
        int ret;
        int i;
-       struct tegra_dma_chip_data *cdata = NULL;
+       const struct tegra_dma_chip_data *cdata = NULL;
 
        if (pdev->dev.of_node) {
                const struct of_device_id *match;
index 5a1817eedd1ba42a661bde558d212d748b9752a3..9ae29cc0d17faf78a5482cbd3b1878e785f45261 100644 (file)
@@ -38,7 +38,7 @@ struct mpc8xxx_gpio_chip {
         */
        u32 data;
        struct irq_domain *irq;
-       void *of_dev_id_data;
+       const void *of_dev_id_data;
 };
 
 static inline u32 mpc8xxx_gpio2mask(unsigned int gpio)
index e6efd77668f0fb5ccab3a917629b07134885ee73..0725d181581f276f803a7b457ca4ab6a8068619f 100644 (file)
@@ -1058,7 +1058,7 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev)
        struct device *dev = &pdev->dev;
        struct device_node *node = dev->of_node;
        const struct of_device_id *match;
-       struct omap_gpio_platform_data *pdata;
+       const struct omap_gpio_platform_data *pdata;
        struct resource *res;
        struct gpio_bank *bank;
        int ret = 0;
@@ -1440,19 +1440,19 @@ static struct omap_gpio_reg_offs omap4_gpio_regs = {
        .fallingdetect =        OMAP4_GPIO_FALLINGDETECT,
 };
 
-static struct omap_gpio_platform_data omap2_pdata = {
+const static struct omap_gpio_platform_data omap2_pdata = {
        .regs = &omap2_gpio_regs,
        .bank_width = 32,
        .dbck_flag = false,
 };
 
-static struct omap_gpio_platform_data omap3_pdata = {
+const static struct omap_gpio_platform_data omap3_pdata = {
        .regs = &omap2_gpio_regs,
        .bank_width = 32,
        .dbck_flag = true,
 };
 
-static struct omap_gpio_platform_data omap4_pdata = {
+const static struct omap_gpio_platform_data omap4_pdata = {
        .regs = &omap4_gpio_regs,
        .bank_width = 32,
        .dbck_flag = true,
index b76731edbf106cfbe505173a677da38df02c146b..57f7703ce2e8cfbba6af7665b8cfde11e8d0fb9e 100644 (file)
@@ -647,7 +647,7 @@ static int __devinit fsl_i2c_probe(struct platform_device *op)
        }
 
        if (match->data) {
-               struct mpc_i2c_data *data = match->data;
+               const struct mpc_i2c_data *data = match->data;
                data->setup(op->dev.of_node, i2c, clock, data->prescaler);
        } else {
                /* Backwards compatibility */
@@ -730,24 +730,24 @@ static int mpc_i2c_resume(struct device *dev)
 SIMPLE_DEV_PM_OPS(mpc_i2c_pm_ops, mpc_i2c_suspend, mpc_i2c_resume);
 #endif
 
-static struct mpc_i2c_data mpc_i2c_data_512x __devinitdata = {
+static const struct mpc_i2c_data mpc_i2c_data_512x __devinitdata = {
        .setup = mpc_i2c_setup_512x,
 };
 
-static struct mpc_i2c_data mpc_i2c_data_52xx __devinitdata = {
+static const struct mpc_i2c_data mpc_i2c_data_52xx __devinitdata = {
        .setup = mpc_i2c_setup_52xx,
 };
 
-static struct mpc_i2c_data mpc_i2c_data_8313 __devinitdata = {
+static const struct mpc_i2c_data mpc_i2c_data_8313 __devinitdata = {
        .setup = mpc_i2c_setup_8xxx,
 };
 
-static struct mpc_i2c_data mpc_i2c_data_8543 __devinitdata = {
+static const struct mpc_i2c_data mpc_i2c_data_8543 __devinitdata = {
        .setup = mpc_i2c_setup_8xxx,
        .prescaler = 2,
 };
 
-static struct mpc_i2c_data mpc_i2c_data_8544 __devinitdata = {
+static const struct mpc_i2c_data mpc_i2c_data_8544 __devinitdata = {
        .setup = mpc_i2c_setup_8xxx,
        .prescaler = 3,
 };
index 5d19a49803c152089c85b5b51c4d83cbb7a91cda..a0e49f6aaf96eaa81ac712a4a279fafbdf13af95 100644 (file)
@@ -944,7 +944,8 @@ omap_i2c_probe(struct platform_device *pdev)
        struct omap_i2c_dev     *dev;
        struct i2c_adapter      *adap;
        struct resource         *mem, *irq, *ioarea;
-       struct omap_i2c_bus_platform_data *pdata = pdev->dev.platform_data;
+       const struct omap_i2c_bus_platform_data *pdata =
+               pdev->dev.platform_data;
        struct device_node      *node = pdev->dev.of_node;
        const struct of_device_id *match;
        irq_handler_t isr;
index 831d7517c759294f4936e810f12008c257e5c1f4..3f8d032f180fd5c0ec76901742c00cb58212acb1 100644 (file)
@@ -63,7 +63,7 @@ struct media_bay_info {
        int                             value_count;
        int                             timer;
        struct macio_dev                *mdev;
-       struct mb_ops*                  ops;
+       const struct mb_ops*            ops;
        int                             index;
        int                             cached_gpio;
        int                             sleeping;
@@ -669,7 +669,7 @@ static int media_bay_resume(struct macio_dev *mdev)
 
 /* Definitions of "ops" structures.
  */
-static struct mb_ops ohare_mb_ops = {
+static const struct mb_ops ohare_mb_ops = {
        .name           = "Ohare",
        .content        = ohare_mb_content,
        .power          = ohare_mb_power,
@@ -678,7 +678,7 @@ static struct mb_ops ohare_mb_ops = {
        .un_reset_ide   = ohare_mb_un_reset_ide,
 };
 
-static struct mb_ops heathrow_mb_ops = {
+static const struct mb_ops heathrow_mb_ops = {
        .name           = "Heathrow",
        .content        = heathrow_mb_content,
        .power          = heathrow_mb_power,
@@ -687,7 +687,7 @@ static struct mb_ops heathrow_mb_ops = {
        .un_reset_ide   = heathrow_mb_un_reset_ide,
 };
 
-static struct mb_ops keylargo_mb_ops = {
+static const struct mb_ops keylargo_mb_ops = {
        .name           = "KeyLargo",
        .init           = keylargo_mb_init,
        .content        = keylargo_mb_content,
index 82c9d64502868ba94ea8d215d9a5e864ed42f19a..352c58b5a90d2406e8467bfdacfbd2ba5fefa1b6 100644 (file)
@@ -46,7 +46,7 @@ static int da9052_i2c_enable_multiwrite(struct da9052 *da9052)
        return 0;
 }
 
-static struct i2c_device_id da9052_i2c_id[] = {
+static const struct i2c_device_id da9052_i2c_id[] = {
        {"da9052", DA9052},
        {"da9053-aa", DA9053_AA},
        {"da9053-ba", DA9053_BA},
@@ -104,7 +104,7 @@ static int __devinit da9052_i2c_probe(struct i2c_client *client,
                const struct of_device_id *deviceid;
 
                deviceid = of_match_node(dialog_dt_ids, np);
-               id = (const struct i2c_device_id *)deviceid->data;
+               id = deviceid->data;
        }
 #endif
 
index 686e256764c854e2c1a58c17392c4b52e8ac72e2..8e2d81f1ee4b4a74efc4afb23b4267dc669fa35b 100644 (file)
@@ -1782,7 +1782,7 @@ static int __devinit omap_hsmmc_probe(struct platform_device *pdev)
        if (match) {
                pdata = of_get_hsmmc_pdata(&pdev->dev);
                if (match->data) {
-                       u16 *offsetp = match->data;
+                       const u16 *offsetp = match->data;
                        pdata->reg_offset = *offsetp;
                }
        }
index 06adf881ea24b39fef1401b40db6b5a5a88410d3..8a8df82988d13d238e2b7b8448e6b691bc82300a 100644 (file)
@@ -380,12 +380,12 @@ static int mpc5xxx_can_resume(struct platform_device *ofdev)
 }
 #endif
 
-static struct mpc5xxx_can_data __devinitdata mpc5200_can_data = {
+static const struct mpc5xxx_can_data __devinitdata mpc5200_can_data = {
        .type = MSCAN_TYPE_MPC5200,
        .get_clock = mpc52xx_can_get_clock,
 };
 
-static struct mpc5xxx_can_data __devinitdata mpc5121_can_data = {
+static const struct mpc5xxx_can_data __devinitdata mpc5121_can_data = {
        .type = MSCAN_TYPE_MPC5121,
        .get_clock = mpc512x_can_get_clock,
 };
index 490bb82b5bdbd0be8394590f0c7c65b85088f238..cfec9dd18ff5463813d3238aeba9873f164b4703 100644 (file)
@@ -297,7 +297,7 @@ static int pxa2xx_drv_pcmcia_probe(struct platform_device *dev)
        }
 
        clk = clk_get(&dev->dev, NULL);
-       if (!clk)
+       if (IS_ERR(clk))
                return -ENODEV;
 
        pxa2xx_drv_pcmcia_ops(ops);
index e834ff8c0188281dc0fe25304c31df4294afde5f..3bd9c691b796d181557a8bd71dc645a586da9391 100644 (file)
@@ -97,7 +97,7 @@ struct spi_imx_data {
        const void *tx_buf;
        unsigned int txfifo; /* number of words pushed in tx FIFO */
 
-       struct spi_imx_devtype_data *devtype_data;
+       const struct spi_imx_devtype_data *devtype_data;
        int chipselect[0];
 };
 
index b2fb141da37565de69139fee9743b153fb463699..569714ebffe073c888698bb349b1f57a688d75d2 100644 (file)
@@ -1116,7 +1116,7 @@ MODULE_DEVICE_TABLE(of, omap_mcspi_of_match);
 static int __devinit omap2_mcspi_probe(struct platform_device *pdev)
 {
        struct spi_master       *master;
-       struct omap2_mcspi_platform_config *pdata;
+       const struct omap2_mcspi_platform_config *pdata;
        struct omap2_mcspi      *mcspi;
        struct resource         *r;
        int                     status = 0, i;
index f19d04ed858629de3ebc6f64df63c375087cc8bb..8cf577008ad74799f8957f08a19a94b0d8ca382a 100644 (file)
@@ -598,7 +598,7 @@ static struct psc_ops mpc512x_psc_ops = {
 };
 #endif
 
-static struct psc_ops *psc_ops;
+static const struct psc_ops *psc_ops;
 
 /* ======================================================================== */
 /* UART operations                                                          */
index 40f7bf1f8654da6f9db51a1d78637353f55cd9f3..e6a038ae8dc28bf6c64a6311e886b6afa8853db8 100644 (file)
@@ -193,7 +193,7 @@ static int __devinit mpc8xxx_wdt_probe(struct platform_device *ofdev)
        int ret;
        const struct of_device_id *match;
        struct device_node *np = ofdev->dev.of_node;
-       struct mpc8xxx_wdt_type *wdt_type;
+       const struct mpc8xxx_wdt_type *wdt_type;
        u32 freq = fsl_get_sys_freq();
        bool enabled;
 
index 1d14b1dc1aee69588ce68329e5fa71189d277016..89a931babecf86ebbf95c6a0e8b648840d06ad06 100644 (file)
@@ -63,7 +63,7 @@ struct atmel_tc {
        struct platform_device  *pdev;
        struct resource         *iomem;
        void __iomem            *regs;
-       struct atmel_tcb_config *tcb_config;
+       const struct atmel_tcb_config *tcb_config;
        int                     irq[3];
        struct clk              *clk[3];
        struct list_head        node;
index 70c6a359b2f4d125f82b872766a88c58abdf531e..fed3def6281827f27c029638056dfda618c5c631 100644 (file)
@@ -232,7 +232,7 @@ struct of_device_id
        char    type[32];
        char    compatible[128];
 #ifdef __KERNEL__
-       void    *data;
+       const void *data;
 #else
        kernel_ulong_t data;
 #endif