117 lines
3.1 KiB
C
117 lines
3.1 KiB
C
#ifndef _MUIC_VPS_H_
|
|
#define _MUIC_VPS_H_
|
|
|
|
/* MUIC Output of USB Charger Detection */
|
|
typedef enum {
|
|
/* No Valid voltage at VB (Vvb < Vvbdet) */
|
|
CHGTYP_NO_VOLTAGE = 0x00,
|
|
/* Unknown (D+/D- does not present a valid USB charger signature) */
|
|
CHGTYP_USB = 0x01,
|
|
/* Charging Downstream Port */
|
|
CHGTYP_CDP = 0x02,
|
|
/* Dedicated Charger (D+/D- shorted) */
|
|
CHGTYP_DEDICATED_CHARGER = 0x03,
|
|
/* Special 500mA charger, max current 500mA */
|
|
CHGTYP_500MA = 0x04,
|
|
/* Special 1A charger, max current 1A */
|
|
CHGTYP_1A = 0x05,
|
|
/* Special charger - 3.3V bias on D+/D- */
|
|
CHGTYP_SPECIAL_3_3V_CHARGER = 0x06,
|
|
/* Reserved */
|
|
CHGTYP_RFU = 0x07,
|
|
/* Any charger w/o USB */
|
|
CHGTYP_UNOFFICIAL_CHARGER = 0xfc,
|
|
/* Any charger type */
|
|
CHGTYP_ANY = 0xfd,
|
|
/* Don't care charger type */
|
|
CHGTYP_DONTCARE = 0xfe,
|
|
|
|
CHGTYP_MAX,
|
|
|
|
CHGTYP_INIT,
|
|
CHGTYP_MIN = CHGTYP_NO_VOLTAGE
|
|
} chgtyp_t;
|
|
|
|
#define MDEV(name) ATTACHED_DEV_##name##_MUIC
|
|
/*
|
|
* VPS attribute field.
|
|
|
|
b'xxxxxxxx_xxxxxxx_xxxx_bdfs_cccc_vvvv
|
|
x: undefined
|
|
b: No battery charing if not supported (1: no charging, 0: charging)
|
|
d: charger detection
|
|
f: factory device
|
|
s: supported
|
|
c: com port
|
|
v: vbus
|
|
*/
|
|
#define VPS_NOCHG_BITN 11
|
|
#define VPS_CHGDET_BITN 10
|
|
#define VPS_FAC_BITN 9
|
|
#define VPS_SUP_BITN 8
|
|
#define VPS_COM_BITN 4
|
|
#define VPS_VBUS_BITN 0
|
|
#define VPS_NOCHG_MASK 0x1
|
|
#define VPS_CHGDET_MASK 0x1
|
|
#define VPS_FAC_MASK 0x1
|
|
#define VPS_SUP_MASK 0x1
|
|
#define VPS_COM_MASK 0xF
|
|
#define VPS_VBUS_MASK 0xF
|
|
|
|
#define MATTR(com,vbus) \
|
|
(com << VPS_COM_BITN) | \
|
|
(vbus << VPS_VBUS_BITN)
|
|
|
|
#define MATTR_TO_VBUS(a) ((a >> VPS_VBUS_BITN) & VPS_VBUS_MASK)
|
|
#define MATTR_TO_COM(a) ((a >> VPS_COM_BITN) & VPS_COM_MASK)
|
|
#define MATTR_TO_FACT(a) ((a >> VPS_FAC_BITN) & VPS_FAC_MASK)
|
|
#define MATTR_TO_SUPP(a) ((a >> VPS_SUP_BITN) & VPS_SUP_MASK)
|
|
#define MATTR_TO_CDET(a) ((a >> VPS_CHGDET_BITN) & VPS_CHGDET_MASK)
|
|
#define MATTR_TO_NOCHG(a) ((a >> VPS_NOCHG_BITN) & VPS_NOCHG_MASK)
|
|
#define MATTR_NOCHG (1 << VPS_NOCHG_BITN)
|
|
#define MATTR_CDET (1 << VPS_CHGDET_BITN)
|
|
#define MATTR_SUPP (1 << VPS_SUP_BITN)
|
|
#define MATTR_FACT (1 << VPS_FAC_BITN)
|
|
#define MATTR_CDET_SUPP ((1 << VPS_CHGDET_BITN) | MATTR_SUPP)
|
|
#define MATTR_FACT_SUPP ((1 << VPS_FAC_BITN) | MATTR_SUPP)
|
|
|
|
enum vps_vbvolt{
|
|
VB_LOW = 0,
|
|
VB_HIGH = 1,
|
|
VB_CHK = 2,
|
|
VB_ANY = 3,
|
|
};
|
|
|
|
enum vps_com{
|
|
VCOM_OPEN = COM_OPEN_WITH_V_BUS,
|
|
VCOM_USB = COM_USB_AP,
|
|
VCOM_AUDIO = COM_AUDIO,
|
|
VCOM_UART = COM_UART_AP,
|
|
VCOM_USB_CP = COM_USB_CP,
|
|
VCOM_UART_CP = COM_UART_CP,
|
|
};
|
|
|
|
struct vps_cfg {
|
|
char *name;
|
|
int attr;
|
|
};
|
|
|
|
struct vps_tbl_data {
|
|
u8 adc;
|
|
char *rid;
|
|
struct vps_cfg *cfg;
|
|
};
|
|
extern bool vps_name_to_mdev(const char *name, int *sdev);
|
|
extern void vps_update_supported_attr(muic_attached_dev_t mdev, bool supported);
|
|
extern bool vps_is_supported_dev(muic_attached_dev_t mdev);
|
|
extern int vps_find_attached_dev(muic_data_t *pmuic, muic_attached_dev_t *pdev, int *pintr);
|
|
#if defined(CONFIG_SAMSUNG_PRODUCT_SHIP)
|
|
static inline void vps_show_table(void){}
|
|
#else
|
|
extern void vps_show_table(void);
|
|
#endif
|
|
extern void vps_show_supported_list(void);
|
|
extern int vps_resolve_dev(muic_data_t *pmuic, muic_attached_dev_t *pbuf, int *pintr);
|
|
extern bool vps_is_hv_ta(vps_data_t *pvps);
|
|
|
|
#endif
|