Message ID | 1444320760-21936-2-git-send-email-alexander.deucher@amd.com (mailing list archive) |
---|---|
State | Accepted |
Commit | ab57b8e90c658a72944c48a81a1352e61e84db02 |
Headers | show |
On Thu, Oct 08, 2015 at 12:12:34PM -0400, Alex Deucher wrote: > From: Maruthi Srinivas Bayyavarapu <Maruthi.Bayyavarapu@amd.com> > > DW i2s controller's master/slave config can be read from a > read-only register. Machine driver can try to set a master/slave > format on cpu-dai using 'set_fmt' of dai ops. A check is added to > verify codec is master when dwc is slave and vice-versa. > > Signed-off-by: Maruthi Bayyavarapu <maruthi.bayyavarapu@amd.com> > --- I can't apply this, you've not added a Signed-off-by for code sent by someone else as covered in SubmittingPatches. Please also try to use subject lines matching the style for the subsystem.
On Thu, Oct 22, 2015 at 10:56 AM, Mark Brown <broonie@kernel.org> wrote: > On Thu, Oct 08, 2015 at 12:12:34PM -0400, Alex Deucher wrote: >> From: Maruthi Srinivas Bayyavarapu <Maruthi.Bayyavarapu@amd.com> >> >> DW i2s controller's master/slave config can be read from a >> read-only register. Machine driver can try to set a master/slave >> format on cpu-dai using 'set_fmt' of dai ops. A check is added to >> verify codec is master when dwc is slave and vice-versa. >> >> Signed-off-by: Maruthi Bayyavarapu <maruthi.bayyavarapu@amd.com> >> --- > > I can't apply this, you've not added a Signed-off-by for code sent by > someone else as covered in SubmittingPatches. > > Please also try to use subject lines matching the style for the > subsystem. I'll resend with these fixed up. Thanks. Alex
diff --git a/sound/soc/dwc/designware_i2s.c b/sound/soc/dwc/designware_i2s.c index 3a52f82..f427325 100644 --- a/sound/soc/dwc/designware_i2s.c +++ b/sound/soc/dwc/designware_i2s.c @@ -341,12 +341,43 @@ static int dw_i2s_trigger(struct snd_pcm_substream *substream, return ret; } +static int dw_i2s_set_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt) +{ + struct dw_i2s_dev *dev = snd_soc_dai_get_drvdata(cpu_dai); + int ret = 0; + + switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { + case SND_SOC_DAIFMT_CBM_CFM: + if (dev->capability & DW_I2S_SLAVE) + ret = 0; + else + ret = -EINVAL; + break; + case SND_SOC_DAIFMT_CBS_CFS: + if (dev->capability & DW_I2S_MASTER) + ret = 0; + else + ret = -EINVAL; + break; + case SND_SOC_DAIFMT_CBM_CFS: + case SND_SOC_DAIFMT_CBS_CFM: + ret = -EINVAL; + break; + default: + dev_dbg(dev->dev, "dwc : Invalid master/slave format\n"); + ret = -EINVAL; + break; + } + return ret; +} + static struct snd_soc_dai_ops dw_i2s_dai_ops = { .startup = dw_i2s_startup, .shutdown = dw_i2s_shutdown, .hw_params = dw_i2s_hw_params, .prepare = dw_i2s_prepare, .trigger = dw_i2s_trigger, + .set_fmt = dw_i2s_set_fmt, }; static const struct snd_soc_component_driver dw_i2s_component = {