Commit 5b34b089 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

* 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
  arm/imx: fix imx6q mmc error when mounting rootfs
  arm/imx: fix AUTO_ZRELADDR selection
  arm/imx: fix the references to ARCH_MX3
  ARM: mx51/53: set pwm clock parent to ipg_perclk
  arm/tegra: enable headphone detection gpio on seaboard
  arm/dt: Fix ventana SDHCI power-gpios
  arm/tegra: Don't create duplicate gpio and pinmux devices
  ARM: at91: Fix USBA gadget registration
  atmel/spi: fix missing probe
  at91/yl-9200: Fix section mismatch
  at91: vmalloc fix missing AT91_VIRT_BASE define
  ARM: at91: usart: drop static map regs for dbgu
  ARM: picoxcell: add extra temp register to addruart
  ARM: msm: fix compilation flags for MSM_SCM
  arm/mxs: fix mmc device adding for mach-mx28evk
  ARM: mxc: Remove test_for_ltirq
  ARM:i.MX: fix build error in clock-mx51-mx53.c
  ARM:i.MX: fix build error in tzic/avic.c
  ARM: mxc: fix local timer interrupt handling
  msm: boards: Fix fallout from removal of machine_desc in fixup
parents eb0b38a5 ab8fe93b
...@@ -22,11 +22,10 @@ serial@70006300 { ...@@ -22,11 +22,10 @@ serial@70006300 {
sdhci@c8000400 { sdhci@c8000400 {
cd-gpios = <&gpio 69 0>; /* gpio PI5 */ cd-gpios = <&gpio 69 0>; /* gpio PI5 */
wp-gpios = <&gpio 57 0>; /* gpio PH1 */ wp-gpios = <&gpio 57 0>; /* gpio PH1 */
power-gpios = <&gpio 155 0>; /* gpio PT3 */ power-gpios = <&gpio 70 0>; /* gpio PI6 */
}; };
sdhci@c8000600 { sdhci@c8000600 {
power-gpios = <&gpio 70 0>; /* gpio PI6 */
support-8bit; support-8bit;
}; };
}; };
...@@ -98,7 +98,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {} ...@@ -98,7 +98,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {}
* USB HS Device (Gadget) * USB HS Device (Gadget)
* -------------------------------------------------------------------- */ * -------------------------------------------------------------------- */
#if defined(CONFIG_USB_GADGET_ATMEL_USBA) || defined(CONFIG_USB_GADGET_ATMEL_USBA_MODULE) #if defined(CONFIG_USB_ATMEL_USBA) || defined(CONFIG_USB_ATMEL_USBA_MODULE)
static struct resource usba_udc_resources[] = { static struct resource usba_udc_resources[] = {
[0] = { [0] = {
...@@ -1021,8 +1021,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} ...@@ -1021,8 +1021,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {}
#if defined(CONFIG_SERIAL_ATMEL) #if defined(CONFIG_SERIAL_ATMEL)
static struct resource dbgu_resources[] = { static struct resource dbgu_resources[] = {
[0] = { [0] = {
.start = AT91_VA_BASE_SYS + AT91_DBGU, .start = AT91_BASE_SYS + AT91_DBGU,
.end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1,
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
[1] = { [1] = {
...@@ -1035,7 +1035,6 @@ static struct resource dbgu_resources[] = { ...@@ -1035,7 +1035,6 @@ static struct resource dbgu_resources[] = {
static struct atmel_uart_data dbgu_data = { static struct atmel_uart_data dbgu_data = {
.use_dma_tx = 0, .use_dma_tx = 0,
.use_dma_rx = 0, /* DBGU not capable of receive DMA */ .use_dma_rx = 0, /* DBGU not capable of receive DMA */
.regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU),
}; };
static u64 dbgu_dmamask = DMA_BIT_MASK(32); static u64 dbgu_dmamask = DMA_BIT_MASK(32);
......
...@@ -877,8 +877,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} ...@@ -877,8 +877,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {}
#if defined(CONFIG_SERIAL_ATMEL) #if defined(CONFIG_SERIAL_ATMEL)
static struct resource dbgu_resources[] = { static struct resource dbgu_resources[] = {
[0] = { [0] = {
.start = AT91_VA_BASE_SYS + AT91_DBGU, .start = AT91_BASE_SYS + AT91_DBGU,
.end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1,
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
[1] = { [1] = {
...@@ -891,7 +891,6 @@ static struct resource dbgu_resources[] = { ...@@ -891,7 +891,6 @@ static struct resource dbgu_resources[] = {
static struct atmel_uart_data dbgu_data = { static struct atmel_uart_data dbgu_data = {
.use_dma_tx = 0, .use_dma_tx = 0,
.use_dma_rx = 0, /* DBGU not capable of receive DMA */ .use_dma_rx = 0, /* DBGU not capable of receive DMA */
.regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU),
}; };
static u64 dbgu_dmamask = DMA_BIT_MASK(32); static u64 dbgu_dmamask = DMA_BIT_MASK(32);
......
...@@ -837,8 +837,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} ...@@ -837,8 +837,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {}
#if defined(CONFIG_SERIAL_ATMEL) #if defined(CONFIG_SERIAL_ATMEL)
static struct resource dbgu_resources[] = { static struct resource dbgu_resources[] = {
[0] = { [0] = {
.start = AT91_VA_BASE_SYS + AT91_DBGU, .start = AT91_BASE_SYS + AT91_DBGU,
.end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1,
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
[1] = { [1] = {
...@@ -851,7 +851,6 @@ static struct resource dbgu_resources[] = { ...@@ -851,7 +851,6 @@ static struct resource dbgu_resources[] = {
static struct atmel_uart_data dbgu_data = { static struct atmel_uart_data dbgu_data = {
.use_dma_tx = 0, .use_dma_tx = 0,
.use_dma_rx = 0, /* DBGU not capable of receive DMA */ .use_dma_rx = 0, /* DBGU not capable of receive DMA */
.regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU),
}; };
static u64 dbgu_dmamask = DMA_BIT_MASK(32); static u64 dbgu_dmamask = DMA_BIT_MASK(32);
......
...@@ -816,8 +816,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} ...@@ -816,8 +816,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {}
#if defined(CONFIG_SERIAL_ATMEL) #if defined(CONFIG_SERIAL_ATMEL)
static struct resource dbgu_resources[] = { static struct resource dbgu_resources[] = {
[0] = { [0] = {
.start = AT91_VA_BASE_SYS + AT91_DBGU, .start = AT91_BASE_SYS + AT91_DBGU,
.end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1,
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
[1] = { [1] = {
...@@ -830,7 +830,6 @@ static struct resource dbgu_resources[] = { ...@@ -830,7 +830,6 @@ static struct resource dbgu_resources[] = {
static struct atmel_uart_data dbgu_data = { static struct atmel_uart_data dbgu_data = {
.use_dma_tx = 0, .use_dma_tx = 0,
.use_dma_rx = 0, /* DBGU not capable of receive DMA */ .use_dma_rx = 0, /* DBGU not capable of receive DMA */
.regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU),
}; };
static u64 dbgu_dmamask = DMA_BIT_MASK(32); static u64 dbgu_dmamask = DMA_BIT_MASK(32);
......
...@@ -1196,8 +1196,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} ...@@ -1196,8 +1196,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {}
static struct resource dbgu_resources[] = { static struct resource dbgu_resources[] = {
[0] = { [0] = {
.start = AT91_VA_BASE_SYS + AT91_DBGU, .start = AT91_BASE_SYS + AT91_DBGU,
.end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1,
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
[1] = { [1] = {
...@@ -1210,7 +1210,6 @@ static struct resource dbgu_resources[] = { ...@@ -1210,7 +1210,6 @@ static struct resource dbgu_resources[] = {
static struct atmel_uart_data dbgu_data = { static struct atmel_uart_data dbgu_data = {
.use_dma_tx = 0, .use_dma_tx = 0,
.use_dma_rx = 0, /* DBGU not capable of receive DMA */ .use_dma_rx = 0, /* DBGU not capable of receive DMA */
.regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU),
}; };
static u64 dbgu_dmamask = DMA_BIT_MASK(32); static u64 dbgu_dmamask = DMA_BIT_MASK(32);
......
...@@ -197,7 +197,7 @@ void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data) {} ...@@ -197,7 +197,7 @@ void __init at91_add_device_usbh_ehci(struct at91_usbh_data *data) {}
* USB HS Device (Gadget) * USB HS Device (Gadget)
* -------------------------------------------------------------------- */ * -------------------------------------------------------------------- */
#if defined(CONFIG_USB_GADGET_ATMEL_USBA) || defined(CONFIG_USB_GADGET_ATMEL_USBA_MODULE) #if defined(CONFIG_USB_ATMEL_USBA) || defined(CONFIG_USB_ATMEL_USBA_MODULE)
static struct resource usba_udc_resources[] = { static struct resource usba_udc_resources[] = {
[0] = { [0] = {
.start = AT91SAM9G45_UDPHS_FIFO, .start = AT91SAM9G45_UDPHS_FIFO,
...@@ -1332,8 +1332,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} ...@@ -1332,8 +1332,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {}
#if defined(CONFIG_SERIAL_ATMEL) #if defined(CONFIG_SERIAL_ATMEL)
static struct resource dbgu_resources[] = { static struct resource dbgu_resources[] = {
[0] = { [0] = {
.start = AT91_VA_BASE_SYS + AT91_DBGU, .start = AT91_BASE_SYS + AT91_DBGU,
.end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1,
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
[1] = { [1] = {
...@@ -1346,7 +1346,6 @@ static struct resource dbgu_resources[] = { ...@@ -1346,7 +1346,6 @@ static struct resource dbgu_resources[] = {
static struct atmel_uart_data dbgu_data = { static struct atmel_uart_data dbgu_data = {
.use_dma_tx = 0, .use_dma_tx = 0,
.use_dma_rx = 0, .use_dma_rx = 0,
.regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU),
}; };
static u64 dbgu_dmamask = DMA_BIT_MASK(32); static u64 dbgu_dmamask = DMA_BIT_MASK(32);
......
...@@ -75,7 +75,7 @@ void __init at91_add_device_hdmac(void) {} ...@@ -75,7 +75,7 @@ void __init at91_add_device_hdmac(void) {}
* USB HS Device (Gadget) * USB HS Device (Gadget)
* -------------------------------------------------------------------- */ * -------------------------------------------------------------------- */
#if defined(CONFIG_USB_GADGET_ATMEL_USBA) || defined(CONFIG_USB_GADGET_ATMEL_USBA_MODULE) #if defined(CONFIG_USB_ATMEL_USBA) || defined(CONFIG_USB_ATMEL_USBA_MODULE)
static struct resource usba_udc_resources[] = { static struct resource usba_udc_resources[] = {
[0] = { [0] = {
...@@ -908,8 +908,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {} ...@@ -908,8 +908,8 @@ void __init at91_add_device_ssc(unsigned id, unsigned pins) {}
#if defined(CONFIG_SERIAL_ATMEL) #if defined(CONFIG_SERIAL_ATMEL)
static struct resource dbgu_resources[] = { static struct resource dbgu_resources[] = {
[0] = { [0] = {
.start = AT91_VA_BASE_SYS + AT91_DBGU, .start = AT91_BASE_SYS + AT91_DBGU,
.end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1, .end = AT91_BASE_SYS + AT91_DBGU + SZ_512 - 1,
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
[1] = { [1] = {
...@@ -922,7 +922,6 @@ static struct resource dbgu_resources[] = { ...@@ -922,7 +922,6 @@ static struct resource dbgu_resources[] = {
static struct atmel_uart_data dbgu_data = { static struct atmel_uart_data dbgu_data = {
.use_dma_tx = 0, .use_dma_tx = 0,
.use_dma_rx = 0, /* DBGU not capable of receive DMA */ .use_dma_rx = 0, /* DBGU not capable of receive DMA */
.regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU),
}; };
static u64 dbgu_dmamask = DMA_BIT_MASK(32); static u64 dbgu_dmamask = DMA_BIT_MASK(32);
......
...@@ -384,7 +384,7 @@ static struct spi_board_info yl9200_spi_devices[] = { ...@@ -384,7 +384,7 @@ static struct spi_board_info yl9200_spi_devices[] = {
#include <video/s1d13xxxfb.h> #include <video/s1d13xxxfb.h>
static void __init yl9200_init_video(void) static void yl9200_init_video(void)
{ {
/* NWAIT Signal */ /* NWAIT Signal */
at91_set_A_periph(AT91_PIN_PC6, 0); at91_set_A_periph(AT91_PIN_PC6, 0);
......
...@@ -21,6 +21,8 @@ ...@@ -21,6 +21,8 @@
#ifndef __ASM_ARCH_VMALLOC_H #ifndef __ASM_ARCH_VMALLOC_H
#define __ASM_ARCH_VMALLOC_H #define __ASM_ARCH_VMALLOC_H
#include <mach/hardware.h>
#define VMALLOC_END (AT91_VIRT_BASE & PGDIR_MASK) #define VMALLOC_END (AT91_VIRT_BASE & PGDIR_MASK)
#endif #endif
zreladdr-$(CONFIG_ARCH_MX1) += 0x08008000 zreladdr-$(CONFIG_SOC_IMX1) += 0x08008000
params_phys-$(CONFIG_ARCH_MX1) := 0x08000100 params_phys-$(CONFIG_SOC_IMX1) := 0x08000100
initrd_phys-$(CONFIG_ARCH_MX1) := 0x08800000 initrd_phys-$(CONFIG_SOC_IMX1) := 0x08800000
zreladdr-$(CONFIG_MACH_MX21) += 0xC0008000 zreladdr-$(CONFIG_SOC_IMX21) += 0xC0008000
params_phys-$(CONFIG_MACH_MX21) := 0xC0000100 params_phys-$(CONFIG_SOC_IMX21) := 0xC0000100
initrd_phys-$(CONFIG_MACH_MX21) := 0xC0800000 initrd_phys-$(CONFIG_SOC_IMX21) := 0xC0800000
zreladdr-$(CONFIG_ARCH_MX25) += 0x80008000 zreladdr-$(CONFIG_SOC_IMX25) += 0x80008000
params_phys-$(CONFIG_ARCH_MX25) := 0x80000100 params_phys-$(CONFIG_SOC_IMX25) := 0x80000100
initrd_phys-$(CONFIG_ARCH_MX25) := 0x80800000 initrd_phys-$(CONFIG_SOC_IMX25) := 0x80800000
zreladdr-$(CONFIG_MACH_MX27) += 0xA0008000 zreladdr-$(CONFIG_SOC_IMX27) += 0xA0008000
params_phys-$(CONFIG_MACH_MX27) := 0xA0000100 params_phys-$(CONFIG_SOC_IMX27) := 0xA0000100
initrd_phys-$(CONFIG_MACH_MX27) := 0xA0800000 initrd_phys-$(CONFIG_SOC_IMX27) := 0xA0800000
zreladdr-$(CONFIG_ARCH_MX3) += 0x80008000 zreladdr-$(CONFIG_SOC_IMX31) += 0x80008000
params_phys-$(CONFIG_ARCH_MX3) := 0x80000100 params_phys-$(CONFIG_SOC_IMX31) := 0x80000100
initrd_phys-$(CONFIG_ARCH_MX3) := 0x80800000 initrd_phys-$(CONFIG_SOC_IMX31) := 0x80800000
zreladdr-$(CONFIG_SOC_IMX35) += 0x80008000
params_phys-$(CONFIG_SOC_IMX35) := 0x80000100
initrd_phys-$(CONFIG_SOC_IMX35) := 0x80800000
zreladdr-$(CONFIG_SOC_IMX6Q) += 0x10008000 zreladdr-$(CONFIG_SOC_IMX6Q) += 0x10008000
params_phys-$(CONFIG_SOC_IMX6Q) := 0x10000100 params_phys-$(CONFIG_SOC_IMX6Q) := 0x10000100
......
...@@ -1139,7 +1139,7 @@ static int _clk_set_rate(struct clk *clk, unsigned long rate) ...@@ -1139,7 +1139,7 @@ static int _clk_set_rate(struct clk *clk, unsigned long rate)
return -EINVAL; return -EINVAL;
max_div = ((d->bm_pred >> d->bp_pred) + 1) * max_div = ((d->bm_pred >> d->bp_pred) + 1) *
((d->bm_pred >> d->bp_pred) + 1); ((d->bm_podf >> d->bp_podf) + 1);
div = parent_rate / rate; div = parent_rate / rate;
if (div == 0) if (div == 0)
...@@ -2002,6 +2002,21 @@ int __init mx6q_clocks_init(void) ...@@ -2002,6 +2002,21 @@ int __init mx6q_clocks_init(void)
clk_set_rate(&asrc_serial_clk, 1500000); clk_set_rate(&asrc_serial_clk, 1500000);
clk_set_rate(&enfc_clk, 11000000); clk_set_rate(&enfc_clk, 11000000);
/*
* Before pinctrl API is available, we have to rely on the pad
* configuration set up by bootloader. For usdhc example here,
* u-boot sets up the pads for 49.5 MHz case, and we have to lower
* the usdhc clock from 198 to 49.5 MHz to match the pad configuration.
*
* FIXME: This is should be removed after pinctrl API is available.
* At that time, usdhc driver can call pinctrl API to change pad
* configuration dynamically per different usdhc clock settings.
*/
clk_set_rate(&usdhc1_clk, 49500000);
clk_set_rate(&usdhc2_clk, 49500000);
clk_set_rate(&usdhc3_clk, 49500000);
clk_set_rate(&usdhc4_clk, 49500000);
np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt"); np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt");
base = of_iomap(np, 0); base = of_iomap(np, 0);
WARN_ON(!base); WARN_ON(!base);
......
...@@ -15,6 +15,8 @@ obj-$(CONFIG_MSM_SMD) += smd.o smd_debug.o ...@@ -15,6 +15,8 @@ obj-$(CONFIG_MSM_SMD) += smd.o smd_debug.o
obj-$(CONFIG_MSM_SMD) += last_radio_log.o obj-$(CONFIG_MSM_SMD) += last_radio_log.o
obj-$(CONFIG_MSM_SCM) += scm.o scm-boot.o obj-$(CONFIG_MSM_SCM) += scm.o scm-boot.o
CFLAGS_scm.o :=$(call as-instr,.arch_extension sec,-DREQUIRES_SEC=1)
obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
obj-$(CONFIG_SMP) += headsmp.o platsmp.o obj-$(CONFIG_SMP) += headsmp.o platsmp.o
......
...@@ -42,8 +42,8 @@ ...@@ -42,8 +42,8 @@
extern struct sys_timer msm_timer; extern struct sys_timer msm_timer;
static void __init msm7x30_fixup(struct machine_desc *desc, struct tag *tag, static void __init msm7x30_fixup(struct tag *tag, char **cmdline,
char **cmdline, struct meminfo *mi) struct meminfo *mi)
{ {
for (; tag->hdr.size; tag = tag_next(tag)) for (; tag->hdr.size; tag = tag_next(tag))
if (tag->hdr.tag == ATAG_MEM && tag->u.mem.start == 0x200000) { if (tag->hdr.tag == ATAG_MEM && tag->u.mem.start == 0x200000) {
......
...@@ -32,8 +32,8 @@ ...@@ -32,8 +32,8 @@
#include "devices.h" #include "devices.h"
static void __init msm8960_fixup(struct machine_desc *desc, struct tag *tag, static void __init msm8960_fixup(struct tag *tag, char **cmdline,
char **cmdline, struct meminfo *mi) struct meminfo *mi)
{ {
for (; tag->hdr.size; tag = tag_next(tag)) for (; tag->hdr.size; tag = tag_next(tag))
if (tag->hdr.tag == ATAG_MEM && if (tag->hdr.tag == ATAG_MEM &&
......
...@@ -28,8 +28,8 @@ ...@@ -28,8 +28,8 @@
#include <mach/board.h> #include <mach/board.h>
#include <mach/msm_iomap.h> #include <mach/msm_iomap.h>
static void __init msm8x60_fixup(struct machine_desc *desc, struct tag *tag, static void __init msm8x60_fixup(struct tag *tag, char **cmdline,
char **cmdline, struct meminfo *mi) struct meminfo *mi)
{ {
for (; tag->hdr.size; tag = tag_next(tag)) for (; tag->hdr.size; tag = tag_next(tag))
if (tag->hdr.tag == ATAG_MEM && if (tag->hdr.tag == ATAG_MEM &&
......
...@@ -180,6 +180,9 @@ static u32 smc(u32 cmd_addr) ...@@ -180,6 +180,9 @@ static u32 smc(u32 cmd_addr)
__asmeq("%1", "r0") __asmeq("%1", "r0")
__asmeq("%2", "r1") __asmeq("%2", "r1")
__asmeq("%3", "r2") __asmeq("%3", "r2")
#ifdef REQUIRES_SEC
".arch_extension sec\n"
#endif
"smc #0 @ switch to secure world\n" "smc #0 @ switch to secure world\n"
: "=r" (r0) : "=r" (r0)
: "r" (r0), "r" (r1), "r" (r2) : "r" (r0), "r" (r1), "r" (r2)
......
...@@ -1281,9 +1281,9 @@ DEFINE_CLOCK(gpt_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG9_OFFSET, ...@@ -1281,9 +1281,9 @@ DEFINE_CLOCK(gpt_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG9_OFFSET,
NULL, NULL, &ipg_clk, &gpt_ipg_clk); NULL, NULL, &ipg_clk, &gpt_ipg_clk);
DEFINE_CLOCK(pwm1_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG6_OFFSET, DEFINE_CLOCK(pwm1_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG6_OFFSET,
NULL, NULL, &ipg_clk, NULL); NULL, NULL, &ipg_perclk, NULL);
DEFINE_CLOCK(pwm2_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG8_OFFSET, DEFINE_CLOCK(pwm2_clk, 0, MXC_CCM_CCGR2, MXC_CCM_CCGRx_CG8_OFFSET,
NULL, NULL, &ipg_clk, NULL); NULL, NULL, &ipg_perclk, NULL);
/* I2C */ /* I2C */
DEFINE_CLOCK(i2c1_clk, 0, MXC_CCM_CCGR1, MXC_CCM_CCGRx_CG9_OFFSET, DEFINE_CLOCK(i2c1_clk, 0, MXC_CCM_CCGR1, MXC_CCM_CCGRx_CG9_OFFSET,
...@@ -1634,6 +1634,7 @@ int __init mx53_clocks_init(unsigned long ckil, unsigned long osc, ...@@ -1634,6 +1634,7 @@ int __init mx53_clocks_init(unsigned long ckil, unsigned long osc,
return 0; return 0;
} }
#ifdef CONFIG_OF
static void __init clk_get_freq_dt(unsigned long *ckil, unsigned long *osc, static void __init clk_get_freq_dt(unsigned long *ckil, unsigned long *osc,
unsigned long *ckih1, unsigned long *ckih2) unsigned long *ckih1, unsigned long *ckih2)
{ {
...@@ -1671,3 +1672,4 @@ int __init mx53_clocks_init_dt(void) ...@@ -1671,3 +1672,4 @@ int __init mx53_clocks_init_dt(void)
clk_get_freq_dt(&ckil, &osc, &ckih1, &ckih2); clk_get_freq_dt(&ckil, &osc, &ckih1, &ckih2);
return mx53_clocks_init(ckil, osc, ckih1, ckih2); return mx53_clocks_init(ckil, osc, ckih1, ckih2);
} }
#endif
...@@ -471,7 +471,8 @@ static void __init mx28evk_init(void) ...@@ -471,7 +471,8 @@ static void __init mx28evk_init(void)
"mmc0-slot-power"); "mmc0-slot-power");
if (ret) if (ret)
pr_warn("failed to request gpio mmc0-slot-power: %d\n", ret); pr_warn("failed to request gpio mmc0-slot-power: %d\n", ret);
mx28_add_mxs_mmc(0, &mx28evk_mmc_pdata[0]); else
mx28_add_mxs_mmc(0, &mx28evk_mmc_pdata[0]);
ret = gpio_request_one(MX28EVK_MMC1_SLOT_POWER, GPIOF_OUT_INIT_LOW, ret = gpio_request_one(MX28EVK_MMC1_SLOT_POWER, GPIOF_OUT_INIT_LOW,
"mmc1-slot-power"); "mmc1-slot-power");
...@@ -480,7 +481,6 @@ static void __init mx28evk_init(void) ...@@ -480,7 +481,6 @@ static void __init mx28evk_init(void)
else else
mx28_add_mxs_mmc(1, &mx28evk_mmc_pdata[1]); mx28_add_mxs_mmc(1, &mx28evk_mmc_pdata[1]);
mx28_add_mxs_mmc(1, &mx28evk_mmc_pdata[1]);
mx28_add_rtc_stmp3xxx(); mx28_add_rtc_stmp3xxx();
gpio_led_register_device(0, &mx28evk_led_data); gpio_led_register_device(0, &mx28evk_led_data);
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#define UART_SHIFT 2 #define UART_SHIFT 2
.macro addruart, rp, rv .macro addruart, rp, rv, tmp
ldr \rv, =PHYS_TO_IO(PICOXCELL_UART1_BASE) ldr \rv, =PHYS_TO_IO(PICOXCELL_UART1_BASE)
ldr \rp, =PICOXCELL_UART1_BASE ldr \rp, =PICOXCELL_UART1_BASE
.endm .endm
......
...@@ -101,6 +101,13 @@ static void __init tegra_dt_init(void) ...@@ -101,6 +101,13 @@ static void __init tegra_dt_init(void)
tegra_clk_init_from_table(tegra_dt_clk_init_table); tegra_clk_init_from_table(tegra_dt_clk_init_table);
/*
* Finished with the static registrations now; fill in the missing
* devices
*/
of_platform_populate(NULL, tegra_dt_match_table,
tegra20_auxdata_lookup, NULL);
for (i = 0; i < ARRAY_SIZE(pinmux_configs); i++) { for (i = 0; i < ARRAY_SIZE(pinmux_configs); i++) {
if (of_machine_is_compatible(pinmux_configs[i].machine)) { if (of_machine_is_compatible(pinmux_configs[i].machine)) {
pinmux_configs[i].init(); pinmux_configs[i].init();
...@@ -110,12 +117,6 @@ static void __init tegra_dt_init(void) ...@@ -110,12 +117,6 @@ static void __init tegra_dt_init(void)
WARN(i == ARRAY_SIZE(pinmux_configs), WARN(i == ARRAY_SIZE(pinmux_configs),
"Unknown platform! Pinmuxing not initialized\n"); "Unknown platform! Pinmuxing not initialized\n");
/*
* Finished with the static registrations now; fill in the missing
* devices
*/
of_platform_populate(NULL, tegra_dt_match_table, tegra20_auxdata_lookup, NULL);
} }
static const char * tegra_dt_board_compat[] = { static const char * tegra_dt_board_compat[] = {
......
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/of.h>
#include <mach/pinmux.h> #include <mach/pinmux.h>
#include "gpio-names.h" #include "gpio-names.h"
...@@ -161,7 +163,9 @@ static struct tegra_gpio_table gpio_table[] = { ...@@ -161,7 +163,9 @@ static struct tegra_gpio_table gpio_table[] = {
void harmony_pinmux_init(void) void harmony_pinmux_init(void)
{ {
platform_add_devices(pinmux_devices, ARRAY_SIZE(pinmux_devices)); if (!of_machine_is_compatible("nvidia,tegra20"))
platform_add_devices(pinmux_devices,
ARRAY_SIZE(pinmux_devices));
tegra_pinmux_config_table(harmony_pinmux, ARRAY_SIZE(harmony_pinmux)); tegra_pinmux_config_table(harmony_pinmux, ARRAY_SIZE(harmony_pinmux));
......
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/of.h>
#include <mach/pinmux.h> #include <mach/pinmux.h>
#include "gpio-names.h" #include "gpio-names.h"
...@@ -158,7 +160,9 @@ static struct tegra_gpio_table gpio_table[] = { ...@@ -158,7 +160,9 @@ static struct tegra_gpio_table gpio_table[] = {
void paz00_pinmux_init(void) void paz00_pinmux_init(void)
{ {
platform_add_devices(pinmux_devices, ARRAY_SIZE(pinmux_devices)); if (!of_machine_is_compatible("nvidia,tegra20"))
platform_add_devices(pinmux_devices,
ARRAY_SIZE(pinmux_devices));
tegra_pinmux_config_table(paz00_pinmux, ARRAY_SIZE(paz00_pinmux)); tegra_pinmux_config_table(paz00_pinmux, ARRAY_SIZE(paz00_pinmux));
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/of.h>
#include <mach/pinmux.h> #include <mach/pinmux.h>
#include <mach/pinmux-t2.h> #include <mach/pinmux-t2.h>
...@@ -191,6 +192,7 @@ static struct tegra_gpio_table common_gpio_table[] = { ...@@ -191,6 +192,7 @@ static struct tegra_gpio_table common_gpio_table[] = {
{ .gpio = TEGRA_GPIO_SD2_POWER, .enable = true }, { .gpio = TEGRA_GPIO_SD2_POWER, .enable = true },
{ .gpio = TEGRA_GPIO_LIDSWITCH, .enable = true }, { .gpio = TEGRA_GPIO_LIDSWITCH, .enable = true },
{ .gpio = TEGRA_GPIO_POWERKEY, .enable = true }, { .gpio = TEGRA_GPIO_POWERKEY, .enable = true },
{ .gpio = TEGRA_GPIO_HP_DET, .enable = true },
{ .gpio = TEGRA_GPIO_ISL29018_IRQ, .enable = true }, { .gpio = TEGRA_GPIO_ISL29018_IRQ, .enable = true },
{ .gpio = TEGRA_GPIO_CDC_IRQ, .enable = true }, { .gpio = TEGRA_GPIO_CDC_IRQ, .enable = true },
{ .gpio = TEGRA_GPIO_USB1, .enable = true }, { .gpio = TEGRA_GPIO_USB1, .enable = true },
...@@ -218,7 +220,9 @@ static void __init update_pinmux(struct tegra_pingroup_config *newtbl, int size) ...@@ -218,7 +220,9 @@ static void __init update_pinmux(struct tegra_pingroup_config *newtbl, int size)
void __init seaboard_common_pinmux_init(void) void __init seaboard_common_pinmux_init(void)
{ {
platform_add_devices(pinmux_devices, ARRAY_SIZE(pinmux_devices)); if (!of_machine_is_compatible("nvidia,tegra20"))
platform_add_devices(pinmux_devices,
ARRAY_SIZE(pinmux_devices));
tegra_pinmux_config_table(seaboard_pinmux, ARRAY_SIZE(seaboard_pinmux)); tegra_pinmux_config_table(seaboard_pinmux, ARRAY_SIZE(seaboard_pinmux));
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/of.h>
#include <mach/pinmux.h> #include <mach/pinmux.h>
...@@ -157,7 +158,9 @@ static struct tegra_gpio_table gpio_table[] = { ...@@ -157,7 +158,9 @@ static struct tegra_gpio_table gpio_table[] = {
void __init trimslice_pinmux_init(void) void __init trimslice_pinmux_init(void)
{ {
platform_add_devices(pinmux_devices, ARRAY_SIZE(pinmux_devices)); if (!of_machine_is_compatible("nvidia,tegra20"))
platform_add_devices(pinmux_devices,
ARRAY_SIZE(pinmux_devices));
tegra_pinmux_config_table(trimslice_pinmux, ARRAY_SIZE(trimslice_pinmux)); tegra_pinmux_config_table(trimslice_pinmux, ARRAY_SIZE(trimslice_pinmux));
tegra_gpio_config(gpio_table, ARRAY_SIZE(gpio_table)); tegra_gpio_config(gpio_table, ARRAY_SIZE(gpio_table));
} }
...@@ -10,7 +10,7 @@ choice ...@@ -10,7 +10,7 @@ choice
config ARCH_IMX_V4_V5 config ARCH_IMX_V4_V5
bool "i.MX1, i.MX21, i.MX25, i.MX27" bool "i.MX1, i.MX21, i.MX25, i.MX27"
select AUTO_ZRELADDR select AUTO_ZRELADDR if !ZBOOT_ROM
select ARM_PATCH_PHYS_VIRT select ARM_PATCH_PHYS_VIRT
help help
This enables support for systems based on the Freescale i.MX ARMv4 This enables support for systems based on the Freescale i.MX ARMv4
...@@ -26,7 +26,7 @@ config ARCH_IMX_V6_V7 ...@@ -26,7 +26,7 @@ config ARCH_IMX_V6_V7
config ARCH_MX5 config ARCH_MX5
bool "i.MX50, i.MX51, i.MX53" bool "i.MX50, i.MX51, i.MX53"
select AUTO_ZRELADDR select AUTO_ZRELADDR if !ZBOOT_ROM
select ARM_PATCH_PHYS_VIRT select ARM_PATCH_PHYS_VIRT
help help
This enables support for machines using Freescale's i.MX50 and i.MX53 This enables support for machines using Freescale's i.MX50 and i.MX53
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include <linux/io.h> #include <linux/io.h>
#include <mach/common.h> #include <mach/common.h>
#include <asm/mach/irq.h> #include <asm/mach/irq.h>
#include <asm/exception.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include "irq-common.h" #include "irq-common.h"
......
...@@ -28,21 +28,14 @@ asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs) ...@@ -28,21 +28,14 @@ asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
if (irqnr == 1023) if (irqnr == 1023)
break; break;
if (irqnr > 29 && irqnr < 1021) if (irqnr > 15 && irqnr < 1021)
handle_IRQ(irqnr, regs); handle_IRQ(irqnr, regs);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
else if (irqnr < 16) { else {
writel_relaxed(irqstat, gic_cpu_base_addr + writel_relaxed(irqstat, gic_cpu_base_addr +
GIC_CPU_EOI); GIC_CPU_EOI);
handle_IPI(irqnr, regs); handle_IPI(irqnr, regs);
} }
#endif
#ifdef CONFIG_LOCAL_TIMERS
else if (irqnr == 29) {
writel_relaxed(irqstat, gic_cpu_base_addr +
GIC_CPU_EOI);
handle_local_timer(regs);
}
#endif #endif
} while (1); } while (1);
} }
...@@ -25,6 +25,3 @@ ...@@ -25,6 +25,3 @@
.macro test_for_ipi, irqnr, irqstat, base, tmp .macro test_for_ipi, irqnr, irqstat, base, tmp
.endm .endm
.macro test_for_ltirq, irqnr, irqstat, base, tmp
.endm
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <linux/io.h> #include <linux/io.h>
#include <asm/mach/irq.h> #include <asm/mach/irq.h>
#include <asm/exception.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/common.h> #include <mach/common.h>
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
/* VENDOR SPEC register */ /* VENDOR SPEC register */
#define SDHCI_VENDOR_SPEC 0xC0 #define SDHCI_VENDOR_SPEC 0xC0
#define SDHCI_VENDOR_SPEC_SDIO_QUIRK 0x00000002 #define SDHCI_VENDOR_SPEC_SDIO_QUIRK 0x00000002
#define SDHCI_WTMK_LVL 0x44
#define SDHCI_MIX_CTRL 0x48 #define SDHCI_MIX_CTRL 0x48
/* /*
...@@ -476,6 +477,13 @@ static int __devinit sdhci_esdhc_imx_probe(struct platform_device *pdev) ...@@ -476,6 +477,13 @@ static int __devinit sdhci_esdhc_imx_probe(struct platform_device *pdev)
if (is_imx53_esdhc(imx_data)) if (is_imx53_esdhc(imx_data))
imx_data->flags |= ESDHC_FLAG_MULTIBLK_NO_INT; imx_data->flags |= ESDHC_FLAG_MULTIBLK_NO_INT;
/*
* The imx6q ROM code will change the default watermark level setting
* to something insane. Change it back here.
*/
if (is_imx6q_usdhc(imx_data))
writel(0x08100810, host->ioaddr + SDHCI_WTMK_LVL);
boarddata = &imx_data->boarddata; boarddata = &imx_data->boarddata;
if (sdhci_esdhc_imx_probe_dt(pdev, boarddata) < 0) { if (sdhci_esdhc_imx_probe_dt(pdev, boarddata) < 0) {
if (!host->mmc->parent->platform_data) { if (!host->mmc->parent->platform_data) {
......
...@@ -907,7 +907,7 @@ static void atmel_spi_cleanup(struct spi_device *spi) ...@@ -907,7 +907,7 @@ static void atmel_spi_cleanup(struct spi_device *spi)
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
static int __init atmel_spi_probe(struct platform_device *pdev) static int __devinit atmel_spi_probe(struct platform_device *pdev)
{ {
struct resource *regs; struct resource *regs;
int irq; int irq;
...@@ -1003,7 +1003,7 @@ static int __init atmel_spi_probe(struct platform_device *pdev) ...@@ -1003,7 +1003,7 @@ static int __init atmel_spi_probe(struct platform_device *pdev)
return ret; return ret;
} }
static int __exit atmel_spi_remove(struct platform_device *pdev) static int __devexit atmel_spi_remove(struct platform_device *pdev)
{ {
struct spi_master *master = platform_get_drvdata(pdev); struct spi_master *master = platform_get_drvdata(pdev);
struct atmel_spi *as = spi_master_get_devdata(master); struct atmel_spi *as = spi_master_get_devdata(master);
...@@ -1072,6 +1072,7 @@ static struct platform_driver atmel_spi_driver = { ...@@ -1072,6 +1072,7 @@ static struct platform_driver atmel_spi_driver = {
}, },
.suspend = atmel_spi_suspend, .suspend = atmel_spi_suspend,
.resume = atmel_spi_resume, .resume = atmel_spi_resume,
.probe = atmel_spi_probe,
.remove = __exit_p(atmel_spi_remove), .remove = __exit_p(atmel_spi_remove),
}; };
module_platform_driver(atmel_spi_driver); module_platform_driver(atmel_spi_driver);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment