提交 b39f9485 编写于 作者: B Benjamin Herrenschmidt 提交者: Paul Mackerras

[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: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: NPaul Mackerras <paulus@samba.org>
上级 23ed6cb9
...@@ -1650,11 +1650,19 @@ void pmac_tweak_clock_spreading(int enable) ...@@ -1650,11 +1650,19 @@ void pmac_tweak_clock_spreading(int enable)
*/ */
if (macio->type == macio_intrepid) { if (macio->type == macio_intrepid) {
if (enable) struct device_node *clock =
UN_OUT(UNI_N_CLOCK_SPREADING, 2); of_find_node_by_path("/uni-n@f8000000/hw-clock");
else if (clock && get_property(clock, "platform-do-clockspreading",
UN_OUT(UNI_N_CLOCK_SPREADING, 0); NULL)) {
mdelay(40); 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") || while (machine_is_compatible("PowerBook5,2") ||
...@@ -1724,6 +1732,9 @@ void pmac_tweak_clock_spreading(int enable) ...@@ -1724,6 +1732,9 @@ void pmac_tweak_clock_spreading(int enable)
pmac_low_i2c_close(ui2c); pmac_low_i2c_close(ui2c);
break; 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); pmac_low_i2c_setmode(ui2c, pmac_low_i2c_mode_stdsub);
rc = pmac_low_i2c_xfer(ui2c, 0xd2 | pmac_low_i2c_write, 0x80, buffer, 9); rc = pmac_low_i2c_xfer(ui2c, 0xd2 | pmac_low_i2c_write, 0x80, buffer, 9);
DBG("write result: %d,", rc); DBG("write result: %d,", rc);
......
...@@ -1606,11 +1606,19 @@ void pmac_tweak_clock_spreading(int enable) ...@@ -1606,11 +1606,19 @@ void pmac_tweak_clock_spreading(int enable)
*/ */
if (macio->type == macio_intrepid) { if (macio->type == macio_intrepid) {
if (enable) struct device_node *clock =
UN_OUT(UNI_N_CLOCK_SPREADING, 2); of_find_node_by_path("/uni-n@f8000000/hw-clock");
else if (clock && get_property(clock, "platform-do-clockspreading",
UN_OUT(UNI_N_CLOCK_SPREADING, 0); NULL)) {
mdelay(40); 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") || while (machine_is_compatible("PowerBook5,2") ||
...@@ -1680,6 +1688,8 @@ void pmac_tweak_clock_spreading(int enable) ...@@ -1680,6 +1688,8 @@ void pmac_tweak_clock_spreading(int enable)
pmac_low_i2c_close(ui2c); pmac_low_i2c_close(ui2c);
break; 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); pmac_low_i2c_setmode(ui2c, pmac_low_i2c_mode_stdsub);
rc = pmac_low_i2c_xfer(ui2c, 0xd2 | pmac_low_i2c_write, 0x80, buffer, 9); rc = pmac_low_i2c_xfer(ui2c, 0xd2 | pmac_low_i2c_write, 0x80, buffer, 9);
DBG("write result: %d,", rc); DBG("write result: %d,", rc);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册