All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/4] I2C Ocores updates
@ 2012-07-13 13:44 Jayachandran C
       [not found] ` <1342187065-1651-1-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
  0 siblings, 1 reply; 10+ messages in thread
From: Jayachandran C @ 2012-07-13 13:44 UTC (permalink / raw)
  To: linux-i2c-u79uwXL29TY76Z2rM5mHXA, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ,
	jacmet-OfajU3CKLf1/SzgSGea1oA,
	richard.rojfors-gfIc91nka+FZroRs9YW3xA
  Cc: devicetree-discuss-mnsaURCQ41sdnm+yROfE0A, Jayachandran C

Updated patchset to use u32 for reg_shift and reg_io_width, both
for ocores_i2c_platform_data and for ocores_i2c.

V2 notes
========
Updated patchset, changes in v2 are:
 * pass u32 value to of_property_read_u32() in ocores_i2c_of_probe()
 * undo whitespace change in include/linux/i2c-ocores.h
 * use int for reg_shift and reg_io_width in ocores_i2c_platform_data
   (include/linux/i2c-ocores.h) as well.

V1 notes
========
While trying to add reg-io-width property to i2c-ocores, we noticed
a few things that needs to fixed up in i2c-ocores device tree code.

The changes are to: 
 * use the standard 'reg-shift' property instead of 'regstep'
 * fix the fallout of the about change in drivers/mfd/timberdale.c
 * move bindings documentation to under Documentation/, 
 * fix up formatting, and add \n to a few dev_* messages,
 * and finally to add reg-io-width optional property.

Ganesan Ramalingam (2):
  i2c: i2c-ocores: Use reg-shift property
  i2c: i2c-ocores: support for 16bit and 32bit IO

Jayachandran C (2):
  i2c: i2c-ocores - DT bindings and minor fixes.
  V4L/DVB: mfd: use reg_shift instead of regstep

 .../devicetree/bindings/i2c/i2c-ocores.txt         |   33 +++++++
 drivers/i2c/busses/i2c-ocores.c                    |   96 +++++++++-----------
 drivers/mfd/timberdale.c                           |    2 +-
 include/linux/i2c-ocores.h                         |    3 +-
 4 files changed, 81 insertions(+), 53 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/i2c/i2c-ocores.txt

-- 
1.7.9.5

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v3 1/4] i2c: i2c-ocores - DT bindings and minor fixes.
       [not found] ` <1342187065-1651-1-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
@ 2012-07-13 13:44   ` Jayachandran C
       [not found]     ` <1342187065-1651-2-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
  2012-07-13 13:44   ` [PATCH v3 2/4] i2c: i2c-ocores: Use reg-shift property Jayachandran C
                     ` (3 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Jayachandran C @ 2012-07-13 13:44 UTC (permalink / raw)
  To: linux-i2c-u79uwXL29TY76Z2rM5mHXA, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ,
	jacmet-OfajU3CKLf1/SzgSGea1oA,
	richard.rojfors-gfIc91nka+FZroRs9YW3xA
  Cc: devicetree-discuss-mnsaURCQ41sdnm+yROfE0A, Jayachandran C

Cleanups to i2c-cores, no change in logic, changes are:
* Move i2c-ocores device tree documentation from source file to
  Documentation/devicetree/bindings/i2c/i2c-ocores.txt.
* Add \n to dev_warn and dev_err messages where missing
* Minor updates to the text and formatting fixes.

Signed-off-by: Jayachandran C <jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
---
 .../devicetree/bindings/i2c/i2c-ocores.txt         |   27 ++++++++++++
 drivers/i2c/busses/i2c-ocores.c                    |   45 +++-----------------
 2 files changed, 34 insertions(+), 38 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/i2c/i2c-ocores.txt

diff --git a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
new file mode 100644
index 0000000..bfec894
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
@@ -0,0 +1,27 @@
+Device tree configuration for i2c-ocores
+
+Required properties:
+- compatible      : "opencores,i2c-ocores"
+- reg             : bus address start and address range size of device
+- interrupts      : interrupt number
+- regstep         : size of device registers in bytes
+- clock-frequency : frequency of bus clock in Hz
+- #address-cells  : should be <1>
+- #size-cells     : should be <0>
+
+Example:
+
+	i2c0: ocores@a0000000 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		compatible = "opencores,i2c-ocores";
+		reg = <0xa0000000 0x8>;
+		interrupts = <10>;
+		regstep = <1>;
+		clock-frequency = <20000000>;
+
+		dummy@60 {
+			compatible = "dummy";
+			reg = <0x60>;
+		};
+	};
diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c
index 75194c5..e8159db 100644
--- a/drivers/i2c/busses/i2c-ocores.c
+++ b/drivers/i2c/busses/i2c-ocores.c
@@ -10,40 +10,9 @@
  */
 
 /*
- * Device tree configuration:
- *
- * Required properties:
- * - compatible      : "opencores,i2c-ocores"
- * - reg             : bus address start and address range size of device
- * - interrupts      : interrupt number
- * - regstep         : size of device registers in bytes
- * - clock-frequency : frequency of bus clock in Hz
- * 
- * Example:
- *
- *  i2c0: ocores@a0000000 {
- *              compatible = "opencores,i2c-ocores";
- *              reg = <0xa0000000 0x8>;
- *              interrupts = <10>;
- *
- *              regstep = <1>;
- *              clock-frequency = <20000000>;
- *
- * -- Devices connected on this I2C bus get
- * -- defined here; address- and size-cells
- * -- apply to these child devices
- *
- *              #address-cells = <1>;
- *              #size-cells = <0>;
- *
- *              dummy@60 {
- *                     compatible = "dummy";
- *                     reg = <60>;
- *              };
- *  };
- *
+ * This driver can be used from the device tree, see
+ *     Documentation/devicetree/bindings/i2c/ocore-i2c.txt
  */
-
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/init.h>
@@ -247,14 +216,14 @@ static struct i2c_adapter ocores_adapter = {
 };
 
 #ifdef CONFIG_OF
-static int ocores_i2c_of_probe(struct platform_device* pdev,
-				struct ocores_i2c* i2c)
+static int ocores_i2c_of_probe(struct platform_device *pdev,
+				struct ocores_i2c *i2c)
 {
 	const __be32* val;
 
 	val = of_get_property(pdev->dev.of_node, "regstep", NULL);
 	if (!val) {
-		dev_err(&pdev->dev, "Missing required parameter 'regstep'");
+		dev_err(&pdev->dev, "Missing required parameter 'regstep'\n");
 		return -ENODEV;
 	}
 	i2c->regstep = be32_to_cpup(val);
@@ -262,7 +231,7 @@ static int ocores_i2c_of_probe(struct platform_device* pdev,
 	val = of_get_property(pdev->dev.of_node, "clock-frequency", NULL);
 	if (!val) {
 		dev_err(&pdev->dev,
-			"Missing required parameter 'clock-frequency'");
+			"Missing required parameter 'clock-frequency'\n");
 		return -ENODEV;
 	}
 	i2c->clock_khz = be32_to_cpup(val) / 1000;
@@ -351,7 +320,7 @@ static int __devinit ocores_i2c_probe(struct platform_device *pdev)
 	return 0;
 }
 
-static int __devexit ocores_i2c_remove(struct platform_device* pdev)
+static int __devexit ocores_i2c_remove(struct platform_device *pdev)
 {
 	struct ocores_i2c *i2c = platform_get_drvdata(pdev);
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 2/4] i2c: i2c-ocores: Use reg-shift property
       [not found] ` <1342187065-1651-1-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
  2012-07-13 13:44   ` [PATCH v3 1/4] i2c: i2c-ocores - DT bindings and minor fixes Jayachandran C
@ 2012-07-13 13:44   ` Jayachandran C
       [not found]     ` <1342187065-1651-3-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
  2012-07-13 13:44   ` [PATCH v3 3/4] V4L/DVB: mfd: use reg_shift instead of regstep Jayachandran C
                     ` (2 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Jayachandran C @ 2012-07-13 13:44 UTC (permalink / raw)
  To: linux-i2c-u79uwXL29TY76Z2rM5mHXA, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ,
	jacmet-OfajU3CKLf1/SzgSGea1oA,
	richard.rojfors-gfIc91nka+FZroRs9YW3xA
  Cc: devicetree-discuss-mnsaURCQ41sdnm+yROfE0A, Ganesan Ramalingam,
	Jayachandran C

From: Ganesan Ramalingam <ganesanr-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>

Deprecate 'regstep' property and use the standard 'reg-shift' property
for register offset shifts. 'regstep' will still be supported as an
optional property, but will give a warning when used.

Signed-off-by: Ganesan Ramalingam <ganesanr-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
Signed-off-by: Jayachandran C <jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
---
 .../devicetree/bindings/i2c/i2c-ocores.txt         |    8 +++--
 drivers/i2c/busses/i2c-ocores.c                    |   36 ++++++++++++--------
 include/linux/i2c-ocores.h                         |    2 +-
 3 files changed, 29 insertions(+), 17 deletions(-)

diff --git a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
index bfec894..1c9334b 100644
--- a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
@@ -4,11 +4,14 @@ Required properties:
 - compatible      : "opencores,i2c-ocores"
 - reg             : bus address start and address range size of device
 - interrupts      : interrupt number
-- regstep         : size of device registers in bytes
 - clock-frequency : frequency of bus clock in Hz
 - #address-cells  : should be <1>
 - #size-cells     : should be <0>
 
+Optional properties:
+- reg-shift       : device register offsets are shifted by this value
+- regstep         : deprecated, use reg-shift above
+
 Example:
 
 	i2c0: ocores@a0000000 {
@@ -17,9 +20,10 @@ Example:
 		compatible = "opencores,i2c-ocores";
 		reg = <0xa0000000 0x8>;
 		interrupts = <10>;
-		regstep = <1>;
 		clock-frequency = <20000000>;
 
+		reg-shift = <0>;	/* 8 bit registers */
+
 		dummy@60 {
 			compatible = "dummy";
 			reg = <0x60>;
diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c
index e8159db..721ead9 100644
--- a/drivers/i2c/busses/i2c-ocores.c
+++ b/drivers/i2c/busses/i2c-ocores.c
@@ -25,10 +25,11 @@
 #include <linux/slab.h>
 #include <linux/io.h>
 #include <linux/of_i2c.h>
+#include <linux/log2.h>
 
 struct ocores_i2c {
 	void __iomem *base;
-	int regstep;
+	u32 reg_shift;
 	wait_queue_head_t wait;
 	struct i2c_adapter adap;
 	struct i2c_msg *msg;
@@ -71,12 +72,12 @@ struct ocores_i2c {
 
 static inline void oc_setreg(struct ocores_i2c *i2c, int reg, u8 value)
 {
-	iowrite8(value, i2c->base + reg * i2c->regstep);
+	iowrite8(value, i2c->base + (reg << i2c->reg_shift));
 }
 
 static inline u8 oc_getreg(struct ocores_i2c *i2c, int reg)
 {
-	return ioread8(i2c->base + reg * i2c->regstep);
+	return ioread8(i2c->base + (reg << i2c->reg_shift));
 }
 
 static void ocores_process(struct ocores_i2c *i2c)
@@ -219,22 +220,29 @@ static struct i2c_adapter ocores_adapter = {
 static int ocores_i2c_of_probe(struct platform_device *pdev,
 				struct ocores_i2c *i2c)
 {
-	const __be32* val;
-
-	val = of_get_property(pdev->dev.of_node, "regstep", NULL);
-	if (!val) {
-		dev_err(&pdev->dev, "Missing required parameter 'regstep'\n");
-		return -ENODEV;
+	struct device_node *np = pdev->dev.of_node;
+	u32 val;
+
+	if (of_property_read_u32(np, "reg-shift", &i2c->reg_shift)) {
+		/* no 'reg-shift', check for deprecated 'regstep' */
+		if (!of_property_read_u32(np, "regstep", &val)) {
+			if (!is_power_of_2(val)) {
+				dev_err(&pdev->dev, "invalid regstep %d\n",
+					val);
+				return -EINVAL;
+			}
+			i2c->reg_shift = ilog2(val);
+			dev_warn(&pdev->dev,
+				"regstep property deprecated, use reg-shift\n");
+		}
 	}
-	i2c->regstep = be32_to_cpup(val);
 
-	val = of_get_property(pdev->dev.of_node, "clock-frequency", NULL);
-	if (!val) {
+	if (of_property_read_u32(np, "clock-frequency", &val)) {
 		dev_err(&pdev->dev,
 			"Missing required parameter 'clock-frequency'\n");
 		return -ENODEV;
 	}
-	i2c->clock_khz = be32_to_cpup(val) / 1000;
+	i2c->clock_khz = val / 1000;
 
 	return 0;
 }
@@ -277,7 +285,7 @@ static int __devinit ocores_i2c_probe(struct platform_device *pdev)
 
 	pdata = pdev->dev.platform_data;
 	if (pdata) {
-		i2c->regstep = pdata->regstep;
+		i2c->reg_shift = pdata->reg_shift;
 		i2c->clock_khz = pdata->clock_khz;
 	} else {
 		ret = ocores_i2c_of_probe(pdev, i2c);
diff --git a/include/linux/i2c-ocores.h b/include/linux/i2c-ocores.h
index 4d5e57f..5d95df2 100644
--- a/include/linux/i2c-ocores.h
+++ b/include/linux/i2c-ocores.h
@@ -12,7 +12,7 @@
 #define _LINUX_I2C_OCORES_H
 
 struct ocores_i2c_platform_data {
-	u32 regstep;   /* distance between registers */
+	u32 reg_shift; /* register offset shift value */
 	u32 clock_khz; /* input clock in kHz */
 	u8 num_devices; /* number of devices in the devices list */
 	struct i2c_board_info const *devices; /* devices connected to the bus */
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 3/4] V4L/DVB: mfd: use reg_shift instead of regstep
       [not found] ` <1342187065-1651-1-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
  2012-07-13 13:44   ` [PATCH v3 1/4] i2c: i2c-ocores - DT bindings and minor fixes Jayachandran C
  2012-07-13 13:44   ` [PATCH v3 2/4] i2c: i2c-ocores: Use reg-shift property Jayachandran C
@ 2012-07-13 13:44   ` Jayachandran C
  2012-07-13 13:44   ` [PATCH v3 4/4] i2c: i2c-ocores: support for 16bit and 32bit IO Jayachandran C
  2012-07-14 10:45   ` [PATCH v3 0/4] I2C Ocores updates Wolfram Sang
  4 siblings, 0 replies; 10+ messages in thread
From: Jayachandran C @ 2012-07-13 13:44 UTC (permalink / raw)
  To: linux-i2c-u79uwXL29TY76Z2rM5mHXA, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ,
	jacmet-OfajU3CKLf1/SzgSGea1oA,
	richard.rojfors-gfIc91nka+FZroRs9YW3xA
  Cc: devicetree-discuss-mnsaURCQ41sdnm+yROfE0A, Jayachandran C

Update for change in i2c-ocores.h which uses reg_shift to
specify the register offset shifts instead of regstep.

Signed-off-by: Jayachandran C <jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
Acked-by: Richard Rojfors <richard.rojfors-gfIc91nka+FZroRs9YW3xA@public.gmane.org>
---
 drivers/mfd/timberdale.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mfd/timberdale.c b/drivers/mfd/timberdale.c
index 0ba26fb..a447f4e 100644
--- a/drivers/mfd/timberdale.c
+++ b/drivers/mfd/timberdale.c
@@ -83,7 +83,7 @@ timberdale_xiic_platform_data = {
 
 static __devinitdata struct ocores_i2c_platform_data
 timberdale_ocores_platform_data = {
-	.regstep = 4,
+	.reg_shift = 2,
 	.clock_khz = 62500,
 	.devices = timberdale_i2c_board_info,
 	.num_devices = ARRAY_SIZE(timberdale_i2c_board_info)
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 4/4] i2c: i2c-ocores: support for 16bit and 32bit IO
       [not found] ` <1342187065-1651-1-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
                     ` (2 preceding siblings ...)
  2012-07-13 13:44   ` [PATCH v3 3/4] V4L/DVB: mfd: use reg_shift instead of regstep Jayachandran C
@ 2012-07-13 13:44   ` Jayachandran C
       [not found]     ` <1342187065-1651-5-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
  2012-07-14 10:45   ` [PATCH v3 0/4] I2C Ocores updates Wolfram Sang
  4 siblings, 1 reply; 10+ messages in thread
From: Jayachandran C @ 2012-07-13 13:44 UTC (permalink / raw)
  To: linux-i2c-u79uwXL29TY76Z2rM5mHXA, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ,
	jacmet-OfajU3CKLf1/SzgSGea1oA,
	richard.rojfors-gfIc91nka+FZroRs9YW3xA
  Cc: devicetree-discuss-mnsaURCQ41sdnm+yROfE0A, Ganesan Ramalingam,
	Jayachandran C

From: Ganesan Ramalingam <ganesanr-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>

Some architectures supports only 16-bit or 32-bit read/write access to
their IO space. Add a 'reg-io-width' platform and OF parameter which
specifies the IO width to support these platforms.

reg-io-width can be specified as 1, 2 or 4, and has a default value
of 1 if it is unspecified.

Signed-off-by: Ganesan Ramalingam <ganesanr-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
Signed-off-by: Jayachandran C <jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
---
 .../devicetree/bindings/i2c/i2c-ocores.txt         |    2 ++
 drivers/i2c/busses/i2c-ocores.c                    |   21 ++++++++++++++++++--
 include/linux/i2c-ocores.h                         |    1 +
 3 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
index 1c9334b..c15781f 100644
--- a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
@@ -10,6 +10,7 @@ Required properties:
 
 Optional properties:
 - reg-shift       : device register offsets are shifted by this value
+- reg-io-width    : io register width in bytes (1, 2 or 4)
 - regstep         : deprecated, use reg-shift above
 
 Example:
@@ -23,6 +24,7 @@ Example:
 		clock-frequency = <20000000>;
 
 		reg-shift = <0>;	/* 8 bit registers */
+		reg-io-width = <1>;	/* 8 bit read/write */
 
 		dummy@60 {
 			compatible = "dummy";
diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c
index 721ead9..de3b119 100644
--- a/drivers/i2c/busses/i2c-ocores.c
+++ b/drivers/i2c/busses/i2c-ocores.c
@@ -30,6 +30,7 @@
 struct ocores_i2c {
 	void __iomem *base;
 	u32 reg_shift;
+	u32 reg_io_width;
 	wait_queue_head_t wait;
 	struct i2c_adapter adap;
 	struct i2c_msg *msg;
@@ -72,12 +73,22 @@ struct ocores_i2c {
 
 static inline void oc_setreg(struct ocores_i2c *i2c, int reg, u8 value)
 {
-	iowrite8(value, i2c->base + (reg << i2c->reg_shift));
+	if (i2c->reg_io_width == 4)
+		iowrite32(value, i2c->base + (reg << i2c->reg_shift));
+	else if (i2c->reg_io_width == 2)
+		iowrite16(value, i2c->base + (reg << i2c->reg_shift));
+	else
+		iowrite8(value, i2c->base + (reg << i2c->reg_shift));
 }
 
 static inline u8 oc_getreg(struct ocores_i2c *i2c, int reg)
 {
-	return ioread8(i2c->base + (reg << i2c->reg_shift));
+	if (i2c->reg_io_width == 4)
+		return ioread32(i2c->base + (reg << i2c->reg_shift));
+	else if (i2c->reg_io_width == 2)
+		return ioread16(i2c->base + (reg << i2c->reg_shift));
+	else
+		return ioread8(i2c->base + (reg << i2c->reg_shift));
 }
 
 static void ocores_process(struct ocores_i2c *i2c)
@@ -244,6 +255,8 @@ static int ocores_i2c_of_probe(struct platform_device *pdev,
 	}
 	i2c->clock_khz = val / 1000;
 
+	of_property_read_u32(pdev->dev.of_node, "reg-io-width",
+				&i2c->reg_io_width);
 	return 0;
 }
 #else
@@ -286,6 +299,7 @@ static int __devinit ocores_i2c_probe(struct platform_device *pdev)
 	pdata = pdev->dev.platform_data;
 	if (pdata) {
 		i2c->reg_shift = pdata->reg_shift;
+		i2c->reg_io_width = pdata->reg_io_width;
 		i2c->clock_khz = pdata->clock_khz;
 	} else {
 		ret = ocores_i2c_of_probe(pdev, i2c);
@@ -293,6 +307,9 @@ static int __devinit ocores_i2c_probe(struct platform_device *pdev)
 			return ret;
 	}
 
+	if (i2c->reg_io_width == 0)
+		i2c->reg_io_width = 1; /* Set to default value */
+
 	ocores_init(i2c);
 
 	init_waitqueue_head(&i2c->wait);
diff --git a/include/linux/i2c-ocores.h b/include/linux/i2c-ocores.h
index 5d95df2..1c06b5c 100644
--- a/include/linux/i2c-ocores.h
+++ b/include/linux/i2c-ocores.h
@@ -13,6 +13,7 @@
 
 struct ocores_i2c_platform_data {
 	u32 reg_shift; /* register offset shift value */
+	u32 reg_io_width; /* register io read/write width */
 	u32 clock_khz; /* input clock in kHz */
 	u8 num_devices; /* number of devices in the devices list */
 	struct i2c_board_info const *devices; /* devices connected to the bus */
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 4/4] i2c: i2c-ocores: support for 16bit and 32bit IO
       [not found]     ` <1342187065-1651-5-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
@ 2012-07-13 13:48       ` Shubhrajyoti Datta
       [not found]         ` <CAM=Q2csMBP7YHgmMob0Npaxo70Quo3-76TNhQawE972zfiLiHA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 10+ messages in thread
From: Shubhrajyoti Datta @ 2012-07-13 13:48 UTC (permalink / raw)
  To: Jayachandran C
  Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ,
	jacmet-OfajU3CKLf1/SzgSGea1oA,
	richard.rojfors-gfIc91nka+FZroRs9YW3xA,
	devicetree-discuss-mnsaURCQ41sdnm+yROfE0A, Ganesan Ramalingam

Hello,

On Fri, Jul 13, 2012 at 7:14 PM, Jayachandran C
<jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org> wrote:
> From: Ganesan Ramalingam <ganesanr-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
>
> Some architectures supports only 16-bit or 32-bit read/write access to
> their IO space. Add a 'reg-io-width' platform and OF parameter which
> specifies the IO width to support these platforms.
>
> reg-io-width can be specified as 1, 2 or 4, and has a default value
> of 1 if it is unspecified.
>
> Signed-off-by: Ganesan Ramalingam <ganesanr-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
> Signed-off-by: Jayachandran C <jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
> ---
>  .../devicetree/bindings/i2c/i2c-ocores.txt         |    2 ++
>  drivers/i2c/busses/i2c-ocores.c                    |   21 ++++++++++++++++++--
>  include/linux/i2c-ocores.h                         |    1 +
>  3 files changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
> index 1c9334b..c15781f 100644
> --- a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
> +++ b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
> @@ -10,6 +10,7 @@ Required properties:
>
>  Optional properties:
>  - reg-shift       : device register offsets are shifted by this value
> +- reg-io-width    : io register width in bytes (1, 2 or 4)
>  - regstep         : deprecated, use reg-shift above
>
>  Example:
> @@ -23,6 +24,7 @@ Example:
>                 clock-frequency = <20000000>;
>
>                 reg-shift = <0>;        /* 8 bit registers */
> +               reg-io-width = <1>;     /* 8 bit read/write */
>
>                 dummy@60 {
>                         compatible = "dummy";
> diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c
> index 721ead9..de3b119 100644
> --- a/drivers/i2c/busses/i2c-ocores.c
> +++ b/drivers/i2c/busses/i2c-ocores.c
> @@ -30,6 +30,7 @@
>  struct ocores_i2c {
>         void __iomem *base;
>         u32 reg_shift;
> +       u32 reg_io_width;
>         wait_queue_head_t wait;
>         struct i2c_adapter adap;
>         struct i2c_msg *msg;
> @@ -72,12 +73,22 @@ struct ocores_i2c {
>
>  static inline void oc_setreg(struct ocores_i2c *i2c, int reg, u8 value)
>  {
> -       iowrite8(value, i2c->base + (reg << i2c->reg_shift));
> +       if (i2c->reg_io_width == 4)
> +               iowrite32(value, i2c->base + (reg << i2c->reg_shift));
> +       else if (i2c->reg_io_width == 2)
> +               iowrite16(value, i2c->base + (reg << i2c->reg_shift));
> +       else
> +               iowrite8(value, i2c->base + (reg << i2c->reg_shift));
>  }
>
>  static inline u8 oc_getreg(struct ocores_i2c *i2c, int reg)

Should the return type be changed.
Now that it is returning more that than 8 bits.

Did I miss something?

>  {
> -       return ioread8(i2c->base + (reg << i2c->reg_shift));
> +       if (i2c->reg_io_width == 4)
> +               return ioread32(i2c->base + (reg << i2c->reg_shift));
> +       else if (i2c->reg_io_width == 2)
> +               return ioread16(i2c->base + (reg << i2c->reg_shift));
> +       else
> +               return ioread8(i2c->base + (reg << i2c->reg_shift));
>  }
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 4/4] i2c: i2c-ocores: support for 16bit and 32bit IO
       [not found]         ` <CAM=Q2csMBP7YHgmMob0Npaxo70Quo3-76TNhQawE972zfiLiHA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2012-07-13 13:58           ` Jayachandran C.
  0 siblings, 0 replies; 10+ messages in thread
From: Jayachandran C. @ 2012-07-13 13:58 UTC (permalink / raw)
  To: Shubhrajyoti Datta
  Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ,
	jacmet-OfajU3CKLf1/SzgSGea1oA,
	richard.rojfors-gfIc91nka+FZroRs9YW3xA,
	devicetree-discuss-mnsaURCQ41sdnm+yROfE0A, Ganesan Ramalingam

On Fri, Jul 13, 2012 at 07:18:35PM +0530, Shubhrajyoti Datta wrote:
> Hello,
> 
> On Fri, Jul 13, 2012 at 7:14 PM, Jayachandran C
> <jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org> wrote:
> > From: Ganesan Ramalingam <ganesanr-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
> >
> > Some architectures supports only 16-bit or 32-bit read/write access to
> > their IO space. Add a 'reg-io-width' platform and OF parameter which
> > specifies the IO width to support these platforms.
> >
> > reg-io-width can be specified as 1, 2 or 4, and has a default value
> > of 1 if it is unspecified.
> >
> > Signed-off-by: Ganesan Ramalingam <ganesanr-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
> > Signed-off-by: Jayachandran C <jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
> > ---
> >  .../devicetree/bindings/i2c/i2c-ocores.txt         |    2 ++
> >  drivers/i2c/busses/i2c-ocores.c                    |   21 ++++++++++++++++++--
> >  include/linux/i2c-ocores.h                         |    1 +
> >  3 files changed, 22 insertions(+), 2 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
> > index 1c9334b..c15781f 100644
> > --- a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
> > +++ b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
> > @@ -10,6 +10,7 @@ Required properties:
> >
> >  Optional properties:
> >  - reg-shift       : device register offsets are shifted by this value
> > +- reg-io-width    : io register width in bytes (1, 2 or 4)
> >  - regstep         : deprecated, use reg-shift above
> >
> >  Example:
> > @@ -23,6 +24,7 @@ Example:
> >                 clock-frequency = <20000000>;
> >
> >                 reg-shift = <0>;        /* 8 bit registers */
> > +               reg-io-width = <1>;     /* 8 bit read/write */
> >
> >                 dummy@60 {
> >                         compatible = "dummy";
> > diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c
> > index 721ead9..de3b119 100644
> > --- a/drivers/i2c/busses/i2c-ocores.c
> > +++ b/drivers/i2c/busses/i2c-ocores.c
> > @@ -30,6 +30,7 @@
> >  struct ocores_i2c {
> >         void __iomem *base;
> >         u32 reg_shift;
> > +       u32 reg_io_width;
> >         wait_queue_head_t wait;
> >         struct i2c_adapter adap;
> >         struct i2c_msg *msg;
> > @@ -72,12 +73,22 @@ struct ocores_i2c {
> >
> >  static inline void oc_setreg(struct ocores_i2c *i2c, int reg, u8 value)
> >  {
> > -       iowrite8(value, i2c->base + (reg << i2c->reg_shift));
> > +       if (i2c->reg_io_width == 4)
> > +               iowrite32(value, i2c->base + (reg << i2c->reg_shift));
> > +       else if (i2c->reg_io_width == 2)
> > +               iowrite16(value, i2c->base + (reg << i2c->reg_shift));
> > +       else
> > +               iowrite8(value, i2c->base + (reg << i2c->reg_shift));
> >  }
> >
> >  static inline u8 oc_getreg(struct ocores_i2c *i2c, int reg)
> 
> Should the return type be changed.
> Now that it is returning more that than 8 bits.
> 
> Did I miss something?

Only 8 bits of the register is significant, so even if we read 16 or 32
bits only the lowest 8 bits are returned.

JC.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 0/4] I2C Ocores updates
       [not found] ` <1342187065-1651-1-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
                     ` (3 preceding siblings ...)
  2012-07-13 13:44   ` [PATCH v3 4/4] i2c: i2c-ocores: support for 16bit and 32bit IO Jayachandran C
@ 2012-07-14 10:45   ` Wolfram Sang
  4 siblings, 0 replies; 10+ messages in thread
From: Wolfram Sang @ 2012-07-14 10:45 UTC (permalink / raw)
  To: Jayachandran C
  Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA, jacmet-OfajU3CKLf1/SzgSGea1oA,
	richard.rojfors-gfIc91nka+FZroRs9YW3xA,
	devicetree-discuss-mnsaURCQ41sdnm+yROfE0A

[-- Attachment #1: Type: text/plain, Size: 372 bytes --]

On Fri, Jul 13, 2012 at 07:14:21PM +0530, Jayachandran C wrote:
> Updated patchset to use u32 for reg_shift and reg_io_width, both
> for ocores_i2c_platform_data and for ocores_i2c.

Thanks, applied to next.

-- 
Pengutronix e.K.                           | Wolfram Sang                |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 1/4] i2c: i2c-ocores - DT bindings and minor fixes.
       [not found]     ` <1342187065-1651-2-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
@ 2012-07-16  3:42       ` Rajeev kumar
  0 siblings, 0 replies; 10+ messages in thread
From: Rajeev kumar @ 2012-07-16  3:42 UTC (permalink / raw)
  To: Jayachandran C
  Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ,
	jacmet-OfajU3CKLf1/SzgSGea1oA,
	richard.rojfors-gfIc91nka+FZroRs9YW3xA,
	devicetree-discuss-mnsaURCQ41sdnm+yROfE0A, spear-devel

On 7/13/2012 7:14 PM, Jayachandran C wrote:
> Cleanups to i2c-cores, no change in logic, changes are:
> * Move i2c-ocores device tree documentation from source file to
>    Documentation/devicetree/bindings/i2c/i2c-ocores.txt.
> * Add \n to dev_warn and dev_err messages where missing
> * Minor updates to the text and formatting fixes.
>
> Signed-off-by: Jayachandran C<jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
> ---
>   .../devicetree/bindings/i2c/i2c-ocores.txt         |   27 ++++++++++++
>   drivers/i2c/busses/i2c-ocores.c                    |   45 +++-----------------
>   2 files changed, 34 insertions(+), 38 deletions(-)
>   create mode 100644 Documentation/devicetree/bindings/i2c/i2c-ocores.txt
>
> diff --git a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
> new file mode 100644
> index 0000000..bfec894
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
> @@ -0,0 +1,27 @@
> +Device tree configuration for i2c-ocores
> +
> +Required properties:
> +- compatible      : "opencores,i2c-ocores"
> +- reg             : bus address start and address range size of device
> +- interrupts      : interrupt number
> +- regstep         : size of device registers in bytes
> +- clock-frequency : frequency of bus clock in Hz
> +- #address-cells  : should be<1>
> +- #size-cells     : should be<0>
> +
> +Example:
> +
> +	i2c0: ocores@a0000000 {
> +		#address-cells =<1>;
> +		#size-cells =<0>;
> +		compatible = "opencores,i2c-ocores";
> +		reg =<0xa0000000 0x8>;
> +		interrupts =<10>;
> +		regstep =<1>;
> +		clock-frequency =<20000000>;
> +
> +		dummy@60 {
> +			compatible = "dummy";
> +			reg =<0x60>;
> +		};
> +	};
> diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c
> index 75194c5..e8159db 100644
> --- a/drivers/i2c/busses/i2c-ocores.c
> +++ b/drivers/i2c/busses/i2c-ocores.c
> @@ -10,40 +10,9 @@
>    */
>
>   /*
> - * Device tree configuration:
> - *
> - * Required properties:
> - * - compatible      : "opencores,i2c-ocores"
> - * - reg             : bus address start and address range size of device
> - * - interrupts      : interrupt number
> - * - regstep         : size of device registers in bytes
> - * - clock-frequency : frequency of bus clock in Hz
> - *
> - * Example:
> - *
> - *  i2c0: ocores@a0000000 {
> - *              compatible = "opencores,i2c-ocores";
> - *              reg =<0xa0000000 0x8>;
> - *              interrupts =<10>;
> - *
> - *              regstep =<1>;
> - *              clock-frequency =<20000000>;
> - *
> - * -- Devices connected on this I2C bus get
> - * -- defined here; address- and size-cells
> - * -- apply to these child devices
> - *
> - *              #address-cells =<1>;
> - *              #size-cells =<0>;
> - *
> - *              dummy@60 {
> - *                     compatible = "dummy";
> - *                     reg =<60>;
> - *              };
> - *  };
> - *
> + * This driver can be used from the device tree, see
> + *     Documentation/devicetree/bindings/i2c/ocore-i2c.txt
>    */
> -
>   #include<linux/kernel.h>
>   #include<linux/module.h>
>   #include<linux/init.h>
> @@ -247,14 +216,14 @@ static struct i2c_adapter ocores_adapter = {
>   };
>
>   #ifdef CONFIG_OF
> -static int ocores_i2c_of_probe(struct platform_device* pdev,
> -				struct ocores_i2c* i2c)
> +static int ocores_i2c_of_probe(struct platform_device *pdev,
> +				struct ocores_i2c *i2c)
>   {
>   	const __be32* val;
>
>   	val = of_get_property(pdev->dev.of_node, "regstep", NULL);
>   	if (!val) {
> -		dev_err(&pdev->dev, "Missing required parameter 'regstep'");
> +		dev_err(&pdev->dev, "Missing required parameter 'regstep'\n");
>   		return -ENODEV;
>   	}
>   	i2c->regstep = be32_to_cpup(val);
> @@ -262,7 +231,7 @@ static int ocores_i2c_of_probe(struct platform_device* pdev,
>   	val = of_get_property(pdev->dev.of_node, "clock-frequency", NULL);
>   	if (!val) {
>   		dev_err(&pdev->dev,
> -			"Missing required parameter 'clock-frequency'");
> +			"Missing required parameter 'clock-frequency'\n");
>   		return -ENODEV;
>   	}
>   	i2c->clock_khz = be32_to_cpup(val) / 1000;
> @@ -351,7 +320,7 @@ static int __devinit ocores_i2c_probe(struct platform_device *pdev)
>   	return 0;
>   }
>
> -static int __devexit ocores_i2c_remove(struct platform_device* pdev)
> +static int __devexit ocores_i2c_remove(struct platform_device *pdev)
>   {
>   	struct ocores_i2c *i2c = platform_get_drvdata(pdev);
>

Reviewed By: Rajeev Kumar <rajeev-dlh.kumar-qxv4g6HH51o@public.gmane.org>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 2/4] i2c: i2c-ocores: Use reg-shift property
       [not found]     ` <1342187065-1651-3-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
@ 2012-07-16  3:45       ` Rajeev kumar
  0 siblings, 0 replies; 10+ messages in thread
From: Rajeev kumar @ 2012-07-16  3:45 UTC (permalink / raw)
  To: Jayachandran C
  Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ,
	jacmet-OfajU3CKLf1/SzgSGea1oA,
	richard.rojfors-gfIc91nka+FZroRs9YW3xA,
	devicetree-discuss-mnsaURCQ41sdnm+yROfE0A, Ganesan Ramalingam

On 7/13/2012 7:14 PM, Jayachandran C wrote:
> From: Ganesan Ramalingam<ganesanr-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
>
> Deprecate 'regstep' property and use the standard 'reg-shift' property
> for register offset shifts. 'regstep' will still be supported as an
> optional property, but will give a warning when used.
>
> Signed-off-by: Ganesan Ramalingam<ganesanr-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
> Signed-off-by: Jayachandran C<jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
> ---
>   .../devicetree/bindings/i2c/i2c-ocores.txt         |    8 +++--
>   drivers/i2c/busses/i2c-ocores.c                    |   36 ++++++++++++--------
>   include/linux/i2c-ocores.h                         |    2 +-
>   3 files changed, 29 insertions(+), 17 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
> index bfec894..1c9334b 100644
> --- a/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
> +++ b/Documentation/devicetree/bindings/i2c/i2c-ocores.txt
> @@ -4,11 +4,14 @@ Required properties:
>   - compatible      : "opencores,i2c-ocores"
>   - reg             : bus address start and address range size of device
>   - interrupts      : interrupt number
> -- regstep         : size of device registers in bytes
>   - clock-frequency : frequency of bus clock in Hz
>   - #address-cells  : should be<1>
>   - #size-cells     : should be<0>
>
> +Optional properties:
> +- reg-shift       : device register offsets are shifted by this value
> +- regstep         : deprecated, use reg-shift above
> +
>   Example:
>
>   	i2c0: ocores@a0000000 {
> @@ -17,9 +20,10 @@ Example:
>   		compatible = "opencores,i2c-ocores";
>   		reg =<0xa0000000 0x8>;
>   		interrupts =<10>;
> -		regstep =<1>;
>   		clock-frequency =<20000000>;
>
> +		reg-shift =<0>;	/* 8 bit registers */
> +
>   		dummy@60 {
>   			compatible = "dummy";
>   			reg =<0x60>;
> diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c
> index e8159db..721ead9 100644
> --- a/drivers/i2c/busses/i2c-ocores.c
> +++ b/drivers/i2c/busses/i2c-ocores.c
> @@ -25,10 +25,11 @@
>   #include<linux/slab.h>
>   #include<linux/io.h>
>   #include<linux/of_i2c.h>
> +#include<linux/log2.h>
>
>   struct ocores_i2c {
>   	void __iomem *base;
> -	int regstep;
> +	u32 reg_shift;
>   	wait_queue_head_t wait;
>   	struct i2c_adapter adap;
>   	struct i2c_msg *msg;
> @@ -71,12 +72,12 @@ struct ocores_i2c {
>
>   static inline void oc_setreg(struct ocores_i2c *i2c, int reg, u8 value)
>   {
> -	iowrite8(value, i2c->base + reg * i2c->regstep);
> +	iowrite8(value, i2c->base + (reg<<  i2c->reg_shift));
>   }
>
>   static inline u8 oc_getreg(struct ocores_i2c *i2c, int reg)
>   {
> -	return ioread8(i2c->base + reg * i2c->regstep);
> +	return ioread8(i2c->base + (reg<<  i2c->reg_shift));
>   }
>
>   static void ocores_process(struct ocores_i2c *i2c)
> @@ -219,22 +220,29 @@ static struct i2c_adapter ocores_adapter = {
>   static int ocores_i2c_of_probe(struct platform_device *pdev,
>   				struct ocores_i2c *i2c)
>   {
> -	const __be32* val;
> -
> -	val = of_get_property(pdev->dev.of_node, "regstep", NULL);
> -	if (!val) {
> -		dev_err(&pdev->dev, "Missing required parameter 'regstep'\n");
> -		return -ENODEV;
> +	struct device_node *np = pdev->dev.of_node;
> +	u32 val;
> +
> +	if (of_property_read_u32(np, "reg-shift",&i2c->reg_shift)) {
> +		/* no 'reg-shift', check for deprecated 'regstep' */
> +		if (!of_property_read_u32(np, "regstep",&val)) {
> +			if (!is_power_of_2(val)) {
> +				dev_err(&pdev->dev, "invalid regstep %d\n",
> +					val);
> +				return -EINVAL;
> +			}
> +			i2c->reg_shift = ilog2(val);
> +			dev_warn(&pdev->dev,
> +				"regstep property deprecated, use reg-shift\n");
> +		}
>   	}
> -	i2c->regstep = be32_to_cpup(val);
>
> -	val = of_get_property(pdev->dev.of_node, "clock-frequency", NULL);
> -	if (!val) {
> +	if (of_property_read_u32(np, "clock-frequency",&val)) {
>   		dev_err(&pdev->dev,
>   			"Missing required parameter 'clock-frequency'\n");
>   		return -ENODEV;
>   	}
> -	i2c->clock_khz = be32_to_cpup(val) / 1000;
> +	i2c->clock_khz = val / 1000;
>
>   	return 0;
>   }
> @@ -277,7 +285,7 @@ static int __devinit ocores_i2c_probe(struct platform_device *pdev)
>
>   	pdata = pdev->dev.platform_data;
>   	if (pdata) {
> -		i2c->regstep = pdata->regstep;
> +		i2c->reg_shift = pdata->reg_shift;
>   		i2c->clock_khz = pdata->clock_khz;
>   	} else {
>   		ret = ocores_i2c_of_probe(pdev, i2c);
> diff --git a/include/linux/i2c-ocores.h b/include/linux/i2c-ocores.h
> index 4d5e57f..5d95df2 100644
> --- a/include/linux/i2c-ocores.h
> +++ b/include/linux/i2c-ocores.h
> @@ -12,7 +12,7 @@
>   #define _LINUX_I2C_OCORES_H
>
>   struct ocores_i2c_platform_data {
> -	u32 regstep;   /* distance between registers */
> +	u32 reg_shift; /* register offset shift value */
>   	u32 clock_khz; /* input clock in kHz */
>   	u8 num_devices; /* number of devices in the devices list */
>   	struct i2c_board_info const *devices; /* devices connected to the bus */

Reviewed By: Rajeev Kumar <rajeev-dlh.kumar-qxv4g6HH51o@public.gmane.org>

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2012-07-16  3:45 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-13 13:44 [PATCH v3 0/4] I2C Ocores updates Jayachandran C
     [not found] ` <1342187065-1651-1-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
2012-07-13 13:44   ` [PATCH v3 1/4] i2c: i2c-ocores - DT bindings and minor fixes Jayachandran C
     [not found]     ` <1342187065-1651-2-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
2012-07-16  3:42       ` Rajeev kumar
2012-07-13 13:44   ` [PATCH v3 2/4] i2c: i2c-ocores: Use reg-shift property Jayachandran C
     [not found]     ` <1342187065-1651-3-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
2012-07-16  3:45       ` Rajeev kumar
2012-07-13 13:44   ` [PATCH v3 3/4] V4L/DVB: mfd: use reg_shift instead of regstep Jayachandran C
2012-07-13 13:44   ` [PATCH v3 4/4] i2c: i2c-ocores: support for 16bit and 32bit IO Jayachandran C
     [not found]     ` <1342187065-1651-5-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>
2012-07-13 13:48       ` Shubhrajyoti Datta
     [not found]         ` <CAM=Q2csMBP7YHgmMob0Npaxo70Quo3-76TNhQawE972zfiLiHA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-07-13 13:58           ` Jayachandran C.
2012-07-14 10:45   ` [PATCH v3 0/4] I2C Ocores updates Wolfram Sang

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.