162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * ALSA SoC CS43130 codec driver
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright 2017 Cirrus Logic, Inc.
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Author: Li Xu <li.xu@cirrus.com>
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#ifndef __CS43130_H__
1162306a36Sopenharmony_ci#define __CS43130_H__
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#include <linux/math.h>
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci/* CS43130 registers addresses */
1662306a36Sopenharmony_ci/* all reg address is shifted by a byte for control byte to be LSB */
1762306a36Sopenharmony_ci#define CS43130_FIRSTREG	0x010000
1862306a36Sopenharmony_ci#define CS43130_LASTREG		0x190000
1962306a36Sopenharmony_ci#define CS43130_CHIP_ID		0x00043130
2062306a36Sopenharmony_ci#define CS4399_CHIP_ID		0x00043990
2162306a36Sopenharmony_ci#define CS43131_CHIP_ID		0x00043131
2262306a36Sopenharmony_ci#define CS43198_CHIP_ID		0x00043198
2362306a36Sopenharmony_ci#define CS43130_DEVID_AB	0x010000	/* Device ID A & B [RO] */
2462306a36Sopenharmony_ci#define CS43130_DEVID_CD	0x010001	/* Device ID C & D [RO] */
2562306a36Sopenharmony_ci#define CS43130_DEVID_E		0x010002	/* Device ID E [RO] */
2662306a36Sopenharmony_ci#define CS43130_FAB_ID		0x010003        /* Fab ID [RO] */
2762306a36Sopenharmony_ci#define CS43130_REV_ID		0x010004        /* Revision ID [RO] */
2862306a36Sopenharmony_ci#define CS43130_SUBREV_ID	0x010005        /* Subrevision ID */
2962306a36Sopenharmony_ci#define CS43130_SYS_CLK_CTL_1	0x010006	/* System Clocking Ctl 1 */
3062306a36Sopenharmony_ci#define CS43130_SP_SRATE	0x01000B        /* Serial Port Sample Rate */
3162306a36Sopenharmony_ci#define CS43130_SP_BITSIZE	0x01000C        /* Serial Port Bit Size */
3262306a36Sopenharmony_ci#define CS43130_PAD_INT_CFG	0x01000D	/* Pad Interface Config */
3362306a36Sopenharmony_ci#define CS43130_DXD1            0x010010        /* DXD1 */
3462306a36Sopenharmony_ci#define CS43130_DXD7            0x010025        /* DXD7 */
3562306a36Sopenharmony_ci#define CS43130_DXD19           0x010026        /* DXD19 */
3662306a36Sopenharmony_ci#define CS43130_DXD17           0x010027        /* DXD17 */
3762306a36Sopenharmony_ci#define CS43130_DXD18           0x010028        /* DXD18 */
3862306a36Sopenharmony_ci#define CS43130_DXD12           0x01002C        /* DXD12 */
3962306a36Sopenharmony_ci#define CS43130_DXD8            0x01002E        /* DXD8 */
4062306a36Sopenharmony_ci#define CS43130_PWDN_CTL	0x020000        /* Power Down Ctl */
4162306a36Sopenharmony_ci#define CS43130_DXD2            0x020019        /* DXD2 */
4262306a36Sopenharmony_ci#define CS43130_CRYSTAL_SET	0x020052	/* Crystal Setting */
4362306a36Sopenharmony_ci#define CS43130_PLL_SET_1	0x030001        /* PLL Setting 1 */
4462306a36Sopenharmony_ci#define CS43130_PLL_SET_2	0x030002        /* PLL Setting 2 */
4562306a36Sopenharmony_ci#define CS43130_PLL_SET_3	0x030003        /* PLL Setting 3 */
4662306a36Sopenharmony_ci#define CS43130_PLL_SET_4	0x030004        /* PLL Setting 4 */
4762306a36Sopenharmony_ci#define CS43130_PLL_SET_5	0x030005        /* PLL Setting 5 */
4862306a36Sopenharmony_ci#define CS43130_PLL_SET_6	0x030008        /* PLL Setting 6 */
4962306a36Sopenharmony_ci#define CS43130_PLL_SET_7	0x03000A        /* PLL Setting 7 */
5062306a36Sopenharmony_ci#define CS43130_PLL_SET_8	0x03001B        /* PLL Setting 8 */
5162306a36Sopenharmony_ci#define CS43130_PLL_SET_9	0x040002        /* PLL Setting 9 */
5262306a36Sopenharmony_ci#define CS43130_PLL_SET_10	0x040003        /* PLL Setting 10 */
5362306a36Sopenharmony_ci#define CS43130_CLKOUT_CTL	0x040004        /* CLKOUT Ctl */
5462306a36Sopenharmony_ci#define CS43130_ASP_NUM_1	0x040010        /* ASP Numerator 1 */
5562306a36Sopenharmony_ci#define CS43130_ASP_NUM_2	0x040011        /* ASP Numerator 2 */
5662306a36Sopenharmony_ci#define CS43130_ASP_DEN_1	0x040012	/* ASP Denominator 1 */
5762306a36Sopenharmony_ci#define CS43130_ASP_DEN_2	0x040013	/* ASP Denominator 2 */
5862306a36Sopenharmony_ci#define CS43130_ASP_LRCK_HI_TIME_1 0x040014	/* ASP LRCK High Time 1 */
5962306a36Sopenharmony_ci#define CS43130_ASP_LRCK_HI_TIME_2 0x040015	/* ASP LRCK High Time 2 */
6062306a36Sopenharmony_ci#define CS43130_ASP_LRCK_PERIOD_1  0x040016	/* ASP LRCK Period 1 */
6162306a36Sopenharmony_ci#define CS43130_ASP_LRCK_PERIOD_2  0x040017	/* ASP LRCK Period 2 */
6262306a36Sopenharmony_ci#define CS43130_ASP_CLOCK_CONF	0x040018	/* ASP Clock Config */
6362306a36Sopenharmony_ci#define CS43130_ASP_FRAME_CONF	0x040019	/* ASP Frame Config */
6462306a36Sopenharmony_ci#define CS43130_XSP_NUM_1	0x040020        /* XSP Numerator 1 */
6562306a36Sopenharmony_ci#define CS43130_XSP_NUM_2	0x040021        /* XSP Numerator 2 */
6662306a36Sopenharmony_ci#define CS43130_XSP_DEN_1	0x040022	/* XSP Denominator 1 */
6762306a36Sopenharmony_ci#define CS43130_XSP_DEN_2	0x040023	/* XSP Denominator 2 */
6862306a36Sopenharmony_ci#define CS43130_XSP_LRCK_HI_TIME_1 0x040024	/* XSP LRCK High Time 1 */
6962306a36Sopenharmony_ci#define CS43130_XSP_LRCK_HI_TIME_2 0x040025	/* XSP LRCK High Time 2 */
7062306a36Sopenharmony_ci#define CS43130_XSP_LRCK_PERIOD_1  0x040026	/* XSP LRCK Period 1 */
7162306a36Sopenharmony_ci#define CS43130_XSP_LRCK_PERIOD_2  0x040027	/* XSP LRCK Period 2 */
7262306a36Sopenharmony_ci#define CS43130_XSP_CLOCK_CONF	0x040028	/* XSP Clock Config */
7362306a36Sopenharmony_ci#define CS43130_XSP_FRAME_CONF	0x040029	/* XSP Frame Config */
7462306a36Sopenharmony_ci#define CS43130_ASP_CH_1_LOC	0x050000	/* ASP Chan 1 Location */
7562306a36Sopenharmony_ci#define CS43130_ASP_CH_2_LOC	0x050001	/* ASP Chan 2 Location */
7662306a36Sopenharmony_ci#define CS43130_ASP_CH_1_SZ_EN	0x05000A	/* ASP Chan 1 Size, Enable */
7762306a36Sopenharmony_ci#define CS43130_ASP_CH_2_SZ_EN	0x05000B	/* ASP Chan 2 Size, Enable */
7862306a36Sopenharmony_ci#define CS43130_XSP_CH_1_LOC	0x060000	/* XSP Chan 1 Location */
7962306a36Sopenharmony_ci#define CS43130_XSP_CH_2_LOC	0x060001	/* XSP Chan 2 Location */
8062306a36Sopenharmony_ci#define CS43130_XSP_CH_1_SZ_EN	0x06000A	/* XSP Chan 1 Size, Enable */
8162306a36Sopenharmony_ci#define CS43130_XSP_CH_2_SZ_EN	0x06000B	/* XSP Chan 2 Size, Enable */
8262306a36Sopenharmony_ci#define CS43130_DSD_VOL_B	0x070000        /* DSD Volume B */
8362306a36Sopenharmony_ci#define CS43130_DSD_VOL_A	0x070001        /* DSD Volume A */
8462306a36Sopenharmony_ci#define CS43130_DSD_PATH_CTL_1	0x070002	/* DSD Proc Path Sig Ctl 1 */
8562306a36Sopenharmony_ci#define CS43130_DSD_INT_CFG	0x070003	/* DSD Interface Config */
8662306a36Sopenharmony_ci#define CS43130_DSD_PATH_CTL_2	0x070004	/* DSD Proc Path Sig Ctl 2 */
8762306a36Sopenharmony_ci#define CS43130_DSD_PCM_MIX_CTL	0x070005	/* DSD and PCM Mixing Ctl */
8862306a36Sopenharmony_ci#define CS43130_DSD_PATH_CTL_3	0x070006	/* DSD Proc Path Sig Ctl 3 */
8962306a36Sopenharmony_ci#define CS43130_HP_OUT_CTL_1	0x080000	/* HP Output Ctl 1 */
9062306a36Sopenharmony_ci#define CS43130_DXD16		0x080024	/* DXD16 */
9162306a36Sopenharmony_ci#define CS43130_DXD13		0x080032	/* DXD13 */
9262306a36Sopenharmony_ci#define CS43130_PCM_FILT_OPT	0x090000	/* PCM Filter Option */
9362306a36Sopenharmony_ci#define CS43130_PCM_VOL_B	0x090001        /* PCM Volume B */
9462306a36Sopenharmony_ci#define CS43130_PCM_VOL_A	0x090002        /* PCM Volume A */
9562306a36Sopenharmony_ci#define CS43130_PCM_PATH_CTL_1	0x090003	/* PCM Path Signal Ctl 1 */
9662306a36Sopenharmony_ci#define CS43130_PCM_PATH_CTL_2	0x090004	/* PCM Path Signal Ctl 2 */
9762306a36Sopenharmony_ci#define CS43130_DXD6		0x090097	/* DXD6 */
9862306a36Sopenharmony_ci#define CS43130_CLASS_H_CTL	0x0B0000	/* Class H Ctl */
9962306a36Sopenharmony_ci#define CS43130_DXD15		0x0B0005	/* DXD15 */
10062306a36Sopenharmony_ci#define CS43130_DXD14		0x0B0006	/* DXD14 */
10162306a36Sopenharmony_ci#define CS43130_DXD3		0x0C0002	/* DXD3 */
10262306a36Sopenharmony_ci#define CS43130_DXD10		0x0C0003	/* DXD10 */
10362306a36Sopenharmony_ci#define CS43130_DXD11		0x0C0005	/* DXD11 */
10462306a36Sopenharmony_ci#define CS43130_DXD9		0x0C0006	/* DXD9 */
10562306a36Sopenharmony_ci#define CS43130_DXD4		0x0C0009	/* DXD4 */
10662306a36Sopenharmony_ci#define CS43130_DXD5		0x0C000E	/* DXD5 */
10762306a36Sopenharmony_ci#define CS43130_HP_DETECT	0x0D0000        /* HP Detect */
10862306a36Sopenharmony_ci#define CS43130_HP_STATUS	0x0D0001        /* HP Status [RO] */
10962306a36Sopenharmony_ci#define CS43130_HP_LOAD_1	0x0E0000        /* HP Load 1 */
11062306a36Sopenharmony_ci#define CS43130_HP_MEAS_LOAD_1	0x0E0003	/* HP Load Measurement 1 */
11162306a36Sopenharmony_ci#define CS43130_HP_MEAS_LOAD_2	0x0E0004	/* HP Load Measurement 2 */
11262306a36Sopenharmony_ci#define CS43130_HP_DC_STAT_1	0x0E000D	/* HP DC Load Status 0 [RO] */
11362306a36Sopenharmony_ci#define CS43130_HP_DC_STAT_2	0x0E000E	/* HP DC Load Status 1 [RO] */
11462306a36Sopenharmony_ci#define CS43130_HP_AC_STAT_1	0x0E0010	/* HP AC Load Status 0 [RO] */
11562306a36Sopenharmony_ci#define CS43130_HP_AC_STAT_2	0x0E0011	/* HP AC Load Status 1 [RO] */
11662306a36Sopenharmony_ci#define CS43130_HP_LOAD_STAT	0x0E001A	/* HP Load Status [RO] */
11762306a36Sopenharmony_ci#define CS43130_INT_STATUS_1	0x0F0000	/* Interrupt Status 1 */
11862306a36Sopenharmony_ci#define CS43130_INT_STATUS_2	0x0F0001	/* Interrupt Status 2 */
11962306a36Sopenharmony_ci#define CS43130_INT_STATUS_3	0x0F0002	/* Interrupt Status 3 */
12062306a36Sopenharmony_ci#define CS43130_INT_STATUS_4	0x0F0003	/* Interrupt Status 4 */
12162306a36Sopenharmony_ci#define CS43130_INT_STATUS_5	0x0F0004	/* Interrupt Status 5 */
12262306a36Sopenharmony_ci#define CS43130_INT_MASK_1	0x0F0010        /* Interrupt Mask 1 */
12362306a36Sopenharmony_ci#define CS43130_INT_MASK_2	0x0F0011	/* Interrupt Mask 2 */
12462306a36Sopenharmony_ci#define CS43130_INT_MASK_3	0x0F0012        /* Interrupt Mask 3 */
12562306a36Sopenharmony_ci#define CS43130_INT_MASK_4	0x0F0013        /* Interrupt Mask 4 */
12662306a36Sopenharmony_ci#define CS43130_INT_MASK_5	0x0F0014        /* Interrupt Mask 5 */
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci#define CS43130_MCLK_SRC_SEL_MASK	0x03
12962306a36Sopenharmony_ci#define CS43130_MCLK_SRC_SEL_SHIFT	0
13062306a36Sopenharmony_ci#define CS43130_MCLK_INT_MASK		0x04
13162306a36Sopenharmony_ci#define CS43130_MCLK_INT_SHIFT		2
13262306a36Sopenharmony_ci#define CS43130_CH_BITSIZE_MASK		0x03
13362306a36Sopenharmony_ci#define CS43130_CH_EN_MASK		0x04
13462306a36Sopenharmony_ci#define CS43130_CH_EN_SHIFT		2
13562306a36Sopenharmony_ci#define CS43130_ASP_BITSIZE_MASK	0x03
13662306a36Sopenharmony_ci#define CS43130_XSP_BITSIZE_MASK	0x0C
13762306a36Sopenharmony_ci#define CS43130_XSP_BITSIZE_SHIFT	2
13862306a36Sopenharmony_ci#define CS43130_SP_BITSIZE_ASP_SHIFT	0
13962306a36Sopenharmony_ci#define CS43130_HP_DETECT_CTRL_SHIFT	6
14062306a36Sopenharmony_ci#define CS43130_HP_DETECT_CTRL_MASK     (0x03 << CS43130_HP_DETECT_CTRL_SHIFT)
14162306a36Sopenharmony_ci#define CS43130_HP_DETECT_INV_SHIFT	5
14262306a36Sopenharmony_ci#define CS43130_HP_DETECT_INV_MASK      (1 << CS43130_HP_DETECT_INV_SHIFT)
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ci/* CS43130_INT_MASK_1 */
14562306a36Sopenharmony_ci#define CS43130_HP_PLUG_INT_SHIFT       6
14662306a36Sopenharmony_ci#define CS43130_HP_PLUG_INT             (1 << CS43130_HP_PLUG_INT_SHIFT)
14762306a36Sopenharmony_ci#define CS43130_HP_UNPLUG_INT_SHIFT     5
14862306a36Sopenharmony_ci#define CS43130_HP_UNPLUG_INT           (1 << CS43130_HP_UNPLUG_INT_SHIFT)
14962306a36Sopenharmony_ci#define CS43130_XTAL_RDY_INT_SHIFT      4
15062306a36Sopenharmony_ci#define CS43130_XTAL_RDY_INT_MASK	0x10
15162306a36Sopenharmony_ci#define CS43130_XTAL_RDY_INT            (1 << CS43130_XTAL_RDY_INT_SHIFT)
15262306a36Sopenharmony_ci#define CS43130_XTAL_ERR_INT_SHIFT      3
15362306a36Sopenharmony_ci#define CS43130_XTAL_ERR_INT            (1 << CS43130_XTAL_ERR_INT_SHIFT)
15462306a36Sopenharmony_ci#define CS43130_PLL_RDY_INT_MASK	0x04
15562306a36Sopenharmony_ci#define CS43130_PLL_RDY_INT_SHIFT	2
15662306a36Sopenharmony_ci#define CS43130_PLL_RDY_INT		(1 << CS43130_PLL_RDY_INT_SHIFT)
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci/* CS43130_INT_MASK_4 */
15962306a36Sopenharmony_ci#define CS43130_INT_MASK_ALL		0xFF
16062306a36Sopenharmony_ci#define CS43130_HPLOAD_NO_DC_INT_SHIFT	7
16162306a36Sopenharmony_ci#define CS43130_HPLOAD_NO_DC_INT	(1 << CS43130_HPLOAD_NO_DC_INT_SHIFT)
16262306a36Sopenharmony_ci#define CS43130_HPLOAD_UNPLUG_INT_SHIFT	6
16362306a36Sopenharmony_ci#define CS43130_HPLOAD_UNPLUG_INT	(1 << CS43130_HPLOAD_UNPLUG_INT_SHIFT)
16462306a36Sopenharmony_ci#define CS43130_HPLOAD_OOR_INT_SHIFT	4
16562306a36Sopenharmony_ci#define CS43130_HPLOAD_OOR_INT		(1 << CS43130_HPLOAD_OOR_INT_SHIFT)
16662306a36Sopenharmony_ci#define CS43130_HPLOAD_AC_INT_SHIFT	3
16762306a36Sopenharmony_ci#define CS43130_HPLOAD_AC_INT		(1 << CS43130_HPLOAD_AC_INT_SHIFT)
16862306a36Sopenharmony_ci#define CS43130_HPLOAD_DC_INT_SHIFT	2
16962306a36Sopenharmony_ci#define CS43130_HPLOAD_DC_INT		(1 << CS43130_HPLOAD_DC_INT_SHIFT)
17062306a36Sopenharmony_ci#define CS43130_HPLOAD_OFF_INT_SHIFT	1
17162306a36Sopenharmony_ci#define CS43130_HPLOAD_OFF_INT		(1 << CS43130_HPLOAD_OFF_INT_SHIFT)
17262306a36Sopenharmony_ci#define CS43130_HPLOAD_ON_INT		1
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ci/* CS43130_HP_LOAD_1 */
17562306a36Sopenharmony_ci#define CS43130_HPLOAD_EN_SHIFT		7
17662306a36Sopenharmony_ci#define CS43130_HPLOAD_EN		(1 << CS43130_HPLOAD_EN_SHIFT)
17762306a36Sopenharmony_ci#define CS43130_HPLOAD_CHN_SEL_SHIFT	4
17862306a36Sopenharmony_ci#define CS43130_HPLOAD_CHN_SEL		(1 << CS43130_HPLOAD_CHN_SEL_SHIFT)
17962306a36Sopenharmony_ci#define CS43130_HPLOAD_AC_START_SHIFT	1
18062306a36Sopenharmony_ci#define CS43130_HPLOAD_AC_START		(1 << CS43130_HPLOAD_AC_START_SHIFT)
18162306a36Sopenharmony_ci#define CS43130_HPLOAD_DC_START		1
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci/* Reg CS43130_SP_BITSIZE */
18462306a36Sopenharmony_ci#define CS43130_SP_BIT_SIZE_8	0x03
18562306a36Sopenharmony_ci#define CS43130_SP_BIT_SIZE_16	0x02
18662306a36Sopenharmony_ci#define CS43130_SP_BIT_SIZE_24	0x01
18762306a36Sopenharmony_ci#define CS43130_SP_BIT_SIZE_32	0x00
18862306a36Sopenharmony_ci
18962306a36Sopenharmony_ci/* Reg CS43130_SP_CH_SZ_EN */
19062306a36Sopenharmony_ci#define CS43130_CH_BIT_SIZE_8	0x00
19162306a36Sopenharmony_ci#define CS43130_CH_BIT_SIZE_16	0x01
19262306a36Sopenharmony_ci#define CS43130_CH_BIT_SIZE_24	0x02
19362306a36Sopenharmony_ci#define CS43130_CH_BIT_SIZE_32	0x03
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci/* PLL */
19662306a36Sopenharmony_ci#define CS43130_PLL_START_MASK	0x01
19762306a36Sopenharmony_ci#define CS43130_PLL_MODE_MASK	0x02
19862306a36Sopenharmony_ci#define CS43130_PLL_MODE_SHIFT	1
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ci#define CS43130_PLL_REF_PREDIV_MASK	0x3
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ci#define CS43130_SP_STP_MASK	0x10
20362306a36Sopenharmony_ci#define CS43130_SP_STP_SHIFT	4
20462306a36Sopenharmony_ci#define CS43130_SP_5050_MASK	0x08
20562306a36Sopenharmony_ci#define CS43130_SP_5050_SHIFT	3
20662306a36Sopenharmony_ci#define CS43130_SP_FSD_MASK	0x07
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ci#define CS43130_SP_MODE_MASK	0x10
20962306a36Sopenharmony_ci#define CS43130_SP_MODE_SHIFT	4
21062306a36Sopenharmony_ci#define CS43130_SP_SCPOL_OUT_MASK	0x08
21162306a36Sopenharmony_ci#define CS43130_SP_SCPOL_OUT_SHIFT	3
21262306a36Sopenharmony_ci#define CS43130_SP_SCPOL_IN_MASK	0x04
21362306a36Sopenharmony_ci#define CS43130_SP_SCPOL_IN_SHIFT	2
21462306a36Sopenharmony_ci#define CS43130_SP_LCPOL_OUT_MASK	0x02
21562306a36Sopenharmony_ci#define CS43130_SP_LCPOL_OUT_SHIFT	1
21662306a36Sopenharmony_ci#define CS43130_SP_LCPOL_IN_MASK	0x01
21762306a36Sopenharmony_ci#define CS43130_SP_LCPOL_IN_SHIFT	0
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ci/* Reg CS43130_PWDN_CTL */
22062306a36Sopenharmony_ci#define CS43130_PDN_XSP_MASK	0x80
22162306a36Sopenharmony_ci#define CS43130_PDN_XSP_SHIFT	7
22262306a36Sopenharmony_ci#define CS43130_PDN_ASP_MASK	0x40
22362306a36Sopenharmony_ci#define CS43130_PDN_ASP_SHIFT	6
22462306a36Sopenharmony_ci#define CS43130_PDN_DSPIF_MASK	0x20
22562306a36Sopenharmony_ci#define CS43130_PDN_DSDIF_SHIFT	5
22662306a36Sopenharmony_ci#define CS43130_PDN_HP_MASK	0x10
22762306a36Sopenharmony_ci#define CS43130_PDN_HP_SHIFT	4
22862306a36Sopenharmony_ci#define CS43130_PDN_XTAL_MASK	0x08
22962306a36Sopenharmony_ci#define CS43130_PDN_XTAL_SHIFT	3
23062306a36Sopenharmony_ci#define CS43130_PDN_PLL_MASK	0x04
23162306a36Sopenharmony_ci#define CS43130_PDN_PLL_SHIFT	2
23262306a36Sopenharmony_ci#define CS43130_PDN_CLKOUT_MASK	0x02
23362306a36Sopenharmony_ci#define CS43130_PDN_CLKOUT_SHIFT	1
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci/* Reg CS43130_HP_OUT_CTL_1 */
23662306a36Sopenharmony_ci#define CS43130_HP_IN_EN_SHIFT		3
23762306a36Sopenharmony_ci#define CS43130_HP_IN_EN_MASK		0x08
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ci/* Reg CS43130_PAD_INT_CFG */
24062306a36Sopenharmony_ci#define CS43130_ASP_3ST_MASK		0x01
24162306a36Sopenharmony_ci#define CS43130_XSP_3ST_MASK		0x02
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ci/* Reg CS43130_PLL_SET_2 */
24462306a36Sopenharmony_ci#define CS43130_PLL_DIV_DATA_MASK	0x000000FF
24562306a36Sopenharmony_ci#define CS43130_PLL_DIV_FRAC_0_DATA_SHIFT	0
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_ci/* Reg CS43130_PLL_SET_3 */
24862306a36Sopenharmony_ci#define CS43130_PLL_DIV_FRAC_1_DATA_SHIFT	8
24962306a36Sopenharmony_ci
25062306a36Sopenharmony_ci/* Reg CS43130_PLL_SET_4 */
25162306a36Sopenharmony_ci#define CS43130_PLL_DIV_FRAC_2_DATA_SHIFT	16
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ci/* Reg CS43130_SP_DEN_1 */
25462306a36Sopenharmony_ci#define CS43130_SP_M_LSB_DATA_MASK	0x00FF
25562306a36Sopenharmony_ci#define CS43130_SP_M_LSB_DATA_SHIFT	0
25662306a36Sopenharmony_ci
25762306a36Sopenharmony_ci/* Reg CS43130_SP_DEN_2 */
25862306a36Sopenharmony_ci#define CS43130_SP_M_MSB_DATA_MASK	0xFF00
25962306a36Sopenharmony_ci#define CS43130_SP_M_MSB_DATA_SHIFT	8
26062306a36Sopenharmony_ci
26162306a36Sopenharmony_ci/* Reg CS43130_SP_NUM_1 */
26262306a36Sopenharmony_ci#define CS43130_SP_N_LSB_DATA_MASK	0x00FF
26362306a36Sopenharmony_ci#define CS43130_SP_N_LSB_DATA_SHIFT	0
26462306a36Sopenharmony_ci
26562306a36Sopenharmony_ci/* Reg CS43130_SP_NUM_2 */
26662306a36Sopenharmony_ci#define CS43130_SP_N_MSB_DATA_MASK	0xFF00
26762306a36Sopenharmony_ci#define CS43130_SP_N_MSB_DATA_SHIFT	8
26862306a36Sopenharmony_ci
26962306a36Sopenharmony_ci/* Reg CS43130_SP_LRCK_HI_TIME_1 */
27062306a36Sopenharmony_ci#define	CS43130_SP_LCHI_DATA_MASK	0x00FF
27162306a36Sopenharmony_ci#define CS43130_SP_LCHI_LSB_DATA_SHIFT	0
27262306a36Sopenharmony_ci
27362306a36Sopenharmony_ci/* Reg CS43130_SP_LRCK_HI_TIME_2 */
27462306a36Sopenharmony_ci#define CS43130_SP_LCHI_MSB_DATA_SHIFT	8
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ci/* Reg CS43130_SP_LRCK_PERIOD_1 */
27762306a36Sopenharmony_ci#define CS43130_SP_LCPR_DATA_MASK	0x00FF
27862306a36Sopenharmony_ci#define CS43130_SP_LCPR_LSB_DATA_SHIFT	0
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ci/* Reg CS43130_SP_LRCK_PERIOD_2 */
28162306a36Sopenharmony_ci#define CS43130_SP_LCPR_MSB_DATA_SHIFT	8
28262306a36Sopenharmony_ci
28362306a36Sopenharmony_ci#define CS43130_PCM_FORMATS (SNDRV_PCM_FMTBIT_S8  | \
28462306a36Sopenharmony_ci			SNDRV_PCM_FMTBIT_S16_LE | \
28562306a36Sopenharmony_ci			SNDRV_PCM_FMTBIT_S24_LE | \
28662306a36Sopenharmony_ci			SNDRV_PCM_FMTBIT_S32_LE)
28762306a36Sopenharmony_ci
28862306a36Sopenharmony_ci#define CS43130_DOP_FORMATS (SNDRV_PCM_FMTBIT_DSD_U16_LE | \
28962306a36Sopenharmony_ci			     SNDRV_PCM_FMTBIT_DSD_U16_BE | \
29062306a36Sopenharmony_ci			     SNDRV_PCM_FMTBIT_S24_LE)
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ci/* Reg CS43130_CRYSTAL_SET */
29362306a36Sopenharmony_ci#define CS43130_XTAL_IBIAS_MASK		0x07
29462306a36Sopenharmony_ci
29562306a36Sopenharmony_ci/* Reg CS43130_PATH_CTL_1 */
29662306a36Sopenharmony_ci#define CS43130_MUTE_MASK		0x03
29762306a36Sopenharmony_ci#define CS43130_MUTE_EN			0x03
29862306a36Sopenharmony_ci
29962306a36Sopenharmony_ci/* Reg CS43130_DSD_INT_CFG */
30062306a36Sopenharmony_ci#define CS43130_DSD_MASTER		0x04
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_ci/* Reg CS43130_DSD_PATH_CTL_2 */
30362306a36Sopenharmony_ci#define CS43130_DSD_SRC_MASK		0x60
30462306a36Sopenharmony_ci#define CS43130_DSD_SRC_SHIFT		5
30562306a36Sopenharmony_ci#define CS43130_DSD_EN_SHIFT		4
30662306a36Sopenharmony_ci#define CS43130_DSD_SPEED_MASK		0x04
30762306a36Sopenharmony_ci#define CS43130_DSD_SPEED_SHIFT		2
30862306a36Sopenharmony_ci
30962306a36Sopenharmony_ci/* Reg CS43130_DSD_PCM_MIX_CTL	*/
31062306a36Sopenharmony_ci#define CS43130_MIX_PCM_PREP_SHIFT	1
31162306a36Sopenharmony_ci#define CS43130_MIX_PCM_PREP_MASK	0x02
31262306a36Sopenharmony_ci
31362306a36Sopenharmony_ci#define CS43130_MIX_PCM_DSD_SHIFT	0
31462306a36Sopenharmony_ci#define CS43130_MIX_PCM_DSD_MASK	0x01
31562306a36Sopenharmony_ci
31662306a36Sopenharmony_ci/* Reg CS43130_HP_MEAS_LOAD */
31762306a36Sopenharmony_ci#define CS43130_HP_MEAS_LOAD_MASK	0x000000FF
31862306a36Sopenharmony_ci#define CS43130_HP_MEAS_LOAD_1_SHIFT	0
31962306a36Sopenharmony_ci#define CS43130_HP_MEAS_LOAD_2_SHIFT	8
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ci#define CS43130_MCLK_22M		22579200
32262306a36Sopenharmony_ci#define CS43130_MCLK_24M		24576000
32362306a36Sopenharmony_ci
32462306a36Sopenharmony_ci#define CS43130_LINEOUT_LOAD		5000
32562306a36Sopenharmony_ci#define CS43130_JACK_LINEOUT		(SND_JACK_MECHANICAL | SND_JACK_LINEOUT)
32662306a36Sopenharmony_ci#define CS43130_JACK_HEADPHONE		(SND_JACK_MECHANICAL | \
32762306a36Sopenharmony_ci					 SND_JACK_HEADPHONE)
32862306a36Sopenharmony_ci#define CS43130_JACK_MASK		(SND_JACK_MECHANICAL | \
32962306a36Sopenharmony_ci					 SND_JACK_LINEOUT | \
33062306a36Sopenharmony_ci					 SND_JACK_HEADPHONE)
33162306a36Sopenharmony_ci
33262306a36Sopenharmony_cienum cs43130_dsd_src {
33362306a36Sopenharmony_ci	CS43130_DSD_SRC_DSD = 0,
33462306a36Sopenharmony_ci	CS43130_DSD_SRC_ASP = 2,
33562306a36Sopenharmony_ci	CS43130_DSD_SRC_XSP = 3,
33662306a36Sopenharmony_ci};
33762306a36Sopenharmony_ci
33862306a36Sopenharmony_cienum cs43130_asp_rate {
33962306a36Sopenharmony_ci	CS43130_ASP_SPRATE_32K = 0,
34062306a36Sopenharmony_ci	CS43130_ASP_SPRATE_44_1K,
34162306a36Sopenharmony_ci	CS43130_ASP_SPRATE_48K,
34262306a36Sopenharmony_ci	CS43130_ASP_SPRATE_88_2K,
34362306a36Sopenharmony_ci	CS43130_ASP_SPRATE_96K,
34462306a36Sopenharmony_ci	CS43130_ASP_SPRATE_176_4K,
34562306a36Sopenharmony_ci	CS43130_ASP_SPRATE_192K,
34662306a36Sopenharmony_ci	CS43130_ASP_SPRATE_352_8K,
34762306a36Sopenharmony_ci	CS43130_ASP_SPRATE_384K,
34862306a36Sopenharmony_ci};
34962306a36Sopenharmony_ci
35062306a36Sopenharmony_cienum cs43130_mclk_src_sel {
35162306a36Sopenharmony_ci	CS43130_MCLK_SRC_EXT = 0,
35262306a36Sopenharmony_ci	CS43130_MCLK_SRC_PLL,
35362306a36Sopenharmony_ci	CS43130_MCLK_SRC_RCO
35462306a36Sopenharmony_ci};
35562306a36Sopenharmony_ci
35662306a36Sopenharmony_cienum cs43130_mclk_int_freq {
35762306a36Sopenharmony_ci	CS43130_MCLK_24P5 = 0,
35862306a36Sopenharmony_ci	CS43130_MCLK_22P5,
35962306a36Sopenharmony_ci};
36062306a36Sopenharmony_ci
36162306a36Sopenharmony_cienum cs43130_xtal_ibias {
36262306a36Sopenharmony_ci	CS43130_XTAL_UNUSED = -1,
36362306a36Sopenharmony_ci	CS43130_XTAL_IBIAS_15UA = 2,
36462306a36Sopenharmony_ci	CS43130_XTAL_IBIAS_12_5UA = 4,
36562306a36Sopenharmony_ci	CS43130_XTAL_IBIAS_7_5UA = 6,
36662306a36Sopenharmony_ci};
36762306a36Sopenharmony_ci
36862306a36Sopenharmony_cienum cs43130_dai_id {
36962306a36Sopenharmony_ci	CS43130_ASP_PCM_DAI = 0,
37062306a36Sopenharmony_ci	CS43130_ASP_DOP_DAI,
37162306a36Sopenharmony_ci	CS43130_XSP_DOP_DAI,
37262306a36Sopenharmony_ci	CS43130_XSP_DSD_DAI,
37362306a36Sopenharmony_ci	CS43130_DAI_ID_MAX,
37462306a36Sopenharmony_ci};
37562306a36Sopenharmony_ci
37662306a36Sopenharmony_cistruct cs43130_clk_gen {
37762306a36Sopenharmony_ci	unsigned int		mclk_int;
37862306a36Sopenharmony_ci	int			fs;
37962306a36Sopenharmony_ci	struct u16_fract	v;
38062306a36Sopenharmony_ci};
38162306a36Sopenharmony_ci
38262306a36Sopenharmony_ci/* frm_size = 16 */
38362306a36Sopenharmony_cistatic const struct cs43130_clk_gen cs43130_16_clk_gen[] = {
38462306a36Sopenharmony_ci	{ 22579200,	32000,		.v = { 10,	441, }, },
38562306a36Sopenharmony_ci	{ 22579200,	44100,		.v = { 1,	32, }, },
38662306a36Sopenharmony_ci	{ 22579200,	48000,		.v = { 5,	147, }, },
38762306a36Sopenharmony_ci	{ 22579200,	88200,		.v = { 1,	16, }, },
38862306a36Sopenharmony_ci	{ 22579200,	96000,		.v = { 10,	147, }, },
38962306a36Sopenharmony_ci	{ 22579200,	176400,		.v = { 1,	8, }, },
39062306a36Sopenharmony_ci	{ 22579200,	192000,		.v = { 20,	147, }, },
39162306a36Sopenharmony_ci	{ 22579200,	352800,		.v = { 1,	4, }, },
39262306a36Sopenharmony_ci	{ 22579200,	384000,		.v = { 40,	147, }, },
39362306a36Sopenharmony_ci	{ 24576000,	32000,		.v = { 1,	48, }, },
39462306a36Sopenharmony_ci	{ 24576000,	44100,		.v = { 147,	5120, }, },
39562306a36Sopenharmony_ci	{ 24576000,	48000,		.v = { 1,	32, }, },
39662306a36Sopenharmony_ci	{ 24576000,	88200,		.v = { 147,	2560, }, },
39762306a36Sopenharmony_ci	{ 24576000,	96000,		.v = { 1,	16, }, },
39862306a36Sopenharmony_ci	{ 24576000,	176400,		.v = { 147,	1280, }, },
39962306a36Sopenharmony_ci	{ 24576000,	192000,		.v = { 1,	8, }, },
40062306a36Sopenharmony_ci	{ 24576000,	352800,		.v = { 147,	640, }, },
40162306a36Sopenharmony_ci	{ 24576000,	384000,		.v = { 1,	4, }, },
40262306a36Sopenharmony_ci};
40362306a36Sopenharmony_ci
40462306a36Sopenharmony_ci/* frm_size = 32 */
40562306a36Sopenharmony_cistatic const struct cs43130_clk_gen cs43130_32_clk_gen[] = {
40662306a36Sopenharmony_ci	{ 22579200,	32000,		.v = { 20,	441, }, },
40762306a36Sopenharmony_ci	{ 22579200,	44100,		.v = { 1,	16, }, },
40862306a36Sopenharmony_ci	{ 22579200,	48000,		.v = { 10,	147, }, },
40962306a36Sopenharmony_ci	{ 22579200,	88200,		.v = { 1,	8, }, },
41062306a36Sopenharmony_ci	{ 22579200,	96000,		.v = { 20,	147, }, },
41162306a36Sopenharmony_ci	{ 22579200,	176400,		.v = { 1,	4, }, },
41262306a36Sopenharmony_ci	{ 22579200,	192000,		.v = { 40,	147, }, },
41362306a36Sopenharmony_ci	{ 22579200,	352800,		.v = { 1,	2, }, },
41462306a36Sopenharmony_ci	{ 22579200,	384000,		.v = { 80,	147, }, },
41562306a36Sopenharmony_ci	{ 24576000,	32000,		.v = { 1,	24, }, },
41662306a36Sopenharmony_ci	{ 24576000,	44100,		.v = { 147,	2560, }, },
41762306a36Sopenharmony_ci	{ 24576000,	48000,		.v = { 1,	16, }, },
41862306a36Sopenharmony_ci	{ 24576000,	88200,		.v = { 147,	1280, }, },
41962306a36Sopenharmony_ci	{ 24576000,	96000,		.v = { 1,	8, }, },
42062306a36Sopenharmony_ci	{ 24576000,	176400,		.v = { 147,	640, }, },
42162306a36Sopenharmony_ci	{ 24576000,	192000,		.v = { 1,	4, }, },
42262306a36Sopenharmony_ci	{ 24576000,	352800,		.v = { 147,	320, }, },
42362306a36Sopenharmony_ci	{ 24576000,	384000,		.v = { 1,	2, }, },
42462306a36Sopenharmony_ci};
42562306a36Sopenharmony_ci
42662306a36Sopenharmony_ci/* frm_size = 48 */
42762306a36Sopenharmony_cistatic const struct cs43130_clk_gen cs43130_48_clk_gen[] = {
42862306a36Sopenharmony_ci	{ 22579200,	32000,		.v = { 100,	147, }, },
42962306a36Sopenharmony_ci	{ 22579200,	44100,		.v = { 3,	32, }, },
43062306a36Sopenharmony_ci	{ 22579200,	48000,		.v = { 5,	49, }, },
43162306a36Sopenharmony_ci	{ 22579200,	88200,		.v = { 3,	16, }, },
43262306a36Sopenharmony_ci	{ 22579200,	96000,		.v = { 10,	49, }, },
43362306a36Sopenharmony_ci	{ 22579200,	176400,		.v = { 3,	8, }, },
43462306a36Sopenharmony_ci	{ 22579200,	192000,		.v = { 20,	49, }, },
43562306a36Sopenharmony_ci	{ 22579200,	352800,		.v = { 3,	4, }, },
43662306a36Sopenharmony_ci	{ 22579200,	384000,		.v = { 40,	49, }, },
43762306a36Sopenharmony_ci	{ 24576000,	32000,		.v = { 1,	16, }, },
43862306a36Sopenharmony_ci	{ 24576000,	44100,		.v = { 441,	5120, }, },
43962306a36Sopenharmony_ci	{ 24576000,	48000,		.v = { 3,	32, }, },
44062306a36Sopenharmony_ci	{ 24576000,	88200,		.v = { 441,	2560, }, },
44162306a36Sopenharmony_ci	{ 24576000,	96000,		.v = { 3,	16, }, },
44262306a36Sopenharmony_ci	{ 24576000,	176400,		.v = { 441,	1280, }, },
44362306a36Sopenharmony_ci	{ 24576000,	192000,		.v = { 3,	8, }, },
44462306a36Sopenharmony_ci	{ 24576000,	352800,		.v = { 441,	640, }, },
44562306a36Sopenharmony_ci	{ 24576000,	384000,		.v = { 3,	4, }, },
44662306a36Sopenharmony_ci};
44762306a36Sopenharmony_ci
44862306a36Sopenharmony_ci/* frm_size = 64 */
44962306a36Sopenharmony_cistatic const struct cs43130_clk_gen cs43130_64_clk_gen[] = {
45062306a36Sopenharmony_ci	{ 22579200,	32000,		.v = { 40,	441, }, },
45162306a36Sopenharmony_ci	{ 22579200,	44100,		.v = { 1,	8, }, },
45262306a36Sopenharmony_ci	{ 22579200,	48000,		.v = { 20,	147, }, },
45362306a36Sopenharmony_ci	{ 22579200,	88200,		.v = { 1,	4, }, },
45462306a36Sopenharmony_ci	{ 22579200,	96000,		.v = { 40,	147, }, },
45562306a36Sopenharmony_ci	{ 22579200,	176400,		.v = { 1,	2, }, },
45662306a36Sopenharmony_ci	{ 22579200,	192000,		.v = { 80,	147, }, },
45762306a36Sopenharmony_ci	{ 22579200,	352800,		.v = { 1,	1, }, },
45862306a36Sopenharmony_ci	{ 24576000,	32000,		.v = { 1,	12, }, },
45962306a36Sopenharmony_ci	{ 24576000,	44100,		.v = { 147,	1280, }, },
46062306a36Sopenharmony_ci	{ 24576000,	48000,		.v = { 1,	8, }, },
46162306a36Sopenharmony_ci	{ 24576000,	88200,		.v = { 147,	640, }, },
46262306a36Sopenharmony_ci	{ 24576000,	96000,		.v = { 1,	4, }, },
46362306a36Sopenharmony_ci	{ 24576000,	176400,		.v = { 147,	320, }, },
46462306a36Sopenharmony_ci	{ 24576000,	192000,		.v = { 1,	2, }, },
46562306a36Sopenharmony_ci	{ 24576000,	352800,		.v = { 147,	160, }, },
46662306a36Sopenharmony_ci	{ 24576000,	384000,		.v = { 1,	1, }, },
46762306a36Sopenharmony_ci};
46862306a36Sopenharmony_ci
46962306a36Sopenharmony_cistruct cs43130_bitwidth_map {
47062306a36Sopenharmony_ci	unsigned int bitwidth;
47162306a36Sopenharmony_ci	u8 sp_bit;
47262306a36Sopenharmony_ci	u8 ch_bit;
47362306a36Sopenharmony_ci};
47462306a36Sopenharmony_ci
47562306a36Sopenharmony_cistruct cs43130_rate_map {
47662306a36Sopenharmony_ci	int fs;
47762306a36Sopenharmony_ci	int val;
47862306a36Sopenharmony_ci};
47962306a36Sopenharmony_ci
48062306a36Sopenharmony_ci#define HP_LEFT			0
48162306a36Sopenharmony_ci#define HP_RIGHT		1
48262306a36Sopenharmony_ci#define CS43130_AC_FREQ		10
48362306a36Sopenharmony_ci#define CS43130_DC_THRESHOLD	2
48462306a36Sopenharmony_ci
48562306a36Sopenharmony_ci#define CS43130_NUM_SUPPLIES	5
48662306a36Sopenharmony_cistatic const char *const cs43130_supply_names[CS43130_NUM_SUPPLIES] = {
48762306a36Sopenharmony_ci	"VA",
48862306a36Sopenharmony_ci	"VP",
48962306a36Sopenharmony_ci	"VCP",
49062306a36Sopenharmony_ci	"VD",
49162306a36Sopenharmony_ci	"VL",
49262306a36Sopenharmony_ci};
49362306a36Sopenharmony_ci
49462306a36Sopenharmony_ci#define CS43130_NUM_INT		5       /* number of interrupt status reg */
49562306a36Sopenharmony_ci
49662306a36Sopenharmony_cistruct cs43130_dai {
49762306a36Sopenharmony_ci	unsigned int			sclk;
49862306a36Sopenharmony_ci	unsigned int			dai_format;
49962306a36Sopenharmony_ci	unsigned int			dai_mode;
50062306a36Sopenharmony_ci};
50162306a36Sopenharmony_ci
50262306a36Sopenharmony_cistruct	cs43130_private {
50362306a36Sopenharmony_ci	struct snd_soc_component	*component;
50462306a36Sopenharmony_ci	struct regmap			*regmap;
50562306a36Sopenharmony_ci	struct regulator_bulk_data	supplies[CS43130_NUM_SUPPLIES];
50662306a36Sopenharmony_ci	struct gpio_desc		*reset_gpio;
50762306a36Sopenharmony_ci	unsigned int			dev_id; /* codec device ID */
50862306a36Sopenharmony_ci	int				xtal_ibias;
50962306a36Sopenharmony_ci
51062306a36Sopenharmony_ci	/* shared by both DAIs */
51162306a36Sopenharmony_ci	struct mutex			clk_mutex;
51262306a36Sopenharmony_ci	int				clk_req;
51362306a36Sopenharmony_ci	bool				pll_bypass;
51462306a36Sopenharmony_ci	struct completion		xtal_rdy;
51562306a36Sopenharmony_ci	struct completion		pll_rdy;
51662306a36Sopenharmony_ci	unsigned int			mclk;
51762306a36Sopenharmony_ci	unsigned int			mclk_int;
51862306a36Sopenharmony_ci	int				mclk_int_src;
51962306a36Sopenharmony_ci
52062306a36Sopenharmony_ci	/* DAI specific */
52162306a36Sopenharmony_ci	struct cs43130_dai		dais[CS43130_DAI_ID_MAX];
52262306a36Sopenharmony_ci
52362306a36Sopenharmony_ci	/* HP load specific */
52462306a36Sopenharmony_ci	bool				dc_meas;
52562306a36Sopenharmony_ci	bool				ac_meas;
52662306a36Sopenharmony_ci	bool				hpload_done;
52762306a36Sopenharmony_ci	struct completion		hpload_evt;
52862306a36Sopenharmony_ci	unsigned int			hpload_stat;
52962306a36Sopenharmony_ci	u16				hpload_dc[2];
53062306a36Sopenharmony_ci	u16				dc_threshold[CS43130_DC_THRESHOLD];
53162306a36Sopenharmony_ci	u16				ac_freq[CS43130_AC_FREQ];
53262306a36Sopenharmony_ci	u16				hpload_ac[CS43130_AC_FREQ][2];
53362306a36Sopenharmony_ci	struct workqueue_struct		*wq;
53462306a36Sopenharmony_ci	struct work_struct		work;
53562306a36Sopenharmony_ci	struct snd_soc_jack		jack;
53662306a36Sopenharmony_ci};
53762306a36Sopenharmony_ci
53862306a36Sopenharmony_ci#endif	/* __CS43130_H__ */
539