Merge branch 'origin' into devel-stable
authorRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 8 Mar 2010 20:21:04 +0000 (20:21 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 8 Mar 2010 20:21:04 +0000 (20:21 +0000)
Conflicts:
arch/arm/mach-mx2/devices.c
arch/arm/mach-mx2/devices.h
sound/soc/pxa/pxa-ssp.c

23 files changed:
1  2 
MAINTAINERS
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/mach-mx2/clock_imx21.c
arch/arm/mach-mx2/clock_imx27.c
arch/arm/mach-mx2/devices.c
arch/arm/mach-mx2/devices.h
arch/arm/mach-mx25/clock.c
arch/arm/mach-mx3/clock-imx31.c
arch/arm/mach-mx3/clock-imx35.c
arch/arm/mach-pxa/pxa27x.c
arch/arm/mach-s5pc100/include/mach/vmalloc.h
arch/arm/mach-s5pv210/include/mach/debug-macro.S
arch/arm/plat-mxc/Makefile
arch/arm/plat-mxc/include/mach/debug-macro.S
drivers/Makefile
drivers/mtd/nand/Kconfig
drivers/serial/Kconfig
drivers/serial/imx.c
drivers/sh/intc.c
drivers/usb/gadget/s3c-hsotg.c
sound/soc/pxa/pxa-ssp.c
sound/soc/s3c24xx/s3c64xx-i2s.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index a4b809b82fa31ffcffcda83ddce3bf457d64c571,3956d82b7c4e8a993987dd7a2915ec7f32f8c2d8..b91e412f7b3e96e5b6dc090540212ce1c13b72ea
@@@ -267,41 -377,66 +268,38 @@@ struct platform_device mxc_pwm_device 
        .resource = mxc_pwm_resources,
  };
  
--/*
-- * Resource definition for the MXC SDHC
-- */
 -static struct resource mxc_sdhc1_resources[] = {
 -      {
 -              .start = SDHC1_BASE_ADDR,
 -              .end   = SDHC1_BASE_ADDR + SZ_4K - 1,
 -              .flags = IORESOURCE_MEM,
 -      }, {
 -              .start = MXC_INT_SDHC1,
 -              .end   = MXC_INT_SDHC1,
 -              .flags = IORESOURCE_IRQ,
 -      }, {
 -              .start  = DMA_REQ_SDHC1,
 -              .end    = DMA_REQ_SDHC1,
 -              .flags  = IORESOURCE_DMA,
 -      },
 -};
 -
 -static u64 mxc_sdhc1_dmamask = DMA_BIT_MASK(32);
 -
 -struct platform_device mxc_sdhc_device0 = {
 -      .name           = "mxc-mmc",
 -      .id             = 0,
 -      .dev            = {
 -              .dma_mask = &mxc_sdhc1_dmamask,
 -              .coherent_dma_mask = DMA_BIT_MASK(32),
 -      },
 -      .num_resources  = ARRAY_SIZE(mxc_sdhc1_resources),
 -      .resource       = mxc_sdhc1_resources,
 -};
 -
 -static struct resource mxc_sdhc2_resources[] = {
 -      {
 -              .start = SDHC2_BASE_ADDR,
 -              .end   = SDHC2_BASE_ADDR + SZ_4K - 1,
 -              .flags = IORESOURCE_MEM,
 -      }, {
 -              .start = MXC_INT_SDHC2,
 -              .end   = MXC_INT_SDHC2,
 -              .flags = IORESOURCE_IRQ,
 -      }, {
 -              .start  = DMA_REQ_SDHC2,
 -              .end    = DMA_REQ_SDHC2,
 -              .flags  = IORESOURCE_DMA,
 -      },
 -};
 -
 -static u64 mxc_sdhc2_dmamask = DMA_BIT_MASK(32);
 +#define DEFINE_MXC_MMC_DEVICE(n, baseaddr, irq, dmareq)                       \
 +      static struct resource mxc_sdhc_resources ## n[] = {            \
 +              {                                                       \
 +                      .start = baseaddr,                              \
 +                      .end = baseaddr + SZ_4K - 1,                    \
 +                      .flags = IORESOURCE_MEM,                        \
 +              }, {                                                    \
 +                      .start = irq,                                   \
 +                      .end = irq,                                     \
 +                      .flags = IORESOURCE_IRQ,                        \
 +              }, {                                                    \
 +                      .start = dmareq,                                \
 +                      .end = dmareq,                                  \
 +                      .flags = IORESOURCE_DMA,                        \
 +              },                                                      \
 +      };                                                              \
 +                                                                      \
-       static u64 mxc_sdhc ## n ## _dmamask = 0xffffffffUL;            \
++      static u64 mxc_sdhc ## n ## _dmamask = DMA_BIT_MASK(32);        \
 +                                                                      \
 +      struct platform_device mxc_sdhc_device ## n = {                 \
 +              .name = "mxc-mmc",                                      \
 +              .id = n,                                                \
 +              .dev = {                                                \
 +                      .dma_mask = &mxc_sdhc ## n ## _dmamask,         \
-                       .coherent_dma_mask = 0xffffffff,                \
++                      .coherent_dma_mask = DMA_BIT_MASK(32),          \
 +              },                                                      \
 +              .num_resources = ARRAY_SIZE(mxc_sdhc_resources ## n),   \
 +              .resource = mxc_sdhc_resources ## n,            \
 +      }
  
 -struct platform_device mxc_sdhc_device1 = {
 -      .name           = "mxc-mmc",
 -      .id             = 1,
 -      .dev            = {
 -              .dma_mask = &mxc_sdhc2_dmamask,
 -              .coherent_dma_mask = DMA_BIT_MASK(32),
 -      },
 -      .num_resources  = ARRAY_SIZE(mxc_sdhc2_resources),
 -      .resource       = mxc_sdhc2_resources,
 -};
 +DEFINE_MXC_MMC_DEVICE(0, MX2x_SDHC1_BASE_ADDR, MX2x_INT_SDHC1, MX2x_DMA_REQ_SDHC1);
 +DEFINE_MXC_MMC_DEVICE(1, MX2x_SDHC2_BASE_ADDR, MX2x_INT_SDHC2, MX2x_DMA_REQ_SDHC2);
  
  #ifdef CONFIG_MACH_MX27
  static struct resource otg_resources[] = {
@@@ -469,15 -641,32 +467,42 @@@ DEFINE_MXC_GPIO_PORTS(MX27, imx27)
  
  int __init mxc_register_gpios(void)
  {
 -      return mxc_gpio_init(imx_gpio_ports, ARRAY_SIZE(imx_gpio_ports));
 +#ifdef CONFIG_MACH_MX21
 +      if (cpu_is_mx21())
 +              return mxc_gpio_init(imx21_gpio_ports, ARRAY_SIZE(imx21_gpio_ports));
 +      else
 +#endif
 +#ifdef CONFIG_MACH_MX27
 +      if (cpu_is_mx27())
 +              return mxc_gpio_init(imx27_gpio_ports, ARRAY_SIZE(imx27_gpio_ports));
 +      else
 +#endif
 +              return 0;
  }
 -              .start  = USBOTG_BASE_ADDR,
 -              .end    = USBOTG_BASE_ADDR + 0x1FFF,
+ #ifdef CONFIG_MACH_MX21
+ static struct resource mx21_usbhc_resources[] = {
+       {
 -              .start          = MXC_INT_USBHOST,
 -              .end            = MXC_INT_USBHOST,
++              .start  = MX21_BASE_ADDR,
++              .end    = MX21_BASE_ADDR + 0x1FFF,
+               .flags  = IORESOURCE_MEM,
+       },
+       {
++              .start          = MX21_INT_USBHOST,
++              .end            = MX21_INT_USBHOST,
+               .flags          = IORESOURCE_IRQ,
+       },
+ };
+ struct platform_device mx21_usbhc_device = {
+       .name           = "imx21-hcd",
+       .id             = 0,
+       .dev            = {
+               .dma_mask = &mx21_usbhc_device.dev.coherent_dma_mask,
+               .coherent_dma_mask = DMA_BIT_MASK(32),
+       },
+       .num_resources  = ARRAY_SIZE(mx21_usbhc_resources),
+       .resource       = mx21_usbhc_resources,
+ };
+ #endif
index f15df2aaae4d0e5efe231a21dbf48c8bcb38ab8c,f12694b073692f63869e596f3cc2ccaa0d662811..84ed51380174ebd6cadaef60f19245ede9df7782
@@@ -34,8 -25,7 +34,9 @@@ extern struct platform_device mxc_usbh1
  extern struct platform_device mxc_usbh2;
  extern struct platform_device mxc_spi_device0;
  extern struct platform_device mxc_spi_device1;
 +#ifdef CONFIG_MACH_MX27
  extern struct platform_device mxc_spi_device2;
 +#endif
+ extern struct platform_device mx21_usbhc_device;
  extern struct platform_device imx_ssi_device0;
  extern struct platform_device imx_ssi_device1;
Simple merge
Simple merge
Simple merge
Simple merge
index 61b95158a437b39c5a38691ca1684ce133a28f02,0000000000000000000000000000000000000000..be9df79903ed508e14f994bfcd9ac57fa3e6f237
mode 100644,000000..100644
--- /dev/null
@@@ -1,17 -1,0 +1,17 @@@
- #define VMALLOC_END     (0xE0000000)
 +/* arch/arm/mach-s5pc100/include/mach/vmalloc.h
 + *
 + * Copyright 2010 Ben Dooks <ben-linux@fluff.org>
 + *
 + * 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.
 + *
 + * S3C6400 vmalloc definition
 +*/
 +
 +#ifndef __ASM_ARCH_VMALLOC_H
 +#define __ASM_ARCH_VMALLOC_H
 +
++#define VMALLOC_END     (0xe0000000UL)
 +
 +#endif /* __ASM_ARCH_VMALLOC_H */
index 8aec853310a7661f4e65991a9fc4a486af012122,0000000000000000000000000000000000000000..7872f5c3dfc24271fb1853d8a6e86a7ad79ff051
mode 100644,000000..100644
--- /dev/null
@@@ -1,42 -1,0 +1,42 @@@
-       .macro addruart, rx
 +/* linux/arch/arm/mach-s5pv210/include/mach/debug-macro.S
 + *
 + * Copyright (c) 2010 Samsung Electronics Co., Ltd.
 + *            http://www.samsung.com/
 + *
 + * Based on arch/arm/mach-s3c6400/include/mach/debug-macro.S
 + *
 + * 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.
 +*/
 +
 +/* pull in the relevant register and map files. */
 +
 +#include <mach/map.h>
 +#include <plat/regs-serial.h>
 +
 +      /* note, for the boot process to work we have to keep the UART
 +       * virtual address aligned to an 1MiB boundary for the L1
 +       * mapping the head code makes. We keep the UART virtual address
 +       * aligned and add in the offset when we load the value here.
 +       */
 +
++      .macro addruart, rx, tmp
 +              mrc     p15, 0, \rx, c1, c0
 +              tst     \rx, #1
 +              ldreq   \rx, = S3C_PA_UART
 +              ldrne   \rx, = S3C_VA_UART
 +#if CONFIG_DEBUG_S3C_UART != 0
 +              add     \rx, \rx, #(0x400 * CONFIG_DEBUG_S3C_UART)
 +#endif
 +      .endm
 +
 +#define fifo_full fifo_full_s5pv210
 +#define fifo_level fifo_level_s5pv210
 +
 +/* include the reset of the code which will do the work, we're only
 + * compiling for a single cpu processor type so the default of s3c2440
 + * will be fine with us.
 + */
 +
 +#include <plat/debug-macro.S>
Simple merge
index 133d66bfb533c83559a5452985b2ecdea760bc74,5a6ae1b9e1e8abe4533e6d61de682042c33820df..0b6e11eaeb8ca0b2d64c847810a44fbc96355909
@@@ -60,9 -50,9 +60,9 @@@
  #endif
  #include <mach/mxc91231.h>
  #define UART_PADDR    MXC91231_UART2_BASE_ADDR
 -#define UART_VADDR    MXC91231_AIPS1_IO_ADDRESS(MXC91231_UART2_BASE_ADDR)
 +#define UART_VADDR    MXC91231_IO_ADDRESS(MXC91231_UART2_BASE_ADDR)
  #endif
-               .macro  addruart,rx
+               .macro  addruart, rx, tmp
                mrc     p15, 0, \rx, c1, c0
                tst     \rx, #1                 @ MMU enabled?
                ldreq   \rx, =UART_PADDR        @ physical
Simple merge
Simple merge
Simple merge
Simple merge
index 926013bece1266c6fb079dee31d1eff90fb3cd61,3a5a17db94744d73d1086b0bc3e89ef6bdb62e52..c2750391fd34402efb405e24cd5b0e3d1b4a43c3
@@@ -656,12 -760,8 +760,12 @@@ static void __init intc_register_irq(st
        /* irq should be disabled by default */
        d->chip.mask(irq);
  
-       if (desc->ack_regs)
+       if (desc->hw.ack_regs)
                ack_handle[irq] = intc_ack_data(desc, d, enum_id);
 +
 +#ifdef CONFIG_ARM
 +      set_irq_flags(irq, IRQF_VALID); /* Enable IRQ on ARM systems */
 +#endif
  }
  
  static unsigned int __init save_reg(struct intc_desc_int *d,
Simple merge
index cf00df9c40f433d65a6da07a483c50d647382fe8,e69397f40f72e5306216bf17b6d1f5b3780b5a11..9e95e5117c88f8c6a95cbfe25e60cd66f22c92e2
@@@ -152,39 -133,28 +152,40 @@@ static void pxa_ssp_shutdown(struct snd
  static int pxa_ssp_suspend(struct snd_soc_dai *cpu_dai)
  {
        struct ssp_priv *priv = cpu_dai->private_data;
 +      struct ssp_device *ssp = priv->ssp;
  
        if (!cpu_dai->active)
-               return 0;
 -              clk_enable(priv->dev.ssp->clk);
++              clk_enable(ssp->clk);
  
 -      ssp_save_state(&priv->dev, &priv->state);
 -      clk_disable(priv->dev.ssp->clk);
 +      priv->cr0 = __raw_readl(ssp->mmio_base + SSCR0);
 +      priv->cr1 = __raw_readl(ssp->mmio_base + SSCR1);
 +      priv->to  = __raw_readl(ssp->mmio_base + SSTO);
 +      priv->psp = __raw_readl(ssp->mmio_base + SSPSP);
  
 +      ssp_disable(ssp);
 +      clk_disable(ssp->clk);
        return 0;
  }
  
  static int pxa_ssp_resume(struct snd_soc_dai *cpu_dai)
  {
        struct ssp_priv *priv = cpu_dai->private_data;
-       if (!cpu_dai->active)
-               return 0;
 +      struct ssp_device *ssp = priv->ssp;
 +      uint32_t sssr = SSSR_ROR | SSSR_TUR | SSSR_BCE;
 +
 +      clk_enable(ssp->clk);
  
 -      clk_enable(priv->dev.ssp->clk);
 -      ssp_restore_state(&priv->dev, &priv->state);
 +      __raw_writel(sssr, ssp->mmio_base + SSSR);
 +      __raw_writel(priv->cr0 & ~SSCR0_SSE, ssp->mmio_base + SSCR0);
 +      __raw_writel(priv->cr1, ssp->mmio_base + SSCR1);
 +      __raw_writel(priv->to,  ssp->mmio_base + SSTO);
 +      __raw_writel(priv->psp, ssp->mmio_base + SSPSP);
-       __raw_writel(priv->cr0 | SSCR0_SSE, ssp->mmio_base + SSCR0);
+       if (cpu_dai->active)
 -              ssp_enable(&priv->dev);
++              ssp_enable(ssp);
+       else
 -              clk_disable(priv->dev.ssp->clk);
++              clk_disable(ssp->clk);
        return 0;
  }
  
Simple merge