- if (spc & xSPDIF_PCM) {
spc &= (31 << 3); /* Clear PCM mode, set MSB->LSB */
if (format == SND_SOC_DAIFMT_DSP_B
&& inv == SND_SOC_DAIFMT_IB_IF)
spc |= (xPCM_MODE0 << 4);
else
if (format == SND_SOC_DAIFMT_DSP_B
&& inv == SND_SOC_DAIFMT_IB_NF)
spc |= (xPCM_MODE1 << 4);
else
if (format == SND_SOC_DAIFMT_DSP_A
&& inv == SND_SOC_DAIFMT_IB_IF)
spc |= (xPCM_MODE1 << 4);
else
return -EINVAL;
I can't help but feel this would be clearer with a switch statement.
I'm trying to make this look better...
if (spc & xSPDIF_PCM) { spc &= (31 << 3); /* Clear PCM mode, set MSB->LSB */ switch(format){ case SND_SOC_DAIFMT_DSP_B: if (inv == SND_SOC_DAIFMT_IB_IF) spc |= (xPCM_MODE0 << 4);
if (inv == SND_SOC_DAIFMT_IB_NF) spc |= (xPCM_MODE1 << 4); break; case SND_SOC_DAIFMT_DSP_A: if (inv == SND_SOC_DAIFMT_IB_IF) spc |= (xPCM_MODE1 << 4); break; default: return -EINVAL; } }