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

Code Kipper codekipper at gmail.com
Thu Jan 25 01:03:51 PST 2018


On 25 January 2018 at 09:41, Maxime Ripard
<maxime.ripard at free-electrons.com> wrote:
> Hi,
>
> On Wed, Jan 24, 2018 at 03:11:01PM +0100, codekipper at gmail.com wrote:
>> From: Marcus Cooper <codekipper at gmail.com>
>>
>> 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 at gmail.com>
>> ---
>>  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



More information about the linux-arm-kernel mailing list