All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ben Dooks <ben-linux@fluff.org>
To: Magnus Damm <magnus.damm@gmail.com>
Cc: linux-kernel@vger.kernel.org, linux-sh@vger.kernel.org,
	gregkh@suse.de, lethal@linux-sh.org, i2c@lm-sensors.org,
	akpm@linux-foundation.org
Subject: Re: [PATCH 02/05] resource: add resource_type() and IORESOURCE_TYPE_BITS
Date: Fri, 18 Jul 2008 08:56:01 +0100	[thread overview]
Message-ID: <20080718075601.GL24620@fluff.org.uk> (raw)
In-Reply-To: <20080718074018.32713.11976.sendpatchset@rx1.opensource.se>

On Fri, Jul 18, 2008 at 04:40:18PM +0900, Magnus Damm wrote:
> From: Magnus Damm <damm@igel.co.jp>
> 
> This patch adds resource_type() and IORESOURCE_TYPE_BITS. They make it
> easier to add more resource types without having to rewrite tons of code.

This looks ok to me, with one concern as shown below.

> Signed-off-by: Magnus Damm <damm@igel.co.jp>
> ---
> 
>  drivers/base/platform.c |   31 +++++++++++++++++--------------
>  include/linux/ioport.h  |    7 ++++++-
>  2 files changed, 23 insertions(+), 15 deletions(-)
> 
> --- 0001/drivers/base/platform.c
> +++ work/drivers/base/platform.c	2008-07-09 20:19:16.000000000 +0900
> @@ -42,10 +42,8 @@ struct resource *platform_get_resource(s
>  	for (i = 0; i < dev->num_resources; i++) {
>  		struct resource *r = &dev->resource[i];
>  
> -		if ((r->flags & (IORESOURCE_IO|IORESOURCE_MEM|
> -				 IORESOURCE_IRQ|IORESOURCE_DMA)) == type)
> -			if (num-- == 0)
> -				return r;
> +		if (type == resource_type(r) && num-- == 0)
> +			return r;
>  	}
>  	return NULL;
>  }
> @@ -78,10 +76,8 @@ struct resource *platform_get_resource_b
>  	for (i = 0; i < dev->num_resources; i++) {
>  		struct resource *r = &dev->resource[i];
>  
> -		if ((r->flags & (IORESOURCE_IO|IORESOURCE_MEM|
> -				 IORESOURCE_IRQ|IORESOURCE_DMA)) == type)
> -			if (!strcmp(r->name, name))
> -				return r;
> +		if (type == resource_type(r) && !strcmp(r->name, name))
> +			return r;
>  	}
>  	return NULL;
>  }
> @@ -259,9 +255,9 @@ int platform_device_add(struct platform_
>  
>  		p = r->parent;
>  		if (!p) {
> -			if (r->flags & IORESOURCE_MEM)
> +			if (resource_type(r) == IORESOURCE_MEM)
>  				p = &iomem_resource;
> -			else if (r->flags & IORESOURCE_IO)
> +			else if (resource_type(r) == IORESOURCE_IO)
>  				p = &ioport_resource;
>  		}

You are changing a simple test to a mask and compare, is anyone going
to produce resources with an IORESOURCE_MEM and an IORESOURCE_IO
together?
  
> @@ -282,9 +278,14 @@ int platform_device_add(struct platform_
>  		return ret;
>  
>   failed:
> -	while (--i >= 0)
> -		if (pdev->resource[i].flags & (IORESOURCE_MEM|IORESOURCE_IO))
> -			release_resource(&pdev->resource[i]);
> +	while (--i >= 0) {
> +		struct resource *r = &pdev->resource[i];
> +		unsigned long type = resource_type(r);
> +
> +		if (type == IORESOURCE_MEM || type == IORESOURCE_IO)
> +			release_resource(r);
> +	}
> +
>  	return ret;
>  }
>  EXPORT_SYMBOL_GPL(platform_device_add);
> @@ -306,7 +307,9 @@ void platform_device_del(struct platform
>  
>  		for (i = 0; i < pdev->num_resources; i++) {
>  			struct resource *r = &pdev->resource[i];
> -			if (r->flags & (IORESOURCE_MEM|IORESOURCE_IO))
> +			unsigned long type = resource_type(r);
> +
> +			if (type == IORESOURCE_MEM || type == IORESOURCE_IO)
>  				release_resource(r);
>  		}
>  	}
> --- 0002/include/linux/ioport.h
> +++ work/include/linux/ioport.h	2008-07-09 15:16:48.000000000 +0900
> @@ -34,7 +34,8 @@ struct resource_list {
>   */
>  #define IORESOURCE_BITS		0x000000ff	/* Bus-specific bits */
>  
> -#define IORESOURCE_IO		0x00000100	/* Resource type */
> +#define IORESOURCE_TYPE_BITS	0x00000f00	/* Resource type */
> +#define IORESOURCE_IO		0x00000100
>  #define IORESOURCE_MEM		0x00000200
>  #define IORESOURCE_IRQ		0x00000400
>  #define IORESOURCE_DMA		0x00000800
> @@ -117,6 +118,10 @@ static inline resource_size_t resource_s
>  {
>  	return res->end - res->start + 1;
>  }
> +static inline unsigned long resource_type(struct resource *res)
> +{
> +	return res->flags & IORESOURCE_TYPE_BITS;
> +}
>  
>  /* Convenience shorthand with allocation */
>  #define request_region(start,n,name)	__request_region(&ioport_resource, (start), (n), (name))
> --
> 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/

-- 
Ben (ben@fluff.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'

WARNING: multiple messages have this Message-ID (diff)
From: Ben Dooks <ben-linux@fluff.org>
To: Magnus Damm <magnus.damm@gmail.com>
Cc: linux-kernel@vger.kernel.org, linux-sh@vger.kernel.org,
	gregkh@suse.de, lethal@linux-sh.org, i2c@lm-sensors.org,
	akpm@linux-foundation.org
Subject: Re: [PATCH 02/05] resource: add resource_type() and
Date: Fri, 18 Jul 2008 07:56:01 +0000	[thread overview]
Message-ID: <20080718075601.GL24620@fluff.org.uk> (raw)
In-Reply-To: <20080718074018.32713.11976.sendpatchset@rx1.opensource.se>

On Fri, Jul 18, 2008 at 04:40:18PM +0900, Magnus Damm wrote:
> From: Magnus Damm <damm@igel.co.jp>
> 
> This patch adds resource_type() and IORESOURCE_TYPE_BITS. They make it
> easier to add more resource types without having to rewrite tons of code.

This looks ok to me, with one concern as shown below.

> Signed-off-by: Magnus Damm <damm@igel.co.jp>
> ---
> 
>  drivers/base/platform.c |   31 +++++++++++++++++--------------
>  include/linux/ioport.h  |    7 ++++++-
>  2 files changed, 23 insertions(+), 15 deletions(-)
> 
> --- 0001/drivers/base/platform.c
> +++ work/drivers/base/platform.c	2008-07-09 20:19:16.000000000 +0900
> @@ -42,10 +42,8 @@ struct resource *platform_get_resource(s
>  	for (i = 0; i < dev->num_resources; i++) {
>  		struct resource *r = &dev->resource[i];
>  
> -		if ((r->flags & (IORESOURCE_IO|IORESOURCE_MEM|
> -				 IORESOURCE_IRQ|IORESOURCE_DMA)) = type)
> -			if (num-- = 0)
> -				return r;
> +		if (type = resource_type(r) && num-- = 0)
> +			return r;
>  	}
>  	return NULL;
>  }
> @@ -78,10 +76,8 @@ struct resource *platform_get_resource_b
>  	for (i = 0; i < dev->num_resources; i++) {
>  		struct resource *r = &dev->resource[i];
>  
> -		if ((r->flags & (IORESOURCE_IO|IORESOURCE_MEM|
> -				 IORESOURCE_IRQ|IORESOURCE_DMA)) = type)
> -			if (!strcmp(r->name, name))
> -				return r;
> +		if (type = resource_type(r) && !strcmp(r->name, name))
> +			return r;
>  	}
>  	return NULL;
>  }
> @@ -259,9 +255,9 @@ int platform_device_add(struct platform_
>  
>  		p = r->parent;
>  		if (!p) {
> -			if (r->flags & IORESOURCE_MEM)
> +			if (resource_type(r) = IORESOURCE_MEM)
>  				p = &iomem_resource;
> -			else if (r->flags & IORESOURCE_IO)
> +			else if (resource_type(r) = IORESOURCE_IO)
>  				p = &ioport_resource;
>  		}

You are changing a simple test to a mask and compare, is anyone going
to produce resources with an IORESOURCE_MEM and an IORESOURCE_IO
together?
  
> @@ -282,9 +278,14 @@ int platform_device_add(struct platform_
>  		return ret;
>  
>   failed:
> -	while (--i >= 0)
> -		if (pdev->resource[i].flags & (IORESOURCE_MEM|IORESOURCE_IO))
> -			release_resource(&pdev->resource[i]);
> +	while (--i >= 0) {
> +		struct resource *r = &pdev->resource[i];
> +		unsigned long type = resource_type(r);
> +
> +		if (type = IORESOURCE_MEM || type = IORESOURCE_IO)
> +			release_resource(r);
> +	}
> +
>  	return ret;
>  }
>  EXPORT_SYMBOL_GPL(platform_device_add);
> @@ -306,7 +307,9 @@ void platform_device_del(struct platform
>  
>  		for (i = 0; i < pdev->num_resources; i++) {
>  			struct resource *r = &pdev->resource[i];
> -			if (r->flags & (IORESOURCE_MEM|IORESOURCE_IO))
> +			unsigned long type = resource_type(r);
> +
> +			if (type = IORESOURCE_MEM || type = IORESOURCE_IO)
>  				release_resource(r);
>  		}
>  	}
> --- 0002/include/linux/ioport.h
> +++ work/include/linux/ioport.h	2008-07-09 15:16:48.000000000 +0900
> @@ -34,7 +34,8 @@ struct resource_list {
>   */
>  #define IORESOURCE_BITS		0x000000ff	/* Bus-specific bits */
>  
> -#define IORESOURCE_IO		0x00000100	/* Resource type */
> +#define IORESOURCE_TYPE_BITS	0x00000f00	/* Resource type */
> +#define IORESOURCE_IO		0x00000100
>  #define IORESOURCE_MEM		0x00000200
>  #define IORESOURCE_IRQ		0x00000400
>  #define IORESOURCE_DMA		0x00000800
> @@ -117,6 +118,10 @@ static inline resource_size_t resource_s
>  {
>  	return res->end - res->start + 1;
>  }
> +static inline unsigned long resource_type(struct resource *res)
> +{
> +	return res->flags & IORESOURCE_TYPE_BITS;
> +}
>  
>  /* Convenience shorthand with allocation */
>  #define request_region(start,n,name)	__request_region(&ioport_resource, (start), (n), (name))
> --
> 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/

-- 
Ben (ben@fluff.org, http://www.fluff.org/)

  'a smiley only costs 4 bytes'

  reply	other threads:[~2008-07-18  7:56 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-18  7:40 [PATCH 00/05] resource: type, size and IORESOURCE_CLK patches V2 Magnus Damm
2008-07-18  7:40 ` Magnus Damm
2008-07-18  7:40 ` [PATCH 01/05] resource: add resource_size() Magnus Damm
2008-07-18  7:40   ` Magnus Damm
2008-07-18  7:54   ` Ben Dooks
2008-07-18  7:54     ` Ben Dooks
2008-07-18  7:40 ` [PATCH 02/05] resource: add resource_type() and IORESOURCE_TYPE_BITS Magnus Damm
2008-07-18  7:40   ` Magnus Damm
2008-07-18  7:56   ` Ben Dooks [this message]
2008-07-18  7:56     ` [PATCH 02/05] resource: add resource_type() and Ben Dooks
2008-07-18  8:24     ` [PATCH 02/05] resource: add resource_type() and IORESOURCE_TYPE_BITS Magnus Damm
2008-07-18  8:24       ` Magnus Damm
2008-07-18  8:33       ` Ben Dooks
2008-07-18  8:33         ` [PATCH 02/05] resource: add resource_type() and Ben Dooks
2008-07-18  9:05         ` [PATCH 02/05] resource: add resource_type() and IORESOURCE_TYPE_BITS Magnus Damm
2008-07-18  9:05           ` Magnus Damm
2008-07-18  7:40 ` [PATCH 03/05] resource: add new IORESOURCE_CLK type V2 Magnus Damm
2008-07-18  7:40   ` Magnus Damm
2008-07-18  7:53   ` [i2c] " Ben Dooks
2008-07-18  7:53     ` Ben Dooks
2008-07-18  8:53     ` Magnus Damm
2008-07-18  8:53       ` Magnus Damm
2008-07-18  7:40 ` [PATCH 04/05] i2c-sh_mobile: IORESOURCE_CLK support Magnus Damm
2008-07-18  7:40   ` Magnus Damm
2008-07-18  8:04   ` Ben Dooks
2008-07-18  8:04     ` Ben Dooks
2008-07-18  9:18     ` Magnus Damm
2008-07-18  9:18       ` Magnus Damm
2008-08-13  5:54       ` [i2c] " Ben Dooks
2008-08-13  5:54         ` Ben Dooks
2008-08-13  7:51         ` Russell King
2008-08-13  7:51           ` Russell King
2008-07-18  7:40 ` [PATCH 05/05] sh: add IORESOURCE_CLK to SuperH Mobile I2C platform data Magnus Damm
2008-07-18  7:40   ` Magnus Damm
2008-07-18 23:36   ` Andrew Morton
2008-07-18 23:36     ` Andrew Morton
2008-07-18 23:36     ` [PATCH 05/05] sh: add IORESOURCE_CLK to SuperH Mobile I2C Andrew Morton

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=20080718075601.GL24620@fluff.org.uk \
    --to=ben-linux@fluff.org \
    --cc=akpm@linux-foundation.org \
    --cc=gregkh@suse.de \
    --cc=i2c@lm-sensors.org \
    --cc=lethal@linux-sh.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    /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.