]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge 3.6-rc6 into tty-next
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 17 Sep 2012 00:31:36 +0000 (17:31 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 17 Sep 2012 00:31:36 +0000 (17:31 -0700)
This pulls in the fixes in 3.6-rc6

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1  2 
arch/arm/mach-ux500/board-mop500.c
drivers/tty/serial/imx.c
drivers/usb/gadget/u_serial.c
drivers/usb/serial/ftdi_sio.c

index f216c302beb6c7ada9abd552767a3599310ecda7,a534d8880de12e2a92b0c7a35ec1ebdc3034c44e..1d2e3c6f8b5911a0cc2d6c59602559bca823c75f
@@@ -524,12 -524,33 +524,12 @@@ static struct stedma40_chan_cfg uart2_d
  };
  #endif
  
 -#define PRCC_K_SOFTRST_SET      0x18
 -#define PRCC_K_SOFTRST_CLEAR    0x1C
 -static void ux500_uart0_reset(void)
 -{
 -      void __iomem *prcc_rst_set, *prcc_rst_clr;
 -
 -      prcc_rst_set = (void __iomem *)IO_ADDRESS(U8500_CLKRST1_BASE +
 -                      PRCC_K_SOFTRST_SET);
 -      prcc_rst_clr = (void __iomem *)IO_ADDRESS(U8500_CLKRST1_BASE +
 -                      PRCC_K_SOFTRST_CLEAR);
 -
 -      /* Activate soft reset PRCC_K_SOFTRST_CLEAR */
 -      writel((readl(prcc_rst_clr) | 0x1), prcc_rst_clr);
 -      udelay(1);
 -
 -      /* Release soft reset PRCC_K_SOFTRST_SET */
 -      writel((readl(prcc_rst_set) | 0x1), prcc_rst_set);
 -      udelay(1);
 -}
 -
  static struct amba_pl011_data uart0_plat = {
  #ifdef CONFIG_STE_DMA40
        .dma_filter = stedma40_filter,
        .dma_rx_param = &uart0_dma_cfg_rx,
        .dma_tx_param = &uart0_dma_cfg_tx,
  #endif
 -      .reset = ux500_uart0_reset,
  };
  
  static struct amba_pl011_data uart1_plat = {
@@@ -776,6 -797,7 +776,7 @@@ static void __init u8500_init_machine(v
                                ARRAY_SIZE(mop500_platform_devs));
  
                mop500_sdi_init(parent);
+               mop500_msp_init(parent);
                i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
                i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
                i2c_register_board_info(2, mop500_i2c2_devices,
  
                mop500_uib_init();
  
+       } else if (of_machine_is_compatible("calaosystems,snowball-a9500")) {
+               mop500_msp_init(parent);
        } else if (of_machine_is_compatible("st-ericsson,hrefv60+")) {
                /*
                 * The HREFv60 board removed a GPIO expander and routed
                                ARRAY_SIZE(mop500_platform_devs));
  
                hrefv60_sdi_init(parent);
+               mop500_msp_init(parent);
  
                i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
                i2c0_devs -= NUM_PRE_V60_I2C0_DEVICES;
diff --combined drivers/tty/serial/imx.c
index 72ec56e6d42f571d8b5e117033cfa87c9d66d397,e309e8b0aaba0c10f0e45d72c57480000ed43d6b..5952b25c288e01355ab6f4d622796e8a9cbdb98b
  #define  UCR4_OREN     (1<<1)  /* Receiver overrun interrupt enable */
  #define  UCR4_DREN     (1<<0)  /* Recv data ready interrupt enable */
  #define  UFCR_RXTL_SHF   0       /* Receiver trigger level shift */
+ #define  UFCR_DCEDTE   (1<<6)  /* DCE/DTE mode select */
  #define  UFCR_RFDIV      (7<<7)  /* Reference freq divider mask */
  #define  UFCR_RFDIV_REG(x)    (((x) < 7 ? 6 - (x) : 6) << 7)
  #define  UFCR_TXTL_SHF   10      /* Transmitter trigger level shift */
@@@ -206,7 -207,7 +207,7 @@@ struct imx_port 
        unsigned short          trcv_delay; /* transceiver delay */
        struct clk              *clk_ipg;
        struct clk              *clk_per;
 -      struct imx_uart_data    *devdata;
 +      const struct imx_uart_data *devdata;
  };
  
  struct imx_port_ucrs {
@@@ -667,22 -668,11 +668,11 @@@ static void imx_break_ctl(struct uart_p
  static int imx_setup_ufcr(struct imx_port *sport, unsigned int mode)
  {
        unsigned int val;
-       unsigned int ufcr_rfdiv;
-       /* set receiver / transmitter trigger level.
-        * RFDIV is set such way to satisfy requested uartclk value
-        */
-       val = TXTL << 10 | RXTL;
-       ufcr_rfdiv = (clk_get_rate(sport->clk_per) + sport->port.uartclk / 2)
-                       / sport->port.uartclk;
-       if(!ufcr_rfdiv)
-               ufcr_rfdiv = 1;
-       val |= UFCR_RFDIV_REG(ufcr_rfdiv);
  
+       /* set receiver / transmitter trigger level */
+       val = readl(sport->port.membase + UFCR) & (UFCR_RFDIV | UFCR_DCEDTE);
+       val |= TXTL << UFCR_TXTL_SHF | RXTL;
        writel(val, sport->port.membase + UFCR);
        return 0;
  }
  
@@@ -754,6 -744,7 +744,7 @@@ static int imx_startup(struct uart_por
                }
        }
  
+       spin_lock_irqsave(&sport->port.lock, flags);
        /*
         * Finally, clear and enable interrupts
         */
        /*
         * Enable modem status interrupts
         */
-       spin_lock_irqsave(&sport->port.lock,flags);
        imx_enable_ms(&sport->port);
        spin_unlock_irqrestore(&sport->port.lock,flags);
  
@@@ -837,10 -827,13 +827,13 @@@ static void imx_shutdown(struct uart_po
  {
        struct imx_port *sport = (struct imx_port *)port;
        unsigned long temp;
+       unsigned long flags;
  
+       spin_lock_irqsave(&sport->port.lock, flags);
        temp = readl(sport->port.membase + UCR2);
        temp &= ~(UCR2_TXEN);
        writel(temp, sport->port.membase + UCR2);
+       spin_unlock_irqrestore(&sport->port.lock, flags);
  
        if (USE_IRDA(sport)) {
                struct imxuart_platform_data *pdata;
         * Disable all interrupts, port and break condition.
         */
  
+       spin_lock_irqsave(&sport->port.lock, flags);
        temp = readl(sport->port.membase + UCR1);
        temp &= ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN | UCR1_UARTEN);
        if (USE_IRDA(sport))
                temp &= ~(UCR1_IREN);
  
        writel(temp, sport->port.membase + UCR1);
+       spin_unlock_irqrestore(&sport->port.lock, flags);
  }
  
  static void
@@@ -1217,6 -1212,9 +1212,9 @@@ imx_console_write(struct console *co, c
        struct imx_port *sport = imx_ports[co->index];
        struct imx_port_ucrs old_ucr;
        unsigned int ucr1;
+       unsigned long flags;
+       spin_lock_irqsave(&sport->port.lock, flags);
  
        /*
         *      First, save UCR1/2/3 and then disable interrupts
        while (!(readl(sport->port.membase + USR2) & USR2_TXDC));
  
        imx_port_ucrs_restore(&sport->port, &old_ucr);
+       spin_unlock_irqrestore(&sport->port.lock, flags);
  }
  
  /*
@@@ -1505,21 -1505,18 +1505,21 @@@ static int serial_imx_probe(struct plat
        pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
        if (IS_ERR(pinctrl)) {
                ret = PTR_ERR(pinctrl);
 +              dev_err(&pdev->dev, "failed to get default pinctrl: %d\n", ret);
                goto unmap;
        }
  
        sport->clk_ipg = devm_clk_get(&pdev->dev, "ipg");
        if (IS_ERR(sport->clk_ipg)) {
                ret = PTR_ERR(sport->clk_ipg);
 +              dev_err(&pdev->dev, "failed to get ipg clk: %d\n", ret);
                goto unmap;
        }
  
        sport->clk_per = devm_clk_get(&pdev->dev, "per");
        if (IS_ERR(sport->clk_per)) {
                ret = PTR_ERR(sport->clk_per);
 +              dev_err(&pdev->dev, "failed to get per clk: %d\n", ret);
                goto unmap;
        }
  
index 2b5534c2ab8446bbb69b92ffe36c0c80b32ee77c,da6d479ff9a61e5f57950be3b78e052a029eaa32..f1739526820fdfceb3cd0749fa2047cff220605b
@@@ -132,11 -132,15 +132,15 @@@ static unsigned n_ports
  
  
  #ifdef VERBOSE_DEBUG
+ #ifndef pr_vdebug
  #define pr_vdebug(fmt, arg...) \
        pr_debug(fmt, ##arg)
+ #endif /* pr_vdebug */
  #else
+ #ifndef pr_vdebig
  #define pr_vdebug(fmt, arg...) \
        ({ if (0) pr_debug(fmt, ##arg); })
+ #endif /* pr_vdebug */
  #endif
  
  /*-------------------------------------------------------------------------*/
@@@ -1129,8 -1133,7 +1133,8 @@@ int gserial_setup(struct usb_gadget *g
        for (i = 0; i < count; i++) {
                struct device   *tty_dev;
  
 -              tty_dev = tty_register_device(gs_tty_driver, i, &g->dev);
 +              tty_dev = tty_port_register_device(&ports[i].port->port,
 +                              gs_tty_driver, i, &g->dev);
                if (IS_ERR(tty_dev))
                        pr_warning("%s: no classdev for port %d, err %ld\n",
                                __func__, i, PTR_ERR(tty_dev));
index 24e3e19849a2af68153006b860338eeaf34ca95a,f906b3aec2179ceb708c9cce772cd85a4e1a1724..0c8d1c2262733e22b85474c91fb01a0d9e1d5b4d
@@@ -704,6 -704,7 +704,7 @@@ static struct usb_device_id id_table_co
        { USB_DEVICE(FTDI_VID, FTDI_PCDJ_DAC2_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_RRCIRKITS_LOCOBUFFER_PID) },
        { USB_DEVICE(FTDI_VID, FTDI_ASK_RDR400_PID) },
+       { USB_DEVICE(FTDI_VID, FTDI_NZR_SEM_USB_PID) },
        { USB_DEVICE(ICOM_VID, ICOM_ID_1_PID) },
        { USB_DEVICE(ICOM_VID, ICOM_OPC_U_UC_PID) },
        { USB_DEVICE(ICOM_VID, ICOM_ID_RP2C1_PID) },
                .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
        { USB_DEVICE(ADI_VID, ADI_GNICEPLUS_PID),
                .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
-       { USB_DEVICE(MICROCHIP_VID, MICROCHIP_USB_BOARD_PID) },
+       { USB_DEVICE_AND_INTERFACE_INFO(MICROCHIP_VID, MICROCHIP_USB_BOARD_PID,
+                                       USB_CLASS_VENDOR_SPEC,
+                                       USB_SUBCLASS_VENDOR_SPEC, 0x00) },
        { USB_DEVICE(JETI_VID, JETI_SPC1201_PID) },
        { USB_DEVICE(MARVELL_VID, MARVELL_SHEEVAPLUG_PID),
                .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
        { USB_DEVICE(LARSENBRUSGAARD_VID, LB_ALTITRACK_PID) },
        { USB_DEVICE(GN_OTOMETRICS_VID, AURICAL_USB_PID) },
+       { USB_DEVICE(FTDI_VID, PI_C865_PID) },
+       { USB_DEVICE(FTDI_VID, PI_C857_PID) },
+       { USB_DEVICE(PI_VID, PI_C866_PID) },
+       { USB_DEVICE(PI_VID, PI_C663_PID) },
+       { USB_DEVICE(PI_VID, PI_C725_PID) },
+       { USB_DEVICE(PI_VID, PI_E517_PID) },
+       { USB_DEVICE(PI_VID, PI_C863_PID) },
        { USB_DEVICE(PI_VID, PI_E861_PID) },
+       { USB_DEVICE(PI_VID, PI_C867_PID) },
+       { USB_DEVICE(PI_VID, PI_E609_PID) },
+       { USB_DEVICE(PI_VID, PI_E709_PID) },
+       { USB_DEVICE(PI_VID, PI_100F_PID) },
+       { USB_DEVICE(PI_VID, PI_1011_PID) },
+       { USB_DEVICE(PI_VID, PI_1012_PID) },
+       { USB_DEVICE(PI_VID, PI_1013_PID) },
+       { USB_DEVICE(PI_VID, PI_1014_PID) },
+       { USB_DEVICE(PI_VID, PI_1015_PID) },
+       { USB_DEVICE(PI_VID, PI_1016_PID) },
        { USB_DEVICE(KONDO_VID, KONDO_USB_SERIAL_PID) },
        { USB_DEVICE(BAYER_VID, BAYER_CONTOUR_CABLE_PID) },
        { USB_DEVICE(FTDI_VID, MARVELL_OPENRD_PID),
@@@ -2082,7 -2102,7 +2102,7 @@@ static void ftdi_set_termios(struct tty
  {
        struct usb_device *dev = port->serial->dev;
        struct ftdi_private *priv = usb_get_serial_port_data(port);
 -      struct ktermios *termios = tty->termios;
 +      struct ktermios *termios = &tty->termios;
        unsigned int cflag = termios->c_cflag;
        __u16 urb_value; /* will hold the new flags */