ASoC: Intel: boards: use software node API in Atom boards
[platform/kernel/linux-starfive.git] / sound / soc / intel / boards / bytcr_rt5651.c
index cc1505e..e94c912 100644 (file)
@@ -528,10 +528,13 @@ static const struct dmi_system_id byt_rt5651_quirk_table[] = {
  * Note this MUST be called before snd_soc_register_card(), so that the props
  * are in place before the codec component driver's probe function parses them.
  */
-static int byt_rt5651_add_codec_device_props(struct device *i2c_dev)
+static int byt_rt5651_add_codec_device_props(struct device *i2c_dev,
+                                            struct byt_rt5651_private *priv)
 {
        struct property_entry props[MAX_NO_PROPS] = {};
+       struct fwnode_handle *fwnode;
        int cnt = 0;
+       int ret;
 
        props[cnt++] = PROPERTY_ENTRY_U32("realtek,jack-detect-source",
                                BYT_RT5651_JDSRC(byt_rt5651_quirk));
@@ -548,7 +551,17 @@ static int byt_rt5651_add_codec_device_props(struct device *i2c_dev)
        if (byt_rt5651_quirk & BYT_RT5651_JD_NOT_INV)
                props[cnt++] = PROPERTY_ENTRY_BOOL("realtek,jack-detect-not-inverted");
 
-       return device_add_properties(i2c_dev, props);
+       fwnode = fwnode_create_software_node(props, NULL);
+       if (IS_ERR(fwnode)) {
+               /* put_device(i2c_dev) is handled in caller */
+               return PTR_ERR(fwnode);
+       }
+
+       ret = device_add_software_node(i2c_dev, to_software_node(fwnode));
+
+       fwnode_handle_put(fwnode);
+
+       return ret;
 }
 
 static int byt_rt5651_init(struct snd_soc_pcm_runtime *runtime)
@@ -995,7 +1008,7 @@ static int snd_byt_rt5651_mc_probe(struct platform_device *pdev)
        }
 
        /* Must be called before register_card, also see declaration comment. */
-       ret_val = byt_rt5651_add_codec_device_props(codec_dev);
+       ret_val = byt_rt5651_add_codec_device_props(codec_dev, priv);
        if (ret_val)
                goto err_device;
 
@@ -1125,7 +1138,7 @@ static int snd_byt_rt5651_mc_probe(struct platform_device *pdev)
        return ret_val;
 
 err:
-       device_remove_properties(priv->codec_dev);
+       device_remove_software_node(priv->codec_dev);
 err_device:
        put_device(priv->codec_dev);
        return ret_val;
@@ -1136,7 +1149,7 @@ static int snd_byt_rt5651_mc_remove(struct platform_device *pdev)
        struct snd_soc_card *card = platform_get_drvdata(pdev);
        struct byt_rt5651_private *priv = snd_soc_card_get_drvdata(card);
 
-       device_remove_properties(priv->codec_dev);
+       device_remove_software_node(priv->codec_dev);
        put_device(priv->codec_dev);
        return 0;
 }