arm-soc: fixes for v3.7-rc3
Bug fixes for a number of ARM platforms, mostly OMAP, imx and at91. These come a little later than I had hoped but unfortunately we had a few of these patches cause regressions themselves and had to work out how to deal with those in the meantime. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIVAwUAUIwDWmCrR//JCVInAQJREBAAwkH8kI/Xl3JqTfP4A69P8fOdD0p1ZC08 QHzRdgXixpssiIC2wKwM4N4Ine23p1sbGIHHjnDMyTytFXGl7RIRjIXucm3NVBq5 bw5uW5HziO8Pg+uA0ieZiqDEvroIw6U0AxKEKrZ9Fpc9XBr9RArIsRtTNyoFli+2 JBgQ5eHYq4cq3cmX1XkU4q7RVUUA6XE/Vqs9IT6dfK4x56RR0Huri/ldkxqsLNj+ HdN+7QoTz4wUjhF1tqCZt/3bo1dUONpDu4DJPnzscQA77HplQsSF3MsY5AEajjsA 8mKG6AOjmvZsqJFjGYsq/r4DerPj2ME+1z84y5xrMI5WUxJL/6fj5uGTNsdVxifW scywLEG9bRjCehgoAg26XZWNKy6NuzkONxR9fjbrj9vGopje23VT5OXgeygesUD2 WTbI3qeZz/O1esDBQ9D025K3a9kTCsJltstO2oVubGWgqvG2oK8LTqjeu8DwM2ti tloNQmylOKOaxnYm9TSouDRpQ0MPFVxMxe1VwFxzry7Mz3+lfyC2/fiYpZLC+OgQ 2TjclUB4aIXLPVJAsAxu9Z8vEhx11EtghkeWy5Hk4TT3dXgn77MnyAPWp594DjQ0 WdHrCNCK+K0Kk7R2FDkaZi2CvdCd1+AS6xyXjO3CmA7HbWLDEUlRg4/24/AzLK3j rO+bw62yQKg= =IDdm -----END PGP SIGNATURE----- Merge tag 'fixes-for-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc Pull arm-soc fixes from Arnd Bergmann: "Bug fixes for a number of ARM platforms, mostly OMAP, imx and at91. These come a little later than I had hoped but unfortunately we had a few of these patches cause regressions themselves and had to work out how to deal with those in the meantime." * tag 'fixes-for-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (38 commits) Revert "ARM i.MX25: Fix PWM per clock lookups" ARM: versatile: fix versatile_defconfig ARM: mvebu: update defconfig with 3.7 changes ARM: at91: fix at91x40 build ARM: socfpga: Fix socfpga compilation with early_printk() enabled ARM: SPEAr: Remove unused empty files MAINTAINERS: Add arm-soc tree entry ARM: dts: mxs: add the "clock-names" for gpmi-nand ARM: ux500: Correct SDI5 address and add some format changes ARM: ux500: Specify AMBA Primecell IDs for Nomadik I2C in DT ARM: ux500: Fix build error relating to IRQCHIP_SKIP_SET_WAKE ARM: at91: drop duplicated config SOC_AT91SAM9 entry ARM: at91/i2c: change id to let i2c-at91 work ARM: at91/i2c: change id to let i2c-gpio work ARM: at91/dts: at91sam9g20ek_common: Fix typos in buttons labels. ARM: at91: fix external interrupt specification in board code ARM: at91: fix external interrupts in non-DT case ARM: at91: at91sam9g10: fix SOC type detection ARM: at91/tc: fix typo in the DT document ARM: AM33XX: Fix configuration of dmtimer parent clock by dmtimer driverDate:Wed, 17 Oct 2012 13:55:55 -0500 ...
This commit is contained in:
commit
065c8012b2
@ -8,7 +8,7 @@ PIT Timer required properties:
|
|||||||
shared across all System Controller members.
|
shared across all System Controller members.
|
||||||
|
|
||||||
TC/TCLIB Timer required properties:
|
TC/TCLIB Timer required properties:
|
||||||
- compatible: Should be "atmel,<chip>-pit".
|
- compatible: Should be "atmel,<chip>-tcb".
|
||||||
<chip> can be "at91rm9200" or "at91sam9x5"
|
<chip> can be "at91rm9200" or "at91sam9x5"
|
||||||
- reg: Should contain registers location and length
|
- reg: Should contain registers location and length
|
||||||
- interrupts: Should contain all interrupts for the TC block
|
- interrupts: Should contain all interrupts for the TC block
|
||||||
|
@ -637,6 +637,13 @@ W: http://www.arm.linux.org.uk/
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/
|
F: arch/arm/
|
||||||
|
|
||||||
|
ARM SUB-ARCHITECTURES
|
||||||
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
|
S: MAINTAINED
|
||||||
|
F: arch/arm/mach-*/
|
||||||
|
F: arch/arm/plat-*/
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git
|
||||||
|
|
||||||
ARM PRIMECELL AACI PL041 DRIVER
|
ARM PRIMECELL AACI PL041 DRIVER
|
||||||
M: Russell King <linux@arm.linux.org.uk>
|
M: Russell King <linux@arm.linux.org.uk>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -126,14 +126,14 @@
|
|||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
btn3 {
|
btn3 {
|
||||||
label = "Buttin 3";
|
label = "Button 3";
|
||||||
gpios = <&pioA 30 1>;
|
gpios = <&pioA 30 1>;
|
||||||
linux,code = <0x103>;
|
linux,code = <0x103>;
|
||||||
gpio-key,wakeup;
|
gpio-key,wakeup;
|
||||||
};
|
};
|
||||||
|
|
||||||
btn4 {
|
btn4 {
|
||||||
label = "Buttin 4";
|
label = "Button 4";
|
||||||
gpios = <&pioA 31 1>;
|
gpios = <&pioA 31 1>;
|
||||||
linux,code = <0x104>;
|
linux,code = <0x104>;
|
||||||
gpio-key,wakeup;
|
gpio-key,wakeup;
|
||||||
|
@ -483,6 +483,8 @@
|
|||||||
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
||||||
reg = <0x80004000 0x1000>;
|
reg = <0x80004000 0x1000>;
|
||||||
interrupts = <0 21 0x4>;
|
interrupts = <0 21 0x4>;
|
||||||
|
arm,primecell-periphid = <0x180024>;
|
||||||
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
v-i2c-supply = <&db8500_vape_reg>;
|
v-i2c-supply = <&db8500_vape_reg>;
|
||||||
@ -494,6 +496,8 @@
|
|||||||
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
||||||
reg = <0x80122000 0x1000>;
|
reg = <0x80122000 0x1000>;
|
||||||
interrupts = <0 22 0x4>;
|
interrupts = <0 22 0x4>;
|
||||||
|
arm,primecell-periphid = <0x180024>;
|
||||||
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
v-i2c-supply = <&db8500_vape_reg>;
|
v-i2c-supply = <&db8500_vape_reg>;
|
||||||
@ -505,6 +509,8 @@
|
|||||||
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
||||||
reg = <0x80128000 0x1000>;
|
reg = <0x80128000 0x1000>;
|
||||||
interrupts = <0 55 0x4>;
|
interrupts = <0 55 0x4>;
|
||||||
|
arm,primecell-periphid = <0x180024>;
|
||||||
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
v-i2c-supply = <&db8500_vape_reg>;
|
v-i2c-supply = <&db8500_vape_reg>;
|
||||||
@ -516,6 +522,8 @@
|
|||||||
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
||||||
reg = <0x80110000 0x1000>;
|
reg = <0x80110000 0x1000>;
|
||||||
interrupts = <0 12 0x4>;
|
interrupts = <0 12 0x4>;
|
||||||
|
arm,primecell-periphid = <0x180024>;
|
||||||
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
v-i2c-supply = <&db8500_vape_reg>;
|
v-i2c-supply = <&db8500_vape_reg>;
|
||||||
@ -527,6 +535,8 @@
|
|||||||
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
||||||
reg = <0x8012a000 0x1000>;
|
reg = <0x8012a000 0x1000>;
|
||||||
interrupts = <0 51 0x4>;
|
interrupts = <0 51 0x4>;
|
||||||
|
arm,primecell-periphid = <0x180024>;
|
||||||
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
v-i2c-supply = <&db8500_vape_reg>;
|
v-i2c-supply = <&db8500_vape_reg>;
|
||||||
@ -573,33 +583,38 @@
|
|||||||
interrupts = <0 60 0x4>;
|
interrupts = <0 60 0x4>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
sdi@80118000 {
|
sdi@80118000 {
|
||||||
compatible = "arm,pl18x", "arm,primecell";
|
compatible = "arm,pl18x", "arm,primecell";
|
||||||
reg = <0x80118000 0x1000>;
|
reg = <0x80118000 0x1000>;
|
||||||
interrupts = <0 50 0x4>;
|
interrupts = <0 50 0x4>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
sdi@80005000 {
|
sdi@80005000 {
|
||||||
compatible = "arm,pl18x", "arm,primecell";
|
compatible = "arm,pl18x", "arm,primecell";
|
||||||
reg = <0x80005000 0x1000>;
|
reg = <0x80005000 0x1000>;
|
||||||
interrupts = <0 41 0x4>;
|
interrupts = <0 41 0x4>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
sdi@80119000 {
|
sdi@80119000 {
|
||||||
compatible = "arm,pl18x", "arm,primecell";
|
compatible = "arm,pl18x", "arm,primecell";
|
||||||
reg = <0x80119000 0x1000>;
|
reg = <0x80119000 0x1000>;
|
||||||
interrupts = <0 59 0x4>;
|
interrupts = <0 59 0x4>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
sdi@80114000 {
|
sdi@80114000 {
|
||||||
compatible = "arm,pl18x", "arm,primecell";
|
compatible = "arm,pl18x", "arm,primecell";
|
||||||
reg = <0x80114000 0x1000>;
|
reg = <0x80114000 0x1000>;
|
||||||
interrupts = <0 99 0x4>;
|
interrupts = <0 99 0x4>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
sdi@80008000 {
|
sdi@80008000 {
|
||||||
compatible = "arm,pl18x", "arm,primecell";
|
compatible = "arm,pl18x", "arm,primecell";
|
||||||
reg = <0x80114000 0x1000>;
|
reg = <0x80008000 0x1000>;
|
||||||
interrupts = <0 100 0x4>;
|
interrupts = <0 100 0x4>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
@ -20,8 +20,10 @@
|
|||||||
compatible = "samsung,trats", "samsung,exynos4210";
|
compatible = "samsung,trats", "samsung,exynos4210";
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
reg = <0x40000000 0x20000000
|
reg = <0x40000000 0x10000000
|
||||||
0x60000000 0x20000000>;
|
0x50000000 0x10000000
|
||||||
|
0x60000000 0x10000000
|
||||||
|
0x70000000 0x10000000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
|
@ -69,6 +69,7 @@
|
|||||||
interrupts = <13>, <56>;
|
interrupts = <13>, <56>;
|
||||||
interrupt-names = "gpmi-dma", "bch";
|
interrupt-names = "gpmi-dma", "bch";
|
||||||
clocks = <&clks 34>;
|
clocks = <&clks 34>;
|
||||||
|
clock-names = "gpmi_io";
|
||||||
fsl,gpmi-dma-channel = <4>;
|
fsl,gpmi-dma-channel = <4>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
@ -85,6 +85,7 @@
|
|||||||
interrupts = <88>, <41>;
|
interrupts = <88>, <41>;
|
||||||
interrupt-names = "gpmi-dma", "bch";
|
interrupt-names = "gpmi-dma", "bch";
|
||||||
clocks = <&clks 50>;
|
clocks = <&clks 50>;
|
||||||
|
clock-names = "gpmi_io";
|
||||||
fsl,gpmi-dma-channel = <4>;
|
fsl,gpmi-dma-channel = <4>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
@ -257,7 +257,7 @@
|
|||||||
interrupt-names = "common", "tx", "rx", "sidetone";
|
interrupt-names = "common", "tx", "rx", "sidetone";
|
||||||
interrupt-parent = <&intc>;
|
interrupt-parent = <&intc>;
|
||||||
ti,buffer-size = <1280>;
|
ti,buffer-size = <1280>;
|
||||||
ti,hwmods = "mcbsp2";
|
ti,hwmods = "mcbsp2", "mcbsp2_sidetone";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp3: mcbsp@49024000 {
|
mcbsp3: mcbsp@49024000 {
|
||||||
@ -272,7 +272,7 @@
|
|||||||
interrupt-names = "common", "tx", "rx", "sidetone";
|
interrupt-names = "common", "tx", "rx", "sidetone";
|
||||||
interrupt-parent = <&intc>;
|
interrupt-parent = <&intc>;
|
||||||
ti,buffer-size = <128>;
|
ti,buffer-size = <128>;
|
||||||
ti,hwmods = "mcbsp3";
|
ti,hwmods = "mcbsp3", "mcbsp3_sidetone";
|
||||||
};
|
};
|
||||||
|
|
||||||
mcbsp4: mcbsp@49026000 {
|
mcbsp4: mcbsp@49026000 {
|
||||||
|
@ -139,6 +139,7 @@ CONFIG_I2C_IMX=y
|
|||||||
CONFIG_SPI=y
|
CONFIG_SPI=y
|
||||||
CONFIG_SPI_IMX=y
|
CONFIG_SPI_IMX=y
|
||||||
CONFIG_GPIO_SYSFS=y
|
CONFIG_GPIO_SYSFS=y
|
||||||
|
CONFIG_GPIO_MC9S08DZ60=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
CONFIG_WATCHDOG=y
|
CONFIG_WATCHDOG=y
|
||||||
CONFIG_IMX2_WDT=y
|
CONFIG_IMX2_WDT=y
|
||||||
@ -155,6 +156,7 @@ CONFIG_SOC_CAMERA=y
|
|||||||
CONFIG_SOC_CAMERA_OV2640=y
|
CONFIG_SOC_CAMERA_OV2640=y
|
||||||
CONFIG_VIDEO_MX3=y
|
CONFIG_VIDEO_MX3=y
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
|
CONFIG_LCD_PLATFORM=y
|
||||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||||
CONFIG_LCD_CLASS_DEVICE=y
|
CONFIG_LCD_CLASS_DEVICE=y
|
||||||
CONFIG_LCD_L4F00242T03=y
|
CONFIG_LCD_L4F00242T03=y
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
CONFIG_EXPERIMENTAL=y
|
CONFIG_EXPERIMENTAL=y
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
CONFIG_NO_HZ=y
|
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
@ -9,10 +9,12 @@ CONFIG_SLAB=y
|
|||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
CONFIG_MODULE_UNLOAD=y
|
CONFIG_MODULE_UNLOAD=y
|
||||||
CONFIG_ARCH_MVEBU=y
|
CONFIG_ARCH_MVEBU=y
|
||||||
CONFIG_MACH_ARMADA_370_XP=y
|
CONFIG_MACH_ARMADA_370=y
|
||||||
|
CONFIG_MACH_ARMADA_XP=y
|
||||||
|
# CONFIG_CACHE_L2X0 is not set
|
||||||
CONFIG_AEABI=y
|
CONFIG_AEABI=y
|
||||||
CONFIG_HIGHMEM=y
|
CONFIG_HIGHMEM=y
|
||||||
CONFIG_USE_OF=y
|
# CONFIG_COMPACTION is not set
|
||||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||||
CONFIG_ARM_APPENDED_DTB=y
|
CONFIG_ARM_APPENDED_DTB=y
|
||||||
@ -23,6 +25,8 @@ CONFIG_SERIAL_8250_CONSOLE=y
|
|||||||
CONFIG_SERIAL_OF_PLATFORM=y
|
CONFIG_SERIAL_OF_PLATFORM=y
|
||||||
CONFIG_GPIOLIB=y
|
CONFIG_GPIOLIB=y
|
||||||
CONFIG_GPIO_SYSFS=y
|
CONFIG_GPIO_SYSFS=y
|
||||||
|
# CONFIG_USB_SUPPORT is not set
|
||||||
|
# CONFIG_IOMMU_SUPPORT is not set
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
CONFIG_EXT3_FS=y
|
CONFIG_EXT3_FS=y
|
||||||
# CONFIG_EXT3_FS_XATTR is not set
|
# CONFIG_EXT3_FS_XATTR is not set
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
CONFIG_ARCH_VERSATILE=y
|
||||||
CONFIG_EXPERIMENTAL=y
|
CONFIG_EXPERIMENTAL=y
|
||||||
# CONFIG_LOCALVERSION_AUTO is not set
|
# CONFIG_LOCALVERSION_AUTO is not set
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
|
27
arch/arm/include/debug/8250_32.S
Normal file
27
arch/arm/include/debug/8250_32.S
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2011 Picochip Ltd., Jamie Iles
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* Derived from arch/arm/mach-davinci/include/mach/debug-macro.S to use 32-bit
|
||||||
|
* accesses to the 8250.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/serial_reg.h>
|
||||||
|
|
||||||
|
.macro senduart,rd,rx
|
||||||
|
str \rd, [\rx, #UART_TX << UART_SHIFT]
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro busyuart,rd,rx
|
||||||
|
1002: ldr \rd, [\rx, #UART_LSR << UART_SHIFT]
|
||||||
|
and \rd, \rd, #UART_LSR_TEMT | UART_LSR_THRE
|
||||||
|
teq \rd, #UART_LSR_TEMT | UART_LSR_THRE
|
||||||
|
bne 1002b
|
||||||
|
.endm
|
||||||
|
|
||||||
|
/* The UART's don't have any flow control IO's wired up. */
|
||||||
|
.macro waituart,rd,rx
|
||||||
|
.endm
|
@ -5,10 +5,7 @@
|
|||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation.
|
||||||
*
|
*
|
||||||
* Derived from arch/arm/mach-davinci/include/mach/debug-macro.S to use 32-bit
|
|
||||||
* accesses to the 8250.
|
|
||||||
*/
|
*/
|
||||||
#include <linux/serial_reg.h>
|
|
||||||
|
|
||||||
#define UART_SHIFT 2
|
#define UART_SHIFT 2
|
||||||
#define PICOXCELL_UART1_BASE 0x80230000
|
#define PICOXCELL_UART1_BASE 0x80230000
|
||||||
@ -19,17 +16,4 @@
|
|||||||
ldr \rp, =PICOXCELL_UART1_BASE
|
ldr \rp, =PICOXCELL_UART1_BASE
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro senduart,rd,rx
|
#include "8250_32.S"
|
||||||
str \rd, [\rx, #UART_TX << UART_SHIFT]
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.macro busyuart,rd,rx
|
|
||||||
1002: ldr \rd, [\rx, #UART_LSR << UART_SHIFT]
|
|
||||||
and \rd, \rd, #UART_LSR_TEMT | UART_LSR_THRE
|
|
||||||
teq \rd, #UART_LSR_TEMT | UART_LSR_THRE
|
|
||||||
bne 1002b
|
|
||||||
.endm
|
|
||||||
|
|
||||||
/* The UART's don't have any flow control IO's wired up. */
|
|
||||||
.macro waituart,rd,rx
|
|
||||||
.endm
|
|
||||||
|
@ -7,6 +7,9 @@
|
|||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define UART_SHIFT 2
|
||||||
|
#define DEBUG_LL_UART_OFFSET 0x00002000
|
||||||
|
|
||||||
.macro addruart, rp, rv, tmp
|
.macro addruart, rp, rv, tmp
|
||||||
mov \rp, #DEBUG_LL_UART_OFFSET
|
mov \rp, #DEBUG_LL_UART_OFFSET
|
||||||
orr \rp, \rp, #0x00c00000
|
orr \rp, \rp, #0x00c00000
|
||||||
@ -14,3 +17,5 @@
|
|||||||
orr \rp, \rp, #0xff000000 @ physical base
|
orr \rp, \rp, #0xff000000 @ physical base
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
#include "8250_32.S"
|
||||||
|
|
||||||
|
@ -21,19 +21,13 @@ config SOC_AT91SAM9
|
|||||||
bool
|
bool
|
||||||
select CPU_ARM926T
|
select CPU_ARM926T
|
||||||
select GENERIC_CLOCKEVENTS
|
select GENERIC_CLOCKEVENTS
|
||||||
|
select MULTI_IRQ_HANDLER
|
||||||
|
select SPARSE_IRQ
|
||||||
|
|
||||||
menu "Atmel AT91 System-on-Chip"
|
menu "Atmel AT91 System-on-Chip"
|
||||||
|
|
||||||
comment "Atmel AT91 Processor"
|
comment "Atmel AT91 Processor"
|
||||||
|
|
||||||
config SOC_AT91SAM9
|
|
||||||
bool
|
|
||||||
select AT91_SAM9_SMC
|
|
||||||
select AT91_SAM9_TIME
|
|
||||||
select CPU_ARM926T
|
|
||||||
select MULTI_IRQ_HANDLER
|
|
||||||
select SPARSE_IRQ
|
|
||||||
|
|
||||||
config SOC_AT91RM9200
|
config SOC_AT91RM9200
|
||||||
bool "AT91RM9200"
|
bool "AT91RM9200"
|
||||||
select CPU_ARM920T
|
select CPU_ARM920T
|
||||||
|
@ -187,7 +187,7 @@ static struct clk_lookup periph_clocks_lookups[] = {
|
|||||||
CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc0_clk),
|
CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc0_clk),
|
||||||
CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk),
|
CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk),
|
||||||
CLKDEV_CON_DEV_ID("pclk", "ssc.2", &ssc2_clk),
|
CLKDEV_CON_DEV_ID("pclk", "ssc.2", &ssc2_clk),
|
||||||
CLKDEV_CON_DEV_ID(NULL, "i2c-at91rm9200", &twi_clk),
|
CLKDEV_CON_DEV_ID(NULL, "i2c-at91rm9200.0", &twi_clk),
|
||||||
/* fake hclk clock */
|
/* fake hclk clock */
|
||||||
CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk),
|
CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk),
|
||||||
CLKDEV_CON_ID("pioA", &pioA_clk),
|
CLKDEV_CON_ID("pioA", &pioA_clk),
|
||||||
|
@ -479,7 +479,7 @@ static struct i2c_gpio_platform_data pdata = {
|
|||||||
|
|
||||||
static struct platform_device at91rm9200_twi_device = {
|
static struct platform_device at91rm9200_twi_device = {
|
||||||
.name = "i2c-gpio",
|
.name = "i2c-gpio",
|
||||||
.id = -1,
|
.id = 0,
|
||||||
.dev.platform_data = &pdata,
|
.dev.platform_data = &pdata,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -512,7 +512,7 @@ static struct resource twi_resources[] = {
|
|||||||
|
|
||||||
static struct platform_device at91rm9200_twi_device = {
|
static struct platform_device at91rm9200_twi_device = {
|
||||||
.name = "i2c-at91rm9200",
|
.name = "i2c-at91rm9200",
|
||||||
.id = -1,
|
.id = 0,
|
||||||
.resource = twi_resources,
|
.resource = twi_resources,
|
||||||
.num_resources = ARRAY_SIZE(twi_resources),
|
.num_resources = ARRAY_SIZE(twi_resources),
|
||||||
};
|
};
|
||||||
|
@ -211,8 +211,8 @@ static struct clk_lookup periph_clocks_lookups[] = {
|
|||||||
CLKDEV_CON_DEV_ID("t1_clk", "atmel_tcb.1", &tc4_clk),
|
CLKDEV_CON_DEV_ID("t1_clk", "atmel_tcb.1", &tc4_clk),
|
||||||
CLKDEV_CON_DEV_ID("t2_clk", "atmel_tcb.1", &tc5_clk),
|
CLKDEV_CON_DEV_ID("t2_clk", "atmel_tcb.1", &tc5_clk),
|
||||||
CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc_clk),
|
CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc_clk),
|
||||||
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9260", &twi_clk),
|
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9260.0", &twi_clk),
|
||||||
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9g20", &twi_clk),
|
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9g20.0", &twi_clk),
|
||||||
/* more usart lookup table for DT entries */
|
/* more usart lookup table for DT entries */
|
||||||
CLKDEV_CON_DEV_ID("usart", "fffff200.serial", &mck),
|
CLKDEV_CON_DEV_ID("usart", "fffff200.serial", &mck),
|
||||||
CLKDEV_CON_DEV_ID("usart", "fffb0000.serial", &usart0_clk),
|
CLKDEV_CON_DEV_ID("usart", "fffb0000.serial", &usart0_clk),
|
||||||
|
@ -389,7 +389,7 @@ static struct i2c_gpio_platform_data pdata = {
|
|||||||
|
|
||||||
static struct platform_device at91sam9260_twi_device = {
|
static struct platform_device at91sam9260_twi_device = {
|
||||||
.name = "i2c-gpio",
|
.name = "i2c-gpio",
|
||||||
.id = -1,
|
.id = 0,
|
||||||
.dev.platform_data = &pdata,
|
.dev.platform_data = &pdata,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -421,7 +421,7 @@ static struct resource twi_resources[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device at91sam9260_twi_device = {
|
static struct platform_device at91sam9260_twi_device = {
|
||||||
.id = -1,
|
.id = 0,
|
||||||
.resource = twi_resources,
|
.resource = twi_resources,
|
||||||
.num_resources = ARRAY_SIZE(twi_resources),
|
.num_resources = ARRAY_SIZE(twi_resources),
|
||||||
};
|
};
|
||||||
|
@ -178,8 +178,8 @@ static struct clk_lookup periph_clocks_lookups[] = {
|
|||||||
CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk),
|
CLKDEV_CON_DEV_ID("pclk", "ssc.1", &ssc1_clk),
|
||||||
CLKDEV_CON_DEV_ID("pclk", "ssc.2", &ssc2_clk),
|
CLKDEV_CON_DEV_ID("pclk", "ssc.2", &ssc2_clk),
|
||||||
CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &hck0),
|
CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &hck0),
|
||||||
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9261", &twi_clk),
|
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9261.0", &twi_clk),
|
||||||
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9g10", &twi_clk),
|
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9g10.0", &twi_clk),
|
||||||
CLKDEV_CON_ID("pioA", &pioA_clk),
|
CLKDEV_CON_ID("pioA", &pioA_clk),
|
||||||
CLKDEV_CON_ID("pioB", &pioB_clk),
|
CLKDEV_CON_ID("pioB", &pioB_clk),
|
||||||
CLKDEV_CON_ID("pioC", &pioC_clk),
|
CLKDEV_CON_ID("pioC", &pioC_clk),
|
||||||
|
@ -285,7 +285,7 @@ static struct i2c_gpio_platform_data pdata = {
|
|||||||
|
|
||||||
static struct platform_device at91sam9261_twi_device = {
|
static struct platform_device at91sam9261_twi_device = {
|
||||||
.name = "i2c-gpio",
|
.name = "i2c-gpio",
|
||||||
.id = -1,
|
.id = 0,
|
||||||
.dev.platform_data = &pdata,
|
.dev.platform_data = &pdata,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -317,7 +317,7 @@ static struct resource twi_resources[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device at91sam9261_twi_device = {
|
static struct platform_device at91sam9261_twi_device = {
|
||||||
.id = -1,
|
.id = 0,
|
||||||
.resource = twi_resources,
|
.resource = twi_resources,
|
||||||
.num_resources = ARRAY_SIZE(twi_resources),
|
.num_resources = ARRAY_SIZE(twi_resources),
|
||||||
};
|
};
|
||||||
|
@ -193,7 +193,7 @@ static struct clk_lookup periph_clocks_lookups[] = {
|
|||||||
CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.0", &spi0_clk),
|
CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.0", &spi0_clk),
|
||||||
CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.1", &spi1_clk),
|
CLKDEV_CON_DEV_ID("spi_clk", "atmel_spi.1", &spi1_clk),
|
||||||
CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tcb_clk),
|
CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tcb_clk),
|
||||||
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9260", &twi_clk),
|
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9260.0", &twi_clk),
|
||||||
/* fake hclk clock */
|
/* fake hclk clock */
|
||||||
CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk),
|
CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_clk),
|
||||||
CLKDEV_CON_ID("pioA", &pioA_clk),
|
CLKDEV_CON_ID("pioA", &pioA_clk),
|
||||||
|
@ -567,7 +567,7 @@ static struct i2c_gpio_platform_data pdata = {
|
|||||||
|
|
||||||
static struct platform_device at91sam9263_twi_device = {
|
static struct platform_device at91sam9263_twi_device = {
|
||||||
.name = "i2c-gpio",
|
.name = "i2c-gpio",
|
||||||
.id = -1,
|
.id = 0,
|
||||||
.dev.platform_data = &pdata,
|
.dev.platform_data = &pdata,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -600,7 +600,7 @@ static struct resource twi_resources[] = {
|
|||||||
|
|
||||||
static struct platform_device at91sam9263_twi_device = {
|
static struct platform_device at91sam9263_twi_device = {
|
||||||
.name = "i2c-at91sam9260",
|
.name = "i2c-at91sam9260",
|
||||||
.id = -1,
|
.id = 0,
|
||||||
.resource = twi_resources,
|
.resource = twi_resources,
|
||||||
.num_resources = ARRAY_SIZE(twi_resources),
|
.num_resources = ARRAY_SIZE(twi_resources),
|
||||||
};
|
};
|
||||||
|
@ -314,7 +314,7 @@ static struct i2c_gpio_platform_data pdata = {
|
|||||||
|
|
||||||
static struct platform_device at91sam9rl_twi_device = {
|
static struct platform_device at91sam9rl_twi_device = {
|
||||||
.name = "i2c-gpio",
|
.name = "i2c-gpio",
|
||||||
.id = -1,
|
.id = 0,
|
||||||
.dev.platform_data = &pdata,
|
.dev.platform_data = &pdata,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -347,7 +347,7 @@ static struct resource twi_resources[] = {
|
|||||||
|
|
||||||
static struct platform_device at91sam9rl_twi_device = {
|
static struct platform_device at91sam9rl_twi_device = {
|
||||||
.name = "i2c-at91sam9g20",
|
.name = "i2c-at91sam9g20",
|
||||||
.id = -1,
|
.id = 0,
|
||||||
.resource = twi_resources,
|
.resource = twi_resources,
|
||||||
.num_resources = ARRAY_SIZE(twi_resources),
|
.num_resources = ARRAY_SIZE(twi_resources),
|
||||||
};
|
};
|
||||||
|
@ -88,6 +88,6 @@ void __init at91x40_init_interrupts(unsigned int priority[NR_AIC_IRQS])
|
|||||||
if (!priority)
|
if (!priority)
|
||||||
priority = at91x40_default_irq_priority;
|
priority = at91x40_default_irq_priority;
|
||||||
|
|
||||||
at91_aic_init(priority);
|
at91_aic_init(priority, at91_extern_irq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ static struct spi_board_info neocore926_spi_devices[] = {
|
|||||||
.max_speed_hz = 125000 * 16,
|
.max_speed_hz = 125000 * 16,
|
||||||
.bus_num = 0,
|
.bus_num = 0,
|
||||||
.platform_data = &ads_info,
|
.platform_data = &ads_info,
|
||||||
.irq = AT91SAM9263_ID_IRQ1,
|
.irq = NR_IRQS_LEGACY + AT91SAM9263_ID_IRQ1,
|
||||||
},
|
},
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
@ -309,7 +309,7 @@ static struct spi_board_info ek_spi_devices[] = {
|
|||||||
.max_speed_hz = 125000 * 26, /* (max sample rate @ 3V) * (cmd + data + overhead) */
|
.max_speed_hz = 125000 * 26, /* (max sample rate @ 3V) * (cmd + data + overhead) */
|
||||||
.bus_num = 0,
|
.bus_num = 0,
|
||||||
.platform_data = &ads_info,
|
.platform_data = &ads_info,
|
||||||
.irq = AT91SAM9261_ID_IRQ0,
|
.irq = NR_IRQS_LEGACY + AT91SAM9261_ID_IRQ0,
|
||||||
.controller_data = (void *) AT91_PIN_PA28, /* CS pin */
|
.controller_data = (void *) AT91_PIN_PA28, /* CS pin */
|
||||||
},
|
},
|
||||||
#endif
|
#endif
|
||||||
|
@ -132,7 +132,7 @@ static struct spi_board_info ek_spi_devices[] = {
|
|||||||
.max_speed_hz = 125000 * 26, /* (max sample rate @ 3V) * (cmd + data + overhead) */
|
.max_speed_hz = 125000 * 26, /* (max sample rate @ 3V) * (cmd + data + overhead) */
|
||||||
.bus_num = 0,
|
.bus_num = 0,
|
||||||
.platform_data = &ads_info,
|
.platform_data = &ads_info,
|
||||||
.irq = AT91SAM9263_ID_IRQ1,
|
.irq = NR_IRQS_LEGACY + AT91SAM9263_ID_IRQ1,
|
||||||
},
|
},
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
@ -26,7 +26,8 @@ extern void __init at91_dt_initialize(void);
|
|||||||
extern void __init at91_init_irq_default(void);
|
extern void __init at91_init_irq_default(void);
|
||||||
extern void __init at91_init_interrupts(unsigned int priority[]);
|
extern void __init at91_init_interrupts(unsigned int priority[]);
|
||||||
extern void __init at91x40_init_interrupts(unsigned int priority[]);
|
extern void __init at91x40_init_interrupts(unsigned int priority[]);
|
||||||
extern void __init at91_aic_init(unsigned int priority[]);
|
extern void __init at91_aic_init(unsigned int priority[],
|
||||||
|
unsigned int ext_irq_mask);
|
||||||
extern int __init at91_aic_of_init(struct device_node *node,
|
extern int __init at91_aic_of_init(struct device_node *node,
|
||||||
struct device_node *parent);
|
struct device_node *parent);
|
||||||
extern int __init at91_aic5_of_init(struct device_node *node,
|
extern int __init at91_aic5_of_init(struct device_node *node,
|
||||||
|
@ -502,14 +502,19 @@ int __init at91_aic5_of_init(struct device_node *node,
|
|||||||
/*
|
/*
|
||||||
* Initialize the AIC interrupt controller.
|
* Initialize the AIC interrupt controller.
|
||||||
*/
|
*/
|
||||||
void __init at91_aic_init(unsigned int *priority)
|
void __init at91_aic_init(unsigned int *priority, unsigned int ext_irq_mask)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
int irq_base;
|
int irq_base;
|
||||||
|
|
||||||
if (at91_aic_pm_init())
|
at91_extern_irq = kzalloc(BITS_TO_LONGS(n_irqs)
|
||||||
|
* sizeof(*at91_extern_irq), GFP_KERNEL);
|
||||||
|
|
||||||
|
if (at91_aic_pm_init() || at91_extern_irq == NULL)
|
||||||
panic("Unable to allocate bit maps\n");
|
panic("Unable to allocate bit maps\n");
|
||||||
|
|
||||||
|
*at91_extern_irq = ext_irq_mask;
|
||||||
|
|
||||||
at91_aic_base = ioremap(AT91_AIC, 512);
|
at91_aic_base = ioremap(AT91_AIC, 512);
|
||||||
if (!at91_aic_base)
|
if (!at91_aic_base)
|
||||||
panic("Unable to ioremap AIC registers\n");
|
panic("Unable to ioremap AIC registers\n");
|
||||||
|
@ -47,7 +47,7 @@ void __init at91_init_irq_default(void)
|
|||||||
void __init at91_init_interrupts(unsigned int *priority)
|
void __init at91_init_interrupts(unsigned int *priority)
|
||||||
{
|
{
|
||||||
/* Initialize the AIC interrupt controller */
|
/* Initialize the AIC interrupt controller */
|
||||||
at91_aic_init(priority);
|
at91_aic_init(priority, at91_extern_irq);
|
||||||
|
|
||||||
/* Enable GPIO interrupts */
|
/* Enable GPIO interrupts */
|
||||||
at91_gpio_irq_setup();
|
at91_gpio_irq_setup();
|
||||||
@ -151,7 +151,7 @@ static void __init soc_detect(u32 dbgu_base)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* at91sam9g10 */
|
/* at91sam9g10 */
|
||||||
if ((cidr & ~AT91_CIDR_EXT) == ARCH_ID_AT91SAM9G10) {
|
if ((socid & ~AT91_CIDR_EXT) == ARCH_ID_AT91SAM9G10) {
|
||||||
at91_soc_initdata.type = AT91_SOC_SAM9G10;
|
at91_soc_initdata.type = AT91_SOC_SAM9G10;
|
||||||
at91_boot_soc = at91sam9261_soc;
|
at91_boot_soc = at91sam9261_soc;
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,7 @@
|
|||||||
#include <plat/fimc-core.h>
|
#include <plat/fimc-core.h>
|
||||||
#include <plat/iic-core.h>
|
#include <plat/iic-core.h>
|
||||||
#include <plat/tv-core.h>
|
#include <plat/tv-core.h>
|
||||||
|
#include <plat/spi-core.h>
|
||||||
#include <plat/regs-serial.h>
|
#include <plat/regs-serial.h>
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
@ -346,6 +347,8 @@ static void __init exynos4_map_io(void)
|
|||||||
|
|
||||||
s5p_fb_setname(0, "exynos4-fb");
|
s5p_fb_setname(0, "exynos4-fb");
|
||||||
s5p_hdmi_setname("exynos4-hdmi");
|
s5p_hdmi_setname("exynos4-hdmi");
|
||||||
|
|
||||||
|
s3c64xx_spi_setname("exynos4210-spi");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init exynos5_map_io(void)
|
static void __init exynos5_map_io(void)
|
||||||
@ -366,6 +369,8 @@ static void __init exynos5_map_io(void)
|
|||||||
s3c_i2c0_setname("s3c2440-i2c");
|
s3c_i2c0_setname("s3c2440-i2c");
|
||||||
s3c_i2c1_setname("s3c2440-i2c");
|
s3c_i2c1_setname("s3c2440-i2c");
|
||||||
s3c_i2c2_setname("s3c2440-i2c");
|
s3c_i2c2_setname("s3c2440-i2c");
|
||||||
|
|
||||||
|
s3c64xx_spi_setname("exynos4210-spi");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init exynos4_init_clocks(int xtal)
|
static void __init exynos4_init_clocks(int xtal)
|
||||||
|
@ -99,6 +99,7 @@ static char const *exynos4_dt_compat[] __initdata = {
|
|||||||
|
|
||||||
DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)")
|
DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)")
|
||||||
/* Maintainer: Thomas Abraham <thomas.abraham@linaro.org> */
|
/* Maintainer: Thomas Abraham <thomas.abraham@linaro.org> */
|
||||||
|
.smp = smp_ops(exynos_smp_ops),
|
||||||
.init_irq = exynos4_init_irq,
|
.init_irq = exynos4_init_irq,
|
||||||
.map_io = exynos4_dt_map_io,
|
.map_io = exynos4_dt_map_io,
|
||||||
.handle_irq = gic_handle_irq,
|
.handle_irq = gic_handle_irq,
|
||||||
|
@ -108,7 +108,7 @@ struct clk *imx_clk_busy_divider(const char *name, const char *parent_name,
|
|||||||
busy->div.hw.init = &init;
|
busy->div.hw.init = &init;
|
||||||
|
|
||||||
clk = clk_register(NULL, &busy->div.hw);
|
clk = clk_register(NULL, &busy->div.hw);
|
||||||
if (!clk)
|
if (IS_ERR(clk))
|
||||||
kfree(busy);
|
kfree(busy);
|
||||||
|
|
||||||
return clk;
|
return clk;
|
||||||
|
@ -127,8 +127,8 @@ int __init mx25_clocks_init(void)
|
|||||||
clk[esdhc2_ipg_per] = imx_clk_gate("esdhc2_ipg_per", "per4", ccm(CCM_CGCR0), 4);
|
clk[esdhc2_ipg_per] = imx_clk_gate("esdhc2_ipg_per", "per4", ccm(CCM_CGCR0), 4);
|
||||||
clk[gpt_ipg_per] = imx_clk_gate("gpt_ipg_per", "per5", ccm(CCM_CGCR0), 5);
|
clk[gpt_ipg_per] = imx_clk_gate("gpt_ipg_per", "per5", ccm(CCM_CGCR0), 5);
|
||||||
clk[i2c_ipg_per] = imx_clk_gate("i2c_ipg_per", "per6", ccm(CCM_CGCR0), 6);
|
clk[i2c_ipg_per] = imx_clk_gate("i2c_ipg_per", "per6", ccm(CCM_CGCR0), 6);
|
||||||
clk[lcdc_ipg_per] = imx_clk_gate("lcdc_ipg_per", "per8", ccm(CCM_CGCR0), 7);
|
clk[lcdc_ipg_per] = imx_clk_gate("lcdc_ipg_per", "per7", ccm(CCM_CGCR0), 7);
|
||||||
clk[nfc_ipg_per] = imx_clk_gate("nfc_ipg_per", "ipg_per", ccm(CCM_CGCR0), 8);
|
clk[nfc_ipg_per] = imx_clk_gate("nfc_ipg_per", "per8", ccm(CCM_CGCR0), 8);
|
||||||
clk[ssi1_ipg_per] = imx_clk_gate("ssi1_ipg_per", "per13", ccm(CCM_CGCR0), 13);
|
clk[ssi1_ipg_per] = imx_clk_gate("ssi1_ipg_per", "per13", ccm(CCM_CGCR0), 13);
|
||||||
clk[ssi2_ipg_per] = imx_clk_gate("ssi2_ipg_per", "per14", ccm(CCM_CGCR0), 14);
|
clk[ssi2_ipg_per] = imx_clk_gate("ssi2_ipg_per", "per14", ccm(CCM_CGCR0), 14);
|
||||||
clk[uart_ipg_per] = imx_clk_gate("uart_ipg_per", "per15", ccm(CCM_CGCR0), 15);
|
clk[uart_ipg_per] = imx_clk_gate("uart_ipg_per", "per15", ccm(CCM_CGCR0), 15);
|
||||||
|
@ -109,7 +109,7 @@ int __init mx27_clocks_init(unsigned long fref)
|
|||||||
clk[per3_div] = imx_clk_divider("per3_div", "mpll_main2", CCM_PCDR1, 16, 6);
|
clk[per3_div] = imx_clk_divider("per3_div", "mpll_main2", CCM_PCDR1, 16, 6);
|
||||||
clk[per4_div] = imx_clk_divider("per4_div", "mpll_main2", CCM_PCDR1, 24, 6);
|
clk[per4_div] = imx_clk_divider("per4_div", "mpll_main2", CCM_PCDR1, 24, 6);
|
||||||
clk[vpu_sel] = imx_clk_mux("vpu_sel", CCM_CSCR, 21, 1, vpu_sel_clks, ARRAY_SIZE(vpu_sel_clks));
|
clk[vpu_sel] = imx_clk_mux("vpu_sel", CCM_CSCR, 21, 1, vpu_sel_clks, ARRAY_SIZE(vpu_sel_clks));
|
||||||
clk[vpu_div] = imx_clk_divider("vpu_div", "vpu_sel", CCM_PCDR0, 10, 3);
|
clk[vpu_div] = imx_clk_divider("vpu_div", "vpu_sel", CCM_PCDR0, 10, 6);
|
||||||
clk[usb_div] = imx_clk_divider("usb_div", "spll", CCM_CSCR, 28, 3);
|
clk[usb_div] = imx_clk_divider("usb_div", "spll", CCM_CSCR, 28, 3);
|
||||||
clk[cpu_sel] = imx_clk_mux("cpu_sel", CCM_CSCR, 15, 1, cpu_sel_clks, ARRAY_SIZE(cpu_sel_clks));
|
clk[cpu_sel] = imx_clk_mux("cpu_sel", CCM_CSCR, 15, 1, cpu_sel_clks, ARRAY_SIZE(cpu_sel_clks));
|
||||||
clk[clko_sel] = imx_clk_mux("clko_sel", CCM_CCSR, 0, 5, clko_sel_clks, ARRAY_SIZE(clko_sel_clks));
|
clk[clko_sel] = imx_clk_mux("clko_sel", CCM_CCSR, 0, 5, clko_sel_clks, ARRAY_SIZE(clko_sel_clks));
|
||||||
@ -121,7 +121,7 @@ int __init mx27_clocks_init(unsigned long fref)
|
|||||||
clk[ssi1_sel] = imx_clk_mux("ssi1_sel", CCM_CSCR, 22, 1, ssi_sel_clks, ARRAY_SIZE(ssi_sel_clks));
|
clk[ssi1_sel] = imx_clk_mux("ssi1_sel", CCM_CSCR, 22, 1, ssi_sel_clks, ARRAY_SIZE(ssi_sel_clks));
|
||||||
clk[ssi2_sel] = imx_clk_mux("ssi2_sel", CCM_CSCR, 23, 1, ssi_sel_clks, ARRAY_SIZE(ssi_sel_clks));
|
clk[ssi2_sel] = imx_clk_mux("ssi2_sel", CCM_CSCR, 23, 1, ssi_sel_clks, ARRAY_SIZE(ssi_sel_clks));
|
||||||
clk[ssi1_div] = imx_clk_divider("ssi1_div", "ssi1_sel", CCM_PCDR0, 16, 6);
|
clk[ssi1_div] = imx_clk_divider("ssi1_div", "ssi1_sel", CCM_PCDR0, 16, 6);
|
||||||
clk[ssi2_div] = imx_clk_divider("ssi2_div", "ssi2_sel", CCM_PCDR0, 26, 3);
|
clk[ssi2_div] = imx_clk_divider("ssi2_div", "ssi2_sel", CCM_PCDR0, 26, 6);
|
||||||
clk[clko_en] = imx_clk_gate("clko_en", "clko_div", CCM_PCCR0, 0);
|
clk[clko_en] = imx_clk_gate("clko_en", "clko_div", CCM_PCCR0, 0);
|
||||||
clk[ssi2_ipg_gate] = imx_clk_gate("ssi2_ipg_gate", "ipg", CCM_PCCR0, 0);
|
clk[ssi2_ipg_gate] = imx_clk_gate("ssi2_ipg_gate", "ipg", CCM_PCCR0, 0);
|
||||||
clk[ssi1_ipg_gate] = imx_clk_gate("ssi1_ipg_gate", "ipg", CCM_PCCR0, 1);
|
clk[ssi1_ipg_gate] = imx_clk_gate("ssi1_ipg_gate", "ipg", CCM_PCCR0, 1);
|
||||||
|
@ -108,9 +108,8 @@ void __init imx3_init_l2x0(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
l2x0_base = ioremap(MX3x_L2CC_BASE_ADDR, 4096);
|
l2x0_base = ioremap(MX3x_L2CC_BASE_ADDR, 4096);
|
||||||
if (IS_ERR(l2x0_base)) {
|
if (!l2x0_base) {
|
||||||
printk(KERN_ERR "remapping L2 cache area failed with %ld\n",
|
printk(KERN_ERR "remapping L2 cache area failed\n");
|
||||||
PTR_ERR(l2x0_base));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,7 +11,6 @@ config ARCH_OMAP2PLUS_TYPICAL
|
|||||||
select I2C_OMAP
|
select I2C_OMAP
|
||||||
select MENELAUS if ARCH_OMAP2
|
select MENELAUS if ARCH_OMAP2
|
||||||
select NEON if ARCH_OMAP3 || ARCH_OMAP4 || SOC_OMAP5
|
select NEON if ARCH_OMAP3 || ARCH_OMAP4 || SOC_OMAP5
|
||||||
select PINCTRL
|
|
||||||
select PM_RUNTIME
|
select PM_RUNTIME
|
||||||
select REGULATOR
|
select REGULATOR
|
||||||
select SERIAL_OMAP
|
select SERIAL_OMAP
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/gpio_keys.h>
|
#include <linux/gpio_keys.h>
|
||||||
#include <linux/opp.h>
|
#include <linux/opp.h>
|
||||||
|
#include <linux/cpu.h>
|
||||||
|
|
||||||
#include <linux/mtd/mtd.h>
|
#include <linux/mtd/mtd.h>
|
||||||
#include <linux/mtd/partitions.h>
|
#include <linux/mtd/partitions.h>
|
||||||
@ -444,27 +445,31 @@ static struct omap_board_mux board_mux[] __initdata = {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void __init beagle_opp_init(void)
|
static int __init beagle_opp_init(void)
|
||||||
{
|
{
|
||||||
int r = 0;
|
int r = 0;
|
||||||
|
|
||||||
/* Initialize the omap3 opp table */
|
if (!machine_is_omap3_beagle())
|
||||||
if (omap3_opp_init()) {
|
return 0;
|
||||||
|
|
||||||
|
/* Initialize the omap3 opp table if not already created. */
|
||||||
|
r = omap3_opp_init();
|
||||||
|
if (IS_ERR_VALUE(r) && (r != -EEXIST)) {
|
||||||
pr_err("%s: opp default init failed\n", __func__);
|
pr_err("%s: opp default init failed\n", __func__);
|
||||||
return;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Custom OPP enabled for all xM versions */
|
/* Custom OPP enabled for all xM versions */
|
||||||
if (cpu_is_omap3630()) {
|
if (cpu_is_omap3630()) {
|
||||||
struct device *mpu_dev, *iva_dev;
|
struct device *mpu_dev, *iva_dev;
|
||||||
|
|
||||||
mpu_dev = omap_device_get_by_hwmod_name("mpu");
|
mpu_dev = get_cpu_device(0);
|
||||||
iva_dev = omap_device_get_by_hwmod_name("iva");
|
iva_dev = omap_device_get_by_hwmod_name("iva");
|
||||||
|
|
||||||
if (IS_ERR(mpu_dev) || IS_ERR(iva_dev)) {
|
if (IS_ERR(mpu_dev) || IS_ERR(iva_dev)) {
|
||||||
pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n",
|
pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n",
|
||||||
__func__, mpu_dev, iva_dev);
|
__func__, mpu_dev, iva_dev);
|
||||||
return;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
/* Enable MPU 1GHz and lower opps */
|
/* Enable MPU 1GHz and lower opps */
|
||||||
r = opp_enable(mpu_dev, 800000000);
|
r = opp_enable(mpu_dev, 800000000);
|
||||||
@ -484,8 +489,9 @@ static void __init beagle_opp_init(void)
|
|||||||
opp_disable(iva_dev, 660000000);
|
opp_disable(iva_dev, 660000000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return 0;
|
||||||
}
|
}
|
||||||
|
device_initcall(beagle_opp_init);
|
||||||
|
|
||||||
static void __init omap3_beagle_init(void)
|
static void __init omap3_beagle_init(void)
|
||||||
{
|
{
|
||||||
@ -522,8 +528,6 @@ static void __init omap3_beagle_init(void)
|
|||||||
/* Ensure SDRC pins are mux'd for self-refresh */
|
/* Ensure SDRC pins are mux'd for self-refresh */
|
||||||
omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
|
omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
|
||||||
omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
|
omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
|
||||||
|
|
||||||
beagle_opp_init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
|
MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
|
||||||
|
@ -1073,6 +1073,8 @@ static struct omap_clk am33xx_clks[] = {
|
|||||||
CLK(NULL, "gfx_fck_div_ck", &gfx_fck_div_ck, CK_AM33XX),
|
CLK(NULL, "gfx_fck_div_ck", &gfx_fck_div_ck, CK_AM33XX),
|
||||||
CLK(NULL, "sysclkout_pre_ck", &sysclkout_pre_ck, CK_AM33XX),
|
CLK(NULL, "sysclkout_pre_ck", &sysclkout_pre_ck, CK_AM33XX),
|
||||||
CLK(NULL, "clkout2_ck", &clkout2_ck, CK_AM33XX),
|
CLK(NULL, "clkout2_ck", &clkout2_ck, CK_AM33XX),
|
||||||
|
CLK(NULL, "timer_32k_ck", &clkdiv32k_ick, CK_AM33XX),
|
||||||
|
CLK(NULL, "timer_sys_ck", &sys_clkin_ck, CK_AM33XX),
|
||||||
};
|
};
|
||||||
|
|
||||||
int __init am33xx_clk_init(void)
|
int __init am33xx_clk_init(void)
|
||||||
|
@ -614,16 +614,16 @@ static struct omap_mux __initdata omap3_muxmodes[] = {
|
|||||||
"sys_off_mode", NULL, NULL, NULL,
|
"sys_off_mode", NULL, NULL, NULL,
|
||||||
"gpio_9", NULL, NULL, "safe_mode"),
|
"gpio_9", NULL, NULL, "safe_mode"),
|
||||||
_OMAP3_MUXENTRY(UART1_CTS, 150,
|
_OMAP3_MUXENTRY(UART1_CTS, 150,
|
||||||
"uart1_cts", NULL, NULL, NULL,
|
"uart1_cts", "ssi1_rdy_tx", NULL, NULL,
|
||||||
"gpio_150", "hsusb3_tll_clk", NULL, "safe_mode"),
|
"gpio_150", "hsusb3_tll_clk", NULL, "safe_mode"),
|
||||||
_OMAP3_MUXENTRY(UART1_RTS, 149,
|
_OMAP3_MUXENTRY(UART1_RTS, 149,
|
||||||
"uart1_rts", NULL, NULL, NULL,
|
"uart1_rts", "ssi1_flag_tx", NULL, NULL,
|
||||||
"gpio_149", NULL, NULL, "safe_mode"),
|
"gpio_149", NULL, NULL, "safe_mode"),
|
||||||
_OMAP3_MUXENTRY(UART1_RX, 151,
|
_OMAP3_MUXENTRY(UART1_RX, 151,
|
||||||
"uart1_rx", NULL, "mcbsp1_clkr", "mcspi4_clk",
|
"uart1_rx", "ss1_wake_tx", "mcbsp1_clkr", "mcspi4_clk",
|
||||||
"gpio_151", NULL, NULL, "safe_mode"),
|
"gpio_151", NULL, NULL, "safe_mode"),
|
||||||
_OMAP3_MUXENTRY(UART1_TX, 148,
|
_OMAP3_MUXENTRY(UART1_TX, 148,
|
||||||
"uart1_tx", NULL, NULL, NULL,
|
"uart1_tx", "ssi1_dat_tx", NULL, NULL,
|
||||||
"gpio_148", NULL, NULL, "safe_mode"),
|
"gpio_148", NULL, NULL, "safe_mode"),
|
||||||
_OMAP3_MUXENTRY(UART2_CTS, 144,
|
_OMAP3_MUXENTRY(UART2_CTS, 144,
|
||||||
"uart2_cts", "mcbsp3_dx", "gpt9_pwm_evt", NULL,
|
"uart2_cts", "mcbsp3_dx", "gpt9_pwm_evt", NULL,
|
||||||
|
@ -91,6 +91,7 @@ extern void omap3_save_scratchpad_contents(void);
|
|||||||
|
|
||||||
#define PM_RTA_ERRATUM_i608 (1 << 0)
|
#define PM_RTA_ERRATUM_i608 (1 << 0)
|
||||||
#define PM_SDRC_WAKEUP_ERRATUM_i583 (1 << 1)
|
#define PM_SDRC_WAKEUP_ERRATUM_i583 (1 << 1)
|
||||||
|
#define PM_PER_MEMORIES_ERRATUM_i582 (1 << 2)
|
||||||
|
|
||||||
#if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP3)
|
#if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP3)
|
||||||
extern u16 pm34xx_errata;
|
extern u16 pm34xx_errata;
|
||||||
|
@ -652,14 +652,17 @@ static void __init pm_errata_configure(void)
|
|||||||
/* Enable the l2 cache toggling in sleep logic */
|
/* Enable the l2 cache toggling in sleep logic */
|
||||||
enable_omap3630_toggle_l2_on_restore();
|
enable_omap3630_toggle_l2_on_restore();
|
||||||
if (omap_rev() < OMAP3630_REV_ES1_2)
|
if (omap_rev() < OMAP3630_REV_ES1_2)
|
||||||
pm34xx_errata |= PM_SDRC_WAKEUP_ERRATUM_i583;
|
pm34xx_errata |= (PM_SDRC_WAKEUP_ERRATUM_i583 |
|
||||||
|
PM_PER_MEMORIES_ERRATUM_i582);
|
||||||
|
} else if (cpu_is_omap34xx()) {
|
||||||
|
pm34xx_errata |= PM_PER_MEMORIES_ERRATUM_i582;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init omap3_pm_init(void)
|
int __init omap3_pm_init(void)
|
||||||
{
|
{
|
||||||
struct power_state *pwrst, *tmp;
|
struct power_state *pwrst, *tmp;
|
||||||
struct clockdomain *neon_clkdm, *mpu_clkdm;
|
struct clockdomain *neon_clkdm, *mpu_clkdm, *per_clkdm, *wkup_clkdm;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!omap3_has_io_chain_ctrl())
|
if (!omap3_has_io_chain_ctrl())
|
||||||
@ -711,6 +714,8 @@ int __init omap3_pm_init(void)
|
|||||||
|
|
||||||
neon_clkdm = clkdm_lookup("neon_clkdm");
|
neon_clkdm = clkdm_lookup("neon_clkdm");
|
||||||
mpu_clkdm = clkdm_lookup("mpu_clkdm");
|
mpu_clkdm = clkdm_lookup("mpu_clkdm");
|
||||||
|
per_clkdm = clkdm_lookup("per_clkdm");
|
||||||
|
wkup_clkdm = clkdm_lookup("wkup_clkdm");
|
||||||
|
|
||||||
#ifdef CONFIG_SUSPEND
|
#ifdef CONFIG_SUSPEND
|
||||||
omap_pm_suspend = omap3_pm_suspend;
|
omap_pm_suspend = omap3_pm_suspend;
|
||||||
@ -727,6 +732,27 @@ int __init omap3_pm_init(void)
|
|||||||
if (IS_PM34XX_ERRATUM(PM_RTA_ERRATUM_i608))
|
if (IS_PM34XX_ERRATUM(PM_RTA_ERRATUM_i608))
|
||||||
omap3630_ctrl_disable_rta();
|
omap3630_ctrl_disable_rta();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The UART3/4 FIFO and the sidetone memory in McBSP2/3 are
|
||||||
|
* not correctly reset when the PER powerdomain comes back
|
||||||
|
* from OFF or OSWR when the CORE powerdomain is kept active.
|
||||||
|
* See OMAP36xx Erratum i582 "PER Domain reset issue after
|
||||||
|
* Domain-OFF/OSWR Wakeup". This wakeup dependency is not a
|
||||||
|
* complete workaround. The kernel must also prevent the PER
|
||||||
|
* powerdomain from going to OSWR/OFF while the CORE
|
||||||
|
* powerdomain is not going to OSWR/OFF. And if PER last
|
||||||
|
* power state was off while CORE last power state was ON, the
|
||||||
|
* UART3/4 and McBSP2/3 SIDETONE devices need to run a
|
||||||
|
* self-test using their loopback tests; if that fails, those
|
||||||
|
* devices are unusable until the PER/CORE can complete a transition
|
||||||
|
* from ON to OSWR/OFF and then back to ON.
|
||||||
|
*
|
||||||
|
* XXX Technically this workaround is only needed if off-mode
|
||||||
|
* or OSWR is enabled.
|
||||||
|
*/
|
||||||
|
if (IS_PM34XX_ERRATUM(PM_PER_MEMORIES_ERRATUM_i582))
|
||||||
|
clkdm_add_wkdep(per_clkdm, wkup_clkdm);
|
||||||
|
|
||||||
clkdm_add_wkdep(neon_clkdm, mpu_clkdm);
|
clkdm_add_wkdep(neon_clkdm, mpu_clkdm);
|
||||||
if (omap_type() != OMAP2_DEVICE_TYPE_GP) {
|
if (omap_type() != OMAP2_DEVICE_TYPE_GP) {
|
||||||
omap3_secure_ram_storage =
|
omap3_secure_ram_storage =
|
||||||
|
@ -329,6 +329,11 @@ void __init omap_serial_init_port(struct omap_board_data *bdata,
|
|||||||
|
|
||||||
oh->mux = omap_hwmod_mux_init(bdata->pads, bdata->pads_cnt);
|
oh->mux = omap_hwmod_mux_init(bdata->pads, bdata->pads_cnt);
|
||||||
|
|
||||||
|
if (console_uart_id == bdata->id) {
|
||||||
|
omap_device_enable(pdev);
|
||||||
|
pm_runtime_set_active(&pdev->dev);
|
||||||
|
}
|
||||||
|
|
||||||
oh->dev_attr = uart;
|
oh->dev_attr = uart;
|
||||||
|
|
||||||
if (((cpu_is_omap34xx() || cpu_is_omap44xx()) && bdata->pads)
|
if (((cpu_is_omap34xx() || cpu_is_omap44xx()) && bdata->pads)
|
||||||
|
@ -61,6 +61,7 @@
|
|||||||
#include <plat/nand-core.h>
|
#include <plat/nand-core.h>
|
||||||
#include <plat/adc-core.h>
|
#include <plat/adc-core.h>
|
||||||
#include <plat/rtc-core.h>
|
#include <plat/rtc-core.h>
|
||||||
|
#include <plat/spi-core.h>
|
||||||
|
|
||||||
static struct map_desc s3c2416_iodesc[] __initdata = {
|
static struct map_desc s3c2416_iodesc[] __initdata = {
|
||||||
IODESC_ENT(WATCHDOG),
|
IODESC_ENT(WATCHDOG),
|
||||||
@ -132,6 +133,7 @@ void __init s3c2416_map_io(void)
|
|||||||
/* initialize device information early */
|
/* initialize device information early */
|
||||||
s3c2416_default_sdhci0();
|
s3c2416_default_sdhci0();
|
||||||
s3c2416_default_sdhci1();
|
s3c2416_default_sdhci1();
|
||||||
|
s3c64xx_spi_setname("s3c2443-spi");
|
||||||
|
|
||||||
iotable_init(s3c2416_iodesc, ARRAY_SIZE(s3c2416_iodesc));
|
iotable_init(s3c2416_iodesc, ARRAY_SIZE(s3c2416_iodesc));
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,7 @@
|
|||||||
#include <plat/nand-core.h>
|
#include <plat/nand-core.h>
|
||||||
#include <plat/adc-core.h>
|
#include <plat/adc-core.h>
|
||||||
#include <plat/rtc-core.h>
|
#include <plat/rtc-core.h>
|
||||||
|
#include <plat/spi-core.h>
|
||||||
|
|
||||||
static struct map_desc s3c2443_iodesc[] __initdata = {
|
static struct map_desc s3c2443_iodesc[] __initdata = {
|
||||||
IODESC_ENT(WATCHDOG),
|
IODESC_ENT(WATCHDOG),
|
||||||
@ -100,6 +101,9 @@ void __init s3c2443_map_io(void)
|
|||||||
s3c24xx_gpiocfg_default.set_pull = s3c2443_gpio_setpull;
|
s3c24xx_gpiocfg_default.set_pull = s3c2443_gpio_setpull;
|
||||||
s3c24xx_gpiocfg_default.get_pull = s3c2443_gpio_getpull;
|
s3c24xx_gpiocfg_default.get_pull = s3c2443_gpio_getpull;
|
||||||
|
|
||||||
|
/* initialize device information early */
|
||||||
|
s3c64xx_spi_setname("s3c2443-spi");
|
||||||
|
|
||||||
iotable_init(s3c2443_iodesc, ARRAY_SIZE(s3c2443_iodesc));
|
iotable_init(s3c2443_iodesc, ARRAY_SIZE(s3c2443_iodesc));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@
|
|||||||
#include <plat/sdhci.h>
|
#include <plat/sdhci.h>
|
||||||
#include <plat/adc-core.h>
|
#include <plat/adc-core.h>
|
||||||
#include <plat/fb-core.h>
|
#include <plat/fb-core.h>
|
||||||
|
#include <plat/spi-core.h>
|
||||||
#include <plat/gpio-cfg.h>
|
#include <plat/gpio-cfg.h>
|
||||||
#include <plat/regs-irqtype.h>
|
#include <plat/regs-irqtype.h>
|
||||||
#include <plat/regs-serial.h>
|
#include <plat/regs-serial.h>
|
||||||
@ -179,6 +180,7 @@ void __init s5p6440_map_io(void)
|
|||||||
/* initialize any device information early */
|
/* initialize any device information early */
|
||||||
s3c_adc_setname("s3c64xx-adc");
|
s3c_adc_setname("s3c64xx-adc");
|
||||||
s3c_fb_setname("s5p64x0-fb");
|
s3c_fb_setname("s5p64x0-fb");
|
||||||
|
s3c64xx_spi_setname("s5p64x0-spi");
|
||||||
|
|
||||||
s5p64x0_default_sdhci0();
|
s5p64x0_default_sdhci0();
|
||||||
s5p64x0_default_sdhci1();
|
s5p64x0_default_sdhci1();
|
||||||
@ -193,6 +195,7 @@ void __init s5p6450_map_io(void)
|
|||||||
/* initialize any device information early */
|
/* initialize any device information early */
|
||||||
s3c_adc_setname("s3c64xx-adc");
|
s3c_adc_setname("s3c64xx-adc");
|
||||||
s3c_fb_setname("s5p64x0-fb");
|
s3c_fb_setname("s5p64x0-fb");
|
||||||
|
s3c64xx_spi_setname("s5p64x0-spi");
|
||||||
|
|
||||||
s5p64x0_default_sdhci0();
|
s5p64x0_default_sdhci0();
|
||||||
s5p64x0_default_sdhci1();
|
s5p64x0_default_sdhci1();
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
#include <plat/fb-core.h>
|
#include <plat/fb-core.h>
|
||||||
#include <plat/iic-core.h>
|
#include <plat/iic-core.h>
|
||||||
#include <plat/onenand-core.h>
|
#include <plat/onenand-core.h>
|
||||||
|
#include <plat/spi-core.h>
|
||||||
#include <plat/regs-serial.h>
|
#include <plat/regs-serial.h>
|
||||||
#include <plat/watchdog-reset.h>
|
#include <plat/watchdog-reset.h>
|
||||||
|
|
||||||
@ -165,6 +166,8 @@ void __init s5pc100_map_io(void)
|
|||||||
s3c_onenand_setname("s5pc100-onenand");
|
s3c_onenand_setname("s5pc100-onenand");
|
||||||
s3c_fb_setname("s5pc100-fb");
|
s3c_fb_setname("s5pc100-fb");
|
||||||
s3c_cfcon_setname("s5pc100-pata");
|
s3c_cfcon_setname("s5pc100-pata");
|
||||||
|
|
||||||
|
s3c64xx_spi_setname("s5pc100-spi");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init s5pc100_init_clocks(int xtal)
|
void __init s5pc100_init_clocks(int xtal)
|
||||||
|
@ -43,6 +43,7 @@
|
|||||||
#include <plat/iic-core.h>
|
#include <plat/iic-core.h>
|
||||||
#include <plat/keypad-core.h>
|
#include <plat/keypad-core.h>
|
||||||
#include <plat/tv-core.h>
|
#include <plat/tv-core.h>
|
||||||
|
#include <plat/spi-core.h>
|
||||||
#include <plat/regs-serial.h>
|
#include <plat/regs-serial.h>
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
@ -196,6 +197,8 @@ void __init s5pv210_map_io(void)
|
|||||||
|
|
||||||
/* setup TV devices */
|
/* setup TV devices */
|
||||||
s5p_hdmi_setname("s5pv210-hdmi");
|
s5p_hdmi_setname("s5pv210-hdmi");
|
||||||
|
|
||||||
|
s3c64xx_spi_setname("s5pv210-spi");
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init s5pv210_init_clocks(int xtal)
|
void __init s5pv210_init_clocks(int xtal)
|
||||||
|
@ -247,7 +247,7 @@ void __init r8a7779_add_standard_devices(void)
|
|||||||
{
|
{
|
||||||
#ifdef CONFIG_CACHE_L2X0
|
#ifdef CONFIG_CACHE_L2X0
|
||||||
/* Early BRESP enable, Shared attribute override enable, 64K*16way */
|
/* Early BRESP enable, Shared attribute override enable, 64K*16way */
|
||||||
l2x0_init((void __iomem __force *)(0xf0100000), 0x40470000, 0x82000fff);
|
l2x0_init(IOMEM(0xf0100000), 0x40470000, 0x82000fff);
|
||||||
#endif
|
#endif
|
||||||
r8a7779_pm_init();
|
r8a7779_pm_init();
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include <linux/stat.h>
|
#include <linux/stat.h>
|
||||||
#include <linux/of.h>
|
#include <linux/of.h>
|
||||||
#include <linux/of_irq.h>
|
#include <linux/of_irq.h>
|
||||||
|
#include <linux/irq.h>
|
||||||
#include <linux/platform_data/clk-ux500.h>
|
#include <linux/platform_data/clk-ux500.h>
|
||||||
|
|
||||||
#include <asm/hardware/gic.h>
|
#include <asm/hardware/gic.h>
|
||||||
|
@ -55,7 +55,7 @@ struct platform_device *__init imx_add_mxc_mmc(
|
|||||||
struct resource res[] = {
|
struct resource res[] = {
|
||||||
{
|
{
|
||||||
.start = data->iobase,
|
.start = data->iobase,
|
||||||
.end = data->iobase + SZ_4K - 1,
|
.end = data->iobase + data->iosize - 1,
|
||||||
.flags = IORESOURCE_MEM,
|
.flags = IORESOURCE_MEM,
|
||||||
}, {
|
}, {
|
||||||
.start = data->irq,
|
.start = data->irq,
|
||||||
|
@ -26,6 +26,7 @@ config ARCH_OMAP2PLUS
|
|||||||
select CLKDEV_LOOKUP
|
select CLKDEV_LOOKUP
|
||||||
select GENERIC_IRQ_CHIP
|
select GENERIC_IRQ_CHIP
|
||||||
select OMAP_DM_TIMER
|
select OMAP_DM_TIMER
|
||||||
|
select PINCTRL
|
||||||
select PROC_DEVICETREE if PROC_FS
|
select PROC_DEVICETREE if PROC_FS
|
||||||
select SPARSE_IRQ
|
select SPARSE_IRQ
|
||||||
select USE_OF
|
select USE_OF
|
||||||
|
30
arch/arm/plat-samsung/include/plat/spi-core.h
Normal file
30
arch/arm/plat-samsung/include/plat/spi-core.h
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2012 Heiko Stuebner <heiko@sntech.de>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __PLAT_S3C_SPI_CORE_H
|
||||||
|
#define __PLAT_S3C_SPI_CORE_H
|
||||||
|
|
||||||
|
/* These functions are only for use with the core support code, such as
|
||||||
|
* the cpu specific initialisation code
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* re-define device name depending on support. */
|
||||||
|
static inline void s3c64xx_spi_setname(char *name)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_S3C64XX_DEV_SPI0
|
||||||
|
s3c64xx_device_spi0.name = name;
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_S3C64XX_DEV_SPI1
|
||||||
|
s3c64xx_device_spi1.name = name;
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_S3C64XX_DEV_SPI2
|
||||||
|
s3c64xx_device_spi2.name = name;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* __PLAT_S3C_SPI_CORE_H */
|
Loading…
x
Reference in New Issue
Block a user