Unverified Commit 5d34887e authored by John Watts's avatar John Watts Committed by Mark Brown
Browse files

ASoC: wm8782: Use wlf,fsampen device tree property



The wm8782 supports rates 96kHz and 192kHz as long as the hardware
is configured properly. Allow this to be specified in the device tree.

Signed-off-by: default avatarJohn Watts <contact@jookia.org>
Acked-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230918131532.2257615-3-contact@jookia.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 00524a84
Loading
Loading
Loading
Loading
+22 −3
Original line number Diff line number Diff line
@@ -119,8 +119,9 @@ static const struct snd_soc_component_driver soc_component_dev_wm8782 = {
static int wm8782_probe(struct platform_device *pdev)
{
	struct device *dev = &pdev->dev;
	struct device_node *np = dev->of_node;
	struct wm8782_priv *priv;
	int ret, i;
	int ret, i, fsampen;

	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
	if (!priv)
@@ -136,8 +137,26 @@ static int wm8782_probe(struct platform_device *pdev)
	if (ret < 0)
		return ret;

	/* For configurations with FSAMPEN=0 */
	// Assume lowest value by default to avoid inadvertent overclocking
	fsampen = 0;

	if (np)
		of_property_read_u32(np, "wlf,fsampen", &fsampen);

	switch (fsampen) {
	case 0:
		priv->max_rate = 48000;
		break;
	case 1:
		priv->max_rate = 96000;
		break;
	case 2:
		priv->max_rate = 192000;
		break;
	default:
		dev_err(dev, "Invalid wlf,fsampen value");
		return -EINVAL;
	}

	return devm_snd_soc_register_component(&pdev->dev,
			&soc_component_dev_wm8782, &wm8782_dai, 1);