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'
next prev parent 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.