Loading arch/arm/mach-omap2/mux.h +14 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,20 @@ #define OMAP_MUX_REG_8BIT (1 << 0) #define OMAP_MUX_GPIO_IN_MODE3 (1 << 1) /** * struct omap_board_data - board specific device data * @id: instance id * @flags: additional flags for platform init code * @pads: array of device specific pads * @pads_cnt: ARRAY_SIZE() of pads */ struct omap_board_data { int id; u32 flags; struct omap_device_pad *pads; int pads_cnt; }; /** * struct mux_partition - contain partition related information * @name: name of the current partition Loading arch/arm/mach-omap2/serial.c +20 −8 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ #include "cm2xxx_3xxx.h" #include "prm-regbits-34xx.h" #include "control.h" #include "mux.h" #define UART_OMAP_NO_EMPTY_FIFO_READ_IP_REV 0x52 #define UART_OMAP_WER 0x17 /* Wake-up enable register */ Loading Loading @@ -694,16 +695,16 @@ void __init omap_serial_early_init(void) /** * omap_serial_init_port() - initialize single serial port * @port: serial port number (0-3) * @bdata: port specific board data pointer * * This function initialies serial driver for given @port only. * 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) void __init omap_serial_init_port(struct omap_board_data *bdata) { struct omap_uart_state *uart; struct omap_hwmod *oh; Loading @@ -721,13 +722,15 @@ void __init omap_serial_init_port(int port) struct omap_uart_port_info omap_up; #endif if (WARN_ON(port < 0)) if (WARN_ON(!bdata)) return; if (WARN_ON(port >= num_uarts)) if (WARN_ON(bdata->id < 0)) return; if (WARN_ON(bdata->id >= num_uarts)) return; list_for_each_entry(uart, &uart_list, node) if (port == uart->num) if (bdata->id == uart->num) break; oh = uart->oh; Loading Loading @@ -799,6 +802,8 @@ void __init omap_serial_init_port(int port) WARN(IS_ERR(od), "Could not build omap_device for %s: %s.\n", name, oh->name); oh->mux = omap_hwmod_mux_init(bdata->pads, bdata->pads_cnt); uart->irq = oh->mpu_irqs[0].irq; uart->regshift = 2; uart->mapbase = oh->slaves[0]->addr->pa_start; Loading Loading @@ -856,7 +861,14 @@ void __init omap_serial_init_port(int port) void __init omap_serial_init(void) { struct omap_uart_state *uart; struct omap_board_data bdata; list_for_each_entry(uart, &uart_list, node) omap_serial_init_port(uart->num); list_for_each_entry(uart, &uart_list, node) { bdata.id = uart->num; bdata.flags = 0; bdata.pads = NULL; bdata.pads_cnt = 0; omap_serial_init_port(&bdata); } } arch/arm/plat-omap/include/plat/serial.h +4 −1 Original line number Diff line number Diff line Loading @@ -93,9 +93,12 @@ }) #ifndef __ASSEMBLER__ struct omap_board_data; extern void __init omap_serial_early_init(void); extern void omap_serial_init(void); extern void omap_serial_init_port(int port); extern void omap_serial_init_port(struct omap_board_data *bdata); extern int omap_uart_can_sleep(void); extern void omap_uart_check_wakeup(void); extern void omap_uart_prepare_suspend(void); Loading Loading
arch/arm/mach-omap2/mux.h +14 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,20 @@ #define OMAP_MUX_REG_8BIT (1 << 0) #define OMAP_MUX_GPIO_IN_MODE3 (1 << 1) /** * struct omap_board_data - board specific device data * @id: instance id * @flags: additional flags for platform init code * @pads: array of device specific pads * @pads_cnt: ARRAY_SIZE() of pads */ struct omap_board_data { int id; u32 flags; struct omap_device_pad *pads; int pads_cnt; }; /** * struct mux_partition - contain partition related information * @name: name of the current partition Loading
arch/arm/mach-omap2/serial.c +20 −8 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ #include "cm2xxx_3xxx.h" #include "prm-regbits-34xx.h" #include "control.h" #include "mux.h" #define UART_OMAP_NO_EMPTY_FIFO_READ_IP_REV 0x52 #define UART_OMAP_WER 0x17 /* Wake-up enable register */ Loading Loading @@ -694,16 +695,16 @@ void __init omap_serial_early_init(void) /** * omap_serial_init_port() - initialize single serial port * @port: serial port number (0-3) * @bdata: port specific board data pointer * * This function initialies serial driver for given @port only. * 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) void __init omap_serial_init_port(struct omap_board_data *bdata) { struct omap_uart_state *uart; struct omap_hwmod *oh; Loading @@ -721,13 +722,15 @@ void __init omap_serial_init_port(int port) struct omap_uart_port_info omap_up; #endif if (WARN_ON(port < 0)) if (WARN_ON(!bdata)) return; if (WARN_ON(port >= num_uarts)) if (WARN_ON(bdata->id < 0)) return; if (WARN_ON(bdata->id >= num_uarts)) return; list_for_each_entry(uart, &uart_list, node) if (port == uart->num) if (bdata->id == uart->num) break; oh = uart->oh; Loading Loading @@ -799,6 +802,8 @@ void __init omap_serial_init_port(int port) WARN(IS_ERR(od), "Could not build omap_device for %s: %s.\n", name, oh->name); oh->mux = omap_hwmod_mux_init(bdata->pads, bdata->pads_cnt); uart->irq = oh->mpu_irqs[0].irq; uart->regshift = 2; uart->mapbase = oh->slaves[0]->addr->pa_start; Loading Loading @@ -856,7 +861,14 @@ void __init omap_serial_init_port(int port) void __init omap_serial_init(void) { struct omap_uart_state *uart; struct omap_board_data bdata; list_for_each_entry(uart, &uart_list, node) omap_serial_init_port(uart->num); list_for_each_entry(uart, &uart_list, node) { bdata.id = uart->num; bdata.flags = 0; bdata.pads = NULL; bdata.pads_cnt = 0; omap_serial_init_port(&bdata); } }
arch/arm/plat-omap/include/plat/serial.h +4 −1 Original line number Diff line number Diff line Loading @@ -93,9 +93,12 @@ }) #ifndef __ASSEMBLER__ struct omap_board_data; extern void __init omap_serial_early_init(void); extern void omap_serial_init(void); extern void omap_serial_init_port(int port); extern void omap_serial_init_port(struct omap_board_data *bdata); extern int omap_uart_can_sleep(void); extern void omap_uart_check_wakeup(void); extern void omap_uart_prepare_suspend(void); Loading