Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1282652 > unrolled thread

[PATCH] regmap: speed up the regcache_init()

Started byXiubo Li <lixiubo@cmss.chinamobile.com>
First post2015-12-03 03:30 +0100
Last post2015-12-10 02:40 +0100
Articles 5 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] regmap: speed up the regcache_init() Xiubo Li <lixiubo@cmss.chinamobile.com> - 2015-12-03 03:30 +0100
    Re: [PATCH] regmap: speed up the regcache_init() Mark Brown <broonie@kernel.org> - 2015-12-08 18:10 +0100
      Re: [PATCH] regmap: speed up the regcache_init() Xiubo Li <lixiubo@cmss.chinamobile.com> - 2015-12-09 04:30 +0100
        Re: [PATCH] regmap: speed up the regcache_init() Mark Brown <broonie@kernel.org> - 2015-12-09 16:10 +0100
          Re: [PATCH] regmap: speed up the regcache_init() Xiubo Li <lixiubo@cmss.chinamobile.com> - 2015-12-10 02:40 +0100

#1282652 — [PATCH] regmap: speed up the regcache_init()

FromXiubo Li <lixiubo@cmss.chinamobile.com>
Date2015-12-03 03:30 +0100
Subject[PATCH] regmap: speed up the regcache_init()
Message-ID<qBrOG-7bg-13@gated-at.bofh.it>
If the cache is not used by the device driver, there is not need to
check the striding of the registers. It will just return 0 from
regcache_init() and let the register striding be checked in proper
place when needed.

Signed-off-by: Xiubo Li <lixiubo@cmss.chinamobile.com>
---
 drivers/base/regmap/regcache.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c
index 4c07802..edc3bd9 100644
--- a/drivers/base/regmap/regcache.c
+++ b/drivers/base/regmap/regcache.c
@@ -100,15 +100,15 @@ int regcache_init(struct regmap *map, const struct regmap_config *config)
 	int i;
 	void *tmp_buf;
 
-	for (i = 0; i < config->num_reg_defaults; i++)
-		if (config->reg_defaults[i].reg % map->reg_stride)
-			return -EINVAL;
-
 	if (map->cache_type == REGCACHE_NONE) {
 		map->cache_bypass = true;
 		return 0;
 	}
 
+	for (i = 0; i < config->num_reg_defaults; i++)
+		if (config->reg_defaults[i].reg % map->reg_stride)
+			return -EINVAL;
+
 	for (i = 0; i < ARRAY_SIZE(cache_types); i++)
 		if (cache_types[i]->type == map->cache_type)
 			break;
-- 
1.8.3.1


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1286702

FromMark Brown <broonie@kernel.org>
Date2015-12-08 18:10 +0100
Message-ID<qDtW2-59U-27@gated-at.bofh.it>
In reply to#1282652

[Multipart message — attachments visible in raw view] — view raw

On Thu, Dec 03, 2015 at 10:19:10AM +0800, Xiubo Li wrote:

> If the cache is not used by the device driver, there is not need to
> check the striding of the registers. It will just return 0 from
> regcache_init() and let the register striding be checked in proper
> place when needed.

> -	for (i = 0; i < config->num_reg_defaults; i++)
> -		if (config->reg_defaults[i].reg % map->reg_stride)
> -			return -EINVAL;
> -
>  	if (map->cache_type == REGCACHE_NONE) {
>  		map->cache_bypass = true;
>  		return 0;
>  	}

If we're not using the register cache why are there defaults in the
first place?

[toc] | [prev] | [next] | [standalone]


#1287054

FromXiubo Li <lixiubo@cmss.chinamobile.com>
Date2015-12-09 04:30 +0100
Message-ID<qDDC1-2Px-7@gated-at.bofh.it>
In reply to#1286702

On 09/12/2015 01:05, Mark Brown wrote:
> On Thu, Dec 03, 2015 at 10:19:10AM +0800, Xiubo Li wrote:
>
>> If the cache is not used by the device driver, there is not need to
>> check the striding of the registers. It will just return 0 from
>> regcache_init() and let the register striding be checked in proper
>> place when needed.
>> -	for (i = 0; i < config->num_reg_defaults; i++)
>> -		if (config->reg_defaults[i].reg % map->reg_stride)
>> -			return -EINVAL;
>> -
>>   	if (map->cache_type == REGCACHE_NONE) {
>>   		map->cache_bypass = true;
>>   		return 0;
>>   	}
> If we're not using the register cache why are there defaults in the
> first place?
Yes, usually when the register cache is not used, the number of the
defaults should be zero, but for some drivers like drv2267.c/led_lp8860.c
will add the defaults register values though the cache type is
REGCACHE_NONE for some reasons.

This patch may be not the best, but will be a bit meaningful for some
drivers like drv2267.c/led_lp8860.c for now.

Thanks,

BRs

Xiubo








--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1287546

FromMark Brown <broonie@kernel.org>
Date2015-12-09 16:10 +0100
Message-ID<qDOxs-1zF-11@gated-at.bofh.it>
In reply to#1287054

[Multipart message — attachments visible in raw view] — view raw

On Wed, Dec 09, 2015 at 11:17:22AM +0800, Xiubo Li wrote:

> Yes, usually when the register cache is not used, the number of the
> defaults should be zero, but for some drivers like drv2267.c/led_lp8860.c
> will add the defaults register values though the cache type is
> REGCACHE_NONE for some reasons.

I can't find either of those in the kernel tree...

> This patch may be not the best, but will be a bit meaningful for some
> drivers like drv2267.c/led_lp8860.c for now.

TBH if we're going to do something here it might be as well to print a
warning if something is providing register defaults but no cache.

[toc] | [prev] | [next] | [standalone]


#1288114

FromXiubo Li <lixiubo@cmss.chinamobile.com>
Date2015-12-10 02:40 +0100
Message-ID<qDYn8-7KL-9@gated-at.bofh.it>
In reply to#1287546

On 09/12/2015 23:05, Mark Brown wrote:
> On Wed, Dec 09, 2015 at 11:17:22AM +0800, Xiubo Li wrote:
>
>> Yes, usually when the register cache is not used, the number of the
>> defaults should be zero, but for some drivers like drv2267.c/led_lp8860.c
>> will add the defaults register values though the cache type is
>> REGCACHE_NONE for some reasons.
> I can't find either of those in the kernel tree...
This could be found in the for-next branch of regmap tree.


>> This patch may be not the best, but will be a bit meaningful for some
>> drivers like drv2267.c/led_lp8860.c for now.
> TBH if we're going to do something here it might be as well to print a
> warning if something is providing register defaults but no cache.
Yes, Agreed.

I will enhance this later in another patch, just abandon this one please.



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web