Lines Matching refs:info
199 static int max77843_muic_set_path(struct max77843_muic_info *info, in max77843_muic_set_path() argument
202 struct max77693_dev *max77843 = info->max77843; in max77843_muic_set_path()
215 dev_err(info->dev, "Cannot switch MUIC port\n"); in max77843_muic_set_path()
229 dev_err(info->dev, "Cannot update lowpower mode\n"); in max77843_muic_set_path()
233 dev_dbg(info->dev, in max77843_muic_set_path()
240 static int max77843_muic_get_cable_type(struct max77843_muic_info *info, in max77843_muic_get_cable_type() argument
245 adc = info->status[MAX77843_MUIC_STATUS1] & in max77843_muic_get_cable_type()
253 cable_type = info->prev_cable_type; in max77843_muic_get_cable_type()
254 info->prev_cable_type = MAX77843_MUIC_ADC_OPEN; in max77843_muic_get_cable_type()
257 cable_type = info->prev_cable_type = adc; in max77843_muic_get_cable_type()
261 chg_type = info->status[MAX77843_MUIC_STATUS2] & in max77843_muic_get_cable_type()
271 cable_type = info->prev_chg_type; in max77843_muic_get_cable_type()
272 info->prev_chg_type = MAX77843_MUIC_CHG_NONE; in max77843_muic_get_cable_type()
279 info->prev_chg_type = MAX77843_MUIC_CHG_GND; in max77843_muic_get_cable_type()
286 cable_type = info->prev_chg_type; in max77843_muic_get_cable_type()
287 info->prev_chg_type = MAX77843_MUIC_CHG_NONE; in max77843_muic_get_cable_type()
290 cable_type = info->prev_chg_type = chg_type; in max77843_muic_get_cable_type()
296 cable_type = info->prev_gnd_type; in max77843_muic_get_cable_type()
297 info->prev_gnd_type = MAX77843_MUIC_ADC_OPEN; in max77843_muic_get_cable_type()
307 gnd_type = (info->status[MAX77843_MUIC_STATUS1] & in max77843_muic_get_cable_type()
311 gnd_type |= (info->status[MAX77843_MUIC_STATUS2] & in max77843_muic_get_cable_type()
317 cable_type = info->prev_gnd_type = gnd_type; in max77843_muic_get_cable_type()
321 dev_err(info->dev, "Unknown cable group (%d)\n", group); in max77843_muic_get_cable_type()
329 static int max77843_muic_adc_gnd_handler(struct max77843_muic_info *info) in max77843_muic_adc_gnd_handler() argument
334 gnd_cable_type = max77843_muic_get_cable_type(info, in max77843_muic_adc_gnd_handler()
336 dev_dbg(info->dev, "external connector is %s (gnd:0x%02x)\n", in max77843_muic_adc_gnd_handler()
342 ret = max77843_muic_set_path(info, in max77843_muic_adc_gnd_handler()
348 extcon_set_cable_state_(info->edev, EXTCON_USB_HOST, attached); in max77843_muic_adc_gnd_handler()
352 ret = max77843_muic_set_path(info, in max77843_muic_adc_gnd_handler()
358 extcon_set_cable_state_(info->edev, EXTCON_DISP_MHL, attached); in max77843_muic_adc_gnd_handler()
361 dev_err(info->dev, "failed to detect %s accessory(gnd:0x%x)\n", in max77843_muic_adc_gnd_handler()
369 static int max77843_muic_jig_handler(struct max77843_muic_info *info, in max77843_muic_jig_handler() argument
375 dev_dbg(info->dev, "external connector is %s (adc:0x%02x)\n", in max77843_muic_jig_handler()
390 ret = max77843_muic_set_path(info, path, attached); in max77843_muic_jig_handler()
394 extcon_set_cable_state_(info->edev, EXTCON_JIG, attached); in max77843_muic_jig_handler()
399 static int max77843_muic_adc_handler(struct max77843_muic_info *info) in max77843_muic_adc_handler() argument
404 cable_type = max77843_muic_get_cable_type(info, in max77843_muic_adc_handler()
407 dev_dbg(info->dev, in max77843_muic_adc_handler()
410 info->prev_cable_type); in max77843_muic_adc_handler()
414 ret = max77843_muic_adc_gnd_handler(info); in max77843_muic_adc_handler()
421 ret = max77843_muic_jig_handler(info, cable_type, attached); in max77843_muic_adc_handler()
453 dev_err(info->dev, in max77843_muic_adc_handler()
458 dev_err(info->dev, in max77843_muic_adc_handler()
467 static int max77843_muic_chg_handler(struct max77843_muic_info *info) in max77843_muic_chg_handler() argument
472 chg_type = max77843_muic_get_cable_type(info, in max77843_muic_chg_handler()
475 dev_dbg(info->dev, in max77843_muic_chg_handler()
478 chg_type, info->prev_chg_type); in max77843_muic_chg_handler()
482 ret = max77843_muic_set_path(info, in max77843_muic_chg_handler()
488 extcon_set_cable_state_(info->edev, EXTCON_USB, attached); in max77843_muic_chg_handler()
491 ret = max77843_muic_set_path(info, in max77843_muic_chg_handler()
497 extcon_set_cable_state_(info->edev, EXTCON_CHG_USB_CDP, in max77843_muic_chg_handler()
501 ret = max77843_muic_set_path(info, in max77843_muic_chg_handler()
507 extcon_set_cable_state_(info->edev, EXTCON_CHG_USB_DCP, in max77843_muic_chg_handler()
511 ret = max77843_muic_set_path(info, in max77843_muic_chg_handler()
517 extcon_set_cable_state_(info->edev, EXTCON_CHG_USB_SLOW, in max77843_muic_chg_handler()
521 ret = max77843_muic_set_path(info, in max77843_muic_chg_handler()
527 extcon_set_cable_state_(info->edev, EXTCON_CHG_USB_FAST, in max77843_muic_chg_handler()
531 gnd_type = max77843_muic_get_cable_type(info, in max77843_muic_chg_handler()
536 extcon_set_cable_state_(info->edev, EXTCON_CHG_USB_DCP, in max77843_muic_chg_handler()
539 extcon_set_cable_state_(info->edev, EXTCON_CHG_USB_DCP, in max77843_muic_chg_handler()
545 dev_err(info->dev, in max77843_muic_chg_handler()
549 max77843_muic_set_path(info, MAX77843_MUIC_CONTROL1_SW_OPEN, in max77843_muic_chg_handler()
559 struct max77843_muic_info *info = container_of(work, in max77843_muic_irq_work() local
561 struct max77693_dev *max77843 = info->max77843; in max77843_muic_irq_work()
564 mutex_lock(&info->mutex); in max77843_muic_irq_work()
567 MAX77843_MUIC_REG_STATUS1, info->status, in max77843_muic_irq_work()
570 dev_err(info->dev, "Cannot read STATUS registers\n"); in max77843_muic_irq_work()
571 mutex_unlock(&info->mutex); in max77843_muic_irq_work()
575 if (info->irq_adc) { in max77843_muic_irq_work()
576 ret = max77843_muic_adc_handler(info); in max77843_muic_irq_work()
578 dev_err(info->dev, "Unknown cable type\n"); in max77843_muic_irq_work()
579 info->irq_adc = false; in max77843_muic_irq_work()
582 if (info->irq_chg) { in max77843_muic_irq_work()
583 ret = max77843_muic_chg_handler(info); in max77843_muic_irq_work()
585 dev_err(info->dev, "Unknown charger type\n"); in max77843_muic_irq_work()
586 info->irq_chg = false; in max77843_muic_irq_work()
589 mutex_unlock(&info->mutex); in max77843_muic_irq_work()
594 struct max77843_muic_info *info = data; in max77843_muic_irq_handler() local
605 info->irq_adc = true; in max77843_muic_irq_handler()
612 info->irq_chg = true; in max77843_muic_irq_handler()
624 dev_err(info->dev, "Cannot recognize IRQ(%d)\n", irq_type); in max77843_muic_irq_handler()
628 schedule_work(&info->irq_work); in max77843_muic_irq_handler()
635 struct max77843_muic_info *info = container_of(to_delayed_work(work), in max77843_muic_detect_cable_wq() local
637 struct max77693_dev *max77843 = info->max77843; in max77843_muic_detect_cable_wq()
641 mutex_lock(&info->mutex); in max77843_muic_detect_cable_wq()
644 MAX77843_MUIC_REG_STATUS1, info->status, in max77843_muic_detect_cable_wq()
647 dev_err(info->dev, "Cannot read STATUS registers\n"); in max77843_muic_detect_cable_wq()
651 adc = max77843_muic_get_cable_type(info, in max77843_muic_detect_cable_wq()
654 ret = max77843_muic_adc_handler(info); in max77843_muic_detect_cable_wq()
656 dev_err(info->dev, "Cannot detect accessory\n"); in max77843_muic_detect_cable_wq()
661 chg_type = max77843_muic_get_cable_type(info, in max77843_muic_detect_cable_wq()
664 ret = max77843_muic_chg_handler(info); in max77843_muic_detect_cable_wq()
666 dev_err(info->dev, "Cannot detect charger accessory\n"); in max77843_muic_detect_cable_wq()
672 mutex_unlock(&info->mutex); in max77843_muic_detect_cable_wq()
675 static int max77843_muic_set_debounce_time(struct max77843_muic_info *info, in max77843_muic_set_debounce_time() argument
678 struct max77693_dev *max77843 = info->max77843; in max77843_muic_set_debounce_time()
691 dev_err(info->dev, "Cannot write MUIC regmap\n"); in max77843_muic_set_debounce_time()
696 dev_err(info->dev, "Invalid ADC debounce time\n"); in max77843_muic_set_debounce_time()
743 struct max77843_muic_info *info; in max77843_muic_probe() local
747 info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL); in max77843_muic_probe()
748 if (!info) in max77843_muic_probe()
751 info->dev = &pdev->dev; in max77843_muic_probe()
752 info->max77843 = max77843; in max77843_muic_probe()
754 platform_set_drvdata(pdev, info); in max77843_muic_probe()
755 mutex_init(&info->mutex); in max77843_muic_probe()
772 info->edev = devm_extcon_dev_allocate(&pdev->dev, in max77843_muic_probe()
774 if (IS_ERR(info->edev)) { in max77843_muic_probe()
780 ret = devm_extcon_dev_register(&pdev->dev, info->edev); in max77843_muic_probe()
787 max77843_muic_set_debounce_time(info, MAX77843_DEBOUNCE_TIME_25MS); in max77843_muic_probe()
790 max77843_muic_set_path(info, MAX77843_MUIC_CONTROL1_SW_UART, true); in max77843_muic_probe()
798 dev_info(info->dev, "MUIC device ID : 0x%x\n", id); in max77843_muic_probe()
801 INIT_WORK(&info->irq_work, max77843_muic_irq_work); in max77843_muic_probe()
805 MAX77843_MUIC_REG_INT1, info->status, in max77843_muic_probe()
826 muic_irq->name, info); in max77843_muic_probe()
836 INIT_DELAYED_WORK(&info->wq_detcable, max77843_muic_detect_cable_wq); in max77843_muic_probe()
838 &info->wq_detcable, msecs_to_jiffies(DELAY_MS_DEFAULT)); in max77843_muic_probe()
851 struct max77843_muic_info *info = platform_get_drvdata(pdev); in max77843_muic_remove() local
852 struct max77693_dev *max77843 = info->max77843; in max77843_muic_remove()
854 cancel_work_sync(&info->irq_work); in max77843_muic_remove()