From da782e158984d7639610591729808ca9b8572f2b Mon Sep 17 00:00:00 2001 From: Vatsal Bucha Date: Tue, 15 Jun 2021 15:42:15 +0530 Subject: [PATCH] asoc: lpass-cdc: Update swr pdev initialize order During sound card register init call, if swr pdev is not initialized yet respective soundwire port config is not updated to soundwire controller device. In macro drivers, update swr pdev into macro private data prior to platform device add. Change-Id: Ifa67471cfc7a10b102b573df6285e598bb0b5e5e Signed-off-by: Vatsal Bucha --- asoc/codecs/bolero/rx-macro.c | 21 ++++++++++---------- asoc/codecs/bolero/tx-macro.c | 21 ++++++++++---------- asoc/codecs/bolero/va-macro.c | 21 ++++++++++---------- asoc/codecs/bolero/wsa-macro.c | 35 +++++++++++++++++----------------- 4 files changed, 47 insertions(+), 51 deletions(-) diff --git a/asoc/codecs/bolero/rx-macro.c b/asoc/codecs/bolero/rx-macro.c index e8cfa5ff4693..3e4eaa0a5655 100644 --- a/asoc/codecs/bolero/rx-macro.c +++ b/asoc/codecs/bolero/rx-macro.c @@ -4115,17 +4115,7 @@ static void rx_macro_add_child_devices(struct work_struct *work) __func__, ctrl_num); goto fail_pdev_add; } - } - ret = platform_device_add(pdev); - if (ret) { - dev_err(&pdev->dev, - "%s: Cannot add platform device\n", - __func__); - goto fail_pdev_add; - } - - if (rx_swr_master_node) { temp = krealloc(swr_ctrl_data, (ctrl_num + 1) * sizeof( struct rx_swr_ctrl_data), @@ -4138,10 +4128,19 @@ static void rx_macro_add_child_devices(struct work_struct *work) swr_ctrl_data[ctrl_num].rx_swr_pdev = pdev; ctrl_num++; dev_dbg(&pdev->dev, - "%s: Added soundwire ctrl device(s)\n", + "%s: Adding soundwire ctrl device(s)\n", __func__); rx_priv->swr_ctrl_data = swr_ctrl_data; } + + ret = platform_device_add(pdev); + if (ret) { + dev_err(&pdev->dev, + "%s: Cannot add platform device\n", + __func__); + goto fail_pdev_add; + } + if (rx_priv->child_count < RX_MACRO_CHILD_DEVICES_MAX) rx_priv->pdev_child_devices[ rx_priv->child_count++] = pdev; diff --git a/asoc/codecs/bolero/tx-macro.c b/asoc/codecs/bolero/tx-macro.c index 9671f55a5d65..b70f80187f30 100644 --- a/asoc/codecs/bolero/tx-macro.c +++ b/asoc/codecs/bolero/tx-macro.c @@ -3294,17 +3294,7 @@ static void tx_macro_add_child_devices(struct work_struct *work) __func__, ctrl_num); goto fail_pdev_add; } - } - ret = platform_device_add(pdev); - if (ret) { - dev_err(&pdev->dev, - "%s: Cannot add platform device\n", - __func__); - goto fail_pdev_add; - } - - if (tx_swr_master_node) { temp = krealloc(swr_ctrl_data, (ctrl_num + 1) * sizeof( struct tx_macro_swr_ctrl_data), @@ -3317,10 +3307,19 @@ static void tx_macro_add_child_devices(struct work_struct *work) swr_ctrl_data[ctrl_num].tx_swr_pdev = pdev; ctrl_num++; dev_dbg(&pdev->dev, - "%s: Added soundwire ctrl device(s)\n", + "%s: Adding soundwire ctrl device(s)\n", __func__); tx_priv->swr_ctrl_data = swr_ctrl_data; } + + ret = platform_device_add(pdev); + if (ret) { + dev_err(&pdev->dev, + "%s: Cannot add platform device\n", + __func__); + goto fail_pdev_add; + } + if (tx_priv->child_count < TX_MACRO_CHILD_DEVICES_MAX) tx_priv->pdev_child_devices[ tx_priv->child_count++] = pdev; diff --git a/asoc/codecs/bolero/va-macro.c b/asoc/codecs/bolero/va-macro.c index 066d86caa217..7547f486248e 100644 --- a/asoc/codecs/bolero/va-macro.c +++ b/asoc/codecs/bolero/va-macro.c @@ -2944,17 +2944,7 @@ static void va_macro_add_child_devices(struct work_struct *work) __func__, ctrl_num); goto fail_pdev_add; } - } - ret = platform_device_add(pdev); - if (ret) { - dev_err(&pdev->dev, - "%s: Cannot add platform device\n", - __func__); - goto fail_pdev_add; - } - - if (va_swr_master_node) { temp = krealloc(swr_ctrl_data, (ctrl_num + 1) * sizeof( struct va_macro_swr_ctrl_data), @@ -2967,10 +2957,19 @@ static void va_macro_add_child_devices(struct work_struct *work) swr_ctrl_data[ctrl_num].va_swr_pdev = pdev; ctrl_num++; dev_dbg(&pdev->dev, - "%s: Added soundwire ctrl device(s)\n", + "%s: Adding soundwire ctrl device(s)\n", __func__); va_priv->swr_ctrl_data = swr_ctrl_data; } + + ret = platform_device_add(pdev); + if (ret) { + dev_err(&pdev->dev, + "%s: Cannot add platform device\n", + __func__); + goto fail_pdev_add; + } + if (va_priv->child_count < VA_MACRO_CHILD_DEVICES_MAX) va_priv->pdev_child_devices[ va_priv->child_count++] = pdev; diff --git a/asoc/codecs/bolero/wsa-macro.c b/asoc/codecs/bolero/wsa-macro.c index b28df53fc563..b48ea6dc2b35 100644 --- a/asoc/codecs/bolero/wsa-macro.c +++ b/asoc/codecs/bolero/wsa-macro.c @@ -3146,6 +3146,23 @@ static void wsa_macro_add_child_devices(struct work_struct *work) __func__, ctrl_num); goto fail_pdev_add; } + + temp = krealloc(swr_ctrl_data, + (ctrl_num + 1) * sizeof( + struct wsa_macro_swr_ctrl_data), + GFP_KERNEL); + if (!temp) { + dev_err(&pdev->dev, "out of memory\n"); + ret = -ENOMEM; + goto fail_pdev_add; + } + swr_ctrl_data = temp; + swr_ctrl_data[ctrl_num].wsa_swr_pdev = pdev; + ctrl_num++; + dev_dbg(&pdev->dev, + "%s: Adding soundwire ctrl device(s)\n", + __func__); + wsa_priv->swr_ctrl_data = swr_ctrl_data; } ret = platform_device_add(pdev); @@ -3156,24 +3173,6 @@ static void wsa_macro_add_child_devices(struct work_struct *work) goto fail_pdev_add; } - if (!strcmp(node->name, "wsa_swr_master")) { - temp = krealloc(swr_ctrl_data, - (ctrl_num + 1) * sizeof( - struct wsa_macro_swr_ctrl_data), - GFP_KERNEL); - if (!temp) { - dev_err(&pdev->dev, "out of memory\n"); - ret = -ENOMEM; - goto err; - } - swr_ctrl_data = temp; - swr_ctrl_data[ctrl_num].wsa_swr_pdev = pdev; - ctrl_num++; - dev_dbg(&pdev->dev, - "%s: Added soundwire ctrl device(s)\n", - __func__); - wsa_priv->swr_ctrl_data = swr_ctrl_data; - } if (wsa_priv->child_count < WSA_MACRO_CHILD_DEVICES_MAX) wsa_priv->pdev_child_devices[ wsa_priv->child_count++] = pdev;