Lines Matching refs:usb_phy
33 struct usb_phy *phy;
51 static struct usb_phy *__usb_find_phy(struct list_head *list,
54 struct usb_phy *phy = NULL;
66 static struct usb_phy *__of_usb_find_phy(struct device_node *node)
68 struct usb_phy *phy;
83 static struct usb_phy *__device_to_usb_phy(const struct device *dev)
85 struct usb_phy *usb_phy;
87 list_for_each_entry(usb_phy, &phy_list, head) {
88 if (usb_phy->dev == dev)
89 return usb_phy;
95 static void usb_phy_set_default_current(struct usb_phy *usb_phy)
97 usb_phy->chg_cur.sdp_min = DEFAULT_SDP_CUR_MIN;
98 usb_phy->chg_cur.sdp_max = DEFAULT_SDP_CUR_MAX;
99 usb_phy->chg_cur.dcp_min = DEFAULT_DCP_CUR_MIN;
100 usb_phy->chg_cur.dcp_max = DEFAULT_DCP_CUR_MAX;
101 usb_phy->chg_cur.cdp_min = DEFAULT_CDP_CUR_MIN;
102 usb_phy->chg_cur.cdp_max = DEFAULT_CDP_CUR_MAX;
103 usb_phy->chg_cur.aca_min = DEFAULT_ACA_CUR_MIN;
104 usb_phy->chg_cur.aca_max = DEFAULT_ACA_CUR_MAX;
125 struct usb_phy *usb_phy = container_of(work, struct usb_phy, chg_work);
128 switch (usb_phy->chg_state) {
130 usb_phy_get_charger_current(usb_phy, &min, &max);
132 atomic_notifier_call_chain(&usb_phy->notifier, max, usb_phy);
135 usb_phy_set_default_current(usb_phy);
137 atomic_notifier_call_chain(&usb_phy->notifier, 0, usb_phy);
140 dev_warn(usb_phy->dev, "Unknown USB charger state: %d\n",
141 usb_phy->chg_state);
145 kobject_uevent(&usb_phy->dev->kobj, KOBJ_CHANGE);
150 const struct usb_phy *usb_phy;
156 usb_phy = __device_to_usb_phy(dev);
159 if (!usb_phy)
163 "USB_CHARGER_STATE=%s", usb_chger_state[usb_phy->chg_state]);
166 "USB_CHARGER_TYPE=%s", usb_chger_type[usb_phy->chg_type]);
177 static void __usb_phy_get_charger_type(struct usb_phy *usb_phy)
179 if (extcon_get_state(usb_phy->edev, EXTCON_CHG_USB_SDP) > 0) {
180 usb_phy->chg_type = SDP_TYPE;
181 usb_phy->chg_state = USB_CHARGER_PRESENT;
182 } else if (extcon_get_state(usb_phy->edev, EXTCON_CHG_USB_CDP) > 0) {
183 usb_phy->chg_type = CDP_TYPE;
184 usb_phy->chg_state = USB_CHARGER_PRESENT;
185 } else if (extcon_get_state(usb_phy->edev, EXTCON_CHG_USB_DCP) > 0) {
186 usb_phy->chg_type = DCP_TYPE;
187 usb_phy->chg_state = USB_CHARGER_PRESENT;
188 } else if (extcon_get_state(usb_phy->edev, EXTCON_CHG_USB_ACA) > 0) {
189 usb_phy->chg_type = ACA_TYPE;
190 usb_phy->chg_state = USB_CHARGER_PRESENT;
192 usb_phy->chg_type = UNKNOWN_TYPE;
193 usb_phy->chg_state = USB_CHARGER_ABSENT;
196 schedule_work(&usb_phy->chg_work);
211 struct usb_phy *usb_phy = container_of(nb, struct usb_phy, type_nb);
213 __usb_phy_get_charger_type(usb_phy);
219 * @usb_phy: the USB phy to be used
231 void usb_phy_set_charger_current(struct usb_phy *usb_phy, unsigned int mA)
233 switch (usb_phy->chg_type) {
235 if (usb_phy->chg_cur.sdp_max == mA)
238 usb_phy->chg_cur.sdp_max = (mA > DEFAULT_SDP_CUR_MAX_SS) ?
242 if (usb_phy->chg_cur.dcp_max == mA)
245 usb_phy->chg_cur.dcp_max = (mA > DEFAULT_DCP_CUR_MAX) ?
249 if (usb_phy->chg_cur.cdp_max == mA)
252 usb_phy->chg_cur.cdp_max = (mA > DEFAULT_CDP_CUR_MAX) ?
256 if (usb_phy->chg_cur.aca_max == mA)
259 usb_phy->chg_cur.aca_max = (mA > DEFAULT_ACA_CUR_MAX) ?
266 schedule_work(&usb_phy->chg_work);
272 * @usb_phy: the USB phy to be used
280 void usb_phy_get_charger_current(struct usb_phy *usb_phy,
283 switch (usb_phy->chg_type) {
285 *min = usb_phy->chg_cur.sdp_min;
286 *max = usb_phy->chg_cur.sdp_max;
289 *min = usb_phy->chg_cur.dcp_min;
290 *max = usb_phy->chg_cur.dcp_max;
293 *min = usb_phy->chg_cur.cdp_min;
294 *max = usb_phy->chg_cur.cdp_max;
297 *min = usb_phy->chg_cur.aca_min;
298 *max = usb_phy->chg_cur.aca_max;
310 * @usb_phy: the USB phy to be used
317 void usb_phy_set_charger_state(struct usb_phy *usb_phy,
320 if (usb_phy->chg_state == state || !usb_phy->charger_detect)
323 usb_phy->chg_state = state;
324 if (usb_phy->chg_state == USB_CHARGER_PRESENT)
325 usb_phy->chg_type = usb_phy->charger_detect(usb_phy);
327 usb_phy->chg_type = UNKNOWN_TYPE;
329 schedule_work(&usb_phy->chg_work);
335 struct usb_phy *phy = *(struct usb_phy **)res;
351 struct usb_phy **phy = res;
356 static void usb_charger_init(struct usb_phy *usb_phy)
358 usb_phy->chg_type = UNKNOWN_TYPE;
359 usb_phy->chg_state = USB_CHARGER_DEFAULT;
360 usb_phy_set_default_current(usb_phy);
361 INIT_WORK(&usb_phy->chg_work, usb_phy_notify_charger_work);
364 static int usb_add_extcon(struct usb_phy *x)
464 struct usb_phy *devm_usb_get_phy(struct device *dev, enum usb_phy_type type)
466 struct usb_phy **ptr, *phy;
493 struct usb_phy *usb_get_phy(enum usb_phy_type type)
495 struct usb_phy *phy = NULL;
535 struct usb_phy *devm_usb_get_phy_by_node(struct device *dev,
539 struct usb_phy *phy = ERR_PTR(-ENOMEM);
594 struct usb_phy *devm_usb_get_phy_by_phandle(struct device *dev,
598 struct usb_phy *phy;
627 void devm_usb_put_phy(struct device *dev, struct usb_phy *phy)
644 void usb_put_phy(struct usb_phy *x)
664 int usb_add_phy(struct usb_phy *x, enum usb_phy_type type)
668 struct usb_phy *phy;
703 .name = "usb_phy",
715 int usb_add_phy_dev(struct usb_phy *x)
748 void usb_remove_phy(struct usb_phy *x)
766 void usb_phy_set_event(struct usb_phy *x, unsigned long event)