linux-hwmon.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Xiaoting Liu <xiaoting.liu@hxt-semitech.com>, jdelvare@suse.com
Cc: openbmc@lists.ozlabs.org, linux-hwmon@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Shunyong Yang <shunyong.yang@hxt-semitech.com>
Subject: Re: [PATCH 1/4] pmbus: associate PMBUS_SKIP_STATUS_CHECK with driver_data
Date: Fri, 4 Jan 2019 06:54:07 -0800	[thread overview]
Message-ID: <b9548ce0-97d2-a3d4-d578-015fc5419967@roeck-us.net> (raw)
Message-ID: <20190104145407.yxTDnf4QdTJEqfKZxmIVr1452prlM9KcxFvJ5AaKX94@z> (raw)
In-Reply-To: <680b4d5659971cc4f6e1a6878837c2ce49962a7c.1546591275.git.xiaoting.liu@hxt-semitech.com>

On 1/4/19 12:55 AM, Xiaoting Liu wrote:
> Current code compares device name with name in i2c_device_id to decide
> whether PMBUS_SKIP_STATUS_CHECK should be set in pmbus_platform_data,
> which makes adding new devices with PMBUS_SKIP_STATUS_CHECK should also
> modify code in pmbus_probe().
> 
> This patch adds pmbus_device_info to save pages and flags. Its pointer
> is put in driver_data of i2c_device_id, which makes adding new device
> more straightforward.
> 

Good idea, but I don't see at this time where the patch is needed.
Maybe in patch 3/4 which is missing from the series ?

> Signed-off-by: Shunyong Yang <shunyong.yang@hxt-semitech.com>
> Signed-off-by: Xiaoting Liu <xiaoting.liu@hxt-semitech.com>
> ---
>   drivers/hwmon/pmbus/pmbus.c | 54 +++++++++++++++++++++++++++------------------
>   include/linux/pmbus.h       |  5 +++++
>   2 files changed, 37 insertions(+), 22 deletions(-)
> 
> diff --git a/drivers/hwmon/pmbus/pmbus.c b/drivers/hwmon/pmbus/pmbus.c
> index 7688dab32f6e..aa4cf9636e99 100644
> --- a/drivers/hwmon/pmbus/pmbus.c
> +++ b/drivers/hwmon/pmbus/pmbus.c
> @@ -172,13 +172,15 @@ static int pmbus_probe(struct i2c_client *client,
>          struct pmbus_driver_info *info;
>          struct pmbus_platform_data *pdata = NULL;
>          struct device *dev = &client->dev;
> +       struct pmbus_device_info *device_info;
> 
>          info = devm_kzalloc(dev, sizeof(struct pmbus_driver_info), GFP_KERNEL);
>          if (!info)
>                  return -ENOMEM;
> 
> -       if (!strcmp(id->name, "dps460") || !strcmp(id->name, "dps800") ||
> -           !strcmp(id->name, "sgd009")) {
> +       device_info = (struct pmbus_device_info *)id->driver_data;
> +
> +       if (device_info->flags & PMBUS_SKIP_STATUS_CHECK) {
>                  pdata = devm_kzalloc(dev, sizeof(struct pmbus_platform_data),
>                                       GFP_KERNEL);
>                  if (!pdata)
> @@ -187,36 +189,44 @@ static int pmbus_probe(struct i2c_client *client,
>                  pdata->flags = PMBUS_SKIP_STATUS_CHECK;
>          }
> 
> -       info->pages = id->driver_data;
> +       info->pages = device_info->pages;
>          info->identify = pmbus_identify;
>          dev->platform_data = pdata;
> 
>          return pmbus_do_probe(client, id, info);
>   }
> 
> +static const struct pmbus_device_info default_pmbus_info = {1, 0};
> +static const struct pmbus_device_info dps460_pmbus_info = {
> +                               1, PMBUS_SKIP_STATUS_CHECK};
> +static const struct pmbus_device_info dps800_pmbus_info = {
> +                               1, PMBUS_SKIP_STATUS_CHECK};
> +static const struct pmbus_device_info sgd009_pmbus_info = {
> +                               1, PMBUS_SKIP_STATUS_CHECK};

Three structures with exactly the same content does not add value.
Please merge into one with a common name that reflects its use.

> +static const struct pmbus_device_info pmbus_info = {0, 0};

default_pmbus_info and pmbus_info are badly named and ordered.
The name should reflect that one sets one page and that the other
leaves the number of pages unset.

I would suggest three structures and names, such as

pmbus_info_one
pmbus_info_one_skip
pmbus_info_zero

though I am open to better names.

>   /*
>    * Use driver_data to set the number of pages supported by the chip.
>    */
>   static const struct i2c_device_id pmbus_id[] = {
> -       {"adp4000", 1},
> -       {"bmr453", 1},
> -       {"bmr454", 1},
> -       {"dps460", 1},
> -       {"dps800", 1},
> -       {"mdt040", 1},
> -       {"ncp4200", 1},
> -       {"ncp4208", 1},
> -       {"pdt003", 1},
> -       {"pdt006", 1},
> -       {"pdt012", 1},
> -       {"pmbus", 0},
> -       {"sgd009", 1},
> -       {"tps40400", 1},
> -       {"tps544b20", 1},
> -       {"tps544b25", 1},
> -       {"tps544c20", 1},
> -       {"tps544c25", 1},
> -       {"udt020", 1},
> +       {"adp4000", (kernel_ulong_t)&default_pmbus_info},
> +       {"bmr453", (kernel_ulong_t)&default_pmbus_info},
> +       {"bmr454", (kernel_ulong_t)&default_pmbus_info},
> +       {"dps460", (kernel_ulong_t)&dps460_pmbus_info},
> +       {"dps800", (kernel_ulong_t)&dps800_pmbus_info},
> +       {"mdt040", (kernel_ulong_t)&default_pmbus_info},
> +       {"ncp4200", (kernel_ulong_t)&default_pmbus_info},
> +       {"ncp4208", (kernel_ulong_t)&default_pmbus_info},
> +       {"pdt003", (kernel_ulong_t)&default_pmbus_info},
> +       {"pdt006", (kernel_ulong_t)&default_pmbus_info},
> +       {"pdt012", (kernel_ulong_t)&default_pmbus_info},
> +       {"pmbus", (kernel_ulong_t)&pmbus_info},
> +       {"sgd009", (kernel_ulong_t)&sgd009_pmbus_info},
> +       {"tps40400", (kernel_ulong_t)&default_pmbus_info},
> +       {"tps544b20", (kernel_ulong_t)&default_pmbus_info},
> +       {"tps544b25", (kernel_ulong_t)&default_pmbus_info},
> +       {"tps544c20", (kernel_ulong_t)&default_pmbus_info},
> +       {"tps544c25", (kernel_ulong_t)&default_pmbus_info},
> +       {"udt020", (kernel_ulong_t)&default_pmbus_info},
>          {}
>   };
> 
> diff --git a/include/linux/pmbus.h b/include/linux/pmbus.h
> index ee3c2aba2a8e..3c05edad7666 100644
> --- a/include/linux/pmbus.h
> +++ b/include/linux/pmbus.h
> @@ -46,4 +46,9 @@ struct pmbus_platform_data {
>          struct regulator_init_data *reg_init_data;
>   };
> 
> +struct pmbus_device_info {
> +       int pages;
> +       u32 flags;
> +};
> +

This should not be needed here. The structure can be declared locally
in pmbus.c (its use in patch 4/4 is wrong).

>   #endif /* _PMBUS_H_ */
> --
> 1.8.3.1
> 
> 
> 
> 
> This email is intended only for the named addressee. It may contain information that is confidential/private, legally privileged, or copyright-protected, and you should handle it accordingly. If you are not the intended recipient, you do not have legal rights to retain, copy, or distribute this email or its contents, and should promptly delete the email and all electronic copies in your system; do not retain copies in any media. If you have received this email in error, please notify the sender promptly. Thank you.
> 
> 
> 


  parent reply	other threads:[~2019-01-04 14:54 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1546591275.git.xiaoting.liu@hxt-semitech.com>
2019-01-04  8:55 ` [PATCH 1/4] pmbus: associate PMBUS_SKIP_STATUS_CHECK with driver_data Xiaoting Liu
2019-01-04  9:00 ` [PATCH 2/4] dt-bindings: power supply: Document dps650ab Xiaoting Liu
2019-01-11 19:36   ` Rob Herring
2019-01-14  2:41     ` Liu, Xiaoting
2019-01-04  9:05 ` [PATCH 4/4] pmbus (dps650ab): add power supply driver Xiaoting Liu
2019-01-04 14:41   ` Guenter Roeck
2019-01-04 14:54 ` Guenter Roeck [this message]
2019-01-04 14:54   ` [PATCH 1/4] pmbus: associate PMBUS_SKIP_STATUS_CHECK with driver_data Guenter Roeck
2019-01-05 17:06 ` [PATCH 2/4] dt-bindings: power supply: Document dps650ab Guenter Roeck
2019-01-05 17:05   ` Guenter Roeck
2019-01-07  6:30   ` Liu, Xiaoting
2019-01-07  6:35     ` Guenter Roeck
2019-01-05 17:09 ` [PATCH 4/4] pmbus (dps650ab): add power supply driver Guenter Roeck
2019-01-05 17:08   ` Guenter Roeck
     [not found]   ` <a494c032f6344528a89bf9b9aa81a3d7@HXTBJIDCEMVIW02.hxtcorp.net>
2019-01-07  6:35     ` Guenter Roeck
2019-01-07  2:53 ` [PATCH 1/4] pmbus: associate PMBUS_SKIP_STATUS_CHECK with driver_data Yang, Shunyong
2019-01-07  2:35   ` Yang, Shunyong

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=b9548ce0-97d2-a3d4-d578-015fc5419967@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=jdelvare@suse.com \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=openbmc@lists.ozlabs.org \
    --cc=shunyong.yang@hxt-semitech.com \
    --cc=xiaoting.liu@hxt-semitech.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).