All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Herring <robherring2@gmail.com>
To: Grant Likely <grant.likely@secretlab.ca>
Cc: devicetree-discuss@lists.ozlabs.org,
	Arnd Bergmann <arnd@arndb.de>,
	linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org,
	Alan Cox <alan@linux.intel.com>
Subject: Re: [PATCH] tty/serial: change of_serial to use new of_property_read_u32() api
Date: Thu, 30 Jun 2011 15:57:22 -0500	[thread overview]
Message-ID: <4E0CE332.4040102@gmail.com> (raw)
In-Reply-To: <20110630185921.13784.3823.stgit@ponder>

Grant,

On 06/30/2011 02:00 PM, Grant Likely wrote:
> Simplifies the code a bit and drops a few lines.
> 
> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
> ---
> 
> I've only actually build tested this, but this shows some of the cleanup
> achieved using the of_property_read_u32() API.  If this gets merged in the
> v3.1 merge window then it will need to go via the devicetree/next branch.
> 
> g.

You can't give yourself bonus points. ;)

> 
>  drivers/tty/serial/of_serial.c |   37 +++++++++++++++----------------------
>  1 files changed, 15 insertions(+), 22 deletions(-)
> 
> diff --git a/drivers/tty/serial/of_serial.c b/drivers/tty/serial/of_serial.c
> index 36038ed..dbfbfda 100644
> --- a/drivers/tty/serial/of_serial.c
> +++ b/drivers/tty/serial/of_serial.c
> @@ -32,17 +32,17 @@ static int __devinit of_platform_serial_setup(struct platform_device *ofdev,
>  {
>  	struct resource resource;
>  	struct device_node *np = ofdev->dev.of_node;
> -	const __be32 *clk, *spd;
> -	const __be32 *prop;
> -	int ret, prop_size;
> +	u32 clk, spd, prop;
> +	int ret;
>  
>  	memset(port, 0, sizeof *port);
> -	spd = of_get_property(np, "current-speed", NULL);
> -	clk = of_get_property(np, "clock-frequency", NULL);
> -	if (!clk) {
> +	if (of_property_read_u32(np, "clock-frequency", &clk)) {

s/clk/port->uartclk/

And below, then remove clk.

>  		dev_warn(&ofdev->dev, "no clock-frequency property set\n");
>  		return -ENODEV;
>  	}
> +	/* If current-speed was set, then try not to change it. */
> +	if (of_property_read_u32(np, "current-speed", &spd) == 0)
> +		port->custom_divisor = clk / (16 * spd);
>  
>  	ret = of_address_to_resource(np, 0, &resource);
>  	if (ret) {
> @@ -54,20 +54,17 @@ static int __devinit of_platform_serial_setup(struct platform_device *ofdev,
>  	port->mapbase = resource.start;
>  
>  	/* Check for shifted address mapping */
> -	prop = of_get_property(np, "reg-offset", &prop_size);
> -	if (prop && (prop_size == sizeof(u32)))
> -		port->mapbase += be32_to_cpup(prop);
> +	if (of_property_read_u32(np, "reg-offset", &prop) == 0)
> +		port->mapbase += prop;
>  
>  	/* Check for registers offset within the devices address range */
> -	prop = of_get_property(np, "reg-shift", &prop_size);
> -	if (prop && (prop_size == sizeof(u32)))
> -		port->regshift = be32_to_cpup(prop);
> +	if (of_property_read_u32(np, "reg-shift", &prop) == 0)
> +		port->regshift = prop;

Can be further simplified:

of_property_read_u32(np, "reg-shift", &port->regshift);

Rob

>  
>  	port->irq = irq_of_parse_and_map(np, 0);
>  	port->iotype = UPIO_MEM;
> -	prop = of_get_property(np, "reg-io-width", &prop_size);
> -	if (prop && (prop_size == sizeof(u32))) {
> -		switch (be32_to_cpup(prop)) {
> +	if (of_property_read_u32(np, "reg-io-width", &prop) == 0) {
> +		switch (prop) {
>  		case 1:
>  			port->iotype = UPIO_MEM;
>  			break;
> @@ -75,21 +72,17 @@ static int __devinit of_platform_serial_setup(struct platform_device *ofdev,
>  			port->iotype = UPIO_MEM32;
>  			break;
>  		default:
> -			dev_warn(&ofdev->dev,
> -				 "unsupported io width (%d bytes)\n",
> -				 be32_to_cpup(prop));
> +			dev_warn(&ofdev->dev, "unsupported reg-io-width (%d)\n",
> +				 prop);
>  			return -EINVAL;
>  		}
>  	}
>  
>  	port->type = type;
> -	port->uartclk = be32_to_cpup(clk);
> +	port->uartclk = clk;
>  	port->flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP
>  		| UPF_FIXED_PORT | UPF_FIXED_TYPE;
>  	port->dev = &ofdev->dev;
> -	/* If current-speed was set, then try not to change it. */
> -	if (spd)
> -		port->custom_divisor = be32_to_cpup(clk) / (16 * (be32_to_cpup(spd)));
>  
>  	return 0;
>  }
> 
> _______________________________________________
> devicetree-discuss mailing list
> devicetree-discuss@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/devicetree-discuss


  reply	other threads:[~2011-06-30 20:57 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-30 19:00 [PATCH] tty/serial: change of_serial to use new of_property_read_u32() api Grant Likely
2011-06-30 20:57 ` Rob Herring [this message]
2011-06-30 21:01   ` Grant Likely
2011-06-30 21:01     ` Grant Likely
2011-07-01 16:32 ` Arnd Bergmann

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=4E0CE332.4040102@gmail.com \
    --to=robherring2@gmail.com \
    --cc=alan@linux.intel.com \
    --cc=arnd@arndb.de \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=grant.likely@secretlab.ca \
    --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 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.