0001
0002
0003
0004
0005
0006
0007
0008 #ifndef __LINUX_EXTCON_RT8973A_H
0009 #define __LINUX_EXTCON_RT8973A_H
0010
0011 enum rt8973a_types {
0012 TYPE_RT8973A,
0013 };
0014
0015
0016 enum rt8973A_reg {
0017 RT8973A_REG_DEVICE_ID = 0x1,
0018 RT8973A_REG_CONTROL1,
0019 RT8973A_REG_INT1,
0020 RT8973A_REG_INT2,
0021 RT8973A_REG_INTM1,
0022 RT8973A_REG_INTM2,
0023 RT8973A_REG_ADC,
0024 RT8973A_REG_RSVD_1,
0025 RT8973A_REG_RSVD_2,
0026 RT8973A_REG_DEV1,
0027 RT8973A_REG_DEV2,
0028 RT8973A_REG_RSVD_3,
0029 RT8973A_REG_RSVD_4,
0030 RT8973A_REG_RSVD_5,
0031 RT8973A_REG_RSVD_6,
0032 RT8973A_REG_RSVD_7,
0033 RT8973A_REG_RSVD_8,
0034 RT8973A_REG_RSVD_9,
0035 RT8973A_REG_MANUAL_SW1,
0036 RT8973A_REG_MANUAL_SW2,
0037 RT8973A_REG_RSVD_10,
0038 RT8973A_REG_RSVD_11,
0039 RT8973A_REG_RSVD_12,
0040 RT8973A_REG_RSVD_13,
0041 RT8973A_REG_RSVD_14,
0042 RT8973A_REG_RSVD_15,
0043 RT8973A_REG_RESET,
0044
0045 RT8973A_REG_END,
0046 };
0047
0048
0049 #define RT8973A_REG_DEVICE_ID_VENDOR_SHIFT 0
0050 #define RT8973A_REG_DEVICE_ID_VERSION_SHIFT 3
0051 #define RT8973A_REG_DEVICE_ID_VENDOR_MASK (0x7 << RT8973A_REG_DEVICE_ID_VENDOR_SHIFT)
0052 #define RT8973A_REG_DEVICE_ID_VERSION_MASK (0x1f << RT8973A_REG_DEVICE_ID_VERSION_SHIFT)
0053
0054 #define RT8973A_REG_CONTROL1_INTM_SHIFT 0
0055 #define RT8973A_REG_CONTROL1_AUTO_CONFIG_SHIFT 2
0056 #define RT8973A_REG_CONTROL1_I2C_RST_EN_SHIFT 3
0057 #define RT8973A_REG_CONTROL1_SWITCH_OPEN_SHIFT 4
0058 #define RT8973A_REG_CONTROL1_CHGTYP_SHIFT 5
0059 #define RT8973A_REG_CONTROL1_USB_CHD_EN_SHIFT 6
0060 #define RT8973A_REG_CONTROL1_ADC_EN_SHIFT 7
0061 #define RT8973A_REG_CONTROL1_INTM_MASK (0x1 << RT8973A_REG_CONTROL1_INTM_SHIFT)
0062 #define RT8973A_REG_CONTROL1_AUTO_CONFIG_MASK (0x1 << RT8973A_REG_CONTROL1_AUTO_CONFIG_SHIFT)
0063 #define RT8973A_REG_CONTROL1_I2C_RST_EN_MASK (0x1 << RT8973A_REG_CONTROL1_I2C_RST_EN_SHIFT)
0064 #define RT8973A_REG_CONTROL1_SWITCH_OPEN_MASK (0x1 << RT8973A_REG_CONTROL1_SWITCH_OPEN_SHIFT)
0065 #define RT8973A_REG_CONTROL1_CHGTYP_MASK (0x1 << RT8973A_REG_CONTROL1_CHGTYP_SHIFT)
0066 #define RT8973A_REG_CONTROL1_USB_CHD_EN_MASK (0x1 << RT8973A_REG_CONTROL1_USB_CHD_EN_SHIFT)
0067 #define RT8973A_REG_CONTROL1_ADC_EN_MASK (0x1 << RT8973A_REG_CONTROL1_ADC_EN_SHIFT)
0068
0069 #define RT9873A_REG_INTM1_ATTACH_SHIFT 0
0070 #define RT9873A_REG_INTM1_DETACH_SHIFT 1
0071 #define RT9873A_REG_INTM1_CHGDET_SHIFT 2
0072 #define RT9873A_REG_INTM1_DCD_T_SHIFT 3
0073 #define RT9873A_REG_INTM1_OVP_SHIFT 4
0074 #define RT9873A_REG_INTM1_CONNECT_SHIFT 5
0075 #define RT9873A_REG_INTM1_ADC_CHG_SHIFT 6
0076 #define RT9873A_REG_INTM1_OTP_SHIFT 7
0077 #define RT9873A_REG_INTM1_ATTACH_MASK (0x1 << RT9873A_REG_INTM1_ATTACH_SHIFT)
0078 #define RT9873A_REG_INTM1_DETACH_MASK (0x1 << RT9873A_REG_INTM1_DETACH_SHIFT)
0079 #define RT9873A_REG_INTM1_CHGDET_MASK (0x1 << RT9873A_REG_INTM1_CHGDET_SHIFT)
0080 #define RT9873A_REG_INTM1_DCD_T_MASK (0x1 << RT9873A_REG_INTM1_DCD_T_SHIFT)
0081 #define RT9873A_REG_INTM1_OVP_MASK (0x1 << RT9873A_REG_INTM1_OVP_SHIFT)
0082 #define RT9873A_REG_INTM1_CONNECT_MASK (0x1 << RT9873A_REG_INTM1_CONNECT_SHIFT)
0083 #define RT9873A_REG_INTM1_ADC_CHG_MASK (0x1 << RT9873A_REG_INTM1_ADC_CHG_SHIFT)
0084 #define RT9873A_REG_INTM1_OTP_MASK (0x1 << RT9873A_REG_INTM1_OTP_SHIFT)
0085
0086 #define RT9873A_REG_INTM2_UVLO_SHIFT 1
0087 #define RT9873A_REG_INTM2_POR_SHIFT 2
0088 #define RT9873A_REG_INTM2_OTP_FET_SHIFT 3
0089 #define RT9873A_REG_INTM2_OVP_FET_SHIFT 4
0090 #define RT9873A_REG_INTM2_OCP_LATCH_SHIFT 5
0091 #define RT9873A_REG_INTM2_OCP_SHIFT 6
0092 #define RT9873A_REG_INTM2_OVP_OCP_SHIFT 7
0093 #define RT9873A_REG_INTM2_UVLO_MASK (0x1 << RT9873A_REG_INTM2_UVLO_SHIFT)
0094 #define RT9873A_REG_INTM2_POR_MASK (0x1 << RT9873A_REG_INTM2_POR_SHIFT)
0095 #define RT9873A_REG_INTM2_OTP_FET_MASK (0x1 << RT9873A_REG_INTM2_OTP_FET_SHIFT)
0096 #define RT9873A_REG_INTM2_OVP_FET_MASK (0x1 << RT9873A_REG_INTM2_OVP_FET_SHIFT)
0097 #define RT9873A_REG_INTM2_OCP_LATCH_MASK (0x1 << RT9873A_REG_INTM2_OCP_LATCH_SHIFT)
0098 #define RT9873A_REG_INTM2_OCP_MASK (0x1 << RT9873A_REG_INTM2_OCP_SHIFT)
0099 #define RT9873A_REG_INTM2_OVP_OCP_MASK (0x1 << RT9873A_REG_INTM2_OVP_OCP_SHIFT)
0100
0101 #define RT8973A_REG_ADC_SHIFT 0
0102 #define RT8973A_REG_ADC_MASK (0x1f << RT8973A_REG_ADC_SHIFT)
0103
0104 #define RT8973A_REG_DEV1_OTG_SHIFT 0
0105 #define RT8973A_REG_DEV1_SDP_SHIFT 2
0106 #define RT8973A_REG_DEV1_UART_SHIFT 3
0107 #define RT8973A_REG_DEV1_CAR_KIT_TYPE1_SHIFT 4
0108 #define RT8973A_REG_DEV1_CDPORT_SHIFT 5
0109 #define RT8973A_REG_DEV1_DCPORT_SHIFT 6
0110 #define RT8973A_REG_DEV1_OTG_MASK (0x1 << RT8973A_REG_DEV1_OTG_SHIFT)
0111 #define RT8973A_REG_DEV1_SDP_MASK (0x1 << RT8973A_REG_DEV1_SDP_SHIFT)
0112 #define RT8973A_REG_DEV1_UART_MASK (0x1 << RT8973A_REG_DEV1_UART_SHIFT)
0113 #define RT8973A_REG_DEV1_CAR_KIT_TYPE1_MASK (0x1 << RT8973A_REG_DEV1_CAR_KIT_TYPE1_SHIFT)
0114 #define RT8973A_REG_DEV1_CDPORT_MASK (0x1 << RT8973A_REG_DEV1_CDPORT_SHIFT)
0115 #define RT8973A_REG_DEV1_DCPORT_MASK (0x1 << RT8973A_REG_DEV1_DCPORT_SHIFT)
0116 #define RT8973A_REG_DEV1_USB_MASK (RT8973A_REG_DEV1_SDP_MASK \
0117 | RT8973A_REG_DEV1_CDPORT_MASK)
0118
0119 #define RT8973A_REG_DEV2_JIG_USB_ON_SHIFT 0
0120 #define RT8973A_REG_DEV2_JIG_USB_OFF_SHIFT 1
0121 #define RT8973A_REG_DEV2_JIG_UART_ON_SHIFT 2
0122 #define RT8973A_REG_DEV2_JIG_UART_OFF_SHIFT 3
0123 #define RT8973A_REG_DEV2_JIG_USB_ON_MASK (0x1 << RT8973A_REG_DEV2_JIG_USB_ON_SHIFT)
0124 #define RT8973A_REG_DEV2_JIG_USB_OFF_MASK (0x1 << RT8973A_REG_DEV2_JIG_USB_OFF_SHIFT)
0125 #define RT8973A_REG_DEV2_JIG_UART_ON_MASK (0x1 << RT8973A_REG_DEV2_JIG_UART_ON_SHIFT)
0126 #define RT8973A_REG_DEV2_JIG_UART_OFF_MASK (0x1 << RT8973A_REG_DEV2_JIG_UART_OFF_SHIFT)
0127
0128 #define RT8973A_REG_MANUAL_SW1_DP_SHIFT 2
0129 #define RT8973A_REG_MANUAL_SW1_DM_SHIFT 5
0130 #define RT8973A_REG_MANUAL_SW1_DP_MASK (0x7 << RT8973A_REG_MANUAL_SW1_DP_SHIFT)
0131 #define RT8973A_REG_MANUAL_SW1_DM_MASK (0x7 << RT8973A_REG_MANUAL_SW1_DM_SHIFT)
0132 #define DM_DP_CON_SWITCH_OPEN 0x0
0133 #define DM_DP_CON_SWITCH_USB 0x1
0134 #define DM_DP_CON_SWITCH_UART 0x3
0135 #define DM_DP_SWITCH_OPEN ((DM_DP_CON_SWITCH_OPEN << RT8973A_REG_MANUAL_SW1_DP_SHIFT) \
0136 | (DM_DP_CON_SWITCH_OPEN << RT8973A_REG_MANUAL_SW1_DM_SHIFT))
0137 #define DM_DP_SWITCH_USB ((DM_DP_CON_SWITCH_USB << RT8973A_REG_MANUAL_SW1_DP_SHIFT) \
0138 | (DM_DP_CON_SWITCH_USB << RT8973A_REG_MANUAL_SW1_DM_SHIFT))
0139 #define DM_DP_SWITCH_UART ((DM_DP_CON_SWITCH_UART << RT8973A_REG_MANUAL_SW1_DP_SHIFT) \
0140 | (DM_DP_CON_SWITCH_UART << RT8973A_REG_MANUAL_SW1_DM_SHIFT))
0141
0142 #define RT8973A_REG_MANUAL_SW2_FET_ON_SHIFT 0
0143 #define RT8973A_REG_MANUAL_SW2_JIG_ON_SHIFT 2
0144 #define RT8973A_REG_MANUAL_SW2_BOOT_SW_SHIFT 3
0145 #define RT8973A_REG_MANUAL_SW2_FET_ON_MASK (0x1 << RT8973A_REG_MANUAL_SW2_FET_ON_SHIFT)
0146 #define RT8973A_REG_MANUAL_SW2_JIG_ON_MASK (0x1 << RT8973A_REG_MANUAL_SW2_JIG_ON_SHIFT)
0147 #define RT8973A_REG_MANUAL_SW2_BOOT_SW_MASK (0x1 << RT8973A_REG_MANUAL_SW2_BOOT_SW_SHIFT)
0148 #define RT8973A_REG_MANUAL_SW2_FET_ON 0
0149 #define RT8973A_REG_MANUAL_SW2_FET_OFF 0x1
0150 #define RT8973A_REG_MANUAL_SW2_JIG_OFF 0
0151 #define RT8973A_REG_MANUAL_SW2_JIG_ON 0x1
0152 #define RT8973A_REG_MANUAL_SW2_BOOT_SW_ON 0
0153 #define RT8973A_REG_MANUAL_SW2_BOOT_SW_OFF 0x1
0154
0155 #define RT8973A_REG_RESET_SHIFT 0
0156 #define RT8973A_REG_RESET_MASK (0x1 << RT8973A_REG_RESET_SHIFT)
0157 #define RT8973A_REG_RESET 0x1
0158
0159
0160 enum rt8973a_irq {
0161
0162 RT8973A_INT1_ATTACH,
0163 RT8973A_INT1_DETACH,
0164 RT8973A_INT1_CHGDET,
0165 RT8973A_INT1_DCD_T,
0166 RT8973A_INT1_OVP,
0167 RT8973A_INT1_CONNECT,
0168 RT8973A_INT1_ADC_CHG,
0169 RT8973A_INT1_OTP,
0170
0171
0172 RT8973A_INT2_UVLO,
0173 RT8973A_INT2_POR,
0174 RT8973A_INT2_OTP_FET,
0175 RT8973A_INT2_OVP_FET,
0176 RT8973A_INT2_OCP_LATCH,
0177 RT8973A_INT2_OCP,
0178 RT8973A_INT2_OVP_OCP,
0179
0180 RT8973A_NUM,
0181 };
0182
0183 #define RT8973A_INT1_ATTACH_MASK BIT(0)
0184 #define RT8973A_INT1_DETACH_MASK BIT(1)
0185 #define RT8973A_INT1_CHGDET_MASK BIT(2)
0186 #define RT8973A_INT1_DCD_T_MASK BIT(3)
0187 #define RT8973A_INT1_OVP_MASK BIT(4)
0188 #define RT8973A_INT1_CONNECT_MASK BIT(5)
0189 #define RT8973A_INT1_ADC_CHG_MASK BIT(6)
0190 #define RT8973A_INT1_OTP_MASK BIT(7)
0191 #define RT8973A_INT2_UVLOT_MASK BIT(0)
0192 #define RT8973A_INT2_POR_MASK BIT(1)
0193 #define RT8973A_INT2_OTP_FET_MASK BIT(2)
0194 #define RT8973A_INT2_OVP_FET_MASK BIT(3)
0195 #define RT8973A_INT2_OCP_LATCH_MASK BIT(4)
0196 #define RT8973A_INT2_OCP_MASK BIT(5)
0197 #define RT8973A_INT2_OVP_OCP_MASK BIT(6)
0198
0199 #endif