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 */

Reply via email to