diff options
Diffstat (limited to 'arch/arm')
35 files changed, 192 insertions, 136 deletions
diff --git a/arch/arm/boot/dts/bcm11351.dtsi b/arch/arm/boot/dts/bcm11351.dtsi index 18045c38bcf1..db7cded1b7ad 100644 --- a/arch/arm/boot/dts/bcm11351.dtsi +++ b/arch/arm/boot/dts/bcm11351.dtsi @@ -55,7 +55,7 @@  		      <0x3ff00100 0x100>;  	}; -	smc@0x3404c000 { +	smc@3404c000 {  		compatible = "brcm,bcm11351-smc", "brcm,kona-smc";  		reg = <0x3404c000 0x400>; /* 1 KiB in SRAM */  	}; diff --git a/arch/arm/boot/dts/bcm21664.dtsi b/arch/arm/boot/dts/bcm21664.dtsi index 6dde95f21cef..266f2611dc22 100644 --- a/arch/arm/boot/dts/bcm21664.dtsi +++ b/arch/arm/boot/dts/bcm21664.dtsi @@ -55,7 +55,7 @@  		      <0x3ff00100 0x100>;  	}; -	smc@0x3404e000 { +	smc@3404e000 {  		compatible = "brcm,bcm21664-smc", "brcm,kona-smc";  		reg = <0x3404e000 0x400>; /* 1 KiB in SRAM */  	}; diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi index 0e3d2a5ff208..a5c3824c8056 100644 --- a/arch/arm/boot/dts/bcm2835.dtsi +++ b/arch/arm/boot/dts/bcm2835.dtsi @@ -18,10 +18,10 @@  	soc {  		ranges = <0x7e000000 0x20000000 0x02000000>;  		dma-ranges = <0x40000000 0x00000000 0x20000000>; +	}; -		arm-pmu { -			compatible = "arm,arm1176-pmu"; -		}; +	arm-pmu { +		compatible = "arm,arm1176-pmu";  	};  }; diff --git a/arch/arm/boot/dts/bcm2836.dtsi b/arch/arm/boot/dts/bcm2836.dtsi index 1dfd76442777..c933e8413884 100644 --- a/arch/arm/boot/dts/bcm2836.dtsi +++ b/arch/arm/boot/dts/bcm2836.dtsi @@ -9,19 +9,19 @@  			 <0x40000000 0x40000000 0x00001000>;  		dma-ranges = <0xc0000000 0x00000000 0x3f000000>; -		local_intc: local_intc { +		local_intc: local_intc@40000000 {  			compatible = "brcm,bcm2836-l1-intc";  			reg = <0x40000000 0x100>;  			interrupt-controller;  			#interrupt-cells = <2>;  			interrupt-parent = <&local_intc>;  		}; +	}; -		arm-pmu { -			compatible = "arm,cortex-a7-pmu"; -			interrupt-parent = <&local_intc>; -			interrupts = <9 IRQ_TYPE_LEVEL_HIGH>; -		}; +	arm-pmu { +		compatible = "arm,cortex-a7-pmu"; +		interrupt-parent = <&local_intc>; +		interrupts = <9 IRQ_TYPE_LEVEL_HIGH>;  	};  	timer { diff --git a/arch/arm/boot/dts/bcm2837.dtsi b/arch/arm/boot/dts/bcm2837.dtsi index efa7d3387ab2..7704bb029605 100644 --- a/arch/arm/boot/dts/bcm2837.dtsi +++ b/arch/arm/boot/dts/bcm2837.dtsi @@ -8,7 +8,7 @@  			 <0x40000000 0x40000000 0x00001000>;  		dma-ranges = <0xc0000000 0x00000000 0x3f000000>; -		local_intc: local_intc { +		local_intc: local_intc@40000000 {  			compatible = "brcm,bcm2836-l1-intc";  			reg = <0x40000000 0x100>;  			interrupt-controller; diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi index 18db25a5a66e..9d293decf8d3 100644 --- a/arch/arm/boot/dts/bcm283x.dtsi +++ b/arch/arm/boot/dts/bcm283x.dtsi @@ -465,7 +465,7 @@  			status = "disabled";  		}; -		aux: aux@0x7e215000 { +		aux: aux@7e215000 {  			compatible = "brcm,bcm2835-aux";  			#clock-cells = <1>;  			reg = <0x7e215000 0x8>; diff --git a/arch/arm/boot/dts/bcm958625hr.dts b/arch/arm/boot/dts/bcm958625hr.dts index 6a44b8021702..f0e2008f7490 100644 --- a/arch/arm/boot/dts/bcm958625hr.dts +++ b/arch/arm/boot/dts/bcm958625hr.dts @@ -49,7 +49,7 @@  	memory {  		device_type = "memory"; -		reg = <0x60000000 0x80000000>; +		reg = <0x60000000 0x20000000>;  	};  	gpio-restart { diff --git a/arch/arm/boot/dts/gemini-dlink-dns-313.dts b/arch/arm/boot/dts/gemini-dlink-dns-313.dts index 08568ce24d06..da8bb9d60f99 100644 --- a/arch/arm/boot/dts/gemini-dlink-dns-313.dts +++ b/arch/arm/boot/dts/gemini-dlink-dns-313.dts @@ -269,7 +269,7 @@  		sata: sata@46000000 {  			/* The ROM uses this muxmode */ -			cortina,gemini-ata-muxmode = <3>; +			cortina,gemini-ata-muxmode = <0>;  			cortina,gemini-enable-sata-bridge;  			status = "okay";  		}; diff --git a/arch/arm/boot/dts/imx6dl-icore-rqs.dts b/arch/arm/boot/dts/imx6dl-icore-rqs.dts index cf42c2f5cdc7..1281bc39b7ab 100644 --- a/arch/arm/boot/dts/imx6dl-icore-rqs.dts +++ b/arch/arm/boot/dts/imx6dl-icore-rqs.dts @@ -42,7 +42,7 @@  /dts-v1/; -#include "imx6q.dtsi" +#include "imx6dl.dtsi"  #include "imx6qdl-icore-rqs.dtsi"  / { diff --git a/arch/arm/boot/dts/logicpd-som-lv.dtsi b/arch/arm/boot/dts/logicpd-som-lv.dtsi index c1aa7a4518fb..a30ee9fcb3ae 100644 --- a/arch/arm/boot/dts/logicpd-som-lv.dtsi +++ b/arch/arm/boot/dts/logicpd-som-lv.dtsi @@ -71,6 +71,8 @@  };  &i2c1 { +	pinctrl-names = "default"; +	pinctrl-0 = <&i2c1_pins>;  	clock-frequency = <2600000>;  	twl: twl@48 { @@ -189,7 +191,12 @@  		>;  	}; - +	i2c1_pins: pinmux_i2c1_pins { +		pinctrl-single,pins = < +			OMAP3_CORE1_IOPAD(0x21ba, PIN_INPUT | MUX_MODE0)        /* i2c1_scl.i2c1_scl */ +			OMAP3_CORE1_IOPAD(0x21bc, PIN_INPUT | MUX_MODE0)        /* i2c1_sda.i2c1_sda */ +		>; +	};  };  &omap3_pmx_wkup { diff --git a/arch/arm/boot/dts/logicpd-torpedo-som.dtsi b/arch/arm/boot/dts/logicpd-torpedo-som.dtsi index b50b796e15c7..47915447a826 100644 --- a/arch/arm/boot/dts/logicpd-torpedo-som.dtsi +++ b/arch/arm/boot/dts/logicpd-torpedo-som.dtsi @@ -66,6 +66,8 @@  };  &i2c1 { +	pinctrl-names = "default"; +	pinctrl-0 = <&i2c1_pins>;  	clock-frequency = <2600000>;  	twl: twl@48 { @@ -136,6 +138,12 @@  			OMAP3_CORE1_IOPAD(0x21b8, PIN_INPUT | MUX_MODE0)	/* hsusb0_data7.hsusb0_data7 */  		>;  	}; +	i2c1_pins: pinmux_i2c1_pins { +		pinctrl-single,pins = < +			OMAP3_CORE1_IOPAD(0x21ba, PIN_INPUT | MUX_MODE0)        /* i2c1_scl.i2c1_scl */ +			OMAP3_CORE1_IOPAD(0x21bc, PIN_INPUT | MUX_MODE0)        /* i2c1_sda.i2c1_sda */ +		>; +	};  };  &uart2 { diff --git a/arch/arm/boot/dts/omap5-uevm.dts b/arch/arm/boot/dts/omap5-uevm.dts index ec2c8baef62a..592e17fd4eeb 100644 --- a/arch/arm/boot/dts/omap5-uevm.dts +++ b/arch/arm/boot/dts/omap5-uevm.dts @@ -47,7 +47,7 @@  			gpios = <&gpio3 19 GPIO_ACTIVE_LOW>;	/* gpio3_83 */  			wakeup-source;  			autorepeat; -			debounce_interval = <50>; +			debounce-interval = <50>;  		};  	}; diff --git a/arch/arm/boot/dts/rk3036.dtsi b/arch/arm/boot/dts/rk3036.dtsi index 3b704cfed69a..a97458112ff6 100644 --- a/arch/arm/boot/dts/rk3036.dtsi +++ b/arch/arm/boot/dts/rk3036.dtsi @@ -280,7 +280,7 @@  		max-frequency = <37500000>;  		clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>,  			 <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>; -		clock-names = "biu", "ciu", "ciu_drv", "ciu_sample"; +		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";  		fifo-depth = <0x100>;  		interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;  		resets = <&cru SRST_SDIO>; @@ -298,7 +298,7 @@  		max-frequency = <37500000>;  		clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,  			 <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>; -		clock-names = "biu", "ciu", "ciu_drv", "ciu_sample"; +		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";  		default-sample-phase = <158>;  		disable-wp;  		dmas = <&pdma 12>; diff --git a/arch/arm/boot/dts/rk322x.dtsi b/arch/arm/boot/dts/rk322x.dtsi index 780ec3a99b21..341deaf62ff6 100644 --- a/arch/arm/boot/dts/rk322x.dtsi +++ b/arch/arm/boot/dts/rk322x.dtsi @@ -621,7 +621,7 @@  		interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;  		clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,  			 <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>; -		clock-names = "biu", "ciu", "ciu_drv", "ciu_sample"; +		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";  		fifo-depth = <0x100>;  		pinctrl-names = "default";  		pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>; @@ -634,7 +634,7 @@  		interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;  		clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>,  			 <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>; -		clock-names = "biu", "ciu", "ciu_drv", "ciu_sample"; +		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";  		fifo-depth = <0x100>;  		pinctrl-names = "default";  		pinctrl-0 = <&sdio_clk &sdio_cmd &sdio_bus4>; @@ -649,7 +649,7 @@  		max-frequency = <37500000>;  		clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,  			 <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>; -		clock-names = "biu", "ciu", "ciu_drv", "ciu_sample"; +		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";  		bus-width = <8>;  		default-sample-phase = <158>;  		fifo-depth = <0x100>; diff --git a/arch/arm/boot/dts/rk3288-phycore-som.dtsi b/arch/arm/boot/dts/rk3288-phycore-som.dtsi index 99cfae875e12..5eae4776ffde 100644 --- a/arch/arm/boot/dts/rk3288-phycore-som.dtsi +++ b/arch/arm/boot/dts/rk3288-phycore-som.dtsi @@ -110,26 +110,6 @@  	};  }; -&cpu0 { -	cpu0-supply = <&vdd_cpu>; -	operating-points = < -		/* KHz    uV */ -		1800000	1400000 -		1608000	1350000 -		1512000 1300000 -		1416000 1200000 -		1200000 1100000 -		1008000 1050000 -		 816000 1000000 -		 696000  950000 -		 600000  900000 -		 408000  900000 -		 312000  900000 -		 216000  900000 -		 126000  900000 -	>; -}; -  &emmc {  	status = "okay";  	bus-width = <8>; diff --git a/arch/arm/boot/dts/zx296702.dtsi b/arch/arm/boot/dts/zx296702.dtsi index 8a74efdb6360..240e7a23d81f 100644 --- a/arch/arm/boot/dts/zx296702.dtsi +++ b/arch/arm/boot/dts/zx296702.dtsi @@ -56,7 +56,7 @@  			clocks = <&topclk ZX296702_A9_PERIPHCLK>;  		}; -		l2cc: l2-cache-controller@0x00c00000 { +		l2cc: l2-cache-controller@c00000 {  			compatible = "arm,pl310-cache";  			reg = <0x00c00000 0x1000>;  			cache-unified; @@ -67,30 +67,30 @@  			arm,double-linefill-incr = <0>;  		}; -		pcu: pcu@0xa0008000 { +		pcu: pcu@a0008000 {  			compatible = "zte,zx296702-pcu";  			reg = <0xa0008000 0x1000>;  		}; -		topclk: topclk@0x09800000 { +		topclk: topclk@9800000 {  			compatible = "zte,zx296702-topcrm-clk";  			reg = <0x09800000 0x1000>;  			#clock-cells = <1>;  		}; -		lsp1clk: lsp1clk@0x09400000 { +		lsp1clk: lsp1clk@9400000 {  			compatible = "zte,zx296702-lsp1crpm-clk";  			reg = <0x09400000 0x1000>;  			#clock-cells = <1>;  		}; -		lsp0clk: lsp0clk@0x0b000000 { +		lsp0clk: lsp0clk@b000000 {  			compatible = "zte,zx296702-lsp0crpm-clk";  			reg = <0x0b000000 0x1000>;  			#clock-cells = <1>;  		}; -		uart0: serial@0x09405000 { +		uart0: serial@9405000 {  			compatible = "zte,zx296702-uart";  			reg = <0x09405000 0x1000>;  			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; @@ -98,7 +98,7 @@  			status = "disabled";  		}; -		uart1: serial@0x09406000 { +		uart1: serial@9406000 {  			compatible = "zte,zx296702-uart";  			reg = <0x09406000 0x1000>;  			interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>; @@ -106,7 +106,7 @@  			status = "disabled";  		}; -		mmc0: mmc@0x09408000 { +		mmc0: mmc@9408000 {  			compatible = "snps,dw-mshc";  			#address-cells = <1>;  			#size-cells = <0>; @@ -119,7 +119,7 @@  			status = "disabled";  		}; -		mmc1: mmc@0x0b003000 { +		mmc1: mmc@b003000 {  			compatible = "snps,dw-mshc";  			#address-cells = <1>;  			#size-cells = <0>; @@ -132,7 +132,7 @@  			status = "disabled";  		}; -		sysctrl: sysctrl@0xa0007000 { +		sysctrl: sysctrl@a0007000 {  			compatible = "zte,sysctrl", "syscon";  			reg = <0xa0007000 0x1000>;  		}; diff --git a/arch/arm/configs/omap2plus_defconfig b/arch/arm/configs/omap2plus_defconfig index 2f145c4af93a..92674f247a12 100644 --- a/arch/arm/configs/omap2plus_defconfig +++ b/arch/arm/configs/omap2plus_defconfig @@ -319,7 +319,7 @@ CONFIG_MEDIA_CAMERA_SUPPORT=y  CONFIG_RC_CORE=m  CONFIG_MEDIA_CONTROLLER=y  CONFIG_VIDEO_V4L2_SUBDEV_API=y -CONFIG_LIRC=m +CONFIG_LIRC=y  CONFIG_RC_DEVICES=y  CONFIG_IR_RX51=m  CONFIG_V4L_PLATFORM_DRIVERS=y diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index 629f8e9981f1..cf2701cb0de8 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c @@ -83,7 +83,7 @@ static void dummy_clock_access(struct timespec64 *ts)  }  static clock_access_fn __read_persistent_clock = dummy_clock_access; -static clock_access_fn __read_boot_clock = dummy_clock_access;; +static clock_access_fn __read_boot_clock = dummy_clock_access;  void read_persistent_clock64(struct timespec64 *ts)  { diff --git a/arch/arm/kvm/hyp/Makefile b/arch/arm/kvm/hyp/Makefile index 5638ce0c9524..63d6b404d88e 100644 --- a/arch/arm/kvm/hyp/Makefile +++ b/arch/arm/kvm/hyp/Makefile @@ -7,6 +7,8 @@ ccflags-y += -fno-stack-protector -DDISABLE_BRANCH_PROFILING  KVM=../../../../virt/kvm +CFLAGS_ARMV7VE		   :=$(call cc-option, -march=armv7ve) +  obj-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/hyp/vgic-v2-sr.o  obj-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/hyp/vgic-v3-sr.o  obj-$(CONFIG_KVM_ARM_HOST) += $(KVM)/arm/hyp/timer-sr.o @@ -15,7 +17,10 @@ obj-$(CONFIG_KVM_ARM_HOST) += tlb.o  obj-$(CONFIG_KVM_ARM_HOST) += cp15-sr.o  obj-$(CONFIG_KVM_ARM_HOST) += vfp.o  obj-$(CONFIG_KVM_ARM_HOST) += banked-sr.o +CFLAGS_banked-sr.o	   += $(CFLAGS_ARMV7VE) +  obj-$(CONFIG_KVM_ARM_HOST) += entry.o  obj-$(CONFIG_KVM_ARM_HOST) += hyp-entry.o  obj-$(CONFIG_KVM_ARM_HOST) += switch.o +CFLAGS_switch.o		   += $(CFLAGS_ARMV7VE)  obj-$(CONFIG_KVM_ARM_HOST) += s2-setup.o diff --git a/arch/arm/kvm/hyp/banked-sr.c b/arch/arm/kvm/hyp/banked-sr.c index 111bda8cdebd..be4b8b0a40ad 100644 --- a/arch/arm/kvm/hyp/banked-sr.c +++ b/arch/arm/kvm/hyp/banked-sr.c @@ -20,6 +20,10 @@  #include <asm/kvm_hyp.h> +/* + * gcc before 4.9 doesn't understand -march=armv7ve, so we have to + * trick the assembler. + */  __asm__(".arch_extension     virt");  void __hyp_text __banked_save_state(struct kvm_cpu_context *ctxt) diff --git a/arch/arm/mach-clps711x/board-dt.c b/arch/arm/mach-clps711x/board-dt.c index ee1f83b1a332..4c89a8e9a2e3 100644 --- a/arch/arm/mach-clps711x/board-dt.c +++ b/arch/arm/mach-clps711x/board-dt.c @@ -69,7 +69,7 @@ static void clps711x_restart(enum reboot_mode mode, const char *cmd)  	soft_restart(0);  } -static const char *clps711x_compat[] __initconst = { +static const char *const clps711x_compat[] __initconst = {  	"cirrus,ep7209",  	NULL  }; diff --git a/arch/arm/mach-davinci/board-dm355-evm.c b/arch/arm/mach-davinci/board-dm355-evm.c index e457f299cd44..d6b11907380c 100644 --- a/arch/arm/mach-davinci/board-dm355-evm.c +++ b/arch/arm/mach-davinci/board-dm355-evm.c @@ -368,7 +368,7 @@ static struct spi_eeprom at25640a = {  	.flags		= EE_ADDR2,  }; -static struct spi_board_info dm355_evm_spi_info[] __initconst = { +static const struct spi_board_info dm355_evm_spi_info[] __initconst = {  	{  		.modalias	= "at25",  		.platform_data	= &at25640a, diff --git a/arch/arm/mach-davinci/board-dm355-leopard.c b/arch/arm/mach-davinci/board-dm355-leopard.c index be997243447b..fad9a5611a5d 100644 --- a/arch/arm/mach-davinci/board-dm355-leopard.c +++ b/arch/arm/mach-davinci/board-dm355-leopard.c @@ -217,7 +217,7 @@ static struct spi_eeprom at25640a = {  	.flags		= EE_ADDR2,  }; -static struct spi_board_info dm355_leopard_spi_info[] __initconst = { +static const struct spi_board_info dm355_leopard_spi_info[] __initconst = {  	{  		.modalias	= "at25",  		.platform_data	= &at25640a, diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c index e75741fb2c1d..e3780986d2a3 100644 --- a/arch/arm/mach-davinci/board-dm365-evm.c +++ b/arch/arm/mach-davinci/board-dm365-evm.c @@ -726,7 +726,7 @@ static struct spi_eeprom at25640 = {  	.flags		= EE_ADDR2,  }; -static struct spi_board_info dm365_evm_spi_info[] __initconst = { +static const struct spi_board_info dm365_evm_spi_info[] __initconst = {  	{  		.modalias	= "at25",  		.platform_data	= &at25640, diff --git a/arch/arm/mach-mvebu/Kconfig b/arch/arm/mach-mvebu/Kconfig index 6b32dc527edc..2c20599cc350 100644 --- a/arch/arm/mach-mvebu/Kconfig +++ b/arch/arm/mach-mvebu/Kconfig @@ -41,7 +41,7 @@ config MACH_ARMADA_375  	depends on ARCH_MULTI_V7  	select ARMADA_370_XP_IRQ  	select ARM_ERRATA_720789 -	select ARM_ERRATA_753970 +	select PL310_ERRATA_753970  	select ARM_GIC  	select ARMADA_375_CLK  	select HAVE_ARM_SCU @@ -57,7 +57,7 @@ config MACH_ARMADA_38X  	bool "Marvell Armada 380/385 boards"  	depends on ARCH_MULTI_V7  	select ARM_ERRATA_720789 -	select ARM_ERRATA_753970 +	select PL310_ERRATA_753970  	select ARM_GIC  	select ARM_GLOBAL_TIMER  	select CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c index 43e3e188f521..fa512413a471 100644 --- a/arch/arm/mach-omap1/clock.c +++ b/arch/arm/mach-omap1/clock.c @@ -1011,17 +1011,17 @@ static int clk_debugfs_register_one(struct clk *c)  		return -ENOMEM;  	c->dent = d; -	d = debugfs_create_u8("usecount", S_IRUGO, c->dent, (u8 *)&c->usecount); +	d = debugfs_create_u8("usecount", S_IRUGO, c->dent, &c->usecount);  	if (!d) {  		err = -ENOMEM;  		goto err_out;  	} -	d = debugfs_create_u32("rate", S_IRUGO, c->dent, (u32 *)&c->rate); +	d = debugfs_create_ulong("rate", S_IRUGO, c->dent, &c->rate);  	if (!d) {  		err = -ENOMEM;  		goto err_out;  	} -	d = debugfs_create_x32("flags", S_IRUGO, c->dent, (u32 *)&c->flags); +	d = debugfs_create_x8("flags", S_IRUGO, c->dent, &c->flags);  	if (!d) {  		err = -ENOMEM;  		goto err_out; diff --git a/arch/arm/mach-omap2/omap-wakeupgen.c b/arch/arm/mach-omap2/omap-wakeupgen.c index 4bb6751864a5..fc5fb776a710 100644 --- a/arch/arm/mach-omap2/omap-wakeupgen.c +++ b/arch/arm/mach-omap2/omap-wakeupgen.c @@ -299,8 +299,6 @@ static void irq_save_context(void)  	if (soc_is_dra7xx())  		return; -	if (!sar_base) -		sar_base = omap4_get_sar_ram_base();  	if (wakeupgen_ops && wakeupgen_ops->save_context)  		wakeupgen_ops->save_context();  } @@ -598,6 +596,8 @@ static int __init wakeupgen_init(struct device_node *node,  	irq_hotplug_init();  	irq_pm_init(); +	sar_base = omap4_get_sar_ram_base(); +  	return 0;  }  IRQCHIP_DECLARE(ti_wakeupgen, "ti,omap4-wugen-mpu", wakeupgen_init); diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index 124f9af34a15..34156eca8e23 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c @@ -977,6 +977,9 @@ static int _enable_clocks(struct omap_hwmod *oh)  	pr_debug("omap_hwmod: %s: enabling clocks\n", oh->name); +	if (oh->flags & HWMOD_OPT_CLKS_NEEDED) +		_enable_optional_clocks(oh); +  	if (oh->_clk)  		clk_enable(oh->_clk); @@ -985,9 +988,6 @@ static int _enable_clocks(struct omap_hwmod *oh)  			clk_enable(os->_clk);  	} -	if (oh->flags & HWMOD_OPT_CLKS_NEEDED) -		_enable_optional_clocks(oh); -  	/* The opt clocks are controlled by the device driver. */  	return 0; diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c index 366158a54fcd..6f68576e5695 100644 --- a/arch/arm/mach-omap2/pm.c +++ b/arch/arm/mach-omap2/pm.c @@ -186,7 +186,7 @@ static void omap_pm_end(void)  	cpu_idle_poll_ctrl(false);  } -static void omap_pm_finish(void) +static void omap_pm_wake(void)  {  	if (soc_is_omap34xx())  		omap_prcm_irq_complete(); @@ -196,7 +196,7 @@ static const struct platform_suspend_ops omap_pm_ops = {  	.begin		= omap_pm_begin,  	.end		= omap_pm_end,  	.enter		= omap_pm_enter, -	.finish		= omap_pm_finish, +	.wake		= omap_pm_wake,  	.valid		= suspend_valid_only_mem,  }; diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index ece09c9461f7..d61fbd7a2840 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c @@ -156,12 +156,6 @@ static struct clock_event_device clockevent_gpt = {  	.tick_resume		= omap2_gp_timer_shutdown,  }; -static struct property device_disabled = { -	.name = "status", -	.length = sizeof("disabled"), -	.value = "disabled", -}; -  static const struct of_device_id omap_timer_match[] __initconst = {  	{ .compatible = "ti,omap2420-timer", },  	{ .compatible = "ti,omap3430-timer", }, @@ -203,8 +197,17 @@ static struct device_node * __init omap_get_timer_dt(const struct of_device_id *  				  of_get_property(np, "ti,timer-secure", NULL)))  			continue; -		if (!of_device_is_compatible(np, "ti,omap-counter32k")) -			of_add_property(np, &device_disabled); +		if (!of_device_is_compatible(np, "ti,omap-counter32k")) { +			struct property *prop; + +			prop = kzalloc(sizeof(*prop), GFP_KERNEL); +			if (!prop) +				return NULL; +			prop->name = "status"; +			prop->value = "disabled"; +			prop->length = strlen(prop->value); +			of_add_property(np, prop); +		}  		return np;  	} diff --git a/arch/arm/mach-orion5x/Kconfig b/arch/arm/mach-orion5x/Kconfig index 2a7bb6ccdcb7..a810f4dd34b1 100644 --- a/arch/arm/mach-orion5x/Kconfig +++ b/arch/arm/mach-orion5x/Kconfig @@ -58,7 +58,6 @@ config MACH_KUROBOX_PRO  config MACH_DNS323  	bool "D-Link DNS-323" -	select GENERIC_NET_UTILS  	select I2C_BOARDINFO if I2C  	help  	  Say 'Y' here if you want your kernel to support the @@ -66,7 +65,6 @@ config MACH_DNS323  config MACH_TS209  	bool "QNAP TS-109/TS-209" -	select GENERIC_NET_UTILS  	help  	  Say 'Y' here if you want your kernel to support the  	  QNAP TS-109/TS-209 platform. @@ -101,7 +99,6 @@ config MACH_LINKSTATION_LS_HGL  config MACH_TS409  	bool "QNAP TS-409" -	select GENERIC_NET_UTILS  	help  	  Say 'Y' here if you want your kernel to support the  	  QNAP TS-409 platform. diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c index cd483bfb5ca8..d13344b2ddcd 100644 --- a/arch/arm/mach-orion5x/dns323-setup.c +++ b/arch/arm/mach-orion5x/dns323-setup.c @@ -173,10 +173,42 @@ static struct mv643xx_eth_platform_data dns323_eth_data = {  	.phy_addr = MV643XX_ETH_PHY_ADDR(8),  }; +/* dns323_parse_hex_*() taken from tsx09-common.c; should a common copy of these + * functions be kept somewhere? + */ +static int __init dns323_parse_hex_nibble(char n) +{ +	if (n >= '0' && n <= '9') +		return n - '0'; + +	if (n >= 'A' && n <= 'F') +		return n - 'A' + 10; + +	if (n >= 'a' && n <= 'f') +		return n - 'a' + 10; + +	return -1; +} + +static int __init dns323_parse_hex_byte(const char *b) +{ +	int hi; +	int lo; + +	hi = dns323_parse_hex_nibble(b[0]); +	lo = dns323_parse_hex_nibble(b[1]); + +	if (hi < 0 || lo < 0) +		return -1; + +	return (hi << 4) | lo; +} +  static int __init dns323_read_mac_addr(void)  {  	u_int8_t addr[6]; -	void __iomem *mac_page; +	int i; +	char *mac_page;  	/* MAC address is stored as a regular ol' string in /dev/mtdblock4  	 * (0x007d0000-0x00800000) starting at offset 196480 (0x2ff80). @@ -185,8 +217,23 @@ static int __init dns323_read_mac_addr(void)  	if (!mac_page)  		return -ENOMEM; -	if (!mac_pton((__force const char *) mac_page, addr)) -		goto error_fail; +	/* Sanity check the string we're looking at */ +	for (i = 0; i < 5; i++) { +		if (*(mac_page + (i * 3) + 2) != ':') { +			goto error_fail; +		} +	} + +	for (i = 0; i < 6; i++)	{ +		int byte; + +		byte = dns323_parse_hex_byte(mac_page + (i * 3)); +		if (byte < 0) { +			goto error_fail; +		} + +		addr[i] = byte; +	}  	iounmap(mac_page);  	printk("DNS-323: Found ethernet MAC address: %pM\n", addr); diff --git a/arch/arm/mach-orion5x/tsx09-common.c b/arch/arm/mach-orion5x/tsx09-common.c index 89774985d380..905d4f2dd0b8 100644 --- a/arch/arm/mach-orion5x/tsx09-common.c +++ b/arch/arm/mach-orion5x/tsx09-common.c @@ -53,12 +53,53 @@ struct mv643xx_eth_platform_data qnap_tsx09_eth_data = {  	.phy_addr	= MV643XX_ETH_PHY_ADDR(8),  }; +static int __init qnap_tsx09_parse_hex_nibble(char n) +{ +	if (n >= '0' && n <= '9') +		return n - '0'; + +	if (n >= 'A' && n <= 'F') +		return n - 'A' + 10; + +	if (n >= 'a' && n <= 'f') +		return n - 'a' + 10; + +	return -1; +} + +static int __init qnap_tsx09_parse_hex_byte(const char *b) +{ +	int hi; +	int lo; + +	hi = qnap_tsx09_parse_hex_nibble(b[0]); +	lo = qnap_tsx09_parse_hex_nibble(b[1]); + +	if (hi < 0 || lo < 0) +		return -1; + +	return (hi << 4) | lo; +} +  static int __init qnap_tsx09_check_mac_addr(const char *addr_str)  {  	u_int8_t addr[6]; +	int i; -	if (!mac_pton(addr_str, addr)) -		return -1; +	for (i = 0; i < 6; i++) { +		int byte; + +		/* +		 * Enforce "xx:xx:xx:xx:xx:xx\n" format. +		 */ +		if (addr_str[(i * 3) + 2] != ((i < 5) ? ':' : '\n')) +			return -1; + +		byte = qnap_tsx09_parse_hex_byte(addr_str + (i * 3)); +		if (byte < 0) +			return -1; +		addr[i] = byte; +	}  	printk(KERN_INFO "tsx09: found ethernet mac address %pM\n", addr); @@ -77,12 +118,12 @@ void __init qnap_tsx09_find_mac_addr(u32 mem_base, u32 size)  	unsigned long addr;  	for (addr = mem_base; addr < (mem_base + size); addr += 1024) { -		void __iomem *nor_page; +		char *nor_page;  		int ret = 0;  		nor_page = ioremap(addr, 1024);  		if (nor_page != NULL) { -			ret = qnap_tsx09_check_mac_addr((__force const char *)nor_page); +			ret = qnap_tsx09_check_mac_addr(nor_page);  			iounmap(nor_page);  		} diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index 57058ac46f49..7e5d7a083707 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c @@ -23,7 +23,6 @@  #include <linux/of.h>  #include <linux/of_address.h>  #include <linux/of_platform.h> -#include <linux/perf/arm_pmu.h>  #include <linux/regulator/machine.h>  #include <asm/outercache.h> @@ -112,37 +111,6 @@ static void ux500_restart(enum reboot_mode mode, const char *cmd)  	prcmu_system_reset(0);  } -/* - * The PMU IRQ lines of two cores are wired together into a single interrupt. - * Bounce the interrupt to the other core if it's not ours. - */ -static irqreturn_t db8500_pmu_handler(int irq, void *dev, irq_handler_t handler) -{ -	irqreturn_t ret = handler(irq, dev); -	int other = !smp_processor_id(); - -	if (ret == IRQ_NONE && cpu_online(other)) -		irq_set_affinity(irq, cpumask_of(other)); - -	/* -	 * We should be able to get away with the amount of IRQ_NONEs we give, -	 * while still having the spurious IRQ detection code kick in if the -	 * interrupt really starts hitting spuriously. -	 */ -	return ret; -} - -static struct arm_pmu_platdata db8500_pmu_platdata = { -	.handle_irq		= db8500_pmu_handler, -	.irq_flags		= IRQF_NOBALANCING | IRQF_NO_THREAD, -}; - -static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = { -	/* Requires call-back bindings. */ -	OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata), -	{}, -}; -  static struct of_dev_auxdata u8540_auxdata_lookup[] __initdata = {  	OF_DEV_AUXDATA("stericsson,db8500-prcmu", 0x80157000, "db8500-prcmu", NULL),  	{}, @@ -165,9 +133,6 @@ static void __init u8500_init_machine(void)  	if (of_machine_is_compatible("st-ericsson,u8540"))  		of_platform_populate(NULL, u8500_local_bus_nodes,  				     u8540_auxdata_lookup, NULL); -	else -		of_platform_populate(NULL, u8500_local_bus_nodes, -				     u8500_auxdata_lookup, NULL);  }  static const char * stericsson_dt_platform_compat[] = { diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c index aff6994950ba..a2399fd66e97 100644 --- a/arch/arm/plat-orion/common.c +++ b/arch/arm/plat-orion/common.c @@ -472,28 +472,27 @@ void __init orion_ge11_init(struct mv643xx_eth_platform_data *eth_data,  /*****************************************************************************   * Ethernet switch   ****************************************************************************/ -static __initconst const char *orion_ge00_mvmdio_bus_name = "orion-mii"; -static __initdata struct mdio_board_info -		  orion_ge00_switch_board_info; +static __initdata struct mdio_board_info orion_ge00_switch_board_info = { +	.bus_id   = "orion-mii", +	.modalias = "mv88e6085", +};  void __init orion_ge00_switch_init(struct dsa_chip_data *d)  { -	struct mdio_board_info *bd;  	unsigned int i;  	if (!IS_BUILTIN(CONFIG_PHYLIB))  		return; -	for (i = 0; i < ARRAY_SIZE(d->port_names); i++) -		if (!strcmp(d->port_names[i], "cpu")) +	for (i = 0; i < ARRAY_SIZE(d->port_names); i++) { +		if (!strcmp(d->port_names[i], "cpu")) { +			d->netdev[i] = &orion_ge00.dev;  			break; +		} +	} -	bd = &orion_ge00_switch_board_info; -	bd->bus_id = orion_ge00_mvmdio_bus_name; -	bd->mdio_addr = d->sw_addr; -	d->netdev[i] = &orion_ge00.dev; -	strcpy(bd->modalias, "mv88e6085"); -	bd->platform_data = d; +	orion_ge00_switch_board_info.mdio_addr = d->sw_addr; +	orion_ge00_switch_board_info.platform_data = d;  	mdiobus_register_board_info(&orion_ge00_switch_board_info, 1);  }  | 

