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: John Watts <contact@jookia.org> Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com> Link: https://lore.kernel.org/r/20230918131532.2257615-3-contact@jookia.org Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
00524a8415
commit
5d34887eab
|
@ -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 */
|
||||
priv->max_rate = 48000;
|
||||
// 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);
|
||||
|
|
Loading…
Reference in New Issue