unsigned int rate)
{
unsigned int nom, hld;
- unsigned long flags, clk_rate;
+ unsigned long clk_rate;
int ret = 0;
u32 reg;
reg |= (hld << IMG_SPDIF_IN_CLKGEN_HLD_SHIFT) &
IMG_SPDIF_IN_CLKGEN_HLD_MASK;
- spin_lock_irqsave(&spdif->lock, flags);
+ guard(spinlock_irqsave)(&spdif->lock);
- if (spdif->active) {
- spin_unlock_irqrestore(&spdif->lock, flags);
+ if (spdif->active)
return -EBUSY;
- }
img_spdif_in_writel(spdif, reg, IMG_SPDIF_IN_CLKGEN);
spdif->single_freq = rate;
- spin_unlock_irqrestore(&spdif->lock, flags);
-
return 0;
}
unsigned int multi_freqs[])
{
unsigned int nom, hld, rate, max_rate = 0;
- unsigned long flags, clk_rate;
+ unsigned long clk_rate;
int i, ret = 0;
u32 reg, trk_reg, temp_regs[IMG_SPDIF_IN_NUM_ACLKGEN];
temp_regs[i] = reg;
}
- spin_lock_irqsave(&spdif->lock, flags);
+ guard(spinlock_irqsave)(&spdif->lock);
- if (spdif->active) {
- spin_unlock_irqrestore(&spdif->lock, flags);
+ if (spdif->active)
return -EBUSY;
- }
trk_reg = spdif->trk << IMG_SPDIF_IN_ACLKGEN_TRK_SHIFT;
spdif->multi_freqs[2] = multi_freqs[2];
spdif->multi_freqs[3] = multi_freqs[3];
- spin_unlock_irqrestore(&spdif->lock, flags);
-
return 0;
}
{
struct snd_soc_dai *cpu_dai = snd_kcontrol_chip(kcontrol);
struct img_spdif_in *spdif = snd_soc_dai_get_drvdata(cpu_dai);
- unsigned long flags;
- spin_lock_irqsave(&spdif->lock, flags);
+ guard(spinlock_irqsave)(&spdif->lock);
if (spdif->multi_freq) {
ucontrol->value.integer.value[0] = spdif->multi_freqs[0];
ucontrol->value.integer.value[1] = spdif->multi_freqs[1];
ucontrol->value.integer.value[2] = 0;
ucontrol->value.integer.value[3] = 0;
}
- spin_unlock_irqrestore(&spdif->lock, flags);
return 0;
}
struct img_spdif_in *spdif = snd_soc_dai_get_drvdata(cpu_dai);
unsigned int multi_freqs[IMG_SPDIF_IN_NUM_ACLKGEN];
bool multi_freq;
- unsigned long flags;
if ((ucontrol->value.integer.value[0] == 0) &&
(ucontrol->value.integer.value[1] == 0) &&
if (multi_freq)
return img_spdif_in_do_clkgen_multi(spdif, multi_freqs);
- spin_lock_irqsave(&spdif->lock, flags);
+ guard(spinlock_irqsave)(&spdif->lock);
- if (spdif->active) {
- spin_unlock_irqrestore(&spdif->lock, flags);
+ if (spdif->active)
return -EBUSY;
- }
spdif->multi_freq = false;
- spin_unlock_irqrestore(&spdif->lock, flags);
-
return 0;
}
struct img_spdif_in *spdif = snd_soc_dai_get_drvdata(cpu_dai);
u32 reg;
int i;
- unsigned long flags;
- spin_lock_irqsave(&spdif->lock, flags);
+ guard(spinlock_irqsave)(&spdif->lock);
reg = img_spdif_in_readl(spdif, IMG_SPDIF_IN_STATUS);
if (reg & IMG_SPDIF_IN_STATUS_LOCK_MASK) {
uc->value.integer.value[0] = 0;
}
- spin_unlock_irqrestore(&spdif->lock, flags);
-
return 0;
}
{
struct snd_soc_dai *cpu_dai = snd_kcontrol_chip(kcontrol);
struct img_spdif_in *spdif = snd_soc_dai_get_drvdata(cpu_dai);
- unsigned long flags;
int i;
u32 reg;
- spin_lock_irqsave(&spdif->lock, flags);
+ guard(spinlock_irqsave)(&spdif->lock);
- if (spdif->active) {
- spin_unlock_irqrestore(&spdif->lock, flags);
+ if (spdif->active)
return -EBUSY;
- }
spdif->trk = ucontrol->value.integer.value[0];
img_spdif_in_aclkgen_writel(spdif, i);
}
- spin_unlock_irqrestore(&spdif->lock, flags);
-
return 0;
}
{
struct snd_soc_dai *cpu_dai = snd_kcontrol_chip(kcontrol);
struct img_spdif_in *spdif = snd_soc_dai_get_drvdata(cpu_dai);
- unsigned long flags;
u32 reg;
- spin_lock_irqsave(&spdif->lock, flags);
+ guard(spinlock_irqsave)(&spdif->lock);
- if (spdif->active) {
- spin_unlock_irqrestore(&spdif->lock, flags);
+ if (spdif->active)
return -EBUSY;
- }
spdif->lock_acquire = ucontrol->value.integer.value[0];
IMG_SPDIF_IN_CTL_LOCKHI_MASK;
img_spdif_in_writel(spdif, reg, IMG_SPDIF_IN_CTL);
- spin_unlock_irqrestore(&spdif->lock, flags);
-
return 0;
}
{
struct snd_soc_dai *cpu_dai = snd_kcontrol_chip(kcontrol);
struct img_spdif_in *spdif = snd_soc_dai_get_drvdata(cpu_dai);
- unsigned long flags;
u32 reg;
- spin_lock_irqsave(&spdif->lock, flags);
+ guard(spinlock_irqsave)(&spdif->lock);
- if (spdif->active) {
- spin_unlock_irqrestore(&spdif->lock, flags);
+ if (spdif->active)
return -EBUSY;
- }
spdif->lock_release = ucontrol->value.integer.value[0];
IMG_SPDIF_IN_CTL_LOCKLO_MASK;
img_spdif_in_writel(spdif, reg, IMG_SPDIF_IN_CTL);
- spin_unlock_irqrestore(&spdif->lock, flags);
-
return 0;
}
static int img_spdif_in_trigger(struct snd_pcm_substream *substream, int cmd,
struct snd_soc_dai *dai)
{
- unsigned long flags;
struct img_spdif_in *spdif = snd_soc_dai_get_drvdata(dai);
int ret = 0;
u32 reg;
- spin_lock_irqsave(&spdif->lock, flags);
+ guard(spinlock_irqsave)(&spdif->lock);
switch (cmd) {
case SNDRV_PCM_TRIGGER_START:
ret = -EINVAL;
}
- spin_unlock_irqrestore(&spdif->lock, flags);
-
return ret;
}