162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * linux/sound/wm8903.h -- Platform data for WM8903
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright 2010 Wolfson Microelectronics. PLC.
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#ifndef __LINUX_SND_WM8903_H
962306a36Sopenharmony_ci#define __LINUX_SND_WM8903_H
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci/*
1262306a36Sopenharmony_ci * Used to enable configuration of a GPIO to all zeros; a gpio_cfg value of
1362306a36Sopenharmony_ci * zero in platform data means "don't touch this pin".
1462306a36Sopenharmony_ci */
1562306a36Sopenharmony_ci#define WM8903_GPIO_CONFIG_ZERO 0x8000
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci/*
1862306a36Sopenharmony_ci * R6 (0x06) - Mic Bias Control 0
1962306a36Sopenharmony_ci */
2062306a36Sopenharmony_ci#define WM8903_MICDET_THR_MASK                  0x0030  /* MICDET_THR - [5:4] */
2162306a36Sopenharmony_ci#define WM8903_MICDET_THR_SHIFT                      4  /* MICDET_THR - [5:4] */
2262306a36Sopenharmony_ci#define WM8903_MICDET_THR_WIDTH                      2  /* MICDET_THR - [5:4] */
2362306a36Sopenharmony_ci#define WM8903_MICSHORT_THR_MASK                0x000C  /* MICSHORT_THR - [3:2] */
2462306a36Sopenharmony_ci#define WM8903_MICSHORT_THR_SHIFT                    2  /* MICSHORT_THR - [3:2] */
2562306a36Sopenharmony_ci#define WM8903_MICSHORT_THR_WIDTH                    2  /* MICSHORT_THR - [3:2] */
2662306a36Sopenharmony_ci#define WM8903_MICDET_ENA                       0x0002  /* MICDET_ENA */
2762306a36Sopenharmony_ci#define WM8903_MICDET_ENA_MASK                  0x0002  /* MICDET_ENA */
2862306a36Sopenharmony_ci#define WM8903_MICDET_ENA_SHIFT                      1  /* MICDET_ENA */
2962306a36Sopenharmony_ci#define WM8903_MICDET_ENA_WIDTH                      1  /* MICDET_ENA */
3062306a36Sopenharmony_ci#define WM8903_MICBIAS_ENA                      0x0001  /* MICBIAS_ENA */
3162306a36Sopenharmony_ci#define WM8903_MICBIAS_ENA_MASK                 0x0001  /* MICBIAS_ENA */
3262306a36Sopenharmony_ci#define WM8903_MICBIAS_ENA_SHIFT                     0  /* MICBIAS_ENA */
3362306a36Sopenharmony_ci#define WM8903_MICBIAS_ENA_WIDTH                     1  /* MICBIAS_ENA */
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci/*
3662306a36Sopenharmony_ci * WM8903_GPn_FN values
3762306a36Sopenharmony_ci *
3862306a36Sopenharmony_ci * See datasheets for list of valid values per pin
3962306a36Sopenharmony_ci */
4062306a36Sopenharmony_ci#define WM8903_GPn_FN_GPIO_OUTPUT                    0
4162306a36Sopenharmony_ci#define WM8903_GPn_FN_BCLK                           1
4262306a36Sopenharmony_ci#define WM8903_GPn_FN_IRQ_OUTPT                      2
4362306a36Sopenharmony_ci#define WM8903_GPn_FN_GPIO_INPUT                     3
4462306a36Sopenharmony_ci#define WM8903_GPn_FN_MICBIAS_CURRENT_DETECT         4
4562306a36Sopenharmony_ci#define WM8903_GPn_FN_MICBIAS_SHORT_DETECT           5
4662306a36Sopenharmony_ci#define WM8903_GPn_FN_DMIC_LR_CLK_OUTPUT             6
4762306a36Sopenharmony_ci#define WM8903_GPn_FN_FLL_LOCK_OUTPUT                8
4862306a36Sopenharmony_ci#define WM8903_GPn_FN_FLL_CLOCK_OUTPUT               9
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci/*
5162306a36Sopenharmony_ci * R116 (0x74) - GPIO Control 1
5262306a36Sopenharmony_ci */
5362306a36Sopenharmony_ci#define WM8903_GP1_FN_MASK                      0x1F00  /* GP1_FN - [12:8] */
5462306a36Sopenharmony_ci#define WM8903_GP1_FN_SHIFT                          8  /* GP1_FN - [12:8] */
5562306a36Sopenharmony_ci#define WM8903_GP1_FN_WIDTH                          5  /* GP1_FN - [12:8] */
5662306a36Sopenharmony_ci#define WM8903_GP1_DIR                          0x0080  /* GP1_DIR */
5762306a36Sopenharmony_ci#define WM8903_GP1_DIR_MASK                     0x0080  /* GP1_DIR */
5862306a36Sopenharmony_ci#define WM8903_GP1_DIR_SHIFT                         7  /* GP1_DIR */
5962306a36Sopenharmony_ci#define WM8903_GP1_DIR_WIDTH                         1  /* GP1_DIR */
6062306a36Sopenharmony_ci#define WM8903_GP1_OP_CFG                       0x0040  /* GP1_OP_CFG */
6162306a36Sopenharmony_ci#define WM8903_GP1_OP_CFG_MASK                  0x0040  /* GP1_OP_CFG */
6262306a36Sopenharmony_ci#define WM8903_GP1_OP_CFG_SHIFT                      6  /* GP1_OP_CFG */
6362306a36Sopenharmony_ci#define WM8903_GP1_OP_CFG_WIDTH                      1  /* GP1_OP_CFG */
6462306a36Sopenharmony_ci#define WM8903_GP1_IP_CFG                       0x0020  /* GP1_IP_CFG */
6562306a36Sopenharmony_ci#define WM8903_GP1_IP_CFG_MASK                  0x0020  /* GP1_IP_CFG */
6662306a36Sopenharmony_ci#define WM8903_GP1_IP_CFG_SHIFT                      5  /* GP1_IP_CFG */
6762306a36Sopenharmony_ci#define WM8903_GP1_IP_CFG_WIDTH                      1  /* GP1_IP_CFG */
6862306a36Sopenharmony_ci#define WM8903_GP1_LVL                          0x0010  /* GP1_LVL */
6962306a36Sopenharmony_ci#define WM8903_GP1_LVL_MASK                     0x0010  /* GP1_LVL */
7062306a36Sopenharmony_ci#define WM8903_GP1_LVL_SHIFT                         4  /* GP1_LVL */
7162306a36Sopenharmony_ci#define WM8903_GP1_LVL_WIDTH                         1  /* GP1_LVL */
7262306a36Sopenharmony_ci#define WM8903_GP1_PD                           0x0008  /* GP1_PD */
7362306a36Sopenharmony_ci#define WM8903_GP1_PD_MASK                      0x0008  /* GP1_PD */
7462306a36Sopenharmony_ci#define WM8903_GP1_PD_SHIFT                          3  /* GP1_PD */
7562306a36Sopenharmony_ci#define WM8903_GP1_PD_WIDTH                          1  /* GP1_PD */
7662306a36Sopenharmony_ci#define WM8903_GP1_PU                           0x0004  /* GP1_PU */
7762306a36Sopenharmony_ci#define WM8903_GP1_PU_MASK                      0x0004  /* GP1_PU */
7862306a36Sopenharmony_ci#define WM8903_GP1_PU_SHIFT                          2  /* GP1_PU */
7962306a36Sopenharmony_ci#define WM8903_GP1_PU_WIDTH                          1  /* GP1_PU */
8062306a36Sopenharmony_ci#define WM8903_GP1_INTMODE                      0x0002  /* GP1_INTMODE */
8162306a36Sopenharmony_ci#define WM8903_GP1_INTMODE_MASK                 0x0002  /* GP1_INTMODE */
8262306a36Sopenharmony_ci#define WM8903_GP1_INTMODE_SHIFT                     1  /* GP1_INTMODE */
8362306a36Sopenharmony_ci#define WM8903_GP1_INTMODE_WIDTH                     1  /* GP1_INTMODE */
8462306a36Sopenharmony_ci#define WM8903_GP1_DB                           0x0001  /* GP1_DB */
8562306a36Sopenharmony_ci#define WM8903_GP1_DB_MASK                      0x0001  /* GP1_DB */
8662306a36Sopenharmony_ci#define WM8903_GP1_DB_SHIFT                          0  /* GP1_DB */
8762306a36Sopenharmony_ci#define WM8903_GP1_DB_WIDTH                          1  /* GP1_DB */
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci/*
9062306a36Sopenharmony_ci * R117 (0x75) - GPIO Control 2
9162306a36Sopenharmony_ci */
9262306a36Sopenharmony_ci#define WM8903_GP2_FN_MASK                      0x1F00  /* GP2_FN - [12:8] */
9362306a36Sopenharmony_ci#define WM8903_GP2_FN_SHIFT                          8  /* GP2_FN - [12:8] */
9462306a36Sopenharmony_ci#define WM8903_GP2_FN_WIDTH                          5  /* GP2_FN - [12:8] */
9562306a36Sopenharmony_ci#define WM8903_GP2_DIR                          0x0080  /* GP2_DIR */
9662306a36Sopenharmony_ci#define WM8903_GP2_DIR_MASK                     0x0080  /* GP2_DIR */
9762306a36Sopenharmony_ci#define WM8903_GP2_DIR_SHIFT                         7  /* GP2_DIR */
9862306a36Sopenharmony_ci#define WM8903_GP2_DIR_WIDTH                         1  /* GP2_DIR */
9962306a36Sopenharmony_ci#define WM8903_GP2_OP_CFG                       0x0040  /* GP2_OP_CFG */
10062306a36Sopenharmony_ci#define WM8903_GP2_OP_CFG_MASK                  0x0040  /* GP2_OP_CFG */
10162306a36Sopenharmony_ci#define WM8903_GP2_OP_CFG_SHIFT                      6  /* GP2_OP_CFG */
10262306a36Sopenharmony_ci#define WM8903_GP2_OP_CFG_WIDTH                      1  /* GP2_OP_CFG */
10362306a36Sopenharmony_ci#define WM8903_GP2_IP_CFG                       0x0020  /* GP2_IP_CFG */
10462306a36Sopenharmony_ci#define WM8903_GP2_IP_CFG_MASK                  0x0020  /* GP2_IP_CFG */
10562306a36Sopenharmony_ci#define WM8903_GP2_IP_CFG_SHIFT                      5  /* GP2_IP_CFG */
10662306a36Sopenharmony_ci#define WM8903_GP2_IP_CFG_WIDTH                      1  /* GP2_IP_CFG */
10762306a36Sopenharmony_ci#define WM8903_GP2_LVL                          0x0010  /* GP2_LVL */
10862306a36Sopenharmony_ci#define WM8903_GP2_LVL_MASK                     0x0010  /* GP2_LVL */
10962306a36Sopenharmony_ci#define WM8903_GP2_LVL_SHIFT                         4  /* GP2_LVL */
11062306a36Sopenharmony_ci#define WM8903_GP2_LVL_WIDTH                         1  /* GP2_LVL */
11162306a36Sopenharmony_ci#define WM8903_GP2_PD                           0x0008  /* GP2_PD */
11262306a36Sopenharmony_ci#define WM8903_GP2_PD_MASK                      0x0008  /* GP2_PD */
11362306a36Sopenharmony_ci#define WM8903_GP2_PD_SHIFT                          3  /* GP2_PD */
11462306a36Sopenharmony_ci#define WM8903_GP2_PD_WIDTH                          1  /* GP2_PD */
11562306a36Sopenharmony_ci#define WM8903_GP2_PU                           0x0004  /* GP2_PU */
11662306a36Sopenharmony_ci#define WM8903_GP2_PU_MASK                      0x0004  /* GP2_PU */
11762306a36Sopenharmony_ci#define WM8903_GP2_PU_SHIFT                          2  /* GP2_PU */
11862306a36Sopenharmony_ci#define WM8903_GP2_PU_WIDTH                          1  /* GP2_PU */
11962306a36Sopenharmony_ci#define WM8903_GP2_INTMODE                      0x0002  /* GP2_INTMODE */
12062306a36Sopenharmony_ci#define WM8903_GP2_INTMODE_MASK                 0x0002  /* GP2_INTMODE */
12162306a36Sopenharmony_ci#define WM8903_GP2_INTMODE_SHIFT                     1  /* GP2_INTMODE */
12262306a36Sopenharmony_ci#define WM8903_GP2_INTMODE_WIDTH                     1  /* GP2_INTMODE */
12362306a36Sopenharmony_ci#define WM8903_GP2_DB                           0x0001  /* GP2_DB */
12462306a36Sopenharmony_ci#define WM8903_GP2_DB_MASK                      0x0001  /* GP2_DB */
12562306a36Sopenharmony_ci#define WM8903_GP2_DB_SHIFT                          0  /* GP2_DB */
12662306a36Sopenharmony_ci#define WM8903_GP2_DB_WIDTH                          1  /* GP2_DB */
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci/*
12962306a36Sopenharmony_ci * R118 (0x76) - GPIO Control 3
13062306a36Sopenharmony_ci */
13162306a36Sopenharmony_ci#define WM8903_GP3_FN_MASK                      0x1F00  /* GP3_FN - [12:8] */
13262306a36Sopenharmony_ci#define WM8903_GP3_FN_SHIFT                          8  /* GP3_FN - [12:8] */
13362306a36Sopenharmony_ci#define WM8903_GP3_FN_WIDTH                          5  /* GP3_FN - [12:8] */
13462306a36Sopenharmony_ci#define WM8903_GP3_DIR                          0x0080  /* GP3_DIR */
13562306a36Sopenharmony_ci#define WM8903_GP3_DIR_MASK                     0x0080  /* GP3_DIR */
13662306a36Sopenharmony_ci#define WM8903_GP3_DIR_SHIFT                         7  /* GP3_DIR */
13762306a36Sopenharmony_ci#define WM8903_GP3_DIR_WIDTH                         1  /* GP3_DIR */
13862306a36Sopenharmony_ci#define WM8903_GP3_OP_CFG                       0x0040  /* GP3_OP_CFG */
13962306a36Sopenharmony_ci#define WM8903_GP3_OP_CFG_MASK                  0x0040  /* GP3_OP_CFG */
14062306a36Sopenharmony_ci#define WM8903_GP3_OP_CFG_SHIFT                      6  /* GP3_OP_CFG */
14162306a36Sopenharmony_ci#define WM8903_GP3_OP_CFG_WIDTH                      1  /* GP3_OP_CFG */
14262306a36Sopenharmony_ci#define WM8903_GP3_IP_CFG                       0x0020  /* GP3_IP_CFG */
14362306a36Sopenharmony_ci#define WM8903_GP3_IP_CFG_MASK                  0x0020  /* GP3_IP_CFG */
14462306a36Sopenharmony_ci#define WM8903_GP3_IP_CFG_SHIFT                      5  /* GP3_IP_CFG */
14562306a36Sopenharmony_ci#define WM8903_GP3_IP_CFG_WIDTH                      1  /* GP3_IP_CFG */
14662306a36Sopenharmony_ci#define WM8903_GP3_LVL                          0x0010  /* GP3_LVL */
14762306a36Sopenharmony_ci#define WM8903_GP3_LVL_MASK                     0x0010  /* GP3_LVL */
14862306a36Sopenharmony_ci#define WM8903_GP3_LVL_SHIFT                         4  /* GP3_LVL */
14962306a36Sopenharmony_ci#define WM8903_GP3_LVL_WIDTH                         1  /* GP3_LVL */
15062306a36Sopenharmony_ci#define WM8903_GP3_PD                           0x0008  /* GP3_PD */
15162306a36Sopenharmony_ci#define WM8903_GP3_PD_MASK                      0x0008  /* GP3_PD */
15262306a36Sopenharmony_ci#define WM8903_GP3_PD_SHIFT                          3  /* GP3_PD */
15362306a36Sopenharmony_ci#define WM8903_GP3_PD_WIDTH                          1  /* GP3_PD */
15462306a36Sopenharmony_ci#define WM8903_GP3_PU                           0x0004  /* GP3_PU */
15562306a36Sopenharmony_ci#define WM8903_GP3_PU_MASK                      0x0004  /* GP3_PU */
15662306a36Sopenharmony_ci#define WM8903_GP3_PU_SHIFT                          2  /* GP3_PU */
15762306a36Sopenharmony_ci#define WM8903_GP3_PU_WIDTH                          1  /* GP3_PU */
15862306a36Sopenharmony_ci#define WM8903_GP3_INTMODE                      0x0002  /* GP3_INTMODE */
15962306a36Sopenharmony_ci#define WM8903_GP3_INTMODE_MASK                 0x0002  /* GP3_INTMODE */
16062306a36Sopenharmony_ci#define WM8903_GP3_INTMODE_SHIFT                     1  /* GP3_INTMODE */
16162306a36Sopenharmony_ci#define WM8903_GP3_INTMODE_WIDTH                     1  /* GP3_INTMODE */
16262306a36Sopenharmony_ci#define WM8903_GP3_DB                           0x0001  /* GP3_DB */
16362306a36Sopenharmony_ci#define WM8903_GP3_DB_MASK                      0x0001  /* GP3_DB */
16462306a36Sopenharmony_ci#define WM8903_GP3_DB_SHIFT                          0  /* GP3_DB */
16562306a36Sopenharmony_ci#define WM8903_GP3_DB_WIDTH                          1  /* GP3_DB */
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci/*
16862306a36Sopenharmony_ci * R119 (0x77) - GPIO Control 4
16962306a36Sopenharmony_ci */
17062306a36Sopenharmony_ci#define WM8903_GP4_FN_MASK                      0x1F00  /* GP4_FN - [12:8] */
17162306a36Sopenharmony_ci#define WM8903_GP4_FN_SHIFT                          8  /* GP4_FN - [12:8] */
17262306a36Sopenharmony_ci#define WM8903_GP4_FN_WIDTH                          5  /* GP4_FN - [12:8] */
17362306a36Sopenharmony_ci#define WM8903_GP4_DIR                          0x0080  /* GP4_DIR */
17462306a36Sopenharmony_ci#define WM8903_GP4_DIR_MASK                     0x0080  /* GP4_DIR */
17562306a36Sopenharmony_ci#define WM8903_GP4_DIR_SHIFT                         7  /* GP4_DIR */
17662306a36Sopenharmony_ci#define WM8903_GP4_DIR_WIDTH                         1  /* GP4_DIR */
17762306a36Sopenharmony_ci#define WM8903_GP4_OP_CFG                       0x0040  /* GP4_OP_CFG */
17862306a36Sopenharmony_ci#define WM8903_GP4_OP_CFG_MASK                  0x0040  /* GP4_OP_CFG */
17962306a36Sopenharmony_ci#define WM8903_GP4_OP_CFG_SHIFT                      6  /* GP4_OP_CFG */
18062306a36Sopenharmony_ci#define WM8903_GP4_OP_CFG_WIDTH                      1  /* GP4_OP_CFG */
18162306a36Sopenharmony_ci#define WM8903_GP4_IP_CFG                       0x0020  /* GP4_IP_CFG */
18262306a36Sopenharmony_ci#define WM8903_GP4_IP_CFG_MASK                  0x0020  /* GP4_IP_CFG */
18362306a36Sopenharmony_ci#define WM8903_GP4_IP_CFG_SHIFT                      5  /* GP4_IP_CFG */
18462306a36Sopenharmony_ci#define WM8903_GP4_IP_CFG_WIDTH                      1  /* GP4_IP_CFG */
18562306a36Sopenharmony_ci#define WM8903_GP4_LVL                          0x0010  /* GP4_LVL */
18662306a36Sopenharmony_ci#define WM8903_GP4_LVL_MASK                     0x0010  /* GP4_LVL */
18762306a36Sopenharmony_ci#define WM8903_GP4_LVL_SHIFT                         4  /* GP4_LVL */
18862306a36Sopenharmony_ci#define WM8903_GP4_LVL_WIDTH                         1  /* GP4_LVL */
18962306a36Sopenharmony_ci#define WM8903_GP4_PD                           0x0008  /* GP4_PD */
19062306a36Sopenharmony_ci#define WM8903_GP4_PD_MASK                      0x0008  /* GP4_PD */
19162306a36Sopenharmony_ci#define WM8903_GP4_PD_SHIFT                          3  /* GP4_PD */
19262306a36Sopenharmony_ci#define WM8903_GP4_PD_WIDTH                          1  /* GP4_PD */
19362306a36Sopenharmony_ci#define WM8903_GP4_PU                           0x0004  /* GP4_PU */
19462306a36Sopenharmony_ci#define WM8903_GP4_PU_MASK                      0x0004  /* GP4_PU */
19562306a36Sopenharmony_ci#define WM8903_GP4_PU_SHIFT                          2  /* GP4_PU */
19662306a36Sopenharmony_ci#define WM8903_GP4_PU_WIDTH                          1  /* GP4_PU */
19762306a36Sopenharmony_ci#define WM8903_GP4_INTMODE                      0x0002  /* GP4_INTMODE */
19862306a36Sopenharmony_ci#define WM8903_GP4_INTMODE_MASK                 0x0002  /* GP4_INTMODE */
19962306a36Sopenharmony_ci#define WM8903_GP4_INTMODE_SHIFT                     1  /* GP4_INTMODE */
20062306a36Sopenharmony_ci#define WM8903_GP4_INTMODE_WIDTH                     1  /* GP4_INTMODE */
20162306a36Sopenharmony_ci#define WM8903_GP4_DB                           0x0001  /* GP4_DB */
20262306a36Sopenharmony_ci#define WM8903_GP4_DB_MASK                      0x0001  /* GP4_DB */
20362306a36Sopenharmony_ci#define WM8903_GP4_DB_SHIFT                          0  /* GP4_DB */
20462306a36Sopenharmony_ci#define WM8903_GP4_DB_WIDTH                          1  /* GP4_DB */
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ci/*
20762306a36Sopenharmony_ci * R120 (0x78) - GPIO Control 5
20862306a36Sopenharmony_ci */
20962306a36Sopenharmony_ci#define WM8903_GP5_FN_MASK                      0x1F00  /* GP5_FN - [12:8] */
21062306a36Sopenharmony_ci#define WM8903_GP5_FN_SHIFT                          8  /* GP5_FN - [12:8] */
21162306a36Sopenharmony_ci#define WM8903_GP5_FN_WIDTH                          5  /* GP5_FN - [12:8] */
21262306a36Sopenharmony_ci#define WM8903_GP5_DIR                          0x0080  /* GP5_DIR */
21362306a36Sopenharmony_ci#define WM8903_GP5_DIR_MASK                     0x0080  /* GP5_DIR */
21462306a36Sopenharmony_ci#define WM8903_GP5_DIR_SHIFT                         7  /* GP5_DIR */
21562306a36Sopenharmony_ci#define WM8903_GP5_DIR_WIDTH                         1  /* GP5_DIR */
21662306a36Sopenharmony_ci#define WM8903_GP5_OP_CFG                       0x0040  /* GP5_OP_CFG */
21762306a36Sopenharmony_ci#define WM8903_GP5_OP_CFG_MASK                  0x0040  /* GP5_OP_CFG */
21862306a36Sopenharmony_ci#define WM8903_GP5_OP_CFG_SHIFT                      6  /* GP5_OP_CFG */
21962306a36Sopenharmony_ci#define WM8903_GP5_OP_CFG_WIDTH                      1  /* GP5_OP_CFG */
22062306a36Sopenharmony_ci#define WM8903_GP5_IP_CFG                       0x0020  /* GP5_IP_CFG */
22162306a36Sopenharmony_ci#define WM8903_GP5_IP_CFG_MASK                  0x0020  /* GP5_IP_CFG */
22262306a36Sopenharmony_ci#define WM8903_GP5_IP_CFG_SHIFT                      5  /* GP5_IP_CFG */
22362306a36Sopenharmony_ci#define WM8903_GP5_IP_CFG_WIDTH                      1  /* GP5_IP_CFG */
22462306a36Sopenharmony_ci#define WM8903_GP5_LVL                          0x0010  /* GP5_LVL */
22562306a36Sopenharmony_ci#define WM8903_GP5_LVL_MASK                     0x0010  /* GP5_LVL */
22662306a36Sopenharmony_ci#define WM8903_GP5_LVL_SHIFT                         4  /* GP5_LVL */
22762306a36Sopenharmony_ci#define WM8903_GP5_LVL_WIDTH                         1  /* GP5_LVL */
22862306a36Sopenharmony_ci#define WM8903_GP5_PD                           0x0008  /* GP5_PD */
22962306a36Sopenharmony_ci#define WM8903_GP5_PD_MASK                      0x0008  /* GP5_PD */
23062306a36Sopenharmony_ci#define WM8903_GP5_PD_SHIFT                          3  /* GP5_PD */
23162306a36Sopenharmony_ci#define WM8903_GP5_PD_WIDTH                          1  /* GP5_PD */
23262306a36Sopenharmony_ci#define WM8903_GP5_PU                           0x0004  /* GP5_PU */
23362306a36Sopenharmony_ci#define WM8903_GP5_PU_MASK                      0x0004  /* GP5_PU */
23462306a36Sopenharmony_ci#define WM8903_GP5_PU_SHIFT                          2  /* GP5_PU */
23562306a36Sopenharmony_ci#define WM8903_GP5_PU_WIDTH                          1  /* GP5_PU */
23662306a36Sopenharmony_ci#define WM8903_GP5_INTMODE                      0x0002  /* GP5_INTMODE */
23762306a36Sopenharmony_ci#define WM8903_GP5_INTMODE_MASK                 0x0002  /* GP5_INTMODE */
23862306a36Sopenharmony_ci#define WM8903_GP5_INTMODE_SHIFT                     1  /* GP5_INTMODE */
23962306a36Sopenharmony_ci#define WM8903_GP5_INTMODE_WIDTH                     1  /* GP5_INTMODE */
24062306a36Sopenharmony_ci#define WM8903_GP5_DB                           0x0001  /* GP5_DB */
24162306a36Sopenharmony_ci#define WM8903_GP5_DB_MASK                      0x0001  /* GP5_DB */
24262306a36Sopenharmony_ci#define WM8903_GP5_DB_SHIFT                          0  /* GP5_DB */
24362306a36Sopenharmony_ci#define WM8903_GP5_DB_WIDTH                          1  /* GP5_DB */
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ci#define WM8903_NUM_GPIO 5
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_cistruct wm8903_platform_data {
24862306a36Sopenharmony_ci	bool irq_active_low;   /* Set if IRQ active low, default high */
24962306a36Sopenharmony_ci
25062306a36Sopenharmony_ci        /* Default register value for R6 (Mic bias), used to configure
25162306a36Sopenharmony_ci	 * microphone detection.  In conjunction with gpio_cfg this
25262306a36Sopenharmony_ci	 * can be used to route the microphone status signals out onto
25362306a36Sopenharmony_ci	 * the GPIOs for use with snd_soc_jack_add_gpios().
25462306a36Sopenharmony_ci	 */
25562306a36Sopenharmony_ci	u16 micdet_cfg;
25662306a36Sopenharmony_ci
25762306a36Sopenharmony_ci	int micdet_delay;      /* Delay after microphone detection (ms) */
25862306a36Sopenharmony_ci
25962306a36Sopenharmony_ci	int gpio_base;
26062306a36Sopenharmony_ci	u32 gpio_cfg[WM8903_NUM_GPIO]; /* Default register values for GPIO pin mux */
26162306a36Sopenharmony_ci};
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_ci#endif
264