diff options
43 files changed, 154 insertions, 90 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index de325f4615b..4c428dc999e 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -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 diff --git a/arch/arm/mach-ep93xx/adssphere.c b/arch/arm/mach-ep93xx/adssphere.c index a472777e9eb..41383bf03d4 100644 --- a/arch/arm/mach-ep93xx/adssphere.c +++ b/arch/arm/mach-ep93xx/adssphere.c @@ -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> diff --git a/arch/arm/mach-ep93xx/gesbc9312.c b/arch/arm/mach-ep93xx/gesbc9312.c index 437c3411115..7fd705b5efe 100644 --- a/arch/arm/mach-ep93xx/gesbc9312.c +++ b/arch/arm/mach-ep93xx/gesbc9312.c @@ -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> diff --git a/arch/arm/mach-ep93xx/ts72xx.c b/arch/arm/mach-ep93xx/ts72xx.c index 75cab2d7ec7..3c4c233391d 100644 --- a/arch/arm/mach-ep93xx/ts72xx.c +++ b/arch/arm/mach-ep93xx/ts72xx.c @@ -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> @@ -29,30 +28,31 @@  #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, diff --git a/arch/arm/mach-ep93xx/include/mach/ts72xx.h b/arch/arm/mach-ep93xx/ts72xx.h index f1397a13e76..071feaa30ad 100644 --- a/arch/arm/mach-ep93xx/include/mach/ts72xx.h +++ b/arch/arm/mach-ep93xx/ts72xx.h @@ -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 @@ -34,18 +34,18 @@  #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 diff --git a/arch/arm/mach-exynos/include/mach/map.h b/arch/arm/mach-exynos/include/mach/map.h index c72b675b3e4..c941053dd5a 100644 --- a/arch/arm/mach-exynos/include/mach/map.h +++ b/arch/arm/mach-exynos/include/mach/map.h @@ -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 diff --git a/arch/arm/mach-exynos/include/mach/sysmmu.h b/arch/arm/mach-exynos/include/mach/sysmmu.h index 998daf2add9..88a4543b000 100644 --- a/arch/arm/mach-exynos/include/mach/sysmmu.h +++ b/arch/arm/mach-exynos/include/mach/sysmmu.h @@ -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) diff --git a/arch/arm/mach-msm/board-msm8x60.c b/arch/arm/mach-msm/board-msm8x60.c index e37a724cd1e..06003b4ccb1 100644 --- a/arch/arm/mach-msm/board-msm8x60.c +++ b/arch/arm/mach-msm/board-msm8x60.c @@ -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);  } diff --git a/arch/arm/mach-msm/include/mach/msm_iomap-8960.h b/arch/arm/mach-msm/include/mach/msm_iomap-8960.h index a1752c0284f..facf434d09b 100644 --- a/arch/arm/mach-msm/include/mach/msm_iomap-8960.h +++ b/arch/arm/mach-msm/include/mach/msm_iomap-8960.h @@ -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 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 5aed57dc808..21a2a8859a9 100644 --- a/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h +++ b/arch/arm/mach-msm/include/mach/msm_iomap-8x60.h @@ -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 diff --git a/arch/arm/mach-msm/io.c b/arch/arm/mach-msm/io.c index a1e7b116885..af43f6acd7f 100644 --- a/arch/arm/mach-msm/io.c +++ b/arch/arm/mach-msm/io.c @@ -29,30 +29,31 @@  #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, diff --git a/arch/arm/mach-nomadik/board-nhk8815.c b/arch/arm/mach-nomadik/board-nhk8815.c index f4535a7dadf..c3841a9a8fa 100644 --- a/arch/arm/mach-nomadik/board-nhk8815.c +++ b/arch/arm/mach-nomadik/board-nhk8815.c @@ -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,  }; diff --git a/arch/arm/mach-omap2/gpio.c b/arch/arm/mach-omap2/gpio.c index 9ad7d489b0d..fe626e903de 100644 --- a/arch/arm/mach-omap2/gpio.c +++ b/arch/arm/mach-omap2/gpio.c @@ -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;  	} diff --git a/arch/arm/mach-omap2/omap-wakeupgen.c b/arch/arm/mach-omap2/omap-wakeupgen.c index 330d4c6e746..c4bee21f421 100644 --- a/arch/arm/mach-omap2/omap-wakeupgen.c +++ b/arch/arm/mach-omap2/omap-wakeupgen.c @@ -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 */ diff --git a/arch/arm/mach-s3c24xx/mach-h1940.c b/arch/arm/mach-s3c24xx/mach-h1940.c index bb8d008d5a5..7e15cc43068 100644 --- a/arch/arm/mach-s3c24xx/mach-h1940.c +++ b/arch/arm/mach-s3c24xx/mach-h1940.c @@ -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 = { diff --git a/arch/arm/mach-tegra/powergate.c b/arch/arm/mach-tegra/powergate.c index 15d506501cc..de0662de28a 100644 --- a/arch/arm/mach-tegra/powergate.c +++ b/arch/arm/mach-tegra/powergate.c @@ -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 diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig index a258996d954..c77c86c4736 100644 --- a/arch/arm/mach-ux500/Kconfig +++ b/arch/arm/mach-ux500/Kconfig @@ -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. diff --git a/arch/arm/mach-ux500/board-mop500-regulators.c b/arch/arm/mach-ux500/board-mop500-regulators.c index 52426a42578..2a17bc506cf 100644 --- a/arch/arm/mach-ux500/board-mop500-regulators.c +++ b/arch/arm/mach-ux500/board-mop500-regulators.c @@ -13,6 +13,21 @@  #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   */ diff --git a/arch/arm/mach-ux500/board-mop500-regulators.h b/arch/arm/mach-ux500/board-mop500-regulators.h index 94992158d96..78a0642a220 100644 --- a/arch/arm/mach-ux500/board-mop500-regulators.h +++ b/arch/arm/mach-ux500/board-mop500-regulators.h @@ -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 diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index 1d2e3c6f8b5..c8922bca68a 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c @@ -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) diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index db3c52d56ca..4e59746bcff 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c @@ -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> diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c index 17a78ec516f..8e755638aa7 100644 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c @@ -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); diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c index 2a8e380501e..577baf7d0a8 100644 --- a/arch/arm/mm/cache-l2x0.c +++ b/arch/arm/mm/cache-l2x0.c @@ -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); diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c index fc49f3dabd7..2195209aa54 100644 --- a/arch/arm/plat-samsung/devs.c +++ b/arch/arm/plat-samsung/devs.c @@ -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__); diff --git a/arch/powerpc/platforms/83xx/suspend.c b/arch/powerpc/platforms/83xx/suspend.c index 1a046715e46..1d769a29249 100644 --- a/arch/powerpc/platforms/83xx/suspend.c +++ b/arch/powerpc/platforms/83xx/suspend.c @@ -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); diff --git a/arch/powerpc/platforms/cell/celleb_pci.c b/arch/powerpc/platforms/cell/celleb_pci.c index 5822141aa63..abc8af43ea7 100644 --- a/arch/powerpc/platforms/cell/celleb_pci.c +++ b/arch/powerpc/platforms/cell/celleb_pci.c @@ -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); diff --git a/arch/powerpc/sysdev/fsl_msi.c b/arch/powerpc/sysdev/fsl_msi.c index 6e097de00e0..51ffafae561 100644 --- a/arch/powerpc/sysdev/fsl_msi.c +++ b/arch/powerpc/sysdev/fsl_msi.c @@ -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,  	},  	{}  }; diff --git a/drivers/dma/tegra20-apb-dma.c b/drivers/dma/tegra20-apb-dma.c index 24acd711e03..4708467e4d8 100644 --- a/drivers/dma/tegra20-apb-dma.c +++ b/drivers/dma/tegra20-apb-dma.c @@ -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; diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c index 5a1817eedd1..9ae29cc0d17 100644 --- a/drivers/gpio/gpio-mpc8xxx.c +++ b/drivers/gpio/gpio-mpc8xxx.c @@ -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) diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c index e6efd77668f..0725d181581 100644 --- a/drivers/gpio/gpio-omap.c +++ b/drivers/gpio/gpio-omap.c @@ -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, diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c index b76731edbf1..57f7703ce2e 100644 --- a/drivers/i2c/busses/i2c-mpc.c +++ b/drivers/i2c/busses/i2c-mpc.c @@ -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,  }; diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index 5d19a49803c..a0e49f6aaf9 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c @@ -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; diff --git a/drivers/macintosh/mediabay.c b/drivers/macintosh/mediabay.c index 831d7517c75..3f8d032f180 100644 --- a/drivers/macintosh/mediabay.c +++ b/drivers/macintosh/mediabay.c @@ -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, diff --git a/drivers/mfd/da9052-i2c.c b/drivers/mfd/da9052-i2c.c index 82c9d645028..352c58b5a90 100644 --- a/drivers/mfd/da9052-i2c.c +++ b/drivers/mfd/da9052-i2c.c @@ -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 diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c index 686e256764c..8e2d81f1ee4 100644 --- a/drivers/mmc/host/omap_hsmmc.c +++ b/drivers/mmc/host/omap_hsmmc.c @@ -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;  		}  	} diff --git a/drivers/net/can/mscan/mpc5xxx_can.c b/drivers/net/can/mscan/mpc5xxx_can.c index 06adf881ea2..8a8df82988d 100644 --- a/drivers/net/can/mscan/mpc5xxx_can.c +++ b/drivers/net/can/mscan/mpc5xxx_can.c @@ -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,  }; diff --git a/drivers/pcmcia/pxa2xx_base.c b/drivers/pcmcia/pxa2xx_base.c index 490bb82b5bd..cfec9dd18ff 100644 --- a/drivers/pcmcia/pxa2xx_base.c +++ b/drivers/pcmcia/pxa2xx_base.c @@ -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); diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c index e834ff8c018..3bd9c691b79 100644 --- a/drivers/spi/spi-imx.c +++ b/drivers/spi/spi-imx.c @@ -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];  }; diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c index b2fb141da37..569714ebffe 100644 --- a/drivers/spi/spi-omap2-mcspi.c +++ b/drivers/spi/spi-omap2-mcspi.c @@ -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; diff --git a/drivers/tty/serial/mpc52xx_uart.c b/drivers/tty/serial/mpc52xx_uart.c index f19d04ed858..8cf577008ad 100644 --- a/drivers/tty/serial/mpc52xx_uart.c +++ b/drivers/tty/serial/mpc52xx_uart.c @@ -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                                                          */ diff --git a/drivers/watchdog/mpc8xxx_wdt.c b/drivers/watchdog/mpc8xxx_wdt.c index 40f7bf1f865..e6a038ae8dc 100644 --- a/drivers/watchdog/mpc8xxx_wdt.c +++ b/drivers/watchdog/mpc8xxx_wdt.c @@ -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; diff --git a/include/linux/atmel_tc.h b/include/linux/atmel_tc.h index 1d14b1dc1ae..89a931babec 100644 --- a/include/linux/atmel_tc.h +++ b/include/linux/atmel_tc.h @@ -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; diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index 70c6a359b2f..fed3def6281 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -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  |