1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * rt8973a.h 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (c) 2014 Samsung Electronics Co., Ltd 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef __LINUX_EXTCON_RT8973A_H 9*4882a593Smuzhiyun #define __LINUX_EXTCON_RT8973A_H 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun enum rt8973a_types { 12*4882a593Smuzhiyun TYPE_RT8973A, 13*4882a593Smuzhiyun }; 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* RT8973A registers */ 16*4882a593Smuzhiyun enum rt8973A_reg { 17*4882a593Smuzhiyun RT8973A_REG_DEVICE_ID = 0x1, 18*4882a593Smuzhiyun RT8973A_REG_CONTROL1, 19*4882a593Smuzhiyun RT8973A_REG_INT1, 20*4882a593Smuzhiyun RT8973A_REG_INT2, 21*4882a593Smuzhiyun RT8973A_REG_INTM1, 22*4882a593Smuzhiyun RT8973A_REG_INTM2, 23*4882a593Smuzhiyun RT8973A_REG_ADC, 24*4882a593Smuzhiyun RT8973A_REG_RSVD_1, 25*4882a593Smuzhiyun RT8973A_REG_RSVD_2, 26*4882a593Smuzhiyun RT8973A_REG_DEV1, 27*4882a593Smuzhiyun RT8973A_REG_DEV2, 28*4882a593Smuzhiyun RT8973A_REG_RSVD_3, 29*4882a593Smuzhiyun RT8973A_REG_RSVD_4, 30*4882a593Smuzhiyun RT8973A_REG_RSVD_5, 31*4882a593Smuzhiyun RT8973A_REG_RSVD_6, 32*4882a593Smuzhiyun RT8973A_REG_RSVD_7, 33*4882a593Smuzhiyun RT8973A_REG_RSVD_8, 34*4882a593Smuzhiyun RT8973A_REG_RSVD_9, 35*4882a593Smuzhiyun RT8973A_REG_MANUAL_SW1, 36*4882a593Smuzhiyun RT8973A_REG_MANUAL_SW2, 37*4882a593Smuzhiyun RT8973A_REG_RSVD_10, 38*4882a593Smuzhiyun RT8973A_REG_RSVD_11, 39*4882a593Smuzhiyun RT8973A_REG_RSVD_12, 40*4882a593Smuzhiyun RT8973A_REG_RSVD_13, 41*4882a593Smuzhiyun RT8973A_REG_RSVD_14, 42*4882a593Smuzhiyun RT8973A_REG_RSVD_15, 43*4882a593Smuzhiyun RT8973A_REG_RESET, 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun RT8973A_REG_END, 46*4882a593Smuzhiyun }; 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun /* Define RT8973A MASK/SHIFT constant */ 49*4882a593Smuzhiyun #define RT8973A_REG_DEVICE_ID_VENDOR_SHIFT 0 50*4882a593Smuzhiyun #define RT8973A_REG_DEVICE_ID_VERSION_SHIFT 3 51*4882a593Smuzhiyun #define RT8973A_REG_DEVICE_ID_VENDOR_MASK (0x7 << RT8973A_REG_DEVICE_ID_VENDOR_SHIFT) 52*4882a593Smuzhiyun #define RT8973A_REG_DEVICE_ID_VERSION_MASK (0x1f << RT8973A_REG_DEVICE_ID_VERSION_SHIFT) 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_INTM_SHIFT 0 55*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_AUTO_CONFIG_SHIFT 2 56*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_I2C_RST_EN_SHIFT 3 57*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_SWITCH_OPEN_SHIFT 4 58*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_CHGTYP_SHIFT 5 59*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_USB_CHD_EN_SHIFT 6 60*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_ADC_EN_SHIFT 7 61*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_INTM_MASK (0x1 << RT8973A_REG_CONTROL1_INTM_SHIFT) 62*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_AUTO_CONFIG_MASK (0x1 << RT8973A_REG_CONTROL1_AUTO_CONFIG_SHIFT) 63*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_I2C_RST_EN_MASK (0x1 << RT8973A_REG_CONTROL1_I2C_RST_EN_SHIFT) 64*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_SWITCH_OPEN_MASK (0x1 << RT8973A_REG_CONTROL1_SWITCH_OPEN_SHIFT) 65*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_CHGTYP_MASK (0x1 << RT8973A_REG_CONTROL1_CHGTYP_SHIFT) 66*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_USB_CHD_EN_MASK (0x1 << RT8973A_REG_CONTROL1_USB_CHD_EN_SHIFT) 67*4882a593Smuzhiyun #define RT8973A_REG_CONTROL1_ADC_EN_MASK (0x1 << RT8973A_REG_CONTROL1_ADC_EN_SHIFT) 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun #define RT9873A_REG_INTM1_ATTACH_SHIFT 0 70*4882a593Smuzhiyun #define RT9873A_REG_INTM1_DETACH_SHIFT 1 71*4882a593Smuzhiyun #define RT9873A_REG_INTM1_CHGDET_SHIFT 2 72*4882a593Smuzhiyun #define RT9873A_REG_INTM1_DCD_T_SHIFT 3 73*4882a593Smuzhiyun #define RT9873A_REG_INTM1_OVP_SHIFT 4 74*4882a593Smuzhiyun #define RT9873A_REG_INTM1_CONNECT_SHIFT 5 75*4882a593Smuzhiyun #define RT9873A_REG_INTM1_ADC_CHG_SHIFT 6 76*4882a593Smuzhiyun #define RT9873A_REG_INTM1_OTP_SHIFT 7 77*4882a593Smuzhiyun #define RT9873A_REG_INTM1_ATTACH_MASK (0x1 << RT9873A_REG_INTM1_ATTACH_SHIFT) 78*4882a593Smuzhiyun #define RT9873A_REG_INTM1_DETACH_MASK (0x1 << RT9873A_REG_INTM1_DETACH_SHIFT) 79*4882a593Smuzhiyun #define RT9873A_REG_INTM1_CHGDET_MASK (0x1 << RT9873A_REG_INTM1_CHGDET_SHIFT) 80*4882a593Smuzhiyun #define RT9873A_REG_INTM1_DCD_T_MASK (0x1 << RT9873A_REG_INTM1_DCD_T_SHIFT) 81*4882a593Smuzhiyun #define RT9873A_REG_INTM1_OVP_MASK (0x1 << RT9873A_REG_INTM1_OVP_SHIFT) 82*4882a593Smuzhiyun #define RT9873A_REG_INTM1_CONNECT_MASK (0x1 << RT9873A_REG_INTM1_CONNECT_SHIFT) 83*4882a593Smuzhiyun #define RT9873A_REG_INTM1_ADC_CHG_MASK (0x1 << RT9873A_REG_INTM1_ADC_CHG_SHIFT) 84*4882a593Smuzhiyun #define RT9873A_REG_INTM1_OTP_MASK (0x1 << RT9873A_REG_INTM1_OTP_SHIFT) 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun #define RT9873A_REG_INTM2_UVLO_SHIFT 1 87*4882a593Smuzhiyun #define RT9873A_REG_INTM2_POR_SHIFT 2 88*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OTP_FET_SHIFT 3 89*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OVP_FET_SHIFT 4 90*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OCP_LATCH_SHIFT 5 91*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OCP_SHIFT 6 92*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OVP_OCP_SHIFT 7 93*4882a593Smuzhiyun #define RT9873A_REG_INTM2_UVLO_MASK (0x1 << RT9873A_REG_INTM2_UVLO_SHIFT) 94*4882a593Smuzhiyun #define RT9873A_REG_INTM2_POR_MASK (0x1 << RT9873A_REG_INTM2_POR_SHIFT) 95*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OTP_FET_MASK (0x1 << RT9873A_REG_INTM2_OTP_FET_SHIFT) 96*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OVP_FET_MASK (0x1 << RT9873A_REG_INTM2_OVP_FET_SHIFT) 97*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OCP_LATCH_MASK (0x1 << RT9873A_REG_INTM2_OCP_LATCH_SHIFT) 98*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OCP_MASK (0x1 << RT9873A_REG_INTM2_OCP_SHIFT) 99*4882a593Smuzhiyun #define RT9873A_REG_INTM2_OVP_OCP_MASK (0x1 << RT9873A_REG_INTM2_OVP_OCP_SHIFT) 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun #define RT8973A_REG_ADC_SHIFT 0 102*4882a593Smuzhiyun #define RT8973A_REG_ADC_MASK (0x1f << RT8973A_REG_ADC_SHIFT) 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun #define RT8973A_REG_DEV1_OTG_SHIFT 0 105*4882a593Smuzhiyun #define RT8973A_REG_DEV1_SDP_SHIFT 2 106*4882a593Smuzhiyun #define RT8973A_REG_DEV1_UART_SHIFT 3 107*4882a593Smuzhiyun #define RT8973A_REG_DEV1_CAR_KIT_TYPE1_SHIFT 4 108*4882a593Smuzhiyun #define RT8973A_REG_DEV1_CDPORT_SHIFT 5 109*4882a593Smuzhiyun #define RT8973A_REG_DEV1_DCPORT_SHIFT 6 110*4882a593Smuzhiyun #define RT8973A_REG_DEV1_OTG_MASK (0x1 << RT8973A_REG_DEV1_OTG_SHIFT) 111*4882a593Smuzhiyun #define RT8973A_REG_DEV1_SDP_MASK (0x1 << RT8973A_REG_DEV1_SDP_SHIFT) 112*4882a593Smuzhiyun #define RT8973A_REG_DEV1_UART_MASK (0x1 << RT8973A_REG_DEV1_UART_SHIFT) 113*4882a593Smuzhiyun #define RT8973A_REG_DEV1_CAR_KIT_TYPE1_MASK (0x1 << RT8973A_REG_DEV1_CAR_KIT_TYPE1_SHIFT) 114*4882a593Smuzhiyun #define RT8973A_REG_DEV1_CDPORT_MASK (0x1 << RT8973A_REG_DEV1_CDPORT_SHIFT) 115*4882a593Smuzhiyun #define RT8973A_REG_DEV1_DCPORT_MASK (0x1 << RT8973A_REG_DEV1_DCPORT_SHIFT) 116*4882a593Smuzhiyun #define RT8973A_REG_DEV1_USB_MASK (RT8973A_REG_DEV1_SDP_MASK \ 117*4882a593Smuzhiyun | RT8973A_REG_DEV1_CDPORT_MASK) 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_USB_ON_SHIFT 0 120*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_USB_OFF_SHIFT 1 121*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_UART_ON_SHIFT 2 122*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_UART_OFF_SHIFT 3 123*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_USB_ON_MASK (0x1 << RT8973A_REG_DEV2_JIG_USB_ON_SHIFT) 124*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_USB_OFF_MASK (0x1 << RT8973A_REG_DEV2_JIG_USB_OFF_SHIFT) 125*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_UART_ON_MASK (0x1 << RT8973A_REG_DEV2_JIG_UART_ON_SHIFT) 126*4882a593Smuzhiyun #define RT8973A_REG_DEV2_JIG_UART_OFF_MASK (0x1 << RT8973A_REG_DEV2_JIG_UART_OFF_SHIFT) 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW1_DP_SHIFT 2 129*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW1_DM_SHIFT 5 130*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW1_DP_MASK (0x7 << RT8973A_REG_MANUAL_SW1_DP_SHIFT) 131*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW1_DM_MASK (0x7 << RT8973A_REG_MANUAL_SW1_DM_SHIFT) 132*4882a593Smuzhiyun #define DM_DP_CON_SWITCH_OPEN 0x0 133*4882a593Smuzhiyun #define DM_DP_CON_SWITCH_USB 0x1 134*4882a593Smuzhiyun #define DM_DP_CON_SWITCH_UART 0x3 135*4882a593Smuzhiyun #define DM_DP_SWITCH_OPEN ((DM_DP_CON_SWITCH_OPEN << RT8973A_REG_MANUAL_SW1_DP_SHIFT) \ 136*4882a593Smuzhiyun | (DM_DP_CON_SWITCH_OPEN << RT8973A_REG_MANUAL_SW1_DM_SHIFT)) 137*4882a593Smuzhiyun #define DM_DP_SWITCH_USB ((DM_DP_CON_SWITCH_USB << RT8973A_REG_MANUAL_SW1_DP_SHIFT) \ 138*4882a593Smuzhiyun | (DM_DP_CON_SWITCH_USB << RT8973A_REG_MANUAL_SW1_DM_SHIFT)) 139*4882a593Smuzhiyun #define DM_DP_SWITCH_UART ((DM_DP_CON_SWITCH_UART << RT8973A_REG_MANUAL_SW1_DP_SHIFT) \ 140*4882a593Smuzhiyun | (DM_DP_CON_SWITCH_UART << RT8973A_REG_MANUAL_SW1_DM_SHIFT)) 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_FET_ON_SHIFT 0 143*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_JIG_ON_SHIFT 2 144*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_BOOT_SW_SHIFT 3 145*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_FET_ON_MASK (0x1 << RT8973A_REG_MANUAL_SW2_FET_ON_SHIFT) 146*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_JIG_ON_MASK (0x1 << RT8973A_REG_MANUAL_SW2_JIG_ON_SHIFT) 147*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_BOOT_SW_MASK (0x1 << RT8973A_REG_MANUAL_SW2_BOOT_SW_SHIFT) 148*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_FET_ON 0 149*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_FET_OFF 0x1 150*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_JIG_OFF 0 151*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_JIG_ON 0x1 152*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_BOOT_SW_ON 0 153*4882a593Smuzhiyun #define RT8973A_REG_MANUAL_SW2_BOOT_SW_OFF 0x1 154*4882a593Smuzhiyun 155*4882a593Smuzhiyun #define RT8973A_REG_RESET_SHIFT 0 156*4882a593Smuzhiyun #define RT8973A_REG_RESET_MASK (0x1 << RT8973A_REG_RESET_SHIFT) 157*4882a593Smuzhiyun #define RT8973A_REG_RESET 0x1 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun /* RT8973A Interrupts */ 160*4882a593Smuzhiyun enum rt8973a_irq { 161*4882a593Smuzhiyun /* Interrupt1*/ 162*4882a593Smuzhiyun RT8973A_INT1_ATTACH, 163*4882a593Smuzhiyun RT8973A_INT1_DETACH, 164*4882a593Smuzhiyun RT8973A_INT1_CHGDET, 165*4882a593Smuzhiyun RT8973A_INT1_DCD_T, 166*4882a593Smuzhiyun RT8973A_INT1_OVP, 167*4882a593Smuzhiyun RT8973A_INT1_CONNECT, 168*4882a593Smuzhiyun RT8973A_INT1_ADC_CHG, 169*4882a593Smuzhiyun RT8973A_INT1_OTP, 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun /* Interrupt2*/ 172*4882a593Smuzhiyun RT8973A_INT2_UVLO, 173*4882a593Smuzhiyun RT8973A_INT2_POR, 174*4882a593Smuzhiyun RT8973A_INT2_OTP_FET, 175*4882a593Smuzhiyun RT8973A_INT2_OVP_FET, 176*4882a593Smuzhiyun RT8973A_INT2_OCP_LATCH, 177*4882a593Smuzhiyun RT8973A_INT2_OCP, 178*4882a593Smuzhiyun RT8973A_INT2_OVP_OCP, 179*4882a593Smuzhiyun 180*4882a593Smuzhiyun RT8973A_NUM, 181*4882a593Smuzhiyun }; 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun #define RT8973A_INT1_ATTACH_MASK BIT(0) 184*4882a593Smuzhiyun #define RT8973A_INT1_DETACH_MASK BIT(1) 185*4882a593Smuzhiyun #define RT8973A_INT1_CHGDET_MASK BIT(2) 186*4882a593Smuzhiyun #define RT8973A_INT1_DCD_T_MASK BIT(3) 187*4882a593Smuzhiyun #define RT8973A_INT1_OVP_MASK BIT(4) 188*4882a593Smuzhiyun #define RT8973A_INT1_CONNECT_MASK BIT(5) 189*4882a593Smuzhiyun #define RT8973A_INT1_ADC_CHG_MASK BIT(6) 190*4882a593Smuzhiyun #define RT8973A_INT1_OTP_MASK BIT(7) 191*4882a593Smuzhiyun #define RT8973A_INT2_UVLOT_MASK BIT(0) 192*4882a593Smuzhiyun #define RT8973A_INT2_POR_MASK BIT(1) 193*4882a593Smuzhiyun #define RT8973A_INT2_OTP_FET_MASK BIT(2) 194*4882a593Smuzhiyun #define RT8973A_INT2_OVP_FET_MASK BIT(3) 195*4882a593Smuzhiyun #define RT8973A_INT2_OCP_LATCH_MASK BIT(4) 196*4882a593Smuzhiyun #define RT8973A_INT2_OCP_MASK BIT(5) 197*4882a593Smuzhiyun #define RT8973A_INT2_OVP_OCP_MASK BIT(6) 198*4882a593Smuzhiyun 199*4882a593Smuzhiyun #endif /* __LINUX_EXTCON_RT8973A_H */ 200