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

Commit 6f4d2b31 authored by Fabio Estevam's avatar Fabio Estevam Committed by Mark Brown
Browse files

ASoC: sgtl5000: Do a sanity check on SYS_MCLK



According to the sgtl5000 datasheet the valid range for SYS_MCLK is from 8 to
27 MHz.

Add a sanity check prior to enabling SYS_MCLK.

Signed-off-by: default avatarFabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent fa558d01
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -1445,6 +1445,7 @@ static int sgtl5000_i2c_probe(struct i2c_client *client,
{
	struct sgtl5000_priv *sgtl5000;
	int ret, reg, rev;
	unsigned int mclk;

	sgtl5000 = devm_kzalloc(&client->dev, sizeof(struct sgtl5000_priv),
								GFP_KERNEL);
@@ -1468,6 +1469,14 @@ static int sgtl5000_i2c_probe(struct i2c_client *client,
		return ret;
	}

	/* SGTL5000 SYS_MCLK should be between 8 and 27 MHz */
	mclk = clk_get_rate(sgtl5000->mclk);
	if (mclk < 8000000 || mclk > 27000000) {
		dev_err(&client->dev, "Invalid SYS_CLK frequency: %u.%03uMHz\n",
			mclk / 1000000, mclk / 1000 % 1000);
		return -EINVAL;
	}

	ret = clk_prepare_enable(sgtl5000->mclk);
	if (ret)
		return ret;