Commit c2b71c71 authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Mark Brown

ASoC: soc-core: add for_each_xxx macro for aux_dev

To be more readable code, this patch adds
new for_each_xxx() macro for aux_dev.
Signed-off-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87ftmc6w8s.wl-kuninori.morimoto.gx@renesas.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent b812cd58
...@@ -1087,6 +1087,10 @@ struct snd_soc_card { ...@@ -1087,6 +1087,10 @@ struct snd_soc_card {
for ((i) = 0; \ for ((i) = 0; \
((i) < (card)->num_links) && ((link) = &(card)->dai_link[i]); \ ((i) < (card)->num_links) && ((link) = &(card)->dai_link[i]); \
(i)++) (i)++)
#define for_each_card_pre_auxs(card, i, aux) \
for ((i) = 0; \
((i) < (card)->num_aux_devs) && ((aux) = &(card)->aux_dev[i]); \
(i)++)
#define for_each_card_links(card, link) \ #define for_each_card_links(card, link) \
list_for_each_entry(link, &(card)->dai_link_list, list) list_for_each_entry(link, &(card)->dai_link_list, list)
...@@ -1098,6 +1102,12 @@ struct snd_soc_card { ...@@ -1098,6 +1102,12 @@ struct snd_soc_card {
#define for_each_card_rtds_safe(card, rtd, _rtd) \ #define for_each_card_rtds_safe(card, rtd, _rtd) \
list_for_each_entry_safe(rtd, _rtd, &(card)->rtd_list, list) list_for_each_entry_safe(rtd, _rtd, &(card)->rtd_list, list)
#define for_each_card_auxs(card, component) \
list_for_each_entry(component, &card->aux_comp_list, card_aux_list)
#define for_each_card_auxs_safe(card, component, _comp) \
list_for_each_entry_safe(component, _comp, \
&card->aux_comp_list, card_aux_list)
#define for_each_card_components(card, component) \ #define for_each_card_components(card, component) \
list_for_each_entry(component, &(card)->component_dev_list, card_list) list_for_each_entry(component, &(card)->component_dev_list, card_list)
......
...@@ -111,6 +111,7 @@ static void axg_card_clean_references(struct axg_card *priv) ...@@ -111,6 +111,7 @@ static void axg_card_clean_references(struct axg_card *priv)
struct snd_soc_card *card = &priv->card; struct snd_soc_card *card = &priv->card;
struct snd_soc_dai_link *link; struct snd_soc_dai_link *link;
struct snd_soc_dai_link_component *codec; struct snd_soc_dai_link_component *codec;
struct snd_soc_aux_dev *aux;
int i, j; int i, j;
if (card->dai_link) { if (card->dai_link) {
...@@ -123,8 +124,8 @@ static void axg_card_clean_references(struct axg_card *priv) ...@@ -123,8 +124,8 @@ static void axg_card_clean_references(struct axg_card *priv)
} }
if (card->aux_dev) { if (card->aux_dev) {
for (i = 0; i < card->num_aux_devs; i++) for_each_card_pre_auxs(card, i, aux)
of_node_put(card->aux_dev[i].dlc.of_node); of_node_put(aux->dlc.of_node);
} }
kfree(card->dai_link); kfree(card->dai_link);
...@@ -157,7 +158,7 @@ static int axg_card_add_aux_devices(struct snd_soc_card *card) ...@@ -157,7 +158,7 @@ static int axg_card_add_aux_devices(struct snd_soc_card *card)
card->aux_dev = aux; card->aux_dev = aux;
card->num_aux_devs = num; card->num_aux_devs = num;
for (i = 0; i < card->num_aux_devs; i++, aux++) { for_each_card_pre_auxs(card, i, aux) {
aux->dlc.of_node = aux->dlc.of_node =
of_parse_phandle(node, "audio-aux-devs", i); of_parse_phandle(node, "audio-aux-devs", i);
if (!aux->dlc.of_node) if (!aux->dlc.of_node)
......
...@@ -1533,9 +1533,9 @@ static int soc_probe_link_dais(struct snd_soc_card *card, ...@@ -1533,9 +1533,9 @@ static int soc_probe_link_dais(struct snd_soc_card *card,
return ret; return ret;
} }
static int soc_bind_aux_dev(struct snd_soc_card *card, int num) static int soc_bind_aux_dev(struct snd_soc_card *card,
struct snd_soc_aux_dev *aux_dev)
{ {
struct snd_soc_aux_dev *aux_dev = &card->aux_dev[num];
struct snd_soc_component *component; struct snd_soc_component *component;
/* codecs, usually analog devices */ /* codecs, usually analog devices */
...@@ -1544,6 +1544,7 @@ static int soc_bind_aux_dev(struct snd_soc_card *card, int num) ...@@ -1544,6 +1544,7 @@ static int soc_bind_aux_dev(struct snd_soc_card *card, int num)
return -EPROBE_DEFER; return -EPROBE_DEFER;
component->init = aux_dev->init; component->init = aux_dev->init;
/* see for_each_card_auxs */
list_add(&component->card_aux_list, &card->aux_comp_list); list_add(&component->card_aux_list, &card->aux_comp_list);
return 0; return 0;
...@@ -1556,7 +1557,7 @@ static int soc_probe_aux_devices(struct snd_soc_card *card) ...@@ -1556,7 +1557,7 @@ static int soc_probe_aux_devices(struct snd_soc_card *card)
int ret; int ret;
for_each_comp_order(order) { for_each_comp_order(order) {
list_for_each_entry(comp, &card->aux_comp_list, card_aux_list) { for_each_card_auxs(card, comp) {
if (comp->driver->probe_order == order) { if (comp->driver->probe_order == order) {
ret = soc_probe_component(card, comp); ret = soc_probe_component(card, comp);
if (ret < 0) { if (ret < 0) {
...@@ -1578,8 +1579,7 @@ static void soc_remove_aux_devices(struct snd_soc_card *card) ...@@ -1578,8 +1579,7 @@ static void soc_remove_aux_devices(struct snd_soc_card *card)
int order; int order;
for_each_comp_order(order) { for_each_comp_order(order) {
list_for_each_entry_safe(comp, _comp, for_each_card_auxs_safe(card, comp, _comp) {
&card->aux_comp_list, card_aux_list) {
if (comp->driver->remove_order == order) { if (comp->driver->remove_order == order) {
soc_remove_component(comp); soc_remove_component(comp);
...@@ -1913,6 +1913,7 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card) ...@@ -1913,6 +1913,7 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
{ {
struct snd_soc_pcm_runtime *rtd; struct snd_soc_pcm_runtime *rtd;
struct snd_soc_dai_link *dai_link; struct snd_soc_dai_link *dai_link;
struct snd_soc_aux_dev *aux;
int ret, i, order; int ret, i, order;
mutex_lock(&client_mutex); mutex_lock(&client_mutex);
...@@ -1943,8 +1944,8 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card) ...@@ -1943,8 +1944,8 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
} }
/* bind aux_devs too */ /* bind aux_devs too */
for (i = 0; i < card->num_aux_devs; i++) { for_each_card_pre_auxs(card, i, aux) {
ret = soc_bind_aux_dev(card, i); ret = soc_bind_aux_dev(card, aux);
if (ret != 0) if (ret != 0)
goto probe_end; goto probe_end;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment