aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/boot/dts/mpc832x_mds.dts8
-rw-r--r--arch/powerpc/boot/dts/mpc832x_rdb.dts8
-rw-r--r--arch/powerpc/boot/dts/mpc836x_mds.dts8
-rw-r--r--arch/powerpc/boot/dts/mpc8568mds.dts8
-rw-r--r--drivers/net/ucc_geth.c55
5 files changed, 67 insertions, 20 deletions
diff --git a/arch/powerpc/boot/dts/mpc832x_mds.dts b/arch/powerpc/boot/dts/mpc832x_mds.dts
index 5a88187fe6be..26ac467b10ea 100644
--- a/arch/powerpc/boot/dts/mpc832x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc832x_mds.dts
@@ -228,8 +228,8 @@
228 interrupts = <22>; 228 interrupts = <22>;
229 interrupt-parent = < &qeic >; 229 interrupt-parent = < &qeic >;
230 local-mac-address = [ 00 00 00 00 00 00 ]; 230 local-mac-address = [ 00 00 00 00 00 00 ];
231 rx-clock = <19>; 231 rx-clock-name = "clk9";
232 tx-clock = <1a>; 232 tx-clock-name = "clk10";
233 phy-handle = < &phy3 >; 233 phy-handle = < &phy3 >;
234 pio-handle = < &pio3 >; 234 pio-handle = < &pio3 >;
235 }; 235 };
@@ -244,8 +244,8 @@
244 interrupts = <23>; 244 interrupts = <23>;
245 interrupt-parent = < &qeic >; 245 interrupt-parent = < &qeic >;
246 local-mac-address = [ 00 00 00 00 00 00 ]; 246 local-mac-address = [ 00 00 00 00 00 00 ];
247 rx-clock = <17>; 247 rx-clock-name = "clk7";
248 tx-clock = <18>; 248 tx-clock-name = "clk8";
249 phy-handle = < &phy4 >; 249 phy-handle = < &phy4 >;
250 pio-handle = < &pio4 >; 250 pio-handle = < &pio4 >;
251 }; 251 };
diff --git a/arch/powerpc/boot/dts/mpc832x_rdb.dts b/arch/powerpc/boot/dts/mpc832x_rdb.dts
index d31498628307..10ff7aadf9dc 100644
--- a/arch/powerpc/boot/dts/mpc832x_rdb.dts
+++ b/arch/powerpc/boot/dts/mpc832x_rdb.dts
@@ -209,8 +209,8 @@
209 interrupts = <21>; 209 interrupts = <21>;
210 interrupt-parent = <&qeic>; 210 interrupt-parent = <&qeic>;
211 local-mac-address = [ 00 00 00 00 00 00 ]; 211 local-mac-address = [ 00 00 00 00 00 00 ];
212 rx-clock = <20>; 212 rx-clock-name = "clk16";
213 tx-clock = <13>; 213 tx-clock-name = "clk3";
214 phy-handle = <&phy00>; 214 phy-handle = <&phy00>;
215 pio-handle = <&ucc2pio>; 215 pio-handle = <&ucc2pio>;
216 }; 216 };
@@ -225,8 +225,8 @@
225 interrupts = <22>; 225 interrupts = <22>;
226 interrupt-parent = <&qeic>; 226 interrupt-parent = <&qeic>;
227 local-mac-address = [ 00 00 00 00 00 00 ]; 227 local-mac-address = [ 00 00 00 00 00 00 ];
228 rx-clock = <19>; 228 rx-clock-name = "clk9";
229 tx-clock = <1a>; 229 tx-clock-name = "clk10";
230 phy-handle = <&phy04>; 230 phy-handle = <&phy04>;
231 pio-handle = <&ucc3pio>; 231 pio-handle = <&ucc3pio>;
232 }; 232 };
diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts
index ea07a6f03332..fd841b2fddd0 100644
--- a/arch/powerpc/boot/dts/mpc836x_mds.dts
+++ b/arch/powerpc/boot/dts/mpc836x_mds.dts
@@ -259,8 +259,8 @@
259 interrupts = <20>; 259 interrupts = <20>;
260 interrupt-parent = < &qeic >; 260 interrupt-parent = < &qeic >;
261 local-mac-address = [ 00 00 00 00 00 00 ]; 261 local-mac-address = [ 00 00 00 00 00 00 ];
262 rx-clock = <0>; 262 rx-clock-name = "none";
263 tx-clock = <19>; 263 tx-clock-name = "clk9";
264 phy-handle = < &phy0 >; 264 phy-handle = < &phy0 >;
265 phy-connection-type = "rgmii-id"; 265 phy-connection-type = "rgmii-id";
266 pio-handle = < &pio1 >; 266 pio-handle = < &pio1 >;
@@ -276,8 +276,8 @@
276 interrupts = <21>; 276 interrupts = <21>;
277 interrupt-parent = < &qeic >; 277 interrupt-parent = < &qeic >;
278 local-mac-address = [ 00 00 00 00 00 00 ]; 278 local-mac-address = [ 00 00 00 00 00 00 ];
279 rx-clock = <0>; 279 rx-clock-name = "none";
280 tx-clock = <14>; 280 tx-clock-name = "clk4";
281 phy-handle = < &phy1 >; 281 phy-handle = < &phy1 >;
282 phy-connection-type = "rgmii-id"; 282 phy-connection-type = "rgmii-id";
283 pio-handle = < &pio2 >; 283 pio-handle = < &pio2 >;
diff --git a/arch/powerpc/boot/dts/mpc8568mds.dts b/arch/powerpc/boot/dts/mpc8568mds.dts
index 90545b16130d..5818a7c861e7 100644
--- a/arch/powerpc/boot/dts/mpc8568mds.dts
+++ b/arch/powerpc/boot/dts/mpc8568mds.dts
@@ -327,8 +327,8 @@
327 interrupts = <20>; 327 interrupts = <20>;
328 interrupt-parent = <&qeic>; 328 interrupt-parent = <&qeic>;
329 local-mac-address = [ 00 00 00 00 00 00 ]; 329 local-mac-address = [ 00 00 00 00 00 00 ];
330 rx-clock = <0>; 330 rx-clock-name = "none";
331 tx-clock = <20>; 331 tx-clock-name = "clk16";
332 pio-handle = <&pio1>; 332 pio-handle = <&pio1>;
333 phy-handle = <&phy0>; 333 phy-handle = <&phy0>;
334 phy-connection-type = "rgmii-id"; 334 phy-connection-type = "rgmii-id";
@@ -344,8 +344,8 @@
344 interrupts = <21>; 344 interrupts = <21>;
345 interrupt-parent = <&qeic>; 345 interrupt-parent = <&qeic>;
346 local-mac-address = [ 00 00 00 00 00 00 ]; 346 local-mac-address = [ 00 00 00 00 00 00 ];
347 rx-clock = <0>; 347 rx-clock-name = "none";
348 tx-clock = <20>; 348 tx-clock-name = "clk16";
349 pio-handle = <&pio2>; 349 pio-handle = <&pio2>;
350 phy-handle = <&phy1>; 350 phy-handle = <&phy1>;
351 phy-connection-type = "rgmii-id"; 351 phy-connection-type = "rgmii-id";
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c
index 7f689907ac28..0f7626856a6b 100644
--- a/drivers/net/ucc_geth.c
+++ b/drivers/net/ucc_geth.c
@@ -3822,6 +3822,7 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
3822 int err, ucc_num, max_speed = 0; 3822 int err, ucc_num, max_speed = 0;
3823 const phandle *ph; 3823 const phandle *ph;
3824 const unsigned int *prop; 3824 const unsigned int *prop;
3825 const char *sprop;
3825 const void *mac_addr; 3826 const void *mac_addr;
3826 phy_interface_t phy_interface; 3827 phy_interface_t phy_interface;
3827 static const int enet_to_speed[] = { 3828 static const int enet_to_speed[] = {
@@ -3854,10 +3855,56 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
3854 3855
3855 ug_info->uf_info.ucc_num = ucc_num; 3856 ug_info->uf_info.ucc_num = ucc_num;
3856 3857
3857 prop = of_get_property(np, "rx-clock", NULL); 3858 sprop = of_get_property(np, "rx-clock-name", NULL);
3858 ug_info->uf_info.rx_clock = *prop; 3859 if (sprop) {
3859 prop = of_get_property(np, "tx-clock", NULL); 3860 ug_info->uf_info.rx_clock = qe_clock_source(sprop);
3860 ug_info->uf_info.tx_clock = *prop; 3861 if ((ug_info->uf_info.rx_clock < QE_CLK_NONE) ||
3862 (ug_info->uf_info.rx_clock > QE_CLK24)) {
3863 printk(KERN_ERR
3864 "ucc_geth: invalid rx-clock-name property\n");
3865 return -EINVAL;
3866 }
3867 } else {
3868 prop = of_get_property(np, "rx-clock", NULL);
3869 if (!prop) {
3870 /* If both rx-clock-name and rx-clock are missing,
3871 we want to tell people to use rx-clock-name. */
3872 printk(KERN_ERR
3873 "ucc_geth: missing rx-clock-name property\n");
3874 return -EINVAL;
3875 }
3876 if ((*prop < QE_CLK_NONE) || (*prop > QE_CLK24)) {
3877 printk(KERN_ERR
3878 "ucc_geth: invalid rx-clock propperty\n");
3879 return -EINVAL;
3880 }
3881 ug_info->uf_info.rx_clock = *prop;
3882 }
3883
3884 sprop = of_get_property(np, "tx-clock-name", NULL);
3885 if (sprop) {
3886 ug_info->uf_info.tx_clock = qe_clock_source(sprop);
3887 if ((ug_info->uf_info.tx_clock < QE_CLK_NONE) ||
3888 (ug_info->uf_info.tx_clock > QE_CLK24)) {
3889 printk(KERN_ERR
3890 "ucc_geth: invalid tx-clock-name property\n");
3891 return -EINVAL;
3892 }
3893 } else {
3894 prop = of_get_property(np, "rx-clock", NULL);
3895 if (!prop) {
3896 printk(KERN_ERR
3897 "ucc_geth: mising tx-clock-name property\n");
3898 return -EINVAL;
3899 }
3900 if ((*prop < QE_CLK_NONE) || (*prop > QE_CLK24)) {
3901 printk(KERN_ERR
3902 "ucc_geth: invalid tx-clock property\n");
3903 return -EINVAL;
3904 }
3905 ug_info->uf_info.tx_clock = *prop;
3906 }
3907
3861 err = of_address_to_resource(np, 0, &res); 3908 err = of_address_to_resource(np, 0, &res);
3862 if (err) 3909 if (err)
3863 return -EINVAL; 3910 return -EINVAL;