From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com [66.111.4.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 48E8936D for ; Mon, 23 May 2022 03:09:59 +0000 (UTC) Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 22CEC5C0097; Sun, 22 May 2022 23:09:58 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Sun, 22 May 2022 23:09:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1653275398; x= 1653361798; bh=dDu98oTe18z7O2jWYV61FHk7bMxBVeuTHkFzuRc4l2I=; b=A 5rzXkf8VEbFuqG3COPwI5cO7JvJl0Xb2zetemlbHxHZzCxZ7U3lay1YkU0JqXIOM BTdSBel30BYkVTnyyoTLf+Y5xAZT/oKCqMFnQJ7/WUCp4eeam/PZBTkM29MuMF6i ++oVd2bkY8cIgZz3YMnXUfElHH7lbd7sgv3vVmQyzngycFGJV74L5Lp3QHM293kV XByYOPcxt5LNBe2smN9nvz5+gY7KxBUUN3IdNoHkcfR1QmYZd1mejLby2T8lXagS /7Hpos7Z8PaYFbRPtdMB+m9+DVXuxOOolKbtroRt2o8tMkxzAZU8DLrhd6W/rq4n z8hKDHWZMeWWSw6nSfGjw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:date:feedback-id:feedback-id:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:sender :subject:subject:to:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; t=1653275398; x=1653361798; bh=d Du98oTe18z7O2jWYV61FHk7bMxBVeuTHkFzuRc4l2I=; b=MU3HsbdjJ0hb6k3X1 LBWxRam/mxTlamL5bIIPM887s1egKMIyLTCvzV3vybwoNDLb4uyeQLp+/aZTnqOl vShHR5wETK4QT1+oVU1a/UCYlnikEM6yvARMzAhoxbEgLzC4tE+wHvSotNYvSob8 OfMLs95sxYz5KR0bLGrd95gGcRWRFhmqBb2D2dpOLLfUQ1BSOulqRbBCCDHPpKwR L5JbFf+nWPz+Y0bsnZ1bMjdkbugWN4yyvhSls2NKp/cZwRvftEijAz74euWSqkZv SeZF1j8TDyQAi15/4mLa8tCA+pMx8rcircBU2u5z4b05lbsXSaxgLVi5ZPSNHYZr 7U48g== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrieelgdeijecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefuvfhfhffkffgfgggjtgfgsehtjeertddtfeejnecuhfhrohhmpefurghmuhgv lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf frrghtthgvrhhnpefgveffteelheffjeeukedvkedviedtheevgeefkeehueeiieeuteeu gfettdeggeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhroh hmpehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhg X-ME-Proxy: Feedback-ID: i0ad843c9:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 22 May 2022 23:09:55 -0400 (EDT) Subject: Re: [PATCH v2 1/4] regmap: provide regmap_field helpers for simple bit operations To: Li Chen , Mark Brown , linux-kernel , Greg Kroah-Hartman , "Rafael J. Wysocki" , linux-gpio , Linus Walleij , linux-arm-kernel , Patrice Chotard , linux-sunxi , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Chen-Yu Tsai , Jernej Skrabec , Philipp Zabel References: <180e702a15f.e737e37e45859.3135149506136486394@zohomail.com> <180eeb93909.12110e2de60158.391061173597432851@zohomail.com> <180eeba3811.f7218bc260169.7323954027713751119@zohomail.com> From: Samuel Holland Message-ID: Date: Sun, 22 May 2022 22:09:55 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 In-Reply-To: <180eeba3811.f7218bc260169.7323954027713751119@zohomail.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Hi, On 5/22/22 9:23 PM, Li Chen wrote: > From: Li Chen > > We have set/clear/test operations for regmap, but not for regmap_field yet. > So let's introduce regmap_field helpers too. > > In many instances regmap_field_update_bits() is used for simple bit setting > and clearing. In these cases the last argument is redundant and we can > hide it with a static inline function. > > This adds three new helpers for simple bit operations: set_bits, > clear_bits and test_bits (the last one defined as a regular function). > > Signed-off-by: Li Chen > --- > drivers/base/regmap/regmap.c | 22 +++++++++++++++++++++ > include/linux/regmap.h | 37 ++++++++++++++++++++++++++++++++++++ > 2 files changed, 59 insertions(+) > > diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c > index 5e12f7cb5147..a37d6041b7bd 100644 > --- a/drivers/base/regmap/regmap.c > +++ b/drivers/base/regmap/regmap.c > @@ -2208,6 +2208,28 @@ int regmap_field_update_bits_base(struct regmap_field *field, > } > EXPORT_SYMBOL_GPL(regmap_field_update_bits_base); > > +/** > + * regmap_field_test_bits() - Check if all specified bits are set in a > + * register field. > + * > + * @field: Register field to operate on > + * @bits: Bits to test > + * > + * Returns -1 if the underlying regmap_field_read() fails, 0 if at least one of the > + * tested bits is not set and 1 if all tested bits are set. > + */ > +int regmap_field_test_bits(struct regmap_field *field, unsigned int bits) > +{ > + unsigned int val, ret; > + > + ret = regmap_field_read(field, &val); > + if (ret) > + return ret; > + > + return (val & bits) == bits; > +} > +EXPORT_SYMBOL_GPL(regmap_field_test_bits); > + > /** > * regmap_fields_update_bits_base() - Perform a read/modify/write cycle a > * register field with port ID > diff --git a/include/linux/regmap.h b/include/linux/regmap.h > index de81a94d7b30..10b410734d9e 100644 > --- a/include/linux/regmap.h > +++ b/include/linux/regmap.h > @@ -1324,6 +1324,22 @@ static inline int regmap_field_update_bits(struct regmap_field *field, > NULL, false, false); > } > > +static inline int regmap_field_set_bits(struct regmap_field *field, > + unsigned int bits) > +{ > + return regmap_field_update_bits_base(field, bits, 0, NULL, false, > + false); > +} > + > +static inline int regmap_field_clear_bits(struct regmap_field *field, > + unsigned int bits) > +{ > + return regmap_field_update_bits_base(field, bits, bits, NULL, false, > + false); The contents of these two functions are swapped when compared to their names. Regards, Samuel > +} > + > +int regmap_field_test_bits(struct regmap_field *field, unsigned int bits); > + > static inline int > regmap_field_force_update_bits(struct regmap_field *field, > unsigned int mask, unsigned int val) > @@ -1757,6 +1773,27 @@ regmap_field_force_update_bits(struct regmap_field *field, > return -EINVAL; > } > > +static inline int regmap_field_set_bits(struct regmap_field *field, > + unsigned int bits) > +{ > + WARN_ONCE(1, "regmap API is disabled"); > + return -EINVAL; > +} > + > +static inline int regmap_field_clear_bits(struct regmap_field *field, > + unsigned int bits) > +{ > + WARN_ONCE(1, "regmap API is disabled"); > + return -EINVAL; > +} > + > +static inline int regmap_field_test_bits(struct regmap_field *field, > + unsigned int bits) > +{ > + WARN_ONCE(1, "regmap API is disabled"); > + return -EINVAL; > +} > + > static inline int regmap_fields_write(struct regmap_field *field, > unsigned int id, unsigned int val) > { > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7918EC433F5 for ; Mon, 23 May 2022 09:02:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Reply-To:Cc:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=cg8luB+DYMBZdLenxjeeBv1hxNGzlIfMxhqh8UuBLk0=; b=M2POUJhXdYQF4bOLOCqb4Ej1Hj L7SDXvKdLjHz01NRy5LLgFRbnlLh2E5WclwPYSVgCmXDKMp6VS81cOyVyTjWJyLdIts2QLfDvJXPK U/1Qz57ip7/VqVCaTtfkH4SI6/7Ac0R/U6eyv4HpMUGrjmaTZDCdaJRrjwhf+PN8tJN/3RmDe+9rl kH1iTZAjPDihrjtWE29jqCjk1DerNjJ1AhxWzlo4UoIyGcC9vVToa2X9I6tJseSk/hPksJNU10Icn Yit6plx+Bgspaxw0DJ297Vev/l49B6Bp/LdD5eun6hUyJ8qkFX/yWqkHsVtRv0W+07a9jp0Hyy7vh /RwCR6CA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nt3vp-002eAQ-UU; Mon, 23 May 2022 09:00:55 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nt2ra-002AAA-9Y for linux-arm-kernel@bombadil.infradead.org; Mon, 23 May 2022 07:52:29 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:Content-Type :In-Reply-To:MIME-Version:Date:Message-ID:From:References:To:Subject:Sender: Reply-To:Cc:Content-ID:Content-Description; bh=dDu98oTe18z7O2jWYV61FHk7bMxBVeuTHkFzuRc4l2I=; b=CYvLySyZKFwp6hFkA539dewHWa BterU15CuKWAACy18wk0bnrIQab6sWGadnPU4fSIcCZm+ZrN6he6fDVj8VE36mjsaL3HhUWQyIJ7G rIGndIOP5+sHPBQIXI2kK6MeVUBp1t8wMGAN/+DwGRKbwqQq027ketqvC9YkiyIMlamqJw3v5bkYe D23Otd5ygxSEVmp2uuMvwfSJ+gc72JrkURqW3fziMMPbeULdqh2rMCAc6S0FQzoP91HRsJqiQlApc +J3vGxM3BjCGZ+DHS6KCpp+Ew4E5fiIo1S68hXEDWTO7bUbkmZCwxNCX97Wk0OxaMAHlo9PQA4X+a OnjlrWOw==; Received: from out2-smtp.messagingengine.com ([66.111.4.26]) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nsyUU-000mss-98 for linux-arm-kernel@lists.infradead.org; Mon, 23 May 2022 03:12:23 +0000 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 22CEC5C0097; Sun, 22 May 2022 23:09:58 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute1.internal (MEProxy); Sun, 22 May 2022 23:09:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm2; t=1653275398; x= 1653361798; bh=dDu98oTe18z7O2jWYV61FHk7bMxBVeuTHkFzuRc4l2I=; b=A 5rzXkf8VEbFuqG3COPwI5cO7JvJl0Xb2zetemlbHxHZzCxZ7U3lay1YkU0JqXIOM BTdSBel30BYkVTnyyoTLf+Y5xAZT/oKCqMFnQJ7/WUCp4eeam/PZBTkM29MuMF6i ++oVd2bkY8cIgZz3YMnXUfElHH7lbd7sgv3vVmQyzngycFGJV74L5Lp3QHM293kV XByYOPcxt5LNBe2smN9nvz5+gY7KxBUUN3IdNoHkcfR1QmYZd1mejLby2T8lXagS /7Hpos7Z8PaYFbRPtdMB+m9+DVXuxOOolKbtroRt2o8tMkxzAZU8DLrhd6W/rq4n z8hKDHWZMeWWSw6nSfGjw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:date:feedback-id:feedback-id:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:sender :subject:subject:to:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; t=1653275398; x=1653361798; bh=d Du98oTe18z7O2jWYV61FHk7bMxBVeuTHkFzuRc4l2I=; b=MU3HsbdjJ0hb6k3X1 LBWxRam/mxTlamL5bIIPM887s1egKMIyLTCvzV3vybwoNDLb4uyeQLp+/aZTnqOl vShHR5wETK4QT1+oVU1a/UCYlnikEM6yvARMzAhoxbEgLzC4tE+wHvSotNYvSob8 OfMLs95sxYz5KR0bLGrd95gGcRWRFhmqBb2D2dpOLLfUQ1BSOulqRbBCCDHPpKwR L5JbFf+nWPz+Y0bsnZ1bMjdkbugWN4yyvhSls2NKp/cZwRvftEijAz74euWSqkZv SeZF1j8TDyQAi15/4mLa8tCA+pMx8rcircBU2u5z4b05lbsXSaxgLVi5ZPSNHYZr 7U48g== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrieelgdeijecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefuvfhfhffkffgfgggjtgfgsehtjeertddtfeejnecuhfhrohhmpefurghmuhgv lhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenucggtf frrghtthgvrhhnpefgveffteelheffjeeukedvkedviedtheevgeefkeehueeiieeuteeu gfettdeggeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhroh hmpehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhg X-ME-Proxy: Feedback-ID: i0ad843c9:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 22 May 2022 23:09:55 -0400 (EDT) Subject: Re: [PATCH v2 1/4] regmap: provide regmap_field helpers for simple bit operations To: Li Chen , Mark Brown , linux-kernel , Greg Kroah-Hartman , "Rafael J. Wysocki" , linux-gpio , Linus Walleij , linux-arm-kernel , Patrice Chotard , linux-sunxi , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Chen-Yu Tsai , Jernej Skrabec , Philipp Zabel References: <180e702a15f.e737e37e45859.3135149506136486394@zohomail.com> <180eeb93909.12110e2de60158.391061173597432851@zohomail.com> <180eeba3811.f7218bc260169.7323954027713751119@zohomail.com> From: Samuel Holland Message-ID: Date: Sun, 22 May 2022 22:09:55 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 In-Reply-To: <180eeba3811.f7218bc260169.7323954027713751119@zohomail.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220523_041220_905695_726517EC X-CRM114-Status: GOOD ( 24.89 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi, On 5/22/22 9:23 PM, Li Chen wrote: > From: Li Chen > > We have set/clear/test operations for regmap, but not for regmap_field yet. > So let's introduce regmap_field helpers too. > > In many instances regmap_field_update_bits() is used for simple bit setting > and clearing. In these cases the last argument is redundant and we can > hide it with a static inline function. > > This adds three new helpers for simple bit operations: set_bits, > clear_bits and test_bits (the last one defined as a regular function). > > Signed-off-by: Li Chen > --- > drivers/base/regmap/regmap.c | 22 +++++++++++++++++++++ > include/linux/regmap.h | 37 ++++++++++++++++++++++++++++++++++++ > 2 files changed, 59 insertions(+) > > diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c > index 5e12f7cb5147..a37d6041b7bd 100644 > --- a/drivers/base/regmap/regmap.c > +++ b/drivers/base/regmap/regmap.c > @@ -2208,6 +2208,28 @@ int regmap_field_update_bits_base(struct regmap_field *field, > } > EXPORT_SYMBOL_GPL(regmap_field_update_bits_base); > > +/** > + * regmap_field_test_bits() - Check if all specified bits are set in a > + * register field. > + * > + * @field: Register field to operate on > + * @bits: Bits to test > + * > + * Returns -1 if the underlying regmap_field_read() fails, 0 if at least one of the > + * tested bits is not set and 1 if all tested bits are set. > + */ > +int regmap_field_test_bits(struct regmap_field *field, unsigned int bits) > +{ > + unsigned int val, ret; > + > + ret = regmap_field_read(field, &val); > + if (ret) > + return ret; > + > + return (val & bits) == bits; > +} > +EXPORT_SYMBOL_GPL(regmap_field_test_bits); > + > /** > * regmap_fields_update_bits_base() - Perform a read/modify/write cycle a > * register field with port ID > diff --git a/include/linux/regmap.h b/include/linux/regmap.h > index de81a94d7b30..10b410734d9e 100644 > --- a/include/linux/regmap.h > +++ b/include/linux/regmap.h > @@ -1324,6 +1324,22 @@ static inline int regmap_field_update_bits(struct regmap_field *field, > NULL, false, false); > } > > +static inline int regmap_field_set_bits(struct regmap_field *field, > + unsigned int bits) > +{ > + return regmap_field_update_bits_base(field, bits, 0, NULL, false, > + false); > +} > + > +static inline int regmap_field_clear_bits(struct regmap_field *field, > + unsigned int bits) > +{ > + return regmap_field_update_bits_base(field, bits, bits, NULL, false, > + false); The contents of these two functions are swapped when compared to their names. Regards, Samuel > +} > + > +int regmap_field_test_bits(struct regmap_field *field, unsigned int bits); > + > static inline int > regmap_field_force_update_bits(struct regmap_field *field, > unsigned int mask, unsigned int val) > @@ -1757,6 +1773,27 @@ regmap_field_force_update_bits(struct regmap_field *field, > return -EINVAL; > } > > +static inline int regmap_field_set_bits(struct regmap_field *field, > + unsigned int bits) > +{ > + WARN_ONCE(1, "regmap API is disabled"); > + return -EINVAL; > +} > + > +static inline int regmap_field_clear_bits(struct regmap_field *field, > + unsigned int bits) > +{ > + WARN_ONCE(1, "regmap API is disabled"); > + return -EINVAL; > +} > + > +static inline int regmap_field_test_bits(struct regmap_field *field, > + unsigned int bits) > +{ > + WARN_ONCE(1, "regmap API is disabled"); > + return -EINVAL; > +} > + > static inline int regmap_fields_write(struct regmap_field *field, > unsigned int id, unsigned int val) > { > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel