* [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
[parent not found: <1342187065-1651-1-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>]
* [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
[parent not found: <1342187065-1651-2-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>]
* 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@public.gmane.org, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org, jacmet-OfajU3CKLf1/SzgSGea1oA@public.gmane.org, richard.rojfors-gfIc91nka+FZroRs9YW3xA@public.gmane.org, devicetree-discuss-mnsaURCQ41sdnm+yROfE0A@public.gmane.org, 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
* [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
[parent not found: <1342187065-1651-3-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>]
* 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@public.gmane.org, w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org, jacmet-OfajU3CKLf1/SzgSGea1oA@public.gmane.org, richard.rojfors-gfIc91nka+FZroRs9YW3xA@public.gmane.org, devicetree-discuss-mnsaURCQ41sdnm+yROfE0A@public.gmane.org, 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
* [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
[parent not found: <1342187065-1651-5-git-send-email-jayachandranc-oSioyQM9ZPnuBjGU1YDckgC/G2K4zDHf@public.gmane.org>]
* 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
[parent not found: <CAM=Q2csMBP7YHgmMob0Npaxo70Quo3-76TNhQawE972zfiLiHA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>]
* 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
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 a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).