* [PATCH 7/9] I2C: MV64XXX: Add Device Tree support
@ 2012-06-10 10:31 Andrew Lunn
[not found] ` <1339324322-29388-8-git-send-email-andrew-g2DYL2Zd6BY@public.gmane.org>
2012-07-09 10:25 ` Wolfram Sang
0 siblings, 2 replies; 6+ messages in thread
From: Andrew Lunn @ 2012-06-10 10:31 UTC (permalink / raw)
To: jason
Cc: Andrew Lunn, devicetree-discuss, rob.herring, grant.likely,
linux-i2c, spi-devel-general, machael, linux-arm-kernel
Extends the driver to get properties from device tree. Also extend the
kirkwood DT support to supply the needed properties.
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
---
Documentation/devicetree/bindings/i2c/mrvl-i2c.txt | 35 +++++++++++++++++-
arch/arm/boot/dts/kirkwood.dtsi | 13 +++++++
arch/arm/mach-kirkwood/board-dt.c | 2 ++
drivers/i2c/busses/i2c-mv64xxx.c | 38 +++++++++++++++++---
4 files changed, 82 insertions(+), 6 deletions(-)
diff --git a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
index b891ee2..89ef899 100644
--- a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
+++ b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
@@ -1,4 +1,4 @@
-* I2C
+* Marvell MMP I2C controller
Required properties :
@@ -32,3 +32,36 @@ Examples:
interrupts = <58>;
};
+* Marvell MV64XXX I2C controller
+
+Required properties :
+
+ - reg : Offset and length of the register set for the device
+ - compatible : should be "marvell,mv64xxx-i2c"
+ - interrupts : the interrupt number
+ - frequency-m : m factor in baud rate calculation
+
+Recommended properties :
+
+ - frequency-n : n factor in baud rate calculation
+ - timeout-ms : How long to wait for a transaction to complete
+
+Baud Rate:
+
+The baud rate is calculated thus:
+
+Fscl = Ftclk
+ ------------------------------------------
+ (frequency-n + 1)
+ 10 *(frequency-m + 1) * 2
+
+Examples:
+
+ i2c@11000 {
+ compatible = "marvell,mv64xxx-i2c";
+ reg = <0x11000 0x20>;
+ interrupts = <29>;
+ frequency-m = <4>;
+ frequency-n = <4>;
+ timeout-ms = <1000>;
+ };
diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi
index 7d282ab..3091c01 100644
--- a/arch/arm/boot/dts/kirkwood.dtsi
+++ b/arch/arm/boot/dts/kirkwood.dtsi
@@ -63,5 +63,18 @@
/* set partition map and/or chip-delay in board dts */
status = "disabled";
};
+
+ i2c@11000 {
+ compatible = "marvell,mv64xxx-i2c";
+ reg = <0x11000 0x20>;
+ interrupt = <29>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ interrupts = <29>;
+ frequency-m = <8>;
+ frequency-n = <3>;
+ timeout-ms = <1000>;
+ status = "disable";
+ };
};
};
diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c
index 0942139..5aa025d 100644
--- a/arch/arm/mach-kirkwood/board-dt.c
+++ b/arch/arm/mach-kirkwood/board-dt.c
@@ -28,6 +28,8 @@ static struct of_device_id kirkwood_dt_match_table[] __initdata = {
struct of_dev_auxdata kirkwood_auxdata_lookup[] __initdata = {
OF_DEV_AUXDATA("marvell,orion-spi", 0xf1010600, "orion_spi.0", NULL),
+ OF_DEV_AUXDATA("marvell,mv64xxx-i2c", 0xf1011000, "mv64xxx_i2c.0",
+ NULL),
{},
};
diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c
index 4f44a33..2146984 100644
--- a/drivers/i2c/busses/i2c-mv64xxx.c
+++ b/drivers/i2c/busses/i2c-mv64xxx.c
@@ -18,6 +18,9 @@
#include <linux/mv643xx_i2c.h>
#include <linux/platform_device.h>
#include <linux/io.h>
+#include <linux/of.h>
+#include <linux/of_irq.h>
+#include <linux/of_i2c.h>
/* Register defines */
#define MV64XXX_I2C_REG_SLAVE_ADDR 0x00
@@ -528,7 +531,7 @@ mv64xxx_i2c_probe(struct platform_device *pd)
struct mv64xxx_i2c_pdata *pdata = pd->dev.platform_data;
int rc;
- if ((pd->id != 0) || !pdata)
+ if ((!pdata && !pd->dev.of_node) || (pdata && (pd->id != 0)))
return -ENODEV;
drv_data = kzalloc(sizeof(struct mv64xxx_i2c_data), GFP_KERNEL);
@@ -546,19 +549,35 @@ mv64xxx_i2c_probe(struct platform_device *pd)
init_waitqueue_head(&drv_data->waitq);
spin_lock_init(&drv_data->lock);
- drv_data->freq_m = pdata->freq_m;
- drv_data->freq_n = pdata->freq_n;
- drv_data->irq = platform_get_irq(pd, 0);
+ if (pd->dev.of_node) {
+ of_property_read_u32(pd->dev.of_node, "frequency-m",
+ &drv_data->freq_m);
+ of_property_read_u32(pd->dev.of_node, "frequency-n",
+ &drv_data->freq_n);
+ drv_data->irq = irq_of_parse_and_map(pd->dev.of_node, 0);
+ } else {
+ drv_data->freq_m = pdata->freq_m;
+ drv_data->freq_n = pdata->freq_n;
+ drv_data->irq = platform_get_irq(pd, 0);
+ }
+
if (drv_data->irq < 0) {
rc = -ENXIO;
goto exit_unmap_regs;
}
+
drv_data->adapter.dev.parent = &pd->dev;
drv_data->adapter.algo = &mv64xxx_i2c_algo;
drv_data->adapter.owner = THIS_MODULE;
drv_data->adapter.class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
- drv_data->adapter.timeout = msecs_to_jiffies(pdata->timeout);
+ if (pd->dev.of_node)
+ drv_data->adapter.timeout = msecs_to_jiffies(
+ of_property_read_u32(pd->dev.of_node, "timeout-ms",
+ &drv_data->freq_n));
+ else
+ drv_data->adapter.timeout = msecs_to_jiffies(pdata->timeout);
drv_data->adapter.nr = pd->id;
+ drv_data->adapter.dev.of_node = pd->dev.of_node;
platform_set_drvdata(pd, drv_data);
i2c_set_adapdata(&drv_data->adapter, drv_data);
@@ -577,6 +596,8 @@ mv64xxx_i2c_probe(struct platform_device *pd)
goto exit_free_irq;
}
+ of_i2c_register_devices(&drv_data->adapter);
+
return 0;
exit_free_irq:
@@ -602,12 +623,19 @@ mv64xxx_i2c_remove(struct platform_device *dev)
return rc;
}
+static const struct of_device_id mv64xxx_i2c_of_match_table[] __devinitdata = {
+ { .compatible = "marvell,mv64xxx-i2c", },
+ {}
+};
+MODULE_DEVICE_TABLE(of, mv64xxx_i2c_of_match_table);
+
static struct platform_driver mv64xxx_i2c_driver = {
.probe = mv64xxx_i2c_probe,
.remove = __devexit_p(mv64xxx_i2c_remove),
.driver = {
.owner = THIS_MODULE,
.name = MV64XXX_I2C_CTLR_NAME,
+ .of_match_table = of_match_ptr(mv64xxx_i2c_of_match_table),
},
};
--
1.7.10
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 7/9] I2C: MV64XXX: Add Device Tree support
[not found] ` <1339324322-29388-8-git-send-email-andrew-g2DYL2Zd6BY@public.gmane.org>
@ 2012-06-10 17:11 ` Jason Cooper
2012-06-26 14:03 ` Ben Dooks
1 sibling, 0 replies; 6+ messages in thread
From: Jason Cooper @ 2012-06-10 17:11 UTC (permalink / raw)
To: Andrew Lunn
Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
rob.herring-bsGFqQB8/DxBDgjK7y7TUQ,
linux-i2c-u79uwXL29TY76Z2rM5mHXA,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
machael-QKn5cuLxLXY,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
On Sun, Jun 10, 2012 at 12:31:59PM +0200, Andrew Lunn wrote:
> Extends the driver to get properties from device tree. Also extend the
> kirkwood DT support to supply the needed properties.
>
> Signed-off-by: Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>
> ---
> Documentation/devicetree/bindings/i2c/mrvl-i2c.txt | 35 +++++++++++++++++-
> arch/arm/boot/dts/kirkwood.dtsi | 13 +++++++
> arch/arm/mach-kirkwood/board-dt.c | 2 ++
> drivers/i2c/busses/i2c-mv64xxx.c | 38 +++++++++++++++++---
> 4 files changed, 82 insertions(+), 6 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
> index b891ee2..89ef899 100644
> --- a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
> +++ b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
> @@ -1,4 +1,4 @@
> -* I2C
> +* Marvell MMP I2C controller
>
> Required properties :
>
> @@ -32,3 +32,36 @@ Examples:
> interrupts = <58>;
> };
>
> +* Marvell MV64XXX I2C controller
> +
> +Required properties :
> +
> + - reg : Offset and length of the register set for the device
> + - compatible : should be "marvell,mv64xxx-i2c"
> + - interrupts : the interrupt number
> + - frequency-m : m factor in baud rate calculation
> +
> +Recommended properties :
> +
> + - frequency-n : n factor in baud rate calculation
> + - timeout-ms : How long to wait for a transaction to complete
> +
> +Baud Rate:
> +
> +The baud rate is calculated thus:
> +
> +Fscl = Ftclk
> + ------------------------------------------
> + (frequency-n + 1)
> + 10 *(frequency-m + 1) * 2
> +
> +Examples:
> +
> + i2c@11000 {
> + compatible = "marvell,mv64xxx-i2c";
> + reg = <0x11000 0x20>;
> + interrupts = <29>;
> + frequency-m = <4>;
> + frequency-n = <4>;
> + timeout-ms = <1000>;
> + };
> diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi
> index 7d282ab..3091c01 100644
> --- a/arch/arm/boot/dts/kirkwood.dtsi
> +++ b/arch/arm/boot/dts/kirkwood.dtsi
> @@ -63,5 +63,18 @@
> /* set partition map and/or chip-delay in board dts */
> status = "disabled";
> };
> +
> + i2c@11000 {
> + compatible = "marvell,mv64xxx-i2c";
> + reg = <0x11000 0x20>;
> + interrupt = <29>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + interrupts = <29>;
> + frequency-m = <8>;
> + frequency-n = <3>;
> + timeout-ms = <1000>;
> + status = "disable";
> + };
> };
> };
> diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c
> index 0942139..5aa025d 100644
> --- a/arch/arm/mach-kirkwood/board-dt.c
> +++ b/arch/arm/mach-kirkwood/board-dt.c
> @@ -28,6 +28,8 @@ static struct of_device_id kirkwood_dt_match_table[] __initdata = {
>
> struct of_dev_auxdata kirkwood_auxdata_lookup[] __initdata = {
> OF_DEV_AUXDATA("marvell,orion-spi", 0xf1010600, "orion_spi.0", NULL),
> + OF_DEV_AUXDATA("marvell,mv64xxx-i2c", 0xf1011000, "mv64xxx_i2c.0",
> + NULL),
Same comment as before regarding magic register addresses...
thx,
Jason.
> {},
> };
>
> diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c
> index 4f44a33..2146984 100644
> --- a/drivers/i2c/busses/i2c-mv64xxx.c
> +++ b/drivers/i2c/busses/i2c-mv64xxx.c
> @@ -18,6 +18,9 @@
> #include <linux/mv643xx_i2c.h>
> #include <linux/platform_device.h>
> #include <linux/io.h>
> +#include <linux/of.h>
> +#include <linux/of_irq.h>
> +#include <linux/of_i2c.h>
>
> /* Register defines */
> #define MV64XXX_I2C_REG_SLAVE_ADDR 0x00
> @@ -528,7 +531,7 @@ mv64xxx_i2c_probe(struct platform_device *pd)
> struct mv64xxx_i2c_pdata *pdata = pd->dev.platform_data;
> int rc;
>
> - if ((pd->id != 0) || !pdata)
> + if ((!pdata && !pd->dev.of_node) || (pdata && (pd->id != 0)))
> return -ENODEV;
>
> drv_data = kzalloc(sizeof(struct mv64xxx_i2c_data), GFP_KERNEL);
> @@ -546,19 +549,35 @@ mv64xxx_i2c_probe(struct platform_device *pd)
> init_waitqueue_head(&drv_data->waitq);
> spin_lock_init(&drv_data->lock);
>
> - drv_data->freq_m = pdata->freq_m;
> - drv_data->freq_n = pdata->freq_n;
> - drv_data->irq = platform_get_irq(pd, 0);
> + if (pd->dev.of_node) {
> + of_property_read_u32(pd->dev.of_node, "frequency-m",
> + &drv_data->freq_m);
> + of_property_read_u32(pd->dev.of_node, "frequency-n",
> + &drv_data->freq_n);
> + drv_data->irq = irq_of_parse_and_map(pd->dev.of_node, 0);
> + } else {
> + drv_data->freq_m = pdata->freq_m;
> + drv_data->freq_n = pdata->freq_n;
> + drv_data->irq = platform_get_irq(pd, 0);
> + }
> +
> if (drv_data->irq < 0) {
> rc = -ENXIO;
> goto exit_unmap_regs;
> }
> +
> drv_data->adapter.dev.parent = &pd->dev;
> drv_data->adapter.algo = &mv64xxx_i2c_algo;
> drv_data->adapter.owner = THIS_MODULE;
> drv_data->adapter.class = I2C_CLASS_HWMON | I2C_CLASS_SPD;
> - drv_data->adapter.timeout = msecs_to_jiffies(pdata->timeout);
> + if (pd->dev.of_node)
> + drv_data->adapter.timeout = msecs_to_jiffies(
> + of_property_read_u32(pd->dev.of_node, "timeout-ms",
> + &drv_data->freq_n));
> + else
> + drv_data->adapter.timeout = msecs_to_jiffies(pdata->timeout);
> drv_data->adapter.nr = pd->id;
> + drv_data->adapter.dev.of_node = pd->dev.of_node;
> platform_set_drvdata(pd, drv_data);
> i2c_set_adapdata(&drv_data->adapter, drv_data);
>
> @@ -577,6 +596,8 @@ mv64xxx_i2c_probe(struct platform_device *pd)
> goto exit_free_irq;
> }
>
> + of_i2c_register_devices(&drv_data->adapter);
> +
> return 0;
>
> exit_free_irq:
> @@ -602,12 +623,19 @@ mv64xxx_i2c_remove(struct platform_device *dev)
> return rc;
> }
>
> +static const struct of_device_id mv64xxx_i2c_of_match_table[] __devinitdata = {
> + { .compatible = "marvell,mv64xxx-i2c", },
> + {}
> +};
> +MODULE_DEVICE_TABLE(of, mv64xxx_i2c_of_match_table);
> +
> static struct platform_driver mv64xxx_i2c_driver = {
> .probe = mv64xxx_i2c_probe,
> .remove = __devexit_p(mv64xxx_i2c_remove),
> .driver = {
> .owner = THIS_MODULE,
> .name = MV64XXX_I2C_CTLR_NAME,
> + .of_match_table = of_match_ptr(mv64xxx_i2c_of_match_table),
> },
> };
>
> --
> 1.7.10
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 7/9] I2C: MV64XXX: Add Device Tree support
[not found] ` <1339324322-29388-8-git-send-email-andrew-g2DYL2Zd6BY@public.gmane.org>
2012-06-10 17:11 ` Jason Cooper
@ 2012-06-26 14:03 ` Ben Dooks
[not found] ` <4FE9C14C.2030804-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org>
1 sibling, 1 reply; 6+ messages in thread
From: Ben Dooks @ 2012-06-26 14:03 UTC (permalink / raw)
To: Andrew Lunn
Cc: jason-NLaQJdtUoK4Be96aLqz0jA,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
rob.herring-bsGFqQB8/DxBDgjK7y7TUQ,
linux-i2c-u79uwXL29TY76Z2rM5mHXA,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
machael-QKn5cuLxLXY,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
On 10/06/12 11:31, Andrew Lunn wrote:
> Extends the driver to get properties from device tree. Also extend the
> kirkwood DT support to supply the needed properties.
>
> Signed-off-by: Andrew Lunn<andrew-g2DYL2Zd6BY@public.gmane.org>
> ---
> Documentation/devicetree/bindings/i2c/mrvl-i2c.txt | 35 +++++++++++++++++-
> arch/arm/boot/dts/kirkwood.dtsi | 13 +++++++
> arch/arm/mach-kirkwood/board-dt.c | 2 ++
> drivers/i2c/busses/i2c-mv64xxx.c | 38 +++++++++++++++++---
> 4 files changed, 82 insertions(+), 6 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
> index b891ee2..89ef899 100644
> --- a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
> +++ b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
> @@ -1,4 +1,4 @@
> -* I2C
> +* Marvell MMP I2C controller
>
> Required properties :
>
> @@ -32,3 +32,36 @@ Examples:
> interrupts =<58>;
> };
>
> +* Marvell MV64XXX I2C controller
> +
> +Required properties :
> +
> + - reg : Offset and length of the register set for the device
> + - compatible : should be "marvell,mv64xxx-i2c"
> + - interrupts : the interrupt number
> + - frequency-m : m factor in baud rate calculation
> +
> +Recommended properties :
> +
> + - frequency-n : n factor in baud rate calculation
> + - timeout-ms : How long to wait for a transaction to complete
> +
> +Baud Rate:
> +
> +The baud rate is calculated thus:
> +
> +Fscl = Ftclk
> + ------------------------------------------
> + (frequency-n + 1)
> + 10 *(frequency-m + 1) * 2
> +
> +Examples:
I'd really rather see this calculated at run-time, given some
systems can quite easily change their clocks.
--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 7/9] I2C: MV64XXX: Add Device Tree support
[not found] ` <4FE9C14C.2030804-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org>
@ 2012-06-26 14:10 ` Andrew Lunn
[not found] ` <20120626141047.GA18804-g2DYL2Zd6BY@public.gmane.org>
0 siblings, 1 reply; 6+ messages in thread
From: Andrew Lunn @ 2012-06-26 14:10 UTC (permalink / raw)
To: Ben Dooks
Cc: Andrew Lunn, jason-NLaQJdtUoK4Be96aLqz0jA,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
rob.herring-bsGFqQB8/DxBDgjK7y7TUQ,
linux-i2c-u79uwXL29TY76Z2rM5mHXA,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
machael-QKn5cuLxLXY,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
On Tue, Jun 26, 2012 at 03:03:56PM +0100, Ben Dooks wrote:
> On 10/06/12 11:31, Andrew Lunn wrote:
> >Extends the driver to get properties from device tree. Also extend the
> >kirkwood DT support to supply the needed properties.
> >
> >Signed-off-by: Andrew Lunn<andrew-g2DYL2Zd6BY@public.gmane.org>
> >---
> > Documentation/devicetree/bindings/i2c/mrvl-i2c.txt | 35 +++++++++++++++++-
> > arch/arm/boot/dts/kirkwood.dtsi | 13 +++++++
> > arch/arm/mach-kirkwood/board-dt.c | 2 ++
> > drivers/i2c/busses/i2c-mv64xxx.c | 38 +++++++++++++++++---
> > 4 files changed, 82 insertions(+), 6 deletions(-)
> >
> >diff --git a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
> >index b891ee2..89ef899 100644
> >--- a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
> >+++ b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
> >@@ -1,4 +1,4 @@
> >-* I2C
> >+* Marvell MMP I2C controller
> >
> > Required properties :
> >
> >@@ -32,3 +32,36 @@ Examples:
> > interrupts =<58>;
> > };
> >
> >+* Marvell MV64XXX I2C controller
> >+
> >+Required properties :
> >+
> >+ - reg : Offset and length of the register set for the device
> >+ - compatible : should be "marvell,mv64xxx-i2c"
> >+ - interrupts : the interrupt number
> >+ - frequency-m : m factor in baud rate calculation
> >+
> >+Recommended properties :
> >+
> >+ - frequency-n : n factor in baud rate calculation
> >+ - timeout-ms : How long to wait for a transaction to complete
> >+
> >+Baud Rate:
> >+
> >+The baud rate is calculated thus:
> >+
> >+Fscl = Ftclk
> >+ ------------------------------------------
> >+ (frequency-n + 1)
> >+ 10 *(frequency-m + 1) * 2
> >+
> >+Examples:
>
> I'd really rather see this calculated at run-time, given some
> systems can quite easily change their clocks.
Hi Ben
Well, none of the Orion systems would make use of this. They all have
fixed clocks.
Maybe the new Armada XP systems could make use of clock scaling?
I've no plans to implement this, but please feel free to send
patches...
Andrew
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 7/9] I2C: MV64XXX: Add Device Tree support
[not found] ` <20120626141047.GA18804-g2DYL2Zd6BY@public.gmane.org>
@ 2012-06-26 14:13 ` Ben Dooks
0 siblings, 0 replies; 6+ messages in thread
From: Ben Dooks @ 2012-06-26 14:13 UTC (permalink / raw)
To: Andrew Lunn, jason-NLaQJdtUoK4Be96aLqz0jA,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ,
rob.herring-bsGFqQB8/DxBDgjK7y7TUQ,
grant.likely-s3s/WqlpOiPyB63q8FvJNQ,
linux-i2c-u79uwXL29TY76Z2rM5mHXA,
spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
machael-QKn5cuLxLXY,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
On 26/06/12 15:10, Andrew Lunn wrote:
> On Tue, Jun 26, 2012 at 03:03:56PM +0100, Ben Dooks wrote:
>> On 10/06/12 11:31, Andrew Lunn wrote:
>>> Extends the driver to get properties from device tree. Also extend the
>>> kirkwood DT support to supply the needed properties.
>>>
>>> Signed-off-by: Andrew Lunn<andrew-g2DYL2Zd6BY@public.gmane.org>
>>> ---
>>> Documentation/devicetree/bindings/i2c/mrvl-i2c.txt | 35 +++++++++++++++++-
>>> arch/arm/boot/dts/kirkwood.dtsi | 13 +++++++
>>> arch/arm/mach-kirkwood/board-dt.c | 2 ++
>>> drivers/i2c/busses/i2c-mv64xxx.c | 38 +++++++++++++++++---
>>> 4 files changed, 82 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
>>> index b891ee2..89ef899 100644
>>> --- a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
>>> +++ b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
>>> @@ -1,4 +1,4 @@
>>> -* I2C
>>> +* Marvell MMP I2C controller
>>>
>>> Required properties :
>>>
>>> @@ -32,3 +32,36 @@ Examples:
>>> interrupts =<58>;
>>> };
>>>
>>> +* Marvell MV64XXX I2C controller
>>> +
>>> +Required properties :
>>> +
>>> + - reg : Offset and length of the register set for the device
>>> + - compatible : should be "marvell,mv64xxx-i2c"
>>> + - interrupts : the interrupt number
>>> + - frequency-m : m factor in baud rate calculation
>>> +
>>> +Recommended properties :
>>> +
>>> + - frequency-n : n factor in baud rate calculation
>>> + - timeout-ms : How long to wait for a transaction to complete
>>> +
>>> +Baud Rate:
>>> +
>>> +The baud rate is calculated thus:
>>> +
>>> +Fscl = Ftclk
>>> + ------------------------------------------
>>> + (frequency-n + 1)
>>> + 10 *(frequency-m + 1) * 2
>>> +
>>> +Examples:
>>
>> I'd really rather see this calculated at run-time, given some
>> systems can quite easily change their clocks.
>
> Hi Ben
>
> Well, none of the Orion systems would make use of this. They all have
> fixed clocks.
>
> Maybe the new Armada XP systems could make use of clock scaling?
A couple of the development boards here have dip-switches to change
the clocks at start-time, and thus having something that does this
would be useful.
PS, for other people's info, this bounces to the i2c list due to the
use of 'xxx' in the title :(
--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 7/9] I2C: MV64XXX: Add Device Tree support
2012-06-10 10:31 [PATCH 7/9] I2C: MV64XXX: Add Device Tree support Andrew Lunn
[not found] ` <1339324322-29388-8-git-send-email-andrew-g2DYL2Zd6BY@public.gmane.org>
@ 2012-07-09 10:25 ` Wolfram Sang
1 sibling, 0 replies; 6+ messages in thread
From: Wolfram Sang @ 2012-07-09 10:25 UTC (permalink / raw)
To: Andrew Lunn
Cc: jason, devicetree-discuss, rob.herring, linux-i2c,
spi-devel-general, machael, linux-arm-kernel
[-- Attachment #1.1: Type: text/plain, Size: 1896 bytes --]
On Sun, Jun 10, 2012 at 12:31:59PM +0200, Andrew Lunn wrote:
> Extends the driver to get properties from device tree. Also extend the
> kirkwood DT support to supply the needed properties.
>
> Signed-off-by: Andrew Lunn <andrew@lunn.ch>
> ---
> Documentation/devicetree/bindings/i2c/mrvl-i2c.txt | 35 +++++++++++++++++-
> arch/arm/boot/dts/kirkwood.dtsi | 13 +++++++
> arch/arm/mach-kirkwood/board-dt.c | 2 ++
> drivers/i2c/busses/i2c-mv64xxx.c | 38 +++++++++++++++++---
> 4 files changed, 82 insertions(+), 6 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
> index b891ee2..89ef899 100644
> --- a/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
> +++ b/Documentation/devicetree/bindings/i2c/mrvl-i2c.txt
> @@ -1,4 +1,4 @@
> -* I2C
> +* Marvell MMP I2C controller
>
> Required properties :
>
> @@ -32,3 +32,36 @@ Examples:
> interrupts = <58>;
> };
>
> +* Marvell MV64XXX I2C controller
> +
> +Required properties :
> +
> + - reg : Offset and length of the register set for the device
> + - compatible : should be "marvell,mv64xxx-i2c"
> + - interrupts : the interrupt number
> + - frequency-m : m factor in baud rate calculation
> +
> +Recommended properties :
> +
> + - frequency-n : n factor in baud rate calculation
> + - timeout-ms : How long to wait for a transaction to complete
The way we define the bus speed for i2c with DT is using "clock-frequency".
You should be able to derive the dividers from that? Adding custom
properties for every driver will hardly be maintainable.
Thanks,
Wolfram
--
Pengutronix e.K. | Wolfram Sang |
Industrial Linux Solutions | http://www.pengutronix.de/ |
[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
[-- Attachment #2: Type: text/plain, Size: 176 bytes --]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-07-09 10:25 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-10 10:31 [PATCH 7/9] I2C: MV64XXX: Add Device Tree support Andrew Lunn
[not found] ` <1339324322-29388-8-git-send-email-andrew-g2DYL2Zd6BY@public.gmane.org>
2012-06-10 17:11 ` Jason Cooper
2012-06-26 14:03 ` Ben Dooks
[not found] ` <4FE9C14C.2030804-4yDnlxn2s6sWdaTGBSpHTA@public.gmane.org>
2012-06-26 14:10 ` Andrew Lunn
[not found] ` <20120626141047.GA18804-g2DYL2Zd6BY@public.gmane.org>
2012-06-26 14:13 ` Ben Dooks
2012-07-09 10:25 ` 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).