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>