162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * OMAP Multi-Channel Buffered Serial Port
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Contact: Jarkko Nikula <jarkko.nikula@bitmer.com>
662306a36Sopenharmony_ci *          Peter Ujfalusi <peter.ujfalusi@ti.com>
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#ifndef __OMAP_MCBSP_PRIV_H__
1062306a36Sopenharmony_ci#define __OMAP_MCBSP_PRIV_H__
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include <linux/platform_data/asoc-ti-mcbsp.h>
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#ifdef CONFIG_ARCH_OMAP1
1562306a36Sopenharmony_ci#define mcbsp_omap1()	1
1662306a36Sopenharmony_ci#else
1762306a36Sopenharmony_ci#define mcbsp_omap1()	0
1862306a36Sopenharmony_ci#endif
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci/* McBSP register numbers. Register address offset = num * reg_step */
2162306a36Sopenharmony_cienum {
2262306a36Sopenharmony_ci	/* Common registers */
2362306a36Sopenharmony_ci	OMAP_MCBSP_REG_SPCR2 = 4,
2462306a36Sopenharmony_ci	OMAP_MCBSP_REG_SPCR1,
2562306a36Sopenharmony_ci	OMAP_MCBSP_REG_RCR2,
2662306a36Sopenharmony_ci	OMAP_MCBSP_REG_RCR1,
2762306a36Sopenharmony_ci	OMAP_MCBSP_REG_XCR2,
2862306a36Sopenharmony_ci	OMAP_MCBSP_REG_XCR1,
2962306a36Sopenharmony_ci	OMAP_MCBSP_REG_SRGR2,
3062306a36Sopenharmony_ci	OMAP_MCBSP_REG_SRGR1,
3162306a36Sopenharmony_ci	OMAP_MCBSP_REG_MCR2,
3262306a36Sopenharmony_ci	OMAP_MCBSP_REG_MCR1,
3362306a36Sopenharmony_ci	OMAP_MCBSP_REG_RCERA,
3462306a36Sopenharmony_ci	OMAP_MCBSP_REG_RCERB,
3562306a36Sopenharmony_ci	OMAP_MCBSP_REG_XCERA,
3662306a36Sopenharmony_ci	OMAP_MCBSP_REG_XCERB,
3762306a36Sopenharmony_ci	OMAP_MCBSP_REG_PCR0,
3862306a36Sopenharmony_ci	OMAP_MCBSP_REG_RCERC,
3962306a36Sopenharmony_ci	OMAP_MCBSP_REG_RCERD,
4062306a36Sopenharmony_ci	OMAP_MCBSP_REG_XCERC,
4162306a36Sopenharmony_ci	OMAP_MCBSP_REG_XCERD,
4262306a36Sopenharmony_ci	OMAP_MCBSP_REG_RCERE,
4362306a36Sopenharmony_ci	OMAP_MCBSP_REG_RCERF,
4462306a36Sopenharmony_ci	OMAP_MCBSP_REG_XCERE,
4562306a36Sopenharmony_ci	OMAP_MCBSP_REG_XCERF,
4662306a36Sopenharmony_ci	OMAP_MCBSP_REG_RCERG,
4762306a36Sopenharmony_ci	OMAP_MCBSP_REG_RCERH,
4862306a36Sopenharmony_ci	OMAP_MCBSP_REG_XCERG,
4962306a36Sopenharmony_ci	OMAP_MCBSP_REG_XCERH,
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci	/* OMAP1-OMAP2420 registers */
5262306a36Sopenharmony_ci	OMAP_MCBSP_REG_DRR2 = 0,
5362306a36Sopenharmony_ci	OMAP_MCBSP_REG_DRR1,
5462306a36Sopenharmony_ci	OMAP_MCBSP_REG_DXR2,
5562306a36Sopenharmony_ci	OMAP_MCBSP_REG_DXR1,
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci	/* OMAP2430 and onwards */
5862306a36Sopenharmony_ci	OMAP_MCBSP_REG_DRR = 0,
5962306a36Sopenharmony_ci	OMAP_MCBSP_REG_DXR = 2,
6062306a36Sopenharmony_ci	OMAP_MCBSP_REG_SYSCON =	35,
6162306a36Sopenharmony_ci	OMAP_MCBSP_REG_THRSH2,
6262306a36Sopenharmony_ci	OMAP_MCBSP_REG_THRSH1,
6362306a36Sopenharmony_ci	OMAP_MCBSP_REG_IRQST = 40,
6462306a36Sopenharmony_ci	OMAP_MCBSP_REG_IRQEN,
6562306a36Sopenharmony_ci	OMAP_MCBSP_REG_WAKEUPEN,
6662306a36Sopenharmony_ci	OMAP_MCBSP_REG_XCCR,
6762306a36Sopenharmony_ci	OMAP_MCBSP_REG_RCCR,
6862306a36Sopenharmony_ci	OMAP_MCBSP_REG_XBUFFSTAT,
6962306a36Sopenharmony_ci	OMAP_MCBSP_REG_RBUFFSTAT,
7062306a36Sopenharmony_ci	OMAP_MCBSP_REG_SSELCR,
7162306a36Sopenharmony_ci};
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci/************************** McBSP SPCR1 bit definitions ***********************/
7462306a36Sopenharmony_ci#define RRST			BIT(0)
7562306a36Sopenharmony_ci#define RRDY			BIT(1)
7662306a36Sopenharmony_ci#define RFULL			BIT(2)
7762306a36Sopenharmony_ci#define RSYNC_ERR		BIT(3)
7862306a36Sopenharmony_ci#define RINTM(value)		(((value) & 0x3) << 4)	/* bits 4:5 */
7962306a36Sopenharmony_ci#define ABIS			BIT(6)
8062306a36Sopenharmony_ci#define DXENA			BIT(7)
8162306a36Sopenharmony_ci#define CLKSTP(value)		(((value) & 0x3) << 11)	/* bits 11:12 */
8262306a36Sopenharmony_ci#define RJUST(value)		(((value) & 0x3) << 13)	/* bits 13:14 */
8362306a36Sopenharmony_ci#define ALB			BIT(15)
8462306a36Sopenharmony_ci#define DLB			BIT(15)
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci/************************** McBSP SPCR2 bit definitions ***********************/
8762306a36Sopenharmony_ci#define XRST			BIT(0)
8862306a36Sopenharmony_ci#define XRDY			BIT(1)
8962306a36Sopenharmony_ci#define XEMPTY			BIT(2)
9062306a36Sopenharmony_ci#define XSYNC_ERR		BIT(3)
9162306a36Sopenharmony_ci#define XINTM(value)		(((value) & 0x3) << 4)	/* bits 4:5 */
9262306a36Sopenharmony_ci#define GRST			BIT(6)
9362306a36Sopenharmony_ci#define FRST			BIT(7)
9462306a36Sopenharmony_ci#define SOFT			BIT(8)
9562306a36Sopenharmony_ci#define FREE			BIT(9)
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci/************************** McBSP PCR bit definitions *************************/
9862306a36Sopenharmony_ci#define CLKRP			BIT(0)
9962306a36Sopenharmony_ci#define CLKXP			BIT(1)
10062306a36Sopenharmony_ci#define FSRP			BIT(2)
10162306a36Sopenharmony_ci#define FSXP			BIT(3)
10262306a36Sopenharmony_ci#define DR_STAT			BIT(4)
10362306a36Sopenharmony_ci#define DX_STAT			BIT(5)
10462306a36Sopenharmony_ci#define CLKS_STAT		BIT(6)
10562306a36Sopenharmony_ci#define SCLKME			BIT(7)
10662306a36Sopenharmony_ci#define CLKRM			BIT(8)
10762306a36Sopenharmony_ci#define CLKXM			BIT(9)
10862306a36Sopenharmony_ci#define FSRM			BIT(10)
10962306a36Sopenharmony_ci#define FSXM			BIT(11)
11062306a36Sopenharmony_ci#define RIOEN			BIT(12)
11162306a36Sopenharmony_ci#define XIOEN			BIT(13)
11262306a36Sopenharmony_ci#define IDLE_EN			BIT(14)
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci/************************** McBSP RCR1 bit definitions ************************/
11562306a36Sopenharmony_ci#define RWDLEN1(value)		(((value) & 0x7) << 5)	/* Bits 5:7 */
11662306a36Sopenharmony_ci#define RFRLEN1(value)		(((value) & 0x7f) << 8)	/* Bits 8:14 */
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci/************************** McBSP XCR1 bit definitions ************************/
11962306a36Sopenharmony_ci#define XWDLEN1(value)		(((value) & 0x7) << 5)	/* Bits 5:7 */
12062306a36Sopenharmony_ci#define XFRLEN1(value)		(((value) & 0x7f) << 8)	/* Bits 8:14 */
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci/*************************** McBSP RCR2 bit definitions ***********************/
12362306a36Sopenharmony_ci#define RDATDLY(value)		((value) & 0x3)		/* Bits 0:1 */
12462306a36Sopenharmony_ci#define RFIG			BIT(2)
12562306a36Sopenharmony_ci#define RCOMPAND(value)		(((value) & 0x3) << 3)	/* Bits 3:4 */
12662306a36Sopenharmony_ci#define RWDLEN2(value)		(((value) & 0x7) << 5)	/* Bits 5:7 */
12762306a36Sopenharmony_ci#define RFRLEN2(value)		(((value) & 0x7f) << 8)	/* Bits 8:14 */
12862306a36Sopenharmony_ci#define RPHASE			BIT(15)
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci/*************************** McBSP XCR2 bit definitions ***********************/
13162306a36Sopenharmony_ci#define XDATDLY(value)		((value) & 0x3)		/* Bits 0:1 */
13262306a36Sopenharmony_ci#define XFIG			BIT(2)
13362306a36Sopenharmony_ci#define XCOMPAND(value)		(((value) & 0x3) << 3)	/* Bits 3:4 */
13462306a36Sopenharmony_ci#define XWDLEN2(value)		(((value) & 0x7) << 5)	/* Bits 5:7 */
13562306a36Sopenharmony_ci#define XFRLEN2(value)		(((value) & 0x7f) << 8)	/* Bits 8:14 */
13662306a36Sopenharmony_ci#define XPHASE			BIT(15)
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci/************************* McBSP SRGR1 bit definitions ************************/
13962306a36Sopenharmony_ci#define CLKGDV(value)		((value) & 0x7f)		/* Bits 0:7 */
14062306a36Sopenharmony_ci#define FWID(value)		(((value) & 0xff) << 8)	/* Bits 8:15 */
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci/************************* McBSP SRGR2 bit definitions ************************/
14362306a36Sopenharmony_ci#define FPER(value)		((value) & 0x0fff)	/* Bits 0:11 */
14462306a36Sopenharmony_ci#define FSGM			BIT(12)
14562306a36Sopenharmony_ci#define CLKSM			BIT(13)
14662306a36Sopenharmony_ci#define CLKSP			BIT(14)
14762306a36Sopenharmony_ci#define GSYNC			BIT(15)
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci/************************* McBSP MCR1 bit definitions *************************/
15062306a36Sopenharmony_ci#define RMCM			BIT(0)
15162306a36Sopenharmony_ci#define RCBLK(value)		(((value) & 0x7) << 2)	/* Bits 2:4 */
15262306a36Sopenharmony_ci#define RPABLK(value)		(((value) & 0x3) << 5)	/* Bits 5:6 */
15362306a36Sopenharmony_ci#define RPBBLK(value)		(((value) & 0x3) << 7)	/* Bits 7:8 */
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci/************************* McBSP MCR2 bit definitions *************************/
15662306a36Sopenharmony_ci#define XMCM(value)		((value) & 0x3)		/* Bits 0:1 */
15762306a36Sopenharmony_ci#define XCBLK(value)		(((value) & 0x7) << 2)	/* Bits 2:4 */
15862306a36Sopenharmony_ci#define XPABLK(value)		(((value) & 0x3) << 5)	/* Bits 5:6 */
15962306a36Sopenharmony_ci#define XPBBLK(value)		(((value) & 0x3) << 7)	/* Bits 7:8 */
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci/*********************** McBSP XCCR bit definitions *************************/
16262306a36Sopenharmony_ci#define XDISABLE		BIT(0)
16362306a36Sopenharmony_ci#define XDMAEN			BIT(3)
16462306a36Sopenharmony_ci#define DILB			BIT(5)
16562306a36Sopenharmony_ci#define XFULL_CYCLE		BIT(11)
16662306a36Sopenharmony_ci#define DXENDLY(value)		(((value) & 0x3) << 12)	/* Bits 12:13 */
16762306a36Sopenharmony_ci#define PPCONNECT		BIT(14)
16862306a36Sopenharmony_ci#define EXTCLKGATE		BIT(15)
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci/********************** McBSP RCCR bit definitions *************************/
17162306a36Sopenharmony_ci#define RDISABLE		BIT(0)
17262306a36Sopenharmony_ci#define RDMAEN			BIT(3)
17362306a36Sopenharmony_ci#define RFULL_CYCLE		BIT(11)
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci/********************** McBSP SYSCONFIG bit definitions ********************/
17662306a36Sopenharmony_ci#define SOFTRST			BIT(1)
17762306a36Sopenharmony_ci#define ENAWAKEUP		BIT(2)
17862306a36Sopenharmony_ci#define SIDLEMODE(value)	(((value) & 0x3) << 3)
17962306a36Sopenharmony_ci#define CLOCKACTIVITY(value)	(((value) & 0x3) << 8)
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ci/********************** McBSP DMA operating modes **************************/
18262306a36Sopenharmony_ci#define MCBSP_DMA_MODE_ELEMENT		0
18362306a36Sopenharmony_ci#define MCBSP_DMA_MODE_THRESHOLD	1
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci/********************** McBSP WAKEUPEN/IRQST/IRQEN bit definitions *********/
18662306a36Sopenharmony_ci#define RSYNCERREN		BIT(0)
18762306a36Sopenharmony_ci#define RFSREN			BIT(1)
18862306a36Sopenharmony_ci#define REOFEN			BIT(2)
18962306a36Sopenharmony_ci#define RRDYEN			BIT(3)
19062306a36Sopenharmony_ci#define RUNDFLEN		BIT(4)
19162306a36Sopenharmony_ci#define ROVFLEN			BIT(5)
19262306a36Sopenharmony_ci#define XSYNCERREN		BIT(7)
19362306a36Sopenharmony_ci#define XFSXEN			BIT(8)
19462306a36Sopenharmony_ci#define XEOFEN			BIT(9)
19562306a36Sopenharmony_ci#define XRDYEN			BIT(10)
19662306a36Sopenharmony_ci#define XUNDFLEN		BIT(11)
19762306a36Sopenharmony_ci#define XOVFLEN			BIT(12)
19862306a36Sopenharmony_ci#define XEMPTYEOFEN		BIT(14)
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ci/* Clock signal muxing options */
20162306a36Sopenharmony_ci#define CLKR_SRC_CLKR		0 /* CLKR signal is from the CLKR pin */
20262306a36Sopenharmony_ci#define CLKR_SRC_CLKX		1 /* CLKR signal is from the CLKX pin */
20362306a36Sopenharmony_ci#define FSR_SRC_FSR		2 /* FSR signal is from the FSR pin */
20462306a36Sopenharmony_ci#define FSR_SRC_FSX		3 /* FSR signal is from the FSX pin */
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ci/* McBSP functional clock sources */
20762306a36Sopenharmony_ci#define MCBSP_CLKS_PRCM_SRC	0
20862306a36Sopenharmony_ci#define MCBSP_CLKS_PAD_SRC	1
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci/* we don't do multichannel for now */
21162306a36Sopenharmony_cistruct omap_mcbsp_reg_cfg {
21262306a36Sopenharmony_ci	u16 spcr2;
21362306a36Sopenharmony_ci	u16 spcr1;
21462306a36Sopenharmony_ci	u16 rcr2;
21562306a36Sopenharmony_ci	u16 rcr1;
21662306a36Sopenharmony_ci	u16 xcr2;
21762306a36Sopenharmony_ci	u16 xcr1;
21862306a36Sopenharmony_ci	u16 srgr2;
21962306a36Sopenharmony_ci	u16 srgr1;
22062306a36Sopenharmony_ci	u16 mcr2;
22162306a36Sopenharmony_ci	u16 mcr1;
22262306a36Sopenharmony_ci	u16 pcr0;
22362306a36Sopenharmony_ci	u16 rcerc;
22462306a36Sopenharmony_ci	u16 rcerd;
22562306a36Sopenharmony_ci	u16 xcerc;
22662306a36Sopenharmony_ci	u16 xcerd;
22762306a36Sopenharmony_ci	u16 rcere;
22862306a36Sopenharmony_ci	u16 rcerf;
22962306a36Sopenharmony_ci	u16 xcere;
23062306a36Sopenharmony_ci	u16 xcerf;
23162306a36Sopenharmony_ci	u16 rcerg;
23262306a36Sopenharmony_ci	u16 rcerh;
23362306a36Sopenharmony_ci	u16 xcerg;
23462306a36Sopenharmony_ci	u16 xcerh;
23562306a36Sopenharmony_ci	u16 xccr;
23662306a36Sopenharmony_ci	u16 rccr;
23762306a36Sopenharmony_ci};
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_cistruct omap_mcbsp_st_data;
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_cistruct omap_mcbsp {
24262306a36Sopenharmony_ci	struct device *dev;
24362306a36Sopenharmony_ci	struct clk *fclk;
24462306a36Sopenharmony_ci	spinlock_t lock;
24562306a36Sopenharmony_ci	unsigned long phys_base;
24662306a36Sopenharmony_ci	unsigned long phys_dma_base;
24762306a36Sopenharmony_ci	void __iomem *io_base;
24862306a36Sopenharmony_ci	u8 id;
24962306a36Sopenharmony_ci	/*
25062306a36Sopenharmony_ci	 * Flags indicating is the bus already activated and configured by
25162306a36Sopenharmony_ci	 * another substream
25262306a36Sopenharmony_ci	 */
25362306a36Sopenharmony_ci	int active;
25462306a36Sopenharmony_ci	int configured;
25562306a36Sopenharmony_ci	u8 free;
25662306a36Sopenharmony_ci
25762306a36Sopenharmony_ci	int irq;
25862306a36Sopenharmony_ci	int rx_irq;
25962306a36Sopenharmony_ci	int tx_irq;
26062306a36Sopenharmony_ci
26162306a36Sopenharmony_ci	/* Protect the field .free, while checking if the mcbsp is in use */
26262306a36Sopenharmony_ci	struct omap_mcbsp_platform_data *pdata;
26362306a36Sopenharmony_ci	struct omap_mcbsp_st_data *st_data;
26462306a36Sopenharmony_ci	struct omap_mcbsp_reg_cfg cfg_regs;
26562306a36Sopenharmony_ci	struct snd_dmaengine_dai_dma_data dma_data[2];
26662306a36Sopenharmony_ci	unsigned int dma_req[2];
26762306a36Sopenharmony_ci	int dma_op_mode;
26862306a36Sopenharmony_ci	u16 max_tx_thres;
26962306a36Sopenharmony_ci	u16 max_rx_thres;
27062306a36Sopenharmony_ci	void *reg_cache;
27162306a36Sopenharmony_ci	int reg_cache_size;
27262306a36Sopenharmony_ci
27362306a36Sopenharmony_ci	unsigned int fmt;
27462306a36Sopenharmony_ci	unsigned int in_freq;
27562306a36Sopenharmony_ci	unsigned int latency[2];
27662306a36Sopenharmony_ci	int clk_div;
27762306a36Sopenharmony_ci	int wlen;
27862306a36Sopenharmony_ci
27962306a36Sopenharmony_ci	struct pm_qos_request pm_qos_req;
28062306a36Sopenharmony_ci};
28162306a36Sopenharmony_ci
28262306a36Sopenharmony_cistatic inline void omap_mcbsp_write(struct omap_mcbsp *mcbsp, u16 reg, u32 val)
28362306a36Sopenharmony_ci{
28462306a36Sopenharmony_ci	void __iomem *addr = mcbsp->io_base + reg * mcbsp->pdata->reg_step;
28562306a36Sopenharmony_ci
28662306a36Sopenharmony_ci	if (mcbsp->pdata->reg_size == 2) {
28762306a36Sopenharmony_ci		((u16 *)mcbsp->reg_cache)[reg] = (u16)val;
28862306a36Sopenharmony_ci		writew_relaxed((u16)val, addr);
28962306a36Sopenharmony_ci	} else {
29062306a36Sopenharmony_ci		((u32 *)mcbsp->reg_cache)[reg] = val;
29162306a36Sopenharmony_ci		writel_relaxed(val, addr);
29262306a36Sopenharmony_ci	}
29362306a36Sopenharmony_ci}
29462306a36Sopenharmony_ci
29562306a36Sopenharmony_cistatic inline int omap_mcbsp_read(struct omap_mcbsp *mcbsp, u16 reg,
29662306a36Sopenharmony_ci				  bool from_cache)
29762306a36Sopenharmony_ci{
29862306a36Sopenharmony_ci	void __iomem *addr = mcbsp->io_base + reg * mcbsp->pdata->reg_step;
29962306a36Sopenharmony_ci
30062306a36Sopenharmony_ci	if (mcbsp->pdata->reg_size == 2) {
30162306a36Sopenharmony_ci		return !from_cache ? readw_relaxed(addr) :
30262306a36Sopenharmony_ci				     ((u16 *)mcbsp->reg_cache)[reg];
30362306a36Sopenharmony_ci	} else {
30462306a36Sopenharmony_ci		return !from_cache ? readl_relaxed(addr) :
30562306a36Sopenharmony_ci				     ((u32 *)mcbsp->reg_cache)[reg];
30662306a36Sopenharmony_ci	}
30762306a36Sopenharmony_ci}
30862306a36Sopenharmony_ci
30962306a36Sopenharmony_ci#define MCBSP_READ(mcbsp, reg) \
31062306a36Sopenharmony_ci		omap_mcbsp_read(mcbsp, OMAP_MCBSP_REG_##reg, 0)
31162306a36Sopenharmony_ci#define MCBSP_WRITE(mcbsp, reg, val) \
31262306a36Sopenharmony_ci		omap_mcbsp_write(mcbsp, OMAP_MCBSP_REG_##reg, val)
31362306a36Sopenharmony_ci#define MCBSP_READ_CACHE(mcbsp, reg) \
31462306a36Sopenharmony_ci		omap_mcbsp_read(mcbsp, OMAP_MCBSP_REG_##reg, 1)
31562306a36Sopenharmony_ci
31662306a36Sopenharmony_ci
31762306a36Sopenharmony_ci/* Sidetone specific API */
31862306a36Sopenharmony_ciint omap_mcbsp_st_init(struct platform_device *pdev);
31962306a36Sopenharmony_ciint omap_mcbsp_st_start(struct omap_mcbsp *mcbsp);
32062306a36Sopenharmony_ciint omap_mcbsp_st_stop(struct omap_mcbsp *mcbsp);
32162306a36Sopenharmony_ci
32262306a36Sopenharmony_ci#endif /* __OMAP_MCBSP_PRIV_H__ */
323