1. Fix setting of nominal fan speeds with ENVSYS_STREINFO.
2. Treat Winbond 83781D specially because it has a programmable divisor for
FAN3 unlike generic devices.
3. Set nominal RPMs.
4. Fix a typo in the code for setting FAN3's divisor for W83782 type
hardware monitors.
possible pending interrupt. This should avoid the interrupt loop described
in PR kern/15841.
It is safe to read status here, because if we're not waiting for an interrupt
we have no command pending, so the device should be idle.
(de)activate for pcmcia cards.
Implement detach/(de)activate for PCI cards.
Clean up internal state (free call-descriptors) if a controller is
detached while it has open connections.
B-channel and D-channel drivers separately) split the Fritz!PCI card
driver out of the isic driver.
The new device is called "ifpci" and uses the same D-channel driver as the
isic devices, but has it's own B-channel driver.
Make the ISA probe actually (silently) fail if no card is found.
XXX - need to aquire the SBUS variant of this card some day or have
Jaromir find an MCA one.
We may revisit this once a general interrupt queuing mechanism is
available and we can avoid calling the pcmcia cards interrupt handler at
an exsessive IPL.
and move them in their proper places.
Move the BRI registry from layer 2 (duh!) to layer 4, so active cards
(which don't have layer 3 or layer 2 in their driver). Remove all remaining
hard coded controller and driver types. Remove any arbitrary hard coded
limits, at least those that show up in the internal API.
This fixes PR 15950.
the variant name is printed.
This fixes a problem that the card would be treated as ESP100 in
ncr53c9x_reset(), but not on couple other places (pointed out by
Andy Doran in private e-mail).
g/c now redundant case entry in ncr53c9x_reset()
would either:
1. Cause the machine to stop responding, or
2. Cause the currently playing voices to stop output.
With this change, voices are stopped on suspend, and continue from where they
left off on resume.
ACPI defines two different battery device interfaces: "Control Method"
batteries, in which AML methods are defined in order to get battery
status and set battery alarm thresholds, and a "Smart Battery" device,
which is an SMbus device accessed through the ACPI Embedded Controller
device; this driver knows how to attach to the former sort of device.
As a total kludge, since we haven't wired things up to sysmon/envsys
yet, we report battery status through a once-per-minute kernel printf,
so don't use this driver yet if you want your disk to spin down.
Motivated by and tested on Sony PCG-R505TL laptop, which has
nonfunctional APM.
configure as:
acpibat* at acpi ?
Sample output:
acpibat0 at acpi0: ACPI Battery
acpibat0: Sony Corp. LION
acpibat0: Design 38480mWh, Predicted 38480mWh Warn 120mWh Low 0mWh
acpibat0: discharging: 15112mV cap 25480mWh (66%) rate 16849mW
...
acpibat0: discharging: 15224mV cap 25070mWh (65%) rate 18405mW
...
acpibat0: discharging: 15200mV cap 24310mWh (63%) rate 13771mW
...
acpibat0: charging: 15768mV cap 23330mWh (60%) rate 20388mW
#if 0-out a half-fixed acpi_eval_string() and #if 0 the only call to it.
(Previous code referenced an uninitialized local variable and couldn't
have possibly worked).
Be more informative about the state of the disk (locked, unloaded etc...)
Send NULL as proc pointer to bus_dma_load if B_PHYS is not set.
Break out softc's from rl.c to rlvar.h for inclusion elsewhere.
Unconst pointer to f/w in the ispdv structure. Too many compilers get
unhappy over our walking the array. Make casts as appropriate so that
initialization in structure is still happy.
Limit length of fabric to 256. This will all go away soon.
Do a cleaner case of keeping multiple CPUs/threads from reading the
same response queue entries.
inserted into comments. I really think that more testing was required,
but Christos was eager.
+ Add in tape block/file position reporting support.
+ Change the prevent/allow ejection code so that if the device
is close the tape can be ejected. This allows robots to eject
the tape even if the tape isn't at BOT.
+ Don't do a null filemark write if we're reading block position. This
was such an abysmal performance killer that it had to go. Assume
that the tape will DTRT and tell you what the tape position really is
including any buffered data. You are depending on the tape to do
the right thing to report position at all, so the risk factors don't
increase appreciably here. BTW- we only do this for logical block
position. For 'hardware' block position, we still flush.
+ Some substantial tweaking in st_interpret_sense. This essentially duplicates
the FreeBSD driver's exception handling code. This is to try and correctly
handle EOM cases. I'm not sure that this is now correct with respect to
the ENABLE EARLY WARNING code- I hadn't gotten around to validating that.
Add in full 32 bit residuals- this can then be available to an update
MTIOCGET in the future.
+ Make sure we handle SKEY_VOLUME_OVERFLOW correctly.
initialization to it from uaudio_chan_set_param(). uaudio_set_params()
calls uaudio_chan_init().
These are required because bytes_per_frame is used in
uaudio_round_blocksize(), which is called before uaudio_set_params().
Noise of 4ch playing disappears by this change. 6ch playing still has
cyclic noise.
the generic layer 4 and layer 3 management system.
This should make the layer 4 driver API LKM clean - finaly.
Make the Fritz!PCI driver work again after resent changes (oops!),
noted by Frank Kardel (PR 15948) and Matthias Scheeler.
indicating an unhandled "command". ERESTART is -1, which can lead to
confusion. ERESTART has been moved to -3 and EPASSTHROUGH has been
placed at -4. No ioctl code should now return -1 anywhere. The
ioctl() system call is now properly restartable.
- Simplify the source
- Accept any convresions such that sample_rate < hw_sample_rate
uaudio.c:
- Request the above conversion. This is needed for 4ch-only devices to
play monaural/stereo data.
multi-port cards (which need the shared-rom/intr stuff) and single-port cards
(which must not have it). previously we enabled sharing for all adaptec cards,
which caused problems if you had multiple single-port cards on the same PCI bus.
use "cp" instead of "ncp" as a temporary pointer into the SROM.
we still need the value of ncp here, it points to the next media block.
(update the copy of this code in tlp_21142_reset() just 'cause.)
this makes the BNC port on the Adaptec ANA-6911A work.
normal case, and in the polling or "no thread yet" cases:
don't return an error from scsipi_complete(), as the error should already have
been handled in scsipi_complete() and eventually periph driver callbacks.
Should fix kern/15190.
audio accelerators.
Mixing is done in hardware by the ASSP, but is limited to 4 simultaneous
channels due to the restricted "minisrc" image that we are currently
working with.
Due to limitations in the audio subsystem, I'm currently attaching multiple
'audio' devices to 'esa', one for each voice. Because of this hack, the
default ESA_NUM_VOICES is 1.
Add an ugly hack, #ifdef WI_AT_BIGENDIAN_BUS_HACK, to make the wi driver
access the underlying bus in big endian byte order.
This makes it possible to use this driver (probably one of the most
interesting ones) in the pcmcia slot of a stp4020 (nell) adapter at sbus. The
sparc ports bus_space_{read,write}_* macros do not provide a way to do this
cleanly now as they ignore the bus_space_tag_t parameter.
XXX - make bus_space_{read,write}_* on sparc do the right thing.
Audio-related stuff is left almost intact.
* support audiocs at ebus playback and capture
tested on krups and u5 (thanks, martin)
* make first attempt at supporting audiocs at sbus capture
* nb: full-duplex is not tested
* while here, fix CSAUDIO_MONITOR_MUTE to be of CSAUDIO_MONITOR_CLASS
i.e. outputs.monitor.mute -> monitor.monitor.mute
Ok by pk, eeh.
for the registers, which was true, but actually the same as the driver
did without this option.
What it realy did is work around a stupid bug in the driver that did not
use the "offset" result from the pcmcia_mem_map call mapping the CIS memory.
We got away with this for a long time since on i386 and typical pcmcia
bridged the offset returned will be 0. It always failed (without
RAY_USE_AMEM=1) if the check for a different function CCR aliases in pcmcia.c
failed and mapped the CCR base new - this time at the CCR base of this
function (0xf00), so all register acceses (that had 0xf00 added) happened
way off in neverland.
Now we do not hardcode the CCR base to the register definitions, but
instead use the offset returned by pcmcia_mem_map. This makes the driver
work with and without CCR base aliases being found.
Configure power supply on VPP1 at 5V when powering up a socket.
Get rid of stray interrupts.
Make the driver quiet for normal operation when not in debugging mode.
This makes ray0 at nell0 actually work when compiled with RAY_USE_AMEM=1.
deal with shortages of the VM maps where the backing pages are mapped
(usually kmem_map). Try to deal with this:
* Group all information about the backend allocator for a pool in a
separate structure. The pool references this structure, rather than
the individual fields.
* Change the pool_init() API accordingly, and adjust all callers.
* Link all pools using the same backend allocator on a list.
* The backend allocator is responsible for waiting for physical memory
to become available, but will still fail if it cannot callocate KVA
space for the pages. If this happens, carefully drain all pools using
the same backend allocator, so that some KVA space can be freed.
* Change pool_reclaim() to indicate if it actually succeeded in freeing
some pages, and use that information to make draining easier and more
efficient.
* Get rid of PR_URGENT. There was only one use of it, and it could be
dealt with by the caller.
From art@openbsd.org.
http://mail-index.netbsd.org/tech-kern/2002/03/04/0005.html
auconv.c: Add conversion functions
audio.c: Sample alignment, calling conversion functions, etc.
audio_if.h: Add four hw_* members to "struct audio_params"
audiovar.h: Add conversion buffers, etc.
auich and uaudio: Add conversion request code to *_set_params().
it worked- but I ran into a case with a 2204 where commands were being lost
right and left. Best be safe.
For target mode, or things called if we call isp_handle_other response- note
that we might have dropped locks by changing the output pointer so we bail
from the loop. It's the responsibility of the entity dropping the lock to
make sure that we let the f/w know we've read thus far into the response
queue (else we begin processing the same entries again- blech!).
- Change structures for each device to make them more suitable with
our scsipi mid-layer.
- Use ADAPTER_REQ_SET_XFER_MODE callback.
- Cleanup misc functions/structures/style.
XXX Tagged queuieng support is disabled for now.
XXX Maybe we should have common library of the scsi protocol engine
XXX to share it among all other drivers..
Allow SIOCSWAVELAN with WI_RID_IFACE_STATS to request
an immediate statistics update.
We might in the future want to have SIOCGWAVELAN with
WI_RID_IFACE_STATS return an error if a statistics gathering is in
progress. Then the caller could request fresh statistics and gather
them when they are done. Instead, we currently just return whatever
statistics are available, which may be up to 60 seconds old.
chipset functions acordingly. Initialize timing registers (for now to
the slowest possible setting).
Add some debug output. XXX - clean this up.
This is not ready for prime time, but I can attach ray0 and wi0 now in my
LX.
jumbo frames.
* Work around broken PXE firmware on some boards, which leave the ROM
BAR enabled even after the PXE stack has been unloaded.
* Set up the initial values for sc_tx_fill_thresh, sc_tx_drain_thresh, and
sc_rx_drain_thresh in sip_attach(), rather than in sip_init().
Also, add unit location fields to the ROM image. The p1212 spec requires
unit locations if you have 2 or more unit directories which is the case for
ipv4 and ipv6 compiled into a kernel.
filling in unit location in the rom.
XXX: This all is really too welded together. The if_fw code should be
decoupled from this and simply be handed a method by which it can provide
the config rom back to the main code.
A framework for parsing p1212 compliant ROM's and returning a tree that
describes it. Include routines for searching the tree, walking it to
apply functions against nodes and printing out the tree.
Also provide a utility routine to take all the unit dirs present in a ROM,
loop against them and present them to config_found to configure all possible
sub devices.
the center position (128), so as to be compatible with other drivers.
The equalizer is enhancement only, and the values < 128 don't take
any effect.
Yeah, this causes spec change....
For equalization.treble and equalization.bass, the relation between
old and new value is
new_value = (old_value / 2) + 128.
(Note this does not apply to equalization.surround.)
2. Support ++ and -- of mixerctl(1) for stepping volume variables.
3. Fix problem where the chip is not powered up
when the mic input is unmuted.
this partially addresses pr14385.
there is still a byte swapping bug retrieving the
stats structure. Since both the type and the length
are incorrectly swapped, we would timeout while reading
an extra long section (caused by the byteswapped length)
of garbage data.
turning on WI_DEBUG now just reports the unknown info type
which can be seen to be obviously incorrectly swapped
on macppc