[sorry for being late to the party, I've been on vacation] Mika Westerberg <ext-mika.1.westerberg@xxxxxxxxx> writes: [...] > How about something like in the patch attached? > > Then for example we would do in board-rx51.c: > ... > omap_serial_init_port(2); > > (we only use UART3 as serial port). > > I quickly tested this with RX-51 and seems to work. > I like this approach. I'm against going back to the previsus platform_data extending approach since it requires doing different stuff when using 8250 or the upcoming omap-serial driver. > > --- > > From: Mika Westerberg <ext-mika.1.westerberg@xxxxxxxxx> > Date: Tue, 1 Dec 2009 12:54:21 +0200 > Subject: [PATCH] OMAP3: serial - allow platforms specify which UARTs to initialize > > This patch adds new function: omap_serial_init_port(port) that can be > used to initialize only selected UARTs as serial ports. Platforms can > then in their board files call this function instead of omap_serial_init() > if they don't want to use all UARTs as serial ports. > > Signed-off-by: Mika Westerberg <ext-mika.1.westerberg@xxxxxxxxx> Signed-off-by: Kevin Hilman <khilman@xxxxxxxxxxxxxxxxxxx> > --- > arch/arm/mach-omap2/serial.c | 59 +++++++++++++++++++++++------- > arch/arm/plat-omap/include/plat/serial.h | 1 + > 2 files changed, 46 insertions(+), 14 deletions(-) > > diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c > index 2e17b57..fe46560 100644 > --- a/arch/arm/mach-omap2/serial.c > +++ b/arch/arm/mach-omap2/serial.c > @@ -631,24 +631,55 @@ void __init omap_serial_early_init(void) > } > } > > +/** > + * omap_serial_init_port() - initialize single serial port > + * @port: serial port number (0-3) > + * > + * This function initialies serial driver for given @port only. > + * Platforms can call this function instead of omap_serial_init() > + * if they don't plan to use all available UARTs as serial ports. > + * > + * Don't mix calls to omap_serial_init_port() and omap_serial_init(), > + * use only one of the two. > + */ > +void __init omap_serial_init_port(int port) > +{ > + struct omap_uart_state *uart; > + struct platform_device *pdev; > + struct device *dev; > + > + BUG_ON(port < 0); > + BUG_ON(port >= ARRAY_SIZE(omap_uart)); > + > + uart = &omap_uart[port]; > + pdev = &uart->pdev; > + dev = &pdev->dev; > + > + omap_uart_reset(uart); > + omap_uart_idle_init(uart); > + > + if (WARN_ON(platform_device_register(pdev))) > + return; > + > + if ((cpu_is_omap34xx() && uart->padconf) || > + (uart->wk_en && uart->wk_mask)) { > + device_init_wakeup(dev, true); > + DEV_CREATE_FILE(dev, &dev_attr_sleep_timeout); > + } > +} > + > +/** > + * omap_serial_init() - intialize all supported serial ports > + * > + * Initializes all available UARTs as serial ports. Platforms > + * can call this function when they want to have default behaviour > + * for serial ports (e.g initialize them all as serial ports). > + */ > void __init omap_serial_init(void) > { > int i; > > for (i = 0; i < ARRAY_SIZE(omap_uart); i++) { > - struct omap_uart_state *uart = &omap_uart[i]; > - struct platform_device *pdev = &uart->pdev; > - struct device *dev = &pdev->dev; > - > - omap_uart_reset(uart); > - omap_uart_idle_init(uart); > - > - if (WARN_ON(platform_device_register(pdev))) > - continue; > - if ((cpu_is_omap34xx() && uart->padconf) || > - (uart->wk_en && uart->wk_mask)) { > - device_init_wakeup(dev, true); > - DEV_CREATE_FILE(dev, &dev_attr_sleep_timeout); > - } > + omap_serial_init_port(i); > } > } > diff --git a/arch/arm/plat-omap/include/plat/serial.h b/arch/arm/plat-omap/include/plat/serial.h > index 9951345..f5a4a92 100644 > --- a/arch/arm/plat-omap/include/plat/serial.h > +++ b/arch/arm/plat-omap/include/plat/serial.h > @@ -53,6 +53,7 @@ > #ifndef __ASSEMBLER__ > extern void __init omap_serial_early_init(void); > extern void omap_serial_init(void); > +extern void omap_serial_init_port(int port); > extern int omap_uart_can_sleep(void); > extern void omap_uart_check_wakeup(void); > extern void omap_uart_prepare_suspend(void); > -- > 1.5.6.5 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html