Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Paul Mundt [Mon, 31 May 2010 04:14:26 +0000 (13:14 +0900)]
1  2 
MAINTAINERS
drivers/dma/Kconfig
drivers/dma/shdma.c
drivers/serial/sh-sci.c
include/video/sh_mobile_lcdc.h

diff --combined MAINTAINERS
@@@ -948,9 -948,8 +948,9 @@@ ARM/SHMOBILE ARM ARCHITECTUR
  M:    Paul Mundt <lethal@linux-sh.org>
  M:    Magnus Damm <magnus.damm@gmail.com>
  L:    linux-sh@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/genesis-2.6.git
  W:    http://oss.renesas.com
 +Q:    http://patchwork.kernel.org/project/linux-sh/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/genesis-2.6.git
  S:    Supported
  F:    arch/arm/mach-shmobile/
  F:    drivers/sh/
@@@ -970,6 -969,18 +970,18 @@@ M:       Wan ZongShun <mcuos.com@gmail.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.mcuos.com
  S:    Maintained
+ F:    arch/arm/mach-w90x900/
+ F:    arch/arm/mach-nuc93x/
+ F:    drivers/input/keyboard/w90p910_keypad.c
+ F:    drivers/input/touchscreen/w90p910_ts.c
+ F:    drivers/watchdog/nuc900_wdt.c
+ F:    drivers/net/arm/w90p910_ether.c
+ F:    drivers/mtd/nand/w90p910_nand.c
+ F:    drivers/rtc/rtc-nuc900.c
+ F:    drivers/spi/spi_nuc900.c
+ F:    drivers/usb/host/ehci-w90x900.c
+ F:    drivers/video/nuc900fb.c
+ F:    drivers/sound/soc/nuc900/
  
  ARM/U300 MACHINE SUPPORT
  M:    Linus Walleij <linus.walleij@stericsson.com>
@@@ -2876,6 -2887,13 +2888,13 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    drivers/input/
  
+ INTEL IDLE DRIVER
+ M:    Len Brown <lenb@kernel.org>
+ L:    linux-pm@lists.linux-foundation.org
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6.git
+ S:    Supported
+ F:    drivers/idle/intel_idle.c
  INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
  M:    Maik Broemme <mbroemme@plusserver.de>
  L:    linux-fbdev@vger.kernel.org
@@@ -4825,6 -4843,9 +4844,9 @@@ W:      http://www.ibm.com/developerworks/li
  S:    Supported
  F:    arch/s390/
  F:    drivers/s390/
+ F:    fs/partitions/ibm.c
+ F:    Documentation/s390/
+ F:    Documentation/DocBook/s390*
  
  S390 NETWORK DRIVERS
  M:    Ursula Braun <ursula.braun@de.ibm.com>
@@@ -4993,6 -5014,12 +5015,12 @@@ L:    linux-mmc@vger.kernel.or
  S:    Maintained
  F:    drivers/mmc/host/sdhci-s3c.c
  
+ SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER
+ M:    Viresh Kumar <viresh.kumar@st.com>
+ L:    linux-mmc@vger.kernel.org
+ S:    Maintained
+ F:    drivers/mmc/host/sdhci-spear.c
  SECURITY SUBSYSTEM
  M:    James Morris <jmorris@namei.org>
  L:    linux-security-module@vger.kernel.org (suggested Cc:)
diff --combined drivers/dma/Kconfig
@@@ -128,7 -128,7 +128,7 @@@ config TXX9_DMA
  
  config SH_DMAE
        tristate "Renesas SuperH DMAC support"
 -      depends on SUPERH && SH_DMA
 +      depends on (SUPERH && SH_DMA) || (ARM && ARCH_SHMOBILE)
        depends on !SH_DMA_API
        select DMA_ENGINE
        help
@@@ -166,6 -166,15 +166,15 @@@ config TIMB_DM
  config ARCH_HAS_ASYNC_TX_FIND_CHANNEL
        bool
  
+ config PL330_DMA
+       tristate "DMA API Driver for PL330"
+       select DMA_ENGINE
+       depends on PL330
+       help
+         Select if your platform has one or more PL330 DMACs.
+         You need to provide platform specific settings via
+         platform_data for a dma-pl330 device.
  config DMA_ENGINE
        bool
  
diff --combined drivers/dma/shdma.c
@@@ -722,6 -722,10 +722,10 @@@ static void sh_dmae_chan_ld_cleanup(str
  {
        while (__ld_cleanup(sh_chan, all))
                ;
+       if (all)
+               /* Terminating - forgive uncompleted cookies */
+               sh_chan->completed_cookie = sh_chan->common.cookie;
  }
  
  static void sh_chan_xfer_ld_queue(struct sh_dmae_chan *sh_chan)
@@@ -812,7 -816,7 +816,7 @@@ static irqreturn_t sh_dmae_interrupt(in
        return ret;
  }
  
 -#if defined(CONFIG_CPU_SH4)
 +#if defined(CONFIG_CPU_SH4) || defined(CONFIG_ARCH_SHMOBILE)
  static irqreturn_t sh_dmae_err(int irq, void *data)
  {
        struct sh_dmae_device *shdev = (struct sh_dmae_device *)data;
@@@ -1053,7 -1057,7 +1057,7 @@@ static int __init sh_dmae_probe(struct 
        /* Default transfer size of 32 bytes requires 32-byte alignment */
        shdev->common.copy_align = LOG2_DEFAULT_XFER_SIZE;
  
 -#if defined(CONFIG_CPU_SH4)
 +#if defined(CONFIG_CPU_SH4) || defined(CONFIG_ARCH_SHMOBILE)
        chanirq_res = platform_get_resource(pdev, IORESOURCE_IRQ, 1);
  
        if (!chanirq_res)
  
  #else
        chanirq_res = errirq_res;
 -#endif /* CONFIG_CPU_SH4 */
 +#endif /* CONFIG_CPU_SH4 || CONFIG_ARCH_SHMOBILE */
  
        if (chanirq_res->start == chanirq_res->end &&
            !platform_get_resource(pdev, IORESOURCE_IRQ, 1)) {
  chan_probe_err:
        sh_dmae_chan_remove(shdev);
  eirqres:
 -#if defined(CONFIG_CPU_SH4)
 +#if defined(CONFIG_CPU_SH4) || defined(CONFIG_ARCH_SHMOBILE)
        free_irq(errirq, shdev);
  eirq_err:
  #endif
@@@ -1188,6 -1192,7 +1192,7 @@@ static struct platform_driver sh_dmae_d
        .remove         = __exit_p(sh_dmae_remove),
        .shutdown       = sh_dmae_shutdown,
        .driver = {
+               .owner  = THIS_MODULE,
                .name   = "sh-dma-engine",
        },
  };
diff --combined drivers/serial/sh-sci.c
@@@ -346,27 -346,6 +346,27 @@@ static int scif_rxfill(struct uart_por
                return sci_in(port, SCFDR) & SCIF2_RFDC_MASK;
        }
  }
 +#elif defined(CONFIG_ARCH_SH7372)
 +static int scif_txfill(struct uart_port *port)
 +{
 +      if (port->type == PORT_SCIFA)
 +              return sci_in(port, SCFDR) >> 8;
 +      else
 +              return sci_in(port, SCTFDR);
 +}
 +
 +static int scif_txroom(struct uart_port *port)
 +{
 +      return port->fifosize - scif_txfill(port);
 +}
 +
 +static int scif_rxfill(struct uart_port *port)
 +{
 +      if (port->type == PORT_SCIFA)
 +              return sci_in(port, SCFDR) & SCIF_RFDC_MASK;
 +      else
 +              return sci_in(port, SCRFDR);
 +}
  #else
  static int scif_txfill(struct uart_port *port)
  {
@@@ -704,7 -683,7 +704,7 @@@ static irqreturn_t sci_rx_interrupt(in
                u16 ssr = sci_in(port, SCxSR);
  
                /* Disable future Rx interrupts */
 -              if (port->type == PORT_SCIFA) {
 +              if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) {
                        disable_irq_nosync(irq);
                        scr |= 0x4000;
                } else {
@@@ -949,7 -928,7 +949,7 @@@ static void sci_dma_tx_complete(void *a
  
        if (!uart_circ_empty(xmit)) {
                schedule_work(&s->work_tx);
 -      } else if (port->type == PORT_SCIFA) {
 +      } else if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) {
                u16 ctrl = sci_in(port, SCSCR);
                sci_out(port, SCSCR, ctrl & ~SCI_CTRL_FLAGS_TIE);
        }
@@@ -1025,8 -1004,9 +1025,9 @@@ static void sci_rx_dma_release(struct s
        s->chan_rx = NULL;
        s->cookie_rx[0] = s->cookie_rx[1] = -EINVAL;
        dma_release_channel(chan);
-       dma_free_coherent(port->dev, s->buf_len_rx * 2,
-                         sg_virt(&s->sg_rx[0]), sg_dma_address(&s->sg_rx[0]));
+       if (sg_dma_address(&s->sg_rx[0]))
+               dma_free_coherent(port->dev, s->buf_len_rx * 2,
+                                 sg_virt(&s->sg_rx[0]), sg_dma_address(&s->sg_rx[0]));
        if (enable_pio)
                sci_start_rx(port);
  }
@@@ -1204,7 -1184,7 +1205,7 @@@ static void sci_start_tx(struct uart_po
        unsigned short ctrl;
  
  #ifdef CONFIG_SERIAL_SH_SCI_DMA
 -      if (port->type == PORT_SCIFA) {
 +      if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) {
                u16 new, scr = sci_in(port, SCSCR);
                if (s->chan_tx)
                        new = scr | 0x8000;
            s->cookie_tx < 0)
                schedule_work(&s->work_tx);
  #endif
 -      if (!s->chan_tx || port->type == PORT_SCIFA) {
 +      if (!s->chan_tx || port->type == PORT_SCIFA || port->type == PORT_SCIFB) {
                /* Set TIE (Transmit Interrupt Enable) bit in SCSCR */
                ctrl = sci_in(port, SCSCR);
                sci_out(port, SCSCR, ctrl | SCI_CTRL_FLAGS_TIE);
@@@ -1230,7 -1210,7 +1231,7 @@@ static void sci_stop_tx(struct uart_por
  
        /* Clear TIE (Transmit Interrupt Enable) bit in SCSCR */
        ctrl = sci_in(port, SCSCR);
 -      if (port->type == PORT_SCIFA)
 +      if (port->type == PORT_SCIFA || port->type == PORT_SCIFB)
                ctrl &= ~0x8000;
        ctrl &= ~SCI_CTRL_FLAGS_TIE;
        sci_out(port, SCSCR, ctrl);
@@@ -1242,7 -1222,7 +1243,7 @@@ static void sci_start_rx(struct uart_po
  
        /* Set RIE (Receive Interrupt Enable) bit in SCSCR */
        ctrl |= sci_in(port, SCSCR);
 -      if (port->type == PORT_SCIFA)
 +      if (port->type == PORT_SCIFA || port->type == PORT_SCIFB)
                ctrl &= ~0x4000;
        sci_out(port, SCSCR, ctrl);
  }
@@@ -1253,7 -1233,7 +1254,7 @@@ static void sci_stop_rx(struct uart_por
  
        /* Clear RIE (Receive Interrupt Enable) bit in SCSCR */
        ctrl = sci_in(port, SCSCR);
 -      if (port->type == PORT_SCIFA)
 +      if (port->type == PORT_SCIFA || port->type == PORT_SCIFB)
                ctrl &= ~0x4000;
        ctrl &= ~(SCI_CTRL_FLAGS_RIE | SCI_CTRL_FLAGS_REIE);
        sci_out(port, SCSCR, ctrl);
@@@ -1291,7 -1271,7 +1292,7 @@@ static void rx_timer_fn(unsigned long a
        struct uart_port *port = &s->port;
        u16 scr = sci_in(port, SCSCR);
  
 -      if (port->type == PORT_SCIFA) {
 +      if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) {
                scr &= ~0x4000;
                enable_irq(s->irqs[1]);
        }
@@@ -1544,8 -1524,6 +1545,8 @@@ static const char *sci_type(struct uart
                return "scif";
        case PORT_SCIFA:
                return "scifa";
 +      case PORT_SCIFB:
 +              return "scifb";
        }
  
        return NULL;
@@@ -1634,9 -1612,6 +1635,9 @@@ static int __devinit sci_init_single(st
        port->line      = index;
  
        switch (p->type) {
 +      case PORT_SCIFB:
 +              port->fifosize = 256;
 +              break;
        case PORT_SCIFA:
                port->fifosize = 64;
                break;
@@@ -3,27 -3,24 +3,27 @@@
  
  #include <linux/fb.h>
  
 -enum { RGB8,   /* 24bpp, 8:8:8 */
 -       RGB9,   /* 18bpp, 9:9 */
 -       RGB12A, /* 24bpp, 12:12 */
 -       RGB12B, /* 12bpp */
 -       RGB16,  /* 16bpp */
 -       RGB18,  /* 18bpp */
 -       RGB24,  /* 24bpp */
 -       SYS8A,  /* 24bpp, 8:8:8 */
 -       SYS8B,  /* 18bpp, 8:8:2 */
 -       SYS8C,  /* 18bpp, 2:8:8 */
 -       SYS8D,  /* 16bpp, 8:8 */
 -       SYS9,   /* 18bpp, 9:9 */
 -       SYS12,  /* 24bpp, 12:12 */
 -       SYS16A, /* 16bpp */
 -       SYS16B, /* 18bpp, 16:2 */
 -       SYS16C, /* 18bpp, 2:16 */
 -       SYS18,  /* 18bpp */
 -       SYS24 };/* 24bpp */
 +enum {
 +      RGB8,   /* 24bpp, 8:8:8 */
 +      RGB9,   /* 18bpp, 9:9 */
 +      RGB12A, /* 24bpp, 12:12 */
 +      RGB12B, /* 12bpp */
 +      RGB16,  /* 16bpp */
 +      RGB18,  /* 18bpp */
 +      RGB24,  /* 24bpp */
 +      YUV422, /* 16bpp */
 +      SYS8A,  /* 24bpp, 8:8:8 */
 +      SYS8B,  /* 18bpp, 8:8:2 */
 +      SYS8C,  /* 18bpp, 2:8:8 */
 +      SYS8D,  /* 16bpp, 8:8 */
 +      SYS9,   /* 18bpp, 9:9 */
 +      SYS12,  /* 24bpp, 12:12 */
 +      SYS16A, /* 16bpp */
 +      SYS16B, /* 18bpp, 16:2 */
 +      SYS16C, /* 18bpp, 2:16 */
 +      SYS18,  /* 18bpp */
 +      SYS24,  /* 24bpp */
 +};
  
  enum { LCDC_CHAN_DISABLED = 0,
         LCDC_CHAN_MAINLCD,
@@@ -37,8 -34,6 +37,6 @@@ enum { LCDC_CLK_BUS, LCDC_CLK_PERIPHERA
  #define LCDC_FLAGS_HSCNT (1 << 3) /* Disable HSYNC during VBLANK */
  #define LCDC_FLAGS_DWCNT (1 << 4) /* Disable dotclock during blanking */
  
- #define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32)
  struct sh_mobile_lcdc_sys_bus_cfg {
        unsigned long ldmt2r;
        unsigned long ldmt3r;