summaryrefslogtreecommitdiffstats
path: root/sys/dev/sound/macio
diff options
context:
space:
mode:
authornwhitehorn <nwhitehorn@FreeBSD.org>2009-01-26 14:43:18 +0000
committernwhitehorn <nwhitehorn@FreeBSD.org>2009-01-26 14:43:18 +0000
commit13afe7a515aca0c4f80418e5107b820e288edba1 (patch)
tree140bc0a00429295ba4ee6110c1e434b2f811af08 /sys/dev/sound/macio
parentb193317a46c06dbf600581ded1f5953d417062a0 (diff)
downloadFreeBSD-src-13afe7a515aca0c4f80418e5107b820e288edba1.zip
FreeBSD-src-13afe7a515aca0c4f80418e5107b820e288edba1.tar.gz
Change the way our softc is stored to use the devinfo facility provided by pcm
instead of the regular device softc interface. This brings the AOA driver in line with the other pcm drivers. Requested by: ariff
Diffstat (limited to 'sys/dev/sound/macio')
-rw-r--r--sys/dev/sound/macio/aoa.c8
-rw-r--r--sys/dev/sound/macio/aoa.h8
-rw-r--r--sys/dev/sound/macio/davbus.c14
-rw-r--r--sys/dev/sound/macio/i2s.c17
4 files changed, 20 insertions, 27 deletions
diff --git a/sys/dev/sound/macio/aoa.c b/sys/dev/sound/macio/aoa.c
index 2e9cdd5..cd90d7f 100644
--- a/sys/dev/sound/macio/aoa.c
+++ b/sys/dev/sound/macio/aoa.c
@@ -106,7 +106,7 @@ aoa_dma_set_program(struct aoa_dma *dma)
static struct aoa_dma *
aoa_dma_create(device_t self)
{
- struct aoa_softc *sc = device_get_softc(self);
+ struct aoa_softc *sc = pcm_getdevinfo(self);
struct aoa_dma *dma;
bus_dma_tag_t tag;
int err;
@@ -215,7 +215,7 @@ aoa_chan_init(kobj_t obj, void *devinfo, struct snd_dbuf *b,
struct pcm_channel *c, int dir)
{
device_t self = devinfo;
- struct aoa_softc *sc = device_get_softc(self);
+ struct aoa_softc *sc = pcm_getdevinfo(self);
struct aoa_dma *dma;
int max_slots, err;
@@ -357,12 +357,12 @@ static kobj_method_t aoa_chan_methods[] = {
CHANNEL_DECLARE(aoa_chan);
int
-aoa_attach(device_t self)
+aoa_attach(device_t self, void *sc)
{
char status[SND_STATUSLEN];
int err;
- if (pcm_register(self, self, 1, 0))
+ if (pcm_register(self, sc, 1, 0))
return (ENXIO);
err = pcm_getbuffersize(self, AOA_BUFFER_SIZE, AOA_BUFFER_SIZE,
diff --git a/sys/dev/sound/macio/aoa.h b/sys/dev/sound/macio/aoa.h
index 152fd77..c216731 100644
--- a/sys/dev/sound/macio/aoa.h
+++ b/sys/dev/sound/macio/aoa.h
@@ -28,17 +28,19 @@
#ifndef SOUND_AOA_H
#define SOUND_AOA_H
+#ifndef AOA_DEBUG
#define DPRINTF(x) /* nothing */
-/* #define DPRINTF(x) printf x */
+#else
+#define DPRINTF(x) printf x
+#endif
struct aoa_softc {
- u_int8_t sc_super[PCM_SOFTC_SIZE];
void *sc_intrp;
struct resource *sc_odma;
};
void aoa_interrupt(void *);
-int aoa_attach(device_t);
+int aoa_attach(device_t, void *sc);
#endif /* SOUND_AOA_H */
diff --git a/sys/dev/sound/macio/davbus.c b/sys/dev/sound/macio/davbus.c
index 7e20989..9729178 100644
--- a/sys/dev/sound/macio/davbus.c
+++ b/sys/dev/sound/macio/davbus.c
@@ -78,7 +78,7 @@ static device_method_t pcm_davbus_methods[] = {
static driver_t pcm_davbus_driver = {
"pcm",
pcm_davbus_methods,
- sizeof(struct davbus_softc)
+ PCM_SOFTC_SIZE
};
DRIVER_MODULE(pcm_davbus, macio, pcm_davbus_driver, pcm_devclass, 0, 0);
@@ -91,7 +91,6 @@ static int
davbus_probe(device_t self)
{
const char *name;
- struct davbus_softc *sc;
name = ofw_bus_get_name(self);
if (!name)
@@ -100,11 +99,6 @@ davbus_probe(device_t self)
if (strcmp(name, "davbus") != 0)
return (ENXIO);
- sc = device_get_softc(self);
- if (!sc)
- return (ENOMEM);
- bzero(sc, sizeof(*sc));
-
device_set_desc(self, "Apple DAVBus Audio Controller");
return (0);
@@ -495,12 +489,14 @@ screamer_setrecsrc(struct snd_mixer *m, u_int32_t src)
static int
davbus_attach(device_t self)
{
- struct davbus_softc *sc = device_get_softc(self);
+ struct davbus_softc *sc;
struct resource *dbdma_irq, *cintr;
void *cookie;
char compat[64];
int rid, oirq, err;
+ sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK | M_ZERO);
+
sc->dev = self;
sc->node = ofw_bus_get_node(self);
sc->soundnode = OF_child(sc->node);
@@ -559,7 +555,7 @@ davbus_attach(device_t self)
DAVBUS_OUTPUT_SUBFRAME0 | DAVBUS_RATE_44100 | DAVBUS_INTR_PORTCHG);
/* Attach DBDMA engine and PCM layer */
- err = aoa_attach(self);
+ err = aoa_attach(self,sc);
if (err)
return (err);
diff --git a/sys/dev/sound/macio/i2s.c b/sys/dev/sound/macio/i2s.c
index 0ff8162..47943a0 100644
--- a/sys/dev/sound/macio/i2s.c
+++ b/sys/dev/sound/macio/i2s.c
@@ -111,7 +111,7 @@ static device_method_t pcm_i2s_methods[] = {
static driver_t pcm_i2s_driver = {
"pcm",
pcm_i2s_methods,
- sizeof(struct i2s_softc)
+ PCM_SOFTC_SIZE
};
DRIVER_MODULE(pcm_i2s, macio, pcm_i2s_driver, pcm_devclass, 0, 0);
@@ -153,7 +153,6 @@ static int
i2s_probe(device_t self)
{
const char *name;
- struct i2s_softc *sc;
name = ofw_bus_get_name(self);
if (!name)
@@ -162,11 +161,6 @@ i2s_probe(device_t self)
if (strcmp(name, "i2s") != 0)
return (ENXIO);
- sc = device_get_softc(self);
- if (!sc)
- return (ENOMEM);
- bzero(sc, sizeof(*sc));
-
device_set_desc(self, "Apple I2S Audio Controller");
return (0);
@@ -177,11 +171,13 @@ static phandle_t of_find_firstchild_byname(phandle_t, const char *);
static int
i2s_attach(device_t self)
{
- struct i2s_softc *sc = device_get_softc(self);
+ struct i2s_softc *sc;
struct resource *dbdma_irq;
void *dbdma_ih;
int rid, oirq, err;
phandle_t port;
+
+ sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK | M_ZERO);
sc->dev = self;
sc->node = ofw_bus_get_node(self);
@@ -242,7 +238,7 @@ i2s_attach(device_t self)
if (config_intrhook_establish(i2s_delayed_attach) != 0)
return (ENOMEM);
- return (aoa_attach(self));
+ return (aoa_attach(self,sc));
}
/*****************************************************************************
@@ -322,7 +318,6 @@ aoagpio_probe(device_t gpio)
/* Try to find a match. */
for (m = gpio_controls; m->name != NULL; m++) {
if (strcmp(name, m->name) == 0) {
-
sc = device_get_softc(gpio);
gpio_ctrls[m->ctrl] = sc;
sc->dev = gpio;
@@ -731,7 +726,7 @@ i2s_postattach(void *arg)
KASSERT(self != NULL, ("bad arg"));
KASSERT(i2s_delayed_attach != NULL, ("bogus call"));
- sc = device_get_softc(self);
+ sc = pcm_getdevinfo(self);
/* Reset the codec. */
i2s_audio_hw_reset(sc);
OpenPOWER on IntegriCloud