Lines Matching +full:usb +full:- +full:sdp

62 	struct extcon_dev *edev = cg->cable_edev;  in universal_cg_bc_evt_worker()
64 const char *event[5] = {"UN", "NONE", "USB", "AC", "CDP1.5A"}; in universal_cg_bc_evt_worker()
79 dev_info(cg->dev, "receive usb notifier event: %s...\n", in universal_cg_bc_evt_worker()
81 cg->usb_charger = charger; in universal_cg_bc_evt_worker()
92 queue_delayed_work(cg->usb_charger_wq, &cg->usb_work, in universal_cg_charger_evt_notifier()
103 if (extcon_get_cable_state_(cg->cable_edev, EXTCON_USB) == 0) { in universal_cg_discnt_evt_worker()
104 dev_info(cg->dev, "receive usb notifier event: DISCNT...\n"); in universal_cg_discnt_evt_worker()
105 cg->usb_charger = USB_TYPE_NONE_CHARGER; in universal_cg_discnt_evt_worker()
115 queue_delayed_work(cg->usb_charger_wq, &cg->discnt_work, in universal_cg_discnt_evt_notfier()
123 struct device *dev = cg->dev; in universal_cg_init_usb()
127 if (!cg->extcon) in universal_cg_init_usb()
132 if (PTR_ERR(edev) != -EPROBE_DEFER) in universal_cg_init_usb()
137 cg->usb_charger_wq = alloc_ordered_workqueue("%s", in universal_cg_init_usb()
139 "universal-usb-wq"); in universal_cg_init_usb()
140 if (!cg->usb_charger_wq) in universal_cg_init_usb()
141 return -ENOMEM; in universal_cg_init_usb()
143 cg->usb_charger = USB_TYPE_NONE_CHARGER; in universal_cg_init_usb()
146 INIT_DELAYED_WORK(&cg->usb_work, universal_cg_bc_evt_worker); in universal_cg_init_usb()
147 cg->cable_cg_nb.notifier_call = universal_cg_charger_evt_notifier; in universal_cg_init_usb()
149 &cg->cable_cg_nb); in universal_cg_init_usb()
151 dev_err(dev, "failed to register notifier for SDP\n"); in universal_cg_init_usb()
156 &cg->cable_cg_nb); in universal_cg_init_usb()
163 &cg->cable_cg_nb); in universal_cg_init_usb()
169 /* Register discnt usb */ in universal_cg_init_usb()
170 INIT_DELAYED_WORK(&cg->discnt_work, universal_cg_discnt_evt_worker); in universal_cg_init_usb()
171 cg->cable_discnt_nb.notifier_call = universal_cg_discnt_evt_notfier; in universal_cg_init_usb()
173 &cg->cable_discnt_nb); in universal_cg_init_usb()
179 cg->cable_edev = edev; in universal_cg_init_usb()
180 schedule_delayed_work(&cg->usb_work, 0); in universal_cg_init_usb()
181 dev_info(cg->dev, "register extcon evt notifier\n"); in universal_cg_init_usb()
186 destroy_workqueue(cg->usb_charger_wq); in universal_cg_init_usb()
203 if (cg->usb_charger != USB_TYPE_UNKNOWN_CHARGER && in universal_cg_usb_get_property()
204 cg->usb_charger != USB_TYPE_NONE_CHARGER) in universal_cg_usb_get_property()
206 if (cg->dc_charger != DC_TYPE_NONE_CHARGER) in universal_cg_usb_get_property()
210 val->intval = online; in universal_cg_usb_get_property()
212 dev_dbg(cg->dev, "report online: %d\n", val->intval); in universal_cg_usb_get_property()
216 val->intval = POWER_SUPPLY_STATUS_CHARGING; in universal_cg_usb_get_property()
218 val->intval = POWER_SUPPLY_STATUS_DISCHARGING; in universal_cg_usb_get_property()
220 dev_dbg(cg->dev, "report prop: %d\n", val->intval); in universal_cg_usb_get_property()
223 ret = -EINVAL; in universal_cg_usb_get_property()
242 cg->usb_psy = devm_power_supply_register(cg->dev, &universal_usb_desc, in universal_cg_init_power_supply()
244 if (IS_ERR(cg->usb_psy)) { in universal_cg_init_power_supply()
245 dev_err(cg->dev, "register usb power supply fail\n"); in universal_cg_init_power_supply()
246 return PTR_ERR(cg->usb_psy); in universal_cg_init_power_supply()
255 struct device *dev = cg->dev; in universal_charger_parse_dt()
257 cg->dc_det_pin = devm_gpiod_get_optional(dev, "dc-det", in universal_charger_parse_dt()
259 if (!IS_ERR_OR_NULL(cg->dc_det_pin)) { in universal_charger_parse_dt()
260 cg->support_dc_det = true; in universal_charger_parse_dt()
263 cg->support_dc_det = false; in universal_charger_parse_dt()
271 return -ENODEV; in universal_charger_parse_dt()
278 return (gpiod_get_value(cg->dc_det_pin)) ? in universal_charger_get_dc_state()
290 cg->dc_charger = charger; in universal_charger_dc_det_worker()
292 cg->dc_charger = DC_TYPE_NONE_CHARGER; in universal_charger_dc_det_worker()
299 queue_delayed_work(cg->dc_charger_wq, &cg->dc_work, in universal_charger_dc_det_isr()
311 if (!cg->support_dc_det) in universal_charger_init_dc()
314 cg->dc_charger_wq = alloc_ordered_workqueue("%s", in universal_charger_init_dc()
316 "universal-dc-wq"); in universal_charger_init_dc()
317 if (!cg->dc_charger_wq) in universal_charger_init_dc()
318 return -ENOMEM; in universal_charger_init_dc()
320 INIT_DELAYED_WORK(&cg->dc_work, universal_charger_dc_det_worker); in universal_charger_init_dc()
321 cg->dc_charger = DC_TYPE_NONE_CHARGER; in universal_charger_init_dc()
323 if (gpiod_get_value(cg->dc_det_pin)) in universal_charger_init_dc()
324 cg->dc_charger = DC_TYPE_DC_CHARGER; in universal_charger_init_dc()
326 cg->dc_charger = DC_TYPE_NONE_CHARGER; in universal_charger_init_dc()
329 dc_det_irq = gpiod_to_irq(cg->dc_det_pin); in universal_charger_init_dc()
330 ret = devm_request_irq(cg->dev, dc_det_irq, in universal_charger_init_dc()
334 destroy_workqueue(cg->dc_charger_wq); in universal_charger_init_dc()
335 dev_err(cg->dev, "universal_dc_det_irq request failed!\n"); in universal_charger_init_dc()
349 cg = devm_kzalloc(&pdev->dev, sizeof(*cg), GFP_KERNEL); in universal_charger_probe()
351 return -ENOMEM; in universal_charger_probe()
353 cg->dev = &pdev->dev; in universal_charger_probe()
357 dev_err(cg->dev, "init dc failed!\n"); in universal_charger_probe()
360 cg->extcon = device_property_read_bool(cg->dev, "extcon"); in universal_charger_probe()
363 dev_err(cg->dev, "init usb failed!\n"); in universal_charger_probe()
369 dev_err(cg->dev, "init power supply fail!\n"); in universal_charger_probe()
373 dev_info(cg->dev, "driver registered\n"); in universal_charger_probe()
378 if (cg->usb_charger_wq) in universal_charger_probe()
379 destroy_workqueue(cg->usb_charger_wq); in universal_charger_probe()
381 if (cg->dc_charger_wq) in universal_charger_probe()
382 destroy_workqueue(cg->dc_charger_wq); in universal_charger_probe()
391 if (cg->usb_charger_wq) in universal_charger_remove()
392 destroy_workqueue(cg->usb_charger_wq); in universal_charger_remove()
393 if (cg->dc_charger_wq) in universal_charger_remove()
394 destroy_workqueue(cg->dc_charger_wq); in universal_charger_remove()
401 .compatible = "universal-charger",
410 .name = "universal-charger",
418 MODULE_ALIAS("platform:universal-charger");
419 MODULE_AUTHOR("chen Shunqing<csq@rock-chips.com>");