Add i2c pins to dts and board setup
Subsystems (5)
PATCH 1/1 Add i2c pins to dts and board setup
Initialize I2C pins on boards with CPM1/CPM2 controllers.
--- 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(-)
Documentation/powerpc/booting-without-of.txt +39 -0
@@ -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:
arch/powerpc/boot/dts/mpc8272ads.dts +11 -0
@@ -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 {
arch/powerpc/boot/dts/mpc866ads.dts +11 -0
@@ -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>; + }; }; };
arch/powerpc/boot/dts/mpc885ads.dts +11 -0
@@ -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>; + }; }; };
arch/powerpc/platforms/82xx/mpc8272_ads.c +4 -0
@@ -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 )
arch/powerpc/platforms/8xx/mpc86xads_setup.c +4 -0
@@ -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 )
arch/powerpc/platforms/8xx/mpc885ads_setup.c +3 -0
@@ -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)
Signature · 1 line
1.5.5.1
Quoted 1 line · Jochen Friedrich
+ - linux,i2c-index : Can be used to hard code an i2c bus nummer.
s/nummer/number/
Why do we need this?
Documentation/powerpc/booting-without-of.txt platforms are moved over to use the flattened-device-tree model. · line 2152
Quoted 5 lines
Documentation/powerpc/booting-without-of.txt +5
-0+ - 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.
Documentation/powerpc/booting-without-of.txt platforms are moved over to use the flattened-device-tree model. · line 2154
Quoted 2 lines
Documentation/powerpc/booting-without-of.txt +2
-0+ - 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
Hi Scott,
Quoted 4 lines
Review
Quoted 2 lines
(quoted diff) +2
-0+ - 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.
Quoted 2 lines
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.
Quoted 4 lines
Documentation/powerpc/booting-without-of.txt platforms are moved over to use the flattened-device-tree model. · line 2154
Quoted 2 lines
Documentation/powerpc/booting-without-of.txt +2
-0+ - 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