Lines Matching refs:info
248 static int max77693_muic_set_debounce_time(struct max77693_muic_info *info, in max77693_muic_set_debounce_time() argument
263 ret = regmap_write(info->max77693->regmap_muic, in max77693_muic_set_debounce_time()
267 dev_err(info->dev, "failed to set ADC debounce time\n"); in max77693_muic_set_debounce_time()
272 dev_err(info->dev, "invalid ADC debounce time\n"); in max77693_muic_set_debounce_time()
289 static int max77693_muic_set_path(struct max77693_muic_info *info, in max77693_muic_set_path() argument
300 ret = regmap_update_bits(info->max77693->regmap_muic, in max77693_muic_set_path()
303 dev_err(info->dev, "failed to update MUIC register\n"); in max77693_muic_set_path()
312 ret = regmap_update_bits(info->max77693->regmap_muic, in max77693_muic_set_path()
316 dev_err(info->dev, "failed to update MUIC register\n"); in max77693_muic_set_path()
320 dev_info(info->dev, in max77693_muic_set_path()
340 static int max77693_muic_get_cable_type(struct max77693_muic_info *info, in max77693_muic_get_cable_type() argument
356 adc = info->status[0] & STATUS1_ADC_MASK; in max77693_muic_get_cable_type()
367 cable_type = info->prev_cable_type; in max77693_muic_get_cable_type()
368 info->prev_cable_type = MAX77693_MUIC_ADC_OPEN; in max77693_muic_get_cable_type()
372 cable_type = info->prev_cable_type = adc; in max77693_muic_get_cable_type()
380 adc = info->status[0] & STATUS1_ADC_MASK; in max77693_muic_get_cable_type()
391 cable_type = info->prev_cable_type_gnd; in max77693_muic_get_cable_type()
392 info->prev_cable_type_gnd = MAX77693_MUIC_ADC_OPEN; in max77693_muic_get_cable_type()
396 adclow = info->status[0] & STATUS1_ADCLOW_MASK; in max77693_muic_get_cable_type()
398 adc1k = info->status[0] & STATUS1_ADC1K_MASK; in max77693_muic_get_cable_type()
401 vbvolt = info->status[1] & STATUS2_VBVOLT_MASK; in max77693_muic_get_cable_type()
417 info->prev_cable_type = adc; in max77693_muic_get_cable_type()
418 info->prev_cable_type_gnd = cable_type; in max77693_muic_get_cable_type()
427 chg_type = info->status[1] & STATUS2_CHGTYP_MASK; in max77693_muic_get_cable_type()
433 cable_type = info->prev_chg_type; in max77693_muic_get_cable_type()
434 info->prev_chg_type = MAX77693_CHARGER_TYPE_NONE; in max77693_muic_get_cable_type()
443 cable_type = info->prev_chg_type = chg_type; in max77693_muic_get_cable_type()
452 adc = info->status[0] & STATUS1_ADC_MASK; in max77693_muic_get_cable_type()
454 chg_type = info->status[1] & STATUS2_CHGTYP_MASK; in max77693_muic_get_cable_type()
467 vbvolt = info->status[1] & STATUS2_VBVOLT_MASK; in max77693_muic_get_cable_type()
473 dev_err(info->dev, "Unknown cable group (%d)\n", group); in max77693_muic_get_cable_type()
481 static int max77693_muic_dock_handler(struct max77693_muic_info *info, in max77693_muic_dock_handler() argument
489 dev_info(info->dev, in max77693_muic_dock_handler()
501 vbvolt = max77693_muic_get_cable_type(info, in max77693_muic_dock_handler()
504 dev_warn(info->dev, in max77693_muic_dock_handler()
528 ret = max77693_muic_set_path(info, info->path_usb, attached); in max77693_muic_dock_handler()
532 extcon_set_cable_state(info->edev, "Dock-Smart", attached); in max77693_muic_dock_handler()
533 extcon_set_cable_state(info->edev, "MHL", attached); in max77693_muic_dock_handler()
541 extcon_set_cable_state(info->edev, "USB", false); in max77693_muic_dock_handler()
544 dev_err(info->dev, "failed to detect %s dock device\n", in max77693_muic_dock_handler()
550 ret = max77693_muic_set_path(info, CONTROL1_SW_AUDIO, attached); in max77693_muic_dock_handler()
553 extcon_set_cable_state(info->edev, dock_name, attached); in max77693_muic_dock_handler()
559 static int max77693_muic_dock_button_handler(struct max77693_muic_info *info, in max77693_muic_dock_button_handler() argument
562 struct input_dev *dock = info->dock; in max77693_muic_dock_button_handler()
590 dev_err(info->dev, in max77693_muic_dock_button_handler()
602 static int max77693_muic_adc_ground_handler(struct max77693_muic_info *info) in max77693_muic_adc_ground_handler() argument
608 cable_type_gnd = max77693_muic_get_cable_type(info, in max77693_muic_adc_ground_handler()
615 ret = max77693_muic_set_path(info, CONTROL1_SW_USB, attached); in max77693_muic_adc_ground_handler()
618 extcon_set_cable_state(info->edev, "USB-Host", attached); in max77693_muic_adc_ground_handler()
622 ret = max77693_muic_set_path(info, CONTROL1_SW_AUDIO, attached); in max77693_muic_adc_ground_handler()
625 extcon_set_cable_state(info->edev, in max77693_muic_adc_ground_handler()
631 extcon_set_cable_state(info->edev, "MHL", attached); in max77693_muic_adc_ground_handler()
634 dev_err(info->dev, "failed to detect %s cable of gnd type\n", in max77693_muic_adc_ground_handler()
642 static int max77693_muic_jig_handler(struct max77693_muic_info *info, in max77693_muic_jig_handler() argument
649 dev_info(info->dev, in max77693_muic_jig_handler()
675 dev_err(info->dev, "failed to detect %s jig cable\n", in max77693_muic_jig_handler()
680 ret = max77693_muic_set_path(info, path, attached); in max77693_muic_jig_handler()
684 extcon_set_cable_state(info->edev, cable_name, attached); in max77693_muic_jig_handler()
689 static int max77693_muic_adc_handler(struct max77693_muic_info *info) in max77693_muic_adc_handler() argument
697 cable_type = max77693_muic_get_cable_type(info, in max77693_muic_adc_handler()
700 dev_info(info->dev, in max77693_muic_adc_handler()
703 info->prev_cable_type); in max77693_muic_adc_handler()
708 max77693_muic_adc_ground_handler(info); in max77693_muic_adc_handler()
715 ret = max77693_muic_jig_handler(info, cable_type, attached); in max77693_muic_adc_handler()
731 ret = max77693_muic_dock_handler(info, cable_type, attached); in max77693_muic_adc_handler()
751 button_type = info->prev_button_type = cable_type; in max77693_muic_adc_handler()
753 button_type = info->prev_button_type; in max77693_muic_adc_handler()
755 ret = max77693_muic_dock_button_handler(info, button_type, in max77693_muic_adc_handler()
783 dev_info(info->dev, in max77693_muic_adc_handler()
788 dev_err(info->dev, in max77693_muic_adc_handler()
797 static int max77693_muic_chg_handler(struct max77693_muic_info *info) in max77693_muic_chg_handler() argument
806 chg_type = max77693_muic_get_cable_type(info, in max77693_muic_chg_handler()
809 dev_info(info->dev, in max77693_muic_chg_handler()
812 chg_type, info->prev_chg_type); in max77693_muic_chg_handler()
819 cable_type_gnd = max77693_muic_get_cable_type(info, in max77693_muic_chg_handler()
838 extcon_set_cable_state(info->edev, "MHL-TA", attached); in max77693_muic_chg_handler()
840 extcon_set_cable_state(info->edev, in max77693_muic_chg_handler()
846 cable_type = max77693_muic_get_cable_type(info, in max77693_muic_chg_handler()
864 extcon_set_cable_state(info->edev, "USB", attached); in max77693_muic_chg_handler()
867 extcon_set_cable_state(info->edev, "Dock-Audio", in max77693_muic_chg_handler()
891 ret = max77693_muic_set_path(info, info->path_usb, in max77693_muic_chg_handler()
896 extcon_set_cable_state(info->edev, "Dock-Smart", in max77693_muic_chg_handler()
898 extcon_set_cable_state(info->edev, "MHL", attached); in max77693_muic_chg_handler()
927 ret = max77693_muic_set_path(info, info->path_usb, in max77693_muic_chg_handler()
932 extcon_set_cable_state(info->edev, "USB", attached); in max77693_muic_chg_handler()
936 extcon_set_cable_state(info->edev, "TA", attached); in max77693_muic_chg_handler()
941 extcon_set_cable_state(info->edev, in max77693_muic_chg_handler()
945 extcon_set_cable_state(info->edev, "Slow-charger", attached); in max77693_muic_chg_handler()
948 extcon_set_cable_state(info->edev, "Fast-charger", attached); in max77693_muic_chg_handler()
953 dev_err(info->dev, in max77693_muic_chg_handler()
964 struct max77693_muic_info *info = container_of(work, in max77693_muic_irq_work() local
969 if (!info->edev) in max77693_muic_irq_work()
972 mutex_lock(&info->mutex); in max77693_muic_irq_work()
975 if (info->irq == muic_irqs[i].virq) in max77693_muic_irq_work()
978 ret = regmap_bulk_read(info->max77693->regmap_muic, in max77693_muic_irq_work()
979 MAX77693_MUIC_REG_STATUS1, info->status, 2); in max77693_muic_irq_work()
981 dev_err(info->dev, "failed to read MUIC register\n"); in max77693_muic_irq_work()
982 mutex_unlock(&info->mutex); in max77693_muic_irq_work()
993 ret = max77693_muic_adc_handler(info); in max77693_muic_irq_work()
1002 ret = max77693_muic_chg_handler(info); in max77693_muic_irq_work()
1012 dev_err(info->dev, "muic interrupt: irq %d occurred\n", in max77693_muic_irq_work()
1014 mutex_unlock(&info->mutex); in max77693_muic_irq_work()
1019 dev_err(info->dev, "failed to handle MUIC interrupt\n"); in max77693_muic_irq_work()
1021 mutex_unlock(&info->mutex); in max77693_muic_irq_work()
1026 struct max77693_muic_info *info = data; in max77693_muic_irq_handler() local
1028 info->irq = irq; in max77693_muic_irq_handler()
1029 schedule_work(&info->irq_work); in max77693_muic_irq_handler()
1039 static int max77693_muic_detect_accessory(struct max77693_muic_info *info) in max77693_muic_detect_accessory() argument
1046 mutex_lock(&info->mutex); in max77693_muic_detect_accessory()
1049 ret = regmap_bulk_read(info->max77693->regmap_muic, in max77693_muic_detect_accessory()
1050 MAX77693_MUIC_REG_STATUS1, info->status, 2); in max77693_muic_detect_accessory()
1052 dev_err(info->dev, "failed to read MUIC register\n"); in max77693_muic_detect_accessory()
1053 mutex_unlock(&info->mutex); in max77693_muic_detect_accessory()
1057 adc = max77693_muic_get_cable_type(info, MAX77693_CABLE_GROUP_ADC, in max77693_muic_detect_accessory()
1060 ret = max77693_muic_adc_handler(info); in max77693_muic_detect_accessory()
1062 dev_err(info->dev, "Cannot detect accessory\n"); in max77693_muic_detect_accessory()
1063 mutex_unlock(&info->mutex); in max77693_muic_detect_accessory()
1068 chg_type = max77693_muic_get_cable_type(info, MAX77693_CABLE_GROUP_CHG, in max77693_muic_detect_accessory()
1071 ret = max77693_muic_chg_handler(info); in max77693_muic_detect_accessory()
1073 dev_err(info->dev, "Cannot detect charger accessory\n"); in max77693_muic_detect_accessory()
1074 mutex_unlock(&info->mutex); in max77693_muic_detect_accessory()
1079 mutex_unlock(&info->mutex); in max77693_muic_detect_accessory()
1086 struct max77693_muic_info *info = container_of(to_delayed_work(work), in max77693_muic_detect_cable_wq() local
1089 max77693_muic_detect_accessory(info); in max77693_muic_detect_cable_wq()
1096 struct max77693_muic_info *info; in max77693_muic_probe() local
1104 info = devm_kzalloc(&pdev->dev, sizeof(struct max77693_muic_info), in max77693_muic_probe()
1106 if (!info) in max77693_muic_probe()
1109 info->dev = &pdev->dev; in max77693_muic_probe()
1110 info->max77693 = max77693; in max77693_muic_probe()
1111 if (info->max77693->regmap_muic) { in max77693_muic_probe()
1114 info->max77693->regmap_muic = devm_regmap_init_i2c( in max77693_muic_probe()
1115 info->max77693->muic, in max77693_muic_probe()
1117 if (IS_ERR(info->max77693->regmap_muic)) { in max77693_muic_probe()
1118 ret = PTR_ERR(info->max77693->regmap_muic); in max77693_muic_probe()
1126 info->dock = devm_input_allocate_device(&pdev->dev); in max77693_muic_probe()
1127 if (!info->dock) { in max77693_muic_probe()
1131 info->dock->name = "max77693-muic/dock"; in max77693_muic_probe()
1132 info->dock->phys = "max77693-muic/extcon"; in max77693_muic_probe()
1133 info->dock->dev.parent = &pdev->dev; in max77693_muic_probe()
1135 __set_bit(EV_REP, info->dock->evbit); in max77693_muic_probe()
1137 input_set_capability(info->dock, EV_KEY, KEY_VOLUMEUP); in max77693_muic_probe()
1138 input_set_capability(info->dock, EV_KEY, KEY_VOLUMEDOWN); in max77693_muic_probe()
1139 input_set_capability(info->dock, EV_KEY, KEY_PLAYPAUSE); in max77693_muic_probe()
1140 input_set_capability(info->dock, EV_KEY, KEY_PREVIOUSSONG); in max77693_muic_probe()
1141 input_set_capability(info->dock, EV_KEY, KEY_NEXTSONG); in max77693_muic_probe()
1143 ret = input_register_device(info->dock); in max77693_muic_probe()
1150 platform_set_drvdata(pdev, info); in max77693_muic_probe()
1151 mutex_init(&info->mutex); in max77693_muic_probe()
1153 INIT_WORK(&info->irq_work, max77693_muic_irq_work); in max77693_muic_probe()
1169 muic_irq->name, info); in max77693_muic_probe()
1179 info->edev = devm_extcon_dev_allocate(&pdev->dev, in max77693_muic_probe()
1181 if (IS_ERR(info->edev)) { in max77693_muic_probe()
1185 info->edev->name = DEV_NAME; in max77693_muic_probe()
1187 ret = devm_extcon_dev_register(&pdev->dev, info->edev); in max77693_muic_probe()
1206 regmap_write(info->max77693->regmap_muic, in max77693_muic_probe()
1223 info->max77693->irq_masks_cur[irq_src] in max77693_muic_probe()
1236 info->path_uart = muic_pdata->path_uart; in max77693_muic_probe()
1238 info->path_uart = CONTROL1_SW_UART; in max77693_muic_probe()
1241 info->path_usb = muic_pdata->path_usb; in max77693_muic_probe()
1243 info->path_usb = CONTROL1_SW_USB; in max77693_muic_probe()
1255 info->path_usb = CONTROL1_SW_USB; in max77693_muic_probe()
1256 info->path_uart = CONTROL1_SW_UART; in max77693_muic_probe()
1261 max77693_muic_set_path(info, info->path_uart, true); in max77693_muic_probe()
1264 ret = regmap_read(info->max77693->regmap_muic, in max77693_muic_probe()
1270 dev_info(info->dev, "device ID : 0x%x\n", id); in max77693_muic_probe()
1273 max77693_muic_set_debounce_time(info, ADC_DEBOUNCE_TIME_25MS); in max77693_muic_probe()
1283 INIT_DELAYED_WORK(&info->wq_detcable, max77693_muic_detect_cable_wq); in max77693_muic_probe()
1284 queue_delayed_work(system_power_efficient_wq, &info->wq_detcable, in max77693_muic_probe()
1292 struct max77693_muic_info *info = platform_get_drvdata(pdev); in max77693_muic_remove() local
1294 cancel_work_sync(&info->irq_work); in max77693_muic_remove()
1295 input_unregister_device(info->dock); in max77693_muic_remove()