powerpc/CPM: Add i2c pins to dts and board setup
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>
This commit is contained in:
parent
dc32081530
commit
a5d28c8e64
7 changed files with 86 additions and 0 deletions
|
@ -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
|
m) Chipselect/Local Bus
|
||||||
|
|
||||||
Properties:
|
Properties:
|
||||||
|
|
|
@ -217,6 +217,17 @@
|
||||||
linux,network-index = <1>;
|
linux,network-index = <1>;
|
||||||
fsl,cpm-command = <0x16200300>;
|
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 {
|
PIC: interrupt-controller@10c00 {
|
||||||
|
|
|
@ -171,6 +171,17 @@
|
||||||
fsl,cpm-command = <0000>;
|
fsl,cpm-command = <0000>;
|
||||||
linux,network-index = <1>;
|
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>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -215,6 +215,17 @@
|
||||||
fsl,cpm-command = <0x80>;
|
fsl,cpm-command = <0x80>;
|
||||||
linux,network-index = <2>;
|
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>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -96,6 +96,10 @@ static struct cpm_pin mpc8272_ads_pins[] = {
|
||||||
{1, 31, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
|
{1, 31, CPM_PIN_OUTPUT | CPM_PIN_PRIMARY},
|
||||||
{2, 16, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
|
{2, 16, CPM_PIN_INPUT | CPM_PIN_PRIMARY},
|
||||||
{2, 17, 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)
|
static void __init init_ioports(void)
|
||||||
|
|
|
@ -65,6 +65,10 @@ static struct cpm_pin mpc866ads_pins[] = {
|
||||||
{CPM_PORTD, 13, CPM_PIN_OUTPUT},
|
{CPM_PORTD, 13, CPM_PIN_OUTPUT},
|
||||||
{CPM_PORTD, 14, CPM_PIN_OUTPUT},
|
{CPM_PORTD, 14, CPM_PIN_OUTPUT},
|
||||||
{CPM_PORTD, 15, 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)
|
static void __init init_ioports(void)
|
||||||
|
|
|
@ -158,6 +158,9 @@ static struct cpm_pin mpc885ads_pins[] = {
|
||||||
{CPM_PORTE, 28, CPM_PIN_OUTPUT},
|
{CPM_PORTE, 28, CPM_PIN_OUTPUT},
|
||||||
{CPM_PORTE, 29, CPM_PIN_OUTPUT},
|
{CPM_PORTE, 29, CPM_PIN_OUTPUT},
|
||||||
#endif
|
#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)
|
static void __init init_ioports(void)
|
||||||
|
|
Loading…
Reference in a new issue