| /kernel/linux/linux-5.10/sound/soc/stm/ |
| D | stm32_sai_sub.c | 3 * STM32 ALSA SoC Digital Audio Interface (SAI) driver. 58 #define STM_SAI_HAS_EXT_SYNC(x) (!STM_SAI_IS_F4(sai->pdata)) 67 * struct stm32_sai_sub_data - private data of SAI sub block (block A or B) 69 * @regmap: SAI register map pointer 70 * @regmap_config: SAI sub block register map configuration pointer 75 * @pdata: SAI block parent data pointer 77 * @sai_ck: kernel clock feeding the SAI clock generator 78 * @sai_mclk: master clock from SAI mclk provider 79 * @phys_addr: SAI registers physical base address 80 * @mclk_rate: SAI block master clock frequency (Hz). set at init [all …]
|
| D | stm32_sai.c | 3 * STM32 ALSA SoC Digital Audio Interface (SAI) driver. 40 { .compatible = "st,stm32f4-sai", .data = (void *)&stm32_sai_conf_f4 }, 41 { .compatible = "st,stm32h7-sai", .data = (void *)&stm32_sai_conf_h7 }, 47 struct stm32_sai_data *sai = dev_get_drvdata(dev); in stm32_sai_pclk_disable() local 49 clk_disable_unprepare(sai->pclk); in stm32_sai_pclk_disable() 56 struct stm32_sai_data *sai = dev_get_drvdata(dev); in stm32_sai_pclk_enable() local 59 ret = clk_prepare_enable(sai->pclk); in stm32_sai_pclk_enable() 61 dev_err(&sai->pdev->dev, "failed to enable clock: %d\n", ret); in stm32_sai_pclk_enable() 68 static int stm32_sai_sync_conf_client(struct stm32_sai_data *sai, int synci) in stm32_sai_sync_conf_client() argument 73 ret = stm32_sai_pclk_enable(&sai->pdev->dev); in stm32_sai_sync_conf_client() [all …]
|
| D | stm32_sai.h | 3 * STM32 ALSA SoC Digital Audio Interface (SAI) driver. 11 /******************** SAI Register Map **************************************/ 233 /* Registers below apply to SAI version 2.1 and more */ 252 /* SAI version numbers are 1.x for F4. Major version number set to 1 for F4 */ 268 * struct stm32_sai_conf - SAI configuration 269 * @version: SAI version 270 * @fifo_size: SAI fifo size as words number 271 * @has_spdif_pdm: SAI S/PDIF and PDM features support flag 280 * struct stm32_sai_data - private data of SAI instance driver 283 * @pclk: SAI bus clock [all …]
|
| D | Makefile | 2 # SAI 3 snd-soc-stm32-sai-sub-objs := stm32_sai_sub.o 4 obj-$(CONFIG_SND_SOC_STM32_SAI) += snd-soc-stm32-sai-sub.o 6 snd-soc-stm32-sai-objs := stm32_sai.o 7 obj-$(CONFIG_SND_SOC_STM32_SAI) += snd-soc-stm32-sai.o
|
| D | Kconfig | 5 tristate "STM32 SAI interface (Serial Audio Interface) support" 13 Say Y if you want to enable SAI for STM32
|
| /kernel/linux/linux-4.19/sound/soc/stm/ |
| D | stm32_sai_sub.c | 2 * STM32 ALSA SoC Digital Audio Interface (SAI) driver. 66 #define STM_SAI_HAS_EXT_SYNC(x) (!STM_SAI_IS_F4(sai->pdata)) 72 * struct stm32_sai_sub_data - private data of SAI sub block (block A or B) 74 * @regmap: SAI register map pointer 75 * @regmap_config: SAI sub block register map configuration pointer 80 * @pdata: SAI block parent data pointer 82 * @sai_ck: kernel clock feeding the SAI clock generator 83 * @phys_addr: SAI registers physical base address 84 * @mclk_rate: SAI block master clock frequency (Hz). set at init 85 * @id: SAI sub block id corresponding to sub-block A or B [all …]
|
| D | stm32_sai.c | 2 * STM32 ALSA SoC Digital Audio Interface (SAI) driver. 42 { .compatible = "st,stm32f4-sai", .data = (void *)&stm32_sai_conf_f4 }, 43 { .compatible = "st,stm32h7-sai", .data = (void *)&stm32_sai_conf_h7 }, 47 static int stm32_sai_sync_conf_client(struct stm32_sai_data *sai, int synci) in stm32_sai_sync_conf_client() argument 52 ret = clk_prepare_enable(sai->pclk); in stm32_sai_sync_conf_client() 54 dev_err(&sai->pdev->dev, "failed to enable clock: %d\n", ret); in stm32_sai_sync_conf_client() 58 writel_relaxed(FIELD_PREP(SAI_GCR_SYNCIN_MASK, (synci - 1)), sai->base); in stm32_sai_sync_conf_client() 60 clk_disable_unprepare(sai->pclk); in stm32_sai_sync_conf_client() 65 static int stm32_sai_sync_conf_provider(struct stm32_sai_data *sai, int synco) in stm32_sai_sync_conf_provider() argument 71 ret = clk_prepare_enable(sai->pclk); in stm32_sai_sync_conf_provider() [all …]
|
| D | Makefile | 2 # SAI 3 snd-soc-stm32-sai-sub-objs := stm32_sai_sub.o 4 obj-$(CONFIG_SND_SOC_STM32_SAI) += snd-soc-stm32-sai-sub.o 6 snd-soc-stm32-sai-objs := stm32_sai.o 7 obj-$(CONFIG_SND_SOC_STM32_SAI) += snd-soc-stm32-sai.o
|
| D | stm32_sai.h | 2 * STM32 ALSA SoC Digital Audio Interface (SAI) driver. 21 /******************** SAI Register Map **************************************/ 249 * struct stm32_sai_conf - SAI configuration 250 * @version: SAI version 251 * @has_spdif: SAI S/PDIF support flag 259 * struct stm32_sai_data - private data of SAI instance driver 262 * @pclk: SAI bus clock 263 * @clk_x8k: SAI parent clock for sampling frequencies multiple of 8kHz 264 * @clk_x11k: SAI parent clock for sampling frequencies multiple of 11kHz 266 * @irq: SAI interrupt line [all …]
|
| D | Kconfig | 4 tristate "STM32 SAI interface (Serial Audio Interface) support" 11 Say Y if you want to enable SAI for STM32
|
| /kernel/linux/linux-5.10/sound/soc/fsl/ |
| D | fsl_sai.c | 3 // Freescale ALSA SoC Digital Audio Interface (SAI) driver. 43 * SAI supports synchronous mode using bit/frame clocks of either Transmitter's 47 * @sai: SAI context 50 static inline bool fsl_sai_dir_is_synced(struct fsl_sai *sai, int dir) in fsl_sai_dir_is_synced() argument 55 return !sai->synchronous[dir] && sai->synchronous[adir]; in fsl_sai_dir_is_synced() 60 struct fsl_sai *sai = (struct fsl_sai *)devid; in fsl_sai_isr() local 61 unsigned int ofs = sai->soc_data->reg_offset; in fsl_sai_isr() 62 struct device *dev = &sai->pdev->dev; in fsl_sai_isr() 74 regmap_read(sai->regmap, FSL_SAI_TCSR(ofs), &xcsr); in fsl_sai_isr() 104 regmap_write(sai->regmap, FSL_SAI_TCSR(ofs), flags | xcsr); in fsl_sai_isr() [all …]
|
| D | fsl_sai.h | 16 /* SAI Register Map Register */ 17 #define FSL_SAI_VERID 0x00 /* SAI Version ID Register */ 18 #define FSL_SAI_PARAM 0x04 /* SAI Parameter Register */ 19 #define FSL_SAI_TCSR(ofs) (0x00 + ofs) /* SAI Transmit Control */ 20 #define FSL_SAI_TCR1(ofs) (0x04 + ofs) /* SAI Transmit Configuration 1 */ 21 #define FSL_SAI_TCR2(ofs) (0x08 + ofs) /* SAI Transmit Configuration 2 */ 22 #define FSL_SAI_TCR3(ofs) (0x0c + ofs) /* SAI Transmit Configuration 3 */ 23 #define FSL_SAI_TCR4(ofs) (0x10 + ofs) /* SAI Transmit Configuration 4 */ 24 #define FSL_SAI_TCR5(ofs) (0x14 + ofs) /* SAI Transmit Configuration 5 */ 25 #define FSL_SAI_TDR0 0x20 /* SAI Transmit Data 0 */ [all …]
|
| /kernel/linux/linux-4.19/sound/soc/fsl/ |
| D | fsl_sai.c | 3 // Freescale ALSA SoC Digital Audio Interface (SAI) driver. 40 struct fsl_sai *sai = (struct fsl_sai *)devid; in fsl_sai_isr() local 41 struct device *dev = &sai->pdev->dev; in fsl_sai_isr() 53 regmap_read(sai->regmap, FSL_SAI_TCSR, &xcsr); in fsl_sai_isr() 83 regmap_write(sai->regmap, FSL_SAI_TCSR, flags | xcsr); in fsl_sai_isr() 87 regmap_read(sai->regmap, FSL_SAI_RCSR, &xcsr); in fsl_sai_isr() 117 regmap_write(sai->regmap, FSL_SAI_RCSR, flags | xcsr); in fsl_sai_isr() 129 struct fsl_sai *sai = snd_soc_dai_get_drvdata(cpu_dai); in fsl_sai_set_dai_tdm_slot() local 131 sai->slots = slots; in fsl_sai_set_dai_tdm_slot() 132 sai->slot_width = slot_width; in fsl_sai_set_dai_tdm_slot() [all …]
|
| D | fsl_sai.h | 16 /* SAI Register Map Register */ 17 #define FSL_SAI_TCSR 0x00 /* SAI Transmit Control */ 18 #define FSL_SAI_TCR1 0x04 /* SAI Transmit Configuration 1 */ 19 #define FSL_SAI_TCR2 0x08 /* SAI Transmit Configuration 2 */ 20 #define FSL_SAI_TCR3 0x0c /* SAI Transmit Configuration 3 */ 21 #define FSL_SAI_TCR4 0x10 /* SAI Transmit Configuration 4 */ 22 #define FSL_SAI_TCR5 0x14 /* SAI Transmit Configuration 5 */ 23 #define FSL_SAI_TDR 0x20 /* SAI Transmit Data */ 24 #define FSL_SAI_TFR 0x40 /* SAI Transmit FIFO */ 25 #define FSL_SAI_TMR 0x60 /* SAI Transmit Mask */ [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/sound/ |
| D | st,stm32-sai.txt | 1 STMicroelectronics STM32 Serial Audio Interface (SAI). 3 The SAI interface (Serial Audio Interface) offers a wide set of audio protocols 5 The SAI contains two independent audio sub-blocks. Each sub-block has 9 - compatible: Should be "st,stm32f4-sai" or "st,stm32h7-sai" 10 - reg: Base address and size of SAI common register set. 15 Mandatory for "st,stm32h7-sai" compatible. 16 Not used for "st,stm32f4-sai" compatible. 17 "x8k": SAI parent clock for sampling rates multiple of 8kHz. 18 "x11k": SAI parent clock for sampling rates multiple of 11.025kHz. 19 - interrupts: cpu DAI interrupt line shared by SAI sub-blocks [all …]
|
| D | fsl-sai.txt | 1 Freescale Synchronous Audio Interface (SAI). 3 The SAI is based on I2S module that used communicating with audio codecs, 10 - compatible : Compatible list, contains "fsl,vf610-sai", 11 "fsl,imx6sx-sai", "fsl,imx6ul-sai", 12 "fsl,imx7ulp-sai", "fsl,imx8mq-sai" or 13 "fsl,imx8qm-sai". 38 - fsl,sai-synchronous-rx: This is a boolean property. If present, indicating 39 that SAI will work in the synchronous mode (sync Tx 44 - fsl,sai-asynchronous: This is a boolean property. If present, indicating 45 that SAI will work in the asynchronous mode, which [all …]
|
| D | fsl,audmix.txt | 6 modules (SAI). Each input serial interface carries 8 audio channels in its 13 receive path of normal audio SAI module for readback by the CPU. 38 to SAI interfaces to be provided, the first SAI in the
|
| /kernel/linux/linux-4.19/Documentation/devicetree/bindings/sound/ |
| D | st,stm32-sai.txt | 1 STMicroelectronics STM32 Serial Audio Interface (SAI). 3 The SAI interface (Serial Audio Interface) offers a wide set of audio protocols 5 The SAI contains two independent audio sub-blocks. Each sub-block has 9 - compatible: Should be "st,stm32f4-sai" or "st,stm32h7-sai" 10 - reg: Base address and size of SAI common register set. 15 Mandatory for "st,stm32h7-sai" compatible. 16 Not used for "st,stm32f4-sai" compatible. 17 "x8k": SAI parent clock for sampling rates multiple of 8kHz. 18 "x11k": SAI parent clock for sampling rates multiple of 11.025kHz. 19 - interrupts: cpu DAI interrupt line shared by SAI sub-blocks [all …]
|
| D | fsl-sai.txt | 1 Freescale Synchronous Audio Interface (SAI). 3 The SAI is based on I2S module that used communicating with audio codecs, 10 - compatible : Compatible list, contains "fsl,vf610-sai", 11 "fsl,imx6sx-sai" or "fsl,imx6ul-sai" 36 - fsl,sai-synchronous-rx: This is a boolean property. If present, indicating 37 that SAI will work in the synchronous mode (sync Tx 42 - fsl,sai-asynchronous: This is a boolean property. If present, indicating 43 that SAI will work in the asynchronous mode, which 50 - big-endian : Boolean property, required if all the SAI 55 - fsl,sai-mclk-direction-output: This is a boolean property. If present, [all …]
|
| /kernel/linux/linux-5.10/Documentation/devicetree/bindings/clock/ |
| D | fsl,sai-clock.yaml | 4 $id: http://devicetree.org/schemas/clock/fsl,sai-clock.yaml# 7 title: Freescale SAI bitclock-as-a-clock binding 13 It is possible to use the BCLK pin of a SAI module as a generic clock 16 LS1028A SoC you can only enable SAIs in pairs. If you use only one SAI, 18 clock of the second SAI as a MCLK clock for an audio codec, for example. 24 const: fsl,vf610-sai-clock 50 compatible = "fsl,vf610-sai-clock";
|
| /kernel/linux/linux-5.10/drivers/clk/ |
| D | clk-fsl-sai.c | 3 * Freescale SAI BCLK as a generic clock driver 86 { .compatible = "fsl,vf610-sai-clock" }, 95 .name = "fsl-sai-clk", 101 MODULE_DESCRIPTION("Freescale SAI bitclock-as-a-clock driver"); 104 MODULE_ALIAS("platform:fsl-sai-clk");
|
| /kernel/linux/linux-4.19/fs/xfs/scrub/ |
| D | agheader.c | 631 struct xchk_agfl_info *sai = priv; in xchk_agfl_block() local 632 struct xfs_scrub *sc = sai->sc; in xchk_agfl_block() 636 sai->nr_entries < sai->sz_entries) in xchk_agfl_block() 637 sai->entries[sai->nr_entries++] = agbno; in xchk_agfl_block() 696 struct xchk_agfl_info sai; in xchk_agfl() local 724 memset(&sai, 0, sizeof(sai)); in xchk_agfl() 725 sai.sc = sc; in xchk_agfl() 726 sai.sz_entries = agflcount; in xchk_agfl() 727 sai.entries = kmem_zalloc(sizeof(xfs_agblock_t) * agflcount, in xchk_agfl() 729 if (!sai.entries) { in xchk_agfl() [all …]
|
| /kernel/linux/linux-5.10/fs/xfs/scrub/ |
| D | agheader.c | 629 struct xchk_agfl_info *sai = priv; in xchk_agfl_block() local 630 struct xfs_scrub *sc = sai->sc; in xchk_agfl_block() 634 sai->nr_entries < sai->sz_entries) in xchk_agfl_block() 635 sai->entries[sai->nr_entries++] = agbno; in xchk_agfl_block() 692 struct xchk_agfl_info sai; in xchk_agfl() local 720 memset(&sai, 0, sizeof(sai)); in xchk_agfl() 721 sai.sc = sc; in xchk_agfl() 722 sai.sz_entries = agflcount; in xchk_agfl() 723 sai.entries = kmem_zalloc(sizeof(xfs_agblock_t) * agflcount, in xchk_agfl() 725 if (!sai.entries) { in xchk_agfl() [all …]
|
| /kernel/linux/linux-4.19/Documentation/devicetree/bindings/dma/ |
| D | fsl-edma.txt | 66 sai2: sai@40031000 { 67 compatible = "fsl,vf610-sai"; 70 clock-names = "sai";
|
| /kernel/linux/linux-5.10/arch/arm64/boot/dts/freescale/ |
| D | imx8mm.dtsi | 272 sai1: sai@30010000 { 274 compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai"; 286 sai2: sai@30020000 { 288 compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai"; 300 sai3: sai@30030000 { 302 compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai"; 314 sai5: sai@30050000 { 316 compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai"; 328 sai6: sai@30060000 { 330 compatible = "fsl,imx8mm-sai", "fsl,imx8mq-sai";
|