Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit da782e15 authored by Vatsal Bucha's avatar Vatsal Bucha
Browse files

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: default avatarVatsal Bucha <vbucha@codeaurora.org>
parent 2ffb30af
Loading
Loading
Loading
Loading
+10 −11
Original line number Diff line number Diff line
@@ -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;
+10 −11
Original line number Diff line number Diff line
@@ -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;
+10 −11
Original line number Diff line number Diff line
@@ -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;
+11 −12
Original line number Diff line number Diff line
@@ -3146,17 +3146,7 @@ static void wsa_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 (!strcmp(node->name, "wsa_swr_master")) {
			temp = krealloc(swr_ctrl_data,
					(ctrl_num + 1) * sizeof(
					struct wsa_macro_swr_ctrl_data),
@@ -3164,16 +3154,25 @@ static void wsa_macro_add_child_devices(struct work_struct *work)
			if (!temp) {
				dev_err(&pdev->dev, "out of memory\n");
				ret = -ENOMEM;
				goto err;
				goto fail_pdev_add;
			}
			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",
				"%s: Adding soundwire ctrl device(s)\n",
				__func__);
			wsa_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 (wsa_priv->child_count < WSA_MACRO_CHILD_DEVICES_MAX)
			wsa_priv->pdev_child_devices[
					wsa_priv->child_count++] = pdev;