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

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.

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;
 		}
 
@@ -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))

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

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.

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;
 		}
 
@@ -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))

  parent reply	other threads:[~2008-07-18  7:40 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 ` Magnus Damm [this message]
2008-07-18  7:40   ` [PATCH 02/05] resource: add resource_type() and IORESOURCE_TYPE_BITS Magnus Damm
2008-07-18  7:56   ` Ben Dooks
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=20080718074018.32713.11976.sendpatchset@rx1.opensource.se \
    --to=magnus.damm@gmail.com \
    --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 \
    /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.