Re: [RFC PATCH] ARM: OMAP2+: omap-device: Do not overwrite resources allocated by OF layer

2012-09-07 Thread Benoit Cousson
Hi Vaibhav,

The following patch is hacing some checkpatch issues. 

CHECK: Alignment should match open parenthesis
#169: FILE: arch/arm/plat-omap/omap_device.c:591:
+   dev_dbg(pdev-dev, %s(): resources already allocated 
%d\n,
+   __func__, res_count);

CHECK: Alignment should match open parenthesis
#171: FILE: arch/arm/plat-omap/omap_device.c:593:
+   memcpy(res, pdev-resource,
+   sizeof(struct resource) * pdev-num_resources);

CHECK: Alignment should match open parenthesis
#173: FILE: arch/arm/plat-omap/omap_device.c:595:
+   omap_device_fill_dma_resources(od,
+   res[pdev-num_resources]);

CHECK: Alignment should match open parenthesis
#176: FILE: arch/arm/plat-omap/omap_device.c:598:
+   dev_dbg(pdev-dev, %s(): using resources from hwmod 
%d\n,
+   __func__, res_count);

total: 0 errors, 0 warnings, 4 checks, 130 lines checked


Since I was in a nice mood, because the week-end is almost there, I fixed them 
myself.

Please note that I had to rename the API becasue it was way too long to do a 
proper alignement.

 omap_device_fill_dma_resources - _od_fill_dma_resources

In fact I realized that some private APIs should probably be renamed as well 
like that for
consistency.

Just let me know if you have any issue with that version.

Regards,
Benoit

---
From b82b04e8eb27abe0cfe9cd7bf4fee8bb1bb9b013 Mon Sep 17 00:00:00 2001
From: Vaibhav Hiremath hvaib...@ti.com
Date: Wed, 29 Aug 2012 15:18:11 +0530
Subject: [PATCH] ARM: OMAP: omap_device: Do not overwrite resources allocated 
by OF layer

With the new devices (like, AM33XX and OMAP5) we now only support
DT boot mode of operation and now it is the time to start killing
slowly the dependency on hwmod, so with this patch, we are starting
with device resources.
The idea here is implemented considering to both boot modes -
  - DT boot mode
OF framework will construct the resource structure (currently
does for MEM  IRQ resource) and we should respect/use these
resources, killing hwmod dependency.
If pdev-num_resources  0, we assume that MEM  IRQ resources
have been allocated by OF layer already (through DTB).

Once DMA resource is available from OF layer, we should
kill filling any resources from hwmod.

  - Non-DT boot mode
Here, pdev-num_resources = 0, and we should get all the
resources from hwmod (following existing steps)

Signed-off-by: Vaibhav Hiremath hvaib...@ti.com
Cc: Tony Lindgren t...@atomide.com
Cc: Paul Walmsley p...@pwsan.com
Cc: Kevin Hilman khil...@ti.com
[b-cous...@ti.com: Fix some checkpatch CHECK issues]
Signed-off-by: Benoit Cousson b-cous...@ti.com
---
 arch/arm/mach-omap2/omap_hwmod.c |   27 ++
 arch/arm/plat-omap/include/plat/omap_hwmod.h |1 +
 arch/arm/plat-omap/omap_device.c |   71 +
 3 files changed, 87 insertions(+), 12 deletions(-)

diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 6ca8e51..7768804 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -3158,6 +3158,33 @@ int omap_hwmod_fill_resources(struct omap_hwmod *oh, 
struct resource *res)
 }
 
 /**
+ * omap_hwmod_fill_dma_resources - fill struct resource array with dma data
+ * @oh: struct omap_hwmod *
+ * @res: pointer to the array of struct resource to fill
+ *
+ * Fill the struct resource array @res with dma resource data from the
+ * omap_hwmod @oh.  Intended to be called by code that registers
+ * omap_devices.  See also omap_hwmod_count_resources().  Returns the
+ * number of array elements filled.
+ */
+int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, struct resource *res)
+{
+   int i, sdma_reqs_cnt;
+   int r = 0;
+
+   sdma_reqs_cnt = _count_sdma_reqs(oh);
+   for (i = 0; i  sdma_reqs_cnt; i++) {
+   (res + r)-name = (oh-sdma_reqs + i)-name;
+   (res + r)-start = (oh-sdma_reqs + i)-dma_req;
+   (res + r)-end = (oh-sdma_reqs + i)-dma_req;
+   (res + r)-flags = IORESOURCE_DMA;
+   r++;
+   }
+
+   return r;
+}
+
+/**
  * omap_hwmod_get_resource_byname - fetch IP block integration data by name
  * @oh: struct omap_hwmod * to operate on
  * @type: one of the IORESOURCE_* constants from include/linux/ioport.h
diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h 
b/arch/arm/plat-omap/include/plat/omap_hwmod.h
index 6132972..5857b9c 100644
--- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
+++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
@@ -615,6 +615,7 @@ int omap_hwmod_softreset(struct omap_hwmod *oh);
 
 int omap_hwmod_count_resources(struct omap_hwmod *oh);
 int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res);
+int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, 

Re: [RFC PATCH] ARM: OMAP2+: omap-device: Do not overwrite resources allocated by OF layer

2012-09-07 Thread Benoit Cousson
Hi Vaibhav,

The following patch is having some checkpatch issues.
CHECK: Alignment should match open parenthesis
#169: FILE: arch/arm/plat-omap/omap_device.c:591:
+   dev_dbg(pdev-dev, %s(): resources already allocated 
%d\n,
+   __func__, res_count);

CHECK: Alignment should match open parenthesis
#171: FILE: arch/arm/plat-omap/omap_device.c:593:
+   memcpy(res, pdev-resource,
+   sizeof(struct resource) * pdev-num_resources);

CHECK: Alignment should match open parenthesis
#173: FILE: arch/arm/plat-omap/omap_device.c:595:
+   omap_device_fill_dma_resources(od,
+   res[pdev-num_resources]);

CHECK: Alignment should match open parenthesis
#176: FILE: arch/arm/plat-omap/omap_device.c:598:
+   dev_dbg(pdev-dev, %s(): using resources from hwmod 
%d\n,
+   __func__, res_count);

total: 0 errors, 0 warnings, 4 checks, 130 lines checked


Since I was in a nice mood, because the week-end is almost there, I
fixed them myself.

Please note that I had to rename the API becasue it was way too long to
do a proper alignement.

 omap_device_fill_dma_resources - _od_fill_dma_resources

In fact I realized that some private APIs should probably be renamed as
well like that for
consistency.

Just let me know if you have any issue with that version.

Regards,
Benoit

---
From b82b04e8eb27abe0cfe9cd7bf4fee8bb1bb9b013 Mon Sep 17 00:00:00 2001
From: Vaibhav Hiremath hvaib...@ti.com
Date: Wed, 29 Aug 2012 15:18:11 +0530
Subject: [PATCH] ARM: OMAP: omap_device: Do not overwrite resources
allocated by OF layer

With the new devices (like, AM33XX and OMAP5) we now only support
DT boot mode of operation and now it is the time to start killing
slowly the dependency on hwmod, so with this patch, we are starting
with device resources.
The idea here is implemented considering to both boot modes -
  - DT boot mode
OF framework will construct the resource structure (currently
does for MEM  IRQ resource) and we should respect/use these
resources, killing hwmod dependency.
If pdev-num_resources  0, we assume that MEM  IRQ resources
have been allocated by OF layer already (through DTB).

Once DMA resource is available from OF layer, we should
kill filling any resources from hwmod.

  - Non-DT boot mode
Here, pdev-num_resources = 0, and we should get all the
resources from hwmod (following existing steps)

Signed-off-by: Vaibhav Hiremath hvaib...@ti.com
Cc: Tony Lindgren t...@atomide.com
Cc: Paul Walmsley p...@pwsan.com
Cc: Kevin Hilman khil...@ti.com
[b-cous...@ti.com: Fix some checkpatch CHECK issues]
Signed-off-by: Benoit Cousson b-cous...@ti.com
---
 arch/arm/mach-omap2/omap_hwmod.c |   27 ++
 arch/arm/plat-omap/include/plat/omap_hwmod.h |1 +
 arch/arm/plat-omap/omap_device.c |   71
+
 3 files changed, 87 insertions(+), 12 deletions(-)

diff --git a/arch/arm/mach-omap2/omap_hwmod.c
b/arch/arm/mach-omap2/omap_hwmod.c
index 6ca8e51..7768804 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -3158,6 +3158,33 @@ int omap_hwmod_fill_resources(struct omap_hwmod
*oh, struct resource *res)
 }
  /**
+ * omap_hwmod_fill_dma_resources - fill struct resource array with dma data
+ * @oh: struct omap_hwmod *
+ * @res: pointer to the array of struct resource to fill
+ *
+ * Fill the struct resource array @res with dma resource data from the
+ * omap_hwmod @oh.  Intended to be called by code that registers
+ * omap_devices.  See also omap_hwmod_count_resources().  Returns the
+ * number of array elements filled.
+ */
+int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, struct
resource *res)
+{
+   int i, sdma_reqs_cnt;
+   int r = 0;
+
+   sdma_reqs_cnt = _count_sdma_reqs(oh);
+   for (i = 0; i  sdma_reqs_cnt; i++) {
+   (res + r)-name = (oh-sdma_reqs + i)-name;
+   (res + r)-start = (oh-sdma_reqs + i)-dma_req;
+   (res + r)-end = (oh-sdma_reqs + i)-dma_req;
+   (res + r)-flags = IORESOURCE_DMA;
+   r++;
+   }
+
+   return r;
+}
+
+/**
  * omap_hwmod_get_resource_byname - fetch IP block integration data by name
  * @oh: struct omap_hwmod * to operate on
  * @type: one of the IORESOURCE_* constants from include/linux/ioport.h
diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h
b/arch/arm/plat-omap/include/plat/omap_hwmod.h
index 6132972..5857b9c 100644
--- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
+++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
@@ -615,6 +615,7 @@ int omap_hwmod_softreset(struct omap_hwmod *oh);
  int omap_hwmod_count_resources(struct omap_hwmod *oh);
 int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res);
+int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, struct

RE: [RFC PATCH] ARM: OMAP2+: omap-device: Do not overwrite resources allocated by OF layer

2012-09-07 Thread Hiremath, Vaibhav
On Fri, Sep 07, 2012 at 23:17:37, Cousson, Benoit wrote:
 Hi Vaibhav,
 
 The following patch is hacing some checkpatch issues. 
 
 CHECK: Alignment should match open parenthesis
 #169: FILE: arch/arm/plat-omap/omap_device.c:591:
 + dev_dbg(pdev-dev, %s(): resources already allocated 
 %d\n,
 + __func__, res_count);
 
 CHECK: Alignment should match open parenthesis
 #171: FILE: arch/arm/plat-omap/omap_device.c:593:
 + memcpy(res, pdev-resource,
 + sizeof(struct resource) * pdev-num_resources);
 
 CHECK: Alignment should match open parenthesis
 #173: FILE: arch/arm/plat-omap/omap_device.c:595:
 + omap_device_fill_dma_resources(od,
 + res[pdev-num_resources]);
 
 CHECK: Alignment should match open parenthesis
 #176: FILE: arch/arm/plat-omap/omap_device.c:598:
 + dev_dbg(pdev-dev, %s(): using resources from hwmod 
 %d\n,
 + __func__, res_count);
 
 total: 0 errors, 0 warnings, 4 checks, 130 lines checked
 
 
 Since I was in a nice mood, because the week-end is almost there, I fixed 
 them myself.
 

My bad...I usually do check for checkpatch.pl and sparse warnings, not sure 
how did I miss this one. I will be more careful here onwards.


 Please note that I had to rename the API becasue it was way too long to do a 
 proper alignement.
 
  omap_device_fill_dma_resources - _od_fill_dma_resources
 
 In fact I realized that some private APIs should probably be renamed as well 
 like that for
 consistency.
 
 Just let me know if you have any issue with that version.
 

Looks ok to me.

Thanks,
Vaibhav

 Regards,
 Benoit
 
 ---
 From b82b04e8eb27abe0cfe9cd7bf4fee8bb1bb9b013 Mon Sep 17 00:00:00 2001
 From: Vaibhav Hiremath hvaib...@ti.com
 Date: Wed, 29 Aug 2012 15:18:11 +0530
 Subject: [PATCH] ARM: OMAP: omap_device: Do not overwrite resources allocated 
 by OF layer
 
 With the new devices (like, AM33XX and OMAP5) we now only support
 DT boot mode of operation and now it is the time to start killing
 slowly the dependency on hwmod, so with this patch, we are starting
 with device resources.
 The idea here is implemented considering to both boot modes -
   - DT boot mode
 OF framework will construct the resource structure (currently
 does for MEM  IRQ resource) and we should respect/use these
 resources, killing hwmod dependency.
 If pdev-num_resources  0, we assume that MEM  IRQ resources
 have been allocated by OF layer already (through DTB).
 
 Once DMA resource is available from OF layer, we should
 kill filling any resources from hwmod.
 
   - Non-DT boot mode
 Here, pdev-num_resources = 0, and we should get all the
 resources from hwmod (following existing steps)
 
 Signed-off-by: Vaibhav Hiremath hvaib...@ti.com
 Cc: Tony Lindgren t...@atomide.com
 Cc: Paul Walmsley p...@pwsan.com
 Cc: Kevin Hilman khil...@ti.com
 [b-cous...@ti.com: Fix some checkpatch CHECK issues]
 Signed-off-by: Benoit Cousson b-cous...@ti.com
 ---
  arch/arm/mach-omap2/omap_hwmod.c |   27 ++
  arch/arm/plat-omap/include/plat/omap_hwmod.h |1 +
  arch/arm/plat-omap/omap_device.c |   71 +
  3 files changed, 87 insertions(+), 12 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/omap_hwmod.c 
 b/arch/arm/mach-omap2/omap_hwmod.c
 index 6ca8e51..7768804 100644
 --- a/arch/arm/mach-omap2/omap_hwmod.c
 +++ b/arch/arm/mach-omap2/omap_hwmod.c
 @@ -3158,6 +3158,33 @@ int omap_hwmod_fill_resources(struct omap_hwmod *oh, 
 struct resource *res)
  }
  
  /**
 + * omap_hwmod_fill_dma_resources - fill struct resource array with dma data
 + * @oh: struct omap_hwmod *
 + * @res: pointer to the array of struct resource to fill
 + *
 + * Fill the struct resource array @res with dma resource data from the
 + * omap_hwmod @oh.  Intended to be called by code that registers
 + * omap_devices.  See also omap_hwmod_count_resources().  Returns the
 + * number of array elements filled.
 + */
 +int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, struct resource 
 *res)
 +{
 + int i, sdma_reqs_cnt;
 + int r = 0;
 +
 + sdma_reqs_cnt = _count_sdma_reqs(oh);
 + for (i = 0; i  sdma_reqs_cnt; i++) {
 + (res + r)-name = (oh-sdma_reqs + i)-name;
 + (res + r)-start = (oh-sdma_reqs + i)-dma_req;
 + (res + r)-end = (oh-sdma_reqs + i)-dma_req;
 + (res + r)-flags = IORESOURCE_DMA;
 + r++;
 + }
 +
 + return r;
 +}
 +
 +/**
   * omap_hwmod_get_resource_byname - fetch IP block integration data by name
   * @oh: struct omap_hwmod * to operate on
   * @type: one of the IORESOURCE_* constants from include/linux/ioport.h
 diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h 
 b/arch/arm/plat-omap/include/plat/omap_hwmod.h
 index 6132972..5857b9c 100644
 --- 

Re: [RFC PATCH] ARM: OMAP2+: omap-device: Do not overwrite resources allocated by OF layer

2012-09-05 Thread Peter Ujfalusi
On 08/29/2012 12:48 PM, Vaibhav Hiremath wrote:
 With the new devices (like, AM33XX and OMAP5) we now only support
 DT boot mode of operation and now it is the time to start killing
 slowly the dependency on hwmod, so with this patch, we are starting
 with device resources.
 The idea here is implemented considering to both boot modes -
   - DT boot mode
 OF framework will construct the resource structure (currently
 does for MEM  IRQ resource) and we should respect/use these
 resources, killing hwmod dependency.
 If pdev-num_resources  0, we assume that MEM  IRQ resources
 have been allocated by OF layer already (through DTB).
 
 Once DMA resource is available from OF layer, we should
 kill filling any resources from hwmod.
 
   - Non-DT boot mode
 Here, pdev-num_resources = 0, and we should get all the
 resources from hwmod (following existing steps)
 
 Signed-off-by: Vaibhav Hiremath hvaib...@ti.com
 Cc: Benoit Cousson b-cous...@ti.com
 Cc: Tony Lindgren t...@atomide.com
 Cc: Paul Walmsley p...@pwsan.com
 Cc: Kevin Hilman khil...@ti.com
 ---
 This patch is tested on BeagleBone and AM37xEVM.

I tried this on OMAP3 (with McBSP/twl4030-audio/omap-twl4030 DT boot), OMAP4
(McPDM, DMIC DT), and on OMAP5 (McPDM, DMIC DT).
I have sent the patches needed for the dtsi files to probe the audio related
IPs with this patch.

Tested-by: Peter Ujfalusi peter.ujfal...@ti.com

 
 Why RFC?
 Still we have function duplication omap_device_fill_resources() and
 omap_device_fill_dma_resources(), we can actually split the function
 into 3 resources and avoid duplication -
   - omap_device_fill_dma_resources()
   - omap_device_fill_mem_resources()
   - omap_device_fill_irq_resources()
 
 Actually I wanted to clean it further but thought of getting
 feedback first and then proceed further.
 
  arch/arm/mach-omap2/omap_hwmod.c |   27 ++
  arch/arm/plat-omap/include/plat/omap_hwmod.h |1 +
  arch/arm/plat-omap/omap_device.c |   72 +
  3 files changed, 88 insertions(+), 12 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/omap_hwmod.c 
 b/arch/arm/mach-omap2/omap_hwmod.c
 index 31ec283..edabfb3 100644
 --- a/arch/arm/mach-omap2/omap_hwmod.c
 +++ b/arch/arm/mach-omap2/omap_hwmod.c
 @@ -3330,6 +3330,33 @@ int omap_hwmod_fill_resources(struct omap_hwmod *oh, 
 struct resource *res)
  }
 
  /**
 + * omap_hwmod_fill_dma_resources - fill struct resource array with dma data
 + * @oh: struct omap_hwmod *
 + * @res: pointer to the array of struct resource to fill
 + *
 + * Fill the struct resource array @res with dma resource data from the
 + * omap_hwmod @oh.  Intended to be called by code that registers
 + * omap_devices.  See also omap_hwmod_count_resources().  Returns the
 + * number of array elements filled.
 + */
 +int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, struct resource 
 *res)
 +{
 + int i, sdma_reqs_cnt;
 + int r = 0;
 +
 + sdma_reqs_cnt = _count_sdma_reqs(oh);
 + for (i = 0; i  sdma_reqs_cnt; i++) {
 + (res + r)-name = (oh-sdma_reqs + i)-name;
 + (res + r)-start = (oh-sdma_reqs + i)-dma_req;
 + (res + r)-end = (oh-sdma_reqs + i)-dma_req;
 + (res + r)-flags = IORESOURCE_DMA;
 + r++;
 + }
 +
 + return r;
 +}
 +
 +/**
   * omap_hwmod_get_resource_byname - fetch IP block integration data by name
   * @oh: struct omap_hwmod * to operate on
   * @type: one of the IORESOURCE_* constants from include/linux/ioport.h
 diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h 
 b/arch/arm/plat-omap/include/plat/omap_hwmod.h
 index 9b9646c..0533073 100644
 --- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
 +++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
 @@ -615,6 +615,7 @@ int omap_hwmod_softreset(struct omap_hwmod *oh);
 
  int omap_hwmod_count_resources(struct omap_hwmod *oh);
  int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res);
 +int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, struct resource 
 *res);
  int omap_hwmod_get_resource_byname(struct omap_hwmod *oh, unsigned int type,
  const char *name, struct resource *res);
 
 diff --git a/arch/arm/plat-omap/omap_device.c 
 b/arch/arm/plat-omap/omap_device.c
 index c490240..fd15a3a 100644
 --- a/arch/arm/plat-omap/omap_device.c
 +++ b/arch/arm/plat-omap/omap_device.c
 @@ -486,6 +486,33 @@ static int omap_device_fill_resources(struct omap_device 
 *od,
  }
 
  /**
 + * omap_device_fill_dma_resources - fill in array of struct resource with 
 dma resources
 + * @od: struct omap_device *
 + * @res: pointer to an array of struct resource to be filled in
 + *
 + * Populate one or more empty struct resource pointed to by @res with
 + * the dma resource data for this omap_device @od.  Used by
 + * omap_device_alloc() after calling omap_device_count_resources().
 + *
 + * Ideally this function would not be needed at all.  If we have
 + * 

Re: [RFC PATCH] ARM: OMAP2+: omap-device: Do not overwrite resources allocated by OF layer

2012-08-31 Thread Benoit Cousson
Hi Vaibhav,

On 08/29/2012 11:48 AM, Vaibhav Hiremath wrote:
 With the new devices (like, AM33XX and OMAP5) we now only support
 DT boot mode of operation and now it is the time to start killing
 slowly the dependency on hwmod, so with this patch, we are starting
 with device resources.

Thanks for working on that.

 The idea here is implemented considering to both boot modes -
   - DT boot mode
 OF framework will construct the resource structure (currently
 does for MEM  IRQ resource) and we should respect/use these
 resources, killing hwmod dependency.
 If pdev-num_resources  0, we assume that MEM  IRQ resources
 have been allocated by OF layer already (through DTB).
 
 Once DMA resource is available from OF layer, we should
 kill filling any resources from hwmod.

Yeap, I did a similar patch some months ago and decided to drop it
because I was expected the DMA binding to be there and wanted to avoid
adding more code that we are going to remove later.

The other potential issue is that when the binding will be there, we
will have to update all the drivers and DTS first before being able to
change the hwmod code from hwmod DMA to DTS DMA.
I was thinking of something smoother that will check if DMA is in DTS
and fall back to hwmod if not to avoid that.
But again, I'm not sure it worth the effort.

   - Non-DT boot mode
 Here, pdev-num_resources = 0, and we should get all the
 resources from hwmod (following existing steps)
 
 Signed-off-by: Vaibhav Hiremath hvaib...@ti.com
 Cc: Benoit Cousson b-cous...@ti.com
 Cc: Tony Lindgren t...@atomide.com
 Cc: Paul Walmsley p...@pwsan.com
 Cc: Kevin Hilman khil...@ti.com
 ---
 This patch is tested on BeagleBone and AM37xEVM.

I'll try to do more testing on Panda next week.

 Why RFC?
 Still we have function duplication omap_device_fill_resources() and
 omap_device_fill_dma_resources(), we can actually split the function
 into 3 resources and avoid duplication -
   - omap_device_fill_dma_resources()
   - omap_device_fill_mem_resources()
   - omap_device_fill_irq_resources()
 
 Actually I wanted to clean it further but thought of getting
 feedback first and then proceed further.

Well, that's anyway temporary code that should be gone in 6 months from
now (ideally). So that looks pretty good to me.

  arch/arm/mach-omap2/omap_hwmod.c |   27 ++
  arch/arm/plat-omap/include/plat/omap_hwmod.h |1 +
  arch/arm/plat-omap/omap_device.c |   72 +
  3 files changed, 88 insertions(+), 12 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/omap_hwmod.c 
 b/arch/arm/mach-omap2/omap_hwmod.c
 index 31ec283..edabfb3 100644
 --- a/arch/arm/mach-omap2/omap_hwmod.c
 +++ b/arch/arm/mach-omap2/omap_hwmod.c
 @@ -3330,6 +3330,33 @@ int omap_hwmod_fill_resources(struct omap_hwmod *oh, 
 struct resource *res)
  }
 
  /**
 + * omap_hwmod_fill_dma_resources - fill struct resource array with dma data
 + * @oh: struct omap_hwmod *
 + * @res: pointer to the array of struct resource to fill
 + *
 + * Fill the struct resource array @res with dma resource data from the
 + * omap_hwmod @oh.  Intended to be called by code that registers
 + * omap_devices.  See also omap_hwmod_count_resources().  Returns the
 + * number of array elements filled.
 + */
 +int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, struct resource 
 *res)
 +{
 + int i, sdma_reqs_cnt;
 + int r = 0;
 +
 + sdma_reqs_cnt = _count_sdma_reqs(oh);
 + for (i = 0; i  sdma_reqs_cnt; i++) {
 + (res + r)-name = (oh-sdma_reqs + i)-name;
 + (res + r)-start = (oh-sdma_reqs + i)-dma_req;
 + (res + r)-end = (oh-sdma_reqs + i)-dma_req;
 + (res + r)-flags = IORESOURCE_DMA;
 + r++;
 + }
 +
 + return r;
 +}
 +
 +/**
   * omap_hwmod_get_resource_byname - fetch IP block integration data by name
   * @oh: struct omap_hwmod * to operate on
   * @type: one of the IORESOURCE_* constants from include/linux/ioport.h
 diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h 
 b/arch/arm/plat-omap/include/plat/omap_hwmod.h
 index 9b9646c..0533073 100644
 --- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
 +++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
 @@ -615,6 +615,7 @@ int omap_hwmod_softreset(struct omap_hwmod *oh);
 
  int omap_hwmod_count_resources(struct omap_hwmod *oh);
  int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res);
 +int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, struct resource 
 *res);
  int omap_hwmod_get_resource_byname(struct omap_hwmod *oh, unsigned int type,
  const char *name, struct resource *res);
 
 diff --git a/arch/arm/plat-omap/omap_device.c 
 b/arch/arm/plat-omap/omap_device.c
 index c490240..fd15a3a 100644
 --- a/arch/arm/plat-omap/omap_device.c
 +++ b/arch/arm/plat-omap/omap_device.c
 @@ -486,6 +486,33 @@ static int omap_device_fill_resources(struct omap_device 
 *od,
  }
 
  /**
 

RE: [RFC PATCH] ARM: OMAP2+: omap-device: Do not overwrite resources allocated by OF layer

2012-08-31 Thread Hiremath, Vaibhav
On Fri, Aug 31, 2012 at 20:54:53, Cousson, Benoit wrote:
 Hi Vaibhav,
 
 On 08/29/2012 11:48 AM, Vaibhav Hiremath wrote:
  With the new devices (like, AM33XX and OMAP5) we now only support
  DT boot mode of operation and now it is the time to start killing
  slowly the dependency on hwmod, so with this patch, we are starting
  with device resources.
 
 Thanks for working on that.
 
  The idea here is implemented considering to both boot modes -
- DT boot mode
  OF framework will construct the resource structure (currently
  does for MEM  IRQ resource) and we should respect/use these
  resources, killing hwmod dependency.
  If pdev-num_resources  0, we assume that MEM  IRQ resources
  have been allocated by OF layer already (through DTB).
  
  Once DMA resource is available from OF layer, we should
  kill filling any resources from hwmod.
 
 Yeap, I did a similar patch some months ago and decided to drop it
 because I was expected the DMA binding to be there and wanted to avoid
 adding more code that we are going to remove later.
 
 The other potential issue is that when the binding will be there, we
 will have to update all the drivers and DTS first before being able to
 change the hwmod code from hwmod DMA to DTS DMA.
 I was thinking of something smoother that will check if DMA is in DTS
 and fall back to hwmod if not to avoid that.
 But again, I'm not sure it worth the effort.
 
- Non-DT boot mode
  Here, pdev-num_resources = 0, and we should get all the
  resources from hwmod (following existing steps)
  
  Signed-off-by: Vaibhav Hiremath hvaib...@ti.com
  Cc: Benoit Cousson b-cous...@ti.com
  Cc: Tony Lindgren t...@atomide.com
  Cc: Paul Walmsley p...@pwsan.com
  Cc: Kevin Hilman khil...@ti.com
  ---
  This patch is tested on BeagleBone and AM37xEVM.
 
 I'll try to do more testing on Panda next week.
 

Thanks a lot.

  Why RFC?
  Still we have function duplication omap_device_fill_resources() and
  omap_device_fill_dma_resources(), we can actually split the function
  into 3 resources and avoid duplication -
- omap_device_fill_dma_resources()
- omap_device_fill_mem_resources()
- omap_device_fill_irq_resources()
  
  Actually I wanted to clean it further but thought of getting
  feedback first and then proceed further.
 
 Well, that's anyway temporary code that should be gone in 6 months from
 now (ideally). So that looks pretty good to me.
 
   arch/arm/mach-omap2/omap_hwmod.c |   27 ++
   arch/arm/plat-omap/include/plat/omap_hwmod.h |1 +
   arch/arm/plat-omap/omap_device.c |   72 
  +
   3 files changed, 88 insertions(+), 12 deletions(-)
  
  diff --git a/arch/arm/mach-omap2/omap_hwmod.c 
  b/arch/arm/mach-omap2/omap_hwmod.c
  index 31ec283..edabfb3 100644
  --- a/arch/arm/mach-omap2/omap_hwmod.c
  +++ b/arch/arm/mach-omap2/omap_hwmod.c
  @@ -3330,6 +3330,33 @@ int omap_hwmod_fill_resources(struct omap_hwmod *oh, 
  struct resource *res)
   }
  
   /**
  + * omap_hwmod_fill_dma_resources - fill struct resource array with dma data
  + * @oh: struct omap_hwmod *
  + * @res: pointer to the array of struct resource to fill
  + *
  + * Fill the struct resource array @res with dma resource data from the
  + * omap_hwmod @oh.  Intended to be called by code that registers
  + * omap_devices.  See also omap_hwmod_count_resources().  Returns the
  + * number of array elements filled.
  + */
  +int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, struct resource 
  *res)
  +{
  +   int i, sdma_reqs_cnt;
  +   int r = 0;
  +
  +   sdma_reqs_cnt = _count_sdma_reqs(oh);
  +   for (i = 0; i  sdma_reqs_cnt; i++) {
  +   (res + r)-name = (oh-sdma_reqs + i)-name;
  +   (res + r)-start = (oh-sdma_reqs + i)-dma_req;
  +   (res + r)-end = (oh-sdma_reqs + i)-dma_req;
  +   (res + r)-flags = IORESOURCE_DMA;
  +   r++;
  +   }
  +
  +   return r;
  +}
  +
  +/**
* omap_hwmod_get_resource_byname - fetch IP block integration data by name
* @oh: struct omap_hwmod * to operate on
* @type: one of the IORESOURCE_* constants from include/linux/ioport.h
  diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h 
  b/arch/arm/plat-omap/include/plat/omap_hwmod.h
  index 9b9646c..0533073 100644
  --- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
  +++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
  @@ -615,6 +615,7 @@ int omap_hwmod_softreset(struct omap_hwmod *oh);
  
   int omap_hwmod_count_resources(struct omap_hwmod *oh);
   int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res);
  +int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, struct resource 
  *res);
   int omap_hwmod_get_resource_byname(struct omap_hwmod *oh, unsigned int 
  type,
 const char *name, struct resource *res);
  
  diff --git a/arch/arm/plat-omap/omap_device.c 
  b/arch/arm/plat-omap/omap_device.c
  index c490240..fd15a3a 100644
  

Re: [RFC PATCH] ARM: OMAP2+: omap-device: Do not overwrite resources allocated by OF layer

2012-08-31 Thread Benoit Cousson
On 08/31/2012 05:36 PM, Hiremath, Vaibhav wrote:
 On Fri, Aug 31, 2012 at 20:54:53, Cousson, Benoit wrote:
...
 I think you are getting confused between Vaibhav B and Vaibhav H :)
 We have two Vaibhav's roaming around here ;-)

Oops, sorry, this is the very first time I realized that two different
Vaibhav were sending patches on very similar topic...
That's why you were so good generating a lot of patches :-) You have a
dual channel of patches :-)

 I was not there during LPC this time, it was Vaibhav B who attended it.
 I will sync up with him and try to get more info on it.

Sorry again for the confusion.

Thanks,
Benoit
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[RFC PATCH] ARM: OMAP2+: omap-device: Do not overwrite resources allocated by OF layer

2012-08-29 Thread Vaibhav Hiremath
With the new devices (like, AM33XX and OMAP5) we now only support
DT boot mode of operation and now it is the time to start killing
slowly the dependency on hwmod, so with this patch, we are starting
with device resources.
The idea here is implemented considering to both boot modes -
  - DT boot mode
OF framework will construct the resource structure (currently
does for MEM  IRQ resource) and we should respect/use these
resources, killing hwmod dependency.
If pdev-num_resources  0, we assume that MEM  IRQ resources
have been allocated by OF layer already (through DTB).

Once DMA resource is available from OF layer, we should
kill filling any resources from hwmod.

  - Non-DT boot mode
Here, pdev-num_resources = 0, and we should get all the
resources from hwmod (following existing steps)

Signed-off-by: Vaibhav Hiremath hvaib...@ti.com
Cc: Benoit Cousson b-cous...@ti.com
Cc: Tony Lindgren t...@atomide.com
Cc: Paul Walmsley p...@pwsan.com
Cc: Kevin Hilman khil...@ti.com
---
This patch is tested on BeagleBone and AM37xEVM.

Why RFC?
Still we have function duplication omap_device_fill_resources() and
omap_device_fill_dma_resources(), we can actually split the function
into 3 resources and avoid duplication -
  - omap_device_fill_dma_resources()
  - omap_device_fill_mem_resources()
  - omap_device_fill_irq_resources()

Actually I wanted to clean it further but thought of getting
feedback first and then proceed further.

 arch/arm/mach-omap2/omap_hwmod.c |   27 ++
 arch/arm/plat-omap/include/plat/omap_hwmod.h |1 +
 arch/arm/plat-omap/omap_device.c |   72 +
 3 files changed, 88 insertions(+), 12 deletions(-)

diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 31ec283..edabfb3 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -3330,6 +3330,33 @@ int omap_hwmod_fill_resources(struct omap_hwmod *oh, 
struct resource *res)
 }

 /**
+ * omap_hwmod_fill_dma_resources - fill struct resource array with dma data
+ * @oh: struct omap_hwmod *
+ * @res: pointer to the array of struct resource to fill
+ *
+ * Fill the struct resource array @res with dma resource data from the
+ * omap_hwmod @oh.  Intended to be called by code that registers
+ * omap_devices.  See also omap_hwmod_count_resources().  Returns the
+ * number of array elements filled.
+ */
+int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, struct resource *res)
+{
+   int i, sdma_reqs_cnt;
+   int r = 0;
+
+   sdma_reqs_cnt = _count_sdma_reqs(oh);
+   for (i = 0; i  sdma_reqs_cnt; i++) {
+   (res + r)-name = (oh-sdma_reqs + i)-name;
+   (res + r)-start = (oh-sdma_reqs + i)-dma_req;
+   (res + r)-end = (oh-sdma_reqs + i)-dma_req;
+   (res + r)-flags = IORESOURCE_DMA;
+   r++;
+   }
+
+   return r;
+}
+
+/**
  * omap_hwmod_get_resource_byname - fetch IP block integration data by name
  * @oh: struct omap_hwmod * to operate on
  * @type: one of the IORESOURCE_* constants from include/linux/ioport.h
diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h 
b/arch/arm/plat-omap/include/plat/omap_hwmod.h
index 9b9646c..0533073 100644
--- a/arch/arm/plat-omap/include/plat/omap_hwmod.h
+++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h
@@ -615,6 +615,7 @@ int omap_hwmod_softreset(struct omap_hwmod *oh);

 int omap_hwmod_count_resources(struct omap_hwmod *oh);
 int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res);
+int omap_hwmod_fill_dma_resources(struct omap_hwmod *oh, struct resource *res);
 int omap_hwmod_get_resource_byname(struct omap_hwmod *oh, unsigned int type,
   const char *name, struct resource *res);

diff --git a/arch/arm/plat-omap/omap_device.c b/arch/arm/plat-omap/omap_device.c
index c490240..fd15a3a 100644
--- a/arch/arm/plat-omap/omap_device.c
+++ b/arch/arm/plat-omap/omap_device.c
@@ -486,6 +486,33 @@ static int omap_device_fill_resources(struct omap_device 
*od,
 }

 /**
+ * omap_device_fill_dma_resources - fill in array of struct resource with dma 
resources
+ * @od: struct omap_device *
+ * @res: pointer to an array of struct resource to be filled in
+ *
+ * Populate one or more empty struct resource pointed to by @res with
+ * the dma resource data for this omap_device @od.  Used by
+ * omap_device_alloc() after calling omap_device_count_resources().
+ *
+ * Ideally this function would not be needed at all.  If we have
+ * mechanism to get dma resources from DT.
+ *
+ * Returns 0.
+ */
+static int omap_device_fill_dma_resources(struct omap_device *od,
+ struct resource *res)
+{
+   int i, r;
+
+   for (i = 0; i  od-hwmods_cnt; i++) {
+   r = omap_hwmod_fill_dma_resources(od-hwmods[i], res);
+   res += r;
+   }
+
+   return 0;
+}
+
+/**
  * omap_device_alloc -