All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lee Jones <lee.jones@linaro.org>
To: Satya Priya <quic_c_skakit@quicinc.com>
Cc: Bjorn Andersson <bjorn.andersson@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Mark Brown <broonie@kernel.org>,
	linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, swboyd@chromium.org,
	quic_collinsd@quicinc.com, quic_subbaram@quicinc.com,
	quic_jprakash@quicinc.com
Subject: Re: [PATCH V15 6/9] mfd: pm8008: Use i2c_new_dummy_device() API
Date: Thu, 16 Jun 2022 21:57:41 +0100	[thread overview]
Message-ID: <YquZRcuRCrdF+Q1z@google.com> (raw)
In-Reply-To: <1655200111-18357-7-git-send-email-quic_c_skakit@quicinc.com>

On Tue, 14 Jun 2022, Satya Priya wrote:

> Use i2c_new_dummy_device() to register pm8008-regulator
> client present at a different address space, instead of
> defining a separate DT node. This avoids calling the probe
> twice for the same chip, once for each client pm8008-infra
> and pm8008-regulator.
> 
> As a part of this define pm8008_regmap_init() to do regmap
> init for both the clients and define pm8008_get_regmap() to
> pass the regmap to the regulator driver.
> 
> Signed-off-by: Satya Priya <quic_c_skakit@quicinc.com>
> Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> ---
> Changes in V15:
>  - None.
> 
> Changes in V14:
>  - None.
> 
> Changes in V13:
>  - None.
> 
>  drivers/mfd/qcom-pm8008.c       | 34 ++++++++++++++++++++++++++++++++--
>  include/linux/mfd/qcom_pm8008.h |  9 +++++++++
>  2 files changed, 41 insertions(+), 2 deletions(-)
>  create mode 100644 include/linux/mfd/qcom_pm8008.h
> 
> diff --git a/drivers/mfd/qcom-pm8008.c b/drivers/mfd/qcom-pm8008.c
> index 569ffd50..55e2a8e 100644
> --- a/drivers/mfd/qcom-pm8008.c
> +++ b/drivers/mfd/qcom-pm8008.c
> @@ -9,6 +9,7 @@
>  #include <linux/interrupt.h>
>  #include <linux/irq.h>
>  #include <linux/irqdomain.h>
> +#include <linux/mfd/qcom_pm8008.h>
>  #include <linux/module.h>
>  #include <linux/of_device.h>
>  #include <linux/of_platform.h>
> @@ -57,6 +58,7 @@ enum {
>  
>  struct pm8008_data {
>  	struct device *dev;
> +	struct regmap *regulators_regmap;
>  	int irq;
>  	struct regmap_irq_chip_data *irq_data;
>  };
> @@ -150,6 +152,12 @@ static struct regmap_config qcom_mfd_regmap_cfg = {
>  	.max_register	= 0xFFFF,
>  };
>  
> +struct regmap *pm8008_get_regmap(const struct pm8008_data *chip)
> +{
> +	return chip->regulators_regmap;
> +}
> +EXPORT_SYMBOL_GPL(pm8008_get_regmap);

Seems like abstraction for the sake of abstraction.

Why not do the dereference inside the regulator driver?

>  static int pm8008_init(struct regmap *regmap)
>  {
>  	int rc;
> @@ -217,11 +225,25 @@ static int pm8008_probe_irq_peripherals(struct pm8008_data *chip,
>  	return 0;
>  }
>  
> +static struct regmap *pm8008_regmap_init(struct i2c_client *client,
> +							struct pm8008_data *chip)
> +{
> +	struct regmap *regmap;
> +
> +	regmap = devm_regmap_init_i2c(client, &qcom_mfd_regmap_cfg);
> +	if (!regmap)
> +		return NULL;
> +
> +	i2c_set_clientdata(client, chip);
> +	return regmap;
> +}

This function seems superfluous.

It's only called once and it contains a single call.

Just pop the call directly into probe.

>  static int pm8008_probe(struct i2c_client *client)
>  {
>  	int rc;
>  	struct pm8008_data *chip;
>  	struct gpio_desc *reset_gpio;
> +	struct i2c_client *regulators_client;
>  	struct regmap *regmap;
>  
>  	chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL);
> @@ -229,11 +251,19 @@ static int pm8008_probe(struct i2c_client *client)
>  		return -ENOMEM;
>  
>  	chip->dev = &client->dev;
> -	regmap = devm_regmap_init_i2c(client, &qcom_mfd_regmap_cfg);
> +	regmap = pm8008_regmap_init(client, chip);
>  	if (!regmap)
>  		return -ENODEV;
>  
> -	i2c_set_clientdata(client, chip);
> +	regulators_client = i2c_new_dummy_device(client->adapter, client->addr + 1);
> +	if (IS_ERR(regulators_client)) {
> +		dev_err(&client->dev, "can't attach client\n");
> +		return PTR_ERR(regulators_client);
> +	}
> +
> +	chip->regulators_regmap = pm8008_regmap_init(regulators_client, chip);
> +	if (!chip->regulators_regmap)
> +		return -ENODEV;
>  
>  	reset_gpio = devm_gpiod_get(chip->dev, "reset", GPIOD_OUT_LOW);
>  	if (IS_ERR(reset_gpio))
> diff --git a/include/linux/mfd/qcom_pm8008.h b/include/linux/mfd/qcom_pm8008.h
> new file mode 100644
> index 0000000..3814bff
> --- /dev/null
> +++ b/include/linux/mfd/qcom_pm8008.h
> @@ -0,0 +1,9 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +// Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
> +#ifndef __QCOM_PM8008_H__
> +#define __QCOM_PM8008_H__
> +
> +struct pm8008_data;
> +struct regmap *pm8008_get_regmap(const struct pm8008_data *chip);
> +
> +#endif

-- 
Lee Jones [李琼斯]
Principal Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog

  reply	other threads:[~2022-06-16 20:57 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-14  9:48 [PATCH V15 0/9] Add Qualcomm Technologies, Inc. PM8008 regulator driver Satya Priya
2022-06-14  9:48 ` [PATCH V15 1/9] dt-bindings: mfd: pm8008: Add reset-gpios Satya Priya
2022-06-16 20:58   ` Lee Jones
2022-06-14  9:48 ` [PATCH V15 2/9] dt-bindings: mfd: pm8008: Change the address cells Satya Priya
2022-06-16 20:59   ` Lee Jones
2022-06-17 16:34     ` Lee Jones
2022-06-14  9:48 ` [PATCH V15 3/9] dt-bindings: mfd: pm8008: Add regulators for pm8008 Satya Priya
2022-06-16 20:58   ` Lee Jones
2022-06-14  9:48 ` [PATCH V15 4/9] mfd: pm8008: Add reset-gpios Satya Priya
2022-06-16 20:58   ` Lee Jones
2022-06-17 16:34     ` Lee Jones
2022-06-29 18:36   ` Guru Das Srinagesh
2022-06-14  9:48 ` [PATCH V15 5/9] mfd: pm8008: Remove the regmap member from pm8008_data struct Satya Priya
2022-06-16 20:58   ` Lee Jones
2022-06-29 18:35   ` Guru Das Srinagesh
2022-06-14  9:48 ` [PATCH V15 6/9] mfd: pm8008: Use i2c_new_dummy_device() API Satya Priya
2022-06-16 20:57   ` Lee Jones [this message]
2022-06-20  5:28     ` Satya Priya Kakitapalli (Temp)
2022-06-20  8:20       ` Lee Jones
2022-06-20 11:07         ` Satya Priya Kakitapalli (Temp)
2022-06-27  5:07           ` Satya Priya Kakitapalli (Temp)
2022-06-27  7:41             ` Lee Jones
2022-06-28  4:53               ` Satya Priya Kakitapalli (Temp)
2022-06-28  7:42                 ` Lee Jones
2022-06-29 10:36                   ` Satya Priya Kakitapalli (Temp)
2022-06-29 15:18                     ` Lee Jones
2022-06-30  9:37                       ` Satya Priya Kakitapalli (Temp)
2022-06-30 10:34                         ` Lee Jones
2022-07-01  6:46                           ` Satya Priya Kakitapalli (Temp)
2022-07-01  7:54                             ` Lee Jones
2022-07-01  8:47                               ` Satya Priya Kakitapalli (Temp)
2022-07-01  9:12                                 ` Lee Jones
     [not found]                                   ` <0481d3cc-4bb9-4969-0232-76ba57ff260d@quicinc.com>
2022-07-04 12:49                                     ` Lee Jones
2022-07-04 12:59                                       ` Satya Priya Kakitapalli (Temp)
2022-07-11 10:31                                       ` Satya Priya Kakitapalli (Temp)
2022-07-12 12:47                                         ` Lee Jones
2022-07-13  5:50                                           ` Satya Priya Kakitapalli (Temp)
2022-07-13 13:14                                             ` Mark Brown
2022-07-22  6:31                                           ` Satya Priya Kakitapalli (Temp)
2022-07-27  1:19                                             ` Stephen Boyd
     [not found]                                               ` <52039cd1-4390-7abb-d296-0eb7ac0c3b15@quicinc.com>
2022-08-05 10:51                                                 ` Lee Jones
2022-08-08 19:09                                                   ` Stephen Boyd
2022-08-16  3:41                                                     ` Satya Priya Kakitapalli (Temp)
2022-09-28 10:20                                                     ` Lee Jones
2022-09-29  1:20                                                       ` Stephen Boyd
2022-09-29 18:01                                                         ` Lee Jones
2022-10-03 18:47                                                           ` Stephen Boyd
2022-10-04 11:41                                                             ` Lee Jones
2022-06-14  9:48 ` [PATCH V15 7/9] regulator: Add a regulator driver for the PM8008 PMIC Satya Priya
2022-06-14 20:36   ` Stephen Boyd
2022-06-14  9:48 ` [PATCH V15 8/9] arm64: dts: qcom: pm8008: Add base dts file Satya Priya
2022-06-14  9:48 ` [PATCH V15 9/9] arm64: dts: qcom: sc7280: Add pm8008 support for sc7280-idp Satya Priya
2023-03-17  8:06 ` [PATCH V15 0/9] Add Qualcomm Technologies, Inc. PM8008 regulator driver Luca Weiss
2023-07-07  8:54   ` Luca Weiss

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YquZRcuRCrdF+Q1z@google.com \
    --to=lee.jones@linaro.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=quic_c_skakit@quicinc.com \
    --cc=quic_collinsd@quicinc.com \
    --cc=quic_jprakash@quicinc.com \
    --cc=quic_subbaram@quicinc.com \
    --cc=robh+dt@kernel.org \
    --cc=swboyd@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.