On Sun, May 06, 2018 at 09:31:55AM -0700, Mike Larkin wrote: > On Fri, May 04, 2018 at 08:28:04PM +0200, Tobias Tschinkowitz wrote: > > Hi @tech, > > > > i thought it would be a good idea to delegate the port-replicator > > docking event to the sysctl(2) hw.sensors substree so that if the > > thinkpad gets docked/undocked one could react to it by using > > sensorsd(8). > > > > Here is my diff: > > > > Can you regenerate with proper whitespace/indenting please? > > -ml > > > > Index: acpithinkpad.c > > =================================================================== > > RCS file: /cvs/src/sys/dev/acpi/acpithinkpad.c,v > > retrieving revision 1.58 > > diff -u -p -r1.58 acpithinkpad.c > > --- acpithinkpad.c 12 Aug 2017 17:33:51 -0000 1.58 > > +++ acpithinkpad.c 4 May 2018 18:20:43 -0000 > > @@ -110,8 +110,10 @@ > > #define THINKPAD_TABLET_SCREEN_CHANGED 0x60c0 > > #define THINKPAD_SWITCH_WIRELESS 0x7000 > > > > -#define THINKPAD_NSENSORS 9 > > +#define THINKPAD_NSENSORS 10 > > #define THINKPAD_NTEMPSENSORS 8 > > +#define THINKPAD_SENSOR_FANRPM THINKPAD_NTEMPSENSORS > > +#define THINKPAD_SENSOR_PORTREPL THINKPAD_NTEMPSENSORS + 1 > > > > #define THINKPAD_ECOFFSET_VOLUME 0x30 > > #define THINKPAD_ECOFFSET_VOLUME_MUTE_MASK 0x40 > > @@ -232,9 +234,18 @@ thinkpad_sensor_attach(struct acpithinkp > > sensor_attach(&sc->sc_sensdev, &sc->sc_sens[i]); > > } > > > > - /* Add fan probe */ > > - sc->sc_sens[i].type = SENSOR_FANRPM; > > - sensor_attach(&sc->sc_sensdev, &sc->sc_sens[i]); > > + /* Add fan probe */ > > + sc->sc_sens[THINKPAD_SENSOR_FANRPM].type = SENSOR_FANRPM; > > + sensor_attach(&sc->sc_sensdev, > > + &sc->sc_sens[THINKPAD_SENSOR_FANRPM]); > > + > > + /* Add port replicator indicator */ > > + sc->sc_sens[THINKPAD_SENSOR_PORTREPL].type = SENSOR_INDICATOR; > > + sc->sc_sens[THINKPAD_SENSOR_PORTREPL].status = SENSOR_S_UNKNOWN; > > + strlcpy(sc->sc_sens[THINKPAD_SENSOR_PORTREPL].desc, "port > > replicator", > > + sizeof(sc->sc_sens[THINKPAD_SENSOR_PORTREPL].desc)); > > + sensor_attach(&sc->sc_sensdev, > > + &sc->sc_sens[THINKPAD_SENSOR_PORTREPL]); > > > > sensordev_install(&sc->sc_sensdev); > > } > > @@ -260,7 +271,7 @@ thinkpad_sensor_refresh(void *arg) > > /* Read fan RPM */ > > acpiec_read(sc->sc_ec, THINKPAD_ECOFFSET_FANLO, 1, &lo); > > acpiec_read(sc->sc_ec, THINKPAD_ECOFFSET_FANHI, 1, &hi); > > - sc->sc_sens[i].value = ((hi << 8L) + lo); > > + sc->sc_sens[THINKPAD_SENSOR_FANRPM].value = ((hi << 8L) + lo); > > } > > > > void > > @@ -421,6 +432,14 @@ thinkpad_hotkey(struct aml_node *node, i > > case THINKPAD_BACKLIGHT_CHANGED: > > thinkpad_get_brightness(sc); > > break; > > + case THINKPAD_PORT_REPL_DOCKED: > > + sc->sc_sens[THINKPAD_SENSOR_PORTREPL].value = 1; > > + sc->sc_sens[THINKPAD_SENSOR_PORTREPL].status = > > SENSOR_S_OK; > > + break; > > + case THINKPAD_PORT_REPL_UNDOCKED: > > + sc->sc_sens[THINKPAD_SENSOR_PORTREPL].value = 0; > > + sc->sc_sens[THINKPAD_SENSOR_PORTREPL].status = > > SENSOR_S_OK; > > + break; > > default: > > /* unknown or boring event */ > > DPRINTF(("%s: unhandled event 0x%03llx\n", > > DEVNAME(sc), > > > > > > Greetings, Tobias > > >
Hi, here is the corrected diff. I hope this one is okay. Greetings, Tobias Index: acpithinkpad.c =================================================================== RCS file: /cvs/src/sys/dev/acpi/acpithinkpad.c,v retrieving revision 1.58 diff -u -p -r1.58 acpithinkpad.c --- acpithinkpad.c 12 Aug 2017 17:33:51 -0000 1.58 +++ acpithinkpad.c 6 May 2018 21:37:05 -0000 @@ -110,9 +110,12 @@ #define THINKPAD_TABLET_SCREEN_CHANGED 0x60c0 #define THINKPAD_SWITCH_WIRELESS 0x7000 -#define THINKPAD_NSENSORS 9 +#define THINKPAD_NSENSORS 10 #define THINKPAD_NTEMPSENSORS 8 +#define THINKPAD_SENSOR_FANRPM THINKPAD_NTEMPSENSORS +#define THINKPAD_SENSOR_PORTREPL THINKPAD_NTEMPSENSORS + 1 + #define THINKPAD_ECOFFSET_VOLUME 0x30 #define THINKPAD_ECOFFSET_VOLUME_MUTE_MASK 0x40 #define THINKPAD_ECOFFSET_FANLO 0x84 @@ -233,8 +236,16 @@ thinkpad_sensor_attach(struct acpithinkp } /* Add fan probe */ - sc->sc_sens[i].type = SENSOR_FANRPM; - sensor_attach(&sc->sc_sensdev, &sc->sc_sens[i]); + sc->sc_sens[THINKPAD_SENSOR_FANRPM].type = SENSOR_FANRPM; + sensor_attach(&sc->sc_sensdev, &sc->sc_sens[THINKPAD_SENSOR_FANRPM]); + + /* Add port replicator indicator */ + sc->sc_sens[THINKPAD_SENSOR_PORTREPL].type = SENSOR_INDICATOR; + sc->sc_sens[THINKPAD_SENSOR_PORTREPL].status = SENSOR_S_UNKNOWN; + strlcpy(sc->sc_sens[THINKPAD_SENSOR_PORTREPL].desc, "port replicator", + sizeof(sc->sc_sens[THINKPAD_SENSOR_PORTREPL].desc)); + sensor_attach(&sc->sc_sensdev, + &sc->sc_sens[THINKPAD_SENSOR_PORTREPL]); sensordev_install(&sc->sc_sensdev); } @@ -260,7 +271,7 @@ thinkpad_sensor_refresh(void *arg) /* Read fan RPM */ acpiec_read(sc->sc_ec, THINKPAD_ECOFFSET_FANLO, 1, &lo); acpiec_read(sc->sc_ec, THINKPAD_ECOFFSET_FANHI, 1, &hi); - sc->sc_sens[i].value = ((hi << 8L) + lo); + sc->sc_sens[THINKPAD_SENSOR_FANRPM].value = ((hi << 8L) + lo); } void @@ -420,6 +431,14 @@ thinkpad_hotkey(struct aml_node *node, i break; case THINKPAD_BACKLIGHT_CHANGED: thinkpad_get_brightness(sc); + break; + case THINKPAD_PORT_REPL_DOCKED: + sc->sc_sens[THINKPAD_SENSOR_PORTREPL].value = 1; + sc->sc_sens[THINKPAD_SENSOR_PORTREPL].status = SENSOR_S_OK; + break; + case THINKPAD_PORT_REPL_UNDOCKED: + sc->sc_sens[THINKPAD_SENSOR_PORTREPL].value = 0; + sc->sc_sens[THINKPAD_SENSOR_PORTREPL].status = SENSOR_S_OK; break; default: /* unknown or boring event */