Lines Matching refs:info
218 static int max77843_muic_set_path(struct max77843_muic_info *info, in max77843_muic_set_path() argument
221 struct max77843 *max77843 = info->max77843; in max77843_muic_set_path()
234 dev_err(info->dev, "Cannot switch MUIC port\n"); in max77843_muic_set_path()
248 dev_err(info->dev, "Cannot update lowpower mode\n"); in max77843_muic_set_path()
252 dev_dbg(info->dev, in max77843_muic_set_path()
259 static int max77843_muic_get_cable_type(struct max77843_muic_info *info, in max77843_muic_get_cable_type() argument
264 adc = info->status[MAX77843_MUIC_STATUS1] & in max77843_muic_get_cable_type()
272 cable_type = info->prev_cable_type; in max77843_muic_get_cable_type()
273 info->prev_cable_type = MAX77843_MUIC_ADC_OPEN; in max77843_muic_get_cable_type()
276 cable_type = info->prev_cable_type = adc; in max77843_muic_get_cable_type()
280 chg_type = info->status[MAX77843_MUIC_STATUS2] & in max77843_muic_get_cable_type()
290 cable_type = info->prev_chg_type; in max77843_muic_get_cable_type()
291 info->prev_chg_type = MAX77843_MUIC_CHG_NONE; in max77843_muic_get_cable_type()
298 info->prev_chg_type = MAX77843_MUIC_CHG_GND; in max77843_muic_get_cable_type()
305 cable_type = info->prev_chg_type; in max77843_muic_get_cable_type()
306 info->prev_chg_type = MAX77843_MUIC_CHG_NONE; in max77843_muic_get_cable_type()
309 cable_type = info->prev_chg_type = chg_type; in max77843_muic_get_cable_type()
315 cable_type = info->prev_gnd_type; in max77843_muic_get_cable_type()
316 info->prev_gnd_type = MAX77843_MUIC_ADC_OPEN; in max77843_muic_get_cable_type()
326 gnd_type = (info->status[MAX77843_MUIC_STATUS1] & in max77843_muic_get_cable_type()
330 gnd_type |= (info->status[MAX77843_MUIC_STATUS2] & in max77843_muic_get_cable_type()
336 cable_type = info->prev_gnd_type = gnd_type; in max77843_muic_get_cable_type()
340 dev_err(info->dev, "Unknown cable group (%d)\n", group); in max77843_muic_get_cable_type()
348 static int max77843_muic_adc_gnd_handler(struct max77843_muic_info *info) in max77843_muic_adc_gnd_handler() argument
353 gnd_cable_type = max77843_muic_get_cable_type(info, in max77843_muic_adc_gnd_handler()
355 dev_dbg(info->dev, "external connector is %s (gnd:0x%02x)\n", in max77843_muic_adc_gnd_handler()
361 ret = max77843_muic_set_path(info, CONTROL1_SW_USB, attached); in max77843_muic_adc_gnd_handler()
365 extcon_set_cable_state(info->edev, "USB-HOST", attached); in max77843_muic_adc_gnd_handler()
369 ret = max77843_muic_set_path(info, CONTROL1_SW_OPEN, attached); in max77843_muic_adc_gnd_handler()
373 extcon_set_cable_state(info->edev, "MHL", attached); in max77843_muic_adc_gnd_handler()
376 dev_err(info->dev, "failed to detect %s accessory(gnd:0x%x)\n", in max77843_muic_adc_gnd_handler()
384 static int max77843_muic_jig_handler(struct max77843_muic_info *info, in max77843_muic_jig_handler() argument
389 dev_dbg(info->dev, "external connector is %s (adc:0x%02x)\n", in max77843_muic_jig_handler()
394 ret = max77843_muic_set_path(info, CONTROL1_SW_USB, attached); in max77843_muic_jig_handler()
397 extcon_set_cable_state(info->edev, "JIG-USB-OFF", attached); in max77843_muic_jig_handler()
400 ret = max77843_muic_set_path(info, CONTROL1_SW_USB, attached); in max77843_muic_jig_handler()
403 extcon_set_cable_state(info->edev, "JIG-USB-ON", attached); in max77843_muic_jig_handler()
406 ret = max77843_muic_set_path(info, CONTROL1_SW_UART, attached); in max77843_muic_jig_handler()
409 extcon_set_cable_state(info->edev, "JIG-UART-OFF", attached); in max77843_muic_jig_handler()
412 ret = max77843_muic_set_path(info, CONTROL1_SW_OPEN, attached); in max77843_muic_jig_handler()
421 static int max77843_muic_adc_handler(struct max77843_muic_info *info) in max77843_muic_adc_handler() argument
426 cable_type = max77843_muic_get_cable_type(info, in max77843_muic_adc_handler()
429 dev_dbg(info->dev, in max77843_muic_adc_handler()
432 info->prev_cable_type); in max77843_muic_adc_handler()
436 ret = max77843_muic_adc_gnd_handler(info); in max77843_muic_adc_handler()
443 ret = max77843_muic_jig_handler(info, cable_type, attached); in max77843_muic_adc_handler()
475 dev_err(info->dev, in max77843_muic_adc_handler()
480 dev_err(info->dev, in max77843_muic_adc_handler()
489 static int max77843_muic_chg_handler(struct max77843_muic_info *info) in max77843_muic_chg_handler() argument
494 chg_type = max77843_muic_get_cable_type(info, in max77843_muic_chg_handler()
497 dev_dbg(info->dev, in max77843_muic_chg_handler()
500 chg_type, info->prev_chg_type); in max77843_muic_chg_handler()
504 ret = max77843_muic_set_path(info, CONTROL1_SW_USB, attached); in max77843_muic_chg_handler()
508 extcon_set_cable_state(info->edev, "USB", attached); in max77843_muic_chg_handler()
511 ret = max77843_muic_set_path(info, CONTROL1_SW_OPEN, attached); in max77843_muic_chg_handler()
515 extcon_set_cable_state(info->edev, in max77843_muic_chg_handler()
519 ret = max77843_muic_set_path(info, CONTROL1_SW_OPEN, attached); in max77843_muic_chg_handler()
523 extcon_set_cable_state(info->edev, "TA", attached); in max77843_muic_chg_handler()
526 ret = max77843_muic_set_path(info, CONTROL1_SW_OPEN, attached); in max77843_muic_chg_handler()
530 extcon_set_cable_state(info->edev, "SLOW-CHAREGER", attached); in max77843_muic_chg_handler()
533 ret = max77843_muic_set_path(info, CONTROL1_SW_OPEN, attached); in max77843_muic_chg_handler()
537 extcon_set_cable_state(info->edev, "FAST-CHARGER", attached); in max77843_muic_chg_handler()
540 gnd_type = max77843_muic_get_cable_type(info, in max77843_muic_chg_handler()
545 extcon_set_cable_state(info->edev, "MHL-TA", true); in max77843_muic_chg_handler()
547 extcon_set_cable_state(info->edev, "MHL-TA", false); in max77843_muic_chg_handler()
552 dev_err(info->dev, in max77843_muic_chg_handler()
556 max77843_muic_set_path(info, CONTROL1_SW_OPEN, attached); in max77843_muic_chg_handler()
565 struct max77843_muic_info *info = container_of(work, in max77843_muic_irq_work() local
567 struct max77843 *max77843 = info->max77843; in max77843_muic_irq_work()
570 mutex_lock(&info->mutex); in max77843_muic_irq_work()
573 MAX77843_MUIC_REG_STATUS1, info->status, in max77843_muic_irq_work()
576 dev_err(info->dev, "Cannot read STATUS registers\n"); in max77843_muic_irq_work()
577 mutex_unlock(&info->mutex); in max77843_muic_irq_work()
581 if (info->irq_adc) { in max77843_muic_irq_work()
582 ret = max77843_muic_adc_handler(info); in max77843_muic_irq_work()
584 dev_err(info->dev, "Unknown cable type\n"); in max77843_muic_irq_work()
585 info->irq_adc = false; in max77843_muic_irq_work()
588 if (info->irq_chg) { in max77843_muic_irq_work()
589 ret = max77843_muic_chg_handler(info); in max77843_muic_irq_work()
591 dev_err(info->dev, "Unknown charger type\n"); in max77843_muic_irq_work()
592 info->irq_chg = false; in max77843_muic_irq_work()
595 mutex_unlock(&info->mutex); in max77843_muic_irq_work()
600 struct max77843_muic_info *info = data; in max77843_muic_irq_handler() local
611 info->irq_adc = true; in max77843_muic_irq_handler()
618 info->irq_chg = true; in max77843_muic_irq_handler()
630 dev_err(info->dev, "Cannot recognize IRQ(%d)\n", irq_type); in max77843_muic_irq_handler()
634 schedule_work(&info->irq_work); in max77843_muic_irq_handler()
641 struct max77843_muic_info *info = container_of(to_delayed_work(work), in max77843_muic_detect_cable_wq() local
643 struct max77843 *max77843 = info->max77843; in max77843_muic_detect_cable_wq()
647 mutex_lock(&info->mutex); in max77843_muic_detect_cable_wq()
650 MAX77843_MUIC_REG_STATUS1, info->status, in max77843_muic_detect_cable_wq()
653 dev_err(info->dev, "Cannot read STATUS registers\n"); in max77843_muic_detect_cable_wq()
657 adc = max77843_muic_get_cable_type(info, in max77843_muic_detect_cable_wq()
660 ret = max77843_muic_adc_handler(info); in max77843_muic_detect_cable_wq()
662 dev_err(info->dev, "Cannot detect accessory\n"); in max77843_muic_detect_cable_wq()
667 chg_type = max77843_muic_get_cable_type(info, in max77843_muic_detect_cable_wq()
670 ret = max77843_muic_chg_handler(info); in max77843_muic_detect_cable_wq()
672 dev_err(info->dev, "Cannot detect charger accessory\n"); in max77843_muic_detect_cable_wq()
678 mutex_unlock(&info->mutex); in max77843_muic_detect_cable_wq()
681 static int max77843_muic_set_debounce_time(struct max77843_muic_info *info, in max77843_muic_set_debounce_time() argument
684 struct max77843 *max77843 = info->max77843; in max77843_muic_set_debounce_time()
697 dev_err(info->dev, "Cannot write MUIC regmap\n"); in max77843_muic_set_debounce_time()
702 dev_err(info->dev, "Invalid ADC debounce time\n"); in max77843_muic_set_debounce_time()
749 struct max77843_muic_info *info; in max77843_muic_probe() local
753 info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL); in max77843_muic_probe()
754 if (!info) in max77843_muic_probe()
757 info->dev = &pdev->dev; in max77843_muic_probe()
758 info->max77843 = max77843; in max77843_muic_probe()
760 platform_set_drvdata(pdev, info); in max77843_muic_probe()
761 mutex_init(&info->mutex); in max77843_muic_probe()
778 info->edev = devm_extcon_dev_allocate(&pdev->dev, in max77843_muic_probe()
780 if (IS_ERR(info->edev)) { in max77843_muic_probe()
786 ret = devm_extcon_dev_register(&pdev->dev, info->edev); in max77843_muic_probe()
793 max77843_muic_set_debounce_time(info, MAX77843_DEBOUNCE_TIME_25MS); in max77843_muic_probe()
796 max77843_muic_set_path(info, CONTROL1_SW_UART, true); in max77843_muic_probe()
804 dev_info(info->dev, "MUIC device ID : 0x%x\n", id); in max77843_muic_probe()
807 INIT_WORK(&info->irq_work, max77843_muic_irq_work); in max77843_muic_probe()
823 muic_irq->name, info); in max77843_muic_probe()
833 INIT_DELAYED_WORK(&info->wq_detcable, max77843_muic_detect_cable_wq); in max77843_muic_probe()
835 &info->wq_detcable, msecs_to_jiffies(DELAY_MS_DEFAULT)); in max77843_muic_probe()
848 struct max77843_muic_info *info = platform_get_drvdata(pdev); in max77843_muic_remove() local
849 struct max77843 *max77843 = info->max77843; in max77843_muic_remove()
851 cancel_work_sync(&info->irq_work); in max77843_muic_remove()