patch-2.2.14 linux/drivers/macintosh/via-pmu.c
Next file: linux/drivers/misc/parport_pc.c
Previous file: linux/drivers/macintosh/mediabay.c
Back to the patch index
Back to the overall index
- Lines: 76
- Date:
Tue Jan 4 10:12:17 2000
- Orig file:
v2.2.13/linux/drivers/macintosh/via-pmu.c
- Orig date:
Tue Oct 19 17:10:38 1999
diff -u --recursive --new-file v2.2.13/linux/drivers/macintosh/via-pmu.c linux/drivers/macintosh/via-pmu.c
@@ -1126,11 +1126,6 @@
macio_base = (unsigned long)
ioremap(macio->addrs[0].address, 0x40);
- /* Sync the disks. */
- /* XXX It would be nice to have some way to ensure that
- * nobody is dirtying any new buffers while we wait. */
- fsync_dev(0);
-
/* Notify device drivers */
ret = broadcast_sleep(PBOOK_SLEEP_REQUEST, 1);
if (ret != PBOOK_SLEEP_OK) {
@@ -1138,6 +1133,15 @@
printk("pmu: sleep rejected\n");
return -EBUSY;
}
+
+ /* Sync the disks. */
+ /* XXX It would be nice to have some way to ensure that
+ * nobody is dirtying any new buffers while we wait.
+ * BenH: Moved to _after_ sleep request and changed video
+ * drivers to vmalloc() during sleep request. This way, all
+ * vmalloc's are done before actual sleep of block drivers */
+ fsync_dev(0);
+
broadcast_sleep(PBOOK_SLEEP_NOW, 0);
/* Give the disks a little time to actually finish writing */
@@ -1190,6 +1194,10 @@
pmcr1 &= ~(GRACKLE_PM|GRACKLE_DOZE|GRACKLE_SLEEP|GRACKLE_NAP);
grackle_pcibios_write_config_word(0, 0, 0x70, pmcr1);
+ /* Make sure the PMU is idle */
+ while (pmu_state != idle)
+ pmu_poll();
+
sti();
#if 0
/* According to someone from Apple, this should not be needed,
@@ -1201,7 +1209,7 @@
/* Restore L2 cache */
if (save_l2cr)
- _set_L2CR(save_l2cr | 0x200000); /* set invalidate bit */
+ _set_L2CR(save_l2cr | 0x200000); /* set invalidate bit */
/* reenable interrupts */
sleep_restore_intrs();
@@ -1222,11 +1230,6 @@
unsigned long p, wait;
struct adb_request sleep_req;
- /* Sync the disks. */
- /* XXX It would be nice to have some way to ensure that
- * nobody is dirtying any new buffers while we wait. */
- fsync_dev(0);
-
/* Notify device drivers */
ret = broadcast_sleep(PBOOK_SLEEP_REQUEST, 1);
if (ret != PBOOK_SLEEP_OK) {
@@ -1234,6 +1237,15 @@
printk("pmu: sleep rejected\n");
return -EBUSY;
}
+
+ /* Sync the disks. */
+ /* XXX It would be nice to have some way to ensure that
+ * nobody is dirtying any new buffers while we wait.
+ * BenH: Moved to _after_ sleep request and changed video
+ * drivers to vmalloc() during sleep request. This way, all
+ * vmalloc's are done before actual sleep of block drivers */
+ fsync_dev(0);
+
broadcast_sleep(PBOOK_SLEEP_NOW, 0);
/* Give the disks a little time to actually finish writing */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)