1、charge
● SDP:(Standard Downstream Port) 标准下行端口
这与USB 2.0规范定义的端口相同,也是台式机和笔记本电脑常见的典型端口。挂起时,最大负载电流为2.5mA;连接且非挂起状态下为100mA,可以配置电流为500mA (最大)。
设备可利用硬件识别SDP,USB数据线D+和D-分别通过15kΩ接地,但仍然需要枚举,以符合USB规范。
● DCP:(Dedicated Charging Port)专用充电端口
这种端口不支持任何数据传输,但能够提供1.5A 以上的电流。端口的D+和D-线之间短路。这种类型的端口支持较高充电能力的墙上充电器和车载充电器,无需枚举。
● CDP:(Charging Downstream Port )充电下行端口
这种端口既支持大电流充电,也支持完全兼容USB 2.0 的数据传输。端口具有D+ 和D- 通信所必需的15kΩ下拉电阻,也具有充电器检测阶段切换的内部电路。由于可在枚举之前提供电流,所以有别于USB 2.0。
● ACA:(Accessory Charger Adaptor ):附件充电器适配器 (ACA) 是一种适配器,它允许将单个 USB 端口同时连接到充电器和其他设备。 可用电流量取决于配置(如果连接了充电器,PD 在外围模式下可以消耗 1500mA,在主机模式下可以消耗 [500mA - 附件电源])。
/* Default current range by charger type. */ //默认电流
#define DEFAULT_SDP_CUR_MIN 2 //SDP 2.0
#define DEFAULT_SDP_CUR_MAX 500
#define DEFAULT_SDP_CUR_MIN_SS 150 //SDP 3.0
#define DEFAULT_SDP_CUR_MAX_SS 900
#define DEFAULT_DCP_CUR_MIN 500 //DCP
#define DEFAULT_DCP_CUR_MAX 5000
#define DEFAULT_CDP_CUR_MIN 1500 //CDP
#define DEFAULT_CDP_CUR_MAX 5000
#define DEFAULT_ACA_CUR_MIN 1500 //ACA
#define DEFAULT_ACA_CUR_MAX 5000
static const char *const usb_chger_type[] = {
[UNKNOWN_TYPE] = "USB_CHARGER_UNKNOWN_TYPE",
[SDP_TYPE] = "USB_CHARGER_SDP_TYPE",
[CDP_TYPE] = "USB_CHARGER_CDP_TYPE",
[DCP_TYPE] = "USB_CHARGER_DCP_TYPE",
[ACA_TYPE] = "USB_CHARGER_ACA_TYPE",
};
#define EXTCON_CHG_USB_SDP 5 /* Standard Downstream Port */
#define EXTCON_CHG_USB_DCP 6 /* Dedicated Charging Port */
#define EXTCON_CHG_USB_CDP 7 /* Charging Downstream Port */
#define EXTCON_CHG_USB_ACA 8 /* Accessory Charger Adapter */
== xx_ssphy_qmp_probe(struct platform_device *pdev); // \drivers\usb\phy\phy-xx-ssusb-xx.c
== usb_add_phy_dev(&phy->phy); // \drivers\usb\phy\phy.c
== usb_charger_init(); // 初始化
== usb_phy->chg_type = UNKNOWN_TYPE;
== INIT_WORK(&usb_phy->chg_work, usb_phy_notify_charger_work);
== usb_add_extcon(struct usb_phy *x);
== x->type_nb.notifier_call = usb_phy_get_charger_type;
== ret = devm_extcon_register_notifier(x->dev, x->edev,
EXTCON_CHG_USB_SDP, &x->type_nb); //注册通知EXTCON_CHG_USB_SDP 等