xref: /openbmc/linux/include/sound/wm8903.h (revision a0f203d3)
173b34eadSMark Brown /*
273b34eadSMark Brown  * linux/sound/wm8903.h -- Platform data for WM8903
373b34eadSMark Brown  *
473b34eadSMark Brown  * Copyright 2010 Wolfson Microelectronics. PLC.
573b34eadSMark Brown  *
673b34eadSMark Brown  * This program is free software; you can redistribute it and/or modify
773b34eadSMark Brown  * it under the terms of the GNU General Public License version 2 as
873b34eadSMark Brown  * published by the Free Software Foundation.
973b34eadSMark Brown  */
1073b34eadSMark Brown 
1173b34eadSMark Brown #ifndef __LINUX_SND_WM8903_H
1273b34eadSMark Brown #define __LINUX_SND_WM8903_H
1373b34eadSMark Brown 
14a0f203d3SStephen Warren /*
15a0f203d3SStephen Warren  * Used to enable configuration of a GPIO to all zeros; a gpio_cfg value of
16a0f203d3SStephen Warren  * zero in platform data means "don't touch this pin".
17a0f203d3SStephen Warren  */
18a0f203d3SStephen Warren #define WM8903_GPIO_CONFIG_ZERO 0x8000
1973b34eadSMark Brown 
2073b34eadSMark Brown /*
2137f88e84SMark Brown  * R6 (0x06) - Mic Bias Control 0
2237f88e84SMark Brown  */
2328d639f7SStephen Warren #define WM8903_MICDET_THR_MASK                  0x0030  /* MICDET_THR - [5:4] */
2428d639f7SStephen Warren #define WM8903_MICDET_THR_SHIFT                      4  /* MICDET_THR - [5:4] */
2528d639f7SStephen Warren #define WM8903_MICDET_THR_WIDTH                      2  /* MICDET_THR - [5:4] */
2637f88e84SMark Brown #define WM8903_MICSHORT_THR_MASK                0x000C  /* MICSHORT_THR - [3:2] */
2737f88e84SMark Brown #define WM8903_MICSHORT_THR_SHIFT                    2  /* MICSHORT_THR - [3:2] */
2837f88e84SMark Brown #define WM8903_MICSHORT_THR_WIDTH                    2  /* MICSHORT_THR - [3:2] */
2937f88e84SMark Brown #define WM8903_MICDET_ENA                       0x0002  /* MICDET_ENA */
3037f88e84SMark Brown #define WM8903_MICDET_ENA_MASK                  0x0002  /* MICDET_ENA */
3137f88e84SMark Brown #define WM8903_MICDET_ENA_SHIFT                      1  /* MICDET_ENA */
3237f88e84SMark Brown #define WM8903_MICDET_ENA_WIDTH                      1  /* MICDET_ENA */
3337f88e84SMark Brown #define WM8903_MICBIAS_ENA                      0x0001  /* MICBIAS_ENA */
3437f88e84SMark Brown #define WM8903_MICBIAS_ENA_MASK                 0x0001  /* MICBIAS_ENA */
3537f88e84SMark Brown #define WM8903_MICBIAS_ENA_SHIFT                     0  /* MICBIAS_ENA */
3637f88e84SMark Brown #define WM8903_MICBIAS_ENA_WIDTH                     1  /* MICBIAS_ENA */
3737f88e84SMark Brown 
3837f88e84SMark Brown /*
397cfe5617SStephen Warren  * WM8903_GPn_FN values
407cfe5617SStephen Warren  *
417cfe5617SStephen Warren  * See datasheets for list of valid values per pin
427cfe5617SStephen Warren  */
437cfe5617SStephen Warren #define WM8903_GPn_FN_GPIO_OUTPUT                    0
447cfe5617SStephen Warren #define WM8903_GPn_FN_BCLK                           1
457cfe5617SStephen Warren #define WM8903_GPn_FN_IRQ_OUTPT                      2
467cfe5617SStephen Warren #define WM8903_GPn_FN_GPIO_INPUT                     3
477cfe5617SStephen Warren #define WM8903_GPn_FN_MICBIAS_CURRENT_DETECT         4
487cfe5617SStephen Warren #define WM8903_GPn_FN_MICBIAS_SHORT_DETECT           5
497cfe5617SStephen Warren #define WM8903_GPn_FN_DMIC_LR_CLK_OUTPUT             6
507cfe5617SStephen Warren #define WM8903_GPn_FN_FLL_LOCK_OUTPUT                8
517cfe5617SStephen Warren #define WM8903_GPn_FN_FLL_CLOCK_OUTPUT               9
527cfe5617SStephen Warren 
537cfe5617SStephen Warren /*
5473b34eadSMark Brown  * R116 (0x74) - GPIO Control 1
5573b34eadSMark Brown  */
5673b34eadSMark Brown #define WM8903_GP1_FN_MASK                      0x1F00  /* GP1_FN - [12:8] */
5773b34eadSMark Brown #define WM8903_GP1_FN_SHIFT                          8  /* GP1_FN - [12:8] */
5873b34eadSMark Brown #define WM8903_GP1_FN_WIDTH                          5  /* GP1_FN - [12:8] */
5973b34eadSMark Brown #define WM8903_GP1_DIR                          0x0080  /* GP1_DIR */
6073b34eadSMark Brown #define WM8903_GP1_DIR_MASK                     0x0080  /* GP1_DIR */
6173b34eadSMark Brown #define WM8903_GP1_DIR_SHIFT                         7  /* GP1_DIR */
6273b34eadSMark Brown #define WM8903_GP1_DIR_WIDTH                         1  /* GP1_DIR */
6373b34eadSMark Brown #define WM8903_GP1_OP_CFG                       0x0040  /* GP1_OP_CFG */
6473b34eadSMark Brown #define WM8903_GP1_OP_CFG_MASK                  0x0040  /* GP1_OP_CFG */
6573b34eadSMark Brown #define WM8903_GP1_OP_CFG_SHIFT                      6  /* GP1_OP_CFG */
6673b34eadSMark Brown #define WM8903_GP1_OP_CFG_WIDTH                      1  /* GP1_OP_CFG */
6773b34eadSMark Brown #define WM8903_GP1_IP_CFG                       0x0020  /* GP1_IP_CFG */
6873b34eadSMark Brown #define WM8903_GP1_IP_CFG_MASK                  0x0020  /* GP1_IP_CFG */
6973b34eadSMark Brown #define WM8903_GP1_IP_CFG_SHIFT                      5  /* GP1_IP_CFG */
7073b34eadSMark Brown #define WM8903_GP1_IP_CFG_WIDTH                      1  /* GP1_IP_CFG */
7173b34eadSMark Brown #define WM8903_GP1_LVL                          0x0010  /* GP1_LVL */
7273b34eadSMark Brown #define WM8903_GP1_LVL_MASK                     0x0010  /* GP1_LVL */
7373b34eadSMark Brown #define WM8903_GP1_LVL_SHIFT                         4  /* GP1_LVL */
7473b34eadSMark Brown #define WM8903_GP1_LVL_WIDTH                         1  /* GP1_LVL */
7573b34eadSMark Brown #define WM8903_GP1_PD                           0x0008  /* GP1_PD */
7673b34eadSMark Brown #define WM8903_GP1_PD_MASK                      0x0008  /* GP1_PD */
7773b34eadSMark Brown #define WM8903_GP1_PD_SHIFT                          3  /* GP1_PD */
7873b34eadSMark Brown #define WM8903_GP1_PD_WIDTH                          1  /* GP1_PD */
7973b34eadSMark Brown #define WM8903_GP1_PU                           0x0004  /* GP1_PU */
8073b34eadSMark Brown #define WM8903_GP1_PU_MASK                      0x0004  /* GP1_PU */
8173b34eadSMark Brown #define WM8903_GP1_PU_SHIFT                          2  /* GP1_PU */
8273b34eadSMark Brown #define WM8903_GP1_PU_WIDTH                          1  /* GP1_PU */
8373b34eadSMark Brown #define WM8903_GP1_INTMODE                      0x0002  /* GP1_INTMODE */
8473b34eadSMark Brown #define WM8903_GP1_INTMODE_MASK                 0x0002  /* GP1_INTMODE */
8573b34eadSMark Brown #define WM8903_GP1_INTMODE_SHIFT                     1  /* GP1_INTMODE */
8673b34eadSMark Brown #define WM8903_GP1_INTMODE_WIDTH                     1  /* GP1_INTMODE */
8773b34eadSMark Brown #define WM8903_GP1_DB                           0x0001  /* GP1_DB */
8873b34eadSMark Brown #define WM8903_GP1_DB_MASK                      0x0001  /* GP1_DB */
8973b34eadSMark Brown #define WM8903_GP1_DB_SHIFT                          0  /* GP1_DB */
9073b34eadSMark Brown #define WM8903_GP1_DB_WIDTH                          1  /* GP1_DB */
9173b34eadSMark Brown 
9273b34eadSMark Brown /*
9373b34eadSMark Brown  * R117 (0x75) - GPIO Control 2
9473b34eadSMark Brown  */
9573b34eadSMark Brown #define WM8903_GP2_FN_MASK                      0x1F00  /* GP2_FN - [12:8] */
9673b34eadSMark Brown #define WM8903_GP2_FN_SHIFT                          8  /* GP2_FN - [12:8] */
9773b34eadSMark Brown #define WM8903_GP2_FN_WIDTH                          5  /* GP2_FN - [12:8] */
9873b34eadSMark Brown #define WM8903_GP2_DIR                          0x0080  /* GP2_DIR */
9973b34eadSMark Brown #define WM8903_GP2_DIR_MASK                     0x0080  /* GP2_DIR */
10073b34eadSMark Brown #define WM8903_GP2_DIR_SHIFT                         7  /* GP2_DIR */
10173b34eadSMark Brown #define WM8903_GP2_DIR_WIDTH                         1  /* GP2_DIR */
10273b34eadSMark Brown #define WM8903_GP2_OP_CFG                       0x0040  /* GP2_OP_CFG */
10373b34eadSMark Brown #define WM8903_GP2_OP_CFG_MASK                  0x0040  /* GP2_OP_CFG */
10473b34eadSMark Brown #define WM8903_GP2_OP_CFG_SHIFT                      6  /* GP2_OP_CFG */
10573b34eadSMark Brown #define WM8903_GP2_OP_CFG_WIDTH                      1  /* GP2_OP_CFG */
10673b34eadSMark Brown #define WM8903_GP2_IP_CFG                       0x0020  /* GP2_IP_CFG */
10773b34eadSMark Brown #define WM8903_GP2_IP_CFG_MASK                  0x0020  /* GP2_IP_CFG */
10873b34eadSMark Brown #define WM8903_GP2_IP_CFG_SHIFT                      5  /* GP2_IP_CFG */
10973b34eadSMark Brown #define WM8903_GP2_IP_CFG_WIDTH                      1  /* GP2_IP_CFG */
11073b34eadSMark Brown #define WM8903_GP2_LVL                          0x0010  /* GP2_LVL */
11173b34eadSMark Brown #define WM8903_GP2_LVL_MASK                     0x0010  /* GP2_LVL */
11273b34eadSMark Brown #define WM8903_GP2_LVL_SHIFT                         4  /* GP2_LVL */
11373b34eadSMark Brown #define WM8903_GP2_LVL_WIDTH                         1  /* GP2_LVL */
11473b34eadSMark Brown #define WM8903_GP2_PD                           0x0008  /* GP2_PD */
11573b34eadSMark Brown #define WM8903_GP2_PD_MASK                      0x0008  /* GP2_PD */
11673b34eadSMark Brown #define WM8903_GP2_PD_SHIFT                          3  /* GP2_PD */
11773b34eadSMark Brown #define WM8903_GP2_PD_WIDTH                          1  /* GP2_PD */
11873b34eadSMark Brown #define WM8903_GP2_PU                           0x0004  /* GP2_PU */
11973b34eadSMark Brown #define WM8903_GP2_PU_MASK                      0x0004  /* GP2_PU */
12073b34eadSMark Brown #define WM8903_GP2_PU_SHIFT                          2  /* GP2_PU */
12173b34eadSMark Brown #define WM8903_GP2_PU_WIDTH                          1  /* GP2_PU */
12273b34eadSMark Brown #define WM8903_GP2_INTMODE                      0x0002  /* GP2_INTMODE */
12373b34eadSMark Brown #define WM8903_GP2_INTMODE_MASK                 0x0002  /* GP2_INTMODE */
12473b34eadSMark Brown #define WM8903_GP2_INTMODE_SHIFT                     1  /* GP2_INTMODE */
12573b34eadSMark Brown #define WM8903_GP2_INTMODE_WIDTH                     1  /* GP2_INTMODE */
12673b34eadSMark Brown #define WM8903_GP2_DB                           0x0001  /* GP2_DB */
12773b34eadSMark Brown #define WM8903_GP2_DB_MASK                      0x0001  /* GP2_DB */
12873b34eadSMark Brown #define WM8903_GP2_DB_SHIFT                          0  /* GP2_DB */
12973b34eadSMark Brown #define WM8903_GP2_DB_WIDTH                          1  /* GP2_DB */
13073b34eadSMark Brown 
13173b34eadSMark Brown /*
13273b34eadSMark Brown  * R118 (0x76) - GPIO Control 3
13373b34eadSMark Brown  */
13473b34eadSMark Brown #define WM8903_GP3_FN_MASK                      0x1F00  /* GP3_FN - [12:8] */
13573b34eadSMark Brown #define WM8903_GP3_FN_SHIFT                          8  /* GP3_FN - [12:8] */
13673b34eadSMark Brown #define WM8903_GP3_FN_WIDTH                          5  /* GP3_FN - [12:8] */
13773b34eadSMark Brown #define WM8903_GP3_DIR                          0x0080  /* GP3_DIR */
13873b34eadSMark Brown #define WM8903_GP3_DIR_MASK                     0x0080  /* GP3_DIR */
13973b34eadSMark Brown #define WM8903_GP3_DIR_SHIFT                         7  /* GP3_DIR */
14073b34eadSMark Brown #define WM8903_GP3_DIR_WIDTH                         1  /* GP3_DIR */
14173b34eadSMark Brown #define WM8903_GP3_OP_CFG                       0x0040  /* GP3_OP_CFG */
14273b34eadSMark Brown #define WM8903_GP3_OP_CFG_MASK                  0x0040  /* GP3_OP_CFG */
14373b34eadSMark Brown #define WM8903_GP3_OP_CFG_SHIFT                      6  /* GP3_OP_CFG */
14473b34eadSMark Brown #define WM8903_GP3_OP_CFG_WIDTH                      1  /* GP3_OP_CFG */
14573b34eadSMark Brown #define WM8903_GP3_IP_CFG                       0x0020  /* GP3_IP_CFG */
14673b34eadSMark Brown #define WM8903_GP3_IP_CFG_MASK                  0x0020  /* GP3_IP_CFG */
14773b34eadSMark Brown #define WM8903_GP3_IP_CFG_SHIFT                      5  /* GP3_IP_CFG */
14873b34eadSMark Brown #define WM8903_GP3_IP_CFG_WIDTH                      1  /* GP3_IP_CFG */
14973b34eadSMark Brown #define WM8903_GP3_LVL                          0x0010  /* GP3_LVL */
15073b34eadSMark Brown #define WM8903_GP3_LVL_MASK                     0x0010  /* GP3_LVL */
15173b34eadSMark Brown #define WM8903_GP3_LVL_SHIFT                         4  /* GP3_LVL */
15273b34eadSMark Brown #define WM8903_GP3_LVL_WIDTH                         1  /* GP3_LVL */
15373b34eadSMark Brown #define WM8903_GP3_PD                           0x0008  /* GP3_PD */
15473b34eadSMark Brown #define WM8903_GP3_PD_MASK                      0x0008  /* GP3_PD */
15573b34eadSMark Brown #define WM8903_GP3_PD_SHIFT                          3  /* GP3_PD */
15673b34eadSMark Brown #define WM8903_GP3_PD_WIDTH                          1  /* GP3_PD */
15773b34eadSMark Brown #define WM8903_GP3_PU                           0x0004  /* GP3_PU */
15873b34eadSMark Brown #define WM8903_GP3_PU_MASK                      0x0004  /* GP3_PU */
15973b34eadSMark Brown #define WM8903_GP3_PU_SHIFT                          2  /* GP3_PU */
16073b34eadSMark Brown #define WM8903_GP3_PU_WIDTH                          1  /* GP3_PU */
16173b34eadSMark Brown #define WM8903_GP3_INTMODE                      0x0002  /* GP3_INTMODE */
16273b34eadSMark Brown #define WM8903_GP3_INTMODE_MASK                 0x0002  /* GP3_INTMODE */
16373b34eadSMark Brown #define WM8903_GP3_INTMODE_SHIFT                     1  /* GP3_INTMODE */
16473b34eadSMark Brown #define WM8903_GP3_INTMODE_WIDTH                     1  /* GP3_INTMODE */
16573b34eadSMark Brown #define WM8903_GP3_DB                           0x0001  /* GP3_DB */
16673b34eadSMark Brown #define WM8903_GP3_DB_MASK                      0x0001  /* GP3_DB */
16773b34eadSMark Brown #define WM8903_GP3_DB_SHIFT                          0  /* GP3_DB */
16873b34eadSMark Brown #define WM8903_GP3_DB_WIDTH                          1  /* GP3_DB */
16973b34eadSMark Brown 
17073b34eadSMark Brown /*
17173b34eadSMark Brown  * R119 (0x77) - GPIO Control 4
17273b34eadSMark Brown  */
17373b34eadSMark Brown #define WM8903_GP4_FN_MASK                      0x1F00  /* GP4_FN - [12:8] */
17473b34eadSMark Brown #define WM8903_GP4_FN_SHIFT                          8  /* GP4_FN - [12:8] */
17573b34eadSMark Brown #define WM8903_GP4_FN_WIDTH                          5  /* GP4_FN - [12:8] */
17673b34eadSMark Brown #define WM8903_GP4_DIR                          0x0080  /* GP4_DIR */
17773b34eadSMark Brown #define WM8903_GP4_DIR_MASK                     0x0080  /* GP4_DIR */
17873b34eadSMark Brown #define WM8903_GP4_DIR_SHIFT                         7  /* GP4_DIR */
17973b34eadSMark Brown #define WM8903_GP4_DIR_WIDTH                         1  /* GP4_DIR */
18073b34eadSMark Brown #define WM8903_GP4_OP_CFG                       0x0040  /* GP4_OP_CFG */
18173b34eadSMark Brown #define WM8903_GP4_OP_CFG_MASK                  0x0040  /* GP4_OP_CFG */
18273b34eadSMark Brown #define WM8903_GP4_OP_CFG_SHIFT                      6  /* GP4_OP_CFG */
18373b34eadSMark Brown #define WM8903_GP4_OP_CFG_WIDTH                      1  /* GP4_OP_CFG */
18473b34eadSMark Brown #define WM8903_GP4_IP_CFG                       0x0020  /* GP4_IP_CFG */
18573b34eadSMark Brown #define WM8903_GP4_IP_CFG_MASK                  0x0020  /* GP4_IP_CFG */
18673b34eadSMark Brown #define WM8903_GP4_IP_CFG_SHIFT                      5  /* GP4_IP_CFG */
18773b34eadSMark Brown #define WM8903_GP4_IP_CFG_WIDTH                      1  /* GP4_IP_CFG */
18873b34eadSMark Brown #define WM8903_GP4_LVL                          0x0010  /* GP4_LVL */
18973b34eadSMark Brown #define WM8903_GP4_LVL_MASK                     0x0010  /* GP4_LVL */
19073b34eadSMark Brown #define WM8903_GP4_LVL_SHIFT                         4  /* GP4_LVL */
19173b34eadSMark Brown #define WM8903_GP4_LVL_WIDTH                         1  /* GP4_LVL */
19273b34eadSMark Brown #define WM8903_GP4_PD                           0x0008  /* GP4_PD */
19373b34eadSMark Brown #define WM8903_GP4_PD_MASK                      0x0008  /* GP4_PD */
19473b34eadSMark Brown #define WM8903_GP4_PD_SHIFT                          3  /* GP4_PD */
19573b34eadSMark Brown #define WM8903_GP4_PD_WIDTH                          1  /* GP4_PD */
19673b34eadSMark Brown #define WM8903_GP4_PU                           0x0004  /* GP4_PU */
19773b34eadSMark Brown #define WM8903_GP4_PU_MASK                      0x0004  /* GP4_PU */
19873b34eadSMark Brown #define WM8903_GP4_PU_SHIFT                          2  /* GP4_PU */
19973b34eadSMark Brown #define WM8903_GP4_PU_WIDTH                          1  /* GP4_PU */
20073b34eadSMark Brown #define WM8903_GP4_INTMODE                      0x0002  /* GP4_INTMODE */
20173b34eadSMark Brown #define WM8903_GP4_INTMODE_MASK                 0x0002  /* GP4_INTMODE */
20273b34eadSMark Brown #define WM8903_GP4_INTMODE_SHIFT                     1  /* GP4_INTMODE */
20373b34eadSMark Brown #define WM8903_GP4_INTMODE_WIDTH                     1  /* GP4_INTMODE */
20473b34eadSMark Brown #define WM8903_GP4_DB                           0x0001  /* GP4_DB */
20573b34eadSMark Brown #define WM8903_GP4_DB_MASK                      0x0001  /* GP4_DB */
20673b34eadSMark Brown #define WM8903_GP4_DB_SHIFT                          0  /* GP4_DB */
20773b34eadSMark Brown #define WM8903_GP4_DB_WIDTH                          1  /* GP4_DB */
20873b34eadSMark Brown 
20973b34eadSMark Brown /*
21073b34eadSMark Brown  * R120 (0x78) - GPIO Control 5
21173b34eadSMark Brown  */
21273b34eadSMark Brown #define WM8903_GP5_FN_MASK                      0x1F00  /* GP5_FN - [12:8] */
21373b34eadSMark Brown #define WM8903_GP5_FN_SHIFT                          8  /* GP5_FN - [12:8] */
21473b34eadSMark Brown #define WM8903_GP5_FN_WIDTH                          5  /* GP5_FN - [12:8] */
21573b34eadSMark Brown #define WM8903_GP5_DIR                          0x0080  /* GP5_DIR */
21673b34eadSMark Brown #define WM8903_GP5_DIR_MASK                     0x0080  /* GP5_DIR */
21773b34eadSMark Brown #define WM8903_GP5_DIR_SHIFT                         7  /* GP5_DIR */
21873b34eadSMark Brown #define WM8903_GP5_DIR_WIDTH                         1  /* GP5_DIR */
21973b34eadSMark Brown #define WM8903_GP5_OP_CFG                       0x0040  /* GP5_OP_CFG */
22073b34eadSMark Brown #define WM8903_GP5_OP_CFG_MASK                  0x0040  /* GP5_OP_CFG */
22173b34eadSMark Brown #define WM8903_GP5_OP_CFG_SHIFT                      6  /* GP5_OP_CFG */
22273b34eadSMark Brown #define WM8903_GP5_OP_CFG_WIDTH                      1  /* GP5_OP_CFG */
22373b34eadSMark Brown #define WM8903_GP5_IP_CFG                       0x0020  /* GP5_IP_CFG */
22473b34eadSMark Brown #define WM8903_GP5_IP_CFG_MASK                  0x0020  /* GP5_IP_CFG */
22573b34eadSMark Brown #define WM8903_GP5_IP_CFG_SHIFT                      5  /* GP5_IP_CFG */
22673b34eadSMark Brown #define WM8903_GP5_IP_CFG_WIDTH                      1  /* GP5_IP_CFG */
22773b34eadSMark Brown #define WM8903_GP5_LVL                          0x0010  /* GP5_LVL */
22873b34eadSMark Brown #define WM8903_GP5_LVL_MASK                     0x0010  /* GP5_LVL */
22973b34eadSMark Brown #define WM8903_GP5_LVL_SHIFT                         4  /* GP5_LVL */
23073b34eadSMark Brown #define WM8903_GP5_LVL_WIDTH                         1  /* GP5_LVL */
23173b34eadSMark Brown #define WM8903_GP5_PD                           0x0008  /* GP5_PD */
23273b34eadSMark Brown #define WM8903_GP5_PD_MASK                      0x0008  /* GP5_PD */
23373b34eadSMark Brown #define WM8903_GP5_PD_SHIFT                          3  /* GP5_PD */
23473b34eadSMark Brown #define WM8903_GP5_PD_WIDTH                          1  /* GP5_PD */
23573b34eadSMark Brown #define WM8903_GP5_PU                           0x0004  /* GP5_PU */
23673b34eadSMark Brown #define WM8903_GP5_PU_MASK                      0x0004  /* GP5_PU */
23773b34eadSMark Brown #define WM8903_GP5_PU_SHIFT                          2  /* GP5_PU */
23873b34eadSMark Brown #define WM8903_GP5_PU_WIDTH                          1  /* GP5_PU */
23973b34eadSMark Brown #define WM8903_GP5_INTMODE                      0x0002  /* GP5_INTMODE */
24073b34eadSMark Brown #define WM8903_GP5_INTMODE_MASK                 0x0002  /* GP5_INTMODE */
24173b34eadSMark Brown #define WM8903_GP5_INTMODE_SHIFT                     1  /* GP5_INTMODE */
24273b34eadSMark Brown #define WM8903_GP5_INTMODE_WIDTH                     1  /* GP5_INTMODE */
24373b34eadSMark Brown #define WM8903_GP5_DB                           0x0001  /* GP5_DB */
24473b34eadSMark Brown #define WM8903_GP5_DB_MASK                      0x0001  /* GP5_DB */
24573b34eadSMark Brown #define WM8903_GP5_DB_SHIFT                          0  /* GP5_DB */
24673b34eadSMark Brown #define WM8903_GP5_DB_WIDTH                          1  /* GP5_DB */
24773b34eadSMark Brown 
2487cfe5617SStephen Warren #define WM8903_NUM_GPIO 5
2497cfe5617SStephen Warren 
25073b34eadSMark Brown struct wm8903_platform_data {
2518abd16a6SMark Brown 	bool irq_active_low;   /* Set if IRQ active low, default high */
2528abd16a6SMark Brown 
25337f88e84SMark Brown         /* Default register value for R6 (Mic bias), used to configure
25437f88e84SMark Brown 	 * microphone detection.  In conjunction with gpio_cfg this
25537f88e84SMark Brown 	 * can be used to route the microphone status signals out onto
25637f88e84SMark Brown 	 * the GPIOs for use with snd_soc_jack_add_gpios().
25737f88e84SMark Brown 	 */
25837f88e84SMark Brown 	u16 micdet_cfg;
25937f88e84SMark Brown 
2607245387eSMark Brown 	int micdet_delay;      /* Delay after microphone detection (ms) */
2617245387eSMark Brown 
2627cfe5617SStephen Warren 	int gpio_base;
2637cfe5617SStephen Warren 	u32 gpio_cfg[WM8903_NUM_GPIO]; /* Default register values for GPIO pin mux */
26473b34eadSMark Brown };
26573b34eadSMark Brown 
26673b34eadSMark Brown #endif
267