aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev')
-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 2e9cdd59e8420..cd90d7f908f04 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 152fd77852cb1..c2167311c878f 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 7e2098932c1fe..9729178136f72 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 0ff81629d1239..47943a0ab2b6c 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);