From e62d4255172540805a77fee1c58382103f43bb2f Mon Sep 17 00:00:00 2001 From: Jean-Christophe PLAGNIOL-VILLARD Date: Fri, 20 Sep 2013 05:31:29 +0200 Subject: [PATCH 1/5] console: drop f_caps and check the function pointer getc/putc instead None of the driver make the difference between STDOUT and STDERR. So we just need to check if putc or getc are filled in the console_device save 32 bytes on versatilepb Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD Signed-off-by: Sascha Hauer --- arch/sandbox/board/console.c | 5 ----- arch/sandbox/mach-sandbox/include/mach/linux.h | 1 - common/console.c | 18 ++++++++++-------- drivers/input/gpio_keys.c | 1 - drivers/input/imx_keypad.c | 1 - drivers/input/qt1070.c | 1 - drivers/input/twl6030_pwrbtn.c | 1 - drivers/serial/amba-pl011.c | 1 - drivers/serial/arm_dcc.c | 1 - drivers/serial/atmel.c | 1 - drivers/serial/linux_console.c | 10 ++++++---- drivers/serial/serial_altera.c | 1 - drivers/serial/serial_altera_jtag.c | 1 - drivers/serial/serial_auart.c | 1 - drivers/serial/serial_blackfin.c | 1 - drivers/serial/serial_cadence.c | 1 - drivers/serial/serial_clps711x.c | 1 - drivers/serial/serial_imx.c | 1 - drivers/serial/serial_mpc5xxx.c | 1 - drivers/serial/serial_netx.c | 1 - drivers/serial/serial_ns16550.c | 1 - drivers/serial/serial_omap4_usbboot.c | 1 - drivers/serial/serial_pl010.c | 1 - drivers/serial/serial_pxa.c | 1 - drivers/serial/serial_s3c.c | 1 - drivers/serial/stm-serial.c | 1 - drivers/usb/gadget/u_serial.c | 1 - include/console.h | 1 - net/netconsole.c | 1 - 29 files changed, 16 insertions(+), 43 deletions(-) diff --git a/arch/sandbox/board/console.c b/arch/sandbox/board/console.c index b0afa54d9..cd5ad5723 100644 --- a/arch/sandbox/board/console.c +++ b/arch/sandbox/board/console.c @@ -36,11 +36,6 @@ int barebox_register_console(char *name, int stdinfd, int stdoutfd) strcpy(dev->name, "console"); - if (stdinfd >= 0) - data->flags = CONSOLE_STDIN; - if (stdoutfd >= 0) - data->flags |= CONSOLE_STDOUT | CONSOLE_STDERR; - data->stdoutfd = stdoutfd; data->stdinfd = stdinfd; diff --git a/arch/sandbox/mach-sandbox/include/mach/linux.h b/arch/sandbox/mach-sandbox/include/mach/linux.h index 50d2721f7..98f906704 100644 --- a/arch/sandbox/mach-sandbox/include/mach/linux.h +++ b/arch/sandbox/mach-sandbox/include/mach/linux.h @@ -23,7 +23,6 @@ int barebox_register_console(char *name_template, int stdinfd, int stdoutfd); struct linux_console_data { int stdinfd; int stdoutfd; - unsigned int flags; }; extern int sdl_xres; diff --git a/common/console.c b/common/console.c index 6ca94e2a0..4ca5f1809 100644 --- a/common/console.c +++ b/common/console.c @@ -63,19 +63,21 @@ static int console_std_set(struct device_d *dev, struct param_d *param, unsigned int flag = 0, i = 0; if (val) { - if (strchr(val, 'i') && cdev->f_caps & CONSOLE_STDIN) { + if (strchr(val, 'i') && cdev->getc) { active[i++] = 'i'; flag |= CONSOLE_STDIN; } - if (strchr(val, 'o') && cdev->f_caps & CONSOLE_STDOUT) { - active[i++] = 'o'; - flag |= CONSOLE_STDOUT; - } + if (cdev->putc) { + if (strchr(val, 'o')) { + active[i++] = 'o'; + flag |= CONSOLE_STDOUT; + } - if (strchr(val, 'e') && cdev->f_caps & CONSOLE_STDERR) { - active[i++] = 'e'; - flag |= CONSOLE_STDERR; + if (strchr(val, 'e')) { + active[i++] = 'e'; + flag |= CONSOLE_STDERR; + } } } diff --git a/drivers/input/gpio_keys.c b/drivers/input/gpio_keys.c index b43911149..18a29f0e9 100644 --- a/drivers/input/gpio_keys.c +++ b/drivers/input/gpio_keys.c @@ -95,7 +95,6 @@ static int __init gpio_keys_probe(struct device_d *dev) cdev = &pdata->cdev; dev->type_data = cdev; cdev->dev = dev; - cdev->f_caps = CONSOLE_STDIN; cdev->tstc = gpio_keys_tstc; cdev->getc = gpio_keys_getc; diff --git a/drivers/input/imx_keypad.c b/drivers/input/imx_keypad.c index 2ee3d0fa0..e6870dfcc 100644 --- a/drivers/input/imx_keypad.c +++ b/drivers/input/imx_keypad.c @@ -441,7 +441,6 @@ static int __init imx_keypad_probe(struct device_d *dev) cdev->dev = dev; cdev->tstc = imx_keypad_tstc; cdev->getc = imx_keypad_getc; - cdev->f_caps = CONSOLE_STDIN; cdev->f_active = CONSOLE_STDIN; console_register(&keypad->cdev); diff --git a/drivers/input/qt1070.c b/drivers/input/qt1070.c index ada330a6d..7b72965df 100644 --- a/drivers/input/qt1070.c +++ b/drivers/input/qt1070.c @@ -265,7 +265,6 @@ static int qt1070_probe(struct device_d *dev) cdev = &data->cdev; cdev->dev = dev; - cdev->f_caps = CONSOLE_STDIN; cdev->tstc = qt1070_tstc; cdev->getc = qt1070_getc; diff --git a/drivers/input/twl6030_pwrbtn.c b/drivers/input/twl6030_pwrbtn.c index ca51dee60..fc4c72877 100644 --- a/drivers/input/twl6030_pwrbtn.c +++ b/drivers/input/twl6030_pwrbtn.c @@ -93,7 +93,6 @@ static int __init twl6030_pwrbtn_probe(struct device_d *dev) dev->type_data = &idata->cdev; idata->cdev.dev = dev; - idata->cdev.f_caps = CONSOLE_STDIN; idata->cdev.tstc = twl6030_pwrbtn_tstc; idata->cdev.getc = twl6030_pwrbtn_getc; console_register(&idata->cdev); diff --git a/drivers/serial/amba-pl011.c b/drivers/serial/amba-pl011.c index 0e075880e..0f384e597 100644 --- a/drivers/serial/amba-pl011.c +++ b/drivers/serial/amba-pl011.c @@ -196,7 +196,6 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id) cdev = &uart->uart; cdev->dev = &dev->dev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = pl011_tstc; cdev->putc = pl011_putc; cdev->getc = pl011_getc; diff --git a/drivers/serial/arm_dcc.c b/drivers/serial/arm_dcc.c index bab72990d..e5f2bbe5e 100644 --- a/drivers/serial/arm_dcc.c +++ b/drivers/serial/arm_dcc.c @@ -133,7 +133,6 @@ static int arm_dcc_probe(struct device_d *dev) cdev = &arm_dcc_dev; cdev->dev = dev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = arm_dcc_tstc; cdev->putc = arm_dcc_putc; cdev->getc = arm_dcc_getc; diff --git a/drivers/serial/atmel.c b/drivers/serial/atmel.c index 89c141eaf..7eb10e4d6 100644 --- a/drivers/serial/atmel.c +++ b/drivers/serial/atmel.c @@ -399,7 +399,6 @@ static int atmel_serial_probe(struct device_d *dev) uart = xzalloc(sizeof(struct atmel_uart_port)); cdev = &uart->uart; cdev->dev = dev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = atmel_serial_tstc; cdev->putc = atmel_serial_putc; cdev->getc = atmel_serial_getc; diff --git a/drivers/serial/linux_console.c b/drivers/serial/linux_console.c index 7ded09179..760b3b81f 100644 --- a/drivers/serial/linux_console.c +++ b/drivers/serial/linux_console.c @@ -64,10 +64,12 @@ static int linux_console_probe(struct device_d *dev) cdev = xzalloc(sizeof(struct console_device)); cdev->dev = dev; - cdev->f_caps = data->flags; - cdev->tstc = linux_console_tstc; - cdev->putc = linux_console_putc; - cdev->getc = linux_console_getc; + if (data->stdinfd >= 0) { + cdev->tstc = linux_console_tstc; + cdev->getc = linux_console_getc; + } + if (data->stdoutfd >= 0) + cdev->putc = linux_console_putc; console_register(cdev); diff --git a/drivers/serial/serial_altera.c b/drivers/serial/serial_altera.c index 7ff38d7f1..d519a8792 100644 --- a/drivers/serial/serial_altera.c +++ b/drivers/serial/serial_altera.c @@ -86,7 +86,6 @@ static int altera_serial_probe(struct device_d *dev) priv->regs = dev_request_mem_region(dev, 0); cdev->dev = dev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = altera_serial_tstc; cdev->putc = altera_serial_putc; cdev->getc = altera_serial_getc; diff --git a/drivers/serial/serial_altera_jtag.c b/drivers/serial/serial_altera_jtag.c index edc3c768d..4219a4bbb 100644 --- a/drivers/serial/serial_altera_jtag.c +++ b/drivers/serial/serial_altera_jtag.c @@ -91,7 +91,6 @@ static int altera_serial_jtag_probe(struct device_d *dev) { priv->regs = dev_request_mem_region(dev, 0); cdev->dev = dev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = altera_serial_jtag_tstc; cdev->putc = altera_serial_jtag_putc; cdev->getc = altera_serial_jtag_getc; diff --git a/drivers/serial/serial_auart.c b/drivers/serial/serial_auart.c index 0e1ab83f2..60a701d40 100644 --- a/drivers/serial/serial_auart.c +++ b/drivers/serial/serial_auart.c @@ -187,7 +187,6 @@ static int auart_serial_probe(struct device_d *dev) priv = xzalloc(sizeof *priv); cdev = &priv->cdev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = auart_serial_tstc; cdev->putc = auart_serial_putc; cdev->getc = auart_serial_getc; diff --git a/drivers/serial/serial_blackfin.c b/drivers/serial/serial_blackfin.c index 7373a0377..212222673 100644 --- a/drivers/serial/serial_blackfin.c +++ b/drivers/serial/serial_blackfin.c @@ -113,7 +113,6 @@ static int blackfin_serial_probe(struct device_d *dev) cdev = xzalloc(sizeof(struct console_device)); cdev->dev = dev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = blackfin_serial_tstc; cdev->putc = blackfin_serial_putc; cdev->getc = blackfin_serial_getc; diff --git a/drivers/serial/serial_cadence.c b/drivers/serial/serial_cadence.c index c29c39102..a1b76d07d 100644 --- a/drivers/serial/serial_cadence.c +++ b/drivers/serial/serial_cadence.c @@ -246,7 +246,6 @@ static int cadence_serial_probe(struct device_d *dev) } cdev->dev = dev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = cadence_serial_tstc; cdev->putc = cadence_serial_putc; cdev->getc = cadence_serial_getc; diff --git a/drivers/serial/serial_clps711x.c b/drivers/serial/serial_clps711x.c index ffbb6f80b..17d4c2eb9 100644 --- a/drivers/serial/serial_clps711x.c +++ b/drivers/serial/serial_clps711x.c @@ -131,7 +131,6 @@ static int clps711x_probe(struct device_d *dev) dev->priv = s; s->cdev.dev = dev; - s->cdev.f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; s->cdev.tstc = clps711x_tstc; s->cdev.putc = clps711x_putc; s->cdev.getc = clps711x_getc; diff --git a/drivers/serial/serial_imx.c b/drivers/serial/serial_imx.c index 8553c2e6a..e99dde81d 100644 --- a/drivers/serial/serial_imx.c +++ b/drivers/serial/serial_imx.c @@ -330,7 +330,6 @@ static int imx_serial_probe(struct device_d *dev) priv->regs = dev_request_mem_region(dev, 0); cdev->dev = dev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = imx_serial_tstc; cdev->putc = imx_serial_putc; cdev->getc = imx_serial_getc; diff --git a/drivers/serial/serial_mpc5xxx.c b/drivers/serial/serial_mpc5xxx.c index 532eea3e5..18aca8736 100644 --- a/drivers/serial/serial_mpc5xxx.c +++ b/drivers/serial/serial_mpc5xxx.c @@ -149,7 +149,6 @@ static int mpc5xxx_serial_probe(struct device_d *dev) cdev = xzalloc(sizeof(struct console_device)); dev->priv = dev_request_mem_region(dev, 0); cdev->dev = dev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = mpc5xxx_serial_tstc; cdev->putc = mpc5xxx_serial_putc; cdev->getc = mpc5xxx_serial_getc; diff --git a/drivers/serial/serial_netx.c b/drivers/serial/serial_netx.c index 037b9980b..c659cfaaf 100644 --- a/drivers/serial/serial_netx.c +++ b/drivers/serial/serial_netx.c @@ -138,7 +138,6 @@ static int netx_serial_probe(struct device_d *dev) cdev = xzalloc(sizeof(struct console_device)); dev->priv = dev_request_mem_region(dev, 0); cdev->dev = dev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = netx_serial_tstc; cdev->putc = netx_serial_putc; cdev->getc = netx_serial_getc; diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c index 5899d5711..5ae2b7624 100644 --- a/drivers/serial/serial_ns16550.c +++ b/drivers/serial/serial_ns16550.c @@ -291,7 +291,6 @@ static int ns16550_probe(struct device_d *dev) cdev = &priv->cdev; cdev->dev = dev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = ns16550_tstc; cdev->putc = ns16550_putc; cdev->getc = ns16550_getc; diff --git a/drivers/serial/serial_omap4_usbboot.c b/drivers/serial/serial_omap4_usbboot.c index 51b2d1300..2ef026c24 100644 --- a/drivers/serial/serial_omap4_usbboot.c +++ b/drivers/serial/serial_omap4_usbboot.c @@ -62,7 +62,6 @@ static int serial_omap4_usbboot_probe(struct device_d *dev) priv = xzalloc(sizeof(*priv)); priv->cdev.dev = dev; - priv->cdev.f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; priv->cdev.tstc = serial_omap4_usbboot_tstc; priv->cdev.putc = serial_omap4_usbboot_putc; priv->cdev.getc = serial_omap4_usbboot_getc; diff --git a/drivers/serial/serial_pl010.c b/drivers/serial/serial_pl010.c index 9158774de..81cea776a 100644 --- a/drivers/serial/serial_pl010.c +++ b/drivers/serial/serial_pl010.c @@ -140,7 +140,6 @@ static int pl010_probe(struct device_d *dev) cdev = xzalloc(sizeof(struct console_device)); dev->priv = dev_request_mem_region(dev, 0); cdev->dev = dev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = pl010_tstc; cdev->putc = pl010_putc; cdev->getc = pl010_getc; diff --git a/drivers/serial/serial_pxa.c b/drivers/serial/serial_pxa.c index 42355cedf..20ac4beb9 100644 --- a/drivers/serial/serial_pxa.c +++ b/drivers/serial/serial_pxa.c @@ -170,7 +170,6 @@ static int pxa_serial_probe(struct device_d *dev) dev->priv = priv; cdev->dev = dev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = pxa_serial_tstc; cdev->putc = pxa_serial_putc; cdev->getc = pxa_serial_getc; diff --git a/drivers/serial/serial_s3c.c b/drivers/serial/serial_s3c.c index cc7b33e10..038193dcf 100644 --- a/drivers/serial/serial_s3c.c +++ b/drivers/serial/serial_s3c.c @@ -184,7 +184,6 @@ static int s3c_serial_probe(struct device_d *dev) priv->regs = dev_request_mem_region(dev, 0); dev->priv = priv; cdev->dev = dev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = s3c_serial_tstc; cdev->putc = s3c_serial_putc; cdev->getc = s3c_serial_getc; diff --git a/drivers/serial/stm-serial.c b/drivers/serial/stm-serial.c index 0d7484f4b..3fec1ceef 100644 --- a/drivers/serial/stm-serial.c +++ b/drivers/serial/stm-serial.c @@ -153,7 +153,6 @@ static int stm_serial_probe(struct device_d *dev) cdev = &priv->cdev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = stm_serial_tstc; cdev->putc = stm_serial_putc; cdev->getc = stm_serial_getc; diff --git a/drivers/usb/gadget/u_serial.c b/drivers/usb/gadget/u_serial.c index 9717c3b20..dbadbe460 100644 --- a/drivers/usb/gadget/u_serial.c +++ b/drivers/usb/gadget/u_serial.c @@ -478,7 +478,6 @@ int gserial_connect(struct gserial *gser, u8 port_num) gser->connect(gser); cdev = &port->cdev; - cdev->f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; cdev->tstc = serial_tstc; cdev->putc = serial_putc; cdev->getc = serial_getc; diff --git a/include/console.h b/include/console.h index 72cf99f55..56e0484e9 100644 --- a/include/console.h +++ b/include/console.h @@ -40,7 +40,6 @@ struct console_device { struct list_head list; - unsigned char f_caps; unsigned char f_active; unsigned int baudrate; diff --git a/net/netconsole.c b/net/netconsole.c index 99891941b..2ab19de4d 100644 --- a/net/netconsole.c +++ b/net/netconsole.c @@ -72,7 +72,6 @@ static int nc_init(void) } net_udp_bind(priv->con, priv->port); - priv->cdev.f_caps = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; return 0; } From 3b2263c86507d8549989e51333dda1bb91f8bdda Mon Sep 17 00:00:00 2001 From: Jean-Christophe PLAGNIOL-VILLARD Date: Sun, 22 Sep 2013 08:39:55 +0200 Subject: [PATCH 2/5] console_simple: set baudrate at register as the console is always enable Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD Signed-off-by: Sascha Hauer --- common/console_simple.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/common/console_simple.c b/common/console_simple.c index 101064b69..202d2442f 100644 --- a/common/console_simple.c +++ b/common/console_simple.c @@ -82,6 +82,11 @@ int console_register(struct console_device *newcdev) console_list.prev = console_list.next = &newcdev->list; newcdev->list.prev = newcdev->list.next = &console_list; + if (newcdev->setbrg) { + newcdev->baudrate = CONFIG_BAUDRATE; + newcdev->setbrg(newcdev, newcdev->baudrate); + } + barebox_banner(); return 0; From 770e1a4d630b08dc465cf93638635295ffbe0343 Mon Sep 17 00:00:00 2001 From: Jean-Christophe PLAGNIOL-VILLARD Date: Sun, 22 Sep 2013 08:39:56 +0200 Subject: [PATCH 3/5] serial: do not set default baudrate at init this will be done at activation Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD Signed-off-by: Sascha Hauer --- drivers/serial/amba-pl011.c | 4 ---- drivers/serial/atmel.c | 2 -- drivers/serial/serial_auart.c | 1 - drivers/serial/serial_clps711x.c | 3 --- drivers/serial/serial_imx.c | 1 - drivers/serial/serial_ns16550.c | 2 -- 6 files changed, 13 deletions(-) diff --git a/drivers/serial/amba-pl011.c b/drivers/serial/amba-pl011.c index 0f384e597..fc7723ea8 100644 --- a/drivers/serial/amba-pl011.c +++ b/drivers/serial/amba-pl011.c @@ -163,10 +163,6 @@ int pl011_init_port (struct console_device *cdev) uart->uartclk = clk_get_rate(uart->clk); - /* - * set baud rate - */ - pl011_setbaudrate(cdev, 115200); /* ** Set the UART to be 8 bits, 1 stop bit, no parity, fifo enabled. */ diff --git a/drivers/serial/atmel.c b/drivers/serial/atmel.c index 7eb10e4d6..8392e78ce 100644 --- a/drivers/serial/atmel.c +++ b/drivers/serial/atmel.c @@ -379,8 +379,6 @@ static int atmel_serial_init_port(struct console_device *cdev) writel(USART3_BIT(RSTRX) | USART3_BIT(RSTTX), uart->base + USART3_CR); - atmel_serial_setbaudrate(cdev, 115200); - writel(USART3_BIT(RXEN) | USART3_BIT(TXEN), uart->base + USART3_CR); writel((USART3_BF(USART_MODE, USART3_USART_MODE_NORMAL) | USART3_BF(USCLKS, USART3_USCLKS_MCK) diff --git a/drivers/serial/serial_auart.c b/drivers/serial/serial_auart.c index 60a701d40..19805166b 100644 --- a/drivers/serial/serial_auart.c +++ b/drivers/serial/serial_auart.c @@ -201,7 +201,6 @@ static int auart_serial_probe(struct device_d *dev) return PTR_ERR(priv->clk); auart_serial_init_port(priv); - auart_serial_setbaudrate(cdev, CONFIG_BAUDRATE); /* Disable RTS/CTS, enable Rx, Tx, UART */ writel(BM_UARTAPP_CTRL2_RTSEN | BM_UARTAPP_CTRL2_CTSEN | diff --git a/drivers/serial/serial_clps711x.c b/drivers/serial/serial_clps711x.c index 17d4c2eb9..e43d14170 100644 --- a/drivers/serial/serial_clps711x.c +++ b/drivers/serial/serial_clps711x.c @@ -58,9 +58,6 @@ static void clps711x_init_port(struct console_device *cdev) tmp |= UBRLCR_FIFOEN | UBRLCR_WRDLEN8; /* FIFO on, 8N1 mode */ writel(tmp, s->UBRLCR); - /* Set default baudrate on initialization */ - clps711x_setbaudrate(cdev, CONFIG_BAUDRATE); - /* Enable the UART */ writel(readl(SYSCON(s)) | SYSCON_UARTEN, SYSCON(s)); } diff --git a/drivers/serial/serial_imx.c b/drivers/serial/serial_imx.c index e99dde81d..01c7cc7fe 100644 --- a/drivers/serial/serial_imx.c +++ b/drivers/serial/serial_imx.c @@ -337,7 +337,6 @@ static int imx_serial_probe(struct device_d *dev) cdev->setbrg = imx_serial_setbaudrate; imx_serial_init_port(cdev); - imx_serial_setbaudrate(cdev, 115200); /* Enable UART */ val = readl(priv->regs + UCR1); diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c index 5ae2b7624..59b509c28 100644 --- a/drivers/serial/serial_ns16550.c +++ b/drivers/serial/serial_ns16550.c @@ -183,8 +183,6 @@ static void ns16550_serial_init_port(struct console_device *cdev) ns16550_write(cdev, 0x07, mdr1); /* Disable */ #endif - ns16550_setbaudrate(cdev, CONFIG_BAUDRATE); - #ifdef CONFIG_DRIVER_SERIAL_NS16550_OMAP_EXTENSIONS ns16550_write(cdev, 0x00, mdr1); #endif From 651a23a69e598658e05e9e55d390db3a3f2a738a Mon Sep 17 00:00:00 2001 From: Jean-Christophe PLAGNIOL-VILLARD Date: Mon, 23 Sep 2013 10:02:00 +0200 Subject: [PATCH 4/5] console_simple: fix: set f_active so generic code can check if the console is enabled and now we can use loadb & loadxy Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD Signed-off-by: Sascha Hauer --- common/console_simple.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common/console_simple.c b/common/console_simple.c index 202d2442f..5ab937fdb 100644 --- a/common/console_simple.c +++ b/common/console_simple.c @@ -87,6 +87,8 @@ int console_register(struct console_device *newcdev) newcdev->setbrg(newcdev, newcdev->baudrate); } + newcdev->f_active = CONSOLE_STDIN | CONSOLE_STDOUT | CONSOLE_STDERR; + barebox_banner(); return 0; From 6a5121f74894ed2d3514b59bd287d126eb7f1488 Mon Sep 17 00:00:00 2001 From: Jean-Christophe PLAGNIOL-VILLARD Date: Thu, 3 Oct 2013 09:21:53 +0200 Subject: [PATCH 5/5] console: factorise function to get the first enabled console rename it to console_get_first_active Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD Signed-off-by: Sascha Hauer --- arch/ppc/mach-mpc85xx/fdt.c | 4 +--- commands/loadb.c | 22 +--------------------- commands/loadxy.c | 24 ++---------------------- common/console_common.c | 22 ++++++++++++++++++++++ include/console.h | 2 ++ 5 files changed, 28 insertions(+), 46 deletions(-) diff --git a/arch/ppc/mach-mpc85xx/fdt.c b/arch/ppc/mach-mpc85xx/fdt.c index 4feae441e..65de6f110 100644 --- a/arch/ppc/mach-mpc85xx/fdt.c +++ b/arch/ppc/mach-mpc85xx/fdt.c @@ -70,9 +70,7 @@ static int fdt_stdout_setup(struct device_node *blob) goto error; } - for_each_console(cdev) - if ((cdev->f_active & (CONSOLE_STDIN | CONSOLE_STDOUT))) - break; + cdev = console_get_first_active(); if (cdev) sprintf(sername, "serial%d", cdev->dev->id); else diff --git a/commands/loadb.c b/commands/loadb.c index a2f3315b6..b527e0095 100644 --- a/commands/loadb.c +++ b/commands/loadb.c @@ -590,26 +590,6 @@ err_quit: return size; } -/** - * @brief returns current used console device - * - * @return console device which is registered with CONSOLE_STDIN and - * CONSOLE_STDOUT - */ -static struct console_device *get_current_console(void) -{ - struct console_device *cdev; - /* - * Assumption to have BOTH CONSOLE_STDIN AND STDOUT in the - * same output console - */ - for_each_console(cdev) { - if ((cdev->f_active & (CONSOLE_STDIN | CONSOLE_STDOUT))) - return cdev; - } - return NULL; -} - /** * @brief provide the loadb(Kermit) or loadY mode support * @@ -650,7 +630,7 @@ static int do_load_serial_bin(int argc, char *argv[]) } } - cdev = get_current_console(); + cdev = console_get_first_active(); if (NULL == cdev) { printf("%s:No console device with STDIN and STDOUT\n", argv[0]); return -ENODEV; diff --git a/commands/loadxy.c b/commands/loadxy.c index 52ecdcaa0..7a912864e 100644 --- a/commands/loadxy.c +++ b/commands/loadxy.c @@ -40,26 +40,6 @@ #define DEF_FILE "image.bin" -/** - * @brief returns current used console device - * - * @return console device which is registered with CONSOLE_STDIN and - * CONSOLE_STDOUT - */ -static struct console_device *get_current_console(void) -{ - struct console_device *cdev; - /* - * Assumption to have BOTH CONSOLE_STDIN AND STDOUT in the - * same output console - */ - for_each_console(cdev) { - if ((cdev->f_active & (CONSOLE_STDIN | CONSOLE_STDOUT))) - return cdev; - } - return NULL; -} - static int console_change_speed(struct console_device *cdev, int baudrate) { int current_baudrate; @@ -134,7 +114,7 @@ static int do_loady(int argc, char *argv[]) if (cname) cdev = get_named_console(cname); else - cdev = get_current_console(); + cdev = console_get_first_active(); if (!cdev) { printf("%s:No console device %s with STDIN and STDOUT\n", argv[0], cname ? cname : "default"); @@ -202,7 +182,7 @@ static int do_loadx(int argc, char *argv[]) if (cname) cdev = get_named_console(cname); else - cdev = get_current_console(); + cdev = console_get_first_active(); if (!cdev) { printf("%s:No console device %s with STDIN and STDOUT\n", argv[0], cname ? cname : "default"); diff --git a/common/console_common.c b/common/console_common.c index d139d1a8f..a3aca6f46 100644 --- a/common/console_common.c +++ b/common/console_common.c @@ -108,3 +108,25 @@ int fputc(int fd, char c) return 0; } EXPORT_SYMBOL(fputc); + +/* + * @brief returns current used console device + * + * @return console device which is registered with CONSOLE_STDIN and + * CONSOLE_STDOUT + */ +struct console_device *console_get_first_active(void) +{ + struct console_device *cdev; + /* + * Assumption to have BOTH CONSOLE_STDIN AND STDOUT in the + * same output console + */ + for_each_console(cdev) { + if ((cdev->f_active & (CONSOLE_STDIN | CONSOLE_STDOUT))) + return cdev; + } + + return NULL; +} +EXPORT_SYMBOL(console_get_first_active); diff --git a/include/console.h b/include/console.h index 56e0484e9..707ba92f3 100644 --- a/include/console.h +++ b/include/console.h @@ -53,4 +53,6 @@ extern struct list_head console_list; #define CFG_PBSIZE (CONFIG_CBSIZE+sizeof(CONFIG_PROMPT)+16) +struct console_device *console_get_first_active(void); + #endif