On Tue, Jul 02, 2013 at 02:30:24PM +0800, Huang Shijie wrote: > We will add the DMA support for the imx uart. For the firmware's limit, > only the imx6 uart can supports the DMA. > > This patch adds the necessary macro and helper to distinguish the imx6 uart > from the other imx uart. > > Signed-off-by: Huang Shijie <b32955@xxxxxxxxxxxxx> > --- > drivers/tty/serial/imx.c | 17 +++++++++++++++-- > 1 files changed, 15 insertions(+), 2 deletions(-) > > diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c > index 48bace0..d215fa9 100644 > --- a/drivers/tty/serial/imx.c > +++ b/drivers/tty/serial/imx.c > @@ -187,6 +187,7 @@ > enum imx_uart_type { > IMX1_UART, > IMX21_UART, > + IMX6_UART, > }; > > /* device type dependent stuff */ > @@ -232,6 +233,10 @@ static struct imx_uart_data imx_uart_devdata[] = { > .uts_reg = IMX21_UTS, > .devtype = IMX21_UART, > }, > + [IMX6_UART] = { > + .uts_reg = IMX21_UTS, > + .devtype = IMX6_UART, > + }, > }; > > static struct platform_device_id imx_uart_devtype[] = { > @@ -242,6 +247,9 @@ static struct platform_device_id imx_uart_devtype[] = { > .name = "imx21-uart", > .driver_data = (kernel_ulong_t) &imx_uart_devdata[IMX21_UART], > }, { > + .name = "imx6-uart", > + .driver_data = (kernel_ulong_t) &imx_uart_devdata[IMX6_UART], > + }, { > /* sentinel */ > } > }; > @@ -250,6 +258,7 @@ MODULE_DEVICE_TABLE(platform, imx_uart_devtype); > static struct of_device_id imx_uart_dt_ids[] = { > { .compatible = "fsl,imx1-uart", .data = &imx_uart_devdata[IMX1_UART], }, > { .compatible = "fsl,imx21-uart", .data = &imx_uart_devdata[IMX21_UART], }, > + { .compatible = "fsl,imx6-uart", .data = &imx_uart_devdata[IMX6_UART], }, We generally use a chip/SoC name in compatible to specify a particular device type. imx6 is not such a name. Shawn > { /* sentinel */ } > }; > MODULE_DEVICE_TABLE(of, imx_uart_dt_ids); > @@ -269,6 +278,10 @@ static inline int is_imx21_uart(struct imx_port *sport) > return sport->devdata->devtype == IMX21_UART; > } > > +static inline int is_imx6_uart(struct imx_port *sport) > +{ > + return sport->devdata->devtype == IMX6_UART; > +} > /* > * Save and restore functions for UCR1, UCR2 and UCR3 registers > */ > @@ -801,7 +814,7 @@ static int imx_startup(struct uart_port *port) > } > } > > - if (is_imx21_uart(sport)) { > + if (is_imx21_uart(sport) || is_imx6_uart(sport)) { > temp = readl(sport->port.membase + UCR3); > temp |= IMX21_UCR3_RXDMUXSEL; > writel(temp, sport->port.membase + UCR3); > @@ -1044,7 +1057,7 @@ imx_set_termios(struct uart_port *port, struct ktermios *termios, > writel(num, sport->port.membase + UBIR); > writel(denom, sport->port.membase + UBMR); > > - if (is_imx21_uart(sport)) > + if (is_imx21_uart(sport) || is_imx6_uart(sport)) > writel(sport->port.uartclk / div / 1000, > sport->port.membase + IMX21_ONEMS); > > -- > 1.7.1 > > -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html