if (adev) {
                snprintf(byt_rt5640_codec_name, sizeof(byt_rt5640_codec_name),
                         "i2c-%s", acpi_dev_name(adev));
-               put_device(&adev->dev);
                byt_rt5640_dais[dai_index].codecs->name = byt_rt5640_codec_name;
        } else {
                dev_err(dev, "Error cannot find '%s' dev\n", mach->id);
                return -ENXIO;
        }
 
+       codec_dev = acpi_get_first_physical_node(adev);
+       acpi_dev_put(adev);
+       if (!codec_dev)
+               return -EPROBE_DEFER;
+       priv->codec_dev = get_device(codec_dev);
+
        /*
         * swap SSP0 if bytcr is detected
         * (will be overridden if DMI quirk is detected)
                byt_rt5640_quirk = quirk_override;
        }
 
-       codec_dev = acpi_get_first_physical_node(adev);
-       if (!codec_dev)
-               return -EPROBE_DEFER;
-       priv->codec_dev = get_device(codec_dev);
-
        if (byt_rt5640_quirk & BYT_RT5640_JD_HP_ELITEP_1000G2) {
                acpi_dev_add_driver_gpios(ACPI_COMPANION(priv->codec_dev),
                                          byt_rt5640_hp_elitepad_1000g2_gpios);