162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * fsl_ssi.h - ALSA SSI interface for the Freescale MPC8610 and i.MX SoC 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Author: Timur Tabi <timur@freescale.com> 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Copyright 2007-2008 Freescale Semiconductor, Inc. 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#ifndef _MPC8610_I2S_H 1162306a36Sopenharmony_ci#define _MPC8610_I2S_H 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci/* -- SSI Register Map -- */ 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci/* SSI Transmit Data Register 0 */ 1662306a36Sopenharmony_ci#define REG_SSI_STX0 0x00 1762306a36Sopenharmony_ci/* SSI Transmit Data Register 1 */ 1862306a36Sopenharmony_ci#define REG_SSI_STX1 0x04 1962306a36Sopenharmony_ci/* SSI Receive Data Register 0 */ 2062306a36Sopenharmony_ci#define REG_SSI_SRX0 0x08 2162306a36Sopenharmony_ci/* SSI Receive Data Register 1 */ 2262306a36Sopenharmony_ci#define REG_SSI_SRX1 0x0c 2362306a36Sopenharmony_ci/* SSI Control Register */ 2462306a36Sopenharmony_ci#define REG_SSI_SCR 0x10 2562306a36Sopenharmony_ci/* SSI Interrupt Status Register */ 2662306a36Sopenharmony_ci#define REG_SSI_SISR 0x14 2762306a36Sopenharmony_ci/* SSI Interrupt Enable Register */ 2862306a36Sopenharmony_ci#define REG_SSI_SIER 0x18 2962306a36Sopenharmony_ci/* SSI Transmit Configuration Register */ 3062306a36Sopenharmony_ci#define REG_SSI_STCR 0x1c 3162306a36Sopenharmony_ci/* SSI Receive Configuration Register */ 3262306a36Sopenharmony_ci#define REG_SSI_SRCR 0x20 3362306a36Sopenharmony_ci#define REG_SSI_SxCR(tx) ((tx) ? REG_SSI_STCR : REG_SSI_SRCR) 3462306a36Sopenharmony_ci/* SSI Transmit Clock Control Register */ 3562306a36Sopenharmony_ci#define REG_SSI_STCCR 0x24 3662306a36Sopenharmony_ci/* SSI Receive Clock Control Register */ 3762306a36Sopenharmony_ci#define REG_SSI_SRCCR 0x28 3862306a36Sopenharmony_ci#define REG_SSI_SxCCR(tx) ((tx) ? REG_SSI_STCCR : REG_SSI_SRCCR) 3962306a36Sopenharmony_ci/* SSI FIFO Control/Status Register */ 4062306a36Sopenharmony_ci#define REG_SSI_SFCSR 0x2c 4162306a36Sopenharmony_ci/* 4262306a36Sopenharmony_ci * SSI Test Register (Intended for debugging purposes only) 4362306a36Sopenharmony_ci * 4462306a36Sopenharmony_ci * Note: STR is not documented in recent IMX datasheet, but 4562306a36Sopenharmony_ci * is described in IMX51 reference manual at section 56.3.3.14 4662306a36Sopenharmony_ci */ 4762306a36Sopenharmony_ci#define REG_SSI_STR 0x30 4862306a36Sopenharmony_ci/* 4962306a36Sopenharmony_ci * SSI Option Register (Intended for internal use only) 5062306a36Sopenharmony_ci * 5162306a36Sopenharmony_ci * Note: SOR is not documented in recent IMX datasheet, but 5262306a36Sopenharmony_ci * is described in IMX51 reference manual at section 56.3.3.15 5362306a36Sopenharmony_ci */ 5462306a36Sopenharmony_ci#define REG_SSI_SOR 0x34 5562306a36Sopenharmony_ci/* SSI AC97 Control Register */ 5662306a36Sopenharmony_ci#define REG_SSI_SACNT 0x38 5762306a36Sopenharmony_ci/* SSI AC97 Command Address Register */ 5862306a36Sopenharmony_ci#define REG_SSI_SACADD 0x3c 5962306a36Sopenharmony_ci/* SSI AC97 Command Data Register */ 6062306a36Sopenharmony_ci#define REG_SSI_SACDAT 0x40 6162306a36Sopenharmony_ci/* SSI AC97 Tag Register */ 6262306a36Sopenharmony_ci#define REG_SSI_SATAG 0x44 6362306a36Sopenharmony_ci/* SSI Transmit Time Slot Mask Register */ 6462306a36Sopenharmony_ci#define REG_SSI_STMSK 0x48 6562306a36Sopenharmony_ci/* SSI Receive Time Slot Mask Register */ 6662306a36Sopenharmony_ci#define REG_SSI_SRMSK 0x4c 6762306a36Sopenharmony_ci#define REG_SSI_SxMSK(tx) ((tx) ? REG_SSI_STMSK : REG_SSI_SRMSK) 6862306a36Sopenharmony_ci/* 6962306a36Sopenharmony_ci * SSI AC97 Channel Status Register 7062306a36Sopenharmony_ci * 7162306a36Sopenharmony_ci * The status could be changed by: 7262306a36Sopenharmony_ci * 1) Writing a '1' bit at some position in SACCEN sets relevant bit in SACCST 7362306a36Sopenharmony_ci * 2) Writing a '1' bit at some position in SACCDIS unsets the relevant bit 7462306a36Sopenharmony_ci * 3) Receivng a '1' in SLOTREQ bit from external CODEC via AC Link 7562306a36Sopenharmony_ci */ 7662306a36Sopenharmony_ci#define REG_SSI_SACCST 0x50 7762306a36Sopenharmony_ci/* SSI AC97 Channel Enable Register -- Set bits in SACCST */ 7862306a36Sopenharmony_ci#define REG_SSI_SACCEN 0x54 7962306a36Sopenharmony_ci/* SSI AC97 Channel Disable Register -- Clear bits in SACCST */ 8062306a36Sopenharmony_ci#define REG_SSI_SACCDIS 0x58 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ci/* -- SSI Register Field Maps -- */ 8362306a36Sopenharmony_ci 8462306a36Sopenharmony_ci/* SSI Control Register -- REG_SSI_SCR 0x10 */ 8562306a36Sopenharmony_ci#define SSI_SCR_SYNC_TX_FS 0x00001000 8662306a36Sopenharmony_ci#define SSI_SCR_RFR_CLK_DIS 0x00000800 8762306a36Sopenharmony_ci#define SSI_SCR_TFR_CLK_DIS 0x00000400 8862306a36Sopenharmony_ci#define SSI_SCR_TCH_EN 0x00000100 8962306a36Sopenharmony_ci#define SSI_SCR_SYS_CLK_EN 0x00000080 9062306a36Sopenharmony_ci#define SSI_SCR_I2S_MODE_MASK 0x00000060 9162306a36Sopenharmony_ci#define SSI_SCR_I2S_MODE_NORMAL 0x00000000 9262306a36Sopenharmony_ci#define SSI_SCR_I2S_MODE_MASTER 0x00000020 9362306a36Sopenharmony_ci#define SSI_SCR_I2S_MODE_SLAVE 0x00000040 9462306a36Sopenharmony_ci#define SSI_SCR_SYN 0x00000010 9562306a36Sopenharmony_ci#define SSI_SCR_NET 0x00000008 9662306a36Sopenharmony_ci#define SSI_SCR_I2S_NET_MASK (SSI_SCR_NET | SSI_SCR_I2S_MODE_MASK) 9762306a36Sopenharmony_ci#define SSI_SCR_RE 0x00000004 9862306a36Sopenharmony_ci#define SSI_SCR_TE 0x00000002 9962306a36Sopenharmony_ci#define SSI_SCR_SSIEN 0x00000001 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci/* SSI Interrupt Status Register -- REG_SSI_SISR 0x14 */ 10262306a36Sopenharmony_ci#define SSI_SISR_RFRC 0x01000000 10362306a36Sopenharmony_ci#define SSI_SISR_TFRC 0x00800000 10462306a36Sopenharmony_ci#define SSI_SISR_CMDAU 0x00040000 10562306a36Sopenharmony_ci#define SSI_SISR_CMDDU 0x00020000 10662306a36Sopenharmony_ci#define SSI_SISR_RXT 0x00010000 10762306a36Sopenharmony_ci#define SSI_SISR_RDR1 0x00008000 10862306a36Sopenharmony_ci#define SSI_SISR_RDR0 0x00004000 10962306a36Sopenharmony_ci#define SSI_SISR_TDE1 0x00002000 11062306a36Sopenharmony_ci#define SSI_SISR_TDE0 0x00001000 11162306a36Sopenharmony_ci#define SSI_SISR_ROE1 0x00000800 11262306a36Sopenharmony_ci#define SSI_SISR_ROE0 0x00000400 11362306a36Sopenharmony_ci#define SSI_SISR_TUE1 0x00000200 11462306a36Sopenharmony_ci#define SSI_SISR_TUE0 0x00000100 11562306a36Sopenharmony_ci#define SSI_SISR_TFS 0x00000080 11662306a36Sopenharmony_ci#define SSI_SISR_RFS 0x00000040 11762306a36Sopenharmony_ci#define SSI_SISR_TLS 0x00000020 11862306a36Sopenharmony_ci#define SSI_SISR_RLS 0x00000010 11962306a36Sopenharmony_ci#define SSI_SISR_RFF1 0x00000008 12062306a36Sopenharmony_ci#define SSI_SISR_RFF0 0x00000004 12162306a36Sopenharmony_ci#define SSI_SISR_TFE1 0x00000002 12262306a36Sopenharmony_ci#define SSI_SISR_TFE0 0x00000001 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_ci/* SSI Interrupt Enable Register -- REG_SSI_SIER 0x18 */ 12562306a36Sopenharmony_ci#define SSI_SIER_RFRC_EN 0x01000000 12662306a36Sopenharmony_ci#define SSI_SIER_TFRC_EN 0x00800000 12762306a36Sopenharmony_ci#define SSI_SIER_RDMAE 0x00400000 12862306a36Sopenharmony_ci#define SSI_SIER_RIE 0x00200000 12962306a36Sopenharmony_ci#define SSI_SIER_TDMAE 0x00100000 13062306a36Sopenharmony_ci#define SSI_SIER_TIE 0x00080000 13162306a36Sopenharmony_ci#define SSI_SIER_CMDAU_EN 0x00040000 13262306a36Sopenharmony_ci#define SSI_SIER_CMDDU_EN 0x00020000 13362306a36Sopenharmony_ci#define SSI_SIER_RXT_EN 0x00010000 13462306a36Sopenharmony_ci#define SSI_SIER_RDR1_EN 0x00008000 13562306a36Sopenharmony_ci#define SSI_SIER_RDR0_EN 0x00004000 13662306a36Sopenharmony_ci#define SSI_SIER_TDE1_EN 0x00002000 13762306a36Sopenharmony_ci#define SSI_SIER_TDE0_EN 0x00001000 13862306a36Sopenharmony_ci#define SSI_SIER_ROE1_EN 0x00000800 13962306a36Sopenharmony_ci#define SSI_SIER_ROE0_EN 0x00000400 14062306a36Sopenharmony_ci#define SSI_SIER_TUE1_EN 0x00000200 14162306a36Sopenharmony_ci#define SSI_SIER_TUE0_EN 0x00000100 14262306a36Sopenharmony_ci#define SSI_SIER_TFS_EN 0x00000080 14362306a36Sopenharmony_ci#define SSI_SIER_RFS_EN 0x00000040 14462306a36Sopenharmony_ci#define SSI_SIER_TLS_EN 0x00000020 14562306a36Sopenharmony_ci#define SSI_SIER_RLS_EN 0x00000010 14662306a36Sopenharmony_ci#define SSI_SIER_RFF1_EN 0x00000008 14762306a36Sopenharmony_ci#define SSI_SIER_RFF0_EN 0x00000004 14862306a36Sopenharmony_ci#define SSI_SIER_TFE1_EN 0x00000002 14962306a36Sopenharmony_ci#define SSI_SIER_TFE0_EN 0x00000001 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ci/* SSI Transmit Configuration Register -- REG_SSI_STCR 0x1C */ 15262306a36Sopenharmony_ci#define SSI_STCR_TXBIT0 0x00000200 15362306a36Sopenharmony_ci#define SSI_STCR_TFEN1 0x00000100 15462306a36Sopenharmony_ci#define SSI_STCR_TFEN0 0x00000080 15562306a36Sopenharmony_ci#define SSI_STCR_TFDIR 0x00000040 15662306a36Sopenharmony_ci#define SSI_STCR_TXDIR 0x00000020 15762306a36Sopenharmony_ci#define SSI_STCR_TSHFD 0x00000010 15862306a36Sopenharmony_ci#define SSI_STCR_TSCKP 0x00000008 15962306a36Sopenharmony_ci#define SSI_STCR_TFSI 0x00000004 16062306a36Sopenharmony_ci#define SSI_STCR_TFSL 0x00000002 16162306a36Sopenharmony_ci#define SSI_STCR_TEFS 0x00000001 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci/* SSI Receive Configuration Register -- REG_SSI_SRCR 0x20 */ 16462306a36Sopenharmony_ci#define SSI_SRCR_RXEXT 0x00000400 16562306a36Sopenharmony_ci#define SSI_SRCR_RXBIT0 0x00000200 16662306a36Sopenharmony_ci#define SSI_SRCR_RFEN1 0x00000100 16762306a36Sopenharmony_ci#define SSI_SRCR_RFEN0 0x00000080 16862306a36Sopenharmony_ci#define SSI_SRCR_RFDIR 0x00000040 16962306a36Sopenharmony_ci#define SSI_SRCR_RXDIR 0x00000020 17062306a36Sopenharmony_ci#define SSI_SRCR_RSHFD 0x00000010 17162306a36Sopenharmony_ci#define SSI_SRCR_RSCKP 0x00000008 17262306a36Sopenharmony_ci#define SSI_SRCR_RFSI 0x00000004 17362306a36Sopenharmony_ci#define SSI_SRCR_RFSL 0x00000002 17462306a36Sopenharmony_ci#define SSI_SRCR_REFS 0x00000001 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci/* 17762306a36Sopenharmony_ci * SSI Transmit Clock Control Register -- REG_SSI_STCCR 0x24 17862306a36Sopenharmony_ci * SSI Receive Clock Control Register -- REG_SSI_SRCCR 0x28 17962306a36Sopenharmony_ci */ 18062306a36Sopenharmony_ci#define SSI_SxCCR_DIV2_SHIFT 18 18162306a36Sopenharmony_ci#define SSI_SxCCR_DIV2 0x00040000 18262306a36Sopenharmony_ci#define SSI_SxCCR_PSR_SHIFT 17 18362306a36Sopenharmony_ci#define SSI_SxCCR_PSR 0x00020000 18462306a36Sopenharmony_ci#define SSI_SxCCR_WL_SHIFT 13 18562306a36Sopenharmony_ci#define SSI_SxCCR_WL_MASK 0x0001E000 18662306a36Sopenharmony_ci#define SSI_SxCCR_WL(x) \ 18762306a36Sopenharmony_ci (((((x) / 2) - 1) << SSI_SxCCR_WL_SHIFT) & SSI_SxCCR_WL_MASK) 18862306a36Sopenharmony_ci#define SSI_SxCCR_DC_SHIFT 8 18962306a36Sopenharmony_ci#define SSI_SxCCR_DC_MASK 0x00001F00 19062306a36Sopenharmony_ci#define SSI_SxCCR_DC(x) \ 19162306a36Sopenharmony_ci ((((x) - 1) << SSI_SxCCR_DC_SHIFT) & SSI_SxCCR_DC_MASK) 19262306a36Sopenharmony_ci#define SSI_SxCCR_PM_SHIFT 0 19362306a36Sopenharmony_ci#define SSI_SxCCR_PM_MASK 0x000000FF 19462306a36Sopenharmony_ci#define SSI_SxCCR_PM(x) \ 19562306a36Sopenharmony_ci ((((x) - 1) << SSI_SxCCR_PM_SHIFT) & SSI_SxCCR_PM_MASK) 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ci/* 19862306a36Sopenharmony_ci * SSI FIFO Control/Status Register -- REG_SSI_SFCSR 0x2c 19962306a36Sopenharmony_ci * 20062306a36Sopenharmony_ci * Tx or Rx FIFO Counter -- SSI_SFCSR_xFCNTy Read-Only 20162306a36Sopenharmony_ci * Tx or Rx FIFO Watermarks -- SSI_SFCSR_xFWMy Read/Write 20262306a36Sopenharmony_ci */ 20362306a36Sopenharmony_ci#define SSI_SFCSR_RFCNT1_SHIFT 28 20462306a36Sopenharmony_ci#define SSI_SFCSR_RFCNT1_MASK 0xF0000000 20562306a36Sopenharmony_ci#define SSI_SFCSR_RFCNT1(x) \ 20662306a36Sopenharmony_ci (((x) & SSI_SFCSR_RFCNT1_MASK) >> SSI_SFCSR_RFCNT1_SHIFT) 20762306a36Sopenharmony_ci#define SSI_SFCSR_TFCNT1_SHIFT 24 20862306a36Sopenharmony_ci#define SSI_SFCSR_TFCNT1_MASK 0x0F000000 20962306a36Sopenharmony_ci#define SSI_SFCSR_TFCNT1(x) \ 21062306a36Sopenharmony_ci (((x) & SSI_SFCSR_TFCNT1_MASK) >> SSI_SFCSR_TFCNT1_SHIFT) 21162306a36Sopenharmony_ci#define SSI_SFCSR_RFWM1_SHIFT 20 21262306a36Sopenharmony_ci#define SSI_SFCSR_RFWM1_MASK 0x00F00000 21362306a36Sopenharmony_ci#define SSI_SFCSR_RFWM1(x) \ 21462306a36Sopenharmony_ci (((x) << SSI_SFCSR_RFWM1_SHIFT) & SSI_SFCSR_RFWM1_MASK) 21562306a36Sopenharmony_ci#define SSI_SFCSR_TFWM1_SHIFT 16 21662306a36Sopenharmony_ci#define SSI_SFCSR_TFWM1_MASK 0x000F0000 21762306a36Sopenharmony_ci#define SSI_SFCSR_TFWM1(x) \ 21862306a36Sopenharmony_ci (((x) << SSI_SFCSR_TFWM1_SHIFT) & SSI_SFCSR_TFWM1_MASK) 21962306a36Sopenharmony_ci#define SSI_SFCSR_RFCNT0_SHIFT 12 22062306a36Sopenharmony_ci#define SSI_SFCSR_RFCNT0_MASK 0x0000F000 22162306a36Sopenharmony_ci#define SSI_SFCSR_RFCNT0(x) \ 22262306a36Sopenharmony_ci (((x) & SSI_SFCSR_RFCNT0_MASK) >> SSI_SFCSR_RFCNT0_SHIFT) 22362306a36Sopenharmony_ci#define SSI_SFCSR_TFCNT0_SHIFT 8 22462306a36Sopenharmony_ci#define SSI_SFCSR_TFCNT0_MASK 0x00000F00 22562306a36Sopenharmony_ci#define SSI_SFCSR_TFCNT0(x) \ 22662306a36Sopenharmony_ci (((x) & SSI_SFCSR_TFCNT0_MASK) >> SSI_SFCSR_TFCNT0_SHIFT) 22762306a36Sopenharmony_ci#define SSI_SFCSR_RFWM0_SHIFT 4 22862306a36Sopenharmony_ci#define SSI_SFCSR_RFWM0_MASK 0x000000F0 22962306a36Sopenharmony_ci#define SSI_SFCSR_RFWM0(x) \ 23062306a36Sopenharmony_ci (((x) << SSI_SFCSR_RFWM0_SHIFT) & SSI_SFCSR_RFWM0_MASK) 23162306a36Sopenharmony_ci#define SSI_SFCSR_TFWM0_SHIFT 0 23262306a36Sopenharmony_ci#define SSI_SFCSR_TFWM0_MASK 0x0000000F 23362306a36Sopenharmony_ci#define SSI_SFCSR_TFWM0(x) \ 23462306a36Sopenharmony_ci (((x) << SSI_SFCSR_TFWM0_SHIFT) & SSI_SFCSR_TFWM0_MASK) 23562306a36Sopenharmony_ci 23662306a36Sopenharmony_ci/* SSI Test Register -- REG_SSI_STR 0x30 */ 23762306a36Sopenharmony_ci#define SSI_STR_TEST 0x00008000 23862306a36Sopenharmony_ci#define SSI_STR_RCK2TCK 0x00004000 23962306a36Sopenharmony_ci#define SSI_STR_RFS2TFS 0x00002000 24062306a36Sopenharmony_ci#define SSI_STR_RXSTATE(x) (((x) >> 8) & 0x1F) 24162306a36Sopenharmony_ci#define SSI_STR_TXD2RXD 0x00000080 24262306a36Sopenharmony_ci#define SSI_STR_TCK2RCK 0x00000040 24362306a36Sopenharmony_ci#define SSI_STR_TFS2RFS 0x00000020 24462306a36Sopenharmony_ci#define SSI_STR_TXSTATE(x) ((x) & 0x1F) 24562306a36Sopenharmony_ci 24662306a36Sopenharmony_ci/* SSI Option Register -- REG_SSI_SOR 0x34 */ 24762306a36Sopenharmony_ci#define SSI_SOR_CLKOFF 0x00000040 24862306a36Sopenharmony_ci#define SSI_SOR_RX_CLR 0x00000020 24962306a36Sopenharmony_ci#define SSI_SOR_TX_CLR 0x00000010 25062306a36Sopenharmony_ci#define SSI_SOR_xX_CLR(tx) ((tx) ? SSI_SOR_TX_CLR : SSI_SOR_RX_CLR) 25162306a36Sopenharmony_ci#define SSI_SOR_INIT 0x00000008 25262306a36Sopenharmony_ci#define SSI_SOR_WAIT_SHIFT 1 25362306a36Sopenharmony_ci#define SSI_SOR_WAIT_MASK 0x00000006 25462306a36Sopenharmony_ci#define SSI_SOR_WAIT(x) (((x) & 3) << SSI_SOR_WAIT_SHIFT) 25562306a36Sopenharmony_ci#define SSI_SOR_SYNRST 0x00000001 25662306a36Sopenharmony_ci 25762306a36Sopenharmony_ci/* SSI AC97 Control Register -- REG_SSI_SACNT 0x38 */ 25862306a36Sopenharmony_ci#define SSI_SACNT_FRDIV(x) (((x) & 0x3f) << 5) 25962306a36Sopenharmony_ci#define SSI_SACNT_WR 0x00000010 26062306a36Sopenharmony_ci#define SSI_SACNT_RD 0x00000008 26162306a36Sopenharmony_ci#define SSI_SACNT_RDWR_MASK 0x00000018 26262306a36Sopenharmony_ci#define SSI_SACNT_TIF 0x00000004 26362306a36Sopenharmony_ci#define SSI_SACNT_FV 0x00000002 26462306a36Sopenharmony_ci#define SSI_SACNT_AC97EN 0x00000001 26562306a36Sopenharmony_ci 26662306a36Sopenharmony_ci 26762306a36Sopenharmony_cistruct device; 26862306a36Sopenharmony_ci 26962306a36Sopenharmony_ci#if IS_ENABLED(CONFIG_DEBUG_FS) 27062306a36Sopenharmony_ci 27162306a36Sopenharmony_cistruct fsl_ssi_dbg { 27262306a36Sopenharmony_ci struct dentry *dbg_dir; 27362306a36Sopenharmony_ci 27462306a36Sopenharmony_ci struct { 27562306a36Sopenharmony_ci unsigned int rfrc; 27662306a36Sopenharmony_ci unsigned int tfrc; 27762306a36Sopenharmony_ci unsigned int cmdau; 27862306a36Sopenharmony_ci unsigned int cmddu; 27962306a36Sopenharmony_ci unsigned int rxt; 28062306a36Sopenharmony_ci unsigned int rdr1; 28162306a36Sopenharmony_ci unsigned int rdr0; 28262306a36Sopenharmony_ci unsigned int tde1; 28362306a36Sopenharmony_ci unsigned int tde0; 28462306a36Sopenharmony_ci unsigned int roe1; 28562306a36Sopenharmony_ci unsigned int roe0; 28662306a36Sopenharmony_ci unsigned int tue1; 28762306a36Sopenharmony_ci unsigned int tue0; 28862306a36Sopenharmony_ci unsigned int tfs; 28962306a36Sopenharmony_ci unsigned int rfs; 29062306a36Sopenharmony_ci unsigned int tls; 29162306a36Sopenharmony_ci unsigned int rls; 29262306a36Sopenharmony_ci unsigned int rff1; 29362306a36Sopenharmony_ci unsigned int rff0; 29462306a36Sopenharmony_ci unsigned int tfe1; 29562306a36Sopenharmony_ci unsigned int tfe0; 29662306a36Sopenharmony_ci } stats; 29762306a36Sopenharmony_ci}; 29862306a36Sopenharmony_ci 29962306a36Sopenharmony_civoid fsl_ssi_dbg_isr(struct fsl_ssi_dbg *ssi_dbg, u32 sisr); 30062306a36Sopenharmony_ci 30162306a36Sopenharmony_civoid fsl_ssi_debugfs_create(struct fsl_ssi_dbg *ssi_dbg, struct device *dev); 30262306a36Sopenharmony_ci 30362306a36Sopenharmony_civoid fsl_ssi_debugfs_remove(struct fsl_ssi_dbg *ssi_dbg); 30462306a36Sopenharmony_ci 30562306a36Sopenharmony_ci#else 30662306a36Sopenharmony_ci 30762306a36Sopenharmony_cistruct fsl_ssi_dbg { 30862306a36Sopenharmony_ci}; 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_cistatic inline void fsl_ssi_dbg_isr(struct fsl_ssi_dbg *stats, u32 sisr) 31162306a36Sopenharmony_ci{ 31262306a36Sopenharmony_ci} 31362306a36Sopenharmony_ci 31462306a36Sopenharmony_cistatic inline void fsl_ssi_debugfs_create(struct fsl_ssi_dbg *ssi_dbg, 31562306a36Sopenharmony_ci struct device *dev) 31662306a36Sopenharmony_ci{ 31762306a36Sopenharmony_ci} 31862306a36Sopenharmony_ci 31962306a36Sopenharmony_cistatic inline void fsl_ssi_debugfs_remove(struct fsl_ssi_dbg *ssi_dbg) 32062306a36Sopenharmony_ci{ 32162306a36Sopenharmony_ci} 32262306a36Sopenharmony_ci#endif /* ! IS_ENABLED(CONFIG_DEBUG_FS) */ 32362306a36Sopenharmony_ci 32462306a36Sopenharmony_ci#endif 325