Lines Matching +full:usb +full:- +full:sdp
63 struct extcon_dev *edev = cg->cable_edev; in sy6982c_cg_bc_evt_worker()
65 const char *event[5] = {"UN", "NONE", "USB", "AC", "CDP1.5A"}; in sy6982c_cg_bc_evt_worker()
80 dev_info(cg->dev, "receive type-c notifier event: %s...\n", in sy6982c_cg_bc_evt_worker()
82 cg->usb_charger = charger; in sy6982c_cg_bc_evt_worker()
93 queue_delayed_work(cg->usb_charger_wq, &cg->usb_work, in sy6982c_cg_charger_evt_notifier()
104 if (extcon_get_cable_state_(cg->cable_edev, EXTCON_USB) == 0) { in sy6982c_cg_discnt_evt_worker()
105 dev_info(cg->dev, "receive type-c notifier event: DISCNT...\n"); in sy6982c_cg_discnt_evt_worker()
106 cg->usb_charger = USB_TYPE_NONE_CHARGER; in sy6982c_cg_discnt_evt_worker()
116 queue_delayed_work(cg->usb_charger_wq, &cg->discnt_work, in sy6982c_cg_discnt_evt_notfier()
124 struct device *dev = cg->dev; in sy6982c_cg_init_usb()
128 if (!cg->extcon) in sy6982c_cg_init_usb()
129 return -1; in sy6982c_cg_init_usb()
133 if (PTR_ERR(edev) != -EPROBE_DEFER) in sy6982c_cg_init_usb()
138 cg->usb_charger_wq = alloc_ordered_workqueue("%s", in sy6982c_cg_init_usb()
140 "sy6982c-usb-wq"); in sy6982c_cg_init_usb()
141 cg->usb_charger = USB_TYPE_NONE_CHARGER; in sy6982c_cg_init_usb()
144 INIT_DELAYED_WORK(&cg->usb_work, sy6982c_cg_bc_evt_worker); in sy6982c_cg_init_usb()
145 cg->cable_cg_nb.notifier_call = sy6982c_cg_charger_evt_notifier; in sy6982c_cg_init_usb()
147 &cg->cable_cg_nb); in sy6982c_cg_init_usb()
149 dev_err(dev, "failed to register notifier for SDP\n"); in sy6982c_cg_init_usb()
154 &cg->cable_cg_nb); in sy6982c_cg_init_usb()
161 &cg->cable_cg_nb); in sy6982c_cg_init_usb()
167 /* Register discnt usb */ in sy6982c_cg_init_usb()
168 INIT_DELAYED_WORK(&cg->discnt_work, sy6982c_cg_discnt_evt_worker); in sy6982c_cg_init_usb()
169 cg->cable_discnt_nb.notifier_call = sy6982c_cg_discnt_evt_notfier; in sy6982c_cg_init_usb()
171 &cg->cable_discnt_nb); in sy6982c_cg_init_usb()
177 cg->cable_edev = edev; in sy6982c_cg_init_usb()
178 schedule_delayed_work(&cg->usb_work, 0); in sy6982c_cg_init_usb()
179 dev_info(cg->dev, "register extcon evt notifier\n"); in sy6982c_cg_init_usb()
184 destroy_workqueue(cg->usb_charger_wq); in sy6982c_cg_init_usb()
201 if (cg->usb_charger != USB_TYPE_UNKNOWN_CHARGER && in sy6982c_cg_usb_get_property()
202 cg->usb_charger != USB_TYPE_NONE_CHARGER) in sy6982c_cg_usb_get_property()
204 if (cg->dc_charger != DC_TYPE_NONE_CHARGER) in sy6982c_cg_usb_get_property()
208 val->intval = online; in sy6982c_cg_usb_get_property()
210 dev_dbg(cg->dev, "report online: %d\n", val->intval); in sy6982c_cg_usb_get_property()
214 val->intval = POWER_SUPPLY_STATUS_CHARGING; in sy6982c_cg_usb_get_property()
216 val->intval = POWER_SUPPLY_STATUS_DISCHARGING; in sy6982c_cg_usb_get_property()
218 dev_dbg(cg->dev, "report prop: %d\n", val->intval); in sy6982c_cg_usb_get_property()
221 ret = -EINVAL; in sy6982c_cg_usb_get_property()
240 cg->usb_psy = devm_power_supply_register(cg->dev, &sy6982c_usb_desc, in sy6982c_cg_init_power_supply()
242 if (IS_ERR(cg->usb_psy)) { in sy6982c_cg_init_power_supply()
243 dev_err(cg->dev, "register usb power supply fail\n"); in sy6982c_cg_init_power_supply()
244 return PTR_ERR(cg->usb_psy); in sy6982c_cg_init_power_supply()
253 struct device *dev = cg->dev; in sy6982c_charger_parse_dt()
255 cg->dc_det_pin = devm_gpiod_get_optional(dev, "dc-det", in sy6982c_charger_parse_dt()
257 if (!IS_ERR_OR_NULL(cg->dc_det_pin)) { in sy6982c_charger_parse_dt()
258 cg->support_dc_det = true; in sy6982c_charger_parse_dt()
261 cg->support_dc_det = false; in sy6982c_charger_parse_dt()
269 return -ENODEV; in sy6982c_charger_parse_dt()
275 return (gpiod_get_value(cg->dc_det_pin)) ? in sy6982c_charger_get_dc_state()
287 cg->dc_charger = charger; in sy6982c_charger_dc_det_worker()
289 cg->dc_charger = DC_TYPE_NONE_CHARGER; in sy6982c_charger_dc_det_worker()
298 queue_delayed_work(cg->dc_charger_wq, &cg->dc_work, in sy6982c_charger_dc_det_isr()
310 if (!cg->support_dc_det) in sy6982c_charger_init_dc()
313 cg->dc_charger_wq = alloc_ordered_workqueue("%s", in sy6982c_charger_init_dc()
315 "sy6982c-dc-wq"); in sy6982c_charger_init_dc()
316 if (!cg->dc_charger_wq) in sy6982c_charger_init_dc()
317 return -EINVAL; in sy6982c_charger_init_dc()
319 INIT_DELAYED_WORK(&cg->dc_work, sy6982c_charger_dc_det_worker); in sy6982c_charger_init_dc()
320 cg->dc_charger = DC_TYPE_NONE_CHARGER; in sy6982c_charger_init_dc()
322 if (gpiod_get_value(cg->dc_det_pin)) in sy6982c_charger_init_dc()
323 cg->dc_charger = DC_TYPE_DC_CHARGER; in sy6982c_charger_init_dc()
325 cg->dc_charger = DC_TYPE_NONE_CHARGER; in sy6982c_charger_init_dc()
328 dc_det_irq = gpiod_to_irq(cg->dc_det_pin); in sy6982c_charger_init_dc()
329 ret = devm_request_irq(cg->dev, dc_det_irq, sy6982c_charger_dc_det_isr, in sy6982c_charger_init_dc()
332 dev_err(cg->dev, "sy6982c_dc_det_irq request failed!\n"); in sy6982c_charger_init_dc()
346 cg = devm_kzalloc(&pdev->dev, sizeof(*cg), GFP_KERNEL); in sy6982c_charger_probe()
348 return -ENOMEM; in sy6982c_charger_probe()
350 cg->dev = &pdev->dev; in sy6982c_charger_probe()
353 cg->extcon = device_property_read_bool(cg->dev, "extcon"); in sy6982c_charger_probe()
356 dev_err(cg->dev, "init usb failed!\n"); in sy6982c_charger_probe()
362 dev_err(cg->dev, "init power supply fail!\n"); in sy6982c_charger_probe()
366 dev_info(cg->dev, "driver registered\n"); in sy6982c_charger_probe()
375 if (cg->usb_charger_wq) in sy6982c_charger_remove()
376 destroy_workqueue(cg->usb_charger_wq); in sy6982c_charger_remove()
383 .compatible = "sy6982c-charger",
392 .name = "sy6982c-charger",
400 MODULE_ALIAS("platform:sy6982c-charger");
401 MODULE_AUTHOR("chen Shunqing<csq@rock-chips.com>");