All of lore.kernel.org
 help / color / mirror / Atom feed
From: shawn.guo@freescale.com (Shawn Guo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] ARM: mxs: Change duart device to use amba-pl011
Date: Fri, 31 Dec 2010 13:16:15 +0800	[thread overview]
Message-ID: <20101231051518.GA389@freescale.com> (raw)
In-Reply-To: <20101229091247.GP14221@pengutronix.de>

Hi Uwe,

On Wed, Dec 29, 2010 at 10:12:47AM +0100, Uwe Kleine-K?nig wrote:
> Hello Shawn,
> 
> just a few thought that came to my mind when reading your patch ...
> 
> On Tue, Dec 28, 2010 at 11:23:14PM +0800, Shawn Guo wrote:
> > The mxs duart is actually an amba-pl011 device. This commit changes
> > the duart device code to dynamically allocate amba-pl011 device,
> > so that drivers/serial/amba-pl011.c can be used on mxs.
> >
> > Signed-off-by: Shawn Guo <shawn.guo@freescale.com>
> > ---
> > Changes for v2:
> >  - Add #include <asm/irq.h> into amba-duart.c. When cleaning headers
> >    includsion in other files, compiler start complaining NO_IRQ not
> >    defined, so add the inclusion to fix it.
> >  - Change MXS_AMBA_DEVICE to MXS_AMBA_DUART_DEVICE
> >
> >  arch/arm/mach-mxs/Kconfig                       |    6 ++-
> >  arch/arm/mach-mxs/clock-mx23.c                  |    2 +-
> >  arch/arm/mach-mxs/clock-mx28.c                  |    2 +-
> >  arch/arm/mach-mxs/devices-mx23.h                |    4 +-
> >  arch/arm/mach-mxs/devices-mx28.h                |    4 +-
> >  arch/arm/mach-mxs/devices/Kconfig               |    2 +-
> >  arch/arm/mach-mxs/devices/Makefile              |    2 +-
> >  arch/arm/mach-mxs/devices/amba-duart.c          |   40 +++++++++++++++++++
> >  arch/arm/mach-mxs/devices/platform-duart.c      |   48 -----------------------
> >  arch/arm/mach-mxs/include/mach/devices-common.h |    9 +---
> >  10 files changed, 54 insertions(+), 65 deletions(-)
> >  create mode 100644 arch/arm/mach-mxs/devices/amba-duart.c
> >  delete mode 100644 arch/arm/mach-mxs/devices/platform-duart.c
> >
> > diff --git a/arch/arm/mach-mxs/Kconfig b/arch/arm/mach-mxs/Kconfig
> > index c4ac7b4..0d072e9 100644
> > --- a/arch/arm/mach-mxs/Kconfig
> > +++ b/arch/arm/mach-mxs/Kconfig
> > @@ -5,17 +5,19 @@ source "arch/arm/mach-mxs/devices/Kconfig"
> >  config SOC_IMX23
> >       bool
> >       select CPU_ARM926T
> > +     select ARM_AMBA
> >
> >  config SOC_IMX28
> >       bool
> >       select CPU_ARM926T
> > +     select ARM_AMBA
> Maybe let MXS_HAVE_AMBA_DUART let select ARM_AMBA?
> 
OK.

> >  comment "MXS platforms:"
> >
> >  config MACH_MX23EVK
> >       bool "Support MX23EVK Platform"
> >       select SOC_IMX23
> > -     select MXS_HAVE_PLATFORM_DUART
> > +     select MXS_HAVE_AMBA_DUART
> >       default y
> >       help
> >         Include support for MX23EVK platform. This includes specific
> > @@ -24,7 +26,7 @@ config MACH_MX23EVK
> >  config MACH_MX28EVK
> >       bool "Support MX28EVK Platform"
> >       select SOC_IMX28
> > -     select MXS_HAVE_PLATFORM_DUART
> > +     select MXS_HAVE_AMBA_DUART
> >       select MXS_HAVE_PLATFORM_FEC
> >       default y
> >       help
> > diff --git a/arch/arm/mach-mxs/clock-mx23.c b/arch/arm/mach-mxs/clock-mx23.c
> > index 8f5a19a..0f65d15 100644
> > --- a/arch/arm/mach-mxs/clock-mx23.c
> > +++ b/arch/arm/mach-mxs/clock-mx23.c
> > @@ -437,7 +437,7 @@ _DEFINE_CLOCK(clk32k_clk, XTAL, TIMROT_CLK32K_GATE, &ref_xtal_clk);
> >       },
> >
> >  static struct clk_lookup lookups[] = {
> > -     _REGISTER_CLOCK("mxs-duart.0", NULL, uart_clk)
> > +     _REGISTER_CLOCK("uart", NULL, uart_clk)
> hmm, I still don't like that.  What do you think about having an alias
> for uart_clk that is named "duart" or similar?
> 
So you are expecting something below, when application uart
comes in? I'm okay with it. 

	_REGISTER_CLOCK("duart", NULL, uart_clk)
	_REGISTER_CLOCK("auart", NULL, uart_clk)

> >       _REGISTER_CLOCK("rtc", NULL, rtc_clk)
> >       _REGISTER_CLOCK(NULL, "hclk", hbus_clk)
> >       _REGISTER_CLOCK(NULL, "xclk", xbus_clk)
> > diff --git a/arch/arm/mach-mxs/clock-mx28.c b/arch/arm/mach-mxs/clock-mx28.c
> > index 74e2103..dd6d158 100644
> > --- a/arch/arm/mach-mxs/clock-mx28.c
> > +++ b/arch/arm/mach-mxs/clock-mx28.c
> > @@ -602,7 +602,7 @@ _DEFINE_CLOCK(fec_clk, ENET, DISABLE, &hbus_clk);
> >       },
> >
> >  static struct clk_lookup lookups[] = {
> > -     _REGISTER_CLOCK("mxs-duart.0", NULL, uart_clk)
> > +     _REGISTER_CLOCK("uart", NULL, uart_clk)
> >       _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> >       _REGISTER_CLOCK("rtc", NULL, rtc_clk)
> >       _REGISTER_CLOCK("pll2", NULL, pll2_clk)
> > diff --git a/arch/arm/mach-mxs/devices-mx23.h b/arch/arm/mach-mxs/devices-mx23.h
> > index d0f49fc..36397ff 100644
> > --- a/arch/arm/mach-mxs/devices-mx23.h
> > +++ b/arch/arm/mach-mxs/devices-mx23.h
> > @@ -11,6 +11,6 @@
> >  #include <mach/mx23.h>
> >  #include <mach/devices-common.h>
> >
> > -extern const struct mxs_duart_data mx23_duart_data __initconst;
> > +extern struct amba_device mx23_duart_device;
> >  #define mx23_add_duart() \
> > -     mxs_add_duart(&mx23_duart_data)
> > +     mxs_add_duart(&mx23_duart_device)
> > diff --git a/arch/arm/mach-mxs/devices-mx28.h b/arch/arm/mach-mxs/devices-mx28.h
> > index 00b736c..e84a7fe 100644
> > --- a/arch/arm/mach-mxs/devices-mx28.h
> > +++ b/arch/arm/mach-mxs/devices-mx28.h
> > @@ -11,9 +11,9 @@
> >  #include <mach/mx28.h>
> >  #include <mach/devices-common.h>
> >
> > -extern const struct mxs_duart_data mx28_duart_data __initconst;
> > +extern struct amba_device mx28_duart_device;
> >  #define mx28_add_duart() \
> > -     mxs_add_duart(&mx28_duart_data)
> > +     mxs_add_duart(&mx28_duart_device)
> >
> >  extern const struct mxs_fec_data mx28_fec_data[] __initconst;
> >  #define mx28_add_fec(id, pdata) \
> > diff --git a/arch/arm/mach-mxs/devices/Kconfig b/arch/arm/mach-mxs/devices/Kconfig
> > index a35a2dc..3dff25c 100644
> > --- a/arch/arm/mach-mxs/devices/Kconfig
> > +++ b/arch/arm/mach-mxs/devices/Kconfig
> > @@ -1,4 +1,4 @@
> > -config MXS_HAVE_PLATFORM_DUART
> > +config MXS_HAVE_AMBA_DUART
> >       bool
> >
> >  config MXS_HAVE_PLATFORM_FEC
> > diff --git a/arch/arm/mach-mxs/devices/Makefile b/arch/arm/mach-mxs/devices/Makefile
> > index 4b5266a..d0a09f6 100644
> > --- a/arch/arm/mach-mxs/devices/Makefile
> > +++ b/arch/arm/mach-mxs/devices/Makefile
> > @@ -1,2 +1,2 @@
> > -obj-$(CONFIG_MXS_HAVE_PLATFORM_DUART) += platform-duart.o
> > +obj-$(CONFIG_MXS_HAVE_AMBA_DUART) += amba-duart.o
> >  obj-$(CONFIG_MXS_HAVE_PLATFORM_FEC) += platform-fec.o
> > diff --git a/arch/arm/mach-mxs/devices/amba-duart.c b/arch/arm/mach-mxs/devices/amba-duart.c
> > new file mode 100644
> > index 0000000..aa77d28
> > --- /dev/null
> > +++ b/arch/arm/mach-mxs/devices/amba-duart.c
> > @@ -0,0 +1,40 @@
> > +/*
> > + * Copyright (C) 2009-2010 Pengutronix
> > + * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
> > + *
> > + * Copyright 2010 Freescale Semiconductor, Inc. All Rights Reserved.
> > + *
> > + * This program is free software; you can redistribute it and/or modify it under
> > + * the terms of the GNU General Public License version 2 as published by the
> > + * Free Software Foundation.
> > + */
> > +#include <asm/irq.h>
> > +#include <mach/mx23.h>
> > +#include <mach/mx28.h>
> > +#include <mach/devices-common.h>
> > +
> > +#define MXS_AMBA_DUART_DEVICE(name, soc)                     \
> > +struct amba_device name##_device = {                         \
> > +     .dev = {                                                \
> > +             .init_name = "uart",                            \
> > +     },                                                      \
> > +     .res = {                                                \
> > +             .start = soc ## _DUART_BASE_ADDR,               \
> > +             .end = (soc ## _DUART_BASE_ADDR) + SZ_8K - 1,   \
> > +             .flags = IORESOURCE_MEM,                        \
> > +     },                                                      \
> > +     .irq = {soc ## _INT_DUART, NO_IRQ},                     \
> > +}
> > +
> > +#ifdef CONFIG_SOC_IMX23
> > +MXS_AMBA_DUART_DEVICE(mx23_duart, MX23);
> > +#endif
> > +
> > +#ifdef CONFIG_SOC_IMX28
> > +MXS_AMBA_DUART_DEVICE(mx28_duart, MX28);
> > +#endif
> > +
> > +int __init mxs_add_duart(struct amba_device *dev)
> > +{
> > +     return amba_device_register(dev, &iomem_resource);
> > +}
> This doesn't have the benefits of the construct for platform devices.
> (i.e. mx23_duart_device isn't marked with __initdata (or __initconst)
> and so occupies memory even when the kernel runs on an i.MX28.)
> At least making it __initconst and then do
> 
>         struct amba_device *adev = kmalloc(sizeof(*adev));
>         *adev = *dev
>         return amba_device_register(adev, ...);
> 
> (plus some error checking) would be nice.  Maybe put that into a wrapper
> similar to mxs_add_platform_device?  I didn't check the size of a struct
OK. Will address it in v3 coming soon.

> ambadevice, so I cannot tell if it's worth to create an extra struct to
> just carry the relevant data.
> 

-- 
Regards,
Shawn

  reply	other threads:[~2010-12-31  5:16 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-20 14:57 [PATCH v8 00/15] ARM: mxs: Add initial support for MX23 and MX28 Shawn Guo
2010-12-20 14:57 ` [PATCH v8 05/15] ARM: mxs: Add low-level debug UART support Shawn Guo
2010-12-20 14:57 ` [PATCH v8 08/15] ARM: mxs: Add iomux support Shawn Guo
2010-12-20 14:57 ` [PATCH v8 13/15] ARM: mxs: Add initial mx23evk support Shawn Guo
2010-12-20 21:29 ` [PATCH v8 00/15] ARM: mxs: Add initial support for MX23 and MX28 Uwe Kleine-König
2010-12-21  8:45   ` Shawn Guo
2010-12-21 13:26   ` Shawn Guo
2010-12-21 13:12 ` [PATCH] ARM: mxs: Change duart device to use amba-pl011 Shawn Guo
2010-12-21 20:31   ` Wolfram Sang
2010-12-22  2:10     ` Shawn Guo
2010-12-22 11:41       ` Wolfram Sang
2010-12-22 20:25   ` Uwe Kleine-König
2010-12-27 11:49     ` Shawn Guo
2010-12-29  8:38       ` Uwe Kleine-König
2011-01-03 10:39       ` Russell King - ARM Linux
2011-01-04  5:41         ` Shawn Guo
2011-01-03 10:35     ` Russell King - ARM Linux
2010-12-28 15:23 ` [PATCH v2] " Shawn Guo
2010-12-29  9:12   ` Uwe Kleine-König
2010-12-31  5:16     ` Shawn Guo [this message]
2010-12-31  5:50 ` [PATCH v3] " Shawn Guo
2011-01-04  6:20 ` [PATCH v4] " Shawn Guo
2011-01-10 13:34   ` Wolfram Sang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20101231051518.GA389@freescale.com \
    --to=shawn.guo@freescale.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.