From: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
To: Arnd Bergmann <arnd@arndb.de>
Cc: linux-kernel@vger.kernel.org, Alan Cox <alan@linux.intel.com>,
devicetree-discuss@lists.ozlabs.org,
Greg Kroah-Hartman <gregkh@suse.de>,
kernel@pengutronix.de, linux-serial@vger.kernel.org
Subject: Re: [PATCH] serial/efm32: add new driver
Date: Fri, 23 Dec 2011 21:44:28 +0100 [thread overview]
Message-ID: <20111223204428.GI24496@pengutronix.de> (raw)
In-Reply-To: <201112231035.23215.arnd@arndb.de>
Hello Arnd,
On Fri, Dec 23, 2011 at 10:35:22AM +0000, Arnd Bergmann wrote:
> On Thursday 22 December 2011, Uwe Kleine-König wrote:
>
> > @@ -0,0 +1,14 @@
> > +* Energymicro efm32 UART
> > +
> > +Required properties:
> > +- compatible : Should be "efm32,usart"
> > +- reg : Address and length of the register set
> > +- interrupts : Should contain uart interrupt
> > +
> > +Example:
> > +
> > +uart@0x4000c400 {
> > + compatible = "efm32,usart";
> > + reg = <0x4000c400 0x400>;
> > + interrupts = <15>;
> > +};
>
> Do you know if the usart was actually designed by energymicro or licensed
> from another party? If it is a licensed part, it would be better to
> list the "compatible" value under the company name that made it.
I don't know so I passed the question to them.
> I would suggest that you also support the "clock-frequency" and/or
> "current-speed" properties that are defined for serial ports, see the
> of_serial driver.
I will have a look to find out what they mean and update the patch
accordingly.
> > diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
> > index 925a1e5..cfeb0f3 100644
> > --- a/drivers/tty/serial/Kconfig
> > +++ b/drivers/tty/serial/Kconfig
> > @@ -1610,4 +1610,14 @@ config SERIAL_XILINX_PS_UART_CONSOLE
> > help
> > Enable a Xilinx PS UART port to be the system console.
> >
> > +config SERIAL_EFM32_USART
> > + bool "EFM32 USART port."
> > + depends on ARCH_EFM32
> > + select SERIAL_CORE
>
> Why not tristate? If it's not a console, you should be able to use
> it as a module.
Hmm, in theory yes. (In practice modules on mmu are not that trivial,
see the corresponding thread on lakml.) I will update but I guess I can
only build test that configuration.
> I would generally prefer not to make the driver depend on the
> platform, so we can get better compile time coverage. I think a better
> set of dependencies would be
>
> depends on HAVE_CLK
> depends on OF
> default ARCH_EFM32
I'd prefer something like:
depends on HAVE_CLK
depends on ARCH_EFM32 || I_DO_BUILD_COVERAGE_TESTING
This would make it easier for Joe User to pick the right options for his
kernel (assuming he found out to better keep I_DO_BUILD_COVERAGE_TESTING
disabled). There is no hard dependency on OF in the driver and I guess
at least the in-production (and out-of-tree) usage will still stick to
non-OF because it saves some RAM. So I'd prefer not to add that.
(And it would help build coverage testing ;-)
> > +static void efm32_usart_write32(struct efm32_usart_port *efm_port,
> > + u32 value, unsigned offset)
> > +{
> > + __raw_writel(value, efm_port->port.membase + offset);
> > +}
> > +
> > +static u32 efm32_usart_read32(struct efm32_usart_port *efm_port,
> > + unsigned offset)
> > +{
> > + return __raw_readl(efm_port->port.membase + offset);
> > +}
>
> Please use writel_relaxed() instead of __raw_writel().
ok
> > +static int __devinit efm32_usart_probe(struct platform_device *pdev)
> > +{
> > + struct efm32_usart_port *efm_port;
> > + struct resource *res;
> > + int ret;
> > +
> > + efm_port = kzalloc(sizeof(*efm_port), GFP_KERNEL);
> > + if (!efm_port) {
> > + dev_dbg(&pdev->dev, "failed to allocate private data\n");
> > + return -ENOMEM;
> > + }
> > +
> > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> > + if (!res) {
> > + ret = -ENODEV;
> > + dev_dbg(&pdev->dev, "failed to determine base address\n");
> > + goto err_get_base;
> > + }
> > +
> > + if (resource_size(res) < 60) {
> > + ret = -EINVAL;
> > + dev_dbg(&pdev->dev, "memory resource too small\n");
> > + goto err_too_small;
> > + }
>
> of_iomap() would be simpler here. I think you can leave out the assignment to
> mapbase, and go straight to membase here.
but ioremap is only done in .request_port, so it's necessary to have two
steps here, isn't it?
> checking the resource size should not be necessary, because that would imply
> having an invalid device tree, which you don't have to check at run time.
hmm, I prefer an error message over an access to unmapped memory even if
that can only happen when the device tree is broken.
Best regards and thanks for your comments,
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
next prev parent reply other threads:[~2011-12-23 20:44 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-21 15:05 [PATCH] serial/efm32: add new driver Uwe Kleine-König
2011-12-21 20:28 ` Alan Cox
2011-12-22 8:57 ` Uwe Kleine-König
[not found] ` <20111221202847.4ffeba10-Z/y2cZnRghHXmaaqVzeoHQ@public.gmane.org>
2011-12-22 13:38 ` Uwe Kleine-König
2011-12-23 10:35 ` Arnd Bergmann
2011-12-23 20:44 ` Uwe Kleine-König [this message]
[not found] ` <20111223204428.GI24496-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-01-09 9:59 ` Kconfig option for compile time build coverage (Was: Re: [PATCH] serial/efm32: add new driver) Uwe Kleine-König
2012-01-25 16:16 ` Arnd Bergmann
2012-01-09 10:34 ` [PATCH] serial/efm32: add new driver Uwe Kleine-König
2012-01-25 16:56 ` Arnd Bergmann
[not found] ` <1324561092-1945-1-git-send-email-u.kleine-koenig-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-01-09 16:44 ` [PATCH v3] " Uwe Kleine-König
2012-01-24 22:05 ` Greg KH
2012-01-25 8:05 ` [PATCH v4] " Uwe Kleine-König
2012-01-25 8:25 ` Joe Perches
2012-01-25 8:41 ` Uwe Kleine-König
2012-01-25 15:52 ` Greg KH
2012-01-25 18:36 ` Uwe Kleine-König
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=20111223204428.GI24496@pengutronix.de \
--to=u.kleine-koenig@pengutronix.de \
--cc=alan@linux.intel.com \
--cc=arnd@arndb.de \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=gregkh@suse.de \
--cc=kernel@pengutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).