Lines Matching refs:mci

164 static int mt6360_get_chrdet_ext_stat(struct mt6360_chg_info *mci,
170 ret = regmap_read(mci->regmap, MT6360_PMU_FOD_STAT, &regval);
177 static int mt6360_charger_get_online(struct mt6360_chg_info *mci,
183 ret = mt6360_get_chrdet_ext_stat(mci, &pwr_rdy);
190 static int mt6360_charger_get_status(struct mt6360_chg_info *mci,
197 ret = mt6360_get_chrdet_ext_stat(mci, &pwr_rdy);
205 ret = regmap_read(mci->regmap, MT6360_PMU_CHG_STAT, &regval);
229 static int mt6360_charger_get_charge_type(struct mt6360_chg_info *mci,
236 ret = regmap_read(mci->regmap, MT6360_PMU_CHG_STAT, &regval);
260 static int mt6360_charger_get_ichg(struct mt6360_chg_info *mci,
266 ret = regmap_read(mci->regmap, MT6360_PMU_CHG_CTRL7, &sel);
276 static int mt6360_charger_get_max_ichg(struct mt6360_chg_info *mci,
283 static int mt6360_charger_get_cv(struct mt6360_chg_info *mci,
289 ret = regmap_read(mci->regmap, MT6360_PMU_CHG_CTRL4, &sel);
299 static int mt6360_charger_get_max_cv(struct mt6360_chg_info *mci,
306 static int mt6360_charger_get_aicr(struct mt6360_chg_info *mci,
312 ret = regmap_read(mci->regmap, MT6360_PMU_CHG_CTRL3, &sel);
322 static int mt6360_charger_get_mivr(struct mt6360_chg_info *mci,
328 ret = regmap_read(mci->regmap, MT6360_PMU_CHG_CTRL6, &sel);
338 static int mt6360_charger_get_iprechg(struct mt6360_chg_info *mci,
344 ret = regmap_read(mci->regmap, MT6360_PMU_CHG_CTRL8, &sel);
354 static int mt6360_charger_get_ieoc(struct mt6360_chg_info *mci,
360 ret = regmap_read(mci->regmap, MT6360_PMU_CHG_CTRL9, &sel);
370 static int mt6360_charger_set_online(struct mt6360_chg_info *mci,
375 return regmap_update_bits(mci->regmap,
381 static int mt6360_charger_set_ichg(struct mt6360_chg_info *mci,
387 return regmap_update_bits(mci->regmap,
393 static int mt6360_charger_set_cv(struct mt6360_chg_info *mci,
399 return regmap_update_bits(mci->regmap,
405 static int mt6360_charger_set_aicr(struct mt6360_chg_info *mci,
411 return regmap_update_bits(mci->regmap,
417 static int mt6360_charger_set_mivr(struct mt6360_chg_info *mci,
423 return regmap_update_bits(mci->regmap,
429 static int mt6360_charger_set_iprechg(struct mt6360_chg_info *mci,
435 return regmap_update_bits(mci->regmap,
441 static int mt6360_charger_set_ieoc(struct mt6360_chg_info *mci,
447 return regmap_update_bits(mci->regmap,
457 struct mt6360_chg_info *mci = power_supply_get_drvdata(psy);
462 ret = mt6360_charger_get_online(mci, val);
465 ret = mt6360_charger_get_status(mci, val);
468 ret = mt6360_charger_get_charge_type(mci, val);
471 ret = mt6360_charger_get_ichg(mci, val);
474 ret = mt6360_charger_get_max_ichg(mci, val);
477 ret = mt6360_charger_get_cv(mci, val);
480 ret = mt6360_charger_get_max_cv(mci, val);
483 ret = mt6360_charger_get_aicr(mci, val);
486 ret = mt6360_charger_get_mivr(mci, val);
489 ret = mt6360_charger_get_iprechg(mci, val);
492 ret = mt6360_charger_get_ieoc(mci, val);
495 val->intval = mci->psy_usb_type;
507 struct mt6360_chg_info *mci = power_supply_get_drvdata(psy);
512 ret = mt6360_charger_set_online(mci, val);
515 ret = mt6360_charger_set_ichg(mci, val);
518 ret = mt6360_charger_set_cv(mci, val);
521 ret = mt6360_charger_set_aicr(mci, val);
524 ret = mt6360_charger_set_mivr(mci, val);
527 ret = mt6360_charger_set_iprechg(mci, val);
530 ret = mt6360_charger_set_ieoc(mci, val);
607 struct mt6360_chg_info *mci = data;
612 mutex_lock(&mci->chgdet_lock);
613 if (!mci->bc12_en) {
614 dev_warn(mci->dev, "Received attach interrupt, bc12 disabled, ignore irq\n");
617 last_usb_type = mci->psy_usb_type;
619 ret = regmap_read(mci->regmap, MT6360_PMU_USB_STATUS1, &usb_status);
626 dev_dbg(mci->dev, "Received attach interrupt, no vbus\n");
629 dev_dbg(mci->dev, "Received attach interrupt, under going...\n");
632 mci->psy_usb_type = POWER_SUPPLY_USB_TYPE_SDP;
635 mci->psy_usb_type = POWER_SUPPLY_USB_TYPE_SDP;
638 mci->psy_usb_type = POWER_SUPPLY_USB_TYPE_CDP;
641 mci->psy_usb_type = POWER_SUPPLY_USB_TYPE_DCP;
644 dev_dbg(mci->dev, "Received attach interrupt, bc12 detect not enable\n");
647 mci->psy_usb_type = POWER_SUPPLY_USB_TYPE_UNKNOWN;
648 dev_dbg(mci->dev, "Received attach interrupt, reserved address\n");
652 dev_dbg(mci->dev, "Received attach interrupt, chg_type = %d\n", mci->psy_usb_type);
653 if (last_usb_type != mci->psy_usb_type)
654 power_supply_changed(mci->psy);
656 mutex_unlock(&mci->chgdet_lock);
660 static void mt6360_handle_chrdet_ext_evt(struct mt6360_chg_info *mci)
665 mutex_lock(&mci->chgdet_lock);
666 ret = mt6360_get_chrdet_ext_stat(mci, &pwr_rdy);
669 if (mci->pwr_rdy == pwr_rdy) {
670 dev_dbg(mci->dev, "Received vbus interrupt, pwr_rdy is same(%d)\n", pwr_rdy);
673 mci->pwr_rdy = pwr_rdy;
674 dev_dbg(mci->dev, "Received vbus interrupt, pwr_rdy = %d\n", pwr_rdy);
676 mci->psy_usb_type = POWER_SUPPLY_USB_TYPE_UNKNOWN;
677 power_supply_changed(mci->psy);
680 ret = regmap_update_bits(mci->regmap,
686 mci->bc12_en = pwr_rdy;
688 mutex_unlock(&mci->chgdet_lock);
693 struct mt6360_chg_info *mci = (struct mt6360_chg_info *)container_of(
696 mt6360_handle_chrdet_ext_evt(mci);
701 struct mt6360_chg_info *mci = data;
703 mt6360_handle_chrdet_ext_evt(mci);
749 static int mt6360_chg_init_setting(struct mt6360_chg_info *mci)
754 sel = mt6360_vinovp_trans_to_sel(mci->vinovp);
755 ret = regmap_update_bits(mci->regmap, MT6360_PMU_CHG_CTRL19,
758 return dev_err_probe(mci->dev, ret, "%s: Failed to apply vinovp\n", __func__);
759 ret = regmap_update_bits(mci->regmap, MT6360_PMU_DEVICE_TYPE,
762 return dev_err_probe(mci->dev, ret, "%s: Failed to disable bc12\n", __func__);
763 ret = regmap_update_bits(mci->regmap, MT6360_PMU_CHG_CTRL2,
768 return dev_err_probe(mci->dev, ret,
771 ret = regmap_update_bits(mci->regmap, MT6360_PMU_CHG_CTRL3,
774 return dev_err_probe(mci->dev, ret,
776 ret = regmap_update_bits(mci->regmap, MT6360_PMU_CHG_CTRL10,
779 return dev_err_probe(mci->dev, ret,
786 struct mt6360_chg_info *mci;
791 mci = devm_kzalloc(&pdev->dev, sizeof(*mci), GFP_KERNEL);
792 if (!mci)
795 mci->dev = &pdev->dev;
796 mci->vinovp = 6500000;
797 mutex_init(&mci->chgdet_lock);
798 platform_set_drvdata(pdev, mci);
799 ret = devm_work_autocancel(&pdev->dev, &mci->chrdet_work, mt6360_chrdet_work);
803 ret = device_property_read_u32(&pdev->dev, "richtek,vinovp-microvolt", &mci->vinovp);
807 mci->regmap = dev_get_regmap(pdev->dev.parent, NULL);
808 if (!mci->regmap)
811 ret = mt6360_chg_init_setting(mci);
815 memcpy(&mci->psy_desc, &mt6360_charger_desc, sizeof(mci->psy_desc));
816 mci->psy_desc.name = dev_name(&pdev->dev);
817 charger_cfg.drv_data = mci;
819 mci->psy = devm_power_supply_register(&pdev->dev,
820 &mci->psy_desc, &charger_cfg);
821 if (IS_ERR(mci->psy))
822 return dev_err_probe(&pdev->dev, PTR_ERR(mci->psy),
831 config.regmap = mci->regmap;
832 mci->otg_rdev = devm_regulator_register(&pdev->dev, &mt6360_otg_rdesc,
834 if (IS_ERR(mci->otg_rdev))
835 return PTR_ERR(mci->otg_rdev);
837 schedule_work(&mci->chrdet_work);