diff options
-rw-r--r-- | arch/powerpc/boot/dts/mpc832x_mds.dts | 8 | ||||
-rw-r--r-- | arch/powerpc/boot/dts/mpc832x_rdb.dts | 8 | ||||
-rw-r--r-- | arch/powerpc/boot/dts/mpc836x_mds.dts | 8 | ||||
-rw-r--r-- | arch/powerpc/boot/dts/mpc8568mds.dts | 8 | ||||
-rw-r--r-- | drivers/net/ucc_geth.c | 55 |
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; |