Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Aug 2015 14:54:47 GMT
From:      pratiksinghal@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r289808 - soc2015/pratiksinghal/cubie-head/sys/arm/allwinner
Message-ID:  <201508161454.t7GEslDL092923@socsvn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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),



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201508161454.t7GEslDL092923>