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

Commit f4c05262 authored by Richard Fitzgerald's avatar Richard Fitzgerald Committed by Lee Jones
Browse files

mfd: arizona: Add DT options for max_channels_clocked and PDM speaker config



This patch adds DT settings for the max_channels_clocked, spk_fmt and
spk_mute pdata.

Signed-off-by: default avatarRichard Fitzgerald <rf@opensource.wolfsonmicro.com>
Acked-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
parent 0133d323
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -85,6 +85,24 @@ Optional properties:
    present, the number of values should be less than or equal to the
    number of inputs, unspecified inputs will use the chip default.

  - wlf,max-channels-clocked : The maximum number of channels to be clocked on
    each AIF, useful for I2S systems with multiple data lines being mastered.
    Specify one cell for each AIF to be configured, specify zero for AIFs that
    should be handled normally.
    If present, number of cells must be less than or equal to the number of
    AIFs. If less than the number of AIFs, for cells that have not been
    specified the corresponding AIFs will be treated as default setting.

  - wlf,spk-fmt : PDM speaker data format, must contain 2 cells (OUT5 and OUT6).
    See the datasheet for values.
    The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997,
      wm8998, wm1814)

  - wlf,spk-mute : PDM speaker mute setting, must contain 2 cells (OUT5 and OUT6).
    See the datasheet for values.
    The second cell is ignored for codecs that do not have OUT6 (wm5102, wm8997,
    wm8998, wm1814)

  - DCVDD-supply, MICVDD-supply : Power supplies, only need to be specified if
    they are being externally supplied. As covered in
    Documentation/devicetree/bindings/regulator/regulator.txt
+30 −0
Original line number Diff line number Diff line
@@ -828,6 +828,7 @@ static int arizona_of_get_core_pdata(struct arizona *arizona)
	struct property *prop;
	const __be32 *cur;
	u32 val;
	u32 pdm_val[ARIZONA_MAX_PDM_SPK];
	int ret, i;
	int count = 0;

@@ -884,6 +885,35 @@ static int arizona_of_get_core_pdata(struct arizona *arizona)
		count++;
	}

	count = 0;
	of_property_for_each_u32(arizona->dev->of_node,
				 "wlf,max-channels-clocked",
				 prop, cur, val) {
		if (count == ARRAY_SIZE(pdata->max_channels_clocked))
			break;

		pdata->max_channels_clocked[count] = val;
		count++;
	}

	ret = of_property_read_u32_array(arizona->dev->of_node,
					 "wlf,spk-fmt",
					 pdm_val,
					 ARRAY_SIZE(pdm_val));

	if (ret >= 0)
		for (count = 0; count < ARRAY_SIZE(pdata->spk_fmt); ++count)
			pdata->spk_fmt[count] = pdm_val[count];

	ret = of_property_read_u32_array(arizona->dev->of_node,
					 "wlf,spk-mute",
					 pdm_val,
					 ARRAY_SIZE(pdm_val));

	if (ret >= 0)
		for (count = 0; count < ARRAY_SIZE(pdata->spk_mute); ++count)
			pdata->spk_mute[count] = pdm_val[count];

	return 0;
}