Merge branch 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 15 Jan 2011 20:33:40 +0000 (12:33 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 15 Jan 2011 20:33:40 +0000 (12:33 -0800)
* 'devel-stable' of master.kernel.org:/home/rmk/linux-2.6-arm: (161 commits)
  ARM: pxa: fix building issue of missing physmap.h
  ARM: mmp: PXA910 drive strength FAST using wrong value
  ARM: mmp: MMP2 drive strength FAST using wrong value
  ARM: pxa: fix recursive calls in pxa_low_gpio_chip
  AT91: Support for gsia18s board
  AT91: Acme Systems FOX Board G20 board files
  AT91: board-sam9m10g45ek.c: Remove duplicate inclusion of mach/hardware.h
  ARM: pxa: fix suspend/resume array index miscalculation
  ARM: pxa: use cpu_has_ipr() consistently in irq.c
  ARM: pxa: remove unused variable in clock-pxa3xx.c
  ARM: pxa: fix warning in zeus.c
  ARM: sa1111: fix typo in sa1111_retrigger_lowirq()
  ARM mxs: clkdev related compile fixes
  ARM i.MX mx31_3ds: Fix MC13783 regulator names
  ARM: plat-stmp3xxx: irq_data conversion.
  ARM: plat-spear: irq_data conversion.
  ARM: plat-orion: irq_data conversion.
  ARM: plat-omap: irq_data conversion.
  ARM: plat-nomadik: irq_data conversion.
  ARM: plat-mxc: irq_data conversion.
  ...

Fix up trivial conflict in arch/arm/plat-omap/gpio.c (Lennert
Buytenhek's irq_data conversion clashing with some omap irq updates)

1  2 
arch/arm/Kconfig
arch/arm/common/it8152.c
arch/arm/common/vic.c
arch/arm/mach-mx3/mach-mx31_3ds.c
arch/arm/mach-s3c64xx/dma.c
arch/arm/plat-omap/gpio.c
arch/arm/plat-s3c24xx/devs.c
arch/arm/plat-samsung/Makefile
arch/arm/plat-samsung/include/plat/devs.h
arch/arm/plat-samsung/pm.c

diff --combined arch/arm/Kconfig
@@@ -26,6 -26,8 +26,8 @@@ config AR
        select HAVE_REGS_AND_STACK_ACCESS_API
        select HAVE_HW_BREAKPOINT if (PERF_EVENTS && (CPU_V6 || CPU_V7))
        select HAVE_C_RECORDMCOUNT
+       select HAVE_GENERIC_HARDIRQS
+       select HAVE_SPARSE_IRQ
        help
          The ARM series is a line of low-power-consumption RISC chip designs
          licensed by ARM Ltd and targeted at embedded applications and
@@@ -97,10 -99,6 +99,6 @@@ config MC
          <file:Documentation/mca.txt> (and especially the web page given
          there) before attempting to build an MCA bus kernel.
  
- config GENERIC_HARDIRQS
-       bool
-       default y
  config STACKTRACE_SUPPORT
        bool
        default y
@@@ -180,9 -178,6 +178,6 @@@ config FI
  config ARCH_MTD_XIP
        bool
  
- config GENERIC_HARDIRQS_NO__DO_IRQ
-       def_bool y
  config ARM_L1_CACHE_SHIFT_6
        bool
        help
@@@ -368,7 -363,7 +363,7 @@@ config ARCH_MX
        bool "Freescale MXS-based"
        select GENERIC_CLOCKEVENTS
        select ARCH_REQUIRE_GPIOLIB
-       select COMMON_CLKDEV
+       select CLKDEV_LOOKUP
        help
          Support for Freescale MXS-based family of processors
  
@@@ -771,6 -766,7 +766,7 @@@ config ARCH_S5PV31
        select ARCH_SPARSEMEM_ENABLE
        select GENERIC_GPIO
        select HAVE_CLK
+       select ARCH_HAS_CPUFREQ
        select GENERIC_CLOCKEVENTS
        select HAVE_S3C_RTC if RTC_CLASS
        select HAVE_S3C2410_I2C if I2C
@@@ -1281,7 -1277,7 +1277,7 @@@ config SM
  config SMP_ON_UP
        bool "Allow booting SMP kernel on uniprocessor systems (EXPERIMENTAL)"
        depends on EXPERIMENTAL
 -      depends on SMP && !XIP
 +      depends on SMP && !XIP_KERNEL
        default y
        help
          SMP kernels contain instructions which fail on non-SMP processors.
@@@ -1452,15 -1448,6 +1448,6 @@@ config HW_PERF_EVENT
          Enable hardware performance counter support for perf events. If
          disabled, perf events will use software events only.
  
- config SPARSE_IRQ
-       def_bool n
-       help
-         This enables support for sparse irqs. This is useful in general
-         as most CPUs have a fairly sparse array of IRQ vectors, which
-         the irq_desc then maps directly on to. Systems with a high
-         number of off-chip IRQs will want to treat this as
-         experimental until they have been independently verified.
  source "mm/Kconfig"
  
  config FORCE_MAX_ZONEORDER
diff --combined arch/arm/common/it8152.c
  
  #define MAX_SLOTS             21
  
- static void it8152_mask_irq(unsigned int irq)
+ static void it8152_mask_irq(struct irq_data *d)
  {
+       unsigned int irq = d->irq;
         if (irq >= IT8152_LD_IRQ(0)) {
               __raw_writel((__raw_readl(IT8152_INTC_LDCNIMR) |
                            (1 << (irq - IT8152_LD_IRQ(0)))),
         }
  }
  
- static void it8152_unmask_irq(unsigned int irq)
+ static void it8152_unmask_irq(struct irq_data *d)
  {
+       unsigned int irq = d->irq;
         if (irq >= IT8152_LD_IRQ(0)) {
               __raw_writel((__raw_readl(IT8152_INTC_LDCNIMR) &
                             ~(1 << (irq - IT8152_LD_IRQ(0)))),
@@@ -67,9 -71,9 +71,9 @@@
  
  static struct irq_chip it8152_irq_chip = {
        .name           = "it8152",
-       .ack            = it8152_mask_irq,
-       .mask           = it8152_mask_irq,
-       .unmask         = it8152_unmask_irq,
+       .irq_ack        = it8152_mask_irq,
+       .irq_mask       = it8152_mask_irq,
+       .irq_unmask     = it8152_unmask_irq,
  };
  
  void it8152_init_irq(void)
@@@ -236,7 -240,7 +240,7 @@@ static struct resource it8152_mem = 
  
  /*
   * The following functions are needed for DMA bouncing.
 - * ITE8152 chip can addrees up to 64MByte, so all the devices
 + * ITE8152 chip can address up to 64MByte, so all the devices
   * connected to ITE8152 (PCI and USB) should have limited DMA window
   */
  
diff --combined arch/arm/common/vic.c
@@@ -70,7 -70,7 +70,7 @@@ static inline struct vic_device *to_vic
   * vic_init2 - common initialisation code
   * @base: Base of the VIC.
   *
 - * Common initialisation code for registeration
 + * Common initialisation code for registration
   * and resume.
  */
  static void vic_init2(void __iomem *base)
@@@ -204,26 -204,26 +204,26 @@@ static void __init vic_pm_register(voi
  static inline void vic_pm_register(void __iomem *base, unsigned int irq, u32 arg1) { }
  #endif /* CONFIG_PM */
  
- static void vic_ack_irq(unsigned int irq)
+ static void vic_ack_irq(struct irq_data *d)
  {
-       void __iomem *base = get_irq_chip_data(irq);
-       irq &= 31;
+       void __iomem *base = irq_data_get_irq_chip_data(d);
+       unsigned int irq = d->irq & 31;
        writel(1 << irq, base + VIC_INT_ENABLE_CLEAR);
        /* moreover, clear the soft-triggered, in case it was the reason */
        writel(1 << irq, base + VIC_INT_SOFT_CLEAR);
  }
  
- static void vic_mask_irq(unsigned int irq)
+ static void vic_mask_irq(struct irq_data *d)
  {
-       void __iomem *base = get_irq_chip_data(irq);
-       irq &= 31;
+       void __iomem *base = irq_data_get_irq_chip_data(d);
+       unsigned int irq = d->irq & 31;
        writel(1 << irq, base + VIC_INT_ENABLE_CLEAR);
  }
  
- static void vic_unmask_irq(unsigned int irq)
+ static void vic_unmask_irq(struct irq_data *d)
  {
-       void __iomem *base = get_irq_chip_data(irq);
-       irq &= 31;
+       void __iomem *base = irq_data_get_irq_chip_data(d);
+       unsigned int irq = d->irq & 31;
        writel(1 << irq, base + VIC_INT_ENABLE);
  }
  
@@@ -242,10 -242,10 +242,10 @@@ static struct vic_device *vic_from_irq(
        return NULL;
  }
  
- static int vic_set_wake(unsigned int irq, unsigned int on)
+ static int vic_set_wake(struct irq_data *d, unsigned int on)
  {
-       struct vic_device *v = vic_from_irq(irq);
-       unsigned int off = irq & 31;
+       struct vic_device *v = vic_from_irq(d->irq);
+       unsigned int off = d->irq & 31;
        u32 bit = 1 << off;
  
        if (!v)
  
  static struct irq_chip vic_chip = {
        .name           = "VIC",
-       .ack            = vic_ack_irq,
-       .mask           = vic_mask_irq,
-       .unmask         = vic_unmask_irq,
-       .set_wake       = vic_set_wake,
+       .irq_ack        = vic_ack_irq,
+       .irq_mask       = vic_mask_irq,
+       .irq_unmask     = vic_unmask_irq,
+       .irq_set_wake   = vic_set_wake,
  };
  
  static void __init vic_disable(void __iomem *base)
@@@ -140,17 -140,17 +140,17 @@@ static struct regulator_init_data gpo_i
  
  static struct mc13783_regulator_init_data mx31_3ds_regulators[] = {
        {
 -              .id = MC13783_REGU_PWGT1SPI, /* Power Gate for ARM core. */
 +              .id = MC13783_REG_PWGT1SPI, /* Power Gate for ARM core. */
                .init_data = &pwgtx_init,
        }, {
 -              .id = MC13783_REGU_PWGT2SPI, /* Power Gate for L2 Cache. */
 +              .id = MC13783_REG_PWGT2SPI, /* Power Gate for L2 Cache. */
                .init_data = &pwgtx_init,
        }, {
  
-               .id = MC13783_REGU_GPO1, /* Turn on 1.8V */
+               .id = MC13783_REG_GPO1, /* Turn on 1.8V */
                .init_data = &gpo_init,
        }, {
-               .id = MC13783_REGU_GPO3, /* Turn on 3.3V */
+               .id = MC13783_REG_GPO3, /* Turn on 3.3V */
                .init_data = &gpo_init,
        },
  };
@@@ -212,6 -212,7 +212,7 @@@ static int s3c64xx_dma_start(struct s3c
  
        config = readl(chan->regs + PL080S_CH_CONFIG);
        config |= PL080_CONFIG_ENABLE;
+       config &= ~PL080_CONFIG_HALT;
  
        pr_debug("%s: writing config %08x\n", __func__, config);
        writel(config, chan->regs + PL080S_CH_CONFIG);
@@@ -740,7 -741,7 +741,7 @@@ static int __init s3c64xx_dma_init(void
        /* Set all DMA configuration to be DMA, not SDMA */
        writel(0xffffff, S3C_SYSREG(0x110));
  
 -      /* Register standard DMA controlers */
 +      /* Register standard DMA controllers */
        s3c64xx_dma_init1(0, DMACH_UART0, IRQ_DMA0, 0x75000000);
        s3c64xx_dma_init1(8, DMACH_PCM1_TX, IRQ_DMA1, 0x75100000);
  
@@@ -718,7 -718,7 +718,7 @@@ static int _set_gpio_triggering(struct 
        case METHOD_GPIO_24XX:
        case METHOD_GPIO_44XX:
                set_24xx_gpio_triggering(bank, gpio, trigger);
 -              break;
 +              return 0;
  #endif
        default:
                goto bad;
@@@ -729,17 -729,17 +729,17 @@@ bad
        return -EINVAL;
  }
  
- static int gpio_irq_type(unsigned irq, unsigned type)
+ static int gpio_irq_type(struct irq_data *d, unsigned type)
  {
        struct gpio_bank *bank;
        unsigned gpio;
        int retval;
        unsigned long flags;
  
-       if (!cpu_class_is_omap2() && irq > IH_MPUIO_BASE)
-               gpio = OMAP_MPUIO(irq - IH_MPUIO_BASE);
+       if (!cpu_class_is_omap2() && d->irq > IH_MPUIO_BASE)
+               gpio = OMAP_MPUIO(d->irq - IH_MPUIO_BASE);
        else
-               gpio = irq - IH_GPIO_BASE;
+               gpio = d->irq - IH_GPIO_BASE;
  
        if (check_gpio(gpio) < 0)
                return -EINVAL;
                        && (type & (IRQ_TYPE_LEVEL_LOW|IRQ_TYPE_LEVEL_HIGH)))
                return -EINVAL;
  
-       bank = get_irq_chip_data(irq);
+       bank = irq_data_get_irq_chip_data(d);
        spin_lock_irqsave(&bank->lock, flags);
        retval = _set_gpio_triggering(bank, get_gpio_index(gpio), type);
        if (retval == 0) {
-               struct irq_desc *d = irq_to_desc(irq);
 -              irq_desc[d->irq].status &= ~IRQ_TYPE_SENSE_MASK;
 -              irq_desc[d->irq].status |= type;
++              struct irq_desc *desc = irq_to_desc(d->irq);
 +
-               d->status &= ~IRQ_TYPE_SENSE_MASK;
-               d->status |= type;
++              desc->status &= ~IRQ_TYPE_SENSE_MASK;
++              desc->status |= type;
        }
        spin_unlock_irqrestore(&bank->lock, flags);
  
        if (type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH))
-               __set_irq_handler_unlocked(irq, handle_level_irq);
+               __set_irq_handler_unlocked(d->irq, handle_level_irq);
        else if (type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING))
-               __set_irq_handler_unlocked(irq, handle_edge_irq);
+               __set_irq_handler_unlocked(d->irq, handle_edge_irq);
  
        return retval;
  }
@@@ -1023,15 -1021,15 +1023,15 @@@ static void _reset_gpio(struct gpio_ban
  }
  
  /* Use disable_irq_wake() and enable_irq_wake() functions from drivers */
- static int gpio_wake_enable(unsigned int irq, unsigned int enable)
+ static int gpio_wake_enable(struct irq_data *d, unsigned int enable)
  {
-       unsigned int gpio = irq - IH_GPIO_BASE;
+       unsigned int gpio = d->irq - IH_GPIO_BASE;
        struct gpio_bank *bank;
        int retval;
  
        if (check_gpio(gpio) < 0)
                return -ENODEV;
-       bank = get_irq_chip_data(irq);
+       bank = irq_data_get_irq_chip_data(d);
        retval = _set_gpio_wakeup(bank, get_gpio_index(gpio), enable);
  
        return retval;
@@@ -1144,7 -1142,7 +1144,7 @@@ static void gpio_irq_handler(unsigned i
        u32 retrigger = 0;
        int unmasked = 0;
  
-       desc->chip->ack(irq);
+       desc->irq_data.chip->irq_ack(&desc->irq_data);
  
        bank = get_irq_data(irq);
  #ifdef CONFIG_ARCH_OMAP1
                configured, we could unmask GPIO bank interrupt immediately */
                if (!level_mask && !unmasked) {
                        unmasked = 1;
-                       desc->chip->unmask(irq);
+                       desc->irq_data.chip->irq_unmask(&desc->irq_data);
                }
  
                isr |= retrigger;
        interrupt */
  exit:
        if (!unmasked)
-               desc->chip->unmask(irq);
+               desc->irq_data.chip->irq_unmask(&desc->irq_data);
  }
  
- static void gpio_irq_shutdown(unsigned int irq)
+ static void gpio_irq_shutdown(struct irq_data *d)
  {
-       unsigned int gpio = irq - IH_GPIO_BASE;
-       struct gpio_bank *bank = get_irq_chip_data(irq);
+       unsigned int gpio = d->irq - IH_GPIO_BASE;
+       struct gpio_bank *bank = irq_data_get_irq_chip_data(d);
  
        _reset_gpio(bank, gpio);
  }
  
- static void gpio_ack_irq(unsigned int irq)
+ static void gpio_ack_irq(struct irq_data *d)
  {
-       unsigned int gpio = irq - IH_GPIO_BASE;
-       struct gpio_bank *bank = get_irq_chip_data(irq);
+       unsigned int gpio = d->irq - IH_GPIO_BASE;
+       struct gpio_bank *bank = irq_data_get_irq_chip_data(d);
  
        _clear_gpio_irqstatus(bank, gpio);
  }
  
- static void gpio_mask_irq(unsigned int irq)
+ static void gpio_mask_irq(struct irq_data *d)
  {
-       unsigned int gpio = irq - IH_GPIO_BASE;
-       struct gpio_bank *bank = get_irq_chip_data(irq);
+       unsigned int gpio = d->irq - IH_GPIO_BASE;
+       struct gpio_bank *bank = irq_data_get_irq_chip_data(d);
  
        _set_gpio_irqenable(bank, gpio, 0);
        _set_gpio_triggering(bank, get_gpio_index(gpio), IRQ_TYPE_NONE);
  }
  
- static void gpio_unmask_irq(unsigned int irq)
+ static void gpio_unmask_irq(struct irq_data *d)
  {
-       unsigned int gpio = irq - IH_GPIO_BASE;
-       struct gpio_bank *bank = get_irq_chip_data(irq);
+       unsigned int gpio = d->irq - IH_GPIO_BASE;
+       struct gpio_bank *bank = irq_data_get_irq_chip_data(d);
        unsigned int irq_mask = 1 << get_gpio_index(gpio);
-       struct irq_desc *desc = irq_to_desc(irq);
+       struct irq_desc *desc = irq_to_desc(d->irq);
        u32 trigger = desc->status & IRQ_TYPE_SENSE_MASK;
  
        if (trigger)
  
  static struct irq_chip gpio_irq_chip = {
        .name           = "GPIO",
-       .shutdown       = gpio_irq_shutdown,
-       .ack            = gpio_ack_irq,
-       .mask           = gpio_mask_irq,
-       .unmask         = gpio_unmask_irq,
-       .set_type       = gpio_irq_type,
-       .set_wake       = gpio_wake_enable,
+       .irq_shutdown   = gpio_irq_shutdown,
+       .irq_ack        = gpio_ack_irq,
+       .irq_mask       = gpio_mask_irq,
+       .irq_unmask     = gpio_unmask_irq,
+       .irq_set_type   = gpio_irq_type,
+       .irq_set_wake   = gpio_wake_enable,
  };
  
  /*---------------------------------------------------------------------*/
  
  /* MPUIO uses the always-on 32k clock */
  
- static void mpuio_ack_irq(unsigned int irq)
+ static void mpuio_ack_irq(struct irq_data *d)
  {
        /* The ISR is reset automatically, so do nothing here. */
  }
  
- static void mpuio_mask_irq(unsigned int irq)
+ static void mpuio_mask_irq(struct irq_data *d)
  {
-       unsigned int gpio = OMAP_MPUIO(irq - IH_MPUIO_BASE);
-       struct gpio_bank *bank = get_irq_chip_data(irq);
+       unsigned int gpio = OMAP_MPUIO(d->irq - IH_MPUIO_BASE);
+       struct gpio_bank *bank = irq_data_get_irq_chip_data(d);
  
        _set_gpio_irqenable(bank, gpio, 0);
  }
  
- static void mpuio_unmask_irq(unsigned int irq)
+ static void mpuio_unmask_irq(struct irq_data *d)
  {
-       unsigned int gpio = OMAP_MPUIO(irq - IH_MPUIO_BASE);
-       struct gpio_bank *bank = get_irq_chip_data(irq);
+       unsigned int gpio = OMAP_MPUIO(d->irq - IH_MPUIO_BASE);
+       struct gpio_bank *bank = irq_data_get_irq_chip_data(d);
  
        _set_gpio_irqenable(bank, gpio, 1);
  }
  
  static struct irq_chip mpuio_irq_chip = {
        .name           = "MPUIO",
-       .ack            = mpuio_ack_irq,
-       .mask           = mpuio_mask_irq,
-       .unmask         = mpuio_unmask_irq,
-       .set_type       = gpio_irq_type,
+       .irq_ack        = mpuio_ack_irq,
+       .irq_mask       = mpuio_mask_irq,
+       .irq_unmask     = mpuio_unmask_irq,
+       .irq_set_type   = gpio_irq_type,
  #ifdef CONFIG_ARCH_OMAP16XX
        /* REVISIT: assuming only 16xx supports MPUIO wake events */
-       .set_wake       = gpio_wake_enable,
+       .irq_set_wake   = gpio_wake_enable,
  #endif
  };
  
@@@ -1673,9 -1670,7 +1672,9 @@@ static void __init omap_gpio_chip_init(
  
        for (j = bank->virtual_irq_start;
                     j < bank->virtual_irq_start + bank_width; j++) {
 -              lockdep_set_class(&irq_desc[j].lock, &gpio_lock_class);
 +              struct irq_desc *d = irq_to_desc(j);
 +
 +              lockdep_set_class(&d->lock, &gpio_lock_class);
                set_irq_chip_data(j, bank);
                if (bank_is_mpuio(bank))
                        set_irq_chip(j, &mpuio_irq_chip);
@@@ -194,7 -194,6 +194,6 @@@ void __init s3c24xx_ts_set_platdata(str
        memcpy(&s3c2410ts_info, hard_s3c2410ts_info, sizeof(struct s3c2410_ts_mach_info));
        s3c_device_ts.dev.platform_data = &s3c2410ts_info;
  }
- EXPORT_SYMBOL(s3c24xx_ts_set_platdata);
  
  /* USB Device (Gadget)*/
  
@@@ -259,6 -258,21 +258,6 @@@ struct platform_device s3c_device_iis 
  
  EXPORT_SYMBOL(s3c_device_iis);
  
 -/* ASoC PCM DMA */
 -
 -static u64 s3c_device_audio_dmamask = 0xffffffffUL;
 -
 -struct platform_device s3c_device_pcm = {
 -      .name             = "s3c24xx-pcm-audio",
 -      .id               = -1,
 -      .dev              = {
 -              .dma_mask = &s3c_device_audio_dmamask,
 -              .coherent_dma_mask = 0xffffffffUL
 -      }
 -};
 -
 -EXPORT_SYMBOL(s3c_device_pcm);
 -
  /* RTC */
  
  static struct resource s3c_rtc_resource[] = {
@@@ -481,10 -495,8 +480,10 @@@ static struct resource s3c_ac97_resourc
        },
  };
  
 +static u64 s3c_device_audio_dmamask = 0xffffffffUL;
 +
  struct platform_device s3c_device_ac97 = {
 -      .name             = "s3c-ac97",
 +      .name             = "samsung-ac97",
        .id               = -1,
        .num_resources    = ARRAY_SIZE(s3c_ac97_resource),
        .resource         = s3c_ac97_resource,
@@@ -17,7 -17,6 +17,7 @@@ obj-y                         += clock.
  obj-y                         += pwm-clock.o
  obj-y                         += gpio.o
  obj-y                         += gpio-config.o
 +obj-y                         += dev-asocdma.o
  
  obj-$(CONFIG_SAMSUNG_GPIOLIB_4BIT)    += gpiolib.o
  obj-$(CONFIG_SAMSUNG_CLKSRC)  += clock-clksrc.o
@@@ -74,6 -73,10 +74,10 @@@ obj-$(CONFIG_SAMSUNG_PM_CHECK)      += pm-ch
  
  obj-$(CONFIG_SAMSUNG_WAKEMASK)        += wakeup-mask.o
  
+ # PD support
+ obj-$(CONFIG_SAMSUNG_PD)      += pd.o
  # PWM support
  
  obj-$(CONFIG_HAVE_PWM)                += pwm.o
@@@ -32,7 -32,7 +32,7 @@@ extern struct platform_device s3c64xx_d
  extern struct platform_device s3c64xx_device_spi0;
  extern struct platform_device s3c64xx_device_spi1;
  
 -extern struct platform_device s3c_device_pcm;
 +extern struct platform_device samsung_asoc_dma;
  
  extern struct platform_device s3c64xx_device_pcm0;
  extern struct platform_device s3c64xx_device_pcm1;
@@@ -104,6 -104,7 +104,7 @@@ extern struct platform_device s5pv310_d
  extern struct platform_device s5pv310_device_i2s1;
  extern struct platform_device s5pv310_device_i2s2;
  extern struct platform_device s5pv310_device_spdif;
+ extern struct platform_device s5pv310_device_pd[];
  
  extern struct platform_device s5p6442_device_pcm0;
  extern struct platform_device s5p6442_device_pcm1;
@@@ -115,6 -116,8 +116,8 @@@ extern struct platform_device s5p6440_d
  extern struct platform_device s5p6440_device_iis;
  
  extern struct platform_device s5p6450_device_iis0;
+ extern struct platform_device s5p6450_device_iis1;
+ extern struct platform_device s5p6450_device_iis2;
  extern struct platform_device s5p6450_device_pcm0;
  
  extern struct platform_device s5pc100_device_ac97;
@@@ -131,6 -134,11 +134,11 @@@ extern struct platform_device s5p_devic
  extern struct platform_device s5p_device_fimc1;
  extern struct platform_device s5p_device_fimc2;
  
+ extern struct platform_device s5p_device_mipi_csis0;
+ extern struct platform_device s5p_device_mipi_csis1;
+ extern struct platform_device s5pv310_device_sysmmu;
  /* s3c2440 specific devices */
  
  #ifdef CONFIG_CPU_S3C2440
@@@ -136,15 -136,15 +136,15 @@@ static void s3c_pm_restore_uarts(void) 
  unsigned long s3c_irqwake_intmask     = 0xffffffffL;
  unsigned long s3c_irqwake_eintmask    = 0xffffffffL;
  
- int s3c_irqext_wake(unsigned int irqno, unsigned int state)
+ int s3c_irqext_wake(struct irq_data *data, unsigned int state)
  {
-       unsigned long bit = 1L << IRQ_EINT_BIT(irqno);
+       unsigned long bit = 1L << IRQ_EINT_BIT(data->irq);
  
        if (!(s3c_irqwake_eintallow & bit))
                return -ENOENT;
  
        printk(KERN_INFO "wake %s for irq %d\n",
-              state ? "enabled" : "disabled", irqno);
+              state ? "enabled" : "disabled", data->irq);
  
        if (!state)
                s3c_irqwake_eintmask |= bit;
@@@ -355,7 -355,7 +355,7 @@@ static void s3c_pm_finish(void
        s3c_pm_check_cleanup();
  }
  
 -static struct platform_suspend_ops s3c_pm_ops = {
 +static const struct platform_suspend_ops s3c_pm_ops = {
        .enter          = s3c_pm_enter,
        .prepare        = s3c_pm_prepare,
        .finish         = s3c_pm_finish,