Commit Graph

369 Commits

Author SHA1 Message Date
kent 23b5d91433 merge kent-audio1 branch, which introduces audio filter pipeline to the MI
audio framework


Summary of changes:

* struct audio_params
  - remove sw_code, factor, factor_denom, hw_sample_rate,
hw_encoding ,hw_precision, and hw_channels.  Conversion information
is conveyed by stream_filter_list_t.
  - change the type of sample_rate: u_long -> u_int
  - add `validbits,' which represents the valid data size in
precision bits.  It is required in order to distinguish 24/32bit
from 24/24bit or 32/32bit.

* audio_hw_if
 - add two parameters to set_params()
	stream_filter_list_t *pfil, stream_filter_list *rfil
   A HW driver should set filter recipes for requested formats
 - constify audio_params parameters of trigger_output() and
trigger_input().  They represent audio formats for the hardware.
 - make open() and close() optional
 - add int (AUMODE_PLAY or AUMODE_RECORD) and audio_params_t parameters
 to round_blocksize()

* sw_code is replaced with stream_filter_t.
  stream_filer_t converts audio data in an input buffer and writes
into another output buffer unlike sw_code, which converts data in
single buffer.
  converters in dev/auconv.c, dev/mulaw.c, dev/aurateconv.c,
dev/tc/bba.c, dev/ic/msm6258.c, and arch/arm/iomd/vidcaudio.c are
reimplemented as stream_filter_t

* MI audio
 - audiosetinfo() builds filter pipelines from stream_filter_list_t
filled by audio_hw_if::set_params()
 - audiosetinfo() returns with EINVAL if mmapped and set_params()
requests filters
 - audio_write(), audio_pint(), and audio_rint() invoke a filter
pipeline.
 - ioctl() for FIONREAD, AUDIO_WSEEK, AUDIO_GETIOFFS,
AUDIO_GETOOFFS, and audio_prinfo::{seek,samples} for
AUDIO_GETINFO handle values for a buffer nearest to userland.

* add `struct device *' parameter to ac97_attach()

* all of audio HW drivers follow audio_hw_if and ac97 changes
2005-01-10 22:01:36 +00:00
thorpej e9818f5b5e When adding/deleting multicast addresses, only whack the address
filter if the interface is marked RUNNING.

Fixes kern/27678.
2004-10-30 18:08:34 +00:00
yamt 18f717bb90 constify audio_hw_if, midi_hw_if, and radio_hw_if. 2004-10-29 12:57:15 +00:00
mycroft 38ce741470 Clear IOIE in settype(), too. Not that we currently change modes without
powering down the socket, but...
2004-08-11 00:59:40 +00:00
mycroft d978001d30 Clear some more ICR0 bits on socket enable/disable. 2004-08-11 00:58:08 +00:00
mycroft b9798ff4a2 Add a settype() function.
XXX Note that I haven't even compiled this, but any problems are likely to be
more straightforward than crashing with a null pointer dereference.
2004-08-11 00:55:38 +00:00
mrg 6c81cd39b8 Hauke Fath's port of the openbsd SUNW,spif driver from PR#26061.
the driver was originally written by Jason L. Wright.

XXX: i haven't tested this on sparc64 at all...
2004-07-24 12:45:00 +00:00
mrg 5df9a04912 Hauke Fath's port of the openbsd SUNW,spif driver from PR#26061.
the driver was originally written by Jason L. Wright.

XXX: i haven't tested this on sparc64 at all...
2004-07-24 12:37:20 +00:00
pk 1aca1da8a8 No need to allocate our own bus tag here. 2004-07-19 13:33:35 +00:00
pk 9fb9c69cd9 Make this compile with the TCX_CG8 option turned on (PR#26269). 2004-07-14 19:07:29 +00:00
pk bab17de2f5 Use bus_space_tag_alloc(). Remove unused `sc_bustag' from softc. 2004-07-05 10:48:29 +00:00
martin 2aef6e6521 Adapt to new (non optional) bus space on sparc. 2004-07-05 07:26:04 +00:00
pk b7d8cee837 The sc_range and sc_nrange fields are no longer used. 2004-06-30 21:41:36 +00:00
pk 889aa9f444 Introduce bus_space_tag_alloc() for the common parts of bus tag allocation. 2004-06-30 21:16:38 +00:00
pk 75c422dbc4 Put back qec_bus_map(), since sparc64's mainbus and sbus drivers do not
use the tag's translation ranges yet.
2004-06-28 10:30:48 +00:00
pk 777714c310 Bus tags should now be constructed by copying the parent's bus tag and
then changing the fields that need to be handled by the child bus.
2004-06-27 18:28:26 +00:00
martin 804267781d Handle STP4020_ISR0_SCINT (status change interrupt posted) - by ignoring
it.
2004-05-18 06:20:28 +00:00
pk b3d526b501 Fix incorrect diagnostic. 2004-05-04 15:34:37 +00:00
pk ea53363e84 Rename PROM_getprop*() => prom_getprop*(). 2004-03-17 17:04:58 +00:00
pk 967492ee53 Replace myetheraddr() by prom_getether(). 2004-03-15 23:51:11 +00:00
martin d11a3aeebb Only ACK pending interrupts (instead of all possible). Log interrupts we
probably should have handled but didn't. Minor cleanup.
2003-12-23 13:46:18 +00:00
keihan b8702f530b netbsd.org -> NetBSD.org
This was the last commit of this kind to src/sys, which is now totally
"NetBSD.org clean".  Thanks for the patiance, and sorry for all the commits.
2003-12-04 13:57:30 +00:00
keihan 8476e6755a NetBSD.ORG -> NetBSD.org
Now all "NetBSD.ORG" are gone from src/sys.
2003-12-04 12:42:54 +00:00
chs e07f0b9362 eliminate uvm_useracc() in favor of checking the return value of
copyin() or copyout().

uvm_useracc() tells us whether the mapping permissions allow access to
the desired part of an address space, and many callers assume that
this is the same as knowing whether an attempt to access that part of
the address space will succeed.  however, access to user space can
fail for reasons other than insufficient permission, most notably that
paging in any non-resident data can fail due to i/o errors.  most of
the callers of uvm_useracc() make the above incorrect assumption.  the
rest are all misguided optimizations, which optimize for the case
where an operation will fail.  we'd rather optimize for operations
succeeding, in which case we should just attempt the access and handle
failures due to insufficient permissions the same way we handle i/o
errors.  since there appear to be no good uses of uvm_useracc(), we'll
just remove it.
2003-11-13 03:09:28 +00:00
pk bb69a241e8 Remove ancient DDB-dependent `hide/integrate'.
Simplify lewrcsr/lerdcsr; read-back after write doesn't hurt on sun4 so
skip the cpu type test in generic kernels.
2003-11-11 15:01:05 +00:00
chs cd23cf5c7c uninitialized variables. 2003-10-28 15:25:27 +00:00
ad f67ac65f3d Uninitialized variable. 2003-10-28 14:18:39 +00:00
pk f845a339ac Enable VLAN encapsulation. 2003-10-16 07:20:54 +00:00
uwe a0a4638c6f Get rid of the disgusting struct apc_dma *dma = NULL; hack now that we
have proper definitions for offsets of APM DMA registers.

NULL out round_buffersize and round_blocksize in audio_hw_if.  We
don't seem to have any special requirements and audio(9) already
provides enough rounding.
2003-09-10 11:45:45 +00:00
mrg 9e599bdb11 change PROM_getprop() from taking a "void **" for the storage, to a
"void *", and do the extra de-reference directly in the function.  this
avoids having to cast dozens of different types to "void **", which sets
of GCC3's strict-aliasing.  testing by martin@
2003-08-27 15:59:49 +00:00
uwe bb09aff859 Undo previous as it broke things.
There are some scattered implicit RASTERCONSOLE dependencies,
so there should be a better way.
2003-08-25 17:50:22 +00:00
uwe 65aeb1d742 #include "opt_rcons.h" 2003-08-24 17:31:59 +00:00
agc aad01611e7 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
2003-08-07 16:26:28 +00:00
pk 184c0df1a9 Get machine/dev/sbusvar.h for SUN4D too. 2003-08-01 12:21:59 +00:00
fvdl d5aece61d6 Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
2003-06-29 22:28:00 +00:00
darrenr 28c230cff5 More changes for providing lwpid for ktrace (sparc GENERIC built) 2003-06-29 09:56:29 +00:00
wiz 1ffa7b76c4 DMA, not dma nor Dma. 2003-05-03 18:10:37 +00:00
martin dc09fa82ac Fix attachment for sparc64 systems (missing bus_space_vaddr).
Patches submitted in PR 21188.
2003-04-24 05:06:32 +00:00
pk 7f7fb5aa9c Back out rev. 1.26; I forgot about the Javastations.. 2003-02-27 13:33:23 +00:00
pk db07312961 Some machine have a `SUNW,CS4231' node, but no actual hardware. It seems
these can be identified by a `serial' device type.
From Julian Coleman.
2003-02-27 13:30:39 +00:00
tsutsui 29849ba3b6 hz -> Hz 2003-02-22 05:06:36 +00:00
hannken 9ec14301ad Remove unneeded #include's.
Approved by: Paul Kranenburg <pk@netbsd.org>
2003-02-06 16:20:05 +00:00
martin 63f12be4f3 Add <sys/lock.h> include for ncr53c9xvar.h. 2003-02-06 15:21:21 +00:00
martin 9da7636a93 Add SUN4U magic to make nell work without things like WI_AT_BIGENDIAN_HACK.
XXX - need to move this (as well as the equivalent sparc stuff added
recently) outa here into sbus_machdep or something. We should not need
to know details of the actual bus_space implementation here.
2003-01-07 20:39:19 +00:00
martin 6833c24639 Separate the sbus bus_space_tag_t used for access to nell hardware from
the self constructed little endian pcmcia bus_space_tag_t used for the
client drivers.
2003-01-03 13:28:54 +00:00
mrg 7bd617d237 part one of bus_space(9) fixes to enable bus spaces to override the
bus_space_{read,write}_[1248]() functions, which will allow 16-bit
PCMCIA support to work without additional hacks in MI drivers.
this option is not enabled yet.
2003-01-03 11:57:45 +00:00
martin 12da8a0066 Call interrupt handlers from a soft interrupt to decouple them from the
(sometimes excessive) SPL assigned by the firmware to the sbus interrupt.
Protect access to hardware by splhigh().
2003-01-02 20:01:57 +00:00
thorpej 72a7af27b0 Use aprint_normal() in cfprint routines. 2003-01-01 00:10:15 +00:00
jdolecek a80733a697 fix typo in QE_CR_STAT_BITS - bit indication for EDEFER was wrong
Reported in kern/19557 by Ron Roskens
2002-12-25 08:24:30 +00:00
pk 456e1ad2d2 Establish high-level interrupt with IPL_SERIAL. 2002-12-17 08:32:12 +00:00
pk 725a6aebf7 Remove the `flags' argument from bus_intr_establish(). 2002-12-10 13:44:47 +00:00
pk db6d8afe02 bus_intr_establish() signature change.
The additional `fast trap' argument is ignored in these drivers.
2002-12-10 12:21:02 +00:00
pk 7007959dc1 Switch to softintr(9). 2002-12-10 12:17:35 +00:00
christos 514f7047e4 si_ -> sel_ 2002-11-26 18:49:40 +00:00
jdolecek e0cc03a09b merge kqueue branch into -current
kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
2002-10-23 09:10:23 +00:00
martin de956cbcda Only use one interrupt handler for both status changes and pcmcia IO
intterupts. No more races between the two interrupt handlers, without any
locking, and the driver becomes a bit simpler too.

Use the last bit of the config flags to select between the first and the
second sbus interrupt level the firmware has assigned to us.
2002-10-10 22:23:16 +00:00
thorpej b75a007d9f Add trailing ; to CFATTACH_DECL. 2002-10-02 16:51:16 +00:00
uwe 909a73ae25 Add missing args to CFATTACH_DECL. 2002-10-01 19:15:45 +00:00
thorpej 239b192ca3 Use CFATTACH_DECL(). 2002-09-30 23:07:07 +00:00
thorpej f818766afe Declare all cfattach structures const. 2002-09-27 20:31:45 +00:00
provos 0f09ed48a5 remove trailing \n in panic(). approved perry. 2002-09-27 15:35:29 +00:00
thorpej d7067078a4 Compare the driver name against "ledma", rather than looking for
&ledma_ca.
2002-09-27 05:07:09 +00:00
thorpej d1ad2ac4f2 Rather than referencing the cfdriver directly in the cfdata entries,
instead use a string naming the driver.  The cfdriver is then looked
up in a list which is built at run-time.
2002-09-27 02:24:06 +00:00
mycroft 04f09a4b0c Additional fixes to make 16 targets work on FAS366. 2002-09-25 05:19:20 +00:00
ad 60c69eb3f1 Squash some bugs. 2002-09-18 18:42:06 +00:00
ad ca0ac2c78c Driver for the Sun ZX/Leo framebuffer. This would be called leo, but the
amiga port already has a driver by that name.
2002-09-13 14:03:52 +00:00
tsutsui 48bddc7728 bus_dmamap_load() can't take BUS_DMA_COHERENT flag. 2002-09-12 16:01:06 +00:00
gehenna 77a6b82b27 Merge the gehenna-devsw branch into the trunk.
This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

	device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
  by using this grammer.

- Added the new naming convention.
  The name of the device switch must be <prefix>_[bc]devsw for auto-generation
  of device switch tables.

- The backward compatibility of loading block/character device
  switch by LKM framework is broken. This is necessary to convert
  from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
  We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
  the LKM framework will refer it to assign device major number dynamically.
2002-09-06 13:18:43 +00:00
martin a9cd647f4d Adapt to recent sbusvar.h changes.
Use a slightly less conservative timing configuration.
2002-09-04 16:17:52 +00:00
martin e7856d0f2a Adapt to sbusvar.h changes. 2002-09-04 16:12:23 +00:00
thorpej 90817e313c Use the structures defined in bsd_openprom.h for "reg", "range",
and "intr" properties, rather than having identical-except-for-names
sbus_* and iommu_* versions.
2002-08-23 02:53:10 +00:00
soren 5db905460e CG3 on at least the Classic doesn't have a "model" name, so fake one. 2002-08-03 00:59:00 +00:00
mrg ec69f2b1fd fix a bug introduced in rev 1.19:
- finish bus_space-ification of cs4231_sbus_trigger_input().

this stops recording on the sbus cs4231 from crashing.
2002-07-16 11:48:45 +00:00
lukem 06de426449 SIMPLEQ rototill:
- implement SIMPLEQ_REMOVE(head, elm, type, field).  whilst it's O(n),
  this mirrors the functionality of SLIST_REMOVE() (the other
  singly-linked list type) and FreeBSD's STAILQ_REMOVE()
- remove the unnecessary elm arg from SIMPLEQ_REMOVE_HEAD().
  this mirrors the functionality of SLIST_REMOVE_HEAD() (the other
  singly-linked list type) and FreeBSD's STAILQ_REMOVE_HEAD()
- remove notes about SIMPLEQ not supporting arbitrary element removal
- use SIMPLEQ_FOREACH() instead of home-grown for loops
- use SIMPLEQ_EMPTY() appropriately
- use SIMPLEQ_*() instead of accessing sqh_first,sqh_last,sqe_next directly
- reorder manual page; be consistent about how the types are listed
- other minor cleanups
2002-06-01 23:50:52 +00:00
wiz f7d76b1062 bcmp -> memcmp. 2002-05-22 16:03:14 +00:00
mjacob 7aac86133e Pointy hat to me on the last delta. 2002-05-18 00:48:11 +00:00
mjacob a14da6673f Replicate change that Matt Thomas made in isp_pci- if we get ENOMEM/EAGAIN
in bus_dmamap_load, return CMD_EAGAIN rather than just make the command dead.
2002-05-17 19:06:24 +00:00
pk 082991d03a cs4231_sbus_regdump(): add missing ')' 2002-03-27 16:03:52 +00:00
darrenr 9074b14439 Merge in the patch (PR kern/15963) to provide unaccelerated 24bit support
for the S24.
2002-03-27 10:14:17 +00:00
martin 642b1a7163 Remove dummy_splraise() - it is not needed according to Paul Kranenburg.
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.
2002-03-25 09:02:54 +00:00
eeh 85c03d9775 Properly bus_space_*=ify this so it uses accessors. 2002-03-21 00:25:41 +00:00
eeh 943373dde4 Use bus_space_vaddr(). 2002-03-21 00:18:36 +00:00
eeh 86ff330657 Fixup attachment code to use sbus_promaddr_to_handle() and not specify
BUS_SPACE_MAP_LINEAR.
2002-03-21 00:16:15 +00:00
eeh 87eac0acc3 Use bus_space_vaddr(). 2002-03-20 20:41:35 +00:00
eeh 686c857e16 Get rid of unnecessary BUS_SPACE_MAP_LINEAR. 2002-03-20 20:39:15 +00:00
eeh fbce8217dd Oops. Missing semicolon. 2002-03-20 19:32:42 +00:00
eeh 8ccad96d54 Add sbus_promaddr_to_handle() to convert a prom address to a bus_space_handle_t. 2002-03-20 18:39:44 +00:00
eeh 8ea2c88ec2 Clean up bus space a bit. XXX is sc_buffer ever actually used after it's
mapped in?
2002-03-20 17:59:16 +00:00
eeh ddbdd7fa41 Don't use BUS_SPACE_MAP_LINEAR if you don't need to. 2002-03-20 17:57:33 +00:00
eeh ef4ff79f61 Use bus_space_vaddr() correctly. (XXX do we really need this?) 2002-03-20 17:52:41 +00:00
eeh e0866470d8 Use bus_space_vaddr() correctly. Ugh. 2002-03-20 17:34:23 +00:00
atatat 31144d9976 Convert ioctl code to use EPASSTHROUGH instead of -1 or ENOTTY for
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.
2002-03-17 19:40:26 +00:00
eeh 5f84db4b34 Get rid of bus_type_t. 2002-03-15 07:00:34 +00:00
uwe a05702eaac Rework the driver to add EBus DMA support and improve APC DMA support.
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.
2002-03-12 04:48:28 +00:00
pk f61bdee8e7 Get rid of `bus_type_t' and use BUS_ADDR() (in sbus_bus_map()) to construct
a `bus_addr_t' to pass on to bus_space_map().

Drop `va' argument from sbus_bus_map(); it should not be used by MI Sbus
drivers.
2002-03-11 16:00:55 +00:00
martin e41836739f Remove another old debug message.
Return the real mapping size in *_mem_map and *_io_map.
Minor cleanup.
2002-03-10 16:18:44 +00:00
martin dfbd0bc7b8 Shuffle around some initialization code a bit.
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.
2002-03-08 21:33:43 +00:00
frueauf 089f361f5b Make this work after it got broken a year ago in r1.15 (pasto?):
In qeattach() sc->sc_rb.rb_dmabase needs to be set after the buffer got
loaded via bus_dmamem_map(), not before.

Fixes my own pr kern/15817.
2002-03-06 19:10:58 +00:00
simonb 64c7743a05 Don't "extern int cold;" - this is in <sys/kernel.h>. 2002-03-04 02:19:07 +00:00
martin 42172d9f1c Try to configure timing correctly.
Get rid of some ad hoc debuging printfs.
2002-03-03 22:47:28 +00:00