From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752680AbbEHJzk (ORCPT ); Fri, 8 May 2015 05:55:40 -0400 Received: from opensource.wolfsonmicro.com ([80.75.67.52]:54271 "EHLO opensource.wolfsonmicro.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751167AbbEHJzj (ORCPT ); Fri, 8 May 2015 05:55:39 -0400 Date: Fri, 8 May 2015 10:55:37 +0100 From: Nariman Poushin To: broonie@kernel.org Cc: linux-kernel@vger.kernel.org, patches@opensource.wolfsonmicro.com Subject: [RFC][PATCH] regmap: make REGCACHE_NONE maps return error on regcache_sync Message-ID: <20150508095537.GA15394@opensource.wolfsonmicro.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.17+20080114 (2008-01-14) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Signed-off-by: Nariman Poushin --- regcache currently causes a BUG_ON if cache_sync/sync_region is called on a map with cache_type REGCACHE_NONE. This is not consistent with the behaviour of regcache_read/write which currently just return -ENOSYS and only throws a BUG_ON if the cache_type is something that _should_ have cache ops, but doesn't. Sure your device might not work, it but doesn't seem right to panic the kernel. The other option I suppose is to change it to a WARN_ON. Thanks Nariman drivers/base/regmap/regcache.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c index 7eb7b3b..992aba3 100644 --- a/drivers/base/regmap/regcache.c +++ b/drivers/base/regmap/regcache.c @@ -303,6 +303,9 @@ int regcache_sync(struct regmap *map) const char *name; unsigned int bypass; + if (map->cache_type == REGCACHE_NONE) + return -ENODEV; + BUG_ON(!map->cache_ops); map->lock(map->lock_arg); @@ -371,6 +374,9 @@ int regcache_sync_region(struct regmap *map, unsigned int min, const char *name; unsigned int bypass; + if (map->cache_type == REGCACHE_NONE) + return -ENODEV; + BUG_ON(!map->cache_ops); map->lock(map->lock_arg); -- 2.1.4