#define for_each_card_rtds_safe(card, rtd, _rtd)       \
        list_for_each_entry_safe(rtd, _rtd, &(card)->rtd_list, list)
 
+#define for_each_card_components(card, component)                      \
+       list_for_each_entry(component, &(card)->component_dev_list, card_list)
+
 /* SoC machine DAI configuration, glues a codec and cpu DAI together */
 struct snd_soc_pcm_runtime {
        struct device *dev;
 
 static int broadwell_suspend(struct snd_soc_card *card){
        struct snd_soc_component *component;
 
-       list_for_each_entry(component, &card->component_dev_list, card_list) {
+       for_each_card_components(card, component) {
                if (!strcmp(component->name, "i2c-INT343A:00")) {
 
                        dev_dbg(component->dev, "disabling jack detect before going to suspend.\n");
 static int broadwell_resume(struct snd_soc_card *card){
        struct snd_soc_component *component;
 
-       list_for_each_entry(component, &card->component_dev_list, card_list) {
+       for_each_card_components(card, component) {
                if (!strcmp(component->name, "i2c-INT343A:00")) {
 
                        dev_dbg(component->dev, "enabling jack detect for resume.\n");
 
        if (!BYT_RT5640_JDSRC(byt_rt5640_quirk))
                return 0;
 
-       list_for_each_entry(component, &card->component_dev_list, card_list) {
+       for_each_card_components(card, component) {
                if (!strcmp(component->name, byt_rt5640_codec_name)) {
                        dev_dbg(component->dev, "disabling jack detect before suspend\n");
                        snd_soc_component_set_jack(component, NULL, NULL);
        if (!BYT_RT5640_JDSRC(byt_rt5640_quirk))
                return 0;
 
-       list_for_each_entry(component, &card->component_dev_list, card_list) {
+       for_each_card_components(card, component) {
                if (!strcmp(component->name, byt_rt5640_codec_name)) {
                        dev_dbg(component->dev, "re-enabling jack detect after resume\n");
                        snd_soc_component_set_jack(component, &priv->jack, NULL);
 
        if (!BYT_RT5651_JDSRC(byt_rt5651_quirk))
                return 0;
 
-       list_for_each_entry(component, &card->component_dev_list, card_list) {
+       for_each_card_components(card, component) {
                if (!strcmp(component->name, byt_rt5651_codec_name)) {
                        dev_dbg(component->dev, "disabling jack detect before suspend\n");
                        snd_soc_component_set_jack(component, NULL, NULL);
        if (!BYT_RT5651_JDSRC(byt_rt5651_quirk))
                return 0;
 
-       list_for_each_entry(component, &card->component_dev_list, card_list) {
+       for_each_card_components(card, component) {
                if (!strcmp(component->name, byt_rt5651_codec_name)) {
                        dev_dbg(component->dev, "re-enabling jack detect after resume\n");
                        snd_soc_component_set_jack(component, &priv->jack, NULL);
 
        struct snd_soc_component *component;
        struct cht_mc_private *ctx = snd_soc_card_get_drvdata(card);
 
-       list_for_each_entry(component, &card->component_dev_list, card_list) {
+       for_each_card_components(card, component) {
                if (!strncmp(component->name,
                             ctx->codec_name, sizeof(ctx->codec_name))) {
 
        struct snd_soc_component *component;
        struct cht_mc_private *ctx = snd_soc_card_get_drvdata(card);
 
-       list_for_each_entry(component, &card->component_dev_list, card_list) {
+       for_each_card_components(card, component) {
                if (!strncmp(component->name,
                             ctx->codec_name, sizeof(ctx->codec_name))) {
 
 
        snd_soc_dapm_sync(&card->dapm);
 
        /* suspend all COMPONENTs */
-       list_for_each_entry(component, &card->component_dev_list, card_list) {
+       for_each_card_components(card, component) {
                struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
 
                /* If there are paths active then the COMPONENT will be held with
                        cpu_dai->driver->resume(cpu_dai);
        }
 
-       list_for_each_entry(component, &card->component_dev_list, card_list) {
+       for_each_card_components(card, component) {
                if (component->suspended) {
                        if (component->driver->resume)
                                component->driver->resume(component);
                                        component->driver->num_dapm_routes);
 
        list_add(&dapm->list, &card->dapm_list);
+       /* see for_each_card_components */
        list_add(&component->card_list, &card->component_dev_list);
 
        return 0;