forked from Minki/linux
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.
|
||||
|
||||
TC/TCLIB Timer required properties:
|
||||
- compatible: Should be "atmel,<chip>-pit".
|
||||
- compatible: Should be "atmel,<chip>-tcb".
|
||||
<chip> can be "at91rm9200" or "at91sam9x5"
|
||||
- reg: Should contain registers location and length
|
||||
- interrupts: Should contain all interrupts for the TC block
|
||||
|
@ -637,6 +637,13 @@ W: http://www.arm.linux.org.uk/
|
||||
S: Maintained
|
||||
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
|
||||
M: Russell King <linux@arm.linux.org.uk>
|
||||
S: Maintained
|
||||
|
@ -126,14 +126,14 @@
|
||||
#size-cells = <0>;
|
||||
|
||||
btn3 {
|
||||
label = "Buttin 3";
|
||||
label = "Button 3";
|
||||
gpios = <&pioA 30 1>;
|
||||
linux,code = <0x103>;
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
|
||||
btn4 {
|
||||
label = "Buttin 4";
|
||||
label = "Button 4";
|
||||
gpios = <&pioA 31 1>;
|
||||
linux,code = <0x104>;
|
||||
gpio-key,wakeup;
|
||||
|
@ -483,6 +483,8 @@
|
||||
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
||||
reg = <0x80004000 0x1000>;
|
||||
interrupts = <0 21 0x4>;
|
||||
arm,primecell-periphid = <0x180024>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
v-i2c-supply = <&db8500_vape_reg>;
|
||||
@ -494,6 +496,8 @@
|
||||
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
||||
reg = <0x80122000 0x1000>;
|
||||
interrupts = <0 22 0x4>;
|
||||
arm,primecell-periphid = <0x180024>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
v-i2c-supply = <&db8500_vape_reg>;
|
||||
@ -505,6 +509,8 @@
|
||||
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
||||
reg = <0x80128000 0x1000>;
|
||||
interrupts = <0 55 0x4>;
|
||||
arm,primecell-periphid = <0x180024>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
v-i2c-supply = <&db8500_vape_reg>;
|
||||
@ -516,6 +522,8 @@
|
||||
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
||||
reg = <0x80110000 0x1000>;
|
||||
interrupts = <0 12 0x4>;
|
||||
arm,primecell-periphid = <0x180024>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
v-i2c-supply = <&db8500_vape_reg>;
|
||||
@ -527,6 +535,8 @@
|
||||
compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
|
||||
reg = <0x8012a000 0x1000>;
|
||||
interrupts = <0 51 0x4>;
|
||||
arm,primecell-periphid = <0x180024>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
v-i2c-supply = <&db8500_vape_reg>;
|
||||
@ -573,33 +583,38 @@
|
||||
interrupts = <0 60 0x4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdi@80118000 {
|
||||
compatible = "arm,pl18x", "arm,primecell";
|
||||
reg = <0x80118000 0x1000>;
|
||||
interrupts = <0 50 0x4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdi@80005000 {
|
||||
compatible = "arm,pl18x", "arm,primecell";
|
||||
reg = <0x80005000 0x1000>;
|
||||
interrupts = <0 41 0x4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdi@80119000 {
|
||||
compatible = "arm,pl18x", "arm,primecell";
|
||||
reg = <0x80119000 0x1000>;
|
||||
interrupts = <0 59 0x4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdi@80114000 {
|
||||
compatible = "arm,pl18x", "arm,primecell";
|
||||
reg = <0x80114000 0x1000>;
|
||||
interrupts = <0 99 0x4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
sdi@80008000 {
|
||||
compatible = "arm,pl18x", "arm,primecell";
|
||||
reg = <0x80114000 0x1000>;
|
||||
reg = <0x80008000 0x1000>;
|
||||
interrupts = <0 100 0x4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -20,8 +20,10 @@
|
||||
compatible = "samsung,trats", "samsung,exynos4210";
|
||||
|
||||
memory {
|
||||
reg = <0x40000000 0x20000000
|
||||
0x60000000 0x20000000>;
|
||||
reg = <0x40000000 0x10000000
|
||||
0x50000000 0x10000000
|
||||
0x60000000 0x10000000
|
||||
0x70000000 0x10000000>;
|
||||
};
|
||||
|
||||
chosen {
|
||||
|
@ -69,6 +69,7 @@
|
||||
interrupts = <13>, <56>;
|
||||
interrupt-names = "gpmi-dma", "bch";
|
||||
clocks = <&clks 34>;
|
||||
clock-names = "gpmi_io";
|
||||
fsl,gpmi-dma-channel = <4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -85,6 +85,7 @@
|
||||
interrupts = <88>, <41>;
|
||||
interrupt-names = "gpmi-dma", "bch";
|
||||
clocks = <&clks 50>;
|
||||
clock-names = "gpmi_io";
|
||||
fsl,gpmi-dma-channel = <4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
@ -257,7 +257,7 @@
|
||||
interrupt-names = "common", "tx", "rx", "sidetone";
|
||||
interrupt-parent = <&intc>;
|
||||
ti,buffer-size = <1280>;
|
||||
ti,hwmods = "mcbsp2";
|
||||
ti,hwmods = "mcbsp2", "mcbsp2_sidetone";
|
||||
};
|
||||
|
||||
mcbsp3: mcbsp@49024000 {
|
||||
@ -272,7 +272,7 @@
|
||||
interrupt-names = "common", "tx", "rx", "sidetone";
|
||||
interrupt-parent = <&intc>;
|
||||
ti,buffer-size = <128>;
|
||||
ti,hwmods = "mcbsp3";
|
||||
ti,hwmods = "mcbsp3", "mcbsp3_sidetone";
|
||||
};
|
||||
|
||||
mcbsp4: mcbsp@49026000 {
|
||||
|
@ -139,6 +139,7 @@ CONFIG_I2C_IMX=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_IMX=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_GPIO_MC9S08DZ60=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_IMX2_WDT=y
|
||||
@ -155,6 +156,7 @@ CONFIG_SOC_CAMERA=y
|
||||
CONFIG_SOC_CAMERA_OV2640=y
|
||||
CONFIG_VIDEO_MX3=y
|
||||
CONFIG_FB=y
|
||||
CONFIG_LCD_PLATFORM=y
|
||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||
CONFIG_LCD_CLASS_DEVICE=y
|
||||
CONFIG_LCD_L4F00242T03=y
|
||||
|
@ -1,6 +1,6 @@
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_IRQ_DOMAIN_DEBUG=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
@ -9,10 +9,12 @@ CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=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_HIGHMEM=y
|
||||
CONFIG_USE_OF=y
|
||||
# CONFIG_COMPACTION is not set
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
CONFIG_ARM_APPENDED_DTB=y
|
||||
@ -23,6 +25,8 @@ CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT3_FS=y
|
||||
# CONFIG_EXT3_FS_XATTR is not set
|
||||
|
@ -1,3 +1,4 @@
|
||||
CONFIG_ARCH_VERSATILE=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
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
|
||||
* 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 PICOXCELL_UART1_BASE 0x80230000
|
||||
@ -19,17 +16,4 @@
|
||||
ldr \rp, =PICOXCELL_UART1_BASE
|
||||
.endm
|
||||
|
||||
.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
|
||||
#include "8250_32.S"
|
||||
|
@ -7,6 +7,9 @@
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#define UART_SHIFT 2
|
||||
#define DEBUG_LL_UART_OFFSET 0x00002000
|
||||
|
||||
.macro addruart, rp, rv, tmp
|
||||
mov \rp, #DEBUG_LL_UART_OFFSET
|
||||
orr \rp, \rp, #0x00c00000
|
||||
@ -14,3 +17,5 @@
|
||||
orr \rp, \rp, #0xff000000 @ physical base
|
||||
.endm
|
||||
|
||||
#include "8250_32.S"
|
||||
|
||||
|
@ -21,19 +21,13 @@ config SOC_AT91SAM9
|
||||
bool
|
||||
select CPU_ARM926T
|
||||
select GENERIC_CLOCKEVENTS
|
||||
select MULTI_IRQ_HANDLER
|
||||
select SPARSE_IRQ
|
||||
|
||||
menu "Atmel AT91 System-on-Chip"
|
||||
|
||||
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
|
||||
bool "AT91RM9200"
|
||||
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.1", &ssc1_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 */
|
||||
CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_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 = {
|
||||
.name = "i2c-gpio",
|
||||
.id = -1,
|
||||
.id = 0,
|
||||
.dev.platform_data = &pdata,
|
||||
};
|
||||
|
||||
@ -512,7 +512,7 @@ static struct resource twi_resources[] = {
|
||||
|
||||
static struct platform_device at91rm9200_twi_device = {
|
||||
.name = "i2c-at91rm9200",
|
||||
.id = -1,
|
||||
.id = 0,
|
||||
.resource = 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("t2_clk", "atmel_tcb.1", &tc5_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-at91sam9g20", &twi_clk),
|
||||
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9260.0", &twi_clk),
|
||||
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9g20.0", &twi_clk),
|
||||
/* more usart lookup table for DT entries */
|
||||
CLKDEV_CON_DEV_ID("usart", "fffff200.serial", &mck),
|
||||
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 = {
|
||||
.name = "i2c-gpio",
|
||||
.id = -1,
|
||||
.id = 0,
|
||||
.dev.platform_data = &pdata,
|
||||
};
|
||||
|
||||
@ -421,7 +421,7 @@ static struct resource twi_resources[] = {
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9260_twi_device = {
|
||||
.id = -1,
|
||||
.id = 0,
|
||||
.resource = 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.2", &ssc2_clk),
|
||||
CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &hck0),
|
||||
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9261", &twi_clk),
|
||||
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9g10", &twi_clk),
|
||||
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9261.0", &twi_clk),
|
||||
CLKDEV_CON_DEV_ID(NULL, "i2c-at91sam9g10.0", &twi_clk),
|
||||
CLKDEV_CON_ID("pioA", &pioA_clk),
|
||||
CLKDEV_CON_ID("pioB", &pioB_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 = {
|
||||
.name = "i2c-gpio",
|
||||
.id = -1,
|
||||
.id = 0,
|
||||
.dev.platform_data = &pdata,
|
||||
};
|
||||
|
||||
@ -317,7 +317,7 @@ static struct resource twi_resources[] = {
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9261_twi_device = {
|
||||
.id = -1,
|
||||
.id = 0,
|
||||
.resource = 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.1", &spi1_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 */
|
||||
CLKDEV_CON_DEV_ID("hclk", "at91_ohci", &ohci_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 = {
|
||||
.name = "i2c-gpio",
|
||||
.id = -1,
|
||||
.id = 0,
|
||||
.dev.platform_data = &pdata,
|
||||
};
|
||||
|
||||
@ -600,7 +600,7 @@ static struct resource twi_resources[] = {
|
||||
|
||||
static struct platform_device at91sam9263_twi_device = {
|
||||
.name = "i2c-at91sam9260",
|
||||
.id = -1,
|
||||
.id = 0,
|
||||
.resource = 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 = {
|
||||
.name = "i2c-gpio",
|
||||
.id = -1,
|
||||
.id = 0,
|
||||
.dev.platform_data = &pdata,
|
||||
};
|
||||
|
||||
@ -347,7 +347,7 @@ static struct resource twi_resources[] = {
|
||||
|
||||
static struct platform_device at91sam9rl_twi_device = {
|
||||
.name = "i2c-at91sam9g20",
|
||||
.id = -1,
|
||||
.id = 0,
|
||||
.resource = 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)
|
||||
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,
|
||||
.bus_num = 0,
|
||||
.platform_data = &ads_info,
|
||||
.irq = AT91SAM9263_ID_IRQ1,
|
||||
.irq = NR_IRQS_LEGACY + AT91SAM9263_ID_IRQ1,
|
||||
},
|
||||
#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) */
|
||||
.bus_num = 0,
|
||||
.platform_data = &ads_info,
|
||||
.irq = AT91SAM9261_ID_IRQ0,
|
||||
.irq = NR_IRQS_LEGACY + AT91SAM9261_ID_IRQ0,
|
||||
.controller_data = (void *) AT91_PIN_PA28, /* CS pin */
|
||||
},
|
||||
#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) */
|
||||
.bus_num = 0,
|
||||
.platform_data = &ads_info,
|
||||
.irq = AT91SAM9263_ID_IRQ1,
|
||||
.irq = NR_IRQS_LEGACY + AT91SAM9263_ID_IRQ1,
|
||||
},
|
||||
#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_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,
|
||||
struct device_node *parent);
|
||||
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.
|
||||
*/
|
||||
void __init at91_aic_init(unsigned int *priority)
|
||||
void __init at91_aic_init(unsigned int *priority, unsigned int ext_irq_mask)
|
||||
{
|
||||
unsigned int i;
|
||||
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");
|
||||
|
||||
*at91_extern_irq = ext_irq_mask;
|
||||
|
||||
at91_aic_base = ioremap(AT91_AIC, 512);
|
||||
if (!at91_aic_base)
|
||||
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)
|
||||
{
|
||||
/* Initialize the AIC interrupt controller */
|
||||
at91_aic_init(priority);
|
||||
at91_aic_init(priority, at91_extern_irq);
|
||||
|
||||
/* Enable GPIO interrupts */
|
||||
at91_gpio_irq_setup();
|
||||
@ -151,7 +151,7 @@ static void __init soc_detect(u32 dbgu_base)
|
||||
}
|
||||
|
||||
/* 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_boot_soc = at91sam9261_soc;
|
||||
}
|
||||
|
@ -47,6 +47,7 @@
|
||||
#include <plat/fimc-core.h>
|
||||
#include <plat/iic-core.h>
|
||||
#include <plat/tv-core.h>
|
||||
#include <plat/spi-core.h>
|
||||
#include <plat/regs-serial.h>
|
||||
|
||||
#include "common.h"
|
||||
@ -346,6 +347,8 @@ static void __init exynos4_map_io(void)
|
||||
|
||||
s5p_fb_setname(0, "exynos4-fb");
|
||||
s5p_hdmi_setname("exynos4-hdmi");
|
||||
|
||||
s3c64xx_spi_setname("exynos4210-spi");
|
||||
}
|
||||
|
||||
static void __init exynos5_map_io(void)
|
||||
@ -366,6 +369,8 @@ static void __init exynos5_map_io(void)
|
||||
s3c_i2c0_setname("s3c2440-i2c");
|
||||
s3c_i2c1_setname("s3c2440-i2c");
|
||||
s3c_i2c2_setname("s3c2440-i2c");
|
||||
|
||||
s3c64xx_spi_setname("exynos4210-spi");
|
||||
}
|
||||
|
||||
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)")
|
||||
/* Maintainer: Thomas Abraham <thomas.abraham@linaro.org> */
|
||||
.smp = smp_ops(exynos_smp_ops),
|
||||
.init_irq = exynos4_init_irq,
|
||||
.map_io = exynos4_dt_map_io,
|
||||
.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;
|
||||
|
||||
clk = clk_register(NULL, &busy->div.hw);
|
||||
if (!clk)
|
||||
if (IS_ERR(clk))
|
||||
kfree(busy);
|
||||
|
||||
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[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[lcdc_ipg_per] = imx_clk_gate("lcdc_ipg_per", "per8", ccm(CCM_CGCR0), 7);
|
||||
clk[nfc_ipg_per] = imx_clk_gate("nfc_ipg_per", "ipg_per", ccm(CCM_CGCR0), 8);
|
||||
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", "per8", ccm(CCM_CGCR0), 8);
|
||||
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[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[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_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[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));
|
||||
@ -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[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[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[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);
|
||||
|
@ -108,9 +108,8 @@ void __init imx3_init_l2x0(void)
|
||||
}
|
||||
|
||||
l2x0_base = ioremap(MX3x_L2CC_BASE_ADDR, 4096);
|
||||
if (IS_ERR(l2x0_base)) {
|
||||
printk(KERN_ERR "remapping L2 cache area failed with %ld\n",
|
||||
PTR_ERR(l2x0_base));
|
||||
if (!l2x0_base) {
|
||||
printk(KERN_ERR "remapping L2 cache area failed\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -11,7 +11,6 @@ config ARCH_OMAP2PLUS_TYPICAL
|
||||
select I2C_OMAP
|
||||
select MENELAUS if ARCH_OMAP2
|
||||
select NEON if ARCH_OMAP3 || ARCH_OMAP4 || SOC_OMAP5
|
||||
select PINCTRL
|
||||
select PM_RUNTIME
|
||||
select REGULATOR
|
||||
select SERIAL_OMAP
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include <linux/input.h>
|
||||
#include <linux/gpio_keys.h>
|
||||
#include <linux/opp.h>
|
||||
#include <linux/cpu.h>
|
||||
|
||||
#include <linux/mtd/mtd.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
@ -444,27 +445,31 @@ static struct omap_board_mux board_mux[] __initdata = {
|
||||
};
|
||||
#endif
|
||||
|
||||
static void __init beagle_opp_init(void)
|
||||
static int __init beagle_opp_init(void)
|
||||
{
|
||||
int r = 0;
|
||||
|
||||
/* Initialize the omap3 opp table */
|
||||
if (omap3_opp_init()) {
|
||||
if (!machine_is_omap3_beagle())
|
||||
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__);
|
||||
return;
|
||||
return r;
|
||||
}
|
||||
|
||||
/* Custom OPP enabled for all xM versions */
|
||||
if (cpu_is_omap3630()) {
|
||||
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");
|
||||
|
||||
if (IS_ERR(mpu_dev) || IS_ERR(iva_dev)) {
|
||||
pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n",
|
||||
__func__, mpu_dev, iva_dev);
|
||||
return;
|
||||
return -ENODEV;
|
||||
}
|
||||
/* Enable MPU 1GHz and lower opps */
|
||||
r = opp_enable(mpu_dev, 800000000);
|
||||
@ -484,8 +489,9 @@ static void __init beagle_opp_init(void)
|
||||
opp_disable(iva_dev, 660000000);
|
||||
}
|
||||
}
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
device_initcall(beagle_opp_init);
|
||||
|
||||
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 */
|
||||
omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
|
||||
omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
|
||||
|
||||
beagle_opp_init();
|
||||
}
|
||||
|
||||
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, "sysclkout_pre_ck", &sysclkout_pre_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)
|
||||
|
@ -614,16 +614,16 @@ static struct omap_mux __initdata omap3_muxmodes[] = {
|
||||
"sys_off_mode", NULL, NULL, NULL,
|
||||
"gpio_9", NULL, NULL, "safe_mode"),
|
||||
_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"),
|
||||
_OMAP3_MUXENTRY(UART1_RTS, 149,
|
||||
"uart1_rts", NULL, NULL, NULL,
|
||||
"uart1_rts", "ssi1_flag_tx", NULL, NULL,
|
||||
"gpio_149", NULL, NULL, "safe_mode"),
|
||||
_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"),
|
||||
_OMAP3_MUXENTRY(UART1_TX, 148,
|
||||
"uart1_tx", NULL, NULL, NULL,
|
||||
"uart1_tx", "ssi1_dat_tx", NULL, NULL,
|
||||
"gpio_148", NULL, NULL, "safe_mode"),
|
||||
_OMAP3_MUXENTRY(UART2_CTS, 144,
|
||||
"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_SDRC_WAKEUP_ERRATUM_i583 (1 << 1)
|
||||
#define PM_PER_MEMORIES_ERRATUM_i582 (1 << 2)
|
||||
|
||||
#if defined(CONFIG_PM) && defined(CONFIG_ARCH_OMAP3)
|
||||
extern u16 pm34xx_errata;
|
||||
|
@ -652,14 +652,17 @@ static void __init pm_errata_configure(void)
|
||||
/* Enable the l2 cache toggling in sleep logic */
|
||||
enable_omap3630_toggle_l2_on_restore();
|
||||
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)
|
||||
{
|
||||
struct power_state *pwrst, *tmp;
|
||||
struct clockdomain *neon_clkdm, *mpu_clkdm;
|
||||
struct clockdomain *neon_clkdm, *mpu_clkdm, *per_clkdm, *wkup_clkdm;
|
||||
int ret;
|
||||
|
||||
if (!omap3_has_io_chain_ctrl())
|
||||
@ -711,6 +714,8 @@ int __init omap3_pm_init(void)
|
||||
|
||||
neon_clkdm = clkdm_lookup("neon_clkdm");
|
||||
mpu_clkdm = clkdm_lookup("mpu_clkdm");
|
||||
per_clkdm = clkdm_lookup("per_clkdm");
|
||||
wkup_clkdm = clkdm_lookup("wkup_clkdm");
|
||||
|
||||
#ifdef CONFIG_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))
|
||||
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);
|
||||
if (omap_type() != OMAP2_DEVICE_TYPE_GP) {
|
||||
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);
|
||||
|
||||
if (console_uart_id == bdata->id) {
|
||||
omap_device_enable(pdev);
|
||||
pm_runtime_set_active(&pdev->dev);
|
||||
}
|
||||
|
||||
oh->dev_attr = uart;
|
||||
|
||||
if (((cpu_is_omap34xx() || cpu_is_omap44xx()) && bdata->pads)
|
||||
|
@ -61,6 +61,7 @@
|
||||
#include <plat/nand-core.h>
|
||||
#include <plat/adc-core.h>
|
||||
#include <plat/rtc-core.h>
|
||||
#include <plat/spi-core.h>
|
||||
|
||||
static struct map_desc s3c2416_iodesc[] __initdata = {
|
||||
IODESC_ENT(WATCHDOG),
|
||||
@ -132,6 +133,7 @@ void __init s3c2416_map_io(void)
|
||||
/* initialize device information early */
|
||||
s3c2416_default_sdhci0();
|
||||
s3c2416_default_sdhci1();
|
||||
s3c64xx_spi_setname("s3c2443-spi");
|
||||
|
||||
iotable_init(s3c2416_iodesc, ARRAY_SIZE(s3c2416_iodesc));
|
||||
}
|
||||
|
@ -43,6 +43,7 @@
|
||||
#include <plat/nand-core.h>
|
||||
#include <plat/adc-core.h>
|
||||
#include <plat/rtc-core.h>
|
||||
#include <plat/spi-core.h>
|
||||
|
||||
static struct map_desc s3c2443_iodesc[] __initdata = {
|
||||
IODESC_ENT(WATCHDOG),
|
||||
@ -100,6 +101,9 @@ void __init s3c2443_map_io(void)
|
||||
s3c24xx_gpiocfg_default.set_pull = s3c2443_gpio_setpull;
|
||||
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));
|
||||
}
|
||||
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include <plat/sdhci.h>
|
||||
#include <plat/adc-core.h>
|
||||
#include <plat/fb-core.h>
|
||||
#include <plat/spi-core.h>
|
||||
#include <plat/gpio-cfg.h>
|
||||
#include <plat/regs-irqtype.h>
|
||||
#include <plat/regs-serial.h>
|
||||
@ -179,6 +180,7 @@ void __init s5p6440_map_io(void)
|
||||
/* initialize any device information early */
|
||||
s3c_adc_setname("s3c64xx-adc");
|
||||
s3c_fb_setname("s5p64x0-fb");
|
||||
s3c64xx_spi_setname("s5p64x0-spi");
|
||||
|
||||
s5p64x0_default_sdhci0();
|
||||
s5p64x0_default_sdhci1();
|
||||
@ -193,6 +195,7 @@ void __init s5p6450_map_io(void)
|
||||
/* initialize any device information early */
|
||||
s3c_adc_setname("s3c64xx-adc");
|
||||
s3c_fb_setname("s5p64x0-fb");
|
||||
s3c64xx_spi_setname("s5p64x0-spi");
|
||||
|
||||
s5p64x0_default_sdhci0();
|
||||
s5p64x0_default_sdhci1();
|
||||
|
@ -45,6 +45,7 @@
|
||||
#include <plat/fb-core.h>
|
||||
#include <plat/iic-core.h>
|
||||
#include <plat/onenand-core.h>
|
||||
#include <plat/spi-core.h>
|
||||
#include <plat/regs-serial.h>
|
||||
#include <plat/watchdog-reset.h>
|
||||
|
||||
@ -165,6 +166,8 @@ void __init s5pc100_map_io(void)
|
||||
s3c_onenand_setname("s5pc100-onenand");
|
||||
s3c_fb_setname("s5pc100-fb");
|
||||
s3c_cfcon_setname("s5pc100-pata");
|
||||
|
||||
s3c64xx_spi_setname("s5pc100-spi");
|
||||
}
|
||||
|
||||
void __init s5pc100_init_clocks(int xtal)
|
||||
|
@ -43,6 +43,7 @@
|
||||
#include <plat/iic-core.h>
|
||||
#include <plat/keypad-core.h>
|
||||
#include <plat/tv-core.h>
|
||||
#include <plat/spi-core.h>
|
||||
#include <plat/regs-serial.h>
|
||||
|
||||
#include "common.h"
|
||||
@ -196,6 +197,8 @@ void __init s5pv210_map_io(void)
|
||||
|
||||
/* setup TV devices */
|
||||
s5p_hdmi_setname("s5pv210-hdmi");
|
||||
|
||||
s3c64xx_spi_setname("s5pv210-spi");
|
||||
}
|
||||
|
||||
void __init s5pv210_init_clocks(int xtal)
|
||||
|
@ -247,7 +247,7 @@ void __init r8a7779_add_standard_devices(void)
|
||||
{
|
||||
#ifdef CONFIG_CACHE_L2X0
|
||||
/* Early BRESP enable, Shared attribute override enable, 64K*16way */
|
||||
l2x0_init((void __iomem __force *)(0xf0100000), 0x40470000, 0x82000fff);
|
||||
l2x0_init(IOMEM(0xf0100000), 0x40470000, 0x82000fff);
|
||||
#endif
|
||||
r8a7779_pm_init();
|
||||
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include <linux/stat.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/platform_data/clk-ux500.h>
|
||||
|
||||
#include <asm/hardware/gic.h>
|
||||
|
@ -55,7 +55,7 @@ struct platform_device *__init imx_add_mxc_mmc(
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + SZ_4K - 1,
|
||||
.end = data->iobase + data->iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
|
@ -26,6 +26,7 @@ config ARCH_OMAP2PLUS
|
||||
select CLKDEV_LOOKUP
|
||||
select GENERIC_IRQ_CHIP
|
||||
select OMAP_DM_TIMER
|
||||
select PINCTRL
|
||||
select PROC_DEVICETREE if PROC_FS
|
||||
select SPARSE_IRQ
|
||||
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…
Reference in New Issue
Block a user