Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * rt8973a.h
0004  *
0005  * Copyright (c) 2014 Samsung Electronics Co., Ltd
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 /* RT8973A registers */
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 /* Define RT8973A MASK/SHIFT constant */
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 /* RT8973A Interrupts */
0160 enum rt8973a_irq {
0161     /* Interrupt1*/
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     /* Interrupt2*/
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 /*  __LINUX_EXTCON_RT8973A_H */