Message ID | 1360933026-30325-7-git-send-email-lee.jones@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Friday 15 February 2013, Lee Jones wrote: > struct ab8500 *ab8500; > + int chip_id = -EINVAL; > > ab8500 = dev_get_drvdata(dev); > - return sprintf(buf, "%#x\n", ab8500 ? ab8500->chip_id : -EINVAL); > + if(ab8500) { > + chip_id = ab8500->chip_id; > + if((is_ab8505(ab8500) || is_ab9540(ab8500)) && ab8500->version != 0xFF) > + chip_id = (ab8500->version << 8) | chip_id; > + } > + return sprintf(buf, "%#x\n", chip_id); > } What's the use of printing "ffffffea" for unknown versions here? Arnd
On Tue, 19 Feb 2013, Arnd Bergmann wrote: > On Friday 15 February 2013, Lee Jones wrote: > > struct ab8500 *ab8500; > > + int chip_id = -EINVAL; > > > > ab8500 = dev_get_drvdata(dev); > > - return sprintf(buf, "%#x\n", ab8500 ? ab8500->chip_id : -EINVAL); > > + if(ab8500) { > > + chip_id = ab8500->chip_id; > > + if((is_ab8505(ab8500) || is_ab9540(ab8500)) && ab8500->version != 0xFF) > > + chip_id = (ab8500->version << 8) | chip_id; > > + } > > + return sprintf(buf, "%#x\n", chip_id); > > } > > What's the use of printing "ffffffea" for unknown versions here? You mean instead of -EINVAL? No idea, Marcus?
On 20 February 2013 09:13, Lee Jones <lee.jones@linaro.org> wrote: > On Tue, 19 Feb 2013, Arnd Bergmann wrote: > >> On Friday 15 February 2013, Lee Jones wrote: >> > struct ab8500 *ab8500; >> > + int chip_id = -EINVAL; >> > >> > ab8500 = dev_get_drvdata(dev); >> > - return sprintf(buf, "%#x\n", ab8500 ? ab8500->chip_id : -EINVAL); >> > + if(ab8500) { >> > + chip_id = ab8500->chip_id; >> > + if((is_ab8505(ab8500) || is_ab9540(ab8500)) && ab8500->version != 0xFF) >> > + chip_id = (ab8500->version << 8) | chip_id; >> > + } >> > + return sprintf(buf, "%#x\n", chip_id); >> > } >> >> What's the use of printing "ffffffea" for unknown versions here? > > You mean instead of -EINVAL? No idea, Marcus? > Looks like I'm guilty of just making the minimal changes. Arnd is right though, getting ffffffea(-EINVAL) back is pretty useless. I'll have to check user land to see what is using this. Maybe not printing and returning 0 should be the correct behaviour when an unknown version is found.
On Wed, 20 Feb 2013, Marcus Cooper wrote: > On 20 February 2013 09:13, Lee Jones <lee.jones@linaro.org> wrote: > > On Tue, 19 Feb 2013, Arnd Bergmann wrote: > > > >> On Friday 15 February 2013, Lee Jones wrote: > >> > struct ab8500 *ab8500; > >> > + int chip_id = -EINVAL; > >> > > >> > ab8500 = dev_get_drvdata(dev); > >> > - return sprintf(buf, "%#x\n", ab8500 ? ab8500->chip_id : -EINVAL); > >> > + if(ab8500) { > >> > + chip_id = ab8500->chip_id; > >> > + if((is_ab8505(ab8500) || is_ab9540(ab8500)) && ab8500->version != 0xFF) > >> > + chip_id = (ab8500->version << 8) | chip_id; > >> > + } > >> > + return sprintf(buf, "%#x\n", chip_id); > >> > } > >> > >> What's the use of printing "ffffffea" for unknown versions here? > > > > You mean instead of -EINVAL? No idea, Marcus? > > > Looks like I'm guilty of just making the minimal changes. Arnd is > right though, getting ffffffea(-EINVAL) back is pretty useless. > I'll have to check user land to see what is using this. Yes, it would be useful to know how it's parsed. Thanks Marcus. > Maybe not > printing and returning 0 should be the correct behaviour > when an unknown version is found.
diff --git a/drivers/mfd/ab8500-core.c b/drivers/mfd/ab8500-core.c index 7c20728..678afd0 100644 --- a/drivers/mfd/ab8500-core.c +++ b/drivers/mfd/ab8500-core.c @@ -1095,9 +1095,15 @@ static ssize_t show_chip_id(struct device *dev, struct device_attribute *attr, char *buf) { struct ab8500 *ab8500; + int chip_id = -EINVAL; ab8500 = dev_get_drvdata(dev); - return sprintf(buf, "%#x\n", ab8500 ? ab8500->chip_id : -EINVAL); + if(ab8500) { + chip_id = ab8500->chip_id; + if((is_ab8505(ab8500) || is_ab9540(ab8500)) && ab8500->version != 0xFF) + chip_id = (ab8500->version << 8) | chip_id; + } + return sprintf(buf, "%#x\n", chip_id); } /*