Re: [PATCH 3/3] ASoC: sun4i-i2s: Add regmap field to sign extend sample

From: Code Kipper
Date: Thu Jan 25 2018 - 04:04:01 EST


On 25 January 2018 at 09:41, Maxime Ripard
<maxime.ripard@xxxxxxxxxxxxxxxxxx> wrote:
> Hi,
>
> On Wed, Jan 24, 2018 at 03:11:01PM +0100, codekipper@xxxxxxxxx wrote:
>> From: Marcus Cooper <codekipper@xxxxxxxxx>
>>
>> On the newer SoCs this is set by default to transfer a 0 after
>> each sample in each slot. Add the regmap field to configure this
>> and set it so that it pads the sample with 0s.
>>
>> Signed-off-by: Marcus Cooper <codekipper@xxxxxxxxx>
>> ---
>> sound/soc/sunxi/sun4i-i2s.c | 15 +++++++++++++++
>> 1 file changed, 15 insertions(+)
>>
>> diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
>> index 626679057d0f..9fda1240b717 100644
>> --- a/sound/soc/sunxi/sun4i-i2s.c
>> +++ b/sound/soc/sunxi/sun4i-i2s.c
>> @@ -139,6 +139,7 @@
>> * @field_fmt_bclk: regmap field to set clk polarity.
>> * @field_fmt_lrclk: regmap field to set frame polarity.
>> * @field_fmt_mode: regmap field to set the operational mode.
>> + * @field_fmt_sext: regmap field to set the sign extension.
>> * @field_txchanmap: location of the tx channel mapping register.
>> * @field_rxchanmap: location of the rx channel mapping register.
>> * @field_txchansel: location of the tx channel select bit fields.
>> @@ -164,6 +165,7 @@ struct sun4i_i2s_quirks {
>> struct reg_field field_fmt_bclk;
>> struct reg_field field_fmt_lrclk;
>> struct reg_field field_fmt_mode;
>> + struct reg_field field_fmt_sext;
>> struct reg_field field_txchanmap;
>> struct reg_field field_rxchanmap;
>> struct reg_field field_txchansel;
>> @@ -188,6 +190,7 @@ struct sun4i_i2s {
>> struct regmap_field *field_fmt_bclk;
>> struct regmap_field *field_fmt_lrclk;
>> struct regmap_field *field_fmt_mode;
>> + struct regmap_field *field_fmt_sext;
>> struct regmap_field *field_txchanmap;
>> struct regmap_field *field_rxchanmap;
>> struct regmap_field *field_txchansel;
>> @@ -358,6 +361,9 @@ static int sun4i_i2s_set_clk_rate(struct snd_soc_dai *dai,
>> SUN8I_I2S_FMT0_LRCK_PERIOD_MASK,
>> SUN8I_I2S_FMT0_LRCK_PERIOD(word_size));
>>
>> + /* Set sign extension to pad out LSB with 0 */
>> + regmap_field_write(i2s->field_fmt_sext, 0);
>> +
>
> Your commit log seems to suggest that it's only relevant for the newer
> SoCs (which ones?), yet you enable it for all the supported
> ones. Either the code or the commit log should be adjusted to be
> consistent with the other.
ACK
Thanks,
CK
>
> Maxime
>
> --
> Maxime Ripard, Free Electrons
> Embedded Linux and Kernel engineering
> http://free-electrons.com