diff options
71 files changed, 252 insertions, 152 deletions
diff --git a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt index e97a27856b2..4598a47aa0c 100644 --- a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt @@ -7,9 +7,9 @@ on-chip controllers onto these pads.  Required Properties:  - compatible: should be one of the following. -  - "samsung,pinctrl-exynos4210": for Exynos4210 compatible pin-controller. -  - "samsung,pinctrl-exynos4x12": for Exynos4x12 compatible pin-controller. -  - "samsung,pinctrl-exynos5250": for Exynos5250 compatible pin-controller. +  - "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller. +  - "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller. +  - "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller.  - reg: Base address of the pin controller hardware module and length of    the address space it occupies. @@ -142,7 +142,7 @@ the following format 'pinctrl{n}' where n is a unique number for the alias.  Example: A pin-controller node with pin banks:  	pinctrl_0: pinctrl@11400000 { -		compatible = "samsung,pinctrl-exynos4210"; +		compatible = "samsung,exynos4210-pinctrl";  		reg = <0x11400000 0x1000>;  		interrupts = <0 47 0>; @@ -185,7 +185,7 @@ Example: A pin-controller node with pin banks:  Example 1: A pin-controller node with pin groups.  	pinctrl_0: pinctrl@11400000 { -		compatible = "samsung,pinctrl-exynos4210"; +		compatible = "samsung,exynos4210-pinctrl";  		reg = <0x11400000 0x1000>;  		interrupts = <0 47 0>; @@ -230,7 +230,7 @@ Example 1: A pin-controller node with pin groups.  Example 2: A pin-controller node with external wakeup interrupt controller node.  	pinctrl_1: pinctrl@11000000 { -		compatible = "samsung,pinctrl-exynos4210"; +		compatible = "samsung,exynos4210-pinctrl";  		reg = <0x11000000 0x1000>;  		interrupts = <0 46 0> diff --git a/MAINTAINERS b/MAINTAINERS index f5b9851755a..22b754a8b4b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1256,12 +1256,17 @@ M:	Tony Prisk <linux@prisktech.co.nz>  L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)  S:	Maintained  F:	arch/arm/mach-vt8500/ +F:	drivers/clocksource/vt8500_timer.c +F:	drivers/gpio/gpio-vt8500.c +F:	drivers/mmc/host/wmt-sdmmc.c +F:	drivers/pwm/pwm-vt8500.c +F:	drivers/rtc/rtc-vt8500.c +F:	drivers/tty/serial/vt8500_serial.c +F:	drivers/usb/host/ehci-vt8500.c +F:	drivers/usb/host/uhci-platform.c  F:	drivers/video/vt8500lcdfb.*  F:	drivers/video/wm8505fb*  F:	drivers/video/wmt_ge_rops.* -F:	drivers/tty/serial/vt8500_serial.c -F:	drivers/rtc/rtc-vt8500.c -F:	drivers/mmc/host/wmt-sdmmc.c  ARM/ZIPIT Z2 SUPPORT  M:	Marek Vasut <marek.vasut@gmail.com> @@ -1270,6 +1275,14 @@ S:	Maintained  F:	arch/arm/mach-pxa/z2.c  F:	arch/arm/mach-pxa/include/mach/z2.h +ARM/ZYNQ ARCHITECTURE +M:	Michal Simek <michal.simek@xilinx.com> +L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) +W:	http://wiki.xilinx.com +T:	git git://git.xilinx.com/linux-xlnx.git +S:	Supported +F:	arch/arm/mach-zynq/ +  ARM64 PORT (AARCH64 ARCHITECTURE)  M:	Catalin Marinas <catalin.marinas@arm.com>  M:	Will Deacon <will.deacon@arm.com> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index f410cb16dd2..09238c83e6d 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -260,7 +260,8 @@ config MMU  #  choice  	prompt "ARM system type" -	default ARCH_MULTIPLATFORM +	default ARCH_VERSATILE if !MMU +	default ARCH_MULTIPLATFORM if MMU  config ARCH_MULTIPLATFORM  	bool "Allow multiple platforms to be selected" @@ -1449,6 +1450,10 @@ config ISA_DMA  	bool  	select ISA_DMA_API +config ARCH_NO_VIRT_TO_BUS +	def_bool y +	depends on !ARCH_RPC && !ARCH_NETWINDER && !ARCH_SHARK +  # Select ISA DMA interface  config ISA_DMA_API  	bool diff --git a/arch/arm/boot/dts/at91sam9n12.dtsi b/arch/arm/boot/dts/at91sam9n12.dtsi index 80e29c605d4..4801717566d 100644 --- a/arch/arm/boot/dts/at91sam9n12.dtsi +++ b/arch/arm/boot/dts/at91sam9n12.dtsi @@ -324,8 +324,6 @@  				compatible = "atmel,at91sam9260-usart";  				reg = <0xf801c000 0x4000>;  				interrupts = <5 4 5>; -				atmel,use-dma-rx; -				atmel,use-dma-tx;  				pinctrl-names = "default";  				pinctrl-0 = <&pinctrl_usart0>;  				status = "disabled"; @@ -335,8 +333,6 @@  				compatible = "atmel,at91sam9260-usart";  				reg = <0xf8020000 0x4000>;  				interrupts = <6 4 5>; -				atmel,use-dma-rx; -				atmel,use-dma-tx;  				pinctrl-names = "default";  				pinctrl-0 = <&pinctrl_usart1>;  				status = "disabled"; @@ -346,8 +342,6 @@  				compatible = "atmel,at91sam9260-usart";  				reg = <0xf8024000 0x4000>;  				interrupts = <7 4 5>; -				atmel,use-dma-rx; -				atmel,use-dma-tx;  				pinctrl-names = "default";  				pinctrl-0 = <&pinctrl_usart2>;  				status = "disabled"; @@ -357,8 +351,6 @@  				compatible = "atmel,at91sam9260-usart";  				reg = <0xf8028000 0x4000>;  				interrupts = <8 4 5>; -				atmel,use-dma-rx; -				atmel,use-dma-tx;  				pinctrl-names = "default";  				pinctrl-0 = <&pinctrl_usart3>;  				status = "disabled"; diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi index 8ecca6948d8..d112c3af8ce 100644 --- a/arch/arm/boot/dts/at91sam9x5.dtsi +++ b/arch/arm/boot/dts/at91sam9x5.dtsi @@ -197,9 +197,9 @@  				};  				usart3 { -					pinctrl_uart3: usart3-0 { +					pinctrl_usart3: usart3-0 {  						atmel,pins = -							<2 23 0x2 0x1	/* PC22 periph B with pullup */ +							<2 22 0x2 0x1	/* PC22 periph B with pullup */  							 2 23 0x2 0x0>;	/* PC23 periph B */  					}; @@ -402,8 +402,6 @@  				compatible = "atmel,at91sam9260-usart";  				reg = <0xf801c000 0x200>;  				interrupts = <5 4 5>; -				atmel,use-dma-rx; -				atmel,use-dma-tx;  				pinctrl-names = "default";  				pinctrl-0 = <&pinctrl_usart0>;  				status = "disabled"; @@ -413,8 +411,6 @@  				compatible = "atmel,at91sam9260-usart";  				reg = <0xf8020000 0x200>;  				interrupts = <6 4 5>; -				atmel,use-dma-rx; -				atmel,use-dma-tx;  				pinctrl-names = "default";  				pinctrl-0 = <&pinctrl_usart1>;  				status = "disabled"; @@ -424,8 +420,6 @@  				compatible = "atmel,at91sam9260-usart";  				reg = <0xf8024000 0x200>;  				interrupts = <7 4 5>; -				atmel,use-dma-rx; -				atmel,use-dma-tx;  				pinctrl-names = "default";  				pinctrl-0 = <&pinctrl_usart2>;  				status = "disabled"; diff --git a/arch/arm/boot/dts/dove.dtsi b/arch/arm/boot/dts/dove.dtsi index 42eac1ff3cc..740630f9cd6 100644 --- a/arch/arm/boot/dts/dove.dtsi +++ b/arch/arm/boot/dts/dove.dtsi @@ -93,6 +93,7 @@  			reg = <0xd0400 0x20>;  			ngpios = <32>;  			interrupt-controller; +			#interrupt-cells = <2>;  			interrupts = <12>, <13>, <14>, <60>;  		}; @@ -103,6 +104,7 @@  			reg = <0xd0420 0x20>;  			ngpios = <32>;  			interrupt-controller; +			#interrupt-cells = <2>;  			interrupts = <61>;  		}; diff --git a/arch/arm/boot/dts/exynos4210.dtsi b/arch/arm/boot/dts/exynos4210.dtsi index e31bfc4a6f0..2feffc70814 100644 --- a/arch/arm/boot/dts/exynos4210.dtsi +++ b/arch/arm/boot/dts/exynos4210.dtsi @@ -48,13 +48,13 @@  	};  	pinctrl_0: pinctrl@11400000 { -		compatible = "samsung,pinctrl-exynos4210"; +		compatible = "samsung,exynos4210-pinctrl";  		reg = <0x11400000 0x1000>;  		interrupts = <0 47 0>;  	};  	pinctrl_1: pinctrl@11000000 { -		compatible = "samsung,pinctrl-exynos4210"; +		compatible = "samsung,exynos4210-pinctrl";  		reg = <0x11000000 0x1000>;  		interrupts = <0 46 0>; @@ -66,7 +66,7 @@  	};  	pinctrl_2: pinctrl@03860000 { -		compatible = "samsung,pinctrl-exynos4210"; +		compatible = "samsung,exynos4210-pinctrl";  		reg = <0x03860000 0x1000>;  	}; diff --git a/arch/arm/boot/dts/exynos4x12-pinctrl.dtsi b/arch/arm/boot/dts/exynos4x12-pinctrl.dtsi index 8e6115adcd9..099cec79e2a 100644 --- a/arch/arm/boot/dts/exynos4x12-pinctrl.dtsi +++ b/arch/arm/boot/dts/exynos4x12-pinctrl.dtsi @@ -661,7 +661,7 @@  		sd4_bus8: sd4-bus-width8 {  			samsung,pins = "gpk1-3", "gpk1-4", "gpk1-5", "gpk1-6"; -			samsung,pin-function = <3>; +			samsung,pin-function = <4>;  			samsung,pin-pud = <4>;  			samsung,pin-drv = <3>;  		}; diff --git a/arch/arm/boot/dts/exynos4x12.dtsi b/arch/arm/boot/dts/exynos4x12.dtsi index 179a62e46c9..9a878069490 100644 --- a/arch/arm/boot/dts/exynos4x12.dtsi +++ b/arch/arm/boot/dts/exynos4x12.dtsi @@ -37,13 +37,13 @@  	};  	pinctrl_0: pinctrl@11400000 { -		compatible = "samsung,pinctrl-exynos4x12"; +		compatible = "samsung,exynos4x12-pinctrl";  		reg = <0x11400000 0x1000>;  		interrupts = <0 47 0>;  	};  	pinctrl_1: pinctrl@11000000 { -		compatible = "samsung,pinctrl-exynos4x12"; +		compatible = "samsung,exynos4x12-pinctrl";  		reg = <0x11000000 0x1000>;  		interrupts = <0 46 0>; @@ -55,14 +55,14 @@  	};  	pinctrl_2: pinctrl@03860000 { -		compatible = "samsung,pinctrl-exynos4x12"; +		compatible = "samsung,exynos4x12-pinctrl";  		reg = <0x03860000 0x1000>;  		interrupt-parent = <&combiner>;  		interrupts = <10 0>;  	};  	pinctrl_3: pinctrl@106E0000 { -		compatible = "samsung,pinctrl-exynos4x12"; +		compatible = "samsung,exynos4x12-pinctrl";  		reg = <0x106E0000 0x1000>;  		interrupts = <0 72 0>;  	}; diff --git a/arch/arm/boot/dts/exynos5440.dtsi b/arch/arm/boot/dts/exynos5440.dtsi index 024269de8ee..5f3562ad674 100644 --- a/arch/arm/boot/dts/exynos5440.dtsi +++ b/arch/arm/boot/dts/exynos5440.dtsi @@ -86,7 +86,7 @@  	};  	pinctrl { -		compatible = "samsung,pinctrl-exynos5440"; +		compatible = "samsung,exynos5440-pinctrl";  		reg = <0xE0000 0x1000>;  		interrupt-controller;  		#interrupt-cells = <2>; @@ -154,6 +154,6 @@  	rtc {  		compatible = "samsung,s3c6410-rtc";  		reg = <0x130000 0x1000>; -		interrupts = <0 16 0>, <0 17 0>; +		interrupts = <0 17 0>, <0 16 0>;  	};  }; diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi index d6265ca9711..ff1205ea571 100644 --- a/arch/arm/boot/dts/imx6q.dtsi +++ b/arch/arm/boot/dts/imx6q.dtsi @@ -866,7 +866,7 @@  				compatible = "fsl,imx6q-fec";  				reg = <0x02188000 0x4000>;  				interrupts = <0 118 0x04 0 119 0x04>; -				clocks = <&clks 117>, <&clks 117>, <&clks 177>; +				clocks = <&clks 117>, <&clks 117>, <&clks 190>;  				clock-names = "ipg", "ahb", "ptp";  				status = "disabled";  			}; diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts b/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts index a3d37ec2655..73187173117 100644 --- a/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts +++ b/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts @@ -70,7 +70,7 @@  		compatible = "arm,sp805", "arm,primecell";  		status = "disabled";  		reg = <0 0x2b060000 0 0x1000>; -		interrupts = <98>; +		interrupts = <0 98 4>;  		clocks = <&oscclk7>;  		clock-names = "apb_pclk";  	}; diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts index cf8071ad22d..dfe371ec274 100644 --- a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts +++ b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts @@ -72,7 +72,7 @@  	wdt@2a490000 {  		compatible = "arm,sp805", "arm,primecell";  		reg = <0 0x2a490000 0 0x1000>; -		interrupts = <98>; +		interrupts = <0 98 4>;  		clocks = <&oscclk6a>, <&oscclk6a>;  		clock-names = "wdogclk", "apb_pclk";  	}; diff --git a/arch/arm/configs/marzen_defconfig b/arch/arm/configs/marzen_defconfig index 728a43c446f..afb17d630d4 100644 --- a/arch/arm/configs/marzen_defconfig +++ b/arch/arm/configs/marzen_defconfig @@ -83,7 +83,6 @@ CONFIG_USB=y  CONFIG_USB_RCAR_PHY=y  CONFIG_MMC=y  CONFIG_MMC_SDHI=y -CONFIG_USB=y  CONFIG_USB_EHCI_HCD=y  CONFIG_USB_OHCI_HCD=y  CONFIG_USB_OHCI_HCD_PLATFORM=y diff --git a/arch/arm/configs/mvebu_defconfig b/arch/arm/configs/mvebu_defconfig index b5bc96cb65a..cbd91bce1ca 100644 --- a/arch/arm/configs/mvebu_defconfig +++ b/arch/arm/configs/mvebu_defconfig @@ -33,6 +33,8 @@ CONFIG_MVNETA=y  CONFIG_MARVELL_PHY=y  CONFIG_SERIAL_8250=y  CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_I2C=y +CONFIG_I2C_MV64XXX=y  CONFIG_SERIAL_8250_DW=y  CONFIG_GPIOLIB=y  CONFIG_GPIO_SYSFS=y diff --git a/arch/arm/configs/shark_defconfig b/arch/arm/configs/shark_defconfig index caa07db90cf..e319b2c56f1 100644 --- a/arch/arm/configs/shark_defconfig +++ b/arch/arm/configs/shark_defconfig @@ -73,7 +73,6 @@ CONFIG_PARTITION_ADVANCED=y  CONFIG_NLS_CODEPAGE_437=m  CONFIG_NLS_CODEPAGE_850=m  CONFIG_NLS_ISO8859_1=m -# CONFIG_ENABLE_WARN_DEPRECATED is not set  # CONFIG_ENABLE_MUST_CHECK is not set  CONFIG_DEBUG_KERNEL=y  # CONFIG_SCHED_DEBUG is not set diff --git a/arch/arm/configs/u8500_defconfig b/arch/arm/configs/u8500_defconfig index 231dca60473..426270fe080 100644 --- a/arch/arm/configs/u8500_defconfig +++ b/arch/arm/configs/u8500_defconfig @@ -66,9 +66,9 @@ CONFIG_SPI=y  CONFIG_SPI_PL022=y  CONFIG_GPIO_STMPE=y  CONFIG_GPIO_TC3589X=y -CONFIG_POWER_SUPPLY=y -CONFIG_AB8500_BM=y -CONFIG_AB8500_BATTERY_THERM_ON_BATCTRL=y +# CONFIG_POWER_SUPPLY is not set +# CONFIG_AB8500_BM is not set +# CONFIG_AB8500_BATTERY_THERM_ON_BATCTRL is not set  CONFIG_THERMAL=y  CONFIG_CPU_THERMAL=y  CONFIG_MFD_STMPE=y diff --git a/arch/arm/include/asm/dma.h b/arch/arm/include/asm/dma.h index 5694a0d6576..58b8c6a0ab1 100644 --- a/arch/arm/include/asm/dma.h +++ b/arch/arm/include/asm/dma.h @@ -105,7 +105,7 @@ extern void set_dma_sg(unsigned int chan, struct scatterlist *sg, int nr_sg);   */  extern void __set_dma_addr(unsigned int chan, void *addr);  #define set_dma_addr(chan, addr)				\ -	__set_dma_addr(chan, bus_to_virt(addr)) +	__set_dma_addr(chan, (void *)__bus_to_virt(addr))  /* Set the DMA byte count for this channel   * diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h index 64c770d2419..57870ab313c 100644 --- a/arch/arm/include/asm/memory.h +++ b/arch/arm/include/asm/memory.h @@ -245,6 +245,7 @@ static inline void *phys_to_virt(phys_addr_t x)  #define __bus_to_pfn(x)	__phys_to_pfn(x)  #endif +#ifdef CONFIG_VIRT_TO_BUS  static inline __deprecated unsigned long virt_to_bus(void *x)  {  	return __virt_to_bus((unsigned long)x); @@ -254,6 +255,7 @@ static inline __deprecated void *bus_to_virt(unsigned long x)  {  	return (void *)__bus_to_virt(x);  } +#endif  /*   * Conversion between a struct page and a physical address. diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c index 1a89824a5f7..0c7e3ad7ba9 100644 --- a/arch/arm/mach-exynos/common.c +++ b/arch/arm/mach-exynos/common.c @@ -299,6 +299,7 @@ void exynos4_restart(char mode, const char *cmd)  void exynos5_restart(char mode, const char *cmd)  { +	struct device_node *np;  	u32 val;  	void __iomem *addr; @@ -306,8 +307,9 @@ void exynos5_restart(char mode, const char *cmd)  		val = 0x1;  		addr = EXYNOS_SWRESET;  	} else if (of_machine_is_compatible("samsung,exynos5440")) { -		val = (0x10 << 20) | (0x1 << 16); -		addr = EXYNOS5440_SWRESET; +		np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-clock"); +		addr = of_iomap(np, 0) + 0xcc; +		val = (0xfff << 20) | (0x1 << 16);  	} else {  		pr_err("%s: cannot support non-DT\n", __func__);  		return; @@ -1031,8 +1033,8 @@ static int __init exynos_init_irq_eint(void)  	 * interrupt support code here can be completely removed.  	 */  	static const struct of_device_id exynos_pinctrl_ids[] = { -		{ .compatible = "samsung,pinctrl-exynos4210", }, -		{ .compatible = "samsung,pinctrl-exynos4x12", }, +		{ .compatible = "samsung,exynos4210-pinctrl", }, +		{ .compatible = "samsung,exynos4x12-pinctrl", },  	};  	struct device_node *pctrl_np, *wkup_np;  	const char *wkup_compat = "samsung,exynos4210-wakeup-eint"; diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c index b9b539cac81..5106ab83e59 100644 --- a/arch/arm/mach-exynos/pm.c +++ b/arch/arm/mach-exynos/pm.c @@ -91,8 +91,8 @@ static int exynos_cpu_suspend(unsigned long arg)  	/* issue the standby signal into the pm unit. */  	cpu_do_idle(); -	/* we should never get past here */ -	panic("sleep resumed to originator?"); +	pr_info("Failed to suspend the system\n"); +	return 1; /* Aborting suspend */  }  static void exynos_pm_prepare(void) @@ -282,6 +282,8 @@ static void exynos_pm_resume(void)  	if (!(tmp & S5P_CENTRAL_LOWPWR_CFG)) {  		tmp |= S5P_CENTRAL_LOWPWR_CFG;  		__raw_writel(tmp, S5P_CENTRAL_SEQ_CONFIGURATION); +		/* clear the wakeup state register */ +		__raw_writel(0x0, S5P_WAKEUP_STAT);  		/* No need to perform below restore code */  		goto early_wakeup;  	} diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index 0a2349dc701..64b40a4615b 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -488,7 +488,7 @@ config MACH_MX31ADS_WM1133_EV1  	bool "Support Wolfson Microelectronics 1133-EV1 module"  	depends on MACH_MX31ADS  	depends on MFD_WM8350_I2C -	depends on REGULATOR_WM8350 +	depends on REGULATOR_WM8350 = y  	select MFD_WM8350_CONFIG_MODE_0  	select MFD_WM8352_CONFIG_MODE_0  	help diff --git a/arch/arm/mach-imx/clk-imx25.c b/arch/arm/mach-imx/clk-imx25.c index 2c570cdaae7..69858c78f40 100644 --- a/arch/arm/mach-imx/clk-imx25.c +++ b/arch/arm/mach-imx/clk-imx25.c @@ -224,6 +224,9 @@ static int __init __mx25_clocks_init(unsigned long osc_rate)  	clk_prepare_enable(clk[emi_ahb]); +	/* Clock source for gpt must be derived from AHB */ +	clk_set_parent(clk[per5_sel], clk[ahb]); +  	clk_register_clkdev(clk[ipg], "ipg", "imx-gpt.0");  	clk_register_clkdev(clk[gpt_ipg_per], "per", "imx-gpt.0"); diff --git a/arch/arm/mach-imx/clk-imx27.c b/arch/arm/mach-imx/clk-imx27.c index 1ffe3b534e5..e30369a58e4 100644 --- a/arch/arm/mach-imx/clk-imx27.c +++ b/arch/arm/mach-imx/clk-imx27.c @@ -228,9 +228,12 @@ int __init mx27_clocks_init(unsigned long fref)  	clk_register_clkdev(clk[sdhc2_ipg_gate], "ipg", "imx21-mmc.1");  	clk_register_clkdev(clk[per2_gate], "per", "imx21-mmc.2");  	clk_register_clkdev(clk[sdhc2_ipg_gate], "ipg", "imx21-mmc.2"); -	clk_register_clkdev(clk[cspi1_ipg_gate], NULL, "imx27-cspi.0"); -	clk_register_clkdev(clk[cspi2_ipg_gate], NULL, "imx27-cspi.1"); -	clk_register_clkdev(clk[cspi3_ipg_gate], NULL, "imx27-cspi.2"); +	clk_register_clkdev(clk[per2_gate], "per", "imx27-cspi.0"); +	clk_register_clkdev(clk[cspi1_ipg_gate], "ipg", "imx27-cspi.0"); +	clk_register_clkdev(clk[per2_gate], "per", "imx27-cspi.1"); +	clk_register_clkdev(clk[cspi2_ipg_gate], "ipg", "imx27-cspi.1"); +	clk_register_clkdev(clk[per2_gate], "per", "imx27-cspi.2"); +	clk_register_clkdev(clk[cspi3_ipg_gate], "ipg", "imx27-cspi.2");  	clk_register_clkdev(clk[per3_gate], "per", "imx21-fb.0");  	clk_register_clkdev(clk[lcdc_ipg_gate], "ipg", "imx21-fb.0");  	clk_register_clkdev(clk[lcdc_ahb_gate], "ahb", "imx21-fb.0"); diff --git a/arch/arm/mach-integrator/common.h b/arch/arm/mach-integrator/common.h index 79197d8b34a..72516658be1 100644 --- a/arch/arm/mach-integrator/common.h +++ b/arch/arm/mach-integrator/common.h @@ -1,10 +1,5 @@  #include <linux/amba/serial.h> -#ifdef CONFIG_ARCH_INTEGRATOR_AP  extern struct amba_pl010_data ap_uart_data; -#else -/* Not used without Integrator/AP support anyway */ -struct amba_pl010_data ap_uart_data {}; -#endif  void integrator_init_early(void);  int integrator_init(bool is_cp);  void integrator_reserve(void); diff --git a/arch/arm/mach-integrator/core.c b/arch/arm/mach-integrator/core.c index 39c060f75e4..81461d21871 100644 --- a/arch/arm/mach-integrator/core.c +++ b/arch/arm/mach-integrator/core.c @@ -71,7 +71,7 @@ int __init integrator_init(bool is_cp)  	 * hard-code them. The Integator/CP and forward have proper cell IDs.  	 * Else we leave them undefined to the bus driver can autoprobe them.  	 */ -	if (!is_cp) { +	if (!is_cp && IS_ENABLED(CONFIG_ARCH_INTEGRATOR_AP)) {  		rtc_device.periphid	= 0x00041030;  		uart0_device.periphid	= 0x00041010;  		uart1_device.periphid	= 0x00041010; diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c index 11e2a414580..592c168f4b6 100644 --- a/arch/arm/mach-integrator/integrator_ap.c +++ b/arch/arm/mach-integrator/integrator_ap.c @@ -94,7 +94,7 @@ void __iomem *ap_syscon_base;   * f1b00000	1b000000	GPIO   */ -static struct map_desc ap_io_desc[] __initdata = { +static struct map_desc ap_io_desc[] __initdata __maybe_unused = {  	{  		.virtual	= IO_ADDRESS(INTEGRATOR_HDR_BASE),  		.pfn		= __phys_to_pfn(INTEGRATOR_HDR_BASE), @@ -613,7 +613,6 @@ static struct map_desc ap_io_desc_atag[] __initdata = {  static void __init ap_map_io_atag(void)  {  	iotable_init(ap_io_desc_atag, ARRAY_SIZE(ap_io_desc_atag)); -	ap_syscon_base = __io_address(INTEGRATOR_SC_BASE);  	ap_map_io();  } @@ -685,6 +684,7 @@ static void __init ap_init(void)  	platform_device_register(&cfi_flash_device); +	ap_syscon_base = __io_address(INTEGRATOR_SC_BASE);  	sc_dec = readl(ap_syscon_base + INTEGRATOR_SC_DEC_OFFSET);  	for (i = 0; i < 4; i++) {  		struct lm_device *lmdev; diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c index 7322838c044..01a888d7b0b 100644 --- a/arch/arm/mach-integrator/integrator_cp.c +++ b/arch/arm/mach-integrator/integrator_cp.c @@ -78,7 +78,7 @@ static void __iomem *intcp_con_base;   * fcb00000	cb000000	CP system control   */ -static struct map_desc intcp_io_desc[] __initdata = { +static struct map_desc intcp_io_desc[] __initdata __maybe_unused = {  	{  		.virtual	= IO_ADDRESS(INTEGRATOR_HDR_BASE),  		.pfn		= __phys_to_pfn(INTEGRATOR_HDR_BASE), diff --git a/arch/arm/mach-msm/proc_comm.h b/arch/arm/mach-msm/proc_comm.h index 12da4cacd4a..e8d043a0e99 100644 --- a/arch/arm/mach-msm/proc_comm.h +++ b/arch/arm/mach-msm/proc_comm.h @@ -253,6 +253,6 @@ enum {  		(((drvstr) & 0xF) << 17))  int msm_proc_comm(unsigned cmd, unsigned *data1, unsigned *data2); -void __init proc_comm_boot_wait(void); +void proc_comm_boot_wait(void);  #endif diff --git a/arch/arm/mach-mvebu/Makefile b/arch/arm/mach-mvebu/Makefile index 99df4df680f..da93bcbc74c 100644 --- a/arch/arm/mach-mvebu/Makefile +++ b/arch/arm/mach-mvebu/Makefile @@ -3,7 +3,8 @@ ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \  AFLAGS_coherency_ll.o		:= -Wa,-march=armv7-a -obj-y += system-controller.o -obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o irq-armada-370-xp.o addr-map.o coherency.o coherency_ll.o pmsu.o +obj-y				 += system-controller.o +obj-$(CONFIG_MACH_ARMADA_370_XP) += armada-370-xp.o +obj-$(CONFIG_ARCH_MVEBU)	 += addr-map.o coherency.o coherency_ll.o pmsu.o irq-armada-370-xp.o   obj-$(CONFIG_SMP)                += platsmp.o headsmp.o  obj-$(CONFIG_HOTPLUG_CPU)        += hotplug.o diff --git a/arch/arm/mach-omap2/omap-wakeupgen.c b/arch/arm/mach-omap2/omap-wakeupgen.c index 5d3b4f4f81a..8633a43acae 100644 --- a/arch/arm/mach-omap2/omap-wakeupgen.c +++ b/arch/arm/mach-omap2/omap-wakeupgen.c @@ -46,7 +46,7 @@  static void __iomem *wakeupgen_base;  static void __iomem *sar_base; -static DEFINE_SPINLOCK(wakeupgen_lock); +static DEFINE_RAW_SPINLOCK(wakeupgen_lock);  static unsigned int irq_target_cpu[MAX_IRQS];  static unsigned int irq_banks = MAX_NR_REG_BANKS;  static unsigned int max_irqs = MAX_IRQS; @@ -134,9 +134,9 @@ static void wakeupgen_mask(struct irq_data *d)  {  	unsigned long flags; -	spin_lock_irqsave(&wakeupgen_lock, flags); +	raw_spin_lock_irqsave(&wakeupgen_lock, flags);  	_wakeupgen_clear(d->irq, irq_target_cpu[d->irq]); -	spin_unlock_irqrestore(&wakeupgen_lock, flags); +	raw_spin_unlock_irqrestore(&wakeupgen_lock, flags);  }  /* @@ -146,9 +146,9 @@ static void wakeupgen_unmask(struct irq_data *d)  {  	unsigned long flags; -	spin_lock_irqsave(&wakeupgen_lock, flags); +	raw_spin_lock_irqsave(&wakeupgen_lock, flags);  	_wakeupgen_set(d->irq, irq_target_cpu[d->irq]); -	spin_unlock_irqrestore(&wakeupgen_lock, flags); +	raw_spin_unlock_irqrestore(&wakeupgen_lock, flags);  }  #ifdef CONFIG_HOTPLUG_CPU @@ -189,7 +189,7 @@ static void wakeupgen_irqmask_all(unsigned int cpu, unsigned int set)  {  	unsigned long flags; -	spin_lock_irqsave(&wakeupgen_lock, flags); +	raw_spin_lock_irqsave(&wakeupgen_lock, flags);  	if (set) {  		_wakeupgen_save_masks(cpu);  		_wakeupgen_set_all(cpu, WKG_MASK_ALL); @@ -197,7 +197,7 @@ static void wakeupgen_irqmask_all(unsigned int cpu, unsigned int set)  		_wakeupgen_set_all(cpu, WKG_UNMASK_ALL);  		_wakeupgen_restore_masks(cpu);  	} -	spin_unlock_irqrestore(&wakeupgen_lock, flags); +	raw_spin_unlock_irqrestore(&wakeupgen_lock, flags);  }  #endif diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index b8ad6e632bb..265de51b43d 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c @@ -228,7 +228,7 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,  	int r = 0;  	if (of_have_populated_dt()) { -		np = omap_get_timer_dt(omap_timer_match, NULL); +		np = omap_get_timer_dt(omap_timer_match, property);  		if (!np)  			return -ENODEV; diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c index e49b40b4c90..6a7aec6d117 100644 --- a/arch/arm/mach-omap2/twl-common.c +++ b/arch/arm/mach-omap2/twl-common.c @@ -23,6 +23,7 @@  #include <linux/i2c.h>  #include <linux/i2c/twl.h>  #include <linux/gpio.h> +#include <linux/string.h>  #include <linux/regulator/machine.h>  #include <linux/regulator/fixed.h> @@ -56,7 +57,7 @@ void __init omap_pmic_init(int bus, u32 clkrate,  			   struct twl4030_platform_data *pmic_data)  {  	omap_mux_init_signal("sys_nirq", OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE); -	strncpy(pmic_i2c_board_info.type, pmic_type, +	strlcpy(pmic_i2c_board_info.type, pmic_type,  		sizeof(pmic_i2c_board_info.type));  	pmic_i2c_board_info.irq = pmic_irq;  	pmic_i2c_board_info.platform_data = pmic_data; diff --git a/arch/arm/mach-pxa/include/mach/palmtreo.h b/arch/arm/mach-pxa/include/mach/palmtreo.h index 2d3f14e3be2..714b6574393 100644 --- a/arch/arm/mach-pxa/include/mach/palmtreo.h +++ b/arch/arm/mach-pxa/include/mach/palmtreo.h @@ -38,13 +38,14 @@  #define GPIO_NR_TREO_LCD_POWER	25  /* Treo680 specific GPIOs */ -#ifdef CONFIG_MACH_TREO680  #define GPIO_NR_TREO680_SD_READONLY	33  #define GPIO_NR_TREO680_SD_POWER	42  #define GPIO_NR_TREO680_VIBRATE_EN	44  #define GPIO_NR_TREO680_KEYB_BL		24  #define GPIO_NR_TREO680_BT_EN		43 -#endif /* CONFIG_MACH_TREO680 */ +#define GPIO_NR_TREO680_LCD_POWER	77 +#define GPIO_NR_TREO680_LCD_EN		86 +#define GPIO_NR_TREO680_LCD_EN_N	25  /* Centro685 specific GPIOs */  #define GPIO_NR_CENTRO_SD_POWER		21 diff --git a/arch/arm/mach-pxa/include/mach/smemc.h b/arch/arm/mach-pxa/include/mach/smemc.h index b7de471b273..b802f285fe0 100644 --- a/arch/arm/mach-pxa/include/mach/smemc.h +++ b/arch/arm/mach-pxa/include/mach/smemc.h @@ -37,6 +37,7 @@  #define CSADRCFG1	(SMEMC_VIRT + 0x84)  /* Address Configuration Register for CS1 */  #define CSADRCFG2	(SMEMC_VIRT + 0x88)  /* Address Configuration Register for CS2 */  #define CSADRCFG3	(SMEMC_VIRT + 0x8C)  /* Address Configuration Register for CS3 */ +#define CSMSADRCFG	(SMEMC_VIRT + 0xA0)  /* Chip Select Configuration Register */  /*   * More handy macros for PCMCIA diff --git a/arch/arm/mach-pxa/palmtreo.c b/arch/arm/mach-pxa/palmtreo.c index 3f3c48f2f7c..577512845a6 100644 --- a/arch/arm/mach-pxa/palmtreo.c +++ b/arch/arm/mach-pxa/palmtreo.c @@ -98,9 +98,6 @@ static unsigned long treo_pin_config[] __initdata = {  	GPIO96_KP_MKOUT_6,  	GPIO93_KP_DKIN_0 | WAKEUP_ON_LEVEL_HIGH,	/* Hotsync button */ -	/* LCD */ -	GPIOxx_LCD_TFT_16BPP, -  	/* Quick Capture Interface */  	GPIO84_CIF_FV,  	GPIO85_CIF_LV, @@ -140,6 +137,12 @@ static unsigned long treo680_pin_config[] __initdata = {  	/* MATRIX KEYPAD - different wake up source */  	GPIO100_KP_MKIN_0 | WAKEUP_ON_LEVEL_HIGH,  	GPIO99_KP_MKIN_5, + +	/* LCD... L_BIAS alt fn not configured on Treo680; is GPIO instead */ +	GPIOxx_LCD_16BPP, +	GPIO74_LCD_FCLK, +	GPIO75_LCD_LCLK, +	GPIO76_LCD_PCLK,  };  #endif /* CONFIG_MACH_TREO680 */ @@ -155,6 +158,9 @@ static unsigned long centro685_pin_config[] __initdata = {  	/* MATRIX KEYPAD - different wake up source */  	GPIO100_KP_MKIN_0,  	GPIO99_KP_MKIN_5 | WAKEUP_ON_LEVEL_HIGH, + +	/* LCD */ +	GPIOxx_LCD_TFT_16BPP,  };  #endif /* CONFIG_MACH_CENTRO */ @@ -328,7 +334,6 @@ static inline void palmtreo_uhc_init(void) {}  /******************************************************************************   * Vibra and LEDs   ******************************************************************************/ -#ifdef CONFIG_MACH_TREO680  static struct gpio_led treo680_gpio_leds[] = {  	{  		.name			= "treo680:vibra:vibra", @@ -379,21 +384,17 @@ static struct gpio_led_platform_data centro_gpio_led_info = {  static struct platform_device palmtreo_leds = {  	.name   = "leds-gpio",  	.id     = -1, -	.dev    = { -		.platform_data  = &treo680_gpio_led_info, -	}  };  static void __init palmtreo_leds_init(void)  {  	if (machine_is_centro())  		palmtreo_leds.dev.platform_data = ¢ro_gpio_led_info; +	else if (machine_is_treo680()) +		palmtreo_leds.dev.platform_data = &treo680_gpio_led_info;  	platform_device_register(&palmtreo_leds);  } -#else -static inline void palmtreo_leds_init(void) {} -#endif  /******************************************************************************   * Machine init @@ -424,10 +425,59 @@ static void __init palmphone_common_init(void)  }  #ifdef CONFIG_MACH_TREO680 +void __init treo680_gpio_init(void) +{ +	unsigned int gpio; + +	/* drive all three lcd gpios high initially */ +	const unsigned long lcd_flags = GPIOF_INIT_HIGH | GPIOF_DIR_OUT; + +	/* +	 * LCD GPIO initialization... +	 */ + +	/* +	 * This is likely the power to the lcd.  Toggling it low/high appears to +	 * turn the lcd off/on.  Can be toggled after lcd is initialized without +	 * any apparent adverse effects to the lcd operation.  Note that this +	 * gpio line is used by the lcd controller as the L_BIAS signal, but +	 * treo680 configures it as gpio. +	 */ +	gpio = GPIO_NR_TREO680_LCD_POWER; +	if (gpio_request_one(gpio, lcd_flags, "LCD power") < 0) +		goto fail; + +	/* +	 * These two are called "enables", for lack of a better understanding. +	 * If either of these are toggled after the lcd is initialized, the +	 * image becomes degraded.  N.B. The IPL shipped with the treo +	 * configures GPIO_NR_TREO680_LCD_EN_N as output and drives it high.  If +	 * the IPL is ever reprogrammed, this initialization may be need to be +	 * revisited. +	 */ +	gpio = GPIO_NR_TREO680_LCD_EN; +	if (gpio_request_one(gpio, lcd_flags, "LCD enable") < 0) +		goto fail; +	gpio = GPIO_NR_TREO680_LCD_EN_N; +	if (gpio_request_one(gpio, lcd_flags, "LCD enable_n") < 0) +		goto fail; + +	/* driving this low turns LCD on */ +	gpio_set_value(GPIO_NR_TREO680_LCD_EN_N, 0); + +	return; + fail: +	pr_err("gpio %d initialization failed\n", gpio); +	gpio_free(GPIO_NR_TREO680_LCD_POWER); +	gpio_free(GPIO_NR_TREO680_LCD_EN); +	gpio_free(GPIO_NR_TREO680_LCD_EN_N); +} +  static void __init treo680_init(void)  {  	pxa2xx_mfp_config(ARRAY_AND_SIZE(treo680_pin_config));  	palmphone_common_init(); +	treo680_gpio_init();  	palm27x_mmc_init(GPIO_NR_TREO_SD_DETECT_N, GPIO_NR_TREO680_SD_READONLY,  			GPIO_NR_TREO680_SD_POWER, 0);  } diff --git a/arch/arm/mach-pxa/smemc.c b/arch/arm/mach-pxa/smemc.c index 79923058d10..f38aa890b2c 100644 --- a/arch/arm/mach-pxa/smemc.c +++ b/arch/arm/mach-pxa/smemc.c @@ -40,6 +40,8 @@ static void pxa3xx_smemc_resume(void)  	__raw_writel(csadrcfg[1], CSADRCFG1);  	__raw_writel(csadrcfg[2], CSADRCFG2);  	__raw_writel(csadrcfg[3], CSADRCFG3); +	/* CSMSADRCFG wakes up in its default state (0), so we need to set it */ +	__raw_writel(0x2, CSMSADRCFG);  }  static struct syscore_ops smemc_syscore_ops = { @@ -49,8 +51,19 @@ static struct syscore_ops smemc_syscore_ops = {  static int __init smemc_init(void)  { -	if (cpu_is_pxa3xx()) +	if (cpu_is_pxa3xx()) { +		/* +		 * The only documentation we have on the +		 * Chip Select Configuration Register (CSMSADRCFG) is that +		 * it must be programmed to 0x2. +		 * Moreover, in the bit definitions, the second bit +		 * (CSMSADRCFG[1]) is called "SETALWAYS". +		 * Other bits are reserved in this register. +		 */ +		__raw_writel(0x2, CSMSADRCFG); +  		register_syscore_ops(&smemc_syscore_ops); +	}  	return 0;  } diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 2073f0e6db0..7e2cb880daa 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c @@ -732,7 +732,7 @@ static inline void spitz_lcd_init(void) {}  #endif  /****************************************************************************** - * Framebuffer + * NAND Flash   ******************************************************************************/  #if defined(CONFIG_MTD_NAND_SHARPSL) || defined(CONFIG_MTD_NAND_SHARPSL_MODULE)  static struct mtd_partition spitz_nand_partitions[] = { @@ -858,7 +858,7 @@ static inline void spitz_nor_init(void) {}  #endif  /****************************************************************************** - * GPIO expander + * I2C devices   ******************************************************************************/  #if defined(CONFIG_I2C_PXA) || defined(CONFIG_I2C_PXA_MODULE)  static struct pca953x_platform_data akita_pca953x_pdata = { diff --git a/arch/arm/mach-s3c24xx/Kconfig b/arch/arm/mach-s3c24xx/Kconfig index 3445c4f4234..7079a70b1ab 100644 --- a/arch/arm/mach-s3c24xx/Kconfig +++ b/arch/arm/mach-s3c24xx/Kconfig @@ -226,6 +226,7 @@ config MACH_QT2410  config ARCH_SMDK2410  	bool "SMDK2410/A9M2410"  	select S3C24XX_SMDK +	select S3C_DEV_USB_HOST  	help  	  Say Y here if you are using the SMDK2410 or the derived module A9M2410  	  <http://www.fsforth.de> @@ -273,6 +274,7 @@ config S3C2412_DMA  config S3C2412_PM  	bool +	select S3C2412_PM_SLEEP  	help  	  Internal config node to apply S3C2412 power management diff --git a/arch/arm/mach-s3c24xx/common-s3c2443.c b/arch/arm/mach-s3c24xx/common-s3c2443.c index aeb4a24ff3e..f6b9f2ef01b 100644 --- a/arch/arm/mach-s3c24xx/common-s3c2443.c +++ b/arch/arm/mach-s3c24xx/common-s3c2443.c @@ -132,7 +132,7 @@ static struct clk *clk_msysclk_sources[] = {  	[3] = &clk_mpllref,  }; -struct clksrc_clk clk_msysclk = { +static struct clksrc_clk clk_msysclk = {  	.clk	= {  		.name		= "msysclk",  		.parent		= &clk_xtal, diff --git a/arch/arm/mach-s3c24xx/common.c b/arch/arm/mach-s3c24xx/common.c index 0c9e9a785ef..6bcf87f65f9 100644 --- a/arch/arm/mach-s3c24xx/common.c +++ b/arch/arm/mach-s3c24xx/common.c @@ -197,7 +197,7 @@ static unsigned long s3c24xx_read_idcode_v4(void)  static void s3c24xx_default_idle(void)  { -	unsigned long tmp; +	unsigned long tmp = 0;  	int i;  	/* idle the system by using the idle mode which will wait for an diff --git a/arch/arm/mach-s3c24xx/include/mach/debug-macro.S b/arch/arm/mach-s3c24xx/include/mach/debug-macro.S index 4135de87d1f..13ed33c6911 100644 --- a/arch/arm/mach-s3c24xx/include/mach/debug-macro.S +++ b/arch/arm/mach-s3c24xx/include/mach/debug-macro.S @@ -40,17 +40,17 @@  		addeq	\rd, \rx, #(S3C24XX_PA_GPIO - S3C24XX_PA_UART)  		addne	\rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART)  		bic	\rd, \rd, #0xff000 -		ldr	\rd, [ \rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ] +		ldr	\rd, [\rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0)]  		and	\rd, \rd, #0x00ff0000  		teq	\rd, #0x00440000		@ is it 2440?  1004: -		ldr	\rd, [ \rx, # S3C2410_UFSTAT ] +		ldr	\rd, [\rx, # S3C2410_UFSTAT]  		moveq	\rd, \rd, lsr #SHIFT_2440TXF  		tst	\rd, #S3C2410_UFSTAT_TXFULL  	.endm  	.macro  fifo_full_s3c2410 rd, rx -		ldr	\rd, [ \rx, # S3C2410_UFSTAT ] +		ldr	\rd, [\rx, # S3C2410_UFSTAT]  		tst	\rd, #S3C2410_UFSTAT_TXFULL  	.endm @@ -68,18 +68,18 @@  		addeq	\rd, \rx, #(S3C24XX_PA_GPIO - S3C24XX_PA_UART)  		addne	\rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART)  		bic	\rd, \rd, #0xff000 -		ldr	\rd, [ \rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ] +		ldr	\rd, [\rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0)]  		and	\rd, \rd, #0x00ff0000  		teq	\rd, #0x00440000		@ is it 2440?  10000: -		ldr	\rd, [ \rx, # S3C2410_UFSTAT ] +		ldr	\rd, [\rx, # S3C2410_UFSTAT]  		andne	\rd, \rd, #S3C2410_UFSTAT_TXMASK  		andeq	\rd, \rd, #S3C2440_UFSTAT_TXMASK  	.endm  	.macro fifo_level_s3c2410 rd, rx -		ldr	\rd, [ \rx, # S3C2410_UFSTAT ] +		ldr	\rd, [\rx, # S3C2410_UFSTAT]  		and	\rd, \rd, #S3C2410_UFSTAT_TXMASK  	.endm diff --git a/arch/arm/mach-s3c24xx/include/mach/entry-macro.S b/arch/arm/mach-s3c24xx/include/mach/entry-macro.S index 7615a14773f..6a21beeba1d 100644 --- a/arch/arm/mach-s3c24xx/include/mach/entry-macro.S +++ b/arch/arm/mach-s3c24xx/include/mach/entry-macro.S @@ -31,10 +31,10 @@  		@@ try the interrupt offset register, since it is there -		ldr	\irqstat, [ \base, #INTPND ] +		ldr	\irqstat, [\base, #INTPND ]  		teq	\irqstat, #0  		beq	1002f -		ldr	\irqnr, [ \base, #INTOFFSET ] +		ldr	\irqnr, [\base, #INTOFFSET ]  		mov	\tmp, #1  		tst	\irqstat, \tmp, lsl \irqnr  		bne	1001f diff --git a/arch/arm/mach-s3c24xx/mach-osiris.c b/arch/arm/mach-s3c24xx/mach-osiris.c index bb36d832bd3..c52100ef232 100644 --- a/arch/arm/mach-s3c24xx/mach-osiris.c +++ b/arch/arm/mach-s3c24xx/mach-osiris.c @@ -22,6 +22,7 @@  #include <linux/clk.h>  #include <linux/i2c.h>  #include <linux/io.h> +#include <linux/platform_device.h>  #include <linux/i2c/tps65010.h> diff --git a/arch/arm/mach-s3c24xx/pm-h1940.S b/arch/arm/mach-s3c24xx/pm-h1940.S index c93bf2db9f4..6183a688012 100644 --- a/arch/arm/mach-s3c24xx/pm-h1940.S +++ b/arch/arm/mach-s3c24xx/pm-h1940.S @@ -30,4 +30,4 @@  h1940_pm_return:  	mov	r0, #S3C2410_PA_GPIO -	ldr	pc, [ r0, #S3C2410_GSTATUS3 - S3C24XX_VA_GPIO ] +	ldr	pc, [r0, #S3C2410_GSTATUS3 - S3C24XX_VA_GPIO] diff --git a/arch/arm/mach-s3c24xx/pm-s3c2412.c b/arch/arm/mach-s3c24xx/pm-s3c2412.c index c60f67a75af..f5dc2b254a5 100644 --- a/arch/arm/mach-s3c24xx/pm-s3c2412.c +++ b/arch/arm/mach-s3c24xx/pm-s3c2412.c @@ -48,7 +48,8 @@ static int s3c2412_cpu_suspend(unsigned long arg)  	s3c2412_sleep_enter(); -	panic("sleep resumed to originator?"); +	pr_info("Failed to suspend the system\n"); +	return 1; /* Aborting suspend */  }  static void s3c2412_pm_prepare(void) diff --git a/arch/arm/mach-s3c24xx/pm-s3c2416.c b/arch/arm/mach-s3c24xx/pm-s3c2416.c index 1bd4817b8eb..1a9e8dd194f 100644 --- a/arch/arm/mach-s3c24xx/pm-s3c2416.c +++ b/arch/arm/mach-s3c24xx/pm-s3c2416.c @@ -34,7 +34,8 @@ static int s3c2416_cpu_suspend(unsigned long arg)  	s3c2412_sleep_enter(); -	panic("sleep resumed to originator?"); +	pr_info("Failed to suspend the system\n"); +	return 1; /* Aborting suspend */  }  static void s3c2416_pm_prepare(void) diff --git a/arch/arm/mach-s3c24xx/sleep-s3c2410.S b/arch/arm/mach-s3c24xx/sleep-s3c2410.S index dd5b6388a5a..65200ae72c9 100644 --- a/arch/arm/mach-s3c24xx/sleep-s3c2410.S +++ b/arch/arm/mach-s3c24xx/sleep-s3c2410.S @@ -45,9 +45,9 @@ ENTRY(s3c2410_cpu_suspend)  	ldr	r4, =S3C2410_REFRESH  	ldr	r5, =S3C24XX_MISCCR  	ldr	r6, =S3C2410_CLKCON -	ldr	r7, [ r4 ]		@ get REFRESH (and ensure in TLB) -	ldr	r8, [ r5 ]		@ get MISCCR (and ensure in TLB) -	ldr	r9, [ r6 ]		@ get CLKCON (and ensure in TLB) +	ldr	r7, [r4]		@ get REFRESH (and ensure in TLB) +	ldr	r8, [r5]		@ get MISCCR (and ensure in TLB) +	ldr	r9, [r6]		@ get CLKCON (and ensure in TLB)  	orr	r7, r7, #S3C2410_REFRESH_SELF	@ SDRAM sleep command  	orr	r8, r8, #S3C2410_MISCCR_SDSLEEP @ SDRAM power-down signals @@ -61,8 +61,8 @@ ENTRY(s3c2410_cpu_suspend)  	@@ align next bit of code to cache line  	.align	5  s3c2410_do_sleep: -	streq	r7, [ r4 ]			@ SDRAM sleep command -	streq	r8, [ r5 ]			@ SDRAM power-down config -	streq	r9, [ r6 ]			@ CPU sleep +	streq	r7, [r4]			@ SDRAM sleep command +	streq	r8, [r5]			@ SDRAM power-down config +	streq	r9, [r6]			@ CPU sleep  1:	beq	1b  	mov	pc, r14 diff --git a/arch/arm/mach-s3c24xx/sleep-s3c2412.S b/arch/arm/mach-s3c24xx/sleep-s3c2412.S index c82418ed714..5adaceb7da1 100644 --- a/arch/arm/mach-s3c24xx/sleep-s3c2412.S +++ b/arch/arm/mach-s3c24xx/sleep-s3c2412.S @@ -57,12 +57,12 @@ s3c2412_sleep_enter1:  	 * retry, as simply returning causes the system to lock.  	*/ -	ldrne	r9, [ r1 ] -	strne	r9, [ r1 ] -	ldrne	r9, [ r2 ] -	strne	r9, [ r2 ] -	ldrne	r9, [ r3 ] -	strne	r9, [ r3 ] +	ldrne	r9, [r1] +	strne	r9, [r1] +	ldrne	r9, [r2] +	strne	r9, [r2] +	ldrne	r9, [r3] +	strne	r9, [r3]  	bne	s3c2412_sleep_enter1  	mov	pc, r14 diff --git a/arch/arm/mach-s3c64xx/pm.c b/arch/arm/mach-s3c64xx/pm.c index d2e1a16690b..ce849906322 100644 --- a/arch/arm/mach-s3c64xx/pm.c +++ b/arch/arm/mach-s3c64xx/pm.c @@ -296,7 +296,8 @@ static int s3c64xx_cpu_suspend(unsigned long arg)  	/* we should never get past here */ -	panic("sleep resumed to originator?"); +	pr_info("Failed to suspend the system\n"); +	return 1; /* Aborting suspend */  }  /* mapping of interrupts to parts of the wakeup mask */ diff --git a/arch/arm/mach-s5p64x0/pm.c b/arch/arm/mach-s5p64x0/pm.c index 9cba18bfe47..97c2a08ad49 100644 --- a/arch/arm/mach-s5p64x0/pm.c +++ b/arch/arm/mach-s5p64x0/pm.c @@ -103,8 +103,8 @@ static int s5p64x0_cpu_suspend(unsigned long arg)  	    "mcr p15, 0, %0, c7, c10, 4\n\t"  	    "mcr p15, 0, %0, c7, c0, 4" : : "r" (tmp)); -	/* we should never get past here */ -	panic("sleep resumed to originator?"); +	pr_info("Failed to suspend the system\n"); +	return 1; /* Aborting suspend */  }  /* mapping of interrupts to parts of the wakeup mask */ diff --git a/arch/arm/mach-s5pv210/include/mach/uncompress.h b/arch/arm/mach-s5pv210/include/mach/uncompress.h index 08ff2fda1fb..ef977ea8546 100644 --- a/arch/arm/mach-s5pv210/include/mach/uncompress.h +++ b/arch/arm/mach-s5pv210/include/mach/uncompress.h @@ -19,6 +19,8 @@  static void arch_detect_cpu(void)  {  	/* we do not need to do any cpu detection here at the moment. */ +	fifo_mask = S5PV210_UFSTAT_TXMASK; +	fifo_max = 63 << S5PV210_UFSTAT_TXSHIFT;  }  #endif /* __ASM_ARCH_UNCOMPRESS_H */ diff --git a/arch/arm/mach-s5pv210/pm.c b/arch/arm/mach-s5pv210/pm.c index 736bfb103cb..2b68a67b6e9 100644 --- a/arch/arm/mach-s5pv210/pm.c +++ b/arch/arm/mach-s5pv210/pm.c @@ -104,8 +104,8 @@ static int s5pv210_cpu_suspend(unsigned long arg)  	    "mcr p15, 0, %0, c7, c10, 4\n\t"  	    "wfi" : : "r" (tmp)); -	/* we should never get past here */ -	panic("sleep resumed to originator?"); +	pr_info("Failed to suspend the system\n"); +	return 1; /* Aborting suspend */  }  static void s5pv210_pm_prepare(void) diff --git a/arch/arm/mach-sa1100/lart.c b/arch/arm/mach-sa1100/lart.c index f69f78fc3dd..bca7e60b24d 100644 --- a/arch/arm/mach-sa1100/lart.c +++ b/arch/arm/mach-sa1100/lart.c @@ -24,9 +24,6 @@  #include "generic.h" - -#warning "include/asm/arch-sa1100/ide.h needs fixing for lart" -  static struct mcp_plat_data lart_mcp_data = {  	.mccr0		= MCCR0_ADM,  	.sclk_rate	= 11981000, diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c index 721e7b4275f..d4dcec53171 100644 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c @@ -71,13 +71,11 @@ void __init ux500_init_irq(void)  	 * Init clocks here so that they are available for system timer  	 * initialization.  	 */ -	if (cpu_is_u8500_family()) +	if (cpu_is_u8500_family() || cpu_is_u9540())  		db8500_prcmu_early_init(); -	if (cpu_is_u8500_family()) +	if (cpu_is_u8500_family() || cpu_is_u9540())  		u8500_clk_init(); -	else if (cpu_is_u9540()) -		u9540_clk_init();  	else if (cpu_is_u8540())  		u8540_clk_init();  } diff --git a/arch/arm/mach-ux500/cpuidle.c b/arch/arm/mach-ux500/cpuidle.c index b54884bd254..ce9149302cc 100644 --- a/arch/arm/mach-ux500/cpuidle.c +++ b/arch/arm/mach-ux500/cpuidle.c @@ -40,8 +40,10 @@ static inline int ux500_enter_idle(struct cpuidle_device *dev,  			goto wfi;  		/* decouple the gic from the A9 cores */ -		if (prcmu_gic_decouple()) +		if (prcmu_gic_decouple()) { +			spin_unlock(&master_lock);  			goto out; +		}  		/* If an error occur, we will have to recouple the gic  		 * manually */ diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig index 63d8e9f81b9..1dba3688275 100644 --- a/arch/arm/mach-versatile/Kconfig +++ b/arch/arm/mach-versatile/Kconfig @@ -25,4 +25,9 @@ config MACH_VERSATILE_DT  	  Include support for the ARM(R) Versatile/PB platform,  	  using the device tree for discovery +config MACH_VERSATILE_AUTO +	def_bool y +	depends on !ARCH_VERSATILE_PB && !MACH_VERSATILE_AB +	select MACH_VERSATILE_DT +  endmenu diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index a78827b7027..43478c299cc 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c @@ -127,7 +127,7 @@ void __init versatile_init_irq(void)  	writel(PIC_MASK, VA_SIC_BASE + SIC_INT_PIC_ENABLE);  } -static struct map_desc versatile_io_desc[] __initdata = { +static struct map_desc versatile_io_desc[] __initdata __maybe_unused = {  	{  		.virtual	=  IO_ADDRESS(VERSATILE_SYS_BASE),  		.pfn		= __phys_to_pfn(VERSATILE_SYS_BASE), diff --git a/arch/arm/mach-w90x900/include/mach/entry-macro.S b/arch/arm/mach-w90x900/include/mach/entry-macro.S index e286daca682..0ff612ac95b 100644 --- a/arch/arm/mach-w90x900/include/mach/entry-macro.S +++ b/arch/arm/mach-w90x900/include/mach/entry-macro.S @@ -19,8 +19,8 @@  		mov	\base, #AIC_BA -		ldr	\irqnr, [ \base, #AIC_IPER] -		ldr	\irqnr, [ \base, #AIC_ISNR] +		ldr	\irqnr, [\base, #AIC_IPER] +		ldr	\irqnr, [\base, #AIC_ISNR]  		cmp	\irqnr, #0  	.endm diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 4136b20cba3..e06c34bdc34 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c @@ -2019,7 +2019,7 @@ static int omap_system_dma_probe(struct platform_device *pdev)  	errata			= p->errata;  	if ((d->dev_caps & RESERVE_CHANNEL) && omap_dma_reserve_channels -			&& (omap_dma_reserve_channels <= dma_lch_count)) +			&& (omap_dma_reserve_channels < d->lch_count))  		d->lch_count	= omap_dma_reserve_channels;  	dma_lch_count		= d->lch_count; diff --git a/arch/arm/plat-orion/mpp.c b/arch/arm/plat-orion/mpp.c index e686fe76a96..7310bcfb299 100644 --- a/arch/arm/plat-orion/mpp.c +++ b/arch/arm/plat-orion/mpp.c @@ -49,7 +49,7 @@ void __init orion_mpp_conf(unsigned int *mpp_list, unsigned int variant_mask,  					"number (%u)\n", num);  			continue;  		} -		if (variant_mask & !(*mpp_list & variant_mask)) { +		if (variant_mask && !(*mpp_list & variant_mask)) {  			printk(KERN_WARNING  			       "orion_mpp_conf: requested MPP%u config "  			       "unavailable on this hardware\n", num); diff --git a/arch/arm/plat-samsung/include/plat/debug-macro.S b/arch/arm/plat-samsung/include/plat/debug-macro.S index 207e275362a..f3a9cff6d5d 100644 --- a/arch/arm/plat-samsung/include/plat/debug-macro.S +++ b/arch/arm/plat-samsung/include/plat/debug-macro.S @@ -14,12 +14,12 @@  /* The S5PV210/S5PC110 implementations are as belows. */  	.macro fifo_level_s5pv210 rd, rx -		ldr	\rd, [ \rx, # S3C2410_UFSTAT ] +		ldr	\rd, [\rx, # S3C2410_UFSTAT]  		and	\rd, \rd, #S5PV210_UFSTAT_TXMASK  	.endm  	.macro  fifo_full_s5pv210 rd, rx -		ldr	\rd, [ \rx, # S3C2410_UFSTAT ] +		ldr	\rd, [\rx, # S3C2410_UFSTAT]  		tst	\rd, #S5PV210_UFSTAT_TXFULL  	.endm @@ -27,7 +27,7 @@   * most widely re-used */  	.macro fifo_level_s3c2440 rd, rx -		ldr	\rd, [ \rx, # S3C2410_UFSTAT ] +		ldr	\rd, [\rx, # S3C2410_UFSTAT]  		and	\rd, \rd, #S3C2440_UFSTAT_TXMASK  	.endm @@ -36,7 +36,7 @@  #endif  	.macro  fifo_full_s3c2440 rd, rx -		ldr	\rd, [ \rx, # S3C2410_UFSTAT ] +		ldr	\rd, [\rx, # S3C2410_UFSTAT]  		tst	\rd, #S3C2440_UFSTAT_TXFULL  	.endm @@ -45,11 +45,11 @@  #endif  	.macro	senduart,rd,rx -		strb 	\rd, [\rx, # S3C2410_UTXH ] +		strb 	\rd, [\rx, # S3C2410_UTXH]  	.endm  	.macro	busyuart, rd, rx -		ldr	\rd, [ \rx, # S3C2410_UFCON ] +		ldr	\rd, [\rx, # S3C2410_UFCON]  		tst	\rd, #S3C2410_UFCON_FIFOMODE	@ fifo enabled?  		beq	1001f				@  		@ FIFO enabled... @@ -60,7 +60,7 @@  1001:  		@ busy waiting for non fifo -		ldr	\rd, [ \rx, # S3C2410_UTRSTAT ] +		ldr	\rd, [\rx, # S3C2410_UTRSTAT]  		tst	\rd, #S3C2410_UTRSTAT_TXFE  		beq	1001b @@ -68,7 +68,7 @@  	.endm  	.macro	waituart,rd,rx -		ldr	\rd, [ \rx, # S3C2410_UFCON ] +		ldr	\rd, [\rx, # S3C2410_UFCON]  		tst	\rd, #S3C2410_UFCON_FIFOMODE	@ fifo enabled?  		beq	1001f				@  		@ FIFO enabled... @@ -79,7 +79,7 @@  		b	1002f  1001:  		@ idle waiting for non fifo -		ldr	\rd, [ \rx, # S3C2410_UTRSTAT ] +		ldr	\rd, [\rx, # S3C2410_UTRSTAT]  		tst	\rd, #S3C2410_UTRSTAT_TXFE  		beq	1001b diff --git a/arch/arm/plat-samsung/include/plat/fimc-core.h b/arch/arm/plat-samsung/include/plat/fimc-core.h index 945a99d5956..1d6cb2b8b09 100644 --- a/arch/arm/plat-samsung/include/plat/fimc-core.h +++ b/arch/arm/plat-samsung/include/plat/fimc-core.h @@ -43,6 +43,8 @@ static inline void s3c_fimc_setname(int id, char *name)  		s5p_device_fimc3.name = name;  		break;  #endif +	default: +		break;  	}  } diff --git a/arch/arm/plat-samsung/include/plat/sdhci.h b/arch/arm/plat-samsung/include/plat/sdhci.h index 151cc9195cf..9b87f38fc4f 100644 --- a/arch/arm/plat-samsung/include/plat/sdhci.h +++ b/arch/arm/plat-samsung/include/plat/sdhci.h @@ -374,6 +374,8 @@ static inline void s3c_sdhci_setname(int id, char *name)  		s3c_device_hsmmc3.name = name;  		break;  #endif +	default: +		break;  	}  } diff --git a/arch/arm/plat-samsung/pm.c b/arch/arm/plat-samsung/pm.c index 15070284343..002b1472293 100644 --- a/arch/arm/plat-samsung/pm.c +++ b/arch/arm/plat-samsung/pm.c @@ -51,7 +51,7 @@ void s3c_pm_dbg(const char *fmt, ...)  	char buff[256];  	va_start(va, fmt); -	vsprintf(buff, fmt, va); +	vsnprintf(buff, sizeof(buff), fmt, va);  	va_end(va);  	printascii(buff); @@ -243,6 +243,7 @@ int (*pm_cpu_sleep)(unsigned long);  static int s3c_pm_enter(suspend_state_t state)  { +	int ret;  	/* ensure the debug is initialised (if enabled) */  	s3c_pm_debug_init(); @@ -300,7 +301,9 @@ static int s3c_pm_enter(suspend_state_t state)  	 * we resume as it saves its own register state and restores it  	 * during the resume.  */ -	cpu_suspend(0, pm_cpu_sleep); +	ret = cpu_suspend(0, pm_cpu_sleep); +	if (ret) +		return ret;  	/* restore the system state */ diff --git a/arch/arm/plat-spear/Kconfig b/arch/arm/plat-spear/Kconfig index 87dbd81bdf5..739d016eb27 100644 --- a/arch/arm/plat-spear/Kconfig +++ b/arch/arm/plat-spear/Kconfig @@ -10,6 +10,7 @@ choice  config ARCH_SPEAR13XX  	bool "ST SPEAr13xx with Device Tree" +	select ARCH_HAVE_CPUFREQ  	select ARM_GIC  	select CPU_V7  	select GPIO_SPEAR_SPICS diff --git a/drivers/gpio/gpio-samsung.c b/drivers/gpio/gpio-samsung.c index 76be7eed79d..b2016ed941a 100644 --- a/drivers/gpio/gpio-samsung.c +++ b/drivers/gpio/gpio-samsung.c @@ -3023,9 +3023,9 @@ static __init int samsung_gpiolib_init(void)  	*/  	struct device_node *pctrl_np;  	static const struct of_device_id exynos_pinctrl_ids[] = { -		{ .compatible = "samsung,pinctrl-exynos4210", }, -		{ .compatible = "samsung,pinctrl-exynos4x12", }, -		{ .compatible = "samsung,pinctrl-exynos5440", }, +		{ .compatible = "samsung,exynos4210-pinctrl", }, +		{ .compatible = "samsung,exynos4x12-pinctrl", }, +		{ .compatible = "samsung,exynos5440-pinctrl", },  	};  	for_each_matching_node(pctrl_np, exynos_pinctrl_ids)  		if (pctrl_np && of_device_is_available(pctrl_np)) diff --git a/drivers/mfd/vexpress-sysreg.c b/drivers/mfd/vexpress-sysreg.c index 77048b18439..558c2928f26 100644 --- a/drivers/mfd/vexpress-sysreg.c +++ b/drivers/mfd/vexpress-sysreg.c @@ -313,7 +313,7 @@ static void vexpress_sysreg_config_complete(unsigned long data)  } -void __init vexpress_sysreg_setup(struct device_node *node) +void vexpress_sysreg_setup(struct device_node *node)  {  	if (WARN_ON(!vexpress_sysreg_base))  		return; diff --git a/drivers/pinctrl/pinctrl-samsung.c b/drivers/pinctrl/pinctrl-samsung.c index 5f8441ef59c..f206df17565 100644 --- a/drivers/pinctrl/pinctrl-samsung.c +++ b/drivers/pinctrl/pinctrl-samsung.c @@ -944,9 +944,9 @@ static int samsung_pinctrl_probe(struct platform_device *pdev)  }  static const struct of_device_id samsung_pinctrl_dt_match[] = { -	{ .compatible = "samsung,pinctrl-exynos4210", +	{ .compatible = "samsung,exynos4210-pinctrl",  		.data = (void *)exynos4210_pin_ctrl }, -	{ .compatible = "samsung,pinctrl-exynos4x12", +	{ .compatible = "samsung,exynos4x12-pinctrl",  		.data = (void *)exynos4x12_pin_ctrl },  	{},  }; diff --git a/include/linux/platform_data/i2c-s3c2410.h b/include/linux/platform_data/i2c-s3c2410.h index 51d52e767a1..2a50048c1c4 100644 --- a/include/linux/platform_data/i2c-s3c2410.h +++ b/include/linux/platform_data/i2c-s3c2410.h @@ -15,6 +15,8 @@  #define S3C_IICFLG_FILTER	(1<<0)	/* enable s3c2440 filter */ +struct platform_device; +  /**   *	struct s3c2410_platform_i2c - Platform data for s3c I2C.   *	@bus_num: The bus number to use (if possible). diff --git a/scripts/sortextable.h b/scripts/sortextable.h index e4fd45b7e45..f5eb43d4292 100644 --- a/scripts/sortextable.h +++ b/scripts/sortextable.h @@ -182,7 +182,7 @@ do_func(Elf_Ehdr *ehdr, char const *const fname, table_sort_t custom_sort)  		_r(&sort_needed_sym->st_value) -  		_r(&sort_needed_sec->sh_addr); -#if 1 +#if 0  	printf("sort done marker at %lx\n",  	       (unsigned long)((char *)sort_done_location - (char *)ehdr));  #endif  |