through the interrupt pipe; during exploration check only the ports
where we got such a notification. This speeds up things.
(I believe we should go a step further and use a thread per hub
instead of per bus. If power management gets implemented, we should
be able to react quickly on a resume event.)
Try to simplify the logics in the explore function a bit. (The reattach
thing was hacked in badly, not sure whether I broke it. Only used
by if_atu.)
Clean up some dead code.
- add dummy input mixer controls
- restart tx DMA on PWR_RESUME
- power up on PWR_RESUME only if we really have to
- add an option to control wether to spin or sleep when waiting for the chip
to switch between data and control mode
matching (and handling) a whole device and those which match an
interface only. This will allow to enforce some rules, eg that
the former don't use interface information for matching or that the
latter don't modify global device state.
The previous way left too much freedom do the drivers which led to
inconsistencies and abuse.
For now, I've not changed locators and submatch rules, this will
happen later.
There should not be any change in behaviour, except in the case of
some drivers which did behave inconsistently:
if_atu, if_axe, uep: matched the configured device in the interface
stage, but did configuration again. I've converted them to match
in the device stage.
ustir, utoppy: matched in the interface stage, but only against
vendor/device information, and used any configuration/interface
without checking. Changed to match in device stage, and added
some simple code to configure and use the first interface.
If you have one of those devices, please test!
> Apply OpenBSD's rev. 1.33 to shut up "msk0: phy write timed out"
>
> Original commit message:
> > In msk_marv_miibus_writereg, wait for busy flag to clear instead of
> > continuing when busy flag set.
This driver will report values from the Super I/O chip via ACPI.
It should be possible to overclock the system with this driver, but
it's not implemented yet.
All newer ASUS motherboards probably will work with this driver
(device ATK0110).
[juan@nocturno][~]> envstat -r
CPU Temperature: 30.000 degC
MB Temperature: 38.000 degC
Vcore Voltage: 1.240 V
+3.3 Voltage: 3.264 V
+5 Voltage: 4.992 V
+12 Voltage: 12.091 V
CPU FAN Speed: 1454 RPM
[juan@nocturno][~]>
* For each supported chip, there's a struct lm_sensor array
that specifies the sensor data, like reg, bank, descr, rfact.
* Rather than having 3 functions to setup the voltage, temp and fan
sensors, just have one that will do all the three steps looking at
its struct lm_sensor members, simplifying a lot the code.
and more things that I can remember, our code now is synced with
OpenBSD, IMHO much better to understand and maintain in the future.
Supported chips added with the new code include:
* Winbond: W83627EHF, W83627DHG, W83637HF, W83783S, W83791D, W83791SD,
W83792D.
* Asus AS9912F.
My new mobo with the Winbond W83627DHG chip correctly reports
the values now:
lm0 at isa0 port 0x290-0x297: Winbond W83627DHG Hardware monitor
[juan@nocturno][~]> envstat -r
VCore: 1.232 V
+12V: 12.091 V
+3.3V: 3.264 V
+5V: 4.945 V
VBAT: 3.728 V
System Temp: 36.000 degC
CPU Temp: 29.500 degC
Aux Temp: 22.000 degC
CPU Fan: 1591 RPM
[juan@nocturno][~]>