Hello I followup my post on port-macppc@ about mac sleep mode. The target is an iBook G4, and I am trying to port to NetBSD the code from Linux: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/macintosh/via-pmu.c
In powerbook_sleep_Core99() we have a few calls for which I wonder about a NetBSD equivalent. Do we have MI stuff for that? Should I reimplement it? First: cache state save/restore: /* Save the state of the L2 and L3 caches */ save_l3cr = _get_L3CR(); /* (returns -1 if not available) */ save_l2cr = _get_L2CR(); /* (returns -1 if not available) */ (...) /* Restore L2 cache */ if (save_l2cr != 0xffffffff && (save_l2cr & L2CR_L2E) != 0) _set_L2CR(save_l2cr); /* Restore L3 cache */ if (save_l3cr != 0xffffffff && (save_l3cr & L3CR_L3E) != 0) _set_L3CR(save_l3cr); The implementations are in linux/arch/powerpc/kernel/l2cr_6xx.S Second, a MMU state restoration on wakeup: /* Restore userland MMU context */ switch_mmu_context(NULL, current->active_mm, NULL); It seems to be defined in linux/arch/powerpc/kernel/head_32.S And finaly GPU state restoration on wakeup: /* Restore video */ pmac_call_early_video_resume(); The iBook G4 GPU is a radeon, therefore in Linux that seems to go to linux/drivers/video/fbdev/aty/radeon_pm.c:radeon_fb_realy_resume() for which I am almost certain I will need to write some code. On Sun, May 15, 2022 at 01:37:23AM +0000, Emmanuel Dreyfus wrote: > On Fri, May 13, 2022 at 01:31:15AM +0000, Emmanuel Dreyfus wrote: > > Did anyone have a look at suspend mode? > > Linux seems to have support for it in linux/drivers/macintosh/via-pmu.c > > I tried sending this to PMU: > PMU_PWR_CLR_WAKEUP_EVENTS { 0xff, 0xff } > PMU_PWR_SET_WAKEUP_EVENTS { 0, PMU_PWR_WAKEUP_KEY|PMU_PWR_WAKEUP_LID_OPEN } > PMU_SLEEP { 'M', 'A', 'T', 'T' } > > I get the blinking power LED which us the usual sleep behavior. > Reopenoing the lid I get a power down, but looking at Linux sources, there > is much more to save and restore, hence this is still encouraging; > > -- > Emmanuel Dreyfus > m...@netbsd.org -- Emmanuel Dreyfus m...@netbsd.org