socsvn commit: r289808 - soc2015/pratiksinghal/cubie-head/sys/arm/allwinner
pratiksinghal at FreeBSD.org
pratiksinghal at FreeBSD.org
Sun Aug 16 14:54:48 UTC 2015
Author: pratiksinghal
Date: Sun Aug 16 14:54:46 2015
New Revision: 289808
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=289808
Log:
PCM channels are now initialized correctly
Modified:
soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_ac97.c
Modified: soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_ac97.c
==============================================================================
--- soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_ac97.c Sun Aug 16 13:59:11 2015 (r289807)
+++ soc2015/pratiksinghal/cubie-head/sys/arm/allwinner/a10_ac97.c Sun Aug 16 14:54:46 2015 (r289808)
@@ -40,6 +40,9 @@
#include "a10_ac97.h"
+#define A10_NREC_CHANNEL 1
+#define A10_NPLAY_CHANNEL 1
+
/* TODO :- Add DMA support after the pio mode works corectly. */
struct a10_ac97_channel
@@ -78,6 +81,14 @@
static void *a10_ac97_chan_init(kobj_t, void *, struct snd_dbuf *, struct pcm_channel *, int);
static int a10_ac97_setfmt(kobj_t, void *, uint32_t);
+static kobj_method_t a10_ac97_chan_methods[] = {
+ KOBJMETHOD(channel_init, a10_ac97_chan_init),
+ KOBJMETHOD(channel_setformat, a10_ac97_setfmt),
+ KOBJMETHOD_END
+};
+
+CHANNEL_DECLARE(a10_ac97_chan);
+
#define AC97_READ(_sc, _reg) \
bus_space_read_4((_sc)->ac97_bst, (_sc)->ac97_bsh, _reg)
#define AC97_WRITE(_sc, _reg, _value) \
@@ -132,6 +143,12 @@
sc->ac97_bst = rman_get_bustag(sc->mem_res);
sc->ac97_bsh = rman_get_bushandle(sc->mem_res);
+ if (pcm_register(sc->ac_dev, sc, A10_NPLAY_CHANNEL, A10_NREC_CHANNEL))
+ goto fail;
+
+ pcm_addchan(sc->ac_dev, PCMDIR_PLAY, &a10_ac97_chan_class, sc);
+ pcm_addchan(sc->ac_dev, PCMDIR_REC, &a10_ac97_chan_class, sc);
+
mtx_init(&sc->ac97_mtx, device_get_nameunit(dev), "a10_ac97", MTX_DEF);
uint32_t val,total;
@@ -226,20 +243,6 @@
}
}
-static kobj_method_t a10_ac97_chan_methods[] = {
- KOBJMETHOD(channel_init, a10_ac97_chan_init),
- KOBJMETHOD(channel_setformat, a10_ac97_setfmt),
- //KOBJMETHOD(channel_setspeed, a10_ac97_speed),
- //KOBJMETHOD(channel_setblocksize, a10_ac97_setblksz),
- //KOBJMETHOD(channel_setfragments, a10_ac97_setfragments),
- //KOBJMETHOD(channel_trigger, a10_ac97_chan_trigger),
- //KOBJMETHOD(channel_getptr, a10_ac97_getptr),
- //KOBJMETHOD(channel_getcaps, a10_ac97_getcaps)
- KOBJMETHOD_END
-};
-
-CHANNEL_DECLARE(a10_ac97_chan);
-
static device_method_t a10_ac97_methods[] = {
DEVMETHOD(device_probe, ac97_probe),
DEVMETHOD(device_attach, ac97_attach),
More information about the svn-soc-all
mailing list