aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/powermac
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2006-06-01 05:05:23 -0400
committerPaul Mackerras <paulus@samba.org>2006-06-01 05:05:23 -0400
commitc029cc66cb3d83f70c02e0c182f0eed1419f8020 (patch)
treeb9ed887a0e6434fedebcbf90b3d2ba1aeff68a01 /arch/powerpc/platforms/powermac
parent0a9cb46a73abd6c45e7c986bec984eed60c417b6 (diff)
parentba8f5baba79da8eb502f8534c3a8ecb64aceb790 (diff)
Merge branch 'merge'
Diffstat (limited to 'arch/powerpc/platforms/powermac')
-rw-r--r--arch/powerpc/platforms/powermac/low_i2c.c12
-rw-r--r--arch/powerpc/platforms/powermac/setup.c12
2 files changed, 24 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/powermac/low_i2c.c b/arch/powerpc/platforms/powermac/low_i2c.c
index df2343e1956b..c896ce83d412 100644
--- a/arch/powerpc/platforms/powermac/low_i2c.c
+++ b/arch/powerpc/platforms/powermac/low_i2c.c
@@ -1157,6 +1157,7 @@ EXPORT_SYMBOL_GPL(pmac_i2c_xfer);
1157/* some quirks for platform function decoding */ 1157/* some quirks for platform function decoding */
1158enum { 1158enum {
1159 pmac_i2c_quirk_invmask = 0x00000001u, 1159 pmac_i2c_quirk_invmask = 0x00000001u,
1160 pmac_i2c_quirk_skip = 0x00000002u,
1160}; 1161};
1161 1162
1162static void pmac_i2c_devscan(void (*callback)(struct device_node *dev, 1163static void pmac_i2c_devscan(void (*callback)(struct device_node *dev,
@@ -1172,6 +1173,15 @@ static void pmac_i2c_devscan(void (*callback)(struct device_node *dev,
1172 /* XXX Study device-tree's & apple drivers are get the quirks 1173 /* XXX Study device-tree's & apple drivers are get the quirks
1173 * right ! 1174 * right !
1174 */ 1175 */
1176 /* Workaround: It seems that running the clockspreading
1177 * properties on the eMac will cause lockups during boot.
1178 * The machine seems to work fine without that. So for now,
1179 * let's make sure i2c-hwclock doesn't match about "imic"
1180 * clocks and we'll figure out if we really need to do
1181 * something special about those later.
1182 */
1183 { "i2c-hwclock", "imic5002", pmac_i2c_quirk_skip },
1184 { "i2c-hwclock", "imic5003", pmac_i2c_quirk_skip },
1175 { "i2c-hwclock", NULL, pmac_i2c_quirk_invmask }, 1185 { "i2c-hwclock", NULL, pmac_i2c_quirk_invmask },
1176 { "i2c-cpu-voltage", NULL, 0}, 1186 { "i2c-cpu-voltage", NULL, 0},
1177 { "temp-monitor", NULL, 0 }, 1187 { "temp-monitor", NULL, 0 },
@@ -1198,6 +1208,8 @@ static void pmac_i2c_devscan(void (*callback)(struct device_node *dev,
1198 if (p->compatible && 1208 if (p->compatible &&
1199 !device_is_compatible(np, p->compatible)) 1209 !device_is_compatible(np, p->compatible))
1200 continue; 1210 continue;
1211 if (p->quirks & pmac_i2c_quirk_skip)
1212 break;
1201 callback(np, p->quirks); 1213 callback(np, p->quirks);
1202 break; 1214 break;
1203 } 1215 }
diff --git a/arch/powerpc/platforms/powermac/setup.c b/arch/powerpc/platforms/powermac/setup.c
index 4d15e396655c..b9200fb07815 100644
--- a/arch/powerpc/platforms/powermac/setup.c
+++ b/arch/powerpc/platforms/powermac/setup.c
@@ -463,11 +463,23 @@ static int pmac_pm_finish(suspend_state_t state)
463 return 0; 463 return 0;
464} 464}
465 465
466static int pmac_pm_valid(suspend_state_t state)
467{
468 switch (state) {
469 case PM_SUSPEND_DISK:
470 return 1;
471 /* can't do any other states via generic mechanism yet */
472 default:
473 return 0;
474 }
475}
476
466static struct pm_ops pmac_pm_ops = { 477static struct pm_ops pmac_pm_ops = {
467 .pm_disk_mode = PM_DISK_SHUTDOWN, 478 .pm_disk_mode = PM_DISK_SHUTDOWN,
468 .prepare = pmac_pm_prepare, 479 .prepare = pmac_pm_prepare,
469 .enter = pmac_pm_enter, 480 .enter = pmac_pm_enter,
470 .finish = pmac_pm_finish, 481 .finish = pmac_pm_finish,
482 .valid = pmac_pm_valid,
471}; 483};
472 484
473#endif /* CONFIG_SOFTWARE_SUSPEND */ 485#endif /* CONFIG_SOFTWARE_SUSPEND */