Commit ad89cb5f authored by Linus Walleij's avatar Linus Walleij Committed by Sebastian Reichel
Browse files

power: supply: ab8500: Use local helper



Use a local "dev" helper variable to make the probe()
code easier to read in the ab8500 subdrivers.

Drop out-of-memory messages as these should come from the
slab core.

Cc: Marcus Cooper <codekipper@gmail.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
parent faa2cec6
Loading
Loading
Loading
Loading
+18 −19
Original line number Diff line number Diff line
@@ -999,47 +999,46 @@ static int ab8500_btemp_probe(struct platform_device *pdev)
	struct device_node *np = pdev->dev.of_node;
	struct abx500_bm_data *plat = pdev->dev.platform_data;
	struct power_supply_config psy_cfg = {};
	struct device *dev = &pdev->dev;
	struct ab8500_btemp *di;
	int irq, i, ret = 0;
	u8 val;

	di = devm_kzalloc(&pdev->dev, sizeof(*di), GFP_KERNEL);
	if (!di) {
		dev_err(&pdev->dev, "%s no mem for ab8500_btemp\n", __func__);
	di = devm_kzalloc(dev, sizeof(*di), GFP_KERNEL);
	if (!di)
		return -ENOMEM;
	}

	if (!plat) {
		dev_err(&pdev->dev, "no battery management data supplied\n");
		dev_err(dev, "no battery management data supplied\n");
		return -EINVAL;
	}
	di->bm = plat;

	if (np) {
		ret = ab8500_bm_of_probe(&pdev->dev, np, di->bm);
		ret = ab8500_bm_of_probe(dev, np, di->bm);
		if (ret) {
			dev_err(&pdev->dev, "failed to get battery information\n");
			dev_err(dev, "failed to get battery information\n");
			return ret;
		}
	}

	/* get parent data */
	di->dev = &pdev->dev;
	di->dev = dev;
	di->parent = dev_get_drvdata(pdev->dev.parent);

	/* Get ADC channels */
	di->btemp_ball = devm_iio_channel_get(&pdev->dev, "btemp_ball");
	di->btemp_ball = devm_iio_channel_get(dev, "btemp_ball");
	if (IS_ERR(di->btemp_ball)) {
		if (PTR_ERR(di->btemp_ball) == -ENODEV)
			return -EPROBE_DEFER;
		dev_err(&pdev->dev, "failed to get BTEMP BALL ADC channel\n");
		dev_err(dev, "failed to get BTEMP BALL ADC channel\n");
		return PTR_ERR(di->btemp_ball);
	}
	di->bat_ctrl = devm_iio_channel_get(&pdev->dev, "bat_ctrl");
	di->bat_ctrl = devm_iio_channel_get(dev, "bat_ctrl");
	if (IS_ERR(di->bat_ctrl)) {
		if (PTR_ERR(di->bat_ctrl) == -ENODEV)
			return -EPROBE_DEFER;
		dev_err(&pdev->dev, "failed to get BAT CTRL ADC channel\n");
		dev_err(dev, "failed to get BAT CTRL ADC channel\n");
		return PTR_ERR(di->bat_ctrl);
	}

@@ -1053,7 +1052,7 @@ static int ab8500_btemp_probe(struct platform_device *pdev)
	di->btemp_wq =
		alloc_workqueue("ab8500_btemp_wq", WQ_MEM_RECLAIM, 0);
	if (di->btemp_wq == NULL) {
		dev_err(di->dev, "failed to create work queue\n");
		dev_err(dev, "failed to create work queue\n");
		return -ENOMEM;
	}

@@ -1065,10 +1064,10 @@ static int ab8500_btemp_probe(struct platform_device *pdev)
	di->btemp_ranges.btemp_low_limit = BTEMP_THERMAL_LOW_LIMIT;
	di->btemp_ranges.btemp_med_limit = BTEMP_THERMAL_MED_LIMIT;

	ret = abx500_get_register_interruptible(di->dev, AB8500_CHARGER,
	ret = abx500_get_register_interruptible(dev, AB8500_CHARGER,
		AB8500_BTEMP_HIGH_TH, &val);
	if (ret < 0) {
		dev_err(di->dev, "%s ab8500 read failed\n", __func__);
		dev_err(dev, "%s ab8500 read failed\n", __func__);
		goto free_btemp_wq;
	}
	switch (val) {
@@ -1088,10 +1087,10 @@ static int ab8500_btemp_probe(struct platform_device *pdev)
	}

	/* Register BTEMP power supply class */
	di->btemp_psy = power_supply_register(di->dev, &ab8500_btemp_desc,
	di->btemp_psy = power_supply_register(dev, &ab8500_btemp_desc,
					      &psy_cfg);
	if (IS_ERR(di->btemp_psy)) {
		dev_err(di->dev, "failed to register BTEMP psy\n");
		dev_err(dev, "failed to register BTEMP psy\n");
		ret = PTR_ERR(di->btemp_psy);
		goto free_btemp_wq;
	}
@@ -1109,11 +1108,11 @@ static int ab8500_btemp_probe(struct platform_device *pdev)
			ab8500_btemp_irq[i].name, di);

		if (ret) {
			dev_err(di->dev, "failed to request %s IRQ %d: %d\n"
			dev_err(dev, "failed to request %s IRQ %d: %d\n"
				, ab8500_btemp_irq[i].name, irq, ret);
			goto free_irq;
		}
		dev_dbg(di->dev, "Requested %s IRQ %d: %d\n",
		dev_dbg(dev, "Requested %s IRQ %d: %d\n",
			ab8500_btemp_irq[i].name, irq, ret);
	}

+27 −28
Original line number Diff line number Diff line
@@ -3354,23 +3354,22 @@ static int ab8500_charger_probe(struct platform_device *pdev)
	struct power_supply_config ac_psy_cfg = {}, usb_psy_cfg = {};
	struct ab8500_charger *di;
	int irq, i, charger_status, ret = 0, ch_stat;
	struct device *dev = &pdev->dev;

	di = devm_kzalloc(&pdev->dev, sizeof(*di), GFP_KERNEL);
	if (!di) {
		dev_err(&pdev->dev, "%s no mem for ab8500_charger\n", __func__);
	di = devm_kzalloc(dev, sizeof(*di), GFP_KERNEL);
	if (!di)
		return -ENOMEM;
	}

	if (!plat) {
		dev_err(&pdev->dev, "no battery management data supplied\n");
		dev_err(dev, "no battery management data supplied\n");
		return -EINVAL;
	}
	di->bm = plat;

	if (np) {
		ret = ab8500_bm_of_probe(&pdev->dev, np, di->bm);
		ret = ab8500_bm_of_probe(dev, np, di->bm);
		if (ret) {
			dev_err(&pdev->dev, "failed to get battery information\n");
			dev_err(dev, "failed to get battery information\n");
			return ret;
		}
		di->autopower_cfg = of_property_read_bool(np, "autopower_cfg");
@@ -3378,39 +3377,39 @@ static int ab8500_charger_probe(struct platform_device *pdev)
		di->autopower_cfg = false;

	/* get parent data */
	di->dev = &pdev->dev;
	di->dev = dev;
	di->parent = dev_get_drvdata(pdev->dev.parent);

	/* Get ADC channels */
	di->adc_main_charger_v = devm_iio_channel_get(&pdev->dev,
	di->adc_main_charger_v = devm_iio_channel_get(dev,
						      "main_charger_v");
	if (IS_ERR(di->adc_main_charger_v)) {
		if (PTR_ERR(di->adc_main_charger_v) == -ENODEV)
			return -EPROBE_DEFER;
		dev_err(&pdev->dev, "failed to get ADC main charger voltage\n");
		dev_err(dev, "failed to get ADC main charger voltage\n");
		return PTR_ERR(di->adc_main_charger_v);
	}
	di->adc_main_charger_c = devm_iio_channel_get(&pdev->dev,
	di->adc_main_charger_c = devm_iio_channel_get(dev,
						      "main_charger_c");
	if (IS_ERR(di->adc_main_charger_c)) {
		if (PTR_ERR(di->adc_main_charger_c) == -ENODEV)
			return -EPROBE_DEFER;
		dev_err(&pdev->dev, "failed to get ADC main charger current\n");
		dev_err(dev, "failed to get ADC main charger current\n");
		return PTR_ERR(di->adc_main_charger_c);
	}
	di->adc_vbus_v = devm_iio_channel_get(&pdev->dev, "vbus_v");
	di->adc_vbus_v = devm_iio_channel_get(dev, "vbus_v");
	if (IS_ERR(di->adc_vbus_v)) {
		if (PTR_ERR(di->adc_vbus_v) == -ENODEV)
			return -EPROBE_DEFER;
		dev_err(&pdev->dev, "failed to get ADC USB charger voltage\n");
		dev_err(dev, "failed to get ADC USB charger voltage\n");
		return PTR_ERR(di->adc_vbus_v);
	}
	di->adc_usb_charger_c = devm_iio_channel_get(&pdev->dev,
	di->adc_usb_charger_c = devm_iio_channel_get(dev,
						     "usb_charger_c");
	if (IS_ERR(di->adc_usb_charger_c)) {
		if (PTR_ERR(di->adc_usb_charger_c) == -ENODEV)
			return -EPROBE_DEFER;
		dev_err(&pdev->dev, "failed to get ADC USB charger current\n");
		dev_err(dev, "failed to get ADC USB charger current\n");
		return PTR_ERR(di->adc_usb_charger_c);
	}

@@ -3467,7 +3466,7 @@ static int ab8500_charger_probe(struct platform_device *pdev)
	di->charger_wq = alloc_ordered_workqueue("ab8500_charger_wq",
						 WQ_MEM_RECLAIM);
	if (di->charger_wq == NULL) {
		dev_err(di->dev, "failed to create work queue\n");
		dev_err(dev, "failed to create work queue\n");
		return -ENOMEM;
	}

@@ -3526,10 +3525,10 @@ static int ab8500_charger_probe(struct platform_device *pdev)
	 * is a charger connected to avoid erroneous BTEMP_HIGH/LOW
	 * interrupts during charging
	 */
	di->regu = devm_regulator_get(di->dev, "vddadc");
	di->regu = devm_regulator_get(dev, "vddadc");
	if (IS_ERR(di->regu)) {
		ret = PTR_ERR(di->regu);
		dev_err(di->dev, "failed to get vddadc regulator\n");
		dev_err(dev, "failed to get vddadc regulator\n");
		goto free_charger_wq;
	}

@@ -3537,17 +3536,17 @@ static int ab8500_charger_probe(struct platform_device *pdev)
	/* Initialize OVV, and other registers */
	ret = ab8500_charger_init_hw_registers(di);
	if (ret) {
		dev_err(di->dev, "failed to initialize ABB registers\n");
		dev_err(dev, "failed to initialize ABB registers\n");
		goto free_charger_wq;
	}

	/* Register AC charger class */
	if (di->ac_chg.enabled) {
		di->ac_chg.psy = power_supply_register(di->dev,
		di->ac_chg.psy = power_supply_register(dev,
						       &ab8500_ac_chg_desc,
						       &ac_psy_cfg);
		if (IS_ERR(di->ac_chg.psy)) {
			dev_err(di->dev, "failed to register AC charger\n");
			dev_err(dev, "failed to register AC charger\n");
			ret = PTR_ERR(di->ac_chg.psy);
			goto free_charger_wq;
		}
@@ -3555,11 +3554,11 @@ static int ab8500_charger_probe(struct platform_device *pdev)

	/* Register USB charger class */
	if (di->usb_chg.enabled) {
		di->usb_chg.psy = power_supply_register(di->dev,
		di->usb_chg.psy = power_supply_register(dev,
							&ab8500_usb_chg_desc,
							&usb_psy_cfg);
		if (IS_ERR(di->usb_chg.psy)) {
			dev_err(di->dev, "failed to register USB charger\n");
			dev_err(dev, "failed to register USB charger\n");
			ret = PTR_ERR(di->usb_chg.psy);
			goto free_ac;
		}
@@ -3567,14 +3566,14 @@ static int ab8500_charger_probe(struct platform_device *pdev)

	di->usb_phy = usb_get_phy(USB_PHY_TYPE_USB2);
	if (IS_ERR_OR_NULL(di->usb_phy)) {
		dev_err(di->dev, "failed to get usb transceiver\n");
		dev_err(dev, "failed to get usb transceiver\n");
		ret = -EINVAL;
		goto free_usb;
	}
	di->nb.notifier_call = ab8500_charger_usb_notifier_call;
	ret = usb_register_notifier(di->usb_phy, &di->nb);
	if (ret) {
		dev_err(di->dev, "failed to register usb notifier\n");
		dev_err(dev, "failed to register usb notifier\n");
		goto put_usb_phy;
	}

@@ -3607,11 +3606,11 @@ static int ab8500_charger_probe(struct platform_device *pdev)
			ab8500_charger_irq[i].name, di);

		if (ret != 0) {
			dev_err(di->dev, "failed to request %s IRQ %d: %d\n"
			dev_err(dev, "failed to request %s IRQ %d: %d\n"
				, ab8500_charger_irq[i].name, irq, ret);
			goto free_irq;
		}
		dev_dbg(di->dev, "Requested %s IRQ %d: %d\n",
		dev_dbg(dev, "Requested %s IRQ %d: %d\n",
			ab8500_charger_irq[i].name, irq, ret);
	}

+19 −20
Original line number Diff line number Diff line
@@ -3037,26 +3037,25 @@ static int ab8500_fg_probe(struct platform_device *pdev)
	struct device_node *np = pdev->dev.of_node;
	struct abx500_bm_data *plat = pdev->dev.platform_data;
	struct power_supply_config psy_cfg = {};
	struct device *dev = &pdev->dev;
	struct ab8500_fg *di;
	int i, irq;
	int ret = 0;

	di = devm_kzalloc(&pdev->dev, sizeof(*di), GFP_KERNEL);
	if (!di) {
		dev_err(&pdev->dev, "%s no mem for ab8500_fg\n", __func__);
	di = devm_kzalloc(dev, sizeof(*di), GFP_KERNEL);
	if (!di)
		return -ENOMEM;
	}

	if (!plat) {
		dev_err(&pdev->dev, "no battery management data supplied\n");
		dev_err(dev, "no battery management data supplied\n");
		return -EINVAL;
	}
	di->bm = plat;

	if (np) {
		ret = ab8500_bm_of_probe(&pdev->dev, np, di->bm);
		ret = ab8500_bm_of_probe(dev, np, di->bm);
		if (ret) {
			dev_err(&pdev->dev, "failed to get battery information\n");
			dev_err(dev, "failed to get battery information\n");
			return ret;
		}
	}
@@ -3064,14 +3063,14 @@ static int ab8500_fg_probe(struct platform_device *pdev)
	mutex_init(&di->cc_lock);

	/* get parent data */
	di->dev = &pdev->dev;
	di->dev = dev;
	di->parent = dev_get_drvdata(pdev->dev.parent);

	di->main_bat_v = devm_iio_channel_get(&pdev->dev, "main_bat_v");
	di->main_bat_v = devm_iio_channel_get(dev, "main_bat_v");
	if (IS_ERR(di->main_bat_v)) {
		if (PTR_ERR(di->main_bat_v) == -ENODEV)
			return -EPROBE_DEFER;
		dev_err(&pdev->dev, "failed to get main battery ADC channel\n");
		dev_err(dev, "failed to get main battery ADC channel\n");
		return PTR_ERR(di->main_bat_v);
	}

@@ -3094,7 +3093,7 @@ static int ab8500_fg_probe(struct platform_device *pdev)
	/* Create a work queue for running the FG algorithm */
	di->fg_wq = alloc_ordered_workqueue("ab8500_fg_wq", WQ_MEM_RECLAIM);
	if (di->fg_wq == NULL) {
		dev_err(di->dev, "failed to create work queue\n");
		dev_err(dev, "failed to create work queue\n");
		return -ENOMEM;
	}

@@ -3129,7 +3128,7 @@ static int ab8500_fg_probe(struct platform_device *pdev)
	/* Initialize OVV, and other registers */
	ret = ab8500_fg_init_hw_registers(di);
	if (ret) {
		dev_err(di->dev, "failed to initialize registers\n");
		dev_err(dev, "failed to initialize registers\n");
		goto free_inst_curr_wq;
	}

@@ -3138,9 +3137,9 @@ static int ab8500_fg_probe(struct platform_device *pdev)
	di->flags.batt_id_received = false;

	/* Register FG power supply class */
	di->fg_psy = power_supply_register(di->dev, &ab8500_fg_desc, &psy_cfg);
	di->fg_psy = power_supply_register(dev, &ab8500_fg_desc, &psy_cfg);
	if (IS_ERR(di->fg_psy)) {
		dev_err(di->dev, "failed to register FG psy\n");
		dev_err(dev, "failed to register FG psy\n");
		ret = PTR_ERR(di->fg_psy);
		goto free_inst_curr_wq;
	}
@@ -3168,11 +3167,11 @@ static int ab8500_fg_probe(struct platform_device *pdev)
				  ab8500_fg_irq_th[i].name, di);

		if (ret != 0) {
			dev_err(di->dev, "failed to request %s IRQ %d: %d\n",
			dev_err(dev, "failed to request %s IRQ %d: %d\n",
				ab8500_fg_irq_th[i].name, irq, ret);
			goto free_irq_th;
		}
		dev_dbg(di->dev, "Requested %s IRQ %d: %d\n",
		dev_dbg(dev, "Requested %s IRQ %d: %d\n",
			ab8500_fg_irq_th[i].name, irq, ret);
	}

@@ -3188,11 +3187,11 @@ static int ab8500_fg_probe(struct platform_device *pdev)
			ab8500_fg_irq_bh[0].name, di);

	if (ret != 0) {
		dev_err(di->dev, "failed to request %s IRQ %d: %d\n",
		dev_err(dev, "failed to request %s IRQ %d: %d\n",
			ab8500_fg_irq_bh[0].name, irq, ret);
		goto free_irq_th;
	}
	dev_dbg(di->dev, "Requested %s IRQ %d: %d\n",
	dev_dbg(dev, "Requested %s IRQ %d: %d\n",
		ab8500_fg_irq_bh[0].name, irq, ret);

	di->irq = platform_get_irq_byname(pdev, "CCEOC");
@@ -3203,13 +3202,13 @@ static int ab8500_fg_probe(struct platform_device *pdev)

	ret = ab8500_fg_sysfs_init(di);
	if (ret) {
		dev_err(di->dev, "failed to create sysfs entry\n");
		dev_err(dev, "failed to create sysfs entry\n");
		goto free_irq;
	}

	ret = ab8500_fg_sysfs_psy_create_attrs(di);
	if (ret) {
		dev_err(di->dev, "failed to create FG psy\n");
		dev_err(dev, "failed to create FG psy\n");
		ab8500_fg_sysfs_exit(di);
		goto free_irq;
	}