[alsa-devel] question about dapm-routes and uda1380.c
Andrea Venturi
andrea.venturi.axel at gmail.com
Fri Jun 19 10:42:43 CEST 2015
hello,
i'm working on integrating on an Allwinner A20 based SBC an external
codec based on NXP UDA1380 through I2S DAI;
the SBC is Olime Olinuxino Lime2,
the codec board is this one, as it's pretty cheap on usual china sites:
http://www.wvshare.com/product/UDA1380-Board.htm
i'm using mainline kernel, 4.0.x from here:
https://github.com/jwrdegoede/linux-sunxi/tree/sunxi-wip
i'm planning to just port the I2S DAI from the legacy allwinner
linux-sunxi 3.4 and use a "simple-audio-card" approach.
i have more or less the setup in place with my 3 modules and DTS someway
hacked to work out the connection between SOC/CPU + DAI + CODEC.
now i load the three modules in the kernel this way (i'm wondering if
there's a way for autoloading, i'll look for when it's stable..):
# insert the platform/DAI driver
modprobe snd-soc-sunxi-i2s
sleep 1
modprobe snd-soc-simple-card
sleep 1
modprobe snd-soc-uda1380
sleep 1
then , i've a number of warning and error (it's normal as i'm in early
debugging now..).
the one for which i'm posting is related to "dapm routes" in the
.../codecs/uda1380.c, these are errors in the log:
[ 33.876179] uda1380-codec 1-0018: Control not supported for path Right PGA -> [Mic + Line R] -> Right ADC
[ 33.885756] uda1380-codec 1-0018: ASoC: no dapm match for Right PGA --> Mic + Line R --> Right ADC
[ 33.894719] uda1380-codec 1-0018: ASoC: Failed to add route Right PGA -> Mic + Line R -> Right ADC
[ 33.903669] uda1380-codec 1-0018: Control not supported for path Right PGA -> [Line] -> Right ADC
[ 33.912542] uda1380-codec 1-0018: ASoC: no dapm match for Right PGA --> Line --> Right ADC
[ 33.920807] uda1380-codec 1-0018: ASoC: Failed to add route Right PGA -> Line -> Right ADC
to clear them out, i had to patch the dapm_route structure of uda1380.c
with:
--- sound/soc/codecs/uda1380-orig.c 2015-05-26 12:41:58.650111434 +0200
+++ sound/soc/codecs/uda1380.c 2015-06-18 22:38:51.845892195 +0200
@@ -403,8 +403,11 @@
{"Input Mux", "Line", "Left PGA"},
/* right input */
- {"Right ADC", "Mic + Line R", "Right PGA"},
- {"Right ADC", "Line", "Right PGA"},
+ {"Right ADC", NULL, "Input Mux"},
+ {"Input Mux", "Mic", "Mic LNA"},
+ {"Input Mux", "Mic + Line R", "Right PGA"},
+ {"Input Mux", "Line L", "Left PGA"},
+ {"Input Mux", "Line", "Right PGA"},
/* inputs */
{"Mic LNA", NULL, "VINM"},
i added the same "Input Mux" DAPM widget as it's done on the left input
of the codec, that's already bound to this "dapm widget" and is managing
the couple of codec register bits at 0x22, SEL_LNA and SEL_MIC, that
select one of the many input path (see the PDF to better understand.. i
could add a shot but i don't know if it's policy permitted )
http://www.nxp.com/documents/data_sheet/UDA1380.pdf
as far as i can see, it should be an issue independent by my
"development" setup, but should happening, at module load time, to all
the devices having such a codec and using a fairly recent mainline
kernel in an ASOC environment;
is that right? could you confirm this feeling?
let me sincerely tell you that there's not that much documentation about
Alsa ASoC, simple-audio-card, codec, DAIs, dapm, dts, up to date, or at
least is scattered here and there.
so it takes a bit of time to read, understand (maybe), code, test and
debug this kind of drivers, really!
i can understand there's lot's ongoing here, and API are on flux, for
example i had to put together stuff from different card drivers as i'm
willing to use also Dmaengine and regmap and don't remember whatever
else, but many drivers are still frozen on previous API (i understand it
would take lot's of janitoring effort and testing on regression cases..)
of course, i still can't say this patch is good for something until i've
worked out all the other issues and finally listened some good music out
of this combo SOC+codec! :-)
hope to post more about this setup when it's working..
bests
More information about the Alsa-devel
mailing list