[PATCH] Alchemy: move UART platform code to its proper place - Kernel

This is a discussion on [PATCH] Alchemy: move UART platform code to its proper place - Kernel ; Move the code registering the Alchemy UART platform devices from drivers/serial/ to its proper place, into the Alchemy platform code. Fix the related Kconfig entry, while at it... Signed-off-by: Sergei Shtylyov --- Ralf, could you take this patch thru your ...

+ Reply to Thread
Results 1 to 3 of 3

Thread: [PATCH] Alchemy: move UART platform code to its proper place

  1. [PATCH] Alchemy: move UART platform code to its proper place

    Move the code registering the Alchemy UART platform devices from drivers/serial/
    to its proper place, into the Alchemy platform code. Fix the related Kconfig
    entry, while at it...

    Signed-off-by: Sergei Shtylyov

    ---
    Ralf, could you take this patch thru your queue -- it ahould apply atop of my
    former #include /extern cleanup?

    I don't know how the platform code ended up accepted into the serial drivers in
    the first place -- it's high time to amend this.

    drivers/serial/8250_au1x00.c | 100 -------------------------------------
    arch/mips/au1000/common/platform.c | 55 ++++++++++++++++++++
    drivers/serial/Kconfig | 8 +-
    drivers/serial/Makefile | 1
    4 files changed, 59 insertions(+), 105 deletions(-)

    Index: linux-2.6/arch/mips/au1000/common/platform.c
    ================================================== =================
    --- linux-2.6.orig/arch/mips/au1000/common/platform.c
    +++ linux-2.6/arch/mips/au1000/common/platform.c
    @@ -3,16 +3,63 @@
    *
    * Copyright 2004, Matt Porter
    *
    + * (C) Copyright Embedded Alley Solutions, Inc 2005
    + * Author: Pantelis Antoniou
    + *
    * This file is licensed under the terms of the GNU General Public
    * License version 2. This program is licensed "as is" without any
    * warranty of any kind, whether express or implied.
    */

    #include
    +#include
    #include

    #include

    +#define PORT(_base, _irq) \
    + { \
    + .iobase = _base, \
    + .membase = (void __iomem *)_base,\
    + .mapbase = CPHYSADDR(_base), \
    + .irq = _irq, \
    + .regshift = 2, \
    + .iotype = UPIO_AU, \
    + .flags = UPF_SKIP_TEST \
    + }
    +
    +static struct plat_serial8250_port au1x00_uart_data[] = {
    +#if defined(CONFIG_SOC_AU1000)
    + PORT(UART0_ADDR, AU1000_UART0_INT),
    + PORT(UART1_ADDR, AU1000_UART1_INT),
    + PORT(UART2_ADDR, AU1000_UART2_INT),
    + PORT(UART3_ADDR, AU1000_UART3_INT),
    +#elif defined(CONFIG_SOC_AU1500)
    + PORT(UART0_ADDR, AU1500_UART0_INT),
    + PORT(UART3_ADDR, AU1500_UART3_INT),
    +#elif defined(CONFIG_SOC_AU1100)
    + PORT(UART0_ADDR, AU1100_UART0_INT),
    + PORT(UART1_ADDR, AU1100_UART1_INT),
    + PORT(UART3_ADDR, AU1100_UART3_INT),
    +#elif defined(CONFIG_SOC_AU1550)
    + PORT(UART0_ADDR, AU1550_UART0_INT),
    + PORT(UART1_ADDR, AU1550_UART1_INT),
    + PORT(UART3_ADDR, AU1550_UART3_INT),
    +#elif defined(CONFIG_SOC_AU1200)
    + PORT(UART0_ADDR, AU1200_UART0_INT),
    + PORT(UART1_ADDR, AU1200_UART1_INT),
    +#endif
    + { },
    +};
    +
    +static struct platform_device au1xx0_uart_device = {
    + .name = "serial8250",
    + .id = PLAT8250_DEV_AU1X00,
    + .dev = {
    + .platform_data = au1x00_uart_data,
    + },
    +};
    +
    /* OHCI (USB full speed host controller) */
    static struct resource au1xxx_usb_ohci_resources[] = {
    [0] = {
    @@ -287,6 +334,7 @@ static struct platform_device pbdb_smbus
    #endif

    static struct platform_device *au1xxx_platform_devices[] __initdata = {
    + &au1xx0_uart_device,
    &au1xxx_usb_ohci_device,
    &au1x00_pcmcia_device,
    #ifdef CONFIG_FB_AU1100
    @@ -310,6 +358,13 @@ static struct platform_device *au1xxx_pl

    int __init au1xxx_platform_init(void)
    {
    + unsigned int uartclk = get_au1x00_uart_baud_base() * 16;
    + int i;
    +
    + /* Fill up uartclk. */
    + for (i = 0; au1x00_uart_data[i].flags ; i++)
    + au1x00_uart_data[i].uartclk = uartclk;
    +
    return platform_add_devices(au1xxx_platform_devices, ARRAY_SIZE(au1xxx_platform_devices));
    }

    Index: linux-2.6/drivers/serial/8250_au1x00.c
    ================================================== =================
    --- linux-2.6.orig/drivers/serial/8250_au1x00.c
    +++ /dev/null
    @@ -1,100 +0,0 @@
    -/*
    - * Serial Device Initialisation for Au1x00
    - *
    - * (C) Copyright Embedded Alley Solutions, Inc 2005
    - * Author: Pantelis Antoniou
    - *
    - * This program is free software; you can redistribute it and/or modify
    - * it under the terms of the GNU General Public License as published by
    - * the Free Software Foundation; either version 2 of the License, or
    - * (at your option) any later version.
    - */
    -
    -#include
    -#include
    -#include
    -#include
    -#include
    -#include
    -#include
    -#include
    -#include
    -
    -#include
    -
    -#include
    -
    -#include "8250.h"
    -
    -#define PORT(_base, _irq) \
    - { \
    - .iobase = _base, \
    - .membase = (void __iomem *)_base,\
    - .mapbase = CPHYSADDR(_base), \
    - .irq = _irq, \
    - .uartclk = 0, /* filled */ \
    - .regshift = 2, \
    - .iotype = UPIO_AU, \
    - .flags = UPF_SKIP_TEST \
    - }
    -
    -static struct plat_serial8250_port au1x00_data[] = {
    -#if defined(CONFIG_SOC_AU1000)
    - PORT(UART0_ADDR, AU1000_UART0_INT),
    - PORT(UART1_ADDR, AU1000_UART1_INT),
    - PORT(UART2_ADDR, AU1000_UART2_INT),
    - PORT(UART3_ADDR, AU1000_UART3_INT),
    -#elif defined(CONFIG_SOC_AU1500)
    - PORT(UART0_ADDR, AU1500_UART0_INT),
    - PORT(UART3_ADDR, AU1500_UART3_INT),
    -#elif defined(CONFIG_SOC_AU1100)
    - PORT(UART0_ADDR, AU1100_UART0_INT),
    - PORT(UART1_ADDR, AU1100_UART1_INT),
    - /* The internal UART2 does not exist on the AU1100 processor. */
    - PORT(UART3_ADDR, AU1100_UART3_INT),
    -#elif defined(CONFIG_SOC_AU1550)
    - PORT(UART0_ADDR, AU1550_UART0_INT),
    - PORT(UART1_ADDR, AU1550_UART1_INT),
    - PORT(UART3_ADDR, AU1550_UART3_INT),
    -#elif defined(CONFIG_SOC_AU1200)
    - PORT(UART0_ADDR, AU1200_UART0_INT),
    - PORT(UART1_ADDR, AU1200_UART1_INT),
    -#endif
    - { },
    -};
    -
    -static struct platform_device au1x00_device = {
    - .name = "serial8250",
    - .id = PLAT8250_DEV_AU1X00,
    - .dev = {
    - .platform_data = au1x00_data,
    - },
    -};
    -
    -static int __init au1x00_init(void)
    -{
    - int i;
    - unsigned int uartclk;
    -
    - /* get uart clock */
    - uartclk = get_au1x00_uart_baud_base() * 16;
    -
    - /* fill up uartclk */
    - for (i = 0; au1x00_data[i].flags ; i++)
    - au1x00_data[i].uartclk = uartclk;
    -
    - return platform_device_register(&au1x00_device);
    -}
    -
    -/* XXX: Yes, I know this doesn't yet work. */
    -static void __exit au1x00_exit(void)
    -{
    - platform_device_unregister(&au1x00_device);
    -}
    -
    -module_init(au1x00_init);
    -module_exit(au1x00_exit);
    -
    -MODULE_AUTHOR("Pantelis Antoniou ");
    -MODULE_DESCRIPTION("8250 serial probe module for Au1x000 cards");
    -MODULE_LICENSE("GPL");
    Index: linux-2.6/drivers/serial/Kconfig
    ================================================== =================
    --- linux-2.6.orig/drivers/serial/Kconfig
    +++ linux-2.6/drivers/serial/Kconfig
    @@ -262,12 +262,12 @@ config SERIAL_8250_ACORN
    cards. If unsure, say N.

    config SERIAL_8250_AU1X00
    - bool "AU1X00 serial port support"
    + bool "Au1x00 serial port support"
    depends on SERIAL_8250 != n && SOC_AU1X00
    help
    - If you have an Au1x00 board and want to use the serial port, say Y
    - to this option. The driver can handle 1 or 2 serial ports.
    - If unsure, say N.
    + If you have an Au1x00 SOC based board and want to use the serial port,
    + say Y to this option. The driver can handle up to 4 serial ports,
    + depending on the SOC. If unsure, say N.

    config SERIAL_8250_RM9K
    bool "Support for MIPS RM9xxx integrated serial port"
    Index: linux-2.6/drivers/serial/Makefile
    ================================================== =================
    --- linux-2.6.orig/drivers/serial/Makefile
    +++ linux-2.6/drivers/serial/Makefile
    @@ -20,7 +20,6 @@ obj-$(CONFIG_SERIAL_8250_BOCA) += 8250_b
    obj-$(CONFIG_SERIAL_8250_EXAR_ST16C554) += 8250_exar_st16c554.o
    obj-$(CONFIG_SERIAL_8250_HUB6) += 8250_hub6.o
    obj-$(CONFIG_SERIAL_8250_MCA) += 8250_mca.o
    -obj-$(CONFIG_SERIAL_8250_AU1X00) += 8250_au1x00.o
    obj-$(CONFIG_SERIAL_AMBA_PL010) += amba-pl010.o
    obj-$(CONFIG_SERIAL_AMBA_PL011) += amba-pl011.o
    obj-$(CONFIG_SERIAL_CLPS711X) += clps711x.o

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  2. Re: [PATCH] Alchemy: move UART platform code to its proper place

    On Fri, Apr 04, 2008 at 12:02:53AM +0400, Sergei Shtylyov wrote:

    > Move the code registering the Alchemy UART platform devices from drivers/serial/
    > to its proper place, into the Alchemy platform code. Fix the related Kconfig
    > entry, while at it...
    >
    > Signed-off-by: Sergei Shtylyov
    >
    > ---
    > Ralf, could you take this patch thru your queue -- it ahould apply atop of my
    > former #include /extern cleanup?
    >
    > I don't know how the platform code ended up accepted into the serial drivers in
    > the first place -- it's high time to amend this.


    Andrew, I'd like to queue this patch, ok?

    Ralf

    > drivers/serial/8250_au1x00.c | 100 -------------------------------------
    > arch/mips/au1000/common/platform.c | 55 ++++++++++++++++++++
    > drivers/serial/Kconfig | 8 +-
    > drivers/serial/Makefile | 1
    > 4 files changed, 59 insertions(+), 105 deletions(-)
    >
    > Index: linux-2.6/arch/mips/au1000/common/platform.c
    > ================================================== =================
    > --- linux-2.6.orig/arch/mips/au1000/common/platform.c
    > +++ linux-2.6/arch/mips/au1000/common/platform.c
    > @@ -3,16 +3,63 @@
    > *
    > * Copyright 2004, Matt Porter
    > *
    > + * (C) Copyright Embedded Alley Solutions, Inc 2005
    > + * Author: Pantelis Antoniou
    > + *
    > * This file is licensed under the terms of the GNU General Public
    > * License version 2. This program is licensed "as is" without any
    > * warranty of any kind, whether express or implied.
    > */
    >
    > #include
    > +#include
    > #include
    >
    > #include
    >
    > +#define PORT(_base, _irq) \
    > + { \
    > + .iobase = _base, \
    > + .membase = (void __iomem *)_base,\
    > + .mapbase = CPHYSADDR(_base), \
    > + .irq = _irq, \
    > + .regshift = 2, \
    > + .iotype = UPIO_AU, \
    > + .flags = UPF_SKIP_TEST \
    > + }
    > +
    > +static struct plat_serial8250_port au1x00_uart_data[] = {
    > +#if defined(CONFIG_SOC_AU1000)
    > + PORT(UART0_ADDR, AU1000_UART0_INT),
    > + PORT(UART1_ADDR, AU1000_UART1_INT),
    > + PORT(UART2_ADDR, AU1000_UART2_INT),
    > + PORT(UART3_ADDR, AU1000_UART3_INT),
    > +#elif defined(CONFIG_SOC_AU1500)
    > + PORT(UART0_ADDR, AU1500_UART0_INT),
    > + PORT(UART3_ADDR, AU1500_UART3_INT),
    > +#elif defined(CONFIG_SOC_AU1100)
    > + PORT(UART0_ADDR, AU1100_UART0_INT),
    > + PORT(UART1_ADDR, AU1100_UART1_INT),
    > + PORT(UART3_ADDR, AU1100_UART3_INT),
    > +#elif defined(CONFIG_SOC_AU1550)
    > + PORT(UART0_ADDR, AU1550_UART0_INT),
    > + PORT(UART1_ADDR, AU1550_UART1_INT),
    > + PORT(UART3_ADDR, AU1550_UART3_INT),
    > +#elif defined(CONFIG_SOC_AU1200)
    > + PORT(UART0_ADDR, AU1200_UART0_INT),
    > + PORT(UART1_ADDR, AU1200_UART1_INT),
    > +#endif
    > + { },
    > +};
    > +
    > +static struct platform_device au1xx0_uart_device = {
    > + .name = "serial8250",
    > + .id = PLAT8250_DEV_AU1X00,
    > + .dev = {
    > + .platform_data = au1x00_uart_data,
    > + },
    > +};
    > +
    > /* OHCI (USB full speed host controller) */
    > static struct resource au1xxx_usb_ohci_resources[] = {
    > [0] = {
    > @@ -287,6 +334,7 @@ static struct platform_device pbdb_smbus
    > #endif
    >
    > static struct platform_device *au1xxx_platform_devices[] __initdata = {
    > + &au1xx0_uart_device,
    > &au1xxx_usb_ohci_device,
    > &au1x00_pcmcia_device,
    > #ifdef CONFIG_FB_AU1100
    > @@ -310,6 +358,13 @@ static struct platform_device *au1xxx_pl
    >
    > int __init au1xxx_platform_init(void)
    > {
    > + unsigned int uartclk = get_au1x00_uart_baud_base() * 16;
    > + int i;
    > +
    > + /* Fill up uartclk. */
    > + for (i = 0; au1x00_uart_data[i].flags ; i++)
    > + au1x00_uart_data[i].uartclk = uartclk;
    > +
    > return platform_add_devices(au1xxx_platform_devices, ARRAY_SIZE(au1xxx_platform_devices));
    > }
    >
    > Index: linux-2.6/drivers/serial/8250_au1x00.c
    > ================================================== =================
    > --- linux-2.6.orig/drivers/serial/8250_au1x00.c
    > +++ /dev/null
    > @@ -1,100 +0,0 @@
    > -/*
    > - * Serial Device Initialisation for Au1x00
    > - *
    > - * (C) Copyright Embedded Alley Solutions, Inc 2005
    > - * Author: Pantelis Antoniou
    > - *
    > - * This program is free software; you can redistribute it and/or modify
    > - * it under the terms of the GNU General Public License as published by
    > - * the Free Software Foundation; either version 2 of the License, or
    > - * (at your option) any later version.
    > - */
    > -
    > -#include
    > -#include
    > -#include
    > -#include
    > -#include
    > -#include
    > -#include
    > -#include
    > -#include
    > -
    > -#include
    > -
    > -#include
    > -
    > -#include "8250.h"
    > -
    > -#define PORT(_base, _irq) \
    > - { \
    > - .iobase = _base, \
    > - .membase = (void __iomem *)_base,\
    > - .mapbase = CPHYSADDR(_base), \
    > - .irq = _irq, \
    > - .uartclk = 0, /* filled */ \
    > - .regshift = 2, \
    > - .iotype = UPIO_AU, \
    > - .flags = UPF_SKIP_TEST \
    > - }
    > -
    > -static struct plat_serial8250_port au1x00_data[] = {
    > -#if defined(CONFIG_SOC_AU1000)
    > - PORT(UART0_ADDR, AU1000_UART0_INT),
    > - PORT(UART1_ADDR, AU1000_UART1_INT),
    > - PORT(UART2_ADDR, AU1000_UART2_INT),
    > - PORT(UART3_ADDR, AU1000_UART3_INT),
    > -#elif defined(CONFIG_SOC_AU1500)
    > - PORT(UART0_ADDR, AU1500_UART0_INT),
    > - PORT(UART3_ADDR, AU1500_UART3_INT),
    > -#elif defined(CONFIG_SOC_AU1100)
    > - PORT(UART0_ADDR, AU1100_UART0_INT),
    > - PORT(UART1_ADDR, AU1100_UART1_INT),
    > - /* The internal UART2 does not exist on the AU1100 processor. */
    > - PORT(UART3_ADDR, AU1100_UART3_INT),
    > -#elif defined(CONFIG_SOC_AU1550)
    > - PORT(UART0_ADDR, AU1550_UART0_INT),
    > - PORT(UART1_ADDR, AU1550_UART1_INT),
    > - PORT(UART3_ADDR, AU1550_UART3_INT),
    > -#elif defined(CONFIG_SOC_AU1200)
    > - PORT(UART0_ADDR, AU1200_UART0_INT),
    > - PORT(UART1_ADDR, AU1200_UART1_INT),
    > -#endif
    > - { },
    > -};
    > -
    > -static struct platform_device au1x00_device = {
    > - .name = "serial8250",
    > - .id = PLAT8250_DEV_AU1X00,
    > - .dev = {
    > - .platform_data = au1x00_data,
    > - },
    > -};
    > -
    > -static int __init au1x00_init(void)
    > -{
    > - int i;
    > - unsigned int uartclk;
    > -
    > - /* get uart clock */
    > - uartclk = get_au1x00_uart_baud_base() * 16;
    > -
    > - /* fill up uartclk */
    > - for (i = 0; au1x00_data[i].flags ; i++)
    > - au1x00_data[i].uartclk = uartclk;
    > -
    > - return platform_device_register(&au1x00_device);
    > -}
    > -
    > -/* XXX: Yes, I know this doesn't yet work. */
    > -static void __exit au1x00_exit(void)
    > -{
    > - platform_device_unregister(&au1x00_device);
    > -}
    > -
    > -module_init(au1x00_init);
    > -module_exit(au1x00_exit);
    > -
    > -MODULE_AUTHOR("Pantelis Antoniou ");
    > -MODULE_DESCRIPTION("8250 serial probe module for Au1x000 cards");
    > -MODULE_LICENSE("GPL");
    > Index: linux-2.6/drivers/serial/Kconfig
    > ================================================== =================
    > --- linux-2.6.orig/drivers/serial/Kconfig
    > +++ linux-2.6/drivers/serial/Kconfig
    > @@ -262,12 +262,12 @@ config SERIAL_8250_ACORN
    > cards. If unsure, say N.
    >
    > config SERIAL_8250_AU1X00
    > - bool "AU1X00 serial port support"
    > + bool "Au1x00 serial port support"
    > depends on SERIAL_8250 != n && SOC_AU1X00
    > help
    > - If you have an Au1x00 board and want to use the serial port, say Y
    > - to this option. The driver can handle 1 or 2 serial ports.
    > - If unsure, say N.
    > + If you have an Au1x00 SOC based board and want to use the serial port,
    > + say Y to this option. The driver can handle up to 4 serial ports,
    > + depending on the SOC. If unsure, say N.
    >
    > config SERIAL_8250_RM9K
    > bool "Support for MIPS RM9xxx integrated serial port"
    > Index: linux-2.6/drivers/serial/Makefile
    > ================================================== =================
    > --- linux-2.6.orig/drivers/serial/Makefile
    > +++ linux-2.6/drivers/serial/Makefile
    > @@ -20,7 +20,6 @@ obj-$(CONFIG_SERIAL_8250_BOCA) += 8250_b
    > obj-$(CONFIG_SERIAL_8250_EXAR_ST16C554) += 8250_exar_st16c554.o
    > obj-$(CONFIG_SERIAL_8250_HUB6) += 8250_hub6.o
    > obj-$(CONFIG_SERIAL_8250_MCA) += 8250_mca.o
    > -obj-$(CONFIG_SERIAL_8250_AU1X00) += 8250_au1x00.o
    > obj-$(CONFIG_SERIAL_AMBA_PL010) += amba-pl010.o
    > obj-$(CONFIG_SERIAL_AMBA_PL011) += amba-pl011.o
    > obj-$(CONFIG_SERIAL_CLPS711X) += clps711x.o

    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  3. Re: [PATCH] Alchemy: move UART platform code to its proper place

    On Fri, 4 Apr 2008 07:29:25 +0100 Ralf Baechle wrote:

    > On Fri, Apr 04, 2008 at 12:02:53AM +0400, Sergei Shtylyov wrote:
    >
    > > Move the code registering the Alchemy UART platform devices from drivers/serial/
    > > to its proper place, into the Alchemy platform code. Fix the related Kconfig
    > > entry, while at it...
    > >
    > > Signed-off-by: Sergei Shtylyov
    > >
    > > ---
    > > Ralf, could you take this patch thru your queue -- it ahould apply atop of my
    > > former #include /extern cleanup?
    > >
    > > I don't know how the platform code ended up accepted into the serial drivers in
    > > the first place -- it's high time to amend this.

    >
    > Andrew, I'd like to queue this patch, ok?


    Sure..
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

+ Reply to Thread