* [PATCH] [POWERPC] Add i2c pins to dts and board setup
@ 2008-05-10 15:50 Jochen Friedrich
2008-05-13 16:46 ` Scott Wood
0 siblings, 1 reply; 5+ messages in thread
From: Jochen Friedrich @ 2008-05-10 15:50 UTC (permalink / raw)
To: Anton Vorontsov
Cc: linuxppc-dev list, Kernel, Linux, Kumar Gala, Scott Wood,
Linux I2C, Jean Delvare
Initialize I2C pins on boards with CPM1/CPM2 controllers.
Signed-off-by: Jochen Friedrich <jochen@scram.de>
---
arch/powerpc/boot/dts/mpc8272ads.dts | 10 ++++++++++
arch/powerpc/boot/dts/mpc866ads.dts | 10 ++++++++++
arch/powerpc/boot/dts/mpc885ads.dts | 10 ++++++++++
arch/powerpc/platforms/82xx/mpc8272_ads.c | 4 ++++
arch/powerpc/platforms/8xx/mpc86xads_setup.c | 4 ++++
arch/powerpc/platforms/8xx/mpc885ads_setup.c | 3 +++
6 files changed, 41 insertions(+), 0 deletions(-)
diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/boot/dts/mpc8272ads.dts
index 46e2da3..57abcc1 100644
--- a/arch/powerpc/boot/dts/mpc8272ads.dts
+++ b/arch/powerpc/boot/dts/mpc8272ads.dts
@@ -217,6 +217,16 @@
linux,network-index = <1>;
fsl,cpm-command = <0x16200300>;
};
+
+ i2c@11860 {
+ compatible = "fsl,mpc8272-i2c",
+ "fsl,cpm2-i2c",
+ "fsl,cpm-i2c";
+ reg = <11860 20 8afc 2>;
+ interrupts = <1 8>;
+ interrupt-parent = <&PIC>;
+ fsl,cpm-command = <29600000>;
+ };
};
PIC: interrupt-controller@10c00 {
diff --git a/arch/powerpc/boot/dts/mpc866ads.dts b/arch/powerpc/boot/dts/mpc866ads.dts
index 765e43c..84c190e 100644
--- a/arch/powerpc/boot/dts/mpc866ads.dts
+++ b/arch/powerpc/boot/dts/mpc866ads.dts
@@ -171,6 +171,16 @@
fsl,cpm-command = <0000>;
linux,network-index = <1>;
};
+
+ i2c@860 {
+ compatible = "fsl,mpc866-i2c",
+ "fsl,cpm1-i2c",
+ "fsl,cpm-i2c";
+ reg = <860 20 3c80 30>;
+ interrupts = <10>;
+ interrupt-parent = <&CPM_PIC>;
+ fsl,cpm-command = <0010>;
+ };
};
};
diff --git a/arch/powerpc/boot/dts/mpc885ads.dts b/arch/powerpc/boot/dts/mpc885ads.dts
index 9895043..67d0e8d 100644
--- a/arch/powerpc/boot/dts/mpc885ads.dts
+++ b/arch/powerpc/boot/dts/mpc885ads.dts
@@ -215,6 +215,16 @@
fsl,cpm-command = <0x80>;
linux,network-index = <2>;
};
+
+ i2c@860 {
+ compatible = "fsl,mpc885-i2c",
+ "fsl,cpm1-i2c",
+ "fsl,cpm-i2c";
+ reg = <860 20 3c80 30>;
+ interrupts = <10>;
+ interrupt-parent = <&CPM_PIC>;
+ fsl,cpm-command = <0010>;
+ };
};
};
diff --git a/arch/powerpc/platforms/82xx/mpc8272_ads.c b/arch/powerpc/platforms/82xx/mpc8272_ads.c
index 7d30187..8054c68 100644
--- a/arch/powerpc/platforms/82xx/mpc8272_ads.c
+++ b/arch/powerpc/platforms/82xx/mpc8272_ads.c
@@ -96,6 +96,10 @@ static struct cpm_pin mpc8272_ads_pins[] = {
{1, 31, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
{2, 16, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
{2, 17, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
+
+ /* I2C */
+ {3, 14, CPM_PIN_INPUT | CPM_PIN_SECONDARY | CPM_PIN_OPENDRAIN},
+ {3, 15, CPM_PIN_INPUT | CPM_PIN_SECONDARY | CPM_PIN_OPENDRAIN},
};
static void __init init_ioports(void)
diff --git a/arch/powerpc/platforms/8xx/mpc86xads_setup.c b/arch/powerpc/platforms/8xx/mpc86xads_setup.c
index c028a5b..caaec29 100644
--- a/arch/powerpc/platforms/8xx/mpc86xads_setup.c
+++ b/arch/powerpc/platforms/8xx/mpc86xads_setup.c
@@ -65,6 +65,10 @@ static struct cpm_pin mpc866ads_pins[] = {
{CPM_PORTD, 13, CPM_PIN_OUTPUT},
{CPM_PORTD, 14, CPM_PIN_OUTPUT},
{CPM_PORTD, 15, CPM_PIN_OUTPUT},
+
+ /* I2C */
+ {CPM_PORTB, 26, CPM_PIN_INPUT | CPM_PIN_OPENDRAIN},
+ {CPM_PORTB, 27, CPM_PIN_INPUT | CPM_PIN_OPENDRAIN},
};
static void __init init_ioports(void)
diff --git a/arch/powerpc/platforms/8xx/mpc885ads_setup.c b/arch/powerpc/platforms/8xx/mpc885ads_setup.c
index 6e7ded0..45ed6cd 100644
--- a/arch/powerpc/platforms/8xx/mpc885ads_setup.c
+++ b/arch/powerpc/platforms/8xx/mpc885ads_setup.c
@@ -158,6 +158,9 @@ static struct cpm_pin mpc885ads_pins[] = {
{CPM_PORTE, 28, CPM_PIN_OUTPUT},
{CPM_PORTE, 29, CPM_PIN_OUTPUT},
#endif
+ /* I2C */
+ {CPM_PORTB, 26, CPM_PIN_INPUT | CPM_PIN_OPENDRAIN},
+ {CPM_PORTB, 27, CPM_PIN_INPUT | CPM_PIN_OPENDRAIN},
};
static void __init init_ioports(void)
--
1.5.5.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] [POWERPC] Add i2c pins to dts and board setup
2008-05-10 15:50 [PATCH] [POWERPC] Add i2c pins to dts and board setup Jochen Friedrich
@ 2008-05-13 16:46 ` Scott Wood
0 siblings, 0 replies; 5+ messages in thread
From: Scott Wood @ 2008-05-13 16:46 UTC (permalink / raw)
To: Jochen Friedrich
Cc: Anton Vorontsov, linuxppc-dev list, Kernel, Linux, Kumar Gala,
Linux I2C, Jean Delvare
Jochen Friedrich wrote:
> Initialize I2C pins on boards with CPM1/CPM2 controllers.
>
> Signed-off-by: Jochen Friedrich <jochen@scram.de>
> ---
> arch/powerpc/boot/dts/mpc8272ads.dts | 10 ++++++++++
> arch/powerpc/boot/dts/mpc866ads.dts | 10 ++++++++++
> arch/powerpc/boot/dts/mpc885ads.dts | 10 ++++++++++
> arch/powerpc/platforms/82xx/mpc8272_ads.c | 4 ++++
> arch/powerpc/platforms/8xx/mpc86xads_setup.c | 4 ++++
> arch/powerpc/platforms/8xx/mpc885ads_setup.c | 3 +++
> 6 files changed, 41 insertions(+), 0 deletions(-)
>
> diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/boot/dts/mpc8272ads.dts
> index 46e2da3..57abcc1 100644
> --- a/arch/powerpc/boot/dts/mpc8272ads.dts
> +++ b/arch/powerpc/boot/dts/mpc8272ads.dts
> @@ -217,6 +217,16 @@
> linux,network-index = <1>;
> fsl,cpm-command = <0x16200300>;
> };
> +
> + i2c@11860 {
> + compatible = "fsl,mpc8272-i2c",
> + "fsl,cpm2-i2c",
> + "fsl,cpm-i2c";
> + reg = <11860 20 8afc 2>;
> + interrupts = <1 8>;
> + interrupt-parent = <&PIC>;
> + fsl,cpm-command = <29600000>;
> + };
> };
>
> PIC: interrupt-controller@10c00 {
> diff --git a/arch/powerpc/boot/dts/mpc866ads.dts b/arch/powerpc/boot/dts/mpc866ads.dts
> index 765e43c..84c190e 100644
> --- a/arch/powerpc/boot/dts/mpc866ads.dts
> +++ b/arch/powerpc/boot/dts/mpc866ads.dts
> @@ -171,6 +171,16 @@
> fsl,cpm-command = <0000>;
> linux,network-index = <1>;
> };
> +
> + i2c@860 {
> + compatible = "fsl,mpc866-i2c",
> + "fsl,cpm1-i2c",
> + "fsl,cpm-i2c";
> + reg = <860 20 3c80 30>;
> + interrupts = <10>;
> + interrupt-parent = <&CPM_PIC>;
> + fsl,cpm-command = <0010>;
> + };
> };
> };
>
> diff --git a/arch/powerpc/boot/dts/mpc885ads.dts b/arch/powerpc/boot/dts/mpc885ads.dts
> index 9895043..67d0e8d 100644
> --- a/arch/powerpc/boot/dts/mpc885ads.dts
> +++ b/arch/powerpc/boot/dts/mpc885ads.dts
> @@ -215,6 +215,16 @@
> fsl,cpm-command = <0x80>;
> linux,network-index = <2>;
> };
> +
> + i2c@860 {
> + compatible = "fsl,mpc885-i2c",
> + "fsl,cpm1-i2c",
> + "fsl,cpm-i2c";
> + reg = <860 20 3c80 30>;
> + interrupts = <10>;
> + interrupt-parent = <&CPM_PIC>;
> + fsl,cpm-command = <0010>;
> + };
> };
> };
>
These are v1 dts files -- you need an 0x prefix on the hex numbers.
-Scott
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] [POWERPC] Add i2c pins to dts and board setup
2008-05-21 15:10 ` Scott Wood
@ 2008-05-21 16:17 ` Jochen Friedrich
0 siblings, 0 replies; 5+ messages in thread
From: Jochen Friedrich @ 2008-05-21 16:17 UTC (permalink / raw)
To: Scott Wood
Cc: Anton Vorontsov, linuxppc-dev list, Kernel, Linux, Kumar Gala,
Linux I2C, Jean Delvare, Paul Mackerras, Andrew Morton
Hi Scott,
>> + - linux,i2c-index : Can be used to hard code an i2c bus number.
>> + - linux,i2c-class : Can be used to override the i2c class.
>
> Why do we need this?
There are still a bunch of i2c drivers using the old API (mainly v4l and dvb stuff)
which are slowly being converted by their subsystem maintainers, though.
> It'd be better to just convert any needed old-style drivers than add this
> to the device tree.
Sure. That's why the parameters are only optional. Once all i2c drivers are
converted, these parameters won't be used anymore. Maybe they should be marked
as deprecated.
>> + - bus-frequency : Can be used to set the i2c bus frequency. If unspecified,
>> + a default frequency of 60kHz is being used.
>
> clock-frequency is the standard name for such things.
I was just confused by the fact that unlike a serial port, i2c is a bus itself.
Thanks,
Jochen
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] [POWERPC] Add i2c pins to dts and board setup
2008-05-21 10:31 Jochen Friedrich
@ 2008-05-21 15:10 ` Scott Wood
2008-05-21 16:17 ` Jochen Friedrich
0 siblings, 1 reply; 5+ messages in thread
From: Scott Wood @ 2008-05-21 15:10 UTC (permalink / raw)
To: Jochen Friedrich
Cc: Anton Vorontsov, linuxppc-dev list, Kernel, Linux, Kumar Gala,
Linux I2C, Jean Delvare, Paul Mackerras, Andrew Morton
On Wed, May 21, 2008 at 12:31:40PM +0200, Jochen Friedrich wrote:
> + - linux,i2c-index : Can be used to hard code an i2c bus nummer.
s/nummer/number/
Why do we need this?
> + - linux,i2c-class : Can be used to override the i2c class. The class is used
> + by old style i2c device drivers to find a bus in a specific context like
> + system management, video or sound. By default, I2C_CLASS_HWMON (1) is
> + being used. The definition of the classes can be found in
> + include/i2c/i2c.h
It'd be better to just convert any needed old-style drivers than add this
to the device tree.
> + - bus-frequency : Can be used to set the i2c bus frequency. If unspecified,
> + a default frequency of 60kHz is being used.
clock-frequency is the standard name for such things.
-Scott
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] [POWERPC] Add i2c pins to dts and board setup
@ 2008-05-21 10:31 Jochen Friedrich
2008-05-21 15:10 ` Scott Wood
0 siblings, 1 reply; 5+ messages in thread
From: Jochen Friedrich @ 2008-05-21 10:31 UTC (permalink / raw)
To: Anton Vorontsov
Cc: linuxppc-dev list, Kernel, Linux, Kumar Gala, Scott Wood,
Linux I2C, Jean Delvare, Paul Mackerras, Andrew Morton
Initialize I2C pins on boards with CPM1/CPM2 controllers.
Signed-off-by: Jochen Friedrich <jochen@scram.de>
---
Documentation/powerpc/booting-without-of.txt | 39 ++++++++++++++++++++++++++
arch/powerpc/boot/dts/mpc8272ads.dts | 11 +++++++
arch/powerpc/boot/dts/mpc866ads.dts | 11 +++++++
arch/powerpc/boot/dts/mpc885ads.dts | 11 +++++++
arch/powerpc/platforms/82xx/mpc8272_ads.c | 4 ++
arch/powerpc/platforms/8xx/mpc86xads_setup.c | 4 ++
arch/powerpc/platforms/8xx/mpc885ads_setup.c | 3 ++
7 files changed, 83 insertions(+), 0 deletions(-)
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt
index 1d2a772..3fc4eb2 100644
--- a/Documentation/powerpc/booting-without-of.txt
+++ b/Documentation/powerpc/booting-without-of.txt
@@ -2132,6 +2132,45 @@ platforms are moved over to use the flattened-device-tree model.
};
};
+ ix) I2C
+
+ The I2C controller is expressed as a bus under the CPM node.
+
+ Properties:
+ - compatible : "fsl,cpm1-i2c", "fsl,cpm2-i2c"
+ - reg : On CPM2 devices, the second resource doesn't specify the I2C
+ Parameter RAM itself, but the I2C_BASE field of the CPM2 Parameter RAM
+ (typically 0x8afc 0x2).
+ - #address-cells : Should be one. The cell is the i2c device address with
+ the r/w bit set to zero.
+ - #size-cells : Should be zero.
+ - linux,i2c-index : Can be used to hard code an i2c bus nummer.
+ - linux,i2c-class : Can be used to override the i2c class. The class is used
+ by old style i2c device drivers to find a bus in a specific context like
+ system management, video or sound. By default, I2C_CLASS_HWMON (1) is
+ being used. The definition of the classes can be found in
+ include/i2c/i2c.h
+ - bus-frequency : Can be used to set the i2c bus frequency. If unspecified,
+ a default frequency of 60kHz is being used.
+
+ Example, based on mpc823:
+
+ i2c@860 {
+ compatible = "fsl,mpc823-i2c",
+ "fsl,cpm1-i2c";
+ reg = <0x860 0x20 0x3c80 0x30>;
+ interrupts = <16>;
+ interrupt-parent = <&CPM_PIC>;
+ fsl,cpm-command = <0x10>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ rtc@68 {
+ compatible = "dallas,ds1307";
+ reg = <0x68>;
+ };
+ };
+
m) Chipselect/Local Bus
Properties:
diff --git a/arch/powerpc/boot/dts/mpc8272ads.dts b/arch/powerpc/boot/dts/mpc8272ads.dts
index 46e2da3..d27f8a7 100644
--- a/arch/powerpc/boot/dts/mpc8272ads.dts
+++ b/arch/powerpc/boot/dts/mpc8272ads.dts
@@ -217,6 +217,17 @@
linux,network-index = <1>;
fsl,cpm-command = <0x16200300>;
};
+
+ i2c@11860 {
+ compatible = "fsl,mpc8272-i2c",
+ "fsl,cpm2-i2c";
+ reg = <0x11860 0x20 0x8afc 0x2>;
+ interrupts = <1 8>;
+ interrupt-parent = <&PIC>;
+ fsl,cpm-command = <0x29600000>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
};
PIC: interrupt-controller@10c00 {
diff --git a/arch/powerpc/boot/dts/mpc866ads.dts b/arch/powerpc/boot/dts/mpc866ads.dts
index 765e43c..bd70065 100644
--- a/arch/powerpc/boot/dts/mpc866ads.dts
+++ b/arch/powerpc/boot/dts/mpc866ads.dts
@@ -171,6 +171,17 @@
fsl,cpm-command = <0000>;
linux,network-index = <1>;
};
+
+ i2c@860 {
+ compatible = "fsl,mpc866-i2c",
+ "fsl,cpm1-i2c";
+ reg = <0x860 0x20 0x3c80 0x30>;
+ interrupts = <16>;
+ interrupt-parent = <&CPM_PIC>;
+ fsl,cpm-command = <0x10>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
};
};
diff --git a/arch/powerpc/boot/dts/mpc885ads.dts b/arch/powerpc/boot/dts/mpc885ads.dts
index 9895043..b123e9f 100644
--- a/arch/powerpc/boot/dts/mpc885ads.dts
+++ b/arch/powerpc/boot/dts/mpc885ads.dts
@@ -215,6 +215,17 @@
fsl,cpm-command = <0x80>;
linux,network-index = <2>;
};
+
+ i2c@860 {
+ compatible = "fsl,mpc885-i2c",
+ "fsl,cpm1-i2c";
+ reg = <0x860 0x20 0x3c80 0x30>;
+ interrupts = <16>;
+ interrupt-parent = <&CPM_PIC>;
+ fsl,cpm-command = <0x10>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
};
};
diff --git a/arch/powerpc/platforms/82xx/mpc8272_ads.c b/arch/powerpc/platforms/82xx/mpc8272_ads.c
index 7d30187..8054c68 100644
--- a/arch/powerpc/platforms/82xx/mpc8272_ads.c
+++ b/arch/powerpc/platforms/82xx/mpc8272_ads.c
@@ -96,6 +96,10 @@ static struct cpm_pin mpc8272_ads_pins[] = {
{1, 31, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
{2, 16, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
{2, 17, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
+
+ /* I2C */
+ {3, 14, CPM_PIN_INPUT | CPM_PIN_SECONDARY | CPM_PIN_OPENDRAIN},
+ {3, 15, CPM_PIN_INPUT | CPM_PIN_SECONDARY | CPM_PIN_OPENDRAIN},
};
static void __init init_ioports(void)
diff --git a/arch/powerpc/platforms/8xx/mpc86xads_setup.c b/arch/powerpc/platforms/8xx/mpc86xads_setup.c
index c028a5b..caaec29 100644
--- a/arch/powerpc/platforms/8xx/mpc86xads_setup.c
+++ b/arch/powerpc/platforms/8xx/mpc86xads_setup.c
@@ -65,6 +65,10 @@ static struct cpm_pin mpc866ads_pins[] = {
{CPM_PORTD, 13, CPM_PIN_OUTPUT},
{CPM_PORTD, 14, CPM_PIN_OUTPUT},
{CPM_PORTD, 15, CPM_PIN_OUTPUT},
+
+ /* I2C */
+ {CPM_PORTB, 26, CPM_PIN_INPUT | CPM_PIN_OPENDRAIN},
+ {CPM_PORTB, 27, CPM_PIN_INPUT | CPM_PIN_OPENDRAIN},
};
static void __init init_ioports(void)
diff --git a/arch/powerpc/platforms/8xx/mpc885ads_setup.c b/arch/powerpc/platforms/8xx/mpc885ads_setup.c
index 6e7ded0..45ed6cd 100644
--- a/arch/powerpc/platforms/8xx/mpc885ads_setup.c
+++ b/arch/powerpc/platforms/8xx/mpc885ads_setup.c
@@ -158,6 +158,9 @@ static struct cpm_pin mpc885ads_pins[] = {
{CPM_PORTE, 28, CPM_PIN_OUTPUT},
{CPM_PORTE, 29, CPM_PIN_OUTPUT},
#endif
+ /* I2C */
+ {CPM_PORTB, 26, CPM_PIN_INPUT | CPM_PIN_OPENDRAIN},
+ {CPM_PORTB, 27, CPM_PIN_INPUT | CPM_PIN_OPENDRAIN},
};
static void __init init_ioports(void)
--
1.5.5.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-05-21 16:17 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-10 15:50 [PATCH] [POWERPC] Add i2c pins to dts and board setup Jochen Friedrich
2008-05-13 16:46 ` Scott Wood
2008-05-21 10:31 Jochen Friedrich
2008-05-21 15:10 ` Scott Wood
2008-05-21 16:17 ` Jochen Friedrich
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).