Re: [PATCH V3 10/18] ARM: OMAP2+: Add function to read GPMC settings from device-tree

2013-03-18 Thread Jon Hunter

On 03/17/2013 12:24 AM, Ezequiel Garcia wrote:
 Hi Jon,
 
 I have some tiny nitpicks...
 
 On Fri, Mar 15, 2013 at 10:21:08AM -0500, Jon Hunter wrote:
 Adds a function to read the various GPMC chip-select settings from
 device-tree and store them in the gpmc_settings structure.

 Update the GPMC device-tree binding documentation to describe these
 options.

 Signed-off-by: Jon Hunter jon-hun...@ti.com
 ---
  Documentation/devicetree/bindings/bus/ti-gpmc.txt |   23 ++
  arch/arm/mach-omap2/gpmc.c|   49 
 +
  arch/arm/mach-omap2/gpmc.h|2 +
  3 files changed, 74 insertions(+)

 diff --git a/Documentation/devicetree/bindings/bus/ti-gpmc.txt 
 b/Documentation/devicetree/bindings/bus/ti-gpmc.txt
 index 5ddb2e9..6fde1cf 100644
 --- a/Documentation/devicetree/bindings/bus/ti-gpmc.txt
 +++ b/Documentation/devicetree/bindings/bus/ti-gpmc.txt
 @@ -65,6 +65,29 @@ The following are only applicable to OMAP3+ and AM335x:
   - gpmc,wr-access
   - gpmc,wr-data-mux-bus
  
 +GPMC chip-select settings properties for child nodes. All are optional.
 +
 +- gpmc,burst-length Page/burst length. Must be 4, 8 or 16.
 +- gpmc,burst-wrap   Enables wrap bursting
 +- gpmc,burst-read   Enables read page/burst mode
 +- gpmc,burst-write  Enables write page/burst mode
 +- gpmc,device-nand  Device is NAND
 +- gpmc,device-width Total width of device(s) connected to a GPMC
 +chip-select in bytes. The GPMC supports 8-bit
 +and 16-bit devices and so this property must be
 +1 or 2.
 +- gpmc,mux-add-data Address and data multiplexing configuration.
 +Valid values are 1 for address-address-data
 +multiplexing mode and 2 for address-data
 +multiplexing mode.
 +- gpmc,sync-readEnables synchronous read. Defaults to asynchronous
 +is this is not set.
 +- gpmc,sync-write   Enables synchronous writes. Defaults to asynchronous
 +is this is not set.
 +- gpmc,wait-pin Wait-pin used by client. Must be less than
 +gpmc,num-waitpins.
 +- gpmc,wait-on-read Enables wait monitoring on reads.
 +- gpmc,wait-on-writeEnables wait monitoring on writes.
  
  Example for an AM33xx board:
  
 diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
 index 3ec1937..1e7eef3 100644
 --- a/arch/arm/mach-omap2/gpmc.c
 +++ b/arch/arm/mach-omap2/gpmc.c
 @@ -1190,6 +1190,55 @@ static struct of_device_id gpmc_dt_ids[] = {
  };
  MODULE_DEVICE_TABLE(of, gpmc_dt_ids);
  
 +/**
 + * gpmc_read_settings_dt - read gpmc settings from device-tree
 + * @np: pointer to device-tree node for a gpmc child device
 + * @p:  pointer to gpmc settings structure
 + *
 + * Reads the GPMC settings for a GPMC child device from device-tree and
 + * stores them in the GPMC settings structure passed. The GPMC settings
 + * structure is initialise to zero by this function and so any previously
 
 s/initialise/initialized ?

Thanks will add the d. However, initialise is correct British
English ;-)

 + * stored settings will be clearer.
 
 s/clearer/cleared ?
 
 I'm not an english native speaker,
 so please bare with me if I'm wrong on these...

You are right here too. Will fix thanks!

Jon

___
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss


Re: [PATCH V3 10/18] ARM: OMAP2+: Add function to read GPMC settings from device-tree

2013-03-16 Thread Ezequiel Garcia
Hi Jon,

I have some tiny nitpicks...

On Fri, Mar 15, 2013 at 10:21:08AM -0500, Jon Hunter wrote:
 Adds a function to read the various GPMC chip-select settings from
 device-tree and store them in the gpmc_settings structure.
 
 Update the GPMC device-tree binding documentation to describe these
 options.
 
 Signed-off-by: Jon Hunter jon-hun...@ti.com
 ---
  Documentation/devicetree/bindings/bus/ti-gpmc.txt |   23 ++
  arch/arm/mach-omap2/gpmc.c|   49 
 +
  arch/arm/mach-omap2/gpmc.h|2 +
  3 files changed, 74 insertions(+)
 
 diff --git a/Documentation/devicetree/bindings/bus/ti-gpmc.txt 
 b/Documentation/devicetree/bindings/bus/ti-gpmc.txt
 index 5ddb2e9..6fde1cf 100644
 --- a/Documentation/devicetree/bindings/bus/ti-gpmc.txt
 +++ b/Documentation/devicetree/bindings/bus/ti-gpmc.txt
 @@ -65,6 +65,29 @@ The following are only applicable to OMAP3+ and AM335x:
   - gpmc,wr-access
   - gpmc,wr-data-mux-bus
  
 +GPMC chip-select settings properties for child nodes. All are optional.
 +
 +- gpmc,burst-length  Page/burst length. Must be 4, 8 or 16.
 +- gpmc,burst-wrapEnables wrap bursting
 +- gpmc,burst-readEnables read page/burst mode
 +- gpmc,burst-write   Enables write page/burst mode
 +- gpmc,device-nand   Device is NAND
 +- gpmc,device-width  Total width of device(s) connected to a GPMC
 + chip-select in bytes. The GPMC supports 8-bit
 + and 16-bit devices and so this property must be
 + 1 or 2.
 +- gpmc,mux-add-data  Address and data multiplexing configuration.
 + Valid values are 1 for address-address-data
 + multiplexing mode and 2 for address-data
 + multiplexing mode.
 +- gpmc,sync-read Enables synchronous read. Defaults to asynchronous
 + is this is not set.
 +- gpmc,sync-writeEnables synchronous writes. Defaults to asynchronous
 + is this is not set.
 +- gpmc,wait-pin  Wait-pin used by client. Must be less than
 + gpmc,num-waitpins.
 +- gpmc,wait-on-read  Enables wait monitoring on reads.
 +- gpmc,wait-on-write Enables wait monitoring on writes.
  
  Example for an AM33xx board:
  
 diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
 index 3ec1937..1e7eef3 100644
 --- a/arch/arm/mach-omap2/gpmc.c
 +++ b/arch/arm/mach-omap2/gpmc.c
 @@ -1190,6 +1190,55 @@ static struct of_device_id gpmc_dt_ids[] = {
  };
  MODULE_DEVICE_TABLE(of, gpmc_dt_ids);
  
 +/**
 + * gpmc_read_settings_dt - read gpmc settings from device-tree
 + * @np:  pointer to device-tree node for a gpmc child device
 + * @p:   pointer to gpmc settings structure
 + *
 + * Reads the GPMC settings for a GPMC child device from device-tree and
 + * stores them in the GPMC settings structure passed. The GPMC settings
 + * structure is initialise to zero by this function and so any previously

s/initialise/initialized ?

 + * stored settings will be clearer.

s/clearer/cleared ?

I'm not an english native speaker,
so please bare with me if I'm wrong on these...

-- 
Ezequiel GarcĂ­a, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
___
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss


[PATCH V3 10/18] ARM: OMAP2+: Add function to read GPMC settings from device-tree

2013-03-15 Thread Jon Hunter
Adds a function to read the various GPMC chip-select settings from
device-tree and store them in the gpmc_settings structure.

Update the GPMC device-tree binding documentation to describe these
options.

Signed-off-by: Jon Hunter jon-hun...@ti.com
---
 Documentation/devicetree/bindings/bus/ti-gpmc.txt |   23 ++
 arch/arm/mach-omap2/gpmc.c|   49 +
 arch/arm/mach-omap2/gpmc.h|2 +
 3 files changed, 74 insertions(+)

diff --git a/Documentation/devicetree/bindings/bus/ti-gpmc.txt 
b/Documentation/devicetree/bindings/bus/ti-gpmc.txt
index 5ddb2e9..6fde1cf 100644
--- a/Documentation/devicetree/bindings/bus/ti-gpmc.txt
+++ b/Documentation/devicetree/bindings/bus/ti-gpmc.txt
@@ -65,6 +65,29 @@ The following are only applicable to OMAP3+ and AM335x:
  - gpmc,wr-access
  - gpmc,wr-data-mux-bus
 
+GPMC chip-select settings properties for child nodes. All are optional.
+
+- gpmc,burst-lengthPage/burst length. Must be 4, 8 or 16.
+- gpmc,burst-wrap  Enables wrap bursting
+- gpmc,burst-read  Enables read page/burst mode
+- gpmc,burst-write Enables write page/burst mode
+- gpmc,device-nand Device is NAND
+- gpmc,device-widthTotal width of device(s) connected to a GPMC
+   chip-select in bytes. The GPMC supports 8-bit
+   and 16-bit devices and so this property must be
+   1 or 2.
+- gpmc,mux-add-dataAddress and data multiplexing configuration.
+   Valid values are 1 for address-address-data
+   multiplexing mode and 2 for address-data
+   multiplexing mode.
+- gpmc,sync-read   Enables synchronous read. Defaults to asynchronous
+   is this is not set.
+- gpmc,sync-write  Enables synchronous writes. Defaults to asynchronous
+   is this is not set.
+- gpmc,wait-pinWait-pin used by client. Must be less than
+   gpmc,num-waitpins.
+- gpmc,wait-on-readEnables wait monitoring on reads.
+- gpmc,wait-on-write   Enables wait monitoring on writes.
 
 Example for an AM33xx board:
 
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
index 3ec1937..1e7eef3 100644
--- a/arch/arm/mach-omap2/gpmc.c
+++ b/arch/arm/mach-omap2/gpmc.c
@@ -1190,6 +1190,55 @@ static struct of_device_id gpmc_dt_ids[] = {
 };
 MODULE_DEVICE_TABLE(of, gpmc_dt_ids);
 
+/**
+ * gpmc_read_settings_dt - read gpmc settings from device-tree
+ * @np:pointer to device-tree node for a gpmc child device
+ * @p: pointer to gpmc settings structure
+ *
+ * Reads the GPMC settings for a GPMC child device from device-tree and
+ * stores them in the GPMC settings structure passed. The GPMC settings
+ * structure is initialise to zero by this function and so any previously
+ * stored settings will be clearer.
+ */
+void gpmc_read_settings_dt(struct device_node *np, struct gpmc_settings *p)
+{
+   memset(p, 0, sizeof(struct gpmc_settings));
+
+   if (of_find_property(np, gpmc,sync-read, NULL))
+   p-sync_read = true;
+   if (of_find_property(np, gpmc,sync-write, NULL))
+   p-sync_write = true;
+
+   if (!of_property_read_u32(np, gpmc,burst-length, p-burst_len)) {
+   if (of_find_property(np, gpmc,burst-wrap, NULL))
+   p-burst_wrap = true;
+   if (of_find_property(np, gpmc,burst-read, NULL))
+   p-burst_read = true;
+   if (of_find_property(np, gpmc,burst-write, NULL))
+   p-burst_write = true;
+   if (!p-burst_read  !p-burst_write)
+   pr_warn(%s: page/burst-length set but not used!\n,
+   __func__);
+   }
+
+   if (!of_property_read_u32(np, gpmc,wait-pin, p-wait_pin)) {
+   if (of_find_property(np, gpmc,wait-on-read, NULL))
+   p-wait_on_read = true;
+   if (of_find_property(np, gpmc,wait-on-write, NULL))
+   p-wait_on_write = true;
+   if (!p-wait_on_read  !p-wait_on_write)
+   pr_warn(%s: read/write wait monitoring not enabled!\n,
+   __func__);
+   }
+
+   of_property_read_u32(np, gpmc,device-width, p-device_width);
+
+   if (of_find_property(np, gpmc,device-nand, NULL))
+   p-device_nand = true;
+
+   of_property_read_u32(np, gpmc,mux-add-data, p-mux_add_data);
+}
+
 static void __maybe_unused gpmc_read_timings_dt(struct device_node *np,
struct gpmc_timings *gpmc_t)
 {
diff --git a/arch/arm/mach-omap2/gpmc.h b/arch/arm/mach-omap2/gpmc.h
index 87d2a22..707f6d5 100644
--- a/arch/arm/mach-omap2/gpmc.h
+++ b/arch/arm/mach-omap2/gpmc.h
@@ -225,5 +225,7 @@ extern void gpmc_cs_free(int cs);
 extern void omap3_gpmc_save_context(void);