1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * linux/sound/wm8903.h -- Platform data for WM8903 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright 2010 Wolfson Microelectronics. PLC. 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef __LINUX_SND_WM8903_H 9*4882a593Smuzhiyun #define __LINUX_SND_WM8903_H 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun /* 12*4882a593Smuzhiyun * Used to enable configuration of a GPIO to all zeros; a gpio_cfg value of 13*4882a593Smuzhiyun * zero in platform data means "don't touch this pin". 14*4882a593Smuzhiyun */ 15*4882a593Smuzhiyun #define WM8903_GPIO_CONFIG_ZERO 0x8000 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun /* 18*4882a593Smuzhiyun * R6 (0x06) - Mic Bias Control 0 19*4882a593Smuzhiyun */ 20*4882a593Smuzhiyun #define WM8903_MICDET_THR_MASK 0x0030 /* MICDET_THR - [5:4] */ 21*4882a593Smuzhiyun #define WM8903_MICDET_THR_SHIFT 4 /* MICDET_THR - [5:4] */ 22*4882a593Smuzhiyun #define WM8903_MICDET_THR_WIDTH 2 /* MICDET_THR - [5:4] */ 23*4882a593Smuzhiyun #define WM8903_MICSHORT_THR_MASK 0x000C /* MICSHORT_THR - [3:2] */ 24*4882a593Smuzhiyun #define WM8903_MICSHORT_THR_SHIFT 2 /* MICSHORT_THR - [3:2] */ 25*4882a593Smuzhiyun #define WM8903_MICSHORT_THR_WIDTH 2 /* MICSHORT_THR - [3:2] */ 26*4882a593Smuzhiyun #define WM8903_MICDET_ENA 0x0002 /* MICDET_ENA */ 27*4882a593Smuzhiyun #define WM8903_MICDET_ENA_MASK 0x0002 /* MICDET_ENA */ 28*4882a593Smuzhiyun #define WM8903_MICDET_ENA_SHIFT 1 /* MICDET_ENA */ 29*4882a593Smuzhiyun #define WM8903_MICDET_ENA_WIDTH 1 /* MICDET_ENA */ 30*4882a593Smuzhiyun #define WM8903_MICBIAS_ENA 0x0001 /* MICBIAS_ENA */ 31*4882a593Smuzhiyun #define WM8903_MICBIAS_ENA_MASK 0x0001 /* MICBIAS_ENA */ 32*4882a593Smuzhiyun #define WM8903_MICBIAS_ENA_SHIFT 0 /* MICBIAS_ENA */ 33*4882a593Smuzhiyun #define WM8903_MICBIAS_ENA_WIDTH 1 /* MICBIAS_ENA */ 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun /* 36*4882a593Smuzhiyun * WM8903_GPn_FN values 37*4882a593Smuzhiyun * 38*4882a593Smuzhiyun * See datasheets for list of valid values per pin 39*4882a593Smuzhiyun */ 40*4882a593Smuzhiyun #define WM8903_GPn_FN_GPIO_OUTPUT 0 41*4882a593Smuzhiyun #define WM8903_GPn_FN_BCLK 1 42*4882a593Smuzhiyun #define WM8903_GPn_FN_IRQ_OUTPT 2 43*4882a593Smuzhiyun #define WM8903_GPn_FN_GPIO_INPUT 3 44*4882a593Smuzhiyun #define WM8903_GPn_FN_MICBIAS_CURRENT_DETECT 4 45*4882a593Smuzhiyun #define WM8903_GPn_FN_MICBIAS_SHORT_DETECT 5 46*4882a593Smuzhiyun #define WM8903_GPn_FN_DMIC_LR_CLK_OUTPUT 6 47*4882a593Smuzhiyun #define WM8903_GPn_FN_FLL_LOCK_OUTPUT 8 48*4882a593Smuzhiyun #define WM8903_GPn_FN_FLL_CLOCK_OUTPUT 9 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun /* 51*4882a593Smuzhiyun * R116 (0x74) - GPIO Control 1 52*4882a593Smuzhiyun */ 53*4882a593Smuzhiyun #define WM8903_GP1_FN_MASK 0x1F00 /* GP1_FN - [12:8] */ 54*4882a593Smuzhiyun #define WM8903_GP1_FN_SHIFT 8 /* GP1_FN - [12:8] */ 55*4882a593Smuzhiyun #define WM8903_GP1_FN_WIDTH 5 /* GP1_FN - [12:8] */ 56*4882a593Smuzhiyun #define WM8903_GP1_DIR 0x0080 /* GP1_DIR */ 57*4882a593Smuzhiyun #define WM8903_GP1_DIR_MASK 0x0080 /* GP1_DIR */ 58*4882a593Smuzhiyun #define WM8903_GP1_DIR_SHIFT 7 /* GP1_DIR */ 59*4882a593Smuzhiyun #define WM8903_GP1_DIR_WIDTH 1 /* GP1_DIR */ 60*4882a593Smuzhiyun #define WM8903_GP1_OP_CFG 0x0040 /* GP1_OP_CFG */ 61*4882a593Smuzhiyun #define WM8903_GP1_OP_CFG_MASK 0x0040 /* GP1_OP_CFG */ 62*4882a593Smuzhiyun #define WM8903_GP1_OP_CFG_SHIFT 6 /* GP1_OP_CFG */ 63*4882a593Smuzhiyun #define WM8903_GP1_OP_CFG_WIDTH 1 /* GP1_OP_CFG */ 64*4882a593Smuzhiyun #define WM8903_GP1_IP_CFG 0x0020 /* GP1_IP_CFG */ 65*4882a593Smuzhiyun #define WM8903_GP1_IP_CFG_MASK 0x0020 /* GP1_IP_CFG */ 66*4882a593Smuzhiyun #define WM8903_GP1_IP_CFG_SHIFT 5 /* GP1_IP_CFG */ 67*4882a593Smuzhiyun #define WM8903_GP1_IP_CFG_WIDTH 1 /* GP1_IP_CFG */ 68*4882a593Smuzhiyun #define WM8903_GP1_LVL 0x0010 /* GP1_LVL */ 69*4882a593Smuzhiyun #define WM8903_GP1_LVL_MASK 0x0010 /* GP1_LVL */ 70*4882a593Smuzhiyun #define WM8903_GP1_LVL_SHIFT 4 /* GP1_LVL */ 71*4882a593Smuzhiyun #define WM8903_GP1_LVL_WIDTH 1 /* GP1_LVL */ 72*4882a593Smuzhiyun #define WM8903_GP1_PD 0x0008 /* GP1_PD */ 73*4882a593Smuzhiyun #define WM8903_GP1_PD_MASK 0x0008 /* GP1_PD */ 74*4882a593Smuzhiyun #define WM8903_GP1_PD_SHIFT 3 /* GP1_PD */ 75*4882a593Smuzhiyun #define WM8903_GP1_PD_WIDTH 1 /* GP1_PD */ 76*4882a593Smuzhiyun #define WM8903_GP1_PU 0x0004 /* GP1_PU */ 77*4882a593Smuzhiyun #define WM8903_GP1_PU_MASK 0x0004 /* GP1_PU */ 78*4882a593Smuzhiyun #define WM8903_GP1_PU_SHIFT 2 /* GP1_PU */ 79*4882a593Smuzhiyun #define WM8903_GP1_PU_WIDTH 1 /* GP1_PU */ 80*4882a593Smuzhiyun #define WM8903_GP1_INTMODE 0x0002 /* GP1_INTMODE */ 81*4882a593Smuzhiyun #define WM8903_GP1_INTMODE_MASK 0x0002 /* GP1_INTMODE */ 82*4882a593Smuzhiyun #define WM8903_GP1_INTMODE_SHIFT 1 /* GP1_INTMODE */ 83*4882a593Smuzhiyun #define WM8903_GP1_INTMODE_WIDTH 1 /* GP1_INTMODE */ 84*4882a593Smuzhiyun #define WM8903_GP1_DB 0x0001 /* GP1_DB */ 85*4882a593Smuzhiyun #define WM8903_GP1_DB_MASK 0x0001 /* GP1_DB */ 86*4882a593Smuzhiyun #define WM8903_GP1_DB_SHIFT 0 /* GP1_DB */ 87*4882a593Smuzhiyun #define WM8903_GP1_DB_WIDTH 1 /* GP1_DB */ 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun /* 90*4882a593Smuzhiyun * R117 (0x75) - GPIO Control 2 91*4882a593Smuzhiyun */ 92*4882a593Smuzhiyun #define WM8903_GP2_FN_MASK 0x1F00 /* GP2_FN - [12:8] */ 93*4882a593Smuzhiyun #define WM8903_GP2_FN_SHIFT 8 /* GP2_FN - [12:8] */ 94*4882a593Smuzhiyun #define WM8903_GP2_FN_WIDTH 5 /* GP2_FN - [12:8] */ 95*4882a593Smuzhiyun #define WM8903_GP2_DIR 0x0080 /* GP2_DIR */ 96*4882a593Smuzhiyun #define WM8903_GP2_DIR_MASK 0x0080 /* GP2_DIR */ 97*4882a593Smuzhiyun #define WM8903_GP2_DIR_SHIFT 7 /* GP2_DIR */ 98*4882a593Smuzhiyun #define WM8903_GP2_DIR_WIDTH 1 /* GP2_DIR */ 99*4882a593Smuzhiyun #define WM8903_GP2_OP_CFG 0x0040 /* GP2_OP_CFG */ 100*4882a593Smuzhiyun #define WM8903_GP2_OP_CFG_MASK 0x0040 /* GP2_OP_CFG */ 101*4882a593Smuzhiyun #define WM8903_GP2_OP_CFG_SHIFT 6 /* GP2_OP_CFG */ 102*4882a593Smuzhiyun #define WM8903_GP2_OP_CFG_WIDTH 1 /* GP2_OP_CFG */ 103*4882a593Smuzhiyun #define WM8903_GP2_IP_CFG 0x0020 /* GP2_IP_CFG */ 104*4882a593Smuzhiyun #define WM8903_GP2_IP_CFG_MASK 0x0020 /* GP2_IP_CFG */ 105*4882a593Smuzhiyun #define WM8903_GP2_IP_CFG_SHIFT 5 /* GP2_IP_CFG */ 106*4882a593Smuzhiyun #define WM8903_GP2_IP_CFG_WIDTH 1 /* GP2_IP_CFG */ 107*4882a593Smuzhiyun #define WM8903_GP2_LVL 0x0010 /* GP2_LVL */ 108*4882a593Smuzhiyun #define WM8903_GP2_LVL_MASK 0x0010 /* GP2_LVL */ 109*4882a593Smuzhiyun #define WM8903_GP2_LVL_SHIFT 4 /* GP2_LVL */ 110*4882a593Smuzhiyun #define WM8903_GP2_LVL_WIDTH 1 /* GP2_LVL */ 111*4882a593Smuzhiyun #define WM8903_GP2_PD 0x0008 /* GP2_PD */ 112*4882a593Smuzhiyun #define WM8903_GP2_PD_MASK 0x0008 /* GP2_PD */ 113*4882a593Smuzhiyun #define WM8903_GP2_PD_SHIFT 3 /* GP2_PD */ 114*4882a593Smuzhiyun #define WM8903_GP2_PD_WIDTH 1 /* GP2_PD */ 115*4882a593Smuzhiyun #define WM8903_GP2_PU 0x0004 /* GP2_PU */ 116*4882a593Smuzhiyun #define WM8903_GP2_PU_MASK 0x0004 /* GP2_PU */ 117*4882a593Smuzhiyun #define WM8903_GP2_PU_SHIFT 2 /* GP2_PU */ 118*4882a593Smuzhiyun #define WM8903_GP2_PU_WIDTH 1 /* GP2_PU */ 119*4882a593Smuzhiyun #define WM8903_GP2_INTMODE 0x0002 /* GP2_INTMODE */ 120*4882a593Smuzhiyun #define WM8903_GP2_INTMODE_MASK 0x0002 /* GP2_INTMODE */ 121*4882a593Smuzhiyun #define WM8903_GP2_INTMODE_SHIFT 1 /* GP2_INTMODE */ 122*4882a593Smuzhiyun #define WM8903_GP2_INTMODE_WIDTH 1 /* GP2_INTMODE */ 123*4882a593Smuzhiyun #define WM8903_GP2_DB 0x0001 /* GP2_DB */ 124*4882a593Smuzhiyun #define WM8903_GP2_DB_MASK 0x0001 /* GP2_DB */ 125*4882a593Smuzhiyun #define WM8903_GP2_DB_SHIFT 0 /* GP2_DB */ 126*4882a593Smuzhiyun #define WM8903_GP2_DB_WIDTH 1 /* GP2_DB */ 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun /* 129*4882a593Smuzhiyun * R118 (0x76) - GPIO Control 3 130*4882a593Smuzhiyun */ 131*4882a593Smuzhiyun #define WM8903_GP3_FN_MASK 0x1F00 /* GP3_FN - [12:8] */ 132*4882a593Smuzhiyun #define WM8903_GP3_FN_SHIFT 8 /* GP3_FN - [12:8] */ 133*4882a593Smuzhiyun #define WM8903_GP3_FN_WIDTH 5 /* GP3_FN - [12:8] */ 134*4882a593Smuzhiyun #define WM8903_GP3_DIR 0x0080 /* GP3_DIR */ 135*4882a593Smuzhiyun #define WM8903_GP3_DIR_MASK 0x0080 /* GP3_DIR */ 136*4882a593Smuzhiyun #define WM8903_GP3_DIR_SHIFT 7 /* GP3_DIR */ 137*4882a593Smuzhiyun #define WM8903_GP3_DIR_WIDTH 1 /* GP3_DIR */ 138*4882a593Smuzhiyun #define WM8903_GP3_OP_CFG 0x0040 /* GP3_OP_CFG */ 139*4882a593Smuzhiyun #define WM8903_GP3_OP_CFG_MASK 0x0040 /* GP3_OP_CFG */ 140*4882a593Smuzhiyun #define WM8903_GP3_OP_CFG_SHIFT 6 /* GP3_OP_CFG */ 141*4882a593Smuzhiyun #define WM8903_GP3_OP_CFG_WIDTH 1 /* GP3_OP_CFG */ 142*4882a593Smuzhiyun #define WM8903_GP3_IP_CFG 0x0020 /* GP3_IP_CFG */ 143*4882a593Smuzhiyun #define WM8903_GP3_IP_CFG_MASK 0x0020 /* GP3_IP_CFG */ 144*4882a593Smuzhiyun #define WM8903_GP3_IP_CFG_SHIFT 5 /* GP3_IP_CFG */ 145*4882a593Smuzhiyun #define WM8903_GP3_IP_CFG_WIDTH 1 /* GP3_IP_CFG */ 146*4882a593Smuzhiyun #define WM8903_GP3_LVL 0x0010 /* GP3_LVL */ 147*4882a593Smuzhiyun #define WM8903_GP3_LVL_MASK 0x0010 /* GP3_LVL */ 148*4882a593Smuzhiyun #define WM8903_GP3_LVL_SHIFT 4 /* GP3_LVL */ 149*4882a593Smuzhiyun #define WM8903_GP3_LVL_WIDTH 1 /* GP3_LVL */ 150*4882a593Smuzhiyun #define WM8903_GP3_PD 0x0008 /* GP3_PD */ 151*4882a593Smuzhiyun #define WM8903_GP3_PD_MASK 0x0008 /* GP3_PD */ 152*4882a593Smuzhiyun #define WM8903_GP3_PD_SHIFT 3 /* GP3_PD */ 153*4882a593Smuzhiyun #define WM8903_GP3_PD_WIDTH 1 /* GP3_PD */ 154*4882a593Smuzhiyun #define WM8903_GP3_PU 0x0004 /* GP3_PU */ 155*4882a593Smuzhiyun #define WM8903_GP3_PU_MASK 0x0004 /* GP3_PU */ 156*4882a593Smuzhiyun #define WM8903_GP3_PU_SHIFT 2 /* GP3_PU */ 157*4882a593Smuzhiyun #define WM8903_GP3_PU_WIDTH 1 /* GP3_PU */ 158*4882a593Smuzhiyun #define WM8903_GP3_INTMODE 0x0002 /* GP3_INTMODE */ 159*4882a593Smuzhiyun #define WM8903_GP3_INTMODE_MASK 0x0002 /* GP3_INTMODE */ 160*4882a593Smuzhiyun #define WM8903_GP3_INTMODE_SHIFT 1 /* GP3_INTMODE */ 161*4882a593Smuzhiyun #define WM8903_GP3_INTMODE_WIDTH 1 /* GP3_INTMODE */ 162*4882a593Smuzhiyun #define WM8903_GP3_DB 0x0001 /* GP3_DB */ 163*4882a593Smuzhiyun #define WM8903_GP3_DB_MASK 0x0001 /* GP3_DB */ 164*4882a593Smuzhiyun #define WM8903_GP3_DB_SHIFT 0 /* GP3_DB */ 165*4882a593Smuzhiyun #define WM8903_GP3_DB_WIDTH 1 /* GP3_DB */ 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun /* 168*4882a593Smuzhiyun * R119 (0x77) - GPIO Control 4 169*4882a593Smuzhiyun */ 170*4882a593Smuzhiyun #define WM8903_GP4_FN_MASK 0x1F00 /* GP4_FN - [12:8] */ 171*4882a593Smuzhiyun #define WM8903_GP4_FN_SHIFT 8 /* GP4_FN - [12:8] */ 172*4882a593Smuzhiyun #define WM8903_GP4_FN_WIDTH 5 /* GP4_FN - [12:8] */ 173*4882a593Smuzhiyun #define WM8903_GP4_DIR 0x0080 /* GP4_DIR */ 174*4882a593Smuzhiyun #define WM8903_GP4_DIR_MASK 0x0080 /* GP4_DIR */ 175*4882a593Smuzhiyun #define WM8903_GP4_DIR_SHIFT 7 /* GP4_DIR */ 176*4882a593Smuzhiyun #define WM8903_GP4_DIR_WIDTH 1 /* GP4_DIR */ 177*4882a593Smuzhiyun #define WM8903_GP4_OP_CFG 0x0040 /* GP4_OP_CFG */ 178*4882a593Smuzhiyun #define WM8903_GP4_OP_CFG_MASK 0x0040 /* GP4_OP_CFG */ 179*4882a593Smuzhiyun #define WM8903_GP4_OP_CFG_SHIFT 6 /* GP4_OP_CFG */ 180*4882a593Smuzhiyun #define WM8903_GP4_OP_CFG_WIDTH 1 /* GP4_OP_CFG */ 181*4882a593Smuzhiyun #define WM8903_GP4_IP_CFG 0x0020 /* GP4_IP_CFG */ 182*4882a593Smuzhiyun #define WM8903_GP4_IP_CFG_MASK 0x0020 /* GP4_IP_CFG */ 183*4882a593Smuzhiyun #define WM8903_GP4_IP_CFG_SHIFT 5 /* GP4_IP_CFG */ 184*4882a593Smuzhiyun #define WM8903_GP4_IP_CFG_WIDTH 1 /* GP4_IP_CFG */ 185*4882a593Smuzhiyun #define WM8903_GP4_LVL 0x0010 /* GP4_LVL */ 186*4882a593Smuzhiyun #define WM8903_GP4_LVL_MASK 0x0010 /* GP4_LVL */ 187*4882a593Smuzhiyun #define WM8903_GP4_LVL_SHIFT 4 /* GP4_LVL */ 188*4882a593Smuzhiyun #define WM8903_GP4_LVL_WIDTH 1 /* GP4_LVL */ 189*4882a593Smuzhiyun #define WM8903_GP4_PD 0x0008 /* GP4_PD */ 190*4882a593Smuzhiyun #define WM8903_GP4_PD_MASK 0x0008 /* GP4_PD */ 191*4882a593Smuzhiyun #define WM8903_GP4_PD_SHIFT 3 /* GP4_PD */ 192*4882a593Smuzhiyun #define WM8903_GP4_PD_WIDTH 1 /* GP4_PD */ 193*4882a593Smuzhiyun #define WM8903_GP4_PU 0x0004 /* GP4_PU */ 194*4882a593Smuzhiyun #define WM8903_GP4_PU_MASK 0x0004 /* GP4_PU */ 195*4882a593Smuzhiyun #define WM8903_GP4_PU_SHIFT 2 /* GP4_PU */ 196*4882a593Smuzhiyun #define WM8903_GP4_PU_WIDTH 1 /* GP4_PU */ 197*4882a593Smuzhiyun #define WM8903_GP4_INTMODE 0x0002 /* GP4_INTMODE */ 198*4882a593Smuzhiyun #define WM8903_GP4_INTMODE_MASK 0x0002 /* GP4_INTMODE */ 199*4882a593Smuzhiyun #define WM8903_GP4_INTMODE_SHIFT 1 /* GP4_INTMODE */ 200*4882a593Smuzhiyun #define WM8903_GP4_INTMODE_WIDTH 1 /* GP4_INTMODE */ 201*4882a593Smuzhiyun #define WM8903_GP4_DB 0x0001 /* GP4_DB */ 202*4882a593Smuzhiyun #define WM8903_GP4_DB_MASK 0x0001 /* GP4_DB */ 203*4882a593Smuzhiyun #define WM8903_GP4_DB_SHIFT 0 /* GP4_DB */ 204*4882a593Smuzhiyun #define WM8903_GP4_DB_WIDTH 1 /* GP4_DB */ 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun /* 207*4882a593Smuzhiyun * R120 (0x78) - GPIO Control 5 208*4882a593Smuzhiyun */ 209*4882a593Smuzhiyun #define WM8903_GP5_FN_MASK 0x1F00 /* GP5_FN - [12:8] */ 210*4882a593Smuzhiyun #define WM8903_GP5_FN_SHIFT 8 /* GP5_FN - [12:8] */ 211*4882a593Smuzhiyun #define WM8903_GP5_FN_WIDTH 5 /* GP5_FN - [12:8] */ 212*4882a593Smuzhiyun #define WM8903_GP5_DIR 0x0080 /* GP5_DIR */ 213*4882a593Smuzhiyun #define WM8903_GP5_DIR_MASK 0x0080 /* GP5_DIR */ 214*4882a593Smuzhiyun #define WM8903_GP5_DIR_SHIFT 7 /* GP5_DIR */ 215*4882a593Smuzhiyun #define WM8903_GP5_DIR_WIDTH 1 /* GP5_DIR */ 216*4882a593Smuzhiyun #define WM8903_GP5_OP_CFG 0x0040 /* GP5_OP_CFG */ 217*4882a593Smuzhiyun #define WM8903_GP5_OP_CFG_MASK 0x0040 /* GP5_OP_CFG */ 218*4882a593Smuzhiyun #define WM8903_GP5_OP_CFG_SHIFT 6 /* GP5_OP_CFG */ 219*4882a593Smuzhiyun #define WM8903_GP5_OP_CFG_WIDTH 1 /* GP5_OP_CFG */ 220*4882a593Smuzhiyun #define WM8903_GP5_IP_CFG 0x0020 /* GP5_IP_CFG */ 221*4882a593Smuzhiyun #define WM8903_GP5_IP_CFG_MASK 0x0020 /* GP5_IP_CFG */ 222*4882a593Smuzhiyun #define WM8903_GP5_IP_CFG_SHIFT 5 /* GP5_IP_CFG */ 223*4882a593Smuzhiyun #define WM8903_GP5_IP_CFG_WIDTH 1 /* GP5_IP_CFG */ 224*4882a593Smuzhiyun #define WM8903_GP5_LVL 0x0010 /* GP5_LVL */ 225*4882a593Smuzhiyun #define WM8903_GP5_LVL_MASK 0x0010 /* GP5_LVL */ 226*4882a593Smuzhiyun #define WM8903_GP5_LVL_SHIFT 4 /* GP5_LVL */ 227*4882a593Smuzhiyun #define WM8903_GP5_LVL_WIDTH 1 /* GP5_LVL */ 228*4882a593Smuzhiyun #define WM8903_GP5_PD 0x0008 /* GP5_PD */ 229*4882a593Smuzhiyun #define WM8903_GP5_PD_MASK 0x0008 /* GP5_PD */ 230*4882a593Smuzhiyun #define WM8903_GP5_PD_SHIFT 3 /* GP5_PD */ 231*4882a593Smuzhiyun #define WM8903_GP5_PD_WIDTH 1 /* GP5_PD */ 232*4882a593Smuzhiyun #define WM8903_GP5_PU 0x0004 /* GP5_PU */ 233*4882a593Smuzhiyun #define WM8903_GP5_PU_MASK 0x0004 /* GP5_PU */ 234*4882a593Smuzhiyun #define WM8903_GP5_PU_SHIFT 2 /* GP5_PU */ 235*4882a593Smuzhiyun #define WM8903_GP5_PU_WIDTH 1 /* GP5_PU */ 236*4882a593Smuzhiyun #define WM8903_GP5_INTMODE 0x0002 /* GP5_INTMODE */ 237*4882a593Smuzhiyun #define WM8903_GP5_INTMODE_MASK 0x0002 /* GP5_INTMODE */ 238*4882a593Smuzhiyun #define WM8903_GP5_INTMODE_SHIFT 1 /* GP5_INTMODE */ 239*4882a593Smuzhiyun #define WM8903_GP5_INTMODE_WIDTH 1 /* GP5_INTMODE */ 240*4882a593Smuzhiyun #define WM8903_GP5_DB 0x0001 /* GP5_DB */ 241*4882a593Smuzhiyun #define WM8903_GP5_DB_MASK 0x0001 /* GP5_DB */ 242*4882a593Smuzhiyun #define WM8903_GP5_DB_SHIFT 0 /* GP5_DB */ 243*4882a593Smuzhiyun #define WM8903_GP5_DB_WIDTH 1 /* GP5_DB */ 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun #define WM8903_NUM_GPIO 5 246*4882a593Smuzhiyun 247*4882a593Smuzhiyun struct wm8903_platform_data { 248*4882a593Smuzhiyun bool irq_active_low; /* Set if IRQ active low, default high */ 249*4882a593Smuzhiyun 250*4882a593Smuzhiyun /* Default register value for R6 (Mic bias), used to configure 251*4882a593Smuzhiyun * microphone detection. In conjunction with gpio_cfg this 252*4882a593Smuzhiyun * can be used to route the microphone status signals out onto 253*4882a593Smuzhiyun * the GPIOs for use with snd_soc_jack_add_gpios(). 254*4882a593Smuzhiyun */ 255*4882a593Smuzhiyun u16 micdet_cfg; 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun int micdet_delay; /* Delay after microphone detection (ms) */ 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun int gpio_base; 260*4882a593Smuzhiyun u32 gpio_cfg[WM8903_NUM_GPIO]; /* Default register values for GPIO pin mux */ 261*4882a593Smuzhiyun }; 262*4882a593Smuzhiyun 263*4882a593Smuzhiyun #endif 264