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

Commit ababd52c authored by Ramprasad Katkam's avatar Ramprasad Katkam
Browse files

asoc: bolero: set slew rate for tx & rx soundwire pads



Set recommended slew rate settings for tx and rx soundwire
pads.

Change-Id: I5c9803465f3b56af74f36b035225ede428705cbb
Signed-off-by: default avatarRamprasad Katkam <katkam@codeaurora.org>
parent 438488dc
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -859,6 +859,8 @@ static int bolero_probe(struct platform_device *pdev)
	struct bolero_priv *priv;
	u32 num_macros = 0;
	int ret;
	u32 slew_reg1 = 0, slew_reg2 = 0;
	char __iomem *slew_io_base1 = NULL, *slew_io_base2 = NULL;

	priv = devm_kzalloc(&pdev->dev, sizeof(struct bolero_priv),
			    GFP_KERNEL);
@@ -903,6 +905,31 @@ static int bolero_probe(struct platform_device *pdev)
	dev_set_drvdata(&pdev->dev, priv);
	mutex_init(&priv->io_lock);
	mutex_init(&priv->clk_lock);

	ret = of_property_read_u32(pdev->dev.of_node, "slew_rate_reg1",
				   &slew_reg1);
	ret |= of_property_read_u32(pdev->dev.of_node, "slew_rate_reg2",
				   &slew_reg2);

	if (!ret) {
		slew_io_base1 = devm_ioremap(&pdev->dev, slew_reg1, 0x4);
		if (!slew_io_base1) {
			dev_err(&pdev->dev, "%s: ioremap failed for slew reg 1\n",
				__func__);
			return -ENOMEM;
		}

		slew_io_base2 = devm_ioremap(&pdev->dev, slew_reg2, 0x4);
		if (!slew_io_base2) {
			dev_err(&pdev->dev, "%s: ioremap failed for slew reg 2\n",
				__func__);
			return -ENOMEM;
		}

		/* update slew rate for tx/rx swr interface */
		iowrite32(0x3333, slew_io_base1);
		iowrite32(0xF, slew_io_base2);
	}
	INIT_WORK(&priv->bolero_add_child_devices_work,
		  bolero_add_child_devices);
	schedule_work(&priv->bolero_add_child_devices_work);