On Tue, May 03, 2011 at 08:11:52AM +0530, Martin Pieuchot wrote: > On macppc, the pm_* methods are always attached to a PMU (or PMU99), so > no need to check for hardware. > > Tested here with a powerbook6,5. > > Ok? This appears to be working fine on my PowerBook4,1 (ibook g3), will do more testing tomorrow if needed. There's no dmesg change.
[ using 481912 bytes of bsd ELF symbol table ] console out [ATY,RageM3p29s]console in [keyboard] , using ADB : memaddr 94000000 size 4000000, : consaddr 96008000, : ioaddr 90020000, size 20000: memtag 8000, iotag 8000: width 1024 linebytes 1024 height 768 depth 8 Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. Copyright (c) 1995-2011 OpenBSD. All rights reserved. http://www.OpenBSD.org OpenBSD 4.9-current (GENERIC) #0: Tue Oct 5 17:18:42 CEST 2010 jasper@cupertino:/usr/src/sys/arch/macppc/compile/GENERIC real mem = 402653184 (384MB) avail mem = 376979456 (359MB) mainbus0 at root: model PowerBook4,1 cpu0 at mainbus0: 750 (Revision 0x3311): 600 MHz: 256KB backside cache mem0 at mainbus0 spdmem0 at mem0: SDRAM non-parity PC66 spdmem1 at mem0: 256MB SDRAM non-parity PC100CL2 memc0 at mainbus0: uni-n kiic0 at memc0 offset 0xf8001000 iic0 at kiic0 mpcpcibr0 at mainbus0 pci: uni-north, Revision 0xff pci0 at mpcpcibr0 bus 0 pchb0 at pci0 dev 11 function 0 "Apple Pangea AGP" rev 0x00 vgafb0 at pci0 dev 16 function 0 "ATI Mobility M3" rev 0x02, mmio wsdisplay0 at vgafb0 mux 1: console (std, vt100 emulation) mpcpcibr1 at mainbus0 pci: uni-north, Revision 0x0 pci1 at mpcpcibr1 bus 0 pchb1 at pci1 dev 11 function 0 "Apple Pangea" rev 0x00 macobio0 at pci1 dev 23 function 0 "Apple Pangea Macio" rev 0x00 openpic0 at macobio0 offset 0x40000: version 0x4614 little endian macgpio0 at macobio0 offset 0x50 macgpio1 at macgpio0 irq 47 pgs0 at macgpio0: irq 55 "firewire-linkon" at macgpio0 not configured "gpio1" at macgpio0 not configured "gpio9" at macgpio0 not configured "extint-gpio4" at macgpio0 not configured "extint-gpio12" at macgpio0 not configured "escc-legacy" at macobio0 offset 0x12000 not configured zsc0 at macobio0 offset 0x13000: irq 22,23 zstty0 at zsc0 channel 0 zstty1 at zsc0 channel 1 tumbler0 at macobio0 offset 0x10000: irq 30,1,2 "timer" at macobio0 offset 0x15000 not configured adb0 at macobio0 offset 0x16000 irq 25: via-pmu, 3 targets akbd0 at adb0 addr 2: PowerBook G4 keyboard (Inverted T) wskbd0 at akbd0: console keyboard, using wsdisplay0 ams0 at adb0 addr 3: EMP trackpad <tpad> 2-button, 400 dpi wsmouse0 at ams0 mux 0 abtn0 at adb0 addr 7: brightness/volume/eject buttons apm0 at adb0: battery flags 0x5, 7% charged "battery" at macobio0 offset 0x0 not configured "backlight" at macobio0 offset 0xf300 not configured kiic1 at macobio0 offset 0x18000 iic1 at kiic1 wdc0 at macobio0 offset 0x1f000 irq 19: DMA wd0 at wdc0 channel 0 drive 0: <HTS424040M9AT00> wd0: 16-sector PIO, LBA48, 38154MB, 78140160 sectors atapiscsi0 at wdc0 channel 0 drive 1 scsibus0 at atapiscsi0: 2 targets cd0 at scsibus0 targ 0 lun 0: <TOSHIBA, DVD-ROM SD-R2002, 1B29> ATAPI 5/cdrom removable wd0(wdc0:0:0): using PIO mode 4, DMA mode 2 cd0(wdc0:0:1): using PIO mode 4, DMA mode 2 wi0 at macobio0 offset 0x30000 irq 57: wi0: Firmware 4.16 variant 1, address 00:10:c6:6a:93:64 audio0 at tumbler0 ohci0 at pci1 dev 24 function 0 "Apple Pangea USB" rev 0x00: irq 27, version 1.0 ohci1 at pci1 dev 25 function 0 "Apple Pangea USB" rev 0x00: irq 28, version 1.0 usb0 at ohci0: USB revision 1.0 uhub0 at usb0 "Apple OHCI root hub" rev 1.00/1.00 addr 1 usb1 at ohci1: USB revision 1.0 uhub1 at usb1 "Apple OHCI root hub" rev 1.00/1.00 addr 1 mpcpcibr2 at mainbus0 pci: uni-north, Revision 0x16 pci2 at mpcpcibr2 bus 0 pchb2 at pci2 dev 11 function 0 "Apple Pangea PCI" rev 0x00 "Apple Pangea FireWire" rev 0x00 at pci2 dev 14 function 0 not configured gem0 at pci2 dev 15 function 0 "Apple Pangea GMAC" rev 0x00: irq 41, address 00:03:93:62:98:f8 bmtphy0 at gem0 phy 0: BCM5221 100baseTX PHY, rev. 4 vscsi0 at root scsibus1 at vscsi0: 256 targets softraid0 at root bootpath: /pci@f2000000/mac-io@17/ata-4@1f000/disk@0:/bsd root on wd0a swap on wd0b dump on wd0b > Index: dev/adb.c > =================================================================== > RCS file: /cvs/src/sys/arch/macppc/dev/adb.c,v > retrieving revision 1.29 > diff -u -p -r1.29 adb.c > --- dev/adb.c 1 Feb 2009 17:04:26 -0000 1.29 > +++ dev/adb.c 3 May 2011 02:27:28 -0000 > @@ -1307,7 +1307,6 @@ adb_setup_hw_type(void) > > case ADB_HW_PMU: > adbSoftPower = 1; > - pm_setup_adb(); > return; > > default: > Index: dev/pm_direct.c > =================================================================== > RCS file: /cvs/src/sys/arch/macppc/dev/pm_direct.c,v > retrieving revision 1.22 > diff -u -p -r1.22 pm_direct.c > --- dev/pm_direct.c 18 Feb 2007 19:33:48 -0000 1.22 > +++ dev/pm_direct.c 3 May 2011 02:27:28 -0000 > @@ -54,10 +54,6 @@ > /* hardware dependent values */ > #define ADBDelay 100 /* XXX */ > > -/* define the types of the Power Manager */ > -#define PM_HW_UNKNOWN 0x00 /* don't know */ > -#define PM_HW_PB5XX 0x02 /* PowerBook Duo and 5XX series > */ > - > /* useful macros */ > #define PM_SR() read_via_reg(VIA1, vSR) > #define PM_VIA_INTR_ENABLE() write_via_reg(VIA1, vIER, 0x90) > @@ -75,11 +71,6 @@ > #define PM_IS_OFF (0x00 == (read_via_reg(VIA2, vBufB) & 0x08)) > #endif > > -/* > - * Variables for internal use > - */ > -int pmHardware = PM_HW_UNKNOWN; > - > /* these values shows that number of data returned after 'send' cmd is sent > */ > signed char pm_send_cmd_type[] = { > -1, -1, -1, -1, -1, -1, -1, -1, > @@ -164,12 +155,8 @@ void pm_printerr(char *, int, int, char > > int pm_wait_busy(int); > int pm_wait_free(int); > - > -/* these functions are for the PB Duo series and the PB 5XX series */ > -int pm_receive_pm2(u_char *); > -int pm_send_pm2(u_char); > -int pm_pmgrop_pm2(PMData *); > -void pm_intr_pm2(void); > +int pm_receive(u_char *); > +int pm_send(u_char); > > /* these functions also use the variables of adb_direct.c */ > void pm_adb_get_TALK_result(PMData *); > @@ -221,18 +208,6 @@ pm_printerr(ttl, rval, num, data) > } > #endif > > - > - > -/* > - * Check the hardware type of the Power Manager > - */ > -void > -pm_setup_adb() > -{ > - pmHardware = PM_HW_PB5XX; /* XXX */ > -} > - > - > /* > * Wait until PM IC is busy > */ > @@ -274,7 +249,7 @@ pm_wait_free(int delay) > * Receive data from PM for the PB Duo series and the PB 5XX series > */ > int > -pm_receive_pm2(u_char *data) > +pm_receive(u_char *data) > { > int i; > int rval; > @@ -313,7 +288,7 @@ pm_receive_pm2(u_char *data) > * Send data to PM for the PB Duo series and the PB 5XX series > */ > int > -pm_send_pm2(data) > +pm_send(data) > u_char data; > { > int rval; > @@ -346,7 +321,7 @@ pm_send_pm2(data) > * My PMgrOp routine for the PB Duo series and the PB 5XX series > */ > int > -pm_pmgrop_pm2(PMData *pmdata) > +pmgrop(PMData *pmdata) > { > int i; > int s; > @@ -376,20 +351,20 @@ pm_pmgrop_pm2(PMData *pmdata) > break; /* timeout */ > > /* send PM command */ > - if ((rval = pm_send_pm2((u_char)(pm_cmd & 0xff)))) > + if ((rval = pm_send((u_char)(pm_cmd & 0xff)))) > break; /* timeout */ > > /* send number of PM data */ > num_pm_data = pmdata->num_data; > if (pm_send_cmd_type[pm_cmd] < 0) { > - if ((rval = pm_send_pm2((u_char)(num_pm_data & 0xff))) > != 0) > + if ((rval = pm_send((u_char)(num_pm_data & 0xff))) != 0) > break; /* timeout */ > pmdata->command = 0; > } > /* send PM data */ > pm_buf = (u_char *)pmdata->s_buf; > for (i = 0 ; i < num_pm_data; i++) > - if ((rval = pm_send_pm2(pm_buf[i])) != 0) > + if ((rval = pm_send(pm_buf[i])) != 0) > break; /* timeout */ > if (i != num_pm_data) > break; /* timeout */ > @@ -407,7 +382,7 @@ pm_pmgrop_pm2(PMData *pmdata) > pm_data = pmdata->command; > pm_num_rx_data--; > if (pm_num_rx_data == 0) > - if ((rval = pm_receive_pm2(&pm_data)) != 0) { > + if ((rval = pm_receive(&pm_data)) != 0) { > rval = 0xffffcd37; > break; > } > @@ -415,7 +390,7 @@ pm_pmgrop_pm2(PMData *pmdata) > > /* receive number of PM data */ > if (pm_num_rx_data < 0) { > - if ((rval = pm_receive_pm2(&pm_data)) != 0) > + if ((rval = pm_receive(&pm_data)) != 0) > break; /* timeout */ > num_pm_data = pm_data; > } else > @@ -425,7 +400,7 @@ pm_pmgrop_pm2(PMData *pmdata) > /* receive PM data */ > pm_buf = (u_char *)pmdata->r_buf; > for (i = 0; i < num_pm_data; i++) { > - if ((rval = pm_receive_pm2(&pm_data)) != 0) > + if ((rval = pm_receive(&pm_data)) != 0) > break; /* timeout */ > pm_buf[i] = pm_data; > } > @@ -445,7 +420,7 @@ pm_pmgrop_pm2(PMData *pmdata) > * My PM interrupt routine for the PB Duo series and the PB 5XX series > */ > void > -pm_intr_pm2() > +pm_intr() > { > int s; > int rval; > @@ -459,7 +434,7 @@ pm_intr_pm2() > pmdata.num_data = 0; > pmdata.s_buf = &pmdata.data[2]; > pmdata.r_buf = &pmdata.data[2]; > - rval = pm_pmgrop_pm2(&pmdata); > + rval = pmgrop(&pmdata); > if (rval != 0) { > #ifdef ADB_DEBUG > if (adb_debug) > @@ -498,40 +473,6 @@ pm_intr_pm2() > > splx(s); > } > - > - > -/* > - * My PMgrOp routine > - */ > -int > -pmgrop(PMData *pmdata) > -{ > - switch (pmHardware) { > - case PM_HW_PB5XX: > - return (pm_pmgrop_pm2(pmdata)); > - default: > - /* return (pmgrop_mrg(pmdata)); */ > - return 1; > - } > -} > - > - > -/* > - * My PM interrupt routine > - */ > -void > -pm_intr() > -{ > - switch (pmHardware) { > - case PM_HW_PB5XX: > - pm_intr_pm2(); > - break; > - default: > - break; > - } > -} > - > - > > /* > * Synchronous ADBOp routine for the Power Manager > Index: dev/pm_direct.h > =================================================================== > RCS file: /cvs/src/sys/arch/macppc/dev/pm_direct.h,v > retrieving revision 1.11 > diff -u -p -r1.11 pm_direct.h > --- dev/pm_direct.h 18 Feb 2007 19:33:48 -0000 1.11 > +++ dev/pm_direct.h 3 May 2011 02:27:28 -0000 > @@ -54,7 +54,6 @@ void pm_adb_poweroff(void); > void pm_intr(void); > void pm_read_date_time(time_t *); > void pm_set_date_time(time_t); > -void pm_setup_adb(void); > > struct pmu_battery_info > { > -- Cheers, Jasper "Capable, generous men do not create victims, they nurture them."