Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9fb1e350 authored by Timur Tabi's avatar Timur Tabi Committed by Kumar Gala
Browse files

[POWERPC] ucc_geth: use rx-clock-name and tx-clock-name device tree properties



Updates the ucc_geth device driver to check the new rx-clock-name and
tx-clock-name properties first.  If present, it uses the new function
qe_clock_source() to obtain the clock source.  Otherwise, it checks the
deprecated rx-clock and tx-clock properties.

Update the device trees for 832x, 836x, and 8568 to contain the new property
names only.

Signed-off-by: default avatarTimur Tabi <timur@freescale.com>
Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
parent 174b0da2
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -228,8 +228,8 @@
			interrupts = <22>;
			interrupt-parent = < &qeic >;
			local-mac-address = [ 00 00 00 00 00 00 ];
			rx-clock = <19>;
			tx-clock = <1a>;
			rx-clock-name = "clk9";
			tx-clock-name = "clk10";
			phy-handle = < &phy3 >;
			pio-handle = < &pio3 >;
		};
@@ -244,8 +244,8 @@
			interrupts = <23>;
			interrupt-parent = < &qeic >;
			local-mac-address = [ 00 00 00 00 00 00 ];
			rx-clock = <17>;
			tx-clock = <18>;
			rx-clock-name = "clk7";
			tx-clock-name = "clk8";
			phy-handle = < &phy4 >;
			pio-handle = < &pio4 >;
		};
+4 −4
Original line number Diff line number Diff line
@@ -209,8 +209,8 @@
			interrupts = <21>;
			interrupt-parent = <&qeic>;
			local-mac-address = [ 00 00 00 00 00 00 ];
			rx-clock = <20>;
			tx-clock = <13>;
			rx-clock-name = "clk16";
			tx-clock-name = "clk3";
			phy-handle = <&phy00>;
			pio-handle = <&ucc2pio>;
		};
@@ -225,8 +225,8 @@
			interrupts = <22>;
			interrupt-parent = <&qeic>;
			local-mac-address = [ 00 00 00 00 00 00 ];
			rx-clock = <19>;
			tx-clock = <1a>;
			rx-clock-name = "clk9";
			tx-clock-name = "clk10";
			phy-handle = <&phy04>;
			pio-handle = <&ucc3pio>;
		};
+4 −4
Original line number Diff line number Diff line
@@ -259,8 +259,8 @@
			interrupts = <20>;
			interrupt-parent = < &qeic >;
			local-mac-address = [ 00 00 00 00 00 00 ];
			rx-clock = <0>;
			tx-clock = <19>;
			rx-clock-name = "none";
			tx-clock-name = "clk9";
			phy-handle = < &phy0 >;
			phy-connection-type = "rgmii-id";
			pio-handle = < &pio1 >;
@@ -276,8 +276,8 @@
			interrupts = <21>;
			interrupt-parent = < &qeic >;
			local-mac-address = [ 00 00 00 00 00 00 ];
			rx-clock = <0>;
			tx-clock = <14>;
			rx-clock-name = "none";
			tx-clock-name = "clk4";
			phy-handle = < &phy1 >;
			phy-connection-type = "rgmii-id";
			pio-handle = < &pio2 >;
+4 −4
Original line number Diff line number Diff line
@@ -327,8 +327,8 @@
			interrupts = <20>;
			interrupt-parent = <&qeic>;
			local-mac-address = [ 00 00 00 00 00 00 ];
			rx-clock = <0>;
			tx-clock = <20>;
			rx-clock-name = "none";
			tx-clock-name = "clk16";
			pio-handle = <&pio1>;
			phy-handle = <&phy0>;
			phy-connection-type = "rgmii-id";
@@ -344,8 +344,8 @@
			interrupts = <21>;
			interrupt-parent = <&qeic>;
			local-mac-address = [ 00 00 00 00 00 00 ];
			rx-clock = <0>;
			tx-clock = <20>;
			rx-clock-name = "none";
			tx-clock-name = "clk16";
			pio-handle = <&pio2>;
			phy-handle = <&phy1>;
			phy-connection-type = "rgmii-id";
+51 −4
Original line number Diff line number Diff line
@@ -3822,6 +3822,7 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
	int err, ucc_num, max_speed = 0;
	const phandle *ph;
	const unsigned int *prop;
	const char *sprop;
	const void *mac_addr;
	phy_interface_t phy_interface;
	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

	ug_info->uf_info.ucc_num = ucc_num;

	sprop = of_get_property(np, "rx-clock-name", NULL);
	if (sprop) {
		ug_info->uf_info.rx_clock = qe_clock_source(sprop);
		if ((ug_info->uf_info.rx_clock < QE_CLK_NONE) ||
		    (ug_info->uf_info.rx_clock > QE_CLK24)) {
			printk(KERN_ERR
				"ucc_geth: invalid rx-clock-name property\n");
			return -EINVAL;
		}
	} else {
		prop = of_get_property(np, "rx-clock", NULL);
		if (!prop) {
			/* If both rx-clock-name and rx-clock are missing,
			   we want to tell people to use rx-clock-name. */
			printk(KERN_ERR
				"ucc_geth: missing rx-clock-name property\n");
			return -EINVAL;
		}
		if ((*prop < QE_CLK_NONE) || (*prop > QE_CLK24)) {
			printk(KERN_ERR
				"ucc_geth: invalid rx-clock propperty\n");
			return -EINVAL;
		}
		ug_info->uf_info.rx_clock = *prop;
	prop = of_get_property(np, "tx-clock", NULL);
	}

	sprop = of_get_property(np, "tx-clock-name", NULL);
	if (sprop) {
		ug_info->uf_info.tx_clock = qe_clock_source(sprop);
		if ((ug_info->uf_info.tx_clock < QE_CLK_NONE) ||
		    (ug_info->uf_info.tx_clock > QE_CLK24)) {
			printk(KERN_ERR
				"ucc_geth: invalid tx-clock-name property\n");
			return -EINVAL;
		}
	} else {
		prop = of_get_property(np, "rx-clock", NULL);
		if (!prop) {
			printk(KERN_ERR
				"ucc_geth: mising tx-clock-name property\n");
			return -EINVAL;
		}
		if ((*prop < QE_CLK_NONE) || (*prop > QE_CLK24)) {
			printk(KERN_ERR
				"ucc_geth: invalid tx-clock property\n");
			return -EINVAL;
		}
		ug_info->uf_info.tx_clock = *prop;
	}

	err = of_address_to_resource(np, 0, &res);
	if (err)
		return -EINVAL;