Hi Guenter Roeck, Thanks for your reply.
-----Original Message----- From: Guenter Roeck [mailto:[email protected]] On Behalf Of Guenter Roeck Sent: 2019年1月7日 22:04 To: Liu, Xiaoting <[email protected]>; [email protected] Cc: [email protected]; [email protected]; [email protected]; Yang, Shunyong <[email protected]>; Wang, Dongsheng <[email protected]> Subject: Re: [PATCH v2 1/4] pmbus: associate PMBUS_SKIP_STATUS_CHECK with driver_data On 1/7/19 2:57 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. > > Signed-off-by: Shunyong Yang <[email protected]> > Signed-off-by: Xiaoting Liu <[email protected]> > --- > v2: > Move struct pmbus_device_info definition location from pmbus.h to pmbus.c. > Change struct name from default_pmbus_info to pmbus_info_one. > Change struct name from pmbus_info to pmbus_info_zero. > Replace struct name dps460_pmbus_info and sgd009_pmbus_info with > pmbus_info_one_skip. > --- > drivers/hwmon/pmbus/pmbus.c | 55 > +++++++++++++++++++++++++++------------------ > 1 file changed, 33 insertions(+), 22 deletions(-) > > diff --git a/drivers/hwmon/pmbus/pmbus.c b/drivers/hwmon/pmbus/pmbus.c > index 7688dab32f6e..e38dd97cc49a 100644 > --- a/drivers/hwmon/pmbus/pmbus.c > +++ b/drivers/hwmon/pmbus/pmbus.c > @@ -28,6 +28,11 @@ > #include <linux/pmbus.h> > #include "pmbus.h" > > +struct pmbus_device_info { > + int pages; > + u32 flags; > +}; > + > /* > * Find sensor groups and status registers on each page. > */ > @@ -172,13 +177,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; > + Please no empty line between assignments and checking its results. Ok, we will remove the empty line. > + if (device_info->flags & PMBUS_SKIP_STATUS_CHECK) { > pdata = devm_kzalloc(dev, sizeof(struct pmbus_platform_data), > GFP_KERNEL); > if (!pdata) > @@ -187,36 +194,40 @@ 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 pmbus_info_one = {1, 0}; > +static const struct pmbus_device_info pmbus_info_zero = {0, 0}; > +static const struct pmbus_device_info pmbus_info_one_skip = { > + 1, PMBUS_SKIP_STATUS_CHECK}; > /* > * 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)&pmbus_info_one}, > + {"bmr453", (kernel_ulong_t)&pmbus_info_one}, > + {"bmr454", (kernel_ulong_t)&pmbus_info_one}, > + {"dps460", (kernel_ulong_t)&pmbus_info_one_skip}, > + {"dps800", (kernel_ulong_t)&pmbus_info_one_skip}, > + {"mdt040", (kernel_ulong_t)&pmbus_info_one}, > + {"ncp4200", (kernel_ulong_t)&pmbus_info_one}, > + {"ncp4208", (kernel_ulong_t)&pmbus_info_one}, > + {"pdt003", (kernel_ulong_t)&pmbus_info_one}, > + {"pdt006", (kernel_ulong_t)&pmbus_info_one}, > + {"pdt012", (kernel_ulong_t)&pmbus_info_one}, > + {"pmbus", (kernel_ulong_t)&pmbus_info_zero}, > + {"sgd009", (kernel_ulong_t)&pmbus_info_one_skip}, > + {"tps40400", (kernel_ulong_t)&pmbus_info_one}, > + {"tps544b20", (kernel_ulong_t)&pmbus_info_one}, > + {"tps544b25", (kernel_ulong_t)&pmbus_info_one}, > + {"tps544c20", (kernel_ulong_t)&pmbus_info_one}, > + {"tps544c25", (kernel_ulong_t)&pmbus_info_one}, > + {"udt020", (kernel_ulong_t)&pmbus_info_one}, > {} > }; > > -- > 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. > I think I mentioned that before. This legalese makes it all but impossible for me to apply your patches. We will not show this message any more. Thanks, Xiaoting Guenter

