Lines Matching refs:info
215 static int max77693_muic_set_debounce_time(struct max77693_muic_info *info, in max77693_muic_set_debounce_time() argument
230 ret = regmap_write(info->max77693->regmap_muic, in max77693_muic_set_debounce_time()
234 dev_err(info->dev, "failed to set ADC debounce time\n"); in max77693_muic_set_debounce_time()
239 dev_err(info->dev, "invalid ADC debounce time\n"); in max77693_muic_set_debounce_time()
256 static int max77693_muic_set_path(struct max77693_muic_info *info, in max77693_muic_set_path() argument
267 ret = regmap_update_bits(info->max77693->regmap_muic, in max77693_muic_set_path()
270 dev_err(info->dev, "failed to update MUIC register\n"); in max77693_muic_set_path()
279 ret = regmap_update_bits(info->max77693->regmap_muic, in max77693_muic_set_path()
284 dev_err(info->dev, "failed to update MUIC register\n"); in max77693_muic_set_path()
288 dev_info(info->dev, in max77693_muic_set_path()
308 static int max77693_muic_get_cable_type(struct max77693_muic_info *info, in max77693_muic_get_cable_type() argument
324 adc = info->status[0] & MAX77693_STATUS1_ADC_MASK; in max77693_muic_get_cable_type()
335 cable_type = info->prev_cable_type; in max77693_muic_get_cable_type()
336 info->prev_cable_type = MAX77693_MUIC_ADC_OPEN; in max77693_muic_get_cable_type()
340 cable_type = info->prev_cable_type = adc; in max77693_muic_get_cable_type()
348 adc = info->status[0] & MAX77693_STATUS1_ADC_MASK; in max77693_muic_get_cable_type()
359 cable_type = info->prev_cable_type_gnd; in max77693_muic_get_cable_type()
360 info->prev_cable_type_gnd = MAX77693_MUIC_ADC_OPEN; in max77693_muic_get_cable_type()
364 adclow = info->status[0] & MAX77693_STATUS1_ADCLOW_MASK; in max77693_muic_get_cable_type()
366 adc1k = info->status[0] & MAX77693_STATUS1_ADC1K_MASK; in max77693_muic_get_cable_type()
369 vbvolt = info->status[1] & MAX77693_STATUS2_VBVOLT_MASK; in max77693_muic_get_cable_type()
385 info->prev_cable_type = adc; in max77693_muic_get_cable_type()
386 info->prev_cable_type_gnd = cable_type; in max77693_muic_get_cable_type()
395 chg_type = info->status[1] & MAX77693_STATUS2_CHGTYP_MASK; in max77693_muic_get_cable_type()
401 cable_type = info->prev_chg_type; in max77693_muic_get_cable_type()
402 info->prev_chg_type = MAX77693_CHARGER_TYPE_NONE; in max77693_muic_get_cable_type()
411 cable_type = info->prev_chg_type = chg_type; in max77693_muic_get_cable_type()
420 adc = info->status[0] & MAX77693_STATUS1_ADC_MASK; in max77693_muic_get_cable_type()
422 chg_type = info->status[1] & MAX77693_STATUS2_CHGTYP_MASK; in max77693_muic_get_cable_type()
435 vbvolt = info->status[1] & MAX77693_STATUS2_VBVOLT_MASK; in max77693_muic_get_cable_type()
441 dev_err(info->dev, "Unknown cable group (%d)\n", group); in max77693_muic_get_cable_type()
449 static int max77693_muic_dock_handler(struct max77693_muic_info *info, in max77693_muic_dock_handler() argument
457 dev_info(info->dev, in max77693_muic_dock_handler()
469 vbvolt = max77693_muic_get_cable_type(info, in max77693_muic_dock_handler()
472 dev_warn(info->dev, in max77693_muic_dock_handler()
496 ret = max77693_muic_set_path(info, info->path_usb, attached); in max77693_muic_dock_handler()
500 extcon_set_state_sync(info->edev, EXTCON_DOCK, attached); in max77693_muic_dock_handler()
501 extcon_set_state_sync(info->edev, EXTCON_DISP_MHL, attached); in max77693_muic_dock_handler()
509 extcon_set_state_sync(info->edev, EXTCON_USB, false); in max77693_muic_dock_handler()
510 extcon_set_state_sync(info->edev, EXTCON_CHG_USB_SDP, in max77693_muic_dock_handler()
515 dev_err(info->dev, "failed to detect %s dock device\n", in max77693_muic_dock_handler()
521 ret = max77693_muic_set_path(info, MAX77693_CONTROL1_SW_AUDIO, in max77693_muic_dock_handler()
525 extcon_set_state_sync(info->edev, dock_id, attached); in max77693_muic_dock_handler()
531 static int max77693_muic_dock_button_handler(struct max77693_muic_info *info, in max77693_muic_dock_button_handler() argument
534 struct input_dev *dock = info->dock; in max77693_muic_dock_button_handler()
562 dev_err(info->dev, in max77693_muic_dock_button_handler()
574 static int max77693_muic_adc_ground_handler(struct max77693_muic_info *info) in max77693_muic_adc_ground_handler() argument
580 cable_type_gnd = max77693_muic_get_cable_type(info, in max77693_muic_adc_ground_handler()
587 ret = max77693_muic_set_path(info, MAX77693_CONTROL1_SW_USB, in max77693_muic_adc_ground_handler()
591 extcon_set_state_sync(info->edev, EXTCON_USB_HOST, attached); in max77693_muic_adc_ground_handler()
595 ret = max77693_muic_set_path(info, MAX77693_CONTROL1_SW_AUDIO, in max77693_muic_adc_ground_handler()
599 extcon_set_state_sync(info->edev, EXTCON_USB, attached); in max77693_muic_adc_ground_handler()
600 extcon_set_state_sync(info->edev, EXTCON_CHG_USB_SDP, in max77693_muic_adc_ground_handler()
606 extcon_set_state_sync(info->edev, EXTCON_DISP_MHL, attached); in max77693_muic_adc_ground_handler()
609 dev_err(info->dev, "failed to detect %s cable of gnd type\n", in max77693_muic_adc_ground_handler()
617 static int max77693_muic_jig_handler(struct max77693_muic_info *info, in max77693_muic_jig_handler() argument
623 dev_info(info->dev, in max77693_muic_jig_handler()
639 dev_err(info->dev, "failed to detect %s jig cable\n", in max77693_muic_jig_handler()
644 ret = max77693_muic_set_path(info, path, attached); in max77693_muic_jig_handler()
648 extcon_set_state_sync(info->edev, EXTCON_JIG, attached); in max77693_muic_jig_handler()
653 static int max77693_muic_adc_handler(struct max77693_muic_info *info) in max77693_muic_adc_handler() argument
661 cable_type = max77693_muic_get_cable_type(info, in max77693_muic_adc_handler()
664 dev_info(info->dev, in max77693_muic_adc_handler()
667 info->prev_cable_type); in max77693_muic_adc_handler()
672 max77693_muic_adc_ground_handler(info); in max77693_muic_adc_handler()
679 ret = max77693_muic_jig_handler(info, cable_type, attached); in max77693_muic_adc_handler()
695 ret = max77693_muic_dock_handler(info, cable_type, attached); in max77693_muic_adc_handler()
715 button_type = info->prev_button_type = cable_type; in max77693_muic_adc_handler()
717 button_type = info->prev_button_type; in max77693_muic_adc_handler()
719 ret = max77693_muic_dock_button_handler(info, button_type, in max77693_muic_adc_handler()
747 dev_info(info->dev, in max77693_muic_adc_handler()
752 dev_err(info->dev, in max77693_muic_adc_handler()
761 static int max77693_muic_chg_handler(struct max77693_muic_info *info) in max77693_muic_chg_handler() argument
770 chg_type = max77693_muic_get_cable_type(info, in max77693_muic_chg_handler()
773 dev_info(info->dev, in max77693_muic_chg_handler()
776 chg_type, info->prev_chg_type); in max77693_muic_chg_handler()
783 cable_type_gnd = max77693_muic_get_cable_type(info, in max77693_muic_chg_handler()
802 extcon_set_state_sync(info->edev, EXTCON_CHG_USB_DCP, in max77693_muic_chg_handler()
804 extcon_set_state_sync(info->edev, EXTCON_DISP_MHL, in max77693_muic_chg_handler()
810 cable_type = max77693_muic_get_cable_type(info, in max77693_muic_chg_handler()
828 extcon_set_state_sync(info->edev, EXTCON_USB, in max77693_muic_chg_handler()
830 extcon_set_state_sync(info->edev, EXTCON_CHG_USB_SDP, in max77693_muic_chg_handler()
834 extcon_set_state_sync(info->edev, EXTCON_DOCK, in max77693_muic_chg_handler()
858 ret = max77693_muic_set_path(info, info->path_usb, in max77693_muic_chg_handler()
863 extcon_set_state_sync(info->edev, EXTCON_DOCK, in max77693_muic_chg_handler()
865 extcon_set_state_sync(info->edev, EXTCON_DISP_MHL, in max77693_muic_chg_handler()
894 ret = max77693_muic_set_path(info, info->path_usb, in max77693_muic_chg_handler()
899 extcon_set_state_sync(info->edev, EXTCON_USB, in max77693_muic_chg_handler()
901 extcon_set_state_sync(info->edev, EXTCON_CHG_USB_SDP, in max77693_muic_chg_handler()
906 extcon_set_state_sync(info->edev, EXTCON_CHG_USB_DCP, in max77693_muic_chg_handler()
912 extcon_set_state_sync(info->edev, EXTCON_CHG_USB_CDP, in max77693_muic_chg_handler()
916 extcon_set_state_sync(info->edev, EXTCON_CHG_USB_SLOW, in max77693_muic_chg_handler()
920 extcon_set_state_sync(info->edev, EXTCON_CHG_USB_FAST, in max77693_muic_chg_handler()
926 dev_err(info->dev, in max77693_muic_chg_handler()
937 struct max77693_muic_info *info = container_of(work, in max77693_muic_irq_work() local
942 if (!info->edev) in max77693_muic_irq_work()
945 mutex_lock(&info->mutex); in max77693_muic_irq_work()
948 if (info->irq == muic_irqs[i].virq) in max77693_muic_irq_work()
951 ret = regmap_bulk_read(info->max77693->regmap_muic, in max77693_muic_irq_work()
952 MAX77693_MUIC_REG_STATUS1, info->status, 2); in max77693_muic_irq_work()
954 dev_err(info->dev, "failed to read MUIC register\n"); in max77693_muic_irq_work()
955 mutex_unlock(&info->mutex); in max77693_muic_irq_work()
968 ret = max77693_muic_adc_handler(info); in max77693_muic_irq_work()
977 ret = max77693_muic_chg_handler(info); in max77693_muic_irq_work()
987 dev_err(info->dev, "muic interrupt: irq %d occurred\n", in max77693_muic_irq_work()
989 mutex_unlock(&info->mutex); in max77693_muic_irq_work()
994 dev_err(info->dev, "failed to handle MUIC interrupt\n"); in max77693_muic_irq_work()
996 mutex_unlock(&info->mutex); in max77693_muic_irq_work()
1001 struct max77693_muic_info *info = data; in max77693_muic_irq_handler() local
1003 info->irq = irq; in max77693_muic_irq_handler()
1004 schedule_work(&info->irq_work); in max77693_muic_irq_handler()
1014 static int max77693_muic_detect_accessory(struct max77693_muic_info *info) in max77693_muic_detect_accessory() argument
1021 mutex_lock(&info->mutex); in max77693_muic_detect_accessory()
1024 ret = regmap_bulk_read(info->max77693->regmap_muic, in max77693_muic_detect_accessory()
1025 MAX77693_MUIC_REG_STATUS1, info->status, 2); in max77693_muic_detect_accessory()
1027 dev_err(info->dev, "failed to read MUIC register\n"); in max77693_muic_detect_accessory()
1028 mutex_unlock(&info->mutex); in max77693_muic_detect_accessory()
1032 adc = max77693_muic_get_cable_type(info, MAX77693_CABLE_GROUP_ADC, in max77693_muic_detect_accessory()
1035 ret = max77693_muic_adc_handler(info); in max77693_muic_detect_accessory()
1037 dev_err(info->dev, "Cannot detect accessory\n"); in max77693_muic_detect_accessory()
1038 mutex_unlock(&info->mutex); in max77693_muic_detect_accessory()
1043 chg_type = max77693_muic_get_cable_type(info, MAX77693_CABLE_GROUP_CHG, in max77693_muic_detect_accessory()
1046 ret = max77693_muic_chg_handler(info); in max77693_muic_detect_accessory()
1048 dev_err(info->dev, "Cannot detect charger accessory\n"); in max77693_muic_detect_accessory()
1049 mutex_unlock(&info->mutex); in max77693_muic_detect_accessory()
1054 mutex_unlock(&info->mutex); in max77693_muic_detect_accessory()
1061 struct max77693_muic_info *info = container_of(to_delayed_work(work), in max77693_muic_detect_cable_wq() local
1064 max77693_muic_detect_accessory(info); in max77693_muic_detect_cable_wq()
1071 struct max77693_muic_info *info; in max77693_muic_probe() local
1081 info = devm_kzalloc(&pdev->dev, sizeof(struct max77693_muic_info), in max77693_muic_probe()
1083 if (!info) in max77693_muic_probe()
1086 info->dev = &pdev->dev; in max77693_muic_probe()
1087 info->max77693 = max77693; in max77693_muic_probe()
1088 if (info->max77693->regmap_muic) { in max77693_muic_probe()
1091 info->max77693->regmap_muic = devm_regmap_init_i2c( in max77693_muic_probe()
1092 info->max77693->i2c_muic, in max77693_muic_probe()
1094 if (IS_ERR(info->max77693->regmap_muic)) { in max77693_muic_probe()
1095 ret = PTR_ERR(info->max77693->regmap_muic); in max77693_muic_probe()
1103 info->dock = devm_input_allocate_device(&pdev->dev); in max77693_muic_probe()
1104 if (!info->dock) { in max77693_muic_probe()
1108 info->dock->name = "max77693-muic/dock"; in max77693_muic_probe()
1109 info->dock->phys = "max77693-muic/extcon"; in max77693_muic_probe()
1110 info->dock->dev.parent = &pdev->dev; in max77693_muic_probe()
1112 __set_bit(EV_REP, info->dock->evbit); in max77693_muic_probe()
1114 input_set_capability(info->dock, EV_KEY, KEY_VOLUMEUP); in max77693_muic_probe()
1115 input_set_capability(info->dock, EV_KEY, KEY_VOLUMEDOWN); in max77693_muic_probe()
1116 input_set_capability(info->dock, EV_KEY, KEY_PLAYPAUSE); in max77693_muic_probe()
1117 input_set_capability(info->dock, EV_KEY, KEY_PREVIOUSSONG); in max77693_muic_probe()
1118 input_set_capability(info->dock, EV_KEY, KEY_NEXTSONG); in max77693_muic_probe()
1120 ret = input_register_device(info->dock); in max77693_muic_probe()
1127 platform_set_drvdata(pdev, info); in max77693_muic_probe()
1128 mutex_init(&info->mutex); in max77693_muic_probe()
1130 INIT_WORK(&info->irq_work, max77693_muic_irq_work); in max77693_muic_probe()
1146 muic_irq->name, info); in max77693_muic_probe()
1156 info->edev = devm_extcon_dev_allocate(&pdev->dev, in max77693_muic_probe()
1158 if (IS_ERR(info->edev)) { in max77693_muic_probe()
1160 return PTR_ERR(info->edev); in max77693_muic_probe()
1163 ret = devm_extcon_dev_register(&pdev->dev, info->edev); in max77693_muic_probe()
1179 regmap_write(info->max77693->regmap_muic, in max77693_muic_probe()
1193 info->path_uart = muic_pdata->path_uart; in max77693_muic_probe()
1195 info->path_uart = MAX77693_CONTROL1_SW_UART; in max77693_muic_probe()
1198 info->path_usb = muic_pdata->path_usb; in max77693_muic_probe()
1200 info->path_usb = MAX77693_CONTROL1_SW_USB; in max77693_muic_probe()
1212 info->path_usb = MAX77693_CONTROL1_SW_USB; in max77693_muic_probe()
1213 info->path_uart = MAX77693_CONTROL1_SW_UART; in max77693_muic_probe()
1218 ret = regmap_bulk_read(info->max77693->regmap_muic, in max77693_muic_probe()
1219 MAX77693_MUIC_REG_STATUS1, info->status, 2); in max77693_muic_probe()
1221 dev_err(info->dev, "failed to read MUIC register\n"); in max77693_muic_probe()
1224 cable_type = max77693_muic_get_cable_type(info, in max77693_muic_probe()
1228 max77693_muic_set_path(info, info->path_uart, true); in max77693_muic_probe()
1231 ret = regmap_read(info->max77693->regmap_muic, in max77693_muic_probe()
1237 dev_info(info->dev, "device ID : 0x%x\n", id); in max77693_muic_probe()
1240 max77693_muic_set_debounce_time(info, ADC_DEBOUNCE_TIME_25MS); in max77693_muic_probe()
1250 INIT_DELAYED_WORK(&info->wq_detcable, max77693_muic_detect_cable_wq); in max77693_muic_probe()
1251 queue_delayed_work(system_power_efficient_wq, &info->wq_detcable, in max77693_muic_probe()
1259 struct max77693_muic_info *info = platform_get_drvdata(pdev); in max77693_muic_remove() local
1261 cancel_work_sync(&info->irq_work); in max77693_muic_remove()
1262 input_unregister_device(info->dock); in max77693_muic_remove()