Lines Matching +full:bitclock +full:- +full:inversion
1 // SPDX-License-Identifier: GPL-2.0
46 #define CR_SCK_MASTER (1 << 15) /* bitclock master bit */
56 #define CR_CKDIV_MASK (7 << CR_CKDIV_SHIFT) /* bitclock divider */
62 #define SSIREG(reg) (*(unsigned long *)(ssi->mmio + (reg)))
86 * track usage of the SSI; it is simplex-only so prevent attempts of
92 struct ssi_priv *ssi = &ssi_cpu_data[dai->id]; in ssi_startup()
93 if (ssi->inuse) { in ssi_startup()
95 return -EBUSY; in ssi_startup()
97 ssi->inuse = 1; in ssi_startup()
104 struct ssi_priv *ssi = &ssi_cpu_data[dai->id]; in ssi_shutdown()
106 ssi->inuse = 0; in ssi_shutdown()
112 struct ssi_priv *ssi = &ssi_cpu_data[dai->id]; in ssi_trigger()
122 return -EINVAL; in ssi_trigger()
132 struct ssi_priv *ssi = &ssi_cpu_data[dai->id]; in ssi_hw_params()
137 bits = params->msbits; in ssi_hw_params()
138 recv = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) ? 0 : 1; in ssi_hw_params()
153 return -EINVAL; in ssi_hw_params()
155 ssicr |= ((channels >> 1) - 1) << CR_CHNL_SHIFT; in ssi_hw_params()
170 return -EINVAL; in ssi_hw_params()
180 * Waiting for ASoC to get TDM support ;-) in ssi_hw_params()
199 return -EINVAL; in ssi_hw_params()
211 struct ssi_priv *ssi = &ssi_cpu_data[cpu_dai->id]; in ssi_set_sysclk()
213 ssi->sysclk = freq; in ssi_set_sysclk()
219 * This divider is used to generate the SSI_SCK (I2S bitclock) from the
224 struct ssi_priv *ssi = &ssi_cpu_data[dai->id]; in ssi_set_clkdiv()
239 return -EINVAL; in ssi_set_clkdiv()
247 struct ssi_priv *ssi = &ssi_cpu_data[dai->id]; in ssi_set_fmt()
266 return -EINVAL; in ssi_set_fmt()
290 pr_debug("ssi: invalid inversion\n"); in ssi_set_fmt()
291 return -EINVAL; in ssi_set_fmt()
308 return -EINVAL; in ssi_set_fmt()
324 /* the SSI can do 8-32 bit samples, with 8 possible channels */
344 .name = "ssi-dai.0",
361 .name = "ssi-dai.1",
380 .name = "sh4-ssi",
386 return devm_snd_soc_register_component(&pdev->dev, &sh4_ssi_component, in sh4_soc_dai_probe()
393 .name = "sh4-ssi-dai",