@@ -1,38 +1,35 @@
-Renesas Sampling Rate Convert Sound Card:
+ASoC simple DPCM Sound Card
-Renesas Sampling Rate Convert Sound Card specifies audio DAI connections of SoC <-> codec.
+Simple-Card specifies audio DAI connections of SoC <-> codec.
Required properties:
-- compatible : "renesas,rsrc-card{,<board>}"
- Examples with boards are:
- - "renesas,rsrc-card"
- - "renesas,rsrc-card,lager"
- - "renesas,rsrc-card,koelsch"
+- compatible : "simple-dpcm-audio-card"
+
Optional properties:
-- card_name : User specified audio sound card name, one string
+- simple-audio-card,name : User specified audio sound card name, one string
property.
-- cpu : CPU sub-node
-- codec : CODEC sub-node
+- simple-audio-card,cpu : CPU sub-node
+- simple-audio-card,codec : CODEC sub-node
Optional subnode properties:
-- format : CPU/CODEC common audio format.
+- simple-audio-card,format : CPU/CODEC common audio format.
"i2s", "right_j", "left_j" , "dsp_a"
"dsp_b", "ac97", "pdm", "msb", "lsb"
-- frame-master : Indicates dai-link frame master.
+- simple-audio-card,frame-master : Indicates dai-link frame master.
phandle to a cpu or codec subnode.
-- bitclock-master : Indicates dai-link bit clock master.
+- simple-audio-card,bitclock-master : Indicates dai-link bit clock master.
phandle to a cpu or codec subnode.
-- bitclock-inversion : bool property. Add this if the
+- simple-audio-card,bitclock-inversion : bool property. Add this if the
dai-link uses bit clock inversion.
-- frame-inversion : bool property. Add this if the
+- simple-audio-card,frame-inversion : bool property. Add this if the
dai-link uses frame clock inversion.
-- convert-rate : platform specified sampling rate convert
-- convert-channels : platform specified converted channel size (2 - 8 ch)
-- audio-prefix : see audio-routing
-- audio-routing : A list of the connections between audio components.
+- simple-audio-card,convert-rate : platform specified sampling rate convert
+- simple-audio-card,convert-channels : platform specified converted channel size (2 - 8 ch)
+- simple-audio-card,prefix : see audio-routing
+- simple-audio-card,routing : A list of the connections between audio components.
Each entry is a pair of strings, the first being the connection's sink,
the second being the connection's source. Valid names for sources.
use audio-prefix if some components is using same sink/sources naming.
@@ -57,18 +54,25 @@ Optional CPU/CODEC subnodes properties:
Example
sound {
- compatible = "renesas,rsrc-card,lager";
+ compatible = "simple-dpcm-audio-card";
+
+ simple-audio-card,name = "rsnd-ak4643";
+ simple-audio-card,format = "left_j";
+ simple-audio-card,format = "left_j";
+ simple-audio-card,bitclock-master = <&sndcodec>;
+ simple-audio-card,frame-master = <&sndcodec>;
+
+ simple-audio-card,convert-rate = <48000>; /* see audio_clk_a */
- card-name = "rsnd-ak4643";
- format = "left_j";
- bitclock-master = <&sndcodec>;
- frame-master = <&sndcodec>;
+ simple-audio-card,prefix = "ak4642";
+ simple-audio-card,routing = "ak4642 Playback", "DAI0 Playback",
+ "DAI0 Capture", "ak4642 Capture";
- sndcpu: cpu {
+ sndcpu: simple-audio-card,cpu {
sound-dai = <&rcar_sound>;
};
- sndcodec: codec {
+ sndcodec: simple-audio-card,codec {
sound-dai = <&ak4643>;
system-clock-frequency = <11289600>;
};
@@ -25,21 +25,8 @@ struct asoc_simple_card_of_data {
int num_routes;
};
-static const struct snd_soc_dapm_route routes_ssi0_ak4642[] = {
- {"ak4642 Playback", NULL, "DAI0 Playback"},
- {"DAI0 Capture", NULL, "ak4642 Capture"},
-};
-
-static const struct asoc_simple_card_of_data routes_of_ssi0_ak4642 = {
- .prefix = "ak4642",
- .routes = routes_ssi0_ak4642,
- .num_routes = ARRAY_SIZE(routes_ssi0_ak4642),
-};
-
static const struct of_device_id asoc_simple_card_of_match[] = {
- { .compatible = "renesas,rsrc-card,lager", .data = &routes_of_ssi0_ak4642 },
- { .compatible = "renesas,rsrc-card,koelsch", .data = &routes_of_ssi0_ak4642 },
- { .compatible = "renesas,rsrc-card", },
+ { .compatible = "simple-dpcm-audio-card", },
{},
};
MODULE_DEVICE_TABLE(of, asoc_simple_card_of_match);
@@ -61,6 +48,7 @@ struct asoc_simple_card_priv {
#define DAI "sound-dai"
#define CELL "#sound-dai-cells"
+#define PREFIX "simple-audio-card,"
static int asoc_simple_card_startup(struct snd_pcm_substream *substream)
{
@@ -147,10 +135,6 @@ static int asoc_simple_card_parse_links(struct device_node *np,
return ret;
} else {
- const struct asoc_simple_card_of_data *of_data;
-
- of_data = of_device_get_match_data(dev);
-
asoc_simple_card_parse_dpcm_be(dai_link, asoc_simple_card_be_hw_params_fixup);
ret = asoc_simple_card_parse_codec(np, dai_link, DAI, CELL);
@@ -161,17 +145,11 @@ static int asoc_simple_card_parse_links(struct device_node *np,
if (ret < 0)
return ret;
- /* additional name prefix */
- if (of_data) {
- priv->codec_conf.of_node = dai_link->codec_of_node;
- priv->codec_conf.name_prefix = of_data->prefix;
- } else {
- ret = asoc_simple_card_parse_card_prefix(&priv->snd_card,
- dai_link, &priv->codec_conf,
- "audio-");
- if (ret < 0)
- return ret;
- }
+ ret = asoc_simple_card_parse_card_prefix(&priv->snd_card,
+ dai_link, &priv->codec_conf,
+ PREFIX);
+ if (ret < 0)
+ return ret;
}
ret = asoc_simple_card_parse_tdm(np, dai_props);
@@ -217,9 +195,9 @@ static int asoc_simple_card_dai_link_of(struct device_node *node,
for_each_child_of_node(node, np) {
dai_link = simple_priv_to_link(priv, i);
- if (strcmp(np->name, "codec") == 0) {
+ if (strcmp(np->name, PREFIX "codec") == 0) {
ret = asoc_simple_card_parse_daifmt(dev, node, np,
- NULL, &daifmt);
+ PREFIX, &daifmt);
if (ret < 0)
return ret;
break;
@@ -233,7 +211,7 @@ static int asoc_simple_card_dai_link_of(struct device_node *node,
dai_link->dai_fmt = daifmt;
is_fe = false;
- if (strcmp(np->name, "cpu") == 0)
+ if (strcmp(np->name, PREFIX "cpu") == 0)
is_fe = true;
ret = asoc_simple_card_parse_links(np, priv, i, is_fe);
@@ -249,7 +227,6 @@ static int asoc_simple_card_parse_of(struct device_node *node,
struct asoc_simple_card_priv *priv,
struct device *dev)
{
- const struct asoc_simple_card_of_data *of_data = of_device_get_match_data(dev);
struct asoc_simple_dai *props;
struct snd_soc_dai_link *links;
int ret;
@@ -276,30 +253,25 @@ static int asoc_simple_card_parse_of(struct device_node *node,
priv->snd_card.num_configs = 1;
/* sampling rate convert */
- of_property_read_u32(node, "convert-rate", &priv->convert_rate);
+ of_property_read_u32(node, PREFIX "convert-rate", &priv->convert_rate);
/* channels transfer */
- of_property_read_u32(node, "convert-channels", &priv->convert_channels);
+ of_property_read_u32(node, PREFIX "convert-channels", &priv->convert_channels);
ret = asoc_simple_card_dai_link_of(node, priv);
if (ret < 0)
return ret;
- if (of_data) {
- priv->snd_card.of_dapm_routes = of_data->routes;
- priv->snd_card.num_of_dapm_routes = of_data->num_routes;
- } else {
- asoc_simple_card_parse_card_route(&priv->snd_card, "audio-");
- }
+ ret = asoc_simple_card_parse_card_route(&priv->snd_card, PREFIX);
+ if (ret < 0)
+ return ret;
- ret = asoc_simple_card_parse_card_name(&priv->snd_card, "card-");
+ ret = asoc_simple_card_parse_card_name(&priv->snd_card, PREFIX);
if (ret < 0)
return ret;
- dev_dbg(dev, "New rsrc-audio-card: %s\n",
- priv->snd_card.name ? priv->snd_card.name : "");
- dev_dbg(dev, "SRC : convert_rate %d\n", priv->convert_rate);
- dev_dbg(dev, "CTU : convert_channels %d\n", priv->convert_channels);
+ dev_dbg(dev, "convert_rate %d\n", priv->convert_rate);
+ dev_dbg(dev, "convert_channels %d\n", priv->convert_channels);
return 0;
}
@@ -343,7 +315,7 @@ static int asoc_simple_card_remove(struct platform_device *pdev)
static struct platform_driver asoc_simple_card = {
.driver = {
- .name = "renesas-src-audio-card",
+ .name = "simple-dpcm-audio-card",
.of_match_table = asoc_simple_card_of_match,
},
.probe = asoc_simple_card_probe,