Commit Graph

15307 Commits

Author SHA1 Message Date
netchild
a52ecbfb91 Driver for Envy24HT (ICE1724 or VT1724)-based cards like
Terratec Aureon 7.1 Space:	tested
  Terratec Aureon 5.1 Sky:	tested
  Terratec PHASE 28:		tested
  Terratec Aureon 7.1 Universe:	tested
  Audiotrak Prodigy 7.1:	tested
  Audiotrak Prodigy 7.1 LT:	not tested
  Terratec PHASE 22:		not tested
  M-Audio Revolution 7.1:	not tested
  M-Audio Revolution 5.1:	not tested
  M-Audio Audiophile 192:	tested

Submitted by:	"Konstantin Dimitrov" <kosio.dimitrov@gmail.com>
2006-09-30 17:52:28 +00:00
netchild
31b37e3a4c Remove the ak452x code, superseeded by spicds. 2006-09-30 17:14:14 +00:00
netchild
521c0353e9 - fix memory leak, when "number of adcs" != "number of dacs"
- fix multiple initialization of the first codec (support for more than
  one codec should be added in the future)
- use spicds instead of ak452x module

Submitted by:	"Konstantin Dimitrov" <kosio.dimitrov@gmail.com>
2006-09-30 17:08:51 +00:00
netchild
cefdaf86ea After repo copy from ak452x.[ch]: SPIcds is the I2S SPI audio codec code
used by the Envy* drivers.

Submitted by:	"Konstantin Dimitrov" <kosio.dimitrov@gmail.com>
2006-09-30 16:53:40 +00:00
ariff
cbd0a8935f Nuke OSSV4_EXPERIMENT ifdefs from kludgy MIXER_SIZE definition
since the exclusion of sizeof(oss_mixer_enuminfo) is the real
cause of overflow (worth of +3000 bytes).

Noticed by:	tegge
2006-09-30 01:24:22 +00:00
ariff
ba8135e75a The addition of few more 32bit integer into struct snd_mixer causing
an accidental MIXER_SIZE overflow. Use 8bit integer instead of 32bit
to reduce the kludge size.

Noticed by:	tegge
2006-09-30 01:01:18 +00:00
andre
03f5ed13f7 Back out rev. 1.152 as it was breaking vlan tag insertion when vlan tag
stripping was disabled due to being in promisc mode.  This is a hardware
bug.  Update comment to explicitly state the reason the manual vlan tag
insertion in this case.  See rev. 1.53 for further information as well.

Noticed by:	jhb
2006-09-29 21:38:12 +00:00
ariff
07966d46cf Fix pointer dereference before NULL pointer checking.
Noticed by:	netchild
CID:		243889
Found by:	Coverity Prevent (TM)
2006-09-29 14:08:53 +00:00
andre
ffe6f5ac16 Small style and comment adjustments.
Reviewed by:	jfv
2006-09-29 13:54:04 +00:00
andre
6323132f45 Remove manual vlan header insertion in em_encap(). It is unnecessary as the
generic vlan_start() takes care of it when vlan hardware insertion is disabled.

In em_set_promisc() add a note that BPF may also be enabled without going into
promisc mode.

Reviewed by:	jfv
2006-09-29 13:47:38 +00:00
andre
ac7c0d0d69 Change em_transmit_checksum_setup() to deal with already inserted vlan headers,
IP options and add skeleton IPv6 support.  The new code structure can also be
easily enhanced to support new/more protocols (SCTP) in the future.

Reviewed by:	jfv
2006-09-29 13:37:26 +00:00
andre
e596041984 Change em_tso_setup() to deal with already inserted vlan headers, IP options
and add skeleton IPv6 support.  The new code structure can also be easily
enhanced to support new/more protocols (SCTP) and IP fragmentation in the
future.

In em_encap() only try to do TSO if 'dotso' is true.

Reviewed by:	jfv
2006-09-29 13:33:30 +00:00
andre
fe1a7e4ebb Only advertize IFCAP_TSO4 capabilities. IPv6 is not yet supported.
Reviewed by:	jfv
2006-09-29 13:17:16 +00:00
andre
d066071e5e Handle all error cases from bus_dmamap_load_mbuf_sg(). Those are:
- EFBIG means the mbuf chain was too long and bus_dma ran out of segments.
   Defragment the mbuf chain and try again. (Already existed, not changed.)
 - ENOMEM means bus_dma could not obtain enough bounce buffers at this point
   in time.  Defer sending and try again later.
 - All other errors, in particular EINVAL, are fatal and prevent the mbuf
   chain from ever going through.  Drop it and report error.
 - Checking (nsegs == 0) is unnecessary as bus_dmamap_load_mbuf_sg() always
   reports an error if it is < 1.

This prevents broken packets from clogging the interface queue indefinately.

Discussed with:	scottl
Reviewed by:	jfv
2006-09-29 13:12:38 +00:00
ru
614db05c4f SNDCTL_TMR_{START,STOP,CONTINUE} don't take an argument. 2006-09-29 09:28:22 +00:00
ru
37605a5338 The SNDCTL_DSP_NONBLOCK ioctl doesn't take an argument, from
what I can tell by browsing the Internet (Linux, OSS, etc.).
2006-09-29 09:10:54 +00:00
ariff
b09219dff2 Various fixups, especially for the upcomming High Definition Audio
commit.

1) sys/dev/sound/pcm/sound.h
   sys/dev/sound/pcm/channel.c
   * Be more specific: SD_F_SOFTVOL -> SD_F_SOFTPCMVOL
2) sys/dev/sound/pcm/mixer.[ch]
   * Implement
       mix_setparentchild()
       mix_setrealdev()
       mix_getparent()
       mix_getchild()
     The purpose of these functions is implement relative volume
     adjustment, such as to tie two or more mixer device into a
     single logical device. Usefull for the upcoming HDA driver
     and few AC97 codec (such as AD1981B) where the master volume
     "vol" need to be implemented using this logical manner.
3) sys/dev/sound/pcm/ac97_patch.[ch]
   * Patch for AD1981B codec to enable (automuting) headphone jack sense.
4) sys/dev/sound/pcm/ac97.c
   * Implement proper logical master volume for AD9181B codec
     through various mix_set{parentchild,realdev}(). Tie both
     "ogain" (headphone volume) and "phone" (speaker/lineout) to
     a logical "vol".
5) sys/dev/sound/pcm/usb/uaudio_pcm.c
   * ditto, for "vol" -> { "pcm" }.

MFC after:	1 month
2006-09-28 17:29:00 +00:00
ru
4ef62e4ca5 Fix our ioctl(2) implementation when the argument is "int". New
ioctls passing integer arguments should use the _IOWINT() macro.
This fixes a lot of ioctl's not working on sparc64, most notable
being keyboard/syscons ioctls.

Full ABI compatibility is provided, with the bonus of fixing the
handling of old ioctls on sparc64.

Reviewed by:	bde (with contributions)
Tested by:	emax, marius
MFC after:	1 week
2006-09-27 19:57:02 +00:00
anholt
687e0af10d Add support for 945G/GM AGP chipsets.
The key problem was that the aperture size detection using the MSAC bit
doesn't work -- the bit appears to be set even when it shouldn't be.  Linux
takes a different approach, testing for a bit of the GMADR (PCIR_BAR(2)) being
set.  However, as I don't think that's a safe way to test aperture size, we
just allocate the resource and check its size.  This also pointed out that
agp_generic_attach hadn't been allocating our aperture resource, which may
have caused problems in some cases.

Also corrected is a minor copy-and-pasteo in an error case.

PR:		kern/103079
Submitted by:	mnag
Tested on:	i945GM, i915GM
MFC after:	2 weeks
2006-09-27 06:38:54 +00:00
scottl
56f6e9e8eb Skip the AEN event command that is always hanging out on the card.
Submitted by: Doug Ambrisko
2006-09-27 05:00:10 +00:00
scottl
fad1d944bb Fix a bad #include statment 2006-09-27 04:54:23 +00:00
jhb
eaa8ea5046 Fix a memory leak in ipmi_unload().
CID:		1542
Found by:	Coverity Prevent
2006-09-26 15:48:13 +00:00
jhb
4509194f65 Only support the SMB_OLD_BREAD ioctl if one of COMPAT_FREEBSD[456] is
defined.
2006-09-26 14:38:56 +00:00
mjacob
232d5f7e05 Begin the process of moving info to sysctl stuff for FreeBSD
by providing OIDs for WWNN/WWPN and Initiator ID.
2006-09-26 04:59:52 +00:00
scottl
1390f3ffda Add a command debugging module and a periodic watchdog timer.
Sponsored by: IronPort
2006-09-25 11:35:34 +00:00
sos
b30d1cd42f add support for the ALI/ULI M5288 AHCI part.
patch by: Sven Petai
2006-09-25 11:26:29 +00:00
netchild
5f5040bf4d Fix uninitialized variable warning.
Submitted by:	dhw
Reviewed by:	ryanb
2006-09-24 17:37:03 +00:00
hrs
51eb21ce37 Disable an overly-verbose warning message by default.
Suggested by:	njl
MFC after:	3 days
2006-09-24 09:39:17 +00:00
imp
bce860ebf1 Cleanup sloppy ifdef. 2006-09-24 00:26:33 +00:00
netchild
8140b075ee MFp4 the sound Google Summer of Code project:
The goal was to sync with the OSSv4 API 4Front Technologies uses in their
proprietary OSS driver. This was successful as far as possible. The part
of the API which is stable is implemented, for the rest there are some
stubs already.

New system ioctls:
 - SNDCTL_SYSINFO - obtain audio system info (version, # of audio/midi/
   mixer devices, etc.)
 - SNDCTL_AUDIOINFO - fetch details about a specific audio device
 - SNDCTL_MIXERINFO - fetch details about a specific mixer device

New audio ioctls:
 - Sync groups (SNDCTL_DSP_SYNCGROUP/SNDCTL_DSP_SYNCSTART) which allow
   triggered playback/recording on multiple devices (even across processes
   simultaneously).
 - Peak meters (SNDCTL_DSP_GETIPEAKS/SNDCTL_DSP_GETOPEAKS) - can query
   audio drivers for peak levels (needs driver support, disabled for now).
 - Per channel playback/recording levels -
   SNDCTL_DSP_{GET,SET}{PLAY,REC}VOL.  Note that these are still in name
   only, just wrapping around the AC97-style mixer at the moment. The next
   step is to push them down to the drivers.

Audio ioctls still under development by 4Front (for which stubs may exist
in this commit):
 - SNDCTL_GETNAME, SNDCTL_{GET,SET}{SONG,LABEL}
 - SNDCTL_DSP_{GET,SET}_CHNORDER
 - SNDCTL_MIX_ENUMINFO, SNDCTL_MIX_EXTINFO - (might be documented enough in
   the OSS releases to work on this.  These ioctls cover the cool "twiddle
   any knob on your card" features.)

Missing:
 - SNDCTL_DSP_COOKEDMODE -- this ioctl is used to give applications direct
   access to a card's buffers, bypassing the feeder architecture.  It's
   a toughy -- "someone" needs to decide :
   (a) if this is desireable, and (b) if it's reasonably feasible.

Updates for driver writers:
 So far, only two routines to the channel class (in channel_if.m) are added.
 One is for fetching a list of discrete supported playback/recording rates
 of a channel, and the other is for fetching peak level info (useful for
 drawing peak meters).  Interested parties may want to help pushing down
 SNDCTL_DSP_{GET,SET}{PLAY,REC}VOL into the drivers.

To use the new stuff you need to rebuild the sound drivers or your kernel
(depending on if you use modules or not) and to install soundcard.h (a
buildworld/installworld handles this).

Sponsored by:	Google SoC 2006
Submitted by:	ryanb
Many thanks to:	4Front Technologies for their cooperation, explanations
		and the nice license of their soundcard.h.
2006-09-23 20:45:47 +00:00
scottl
fe8ec1f501 Allow the ASF feature to be disabled via a tunable. On one of my systems,
bringing up the bge interface results in a complete system freeze when
this feature is enabled.  Leave it enabled by default.
2006-09-23 18:55:49 +00:00
jhb
27a1cd23f4 Map pmap_{un,}mapbios() to pmap_{un,}mapdev() on 6.x and earlier. 2006-09-22 22:16:20 +00:00
jhb
cdd54d372b Update the ipmi(4) driver:
- Split out the communication protocols into their own files and use
  a couple of function pointers in the softc that the commuication
  protocols setup in their own attach routine.
- Add support for the SSIF interface (talking to IPMI over SMBus).
- Add an ACPI attachment.
- Add a PCI attachment that attaches to devices with the IPMI interface
  subclass.
- Split the ISA attachment out into its own file: ipmi_isa.c.
- Change the code to probe the SMBIOS table for an IPMI entry to just use
  pmap_mapbios() to map the table in rather than trying to setup a fake
  resource on an isa device and then activating the resource to map in the
  table.
- Make bus attachments leaner by adding attach functions for each
  communication interface (ipmi_kcs_attach(), ipmi_smic_attach(), etc.)
  that setup per-interface data.
- Formalize the model used by the driver to handle requests by adding an
  explicit struct ipmi_request object that holds the state of a given
  request and reply for the entire lifetime of the request.  By bundling
  the request into an object, it is easier to add retry logic to the various
  communication backends (as well as eventually support BT mode which uses
  a slightly different message format than KCS, SMIC, and SSIF).
- Add a per-softc lock and remove D_NEEDGIANT as the driver is now MPSAFE.
- Add 32-bit compatibility ioctl shims so you can use a 32-bit ipmitool
  on FreeBSD/amd64.
- Add ipmi(4) to i386 and amd64 NOTES.

Submitted by:	ambrisko (large portions of 2 and 3)
Sponsored by:	IronPort Systems, Yahoo!
MFC after:	6 days
2006-09-22 22:11:29 +00:00
cognet
7fec87e70b Use usbd_clear_endpoint_stall_async() when clearing endpoint stalls in
an interrupt context.

Obtained from:	NetBSD
MFC after:	1 week
2006-09-22 12:45:42 +00:00
mjacob
90dd743d5c Connect up a QUEUE FULL event with CAM and adjust openings.
Unfortunately, the QUEUE FULL event only tells you Bus && Target.
It doesn't tell you lun. In order for the XPT_REL_SIMQ action to
work, we have to have a real lun. But which one? For now, just
iterate over MPT_MAX_LUNS.

Practically speaking, this is only going to be happening for lower
quality SAS or SATA drives behind the SAS controller, which means
only lun 0, so it's not so bad.

Helpful Reminder Nagging from: John Baldwin, Fred Whiteside

MFC after:	5 days
2006-09-21 20:35:12 +00:00
andre
ab54ab783b Move the initialization of the hardware capabilities in em_init_locked()
before em_setup_transmit_structures() as it needs this information to
properly set up TSO parameters.

Reviewed by:	jfv
2006-09-21 19:14:51 +00:00
jhb
74c395cf51 Fix a sign bug in acpi_release_resource(). acpi_sysres_find() returns !=
NULL if the specified resource is a sub-alloc of a system resource.
2006-09-21 18:56:03 +00:00
ambrisko
d0248e472f Add a new 'bce_mgmt_init_locked' function to enable the minimal parts
of the chip to let ASF/IPMI firmware to respond to IPMI after attaching
and when the chip is down.  David looked at it but could really say
what they right minimal config. stuff would be.  It's not documented.
I figured this out via trial and error.

Reviewed by:	davidch
2006-09-20 18:55:16 +00:00
ambrisko
af202f9ad6 Allow hw.mfi.event_locale/hw.mfi.event_class to be set via loader.
If an event doesn't match the criteria then don't print it.  Some
events are not saved in the log (<0 class events).
2006-09-20 18:49:35 +00:00
ru
7dcd8f28e8 Revert back to always using *(int *)arg for now. While this
is incorrect, and causes endianness bugs on 64-bit big-endian
machines (sparc64), it's the best choice for now, as many of
these IOCTLs are used inside the kernel, and bogusly pass an
argument as "int *" which results in unaligned access panics
on sparc64 when attempting to dereference them via *(intptr_t *).

(Several of us are working on a real fix, which is uneasy.)
2006-09-20 11:43:36 +00:00
scottl
30e57dfd12 Change some variable names and update some comments to help clarify some
confusing issues.
2006-09-20 06:58:02 +00:00
jmg
f09ac5a545 spell PCIS_CRYPTO_ENTERTAIN properly...
MFC after:	3 days
2006-09-20 06:47:14 +00:00
ru
16caef0189 Make typecast expressions comply with style(9). 2006-09-19 13:03:09 +00:00
ru
4474cb0498 This time, really fix endian bugs accessing ioctl arguments that
are passed by value.  These are KDSKBMODE, KDSETLED, KDSKBSTATE,
and KDSETRAD.

Tested on:	amd64, sparc64 (demo code)
2006-09-19 13:01:20 +00:00
ru
0643e4ee98 Back out revision 1.8. The only thing it did was to break LEDs (and
some other less noticeable things) on little-endian 64-bit platforms
such as amd64.

PR:		kern/101931
Discussed with:	emax, marius
MFC after:	1 day
2006-09-19 09:34:25 +00:00
andre
b321ff1ba0 Don't forget to add curly braces when doing more than one line of actions
after a 'if' statement.

Pointy hat to:	andre
2006-09-18 23:44:12 +00:00
emax
2ec441fc93 Do not try to call keyboard callback unless keyboard is active and busy.
This should fix 'kbdcontrol -K < /dev/console' panic on sparc64 with sunkbd(4).

PR:		sparc64/96798
MFC after:	1 week
2006-09-18 22:56:59 +00:00
jkim
c77f49028d Do not strip VLAN tag in promiscuous mode. 2006-09-18 22:18:21 +00:00
jkim
3478f8adb5 Simplify promiscuous mode check and make ALLMULTI independent from it. 2006-09-18 20:54:40 +00:00
jhb
a79ab40cd5 Update prototype for smbus callback change.
Reported by:	Ian FREISLICH <if at hetzner dot co dot za>
2006-09-18 20:17:42 +00:00