* [PATCH v2] regmap: debugfs: Simplify calculation of `c->max_reg'
@ 2013-02-14 14:04 Dimitris Papastamos
2013-02-14 14:14 ` Mark Brown
0 siblings, 1 reply; 3+ messages in thread
From: Dimitris Papastamos @ 2013-02-14 14:04 UTC (permalink / raw)
To: Mark Brown; +Cc: linux-kernel, patches
We don't need to use any of the file position information
to calculate the base and max register of each block. Just
use the counter directly.
Ensure that in the limiting case where there is a single
register in the register file we handle that properly in
the if (c) { ... } code after the loop without causing
an integer wrap-around.
Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
---
drivers/base/regmap/regmap-debugfs.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/drivers/base/regmap/regmap-debugfs.c b/drivers/base/regmap/regmap-debugfs.c
index 78d5f20..d804b74 100644
--- a/drivers/base/regmap/regmap-debugfs.c
+++ b/drivers/base/regmap/regmap-debugfs.c
@@ -80,7 +80,7 @@ static unsigned int regmap_debugfs_get_dump_start(struct regmap *map,
{
struct regmap_debugfs_off_cache *c = NULL;
loff_t p = 0;
- unsigned int i, ret;
+ unsigned int i = 0, ret;
unsigned int fpos_offset;
unsigned int reg_offset;
@@ -95,9 +95,7 @@ static unsigned int regmap_debugfs_get_dump_start(struct regmap *map,
regmap_precious(map, i)) {
if (c) {
c->max = p - 1;
- fpos_offset = c->max - c->min;
- reg_offset = fpos_offset / map->debugfs_tot_len;
- c->max_reg = c->base_reg + reg_offset;
+ c->max_reg = i - 1;
list_add_tail(&c->list,
&map->debugfs_off_cache);
c = NULL;
@@ -124,9 +122,10 @@ static unsigned int regmap_debugfs_get_dump_start(struct regmap *map,
/* Close the last entry off if we didn't scan beyond it */
if (c) {
c->max = p - 1;
- fpos_offset = c->max - c->min;
- reg_offset = fpos_offset / map->debugfs_tot_len;
- c->max_reg = c->base_reg + reg_offset;
+ if (!i)
+ c->max_reg = 0;
+ else
+ c->max_reg = i - 1;
list_add_tail(&c->list,
&map->debugfs_off_cache);
}
--
1.8.1.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2] regmap: debugfs: Simplify calculation of `c->max_reg'
2013-02-14 14:04 [PATCH v2] regmap: debugfs: Simplify calculation of `c->max_reg' Dimitris Papastamos
@ 2013-02-14 14:14 ` Mark Brown
2013-02-14 14:37 ` Dimitris Papastamos
0 siblings, 1 reply; 3+ messages in thread
From: Mark Brown @ 2013-02-14 14:14 UTC (permalink / raw)
To: Dimitris Papastamos; +Cc: linux-kernel, patches
[-- Attachment #1: Type: text/plain, Size: 179 bytes --]
On Thu, Feb 14, 2013 at 02:04:04PM +0000, Dimitris Papastamos wrote:
> - unsigned int i, ret;
> + unsigned int i = 0, ret;
Coding style and are you sure this is a good default.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] regmap: debugfs: Simplify calculation of `c->max_reg'
2013-02-14 14:14 ` Mark Brown
@ 2013-02-14 14:37 ` Dimitris Papastamos
0 siblings, 0 replies; 3+ messages in thread
From: Dimitris Papastamos @ 2013-02-14 14:37 UTC (permalink / raw)
To: Mark Brown; +Cc: linux-kernel, patches
On Thu, Feb 14, 2013 at 02:14:40PM +0000, Mark Brown wrote:
> On Thu, Feb 14, 2013 at 02:04:04PM +0000, Dimitris Papastamos wrote:
>
> > - unsigned int i, ret;
> > + unsigned int i = 0, ret;
>
> Coding style and are you sure this is a good default.
Hm, it doesn't really matter. I guess the proper fix would
be to set i = base at the start, but that would not change
anything in terms of the actual code flow, it would only silence
the gcc flow analysis bug.
Thanks,
Dimitris
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-02-14 14:37 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-14 14:04 [PATCH v2] regmap: debugfs: Simplify calculation of `c->max_reg' Dimitris Papastamos
2013-02-14 14:14 ` Mark Brown
2013-02-14 14:37 ` Dimitris Papastamos
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox