]> pilppa.com Git - linux-2.6-omap-h63xx.git/commitdiff
powerpc/CPM: Add i2c pins to dts and board setup
authorJochen Friedrich <jochen@scram.de>
Wed, 2 Jul 2008 16:06:13 +0000 (18:06 +0200)
committerKumar Gala <galak@kernel.crashing.org>
Mon, 14 Jul 2008 12:55:39 +0000 (07:55 -0500)
Initialize I2C pins on boards with CPM1/CPM2 controllers and document the
i2c bus in booting-without-of.

The boards don't have any I2C chips connected to the I2C bus, so unless
some external chips are connected to the boards, this code is just an
example of setting everything else up.

Signed-off-by: Jochen Friedrich <jochen@scram.de>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Documentation/powerpc/booting-without-of.txt
arch/powerpc/boot/dts/mpc8272ads.dts
arch/powerpc/boot/dts/mpc866ads.dts
arch/powerpc/boot/dts/mpc885ads.dts
arch/powerpc/platforms/82xx/mpc8272_ads.c
arch/powerpc/platforms/8xx/mpc86xads_setup.c
arch/powerpc/platforms/8xx/mpc885ads_setup.c

index b68684d39f966931c521b8402548079a2d532ccd..f6394b509430755de170b60f761d572a0171f814 100644 (file)
@@ -2160,6 +2160,48 @@ platforms are moved over to use the flattened-device-tree model.
                };
        };
 
+   x) 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.
+   - clock-frequency : Can be used to set the i2c clock frequency. If
+     unspecified, a default frequency of 60kHz is being used.
+   The following two properties are deprecated. They are only used by legacy
+   i2c drivers to find the bus to probe:
+   - linux,i2c-index : Can be used to hard code an i2c bus number. By default,
+     the bus number is dynamically assigned by the i2c core.
+   - linux,i2c-class : Can be used to override the i2c class. The class is used
+     by legacy 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
+
+   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:
index 46e2da30c3dd2b895e5e9c9a575855a736359086..d27f8a73c24a0781828643ce01f26f61833d5024 100644 (file)
                                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 {
index 765e43c997da1458b6aae6ea1216b59e57aff390..bd700651f360d220e4b7d85c2261532f5095f68c 100644 (file)
                                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>;
+                       };
                };
        };
 
index 9895043722b9fd1a88f4ebd05df9b3606cbcad0f..b123e9f7a5a860d2125682918bf9f46fe690dff4 100644 (file)
                                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>;
+                       };
                };
        };
 
index 7d3018751988b4994d9024dca1dc38ce88b934f0..8054c685d323a50c90fc7506db4faa76447a6a1f 100644 (file)
@@ -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)
index c028a5b71bbb8a52ef454f90cc1cdf260eac88ad..caaec29796b748fab111247fdfa85cf1e5b1874f 100644 (file)
@@ -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)
index 6e7ded0233f678c08f98c1ab077bc6b8ff934876..45ed6cdc1310ffa5373cc72784805335464a5451 100644 (file)
@@ -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)