Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 60545
b: refs/heads/master
c: e58ca3d
h: refs/heads/master
i:
  60543: 2669884
v: v3
  • Loading branch information
David Gibson authored and Paul Mackerras committed Jun 14, 2007
1 parent 88f1f65 commit 1842633
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 53 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e60c526fba3ba77070d0c97fac52c86243ad694d
refs/heads/master: e58ca3de64927e96beb2f1594975dc4a29b79459
51 changes: 27 additions & 24 deletions trunk/arch/powerpc/boot/dts/holly.dts
Original file line number Diff line number Diff line change
Expand Up @@ -46,60 +46,63 @@

tsi109@c0000000 {
device_type = "tsi-bridge";
compatible = "tsi-bridge";
compatible = "tsi109-bridge", "tsi108-bridge";
#address-cells = <1>;
#size-cells = <1>;
ranges = <00000000 c0000000 00010000>;
reg = <c0000000 00010000>;

i2c@7000 {
device_type = "i2c";
compatible = "tsi-i2c";
interrupt-parent = < &/tsi109@c0000000/pic@7400 >;
compatible = "tsi109-i2c", "tsi108-i2c";
interrupt-parent = <&MPIC>;
interrupts = <e 2>;
reg = <7000 400>;
};

mdio@6000 {
MDIO: mdio@6000 {
device_type = "mdio";
compatible = "tsi-ethernet";
compatible = "tsi109-mdio", "tsi108-mdio";
reg = <6000 50>;
#address-cells = <1>;
#size-cells = <0>;

PHY1: ethernet-phy@6000 {
device_type = "ethernet-phy";
compatible = "bcm54xx";
reg = <6000 50>;
phy-id = <1>;
PHY1: ethernet-phy@1 {
compatible = "bcm5461a";
reg = <1>;
txc-rxc-delay-disable;
};

PHY2: ethernet-phy@6400 {
device_type = "ethernet-phy";
compatible = "bcm54xx";
reg = <6000 50>;
phy-id = <2>;
PHY2: ethernet-phy@2 {
compatible = "bcm5461a";
reg = <2>;
txc-rxc-delay-disable;
};
};

ethernet@6200 {
device_type = "network";
compatible = "tsi-ethernet";
compatible = "tsi109-ethernet", "tsi108-ethernet";
#address-cells = <1>;
#size-cells = <0>;
reg = <6000 200>;
local-mac-address = [ 00 00 00 00 00 00 ];
interrupt-parent = < &/tsi109@c0000000/pic@7400 >;
interrupt-parent = <&MPIC>;
interrupts = <10 2>;
mdio-handle = <&MDIO>;
phy-handle = <&PHY1>;
};

ethernet@6600 {
device_type = "network";
compatible = "tsi-ethernet";
compatible = "tsi109-ethernet", "tsi108-ethernet";
#address-cells = <1>;
#size-cells = <0>;
reg = <6400 200>;
local-mac-address = [ 00 00 00 00 00 00 ];
interrupt-parent = < &/tsi109@c0000000/pic@7400 >;
interrupt-parent = <&MPIC>;
interrupts = <11 2>;
mdio-handle = <&MDIO>;
phy-handle = <&PHY2>;
};

Expand All @@ -110,7 +113,7 @@
virtual-reg = <c0007808>;
clock-frequency = <3F9C6000>;
current-speed = <1c200>;
interrupt-parent = < &/tsi109@c0000000/pic@7400 >;
interrupt-parent = <&MPIC>;
interrupts = <c 2>;
};

Expand All @@ -121,7 +124,7 @@
virtual-reg = <c0007c08>;
clock-frequency = <3F9C6000>;
current-speed = <1c200>;
interrupt-parent = < &/tsi109@c0000000/pic@7400 >;
interrupt-parent = <&MPIC>;
interrupts = <d 2>;
};

Expand All @@ -136,7 +139,7 @@

pci@1000 {
device_type = "pci";
compatible = "tsi109";
compatible = "tsi109-pci", "tsi108-pci";
#interrupt-cells = <1>;
#size-cells = <2>;
#address-cells = <3>;
Expand All @@ -150,7 +153,7 @@
ranges = <02000000 0 40000000 40000000 0 10000000
01000000 0 00000000 7e000000 0 00010000>;
clock-frequency = <7f28154>;
interrupt-parent = < &/tsi109@c0000000/pic@7400 >;
interrupt-parent = <&MPIC>;
interrupts = <17 2>;
interrupt-map-mask = <f800 0 0 7>;
/*----------------------------------------------------+
Expand Down Expand Up @@ -186,7 +189,7 @@
#address-cells = <0>;
#interrupt-cells = <2>;
interrupts = <17 2>;
interrupt-parent = < &/tsi109@c0000000/pic@7400 >;
interrupt-parent = <&MPIC>;
};
};
};
Expand Down
33 changes: 16 additions & 17 deletions trunk/arch/powerpc/boot/dts/mpc7448hpc2.dts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
#address-cells = <1>;
#size-cells = <1>;
#interrupt-cells = <2>;
device_type = "tsi-bridge";
device_type = "tsi108-bridge";
ranges = <00000000 c0000000 00010000>;
reg = <c0000000 00010000>;
bus-frequency = <0>;
Expand All @@ -55,53 +55,52 @@
interrupts = <E 0>;
reg = <7000 400>;
device_type = "i2c";
compatible = "tsi-i2c";
compatible = "tsi108-i2c";
};

mdio@6000 {
MDIO: mdio@6000 {
device_type = "mdio";
compatible = "tsi-ethernet";
compatible = "tsi108-mdio";
reg = <6000 50>;
#address-cells = <1>;
#size-cells = <0>;

phy8: ethernet-phy@6000 {
phy8: ethernet-phy@8 {
interrupt-parent = <&mpic>;
interrupts = <2 1>;
reg = <6000 50>;
phy-id = <8>;
device_type = "ethernet-phy";
reg = <8>;
};

phy9: ethernet-phy@6400 {
phy9: ethernet-phy@9 {
interrupt-parent = <&mpic>;
interrupts = <2 1>;
reg = <6000 50>;
phy-id = <9>;
device_type = "ethernet-phy";
reg = <9>;
};

};

ethernet@6200 {
#size-cells = <0>;
device_type = "network";
model = "TSI-ETH";
compatible = "tsi-ethernet";
compatible = "tsi108-ethernet";
reg = <6000 200>;
address = [ 00 06 D2 00 00 01 ];
interrupts = <10 2>;
interrupt-parent = <&mpic>;
mdio-handle = <&MDIO>;
phy-handle = <&phy8>;
};

ethernet@6600 {
#address-cells = <1>;
#size-cells = <0>;
device_type = "network";
model = "TSI-ETH";
compatible = "tsi-ethernet";
compatible = "tsi108-ethernet";
reg = <6400 200>;
address = [ 00 06 D2 00 00 02 ];
interrupts = <11 2>;
interrupt-parent = <&mpic>;
mdio-handle = <&MDIO>;
phy-handle = <&phy9>;
};

Expand Down Expand Up @@ -135,7 +134,7 @@
big-endian;
};
pci@1000 {
compatible = "tsi10x";
compatible = "tsi108-pci";
device_type = "pci";
#interrupt-cells = <1>;
#size-cells = <2>;
Expand Down
33 changes: 22 additions & 11 deletions trunk/arch/powerpc/sysdev/tsi108_dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,11 @@ static int __init tsi108_eth_of_init(void)
int ret;

for (np = NULL, i = 0;
(np = of_find_compatible_node(np, "network", "tsi-ethernet")) != NULL;
(np = of_find_compatible_node(np, "network", "tsi108-ethernet")) != NULL;
i++) {
struct resource r[2];
struct device_node *phy;
struct device_node *phy, *mdio;
hw_info tsi_eth_data;
const unsigned int *id;
const unsigned int *phy_id;
const void *mac_addr;
const phandle *ph;
Expand Down Expand Up @@ -111,6 +110,13 @@ static int __init tsi108_eth_of_init(void)
if (mac_addr)
memcpy(tsi_eth_data.mac_addr, mac_addr, 6);

ph = of_get_property(np, "mdio-handle", NULL);
mdio = of_find_node_by_phandle(*ph);
ret = of_address_to_resource(mdio, 0, &res);
of_node_put(mdio);
if (ret)
goto unreg;

ph = of_get_property(np, "phy-handle", NULL);
phy = of_find_node_by_phandle(*ph);

Expand All @@ -119,20 +125,25 @@ static int __init tsi108_eth_of_init(void)
goto unreg;
}

id = of_get_property(phy, "reg", NULL);
phy_id = of_get_property(phy, "phy-id", NULL);
ret = of_address_to_resource(phy, 0, &res);
if (ret) {
of_node_put(phy);
goto unreg;
}
phy_id = of_get_property(phy, "reg", NULL);

tsi_eth_data.regs = r[0].start;
tsi_eth_data.phyregs = res.start;
tsi_eth_data.phy = *phy_id;
tsi_eth_data.irq_num = irq_of_parse_and_map(np, 0);
if (of_device_is_compatible(phy, "bcm54xx"))

/* Some boards with the TSI108 bridge (e.g. Holly)
* have a miswiring of the ethernet PHYs which
* requires a workaround. The special
* "txc-rxc-delay-disable" property enables this
* workaround. FIXME: Need to port the tsi108_eth
* driver itself to phylib and use a non-misleading
* name for the workaround flag - it's not actually to
* do with the model of PHY in use */
if (of_get_property(phy, "txc-rxc-delay-disable", NULL))
tsi_eth_data.phy_type = TSI108_PHY_BCM54XX;
of_node_put(phy);

ret =
platform_device_add_data(tsi_eth_dev, &tsi_eth_data,
sizeof(hw_info));
Expand Down

0 comments on commit 1842633

Please sign in to comment.