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

Commit b39f9485 authored by Benjamin Herrenschmidt's avatar Benjamin Herrenschmidt Committed by Paul Mackerras
Browse files

[PATCH] powerpc: Fix clock spreading setting on some powermacs



The code that sets the clock spreading feature of the Intrepid ASIC
must not be run on some machine models or those won't boot. This
fixes it.

Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 23ed6cb9
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -1650,12 +1650,20 @@ void pmac_tweak_clock_spreading(int enable)
	 */

	if (macio->type == macio_intrepid) {
		struct device_node *clock =
			of_find_node_by_path("/uni-n@f8000000/hw-clock");
		if (clock && get_property(clock, "platform-do-clockspreading",
					  NULL)) {
			printk(KERN_INFO "%sabling clock spreading on Intrepid"
			       " ASIC\n", enable ? "En" : "Dis");
			if (enable)
				UN_OUT(UNI_N_CLOCK_SPREADING, 2);
			else
				UN_OUT(UNI_N_CLOCK_SPREADING, 0);
			mdelay(40);
		}
		of_node_put(clock);
	}

	while (machine_is_compatible("PowerBook5,2") ||
	       machine_is_compatible("PowerBook5,3") ||
@@ -1724,6 +1732,9 @@ void pmac_tweak_clock_spreading(int enable)
			pmac_low_i2c_close(ui2c);
			break;
		}
		printk(KERN_INFO "%sabling clock spreading on i2c clock chip\n",
		       enable ? "En" : "Dis");

		pmac_low_i2c_setmode(ui2c, pmac_low_i2c_mode_stdsub);
		rc = pmac_low_i2c_xfer(ui2c, 0xd2 | pmac_low_i2c_write, 0x80, buffer, 9);
		DBG("write result: %d,", rc);
+15 −5
Original line number Diff line number Diff line
@@ -1606,12 +1606,20 @@ void pmac_tweak_clock_spreading(int enable)
	 */

	if (macio->type == macio_intrepid) {
		struct device_node *clock =
			of_find_node_by_path("/uni-n@f8000000/hw-clock");
		if (clock && get_property(clock, "platform-do-clockspreading",
					  NULL)) {
			printk(KERN_INFO "%sabling clock spreading on Intrepid"
			       " ASIC\n", enable ? "En" : "Dis");
			if (enable)
				UN_OUT(UNI_N_CLOCK_SPREADING, 2);
			else
				UN_OUT(UNI_N_CLOCK_SPREADING, 0);
			mdelay(40);
		}
		of_node_put(clock);
	}

	while (machine_is_compatible("PowerBook5,2") ||
	       machine_is_compatible("PowerBook5,3") ||
@@ -1680,6 +1688,8 @@ void pmac_tweak_clock_spreading(int enable)
			pmac_low_i2c_close(ui2c);
			break;
		}
		printk(KERN_INFO "%sabling clock spreading on i2c clock chip\n",
		       enable ? "En" : "Dis");
		pmac_low_i2c_setmode(ui2c, pmac_low_i2c_mode_stdsub);
		rc = pmac_low_i2c_xfer(ui2c, 0xd2 | pmac_low_i2c_write, 0x80, buffer, 9);
		DBG("write result: %d,", rc);