On Sun, 3 Dec 2023 02:30:51 +0000 (UTC) jon@elytron.openbsd.amsterdam wrote:
> Hello again. I've been trying to gather dmesgs online and it seems > that the only macppc computers with this driver are powerbooks and > ibooks, not Nuno's model, for instance. > > I think it's reasonable to do this with an ifdef, what do you think? Mac OS might not be setting this temperature, so I don't know why OpenBSD should set it. For now, I prefer to do nothing. I looked at Mac OS source code, where AppleFan-109.2.3 attaches IOI2CADT746x to adt7460 and adt7467 devices. I found no i2c writes, only reads. I guess that Mac OS doesn't set this temperature. (It is also possible that Mac OS does set it, but I didn't find the code; Apple didn't publish all their code.) The adt0 on my macppc PowerBook5,4 now shows temps around 47 to 52 degC (while I am typing this mail, and the cpu is mostly idle). I am not running your diff. The fans are quiet. If I run your diff, which seems to set the temperature minimum to 46 degC, then the fans might make more noise. To reduce wear on this old PowerBook, I run apmd(8) -L which sets the cpu to half speed, and I use an external usb keyboard and mouse. In the past when I set apm -H and loaded the cpu, the fans got loud. --gkoehler > Index: dev/i2c/adt7460.c > =================================================================== > RCS file: /cvs/src/sys/dev/i2c/adt7460.c,v > retrieving revision 1.22 > diff -u -p -r1.22 adt7460.c > --- dev/i2c/adt7460.c 6 Apr 2022 18:59:28 -0000 1.22 > +++ dev/i2c/adt7460.c 3 Dec 2023 02:28:11 -0000 > @@ -34,6 +34,9 @@ > #define ADT7460_REM1_TEMP 0x25 > #define ADT7460_LOCAL_TEMP 0x26 > #define ADT7460_REM2_TEMP 0x27 > +#define ADT7460_REM1_TEMP_TRG 0x68 > +#define ADT7460_LOCAL_TEMP_TRG 0x67 > +#define ADT7460_REM2_TEMP_TRG 0x69 > #define ADT7460_TACH1L 0x28 > #define ADT7460_TACH1H 0x29 > #define ADT7460_TACH2L 0x2a > @@ -196,6 +199,18 @@ adt_attach(struct device *parent, struct > return; > } > } > + > +#ifdef __macppc__ > + for (cmd = ADT7460_LOCAL_TEMP_TRG; cmd <= ADT7460_REM2_TEMP_TRG; cmd++){ > + data = 46; /* temperature target in deg C */ > + if (iic_exec(sc->sc_tag, I2C_OP_WRITE_WITH_STOP, > + sc->sc_addr, &cmd, sizeof cmd, &data, sizeof data, 0)) { > + iic_release_bus(sc->sc_tag, 0); > + printf(": cannot set temperature target register\n"); > + return; > + } > + } > +#endif > > iic_release_bus(sc->sc_tag, 0); > -- George Koehler <kern...@gmail.com>