diff --git a/sys/dev/sound/macio/aoa.c b/sys/dev/sound/macio/aoa.c index 2e9cdd59e842..cd90d7f908f0 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 152fd77852cb..c2167311c878 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 7e2098932c1f..9729178136f7 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 0ff81629d123..47943a0ab2b6 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);