const char *platform_name;
        struct cht_mc_private *drv;
        struct acpi_device *adev;
+       struct device *codec_dev;
        bool sof_parent;
        bool found = false;
        bool is_bytcr = false;
                         "i2c-%s", acpi_dev_name(adev));
                cht_dailink[dai_index].codecs->name = cht_rt5645_codec_name;
        }
+       /* acpi_get_first_physical_node() returns a borrowed ref, no need to deref */
+       codec_dev = acpi_get_first_physical_node(adev);
        acpi_dev_put(adev);
+       if (!codec_dev)
+               return -EPROBE_DEFER;
+
+       snd_soc_card_chtrt5645.components = rt5645_components(codec_dev);
+       snd_soc_card_chtrt5650.components = rt5645_components(codec_dev);
 
        /*
         * swap SSP0 if bytcr is detected