Lines Matching refs:info

222 static int max77693_muic_set_debounce_time(struct max77693_muic_info *info,  in max77693_muic_set_debounce_time()  argument
237 ret = regmap_write(info->max77693->regmap_muic, in max77693_muic_set_debounce_time()
241 dev_err(info->dev, "failed to set ADC debounce time\n"); in max77693_muic_set_debounce_time()
246 dev_err(info->dev, "invalid ADC debounce time\n"); in max77693_muic_set_debounce_time()
263 static int max77693_muic_set_path(struct max77693_muic_info *info, in max77693_muic_set_path() argument
274 ret = regmap_update_bits(info->max77693->regmap_muic, in max77693_muic_set_path()
277 dev_err(info->dev, "failed to update MUIC register\n"); in max77693_muic_set_path()
286 ret = regmap_update_bits(info->max77693->regmap_muic, in max77693_muic_set_path()
291 dev_err(info->dev, "failed to update MUIC register\n"); in max77693_muic_set_path()
295 dev_info(info->dev, in max77693_muic_set_path()
315 static int max77693_muic_get_cable_type(struct max77693_muic_info *info, in max77693_muic_get_cable_type() argument
331 adc = info->status[0] & MAX77693_STATUS1_ADC_MASK; in max77693_muic_get_cable_type()
342 cable_type = info->prev_cable_type; in max77693_muic_get_cable_type()
343 info->prev_cable_type = MAX77693_MUIC_ADC_OPEN; in max77693_muic_get_cable_type()
347 cable_type = info->prev_cable_type = adc; in max77693_muic_get_cable_type()
355 adc = info->status[0] & MAX77693_STATUS1_ADC_MASK; in max77693_muic_get_cable_type()
366 cable_type = info->prev_cable_type_gnd; in max77693_muic_get_cable_type()
367 info->prev_cable_type_gnd = MAX77693_MUIC_ADC_OPEN; in max77693_muic_get_cable_type()
371 adclow = info->status[0] & MAX77693_STATUS1_ADCLOW_MASK; in max77693_muic_get_cable_type()
373 adc1k = info->status[0] & MAX77693_STATUS1_ADC1K_MASK; in max77693_muic_get_cable_type()
376 vbvolt = info->status[1] & MAX77693_STATUS2_VBVOLT_MASK; in max77693_muic_get_cable_type()
392 info->prev_cable_type = adc; in max77693_muic_get_cable_type()
393 info->prev_cable_type_gnd = cable_type; in max77693_muic_get_cable_type()
402 chg_type = info->status[1] & MAX77693_STATUS2_CHGTYP_MASK; in max77693_muic_get_cable_type()
408 cable_type = info->prev_chg_type; in max77693_muic_get_cable_type()
409 info->prev_chg_type = MAX77693_CHARGER_TYPE_NONE; in max77693_muic_get_cable_type()
418 cable_type = info->prev_chg_type = chg_type; in max77693_muic_get_cable_type()
427 adc = info->status[0] & MAX77693_STATUS1_ADC_MASK; in max77693_muic_get_cable_type()
429 chg_type = info->status[1] & MAX77693_STATUS2_CHGTYP_MASK; in max77693_muic_get_cable_type()
442 vbvolt = info->status[1] & MAX77693_STATUS2_VBVOLT_MASK; in max77693_muic_get_cable_type()
448 dev_err(info->dev, "Unknown cable group (%d)\n", group); in max77693_muic_get_cable_type()
456 static int max77693_muic_dock_handler(struct max77693_muic_info *info, in max77693_muic_dock_handler() argument
464 dev_info(info->dev, in max77693_muic_dock_handler()
476 vbvolt = max77693_muic_get_cable_type(info, in max77693_muic_dock_handler()
479 dev_warn(info->dev, in max77693_muic_dock_handler()
503 ret = max77693_muic_set_path(info, info->path_usb, attached); in max77693_muic_dock_handler()
507 extcon_set_cable_state_(info->edev, EXTCON_DOCK, attached); in max77693_muic_dock_handler()
508 extcon_set_cable_state_(info->edev, EXTCON_DISP_MHL, attached); in max77693_muic_dock_handler()
516 extcon_set_cable_state_(info->edev, EXTCON_USB, false); in max77693_muic_dock_handler()
519 dev_err(info->dev, "failed to detect %s dock device\n", in max77693_muic_dock_handler()
525 ret = max77693_muic_set_path(info, MAX77693_CONTROL1_SW_AUDIO, in max77693_muic_dock_handler()
529 extcon_set_cable_state_(info->edev, dock_id, attached); in max77693_muic_dock_handler()
535 static int max77693_muic_dock_button_handler(struct max77693_muic_info *info, in max77693_muic_dock_button_handler() argument
538 struct input_dev *dock = info->dock; in max77693_muic_dock_button_handler()
566 dev_err(info->dev, in max77693_muic_dock_button_handler()
578 static int max77693_muic_adc_ground_handler(struct max77693_muic_info *info) in max77693_muic_adc_ground_handler() argument
584 cable_type_gnd = max77693_muic_get_cable_type(info, in max77693_muic_adc_ground_handler()
591 ret = max77693_muic_set_path(info, MAX77693_CONTROL1_SW_USB, in max77693_muic_adc_ground_handler()
595 extcon_set_cable_state_(info->edev, EXTCON_USB_HOST, attached); in max77693_muic_adc_ground_handler()
599 ret = max77693_muic_set_path(info, MAX77693_CONTROL1_SW_AUDIO, in max77693_muic_adc_ground_handler()
603 extcon_set_cable_state_(info->edev, EXTCON_USB, attached); in max77693_muic_adc_ground_handler()
608 extcon_set_cable_state_(info->edev, EXTCON_DISP_MHL, attached); in max77693_muic_adc_ground_handler()
611 dev_err(info->dev, "failed to detect %s cable of gnd type\n", in max77693_muic_adc_ground_handler()
619 static int max77693_muic_jig_handler(struct max77693_muic_info *info, in max77693_muic_jig_handler() argument
625 dev_info(info->dev, in max77693_muic_jig_handler()
641 dev_err(info->dev, "failed to detect %s jig cable\n", in max77693_muic_jig_handler()
646 ret = max77693_muic_set_path(info, path, attached); in max77693_muic_jig_handler()
650 extcon_set_cable_state_(info->edev, EXTCON_JIG, attached); in max77693_muic_jig_handler()
655 static int max77693_muic_adc_handler(struct max77693_muic_info *info) in max77693_muic_adc_handler() argument
663 cable_type = max77693_muic_get_cable_type(info, in max77693_muic_adc_handler()
666 dev_info(info->dev, in max77693_muic_adc_handler()
669 info->prev_cable_type); in max77693_muic_adc_handler()
674 max77693_muic_adc_ground_handler(info); in max77693_muic_adc_handler()
681 ret = max77693_muic_jig_handler(info, cable_type, attached); in max77693_muic_adc_handler()
697 ret = max77693_muic_dock_handler(info, cable_type, attached); in max77693_muic_adc_handler()
717 button_type = info->prev_button_type = cable_type; in max77693_muic_adc_handler()
719 button_type = info->prev_button_type; in max77693_muic_adc_handler()
721 ret = max77693_muic_dock_button_handler(info, button_type, in max77693_muic_adc_handler()
749 dev_info(info->dev, in max77693_muic_adc_handler()
754 dev_err(info->dev, in max77693_muic_adc_handler()
763 static int max77693_muic_chg_handler(struct max77693_muic_info *info) in max77693_muic_chg_handler() argument
772 chg_type = max77693_muic_get_cable_type(info, in max77693_muic_chg_handler()
775 dev_info(info->dev, in max77693_muic_chg_handler()
778 chg_type, info->prev_chg_type); in max77693_muic_chg_handler()
785 cable_type_gnd = max77693_muic_get_cable_type(info, in max77693_muic_chg_handler()
804 extcon_set_cable_state_(info->edev, EXTCON_CHG_USB_DCP, in max77693_muic_chg_handler()
807 extcon_set_cable_state_(info->edev, in max77693_muic_chg_handler()
813 cable_type = max77693_muic_get_cable_type(info, in max77693_muic_chg_handler()
831 extcon_set_cable_state_(info->edev, EXTCON_USB, in max77693_muic_chg_handler()
835 extcon_set_cable_state_(info->edev, EXTCON_DOCK, in max77693_muic_chg_handler()
859 ret = max77693_muic_set_path(info, info->path_usb, in max77693_muic_chg_handler()
864 extcon_set_cable_state_(info->edev, EXTCON_DOCK, in max77693_muic_chg_handler()
866 extcon_set_cable_state_(info->edev, EXTCON_DISP_MHL, in max77693_muic_chg_handler()
895 ret = max77693_muic_set_path(info, info->path_usb, in max77693_muic_chg_handler()
900 extcon_set_cable_state_(info->edev, EXTCON_USB, in max77693_muic_chg_handler()
905 extcon_set_cable_state_(info->edev, EXTCON_CHG_USB_DCP, in max77693_muic_chg_handler()
911 extcon_set_cable_state_(info->edev, EXTCON_CHG_USB_CDP, in max77693_muic_chg_handler()
915 extcon_set_cable_state_(info->edev, EXTCON_CHG_USB_SLOW, in max77693_muic_chg_handler()
919 extcon_set_cable_state_(info->edev, EXTCON_CHG_USB_FAST, in max77693_muic_chg_handler()
925 dev_err(info->dev, in max77693_muic_chg_handler()
936 struct max77693_muic_info *info = container_of(work, in max77693_muic_irq_work() local
941 if (!info->edev) in max77693_muic_irq_work()
944 mutex_lock(&info->mutex); in max77693_muic_irq_work()
947 if (info->irq == muic_irqs[i].virq) in max77693_muic_irq_work()
950 ret = regmap_bulk_read(info->max77693->regmap_muic, in max77693_muic_irq_work()
951 MAX77693_MUIC_REG_STATUS1, info->status, 2); in max77693_muic_irq_work()
953 dev_err(info->dev, "failed to read MUIC register\n"); in max77693_muic_irq_work()
954 mutex_unlock(&info->mutex); in max77693_muic_irq_work()
965 ret = max77693_muic_adc_handler(info); in max77693_muic_irq_work()
974 ret = max77693_muic_chg_handler(info); in max77693_muic_irq_work()
984 dev_err(info->dev, "muic interrupt: irq %d occurred\n", in max77693_muic_irq_work()
986 mutex_unlock(&info->mutex); in max77693_muic_irq_work()
991 dev_err(info->dev, "failed to handle MUIC interrupt\n"); in max77693_muic_irq_work()
993 mutex_unlock(&info->mutex); in max77693_muic_irq_work()
998 struct max77693_muic_info *info = data; in max77693_muic_irq_handler() local
1000 info->irq = irq; in max77693_muic_irq_handler()
1001 schedule_work(&info->irq_work); in max77693_muic_irq_handler()
1011 static int max77693_muic_detect_accessory(struct max77693_muic_info *info) in max77693_muic_detect_accessory() argument
1018 mutex_lock(&info->mutex); in max77693_muic_detect_accessory()
1021 ret = regmap_bulk_read(info->max77693->regmap_muic, in max77693_muic_detect_accessory()
1022 MAX77693_MUIC_REG_STATUS1, info->status, 2); in max77693_muic_detect_accessory()
1024 dev_err(info->dev, "failed to read MUIC register\n"); in max77693_muic_detect_accessory()
1025 mutex_unlock(&info->mutex); in max77693_muic_detect_accessory()
1029 adc = max77693_muic_get_cable_type(info, MAX77693_CABLE_GROUP_ADC, in max77693_muic_detect_accessory()
1032 ret = max77693_muic_adc_handler(info); in max77693_muic_detect_accessory()
1034 dev_err(info->dev, "Cannot detect accessory\n"); in max77693_muic_detect_accessory()
1035 mutex_unlock(&info->mutex); in max77693_muic_detect_accessory()
1040 chg_type = max77693_muic_get_cable_type(info, MAX77693_CABLE_GROUP_CHG, in max77693_muic_detect_accessory()
1043 ret = max77693_muic_chg_handler(info); in max77693_muic_detect_accessory()
1045 dev_err(info->dev, "Cannot detect charger accessory\n"); in max77693_muic_detect_accessory()
1046 mutex_unlock(&info->mutex); in max77693_muic_detect_accessory()
1051 mutex_unlock(&info->mutex); in max77693_muic_detect_accessory()
1058 struct max77693_muic_info *info = container_of(to_delayed_work(work), in max77693_muic_detect_cable_wq() local
1061 max77693_muic_detect_accessory(info); in max77693_muic_detect_cable_wq()
1068 struct max77693_muic_info *info; in max77693_muic_probe() local
1076 info = devm_kzalloc(&pdev->dev, sizeof(struct max77693_muic_info), in max77693_muic_probe()
1078 if (!info) in max77693_muic_probe()
1081 info->dev = &pdev->dev; in max77693_muic_probe()
1082 info->max77693 = max77693; in max77693_muic_probe()
1083 if (info->max77693->regmap_muic) { in max77693_muic_probe()
1086 info->max77693->regmap_muic = devm_regmap_init_i2c( in max77693_muic_probe()
1087 info->max77693->i2c_muic, in max77693_muic_probe()
1089 if (IS_ERR(info->max77693->regmap_muic)) { in max77693_muic_probe()
1090 ret = PTR_ERR(info->max77693->regmap_muic); in max77693_muic_probe()
1098 info->dock = devm_input_allocate_device(&pdev->dev); in max77693_muic_probe()
1099 if (!info->dock) { in max77693_muic_probe()
1103 info->dock->name = "max77693-muic/dock"; in max77693_muic_probe()
1104 info->dock->phys = "max77693-muic/extcon"; in max77693_muic_probe()
1105 info->dock->dev.parent = &pdev->dev; in max77693_muic_probe()
1107 __set_bit(EV_REP, info->dock->evbit); in max77693_muic_probe()
1109 input_set_capability(info->dock, EV_KEY, KEY_VOLUMEUP); in max77693_muic_probe()
1110 input_set_capability(info->dock, EV_KEY, KEY_VOLUMEDOWN); in max77693_muic_probe()
1111 input_set_capability(info->dock, EV_KEY, KEY_PLAYPAUSE); in max77693_muic_probe()
1112 input_set_capability(info->dock, EV_KEY, KEY_PREVIOUSSONG); in max77693_muic_probe()
1113 input_set_capability(info->dock, EV_KEY, KEY_NEXTSONG); in max77693_muic_probe()
1115 ret = input_register_device(info->dock); in max77693_muic_probe()
1122 platform_set_drvdata(pdev, info); in max77693_muic_probe()
1123 mutex_init(&info->mutex); in max77693_muic_probe()
1125 INIT_WORK(&info->irq_work, max77693_muic_irq_work); in max77693_muic_probe()
1141 muic_irq->name, info); in max77693_muic_probe()
1151 info->edev = devm_extcon_dev_allocate(&pdev->dev, in max77693_muic_probe()
1153 if (IS_ERR(info->edev)) { in max77693_muic_probe()
1158 ret = devm_extcon_dev_register(&pdev->dev, info->edev); in max77693_muic_probe()
1174 regmap_write(info->max77693->regmap_muic, in max77693_muic_probe()
1188 info->path_uart = muic_pdata->path_uart; in max77693_muic_probe()
1190 info->path_uart = MAX77693_CONTROL1_SW_UART; in max77693_muic_probe()
1193 info->path_usb = muic_pdata->path_usb; in max77693_muic_probe()
1195 info->path_usb = MAX77693_CONTROL1_SW_USB; in max77693_muic_probe()
1207 info->path_usb = MAX77693_CONTROL1_SW_USB; in max77693_muic_probe()
1208 info->path_uart = MAX77693_CONTROL1_SW_UART; in max77693_muic_probe()
1213 max77693_muic_set_path(info, info->path_uart, true); in max77693_muic_probe()
1216 ret = regmap_read(info->max77693->regmap_muic, in max77693_muic_probe()
1222 dev_info(info->dev, "device ID : 0x%x\n", id); in max77693_muic_probe()
1225 max77693_muic_set_debounce_time(info, ADC_DEBOUNCE_TIME_25MS); in max77693_muic_probe()
1235 INIT_DELAYED_WORK(&info->wq_detcable, max77693_muic_detect_cable_wq); in max77693_muic_probe()
1236 queue_delayed_work(system_power_efficient_wq, &info->wq_detcable, in max77693_muic_probe()
1244 struct max77693_muic_info *info = platform_get_drvdata(pdev); in max77693_muic_remove() local
1246 cancel_work_sync(&info->irq_work); in max77693_muic_remove()
1247 input_unregister_device(info->dock); in max77693_muic_remove()