From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756724AbbFPIyM (ORCPT ); Tue, 16 Jun 2015 04:54:12 -0400 Received: from relmlor2.renesas.com ([210.160.252.172]:28863 "EHLO relmlie1.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932254AbbFPIwn (ORCPT ); Tue, 16 Jun 2015 04:52:43 -0400 X-IronPort-AV: E=Sophos;i="5.13,625,1427727600"; d="scan'";a="189585202" Authentication-Results: kernel.org; dkim=none (message not signed) header.d=none; Message-ID: <87381sjauv.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH 2/4][RFC] regmap: add regmap_write_bits() User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 To: Mark Brown CC: Linux-Kernel , Greg KH , shiiba In-Reply-To: <87616ojaw9.wl%kuninori.morimoto.gx@renesas.com> References: <87616ojaw9.wl%kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset="US-ASCII" Date: Tue, 16 Jun 2015 08:52:39 +0000 X-Originating-IP: [211.11.155.132] X-ClientProxiedBy: OS2PR01CA0020.jpnprd01.prod.outlook.com (25.161.74.158) To SIXPR06MB319.apcprd06.prod.outlook.com (10.141.125.145) X-Microsoft-Exchange-Diagnostics: 1;SIXPR06MB319;2:MWTBtUnP2TCLhEMdvOiy/L8LjIr3i/pCtIm3xozMlag43JBaXVW38khycQ/Cirpg;2:MzqX8zJynwk6zrETLdfhFeIqmYJAwKRiRYhSDjPAY5YoPmoK5yBJgmlWuKif07w3jT36qd4BHHFLOUE2oBphLjY7xkO+mUOBDHawhzKUDuwUQW4CJffuqvfS0lAGeTK8GH2Ki1VKIMSN/PPQB1w+hw==;6:R4OqjVs0vxpAUfMBC+bUAR9PzZSodiYBXUlINOIqS3qB+M3HwCpu8s5vBEjEf7yjbfky4pMPeU1wjMnEgLX9NRXHYO6hywEANMMBJmYpAgtRoTgN1Yx7V/pX+ZwLV65jaAql4m/aEFZQzTOmgZv+u0nVwy1bz4e5UpeKId3wdblCkMLO+7/0r4IMnmThP9LhsOYerS5O8M05rnsL6BaKAscFNuL/J/J72Df107czHnd3loslpARuQcB0HBZ0uPsC9/mo0yfTwwJWcOXWUarn6XLDF22yRCiLobut/MMxTlrzNCvrBTN5XAPqCedDJXrGZZ5vxbAnXOHeFLY8zhUcCFWTg7zMh+N7Uc6sPBz6dG3pXzrZNyvGsA5jgq4D8py1QSrIRAKnfGZ1R/TX4eUQ/0SQFtwR6iLwjmWvjm+BmTswRBIpwEJ5XN85ywjPq8ZoYfFOpQEwWo5t0fPzGeL7Y6iworc/j++jX4V+Vnn86RRVHhr05ewXObFMs5jD2JgB X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SIXPR06MB319; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(520003)(5005006)(3002001);SRVR:SIXPR06MB319;BCL:0;PCL:0;RULEID:;SRVR:SIXPR06MB319; X-Microsoft-Exchange-Diagnostics: 1;SIXPR06MB319;3:zdbF6/n0ojZDO+Gljs8/ACyL6HTQRaEJZ2CdZ7wWwcHNcD9ctelCWUnwzCzsUkdjdDd7HMPUq14UrCX9N0CMaZN37I6ipW7jf0NTb+g3+HMC/aE3Zt53YPsWuPzXymuQC3Glq72P33FxoWKdac9965u2U7xH9+qOucG9dVJAcI74fBd/N93aV/ogBMekq7FVgedTf9oc7/AsZfBXlMfY4mViAy0WPnk0/2YKzjIzg8tzSQHD1c9zKAUPO5F5Nbn3/L06vMvIOy5QTmShPqrnx/4eu5nrFdhvc+0wyezf4+lGzAVdw27nfgPfQ2OBTkqo X-Forefront-PRVS: 06098A2863 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(50986999)(40100003)(83506001)(77156002)(46406003)(50466002)(2950100001)(54356999)(76176999)(86362001)(87976001)(66066001)(77096005)(47776003)(46102003)(23726002)(189998001)(4001350100001)(19580405001)(53416004)(110136002)(5001920100001)(107886002)(92566002)(42186005)(19580395003)(5001960100002)(36756003)(33646002)(229853001)(122386002)(4001430100001);DIR:OUT;SFP:1102;SCL:1;SRVR:SIXPR06MB319;H:morimoto-PC.renesas.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;SIXPR06MB319;9:TJt6UFzeARUm15TB5O0uJWD0rJdDtent7tvJ9ulj64f51s4gcrRxvFixVaZIj6GDiV3bNk+Sm6cvltoEo0gjW13Sf3eA56TzvpFzrH2iqbrLDu2+5gSx5Y6f8l6Kc1+gOE2MWKk3zdSIaNRoam8HS/EcuIau+kvEFY+oJsvWYunIFbQZO9KtSbixBmoJCEQTeuOmJ1YwaQTi/AskpHbejS0wlU0tqrWhdeFtDDxRVZuf3688IIWtXmCWVAW5hkT+yqkQdKE318sn4UMfmKpv3akg38zpmisCDmfxRMZE54CN/mH6+Tz89mL1T3I5dn9pyf75JrTgq2uw8L5WzCUEzMWyVWxObgGdceQw3Zf8k9T/AJz5HfMxNGIZdMhIqW8DtIqFRyAQrWgBAfYk7oWtXMwWMHJiteJCeKSCmQwre+b+jLGQePKpmT+FcvWxkGS871ve5NtJNEGEN/eNF+aaXm9pLMRhY8IKKh4+itroFkj8H0jjhPHi96ZCk74M/GPVghLtxDeDBme6COhjphIgMLre/7ROhD9tKwXS9YMhiTVaCjVL1VA6mkvNWZh11tvGr3zw3bJibhaisv6pOZmaCv8HVPqQO/fMmyWRhDbBiFvU5xz+L6/7mXbuTD8s3Pi0mWzhPmpBcYze/sZNKJqGaJGENEerjTlANNBkto4m1kCeFTjdPxotu2eon3TKsgYUV74QiRA+c7V5Fa4h/7buUyM+PAzBupmNtzzUGhTr2vFaAurwDX3Pks2PZtjZwGcpu4DEzOinmLV8y3LQpvwWV138mpXcbKukDzhROwwH7HHet8VpkBvFDtREc7NIkn2/zmWAPqx7VkPrEOHnvUYhjucVQwGJEHHvXYJLvN+rCJRKbBs/NNgMZrChBGBnEXriSbTBK6ZA80dSUJ0tIt2rWBBN6o86atQXbj/yWKsrZmk= X-Microsoft-Exchange-Diagnostics: 1;SIXPR06MB319;3:i7UWBUg5GfznmpPQ+cVW/LpMikkwUONenPdaT4FR9i+Y2OVloTdkzbZmTg4ihCfWYVx8tj1P0aVZM6yZ74TOuy3O0UABdkh/VGpByBzmdmMYmnFOmpJQ5akrfh8JEJvjwtcZ1JoDoFNA6Sr7C53oYQ==;10:uS5zc4DCRgH5C8I2/xRk7DRRI7/GUBmL38kwTlacuNo/1L8P2T5Nb8sKihq1Ojj6emVzPqtZUWxhB01eG+j9IwWhnzYUqeJRzBwPKWaBAd0=;6:auqQQEZk19uJ4VvRYgyhTXIjhCCK7bozhFlpVscQKAQYHZch2yXK7rf0Pwf0JYsiL3jPUD4fRFXZKgpwf7iP/amgo7oEyFTAp5+HfaFxfGWKDDt0x6t+e21+7ofwOGtIfX5Q8PbSKelc4TYFjVXNOg== X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2015 08:52:39.7247 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SIXPR06MB319 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org regmap_write_bits() is similar to regmap_update_bits(), but regmap_write_bits() write data to register even though it is same value. Signed-off-by: Kuninori Morimoto --- drivers/base/regmap/regmap.c | 23 +++++++++++++++++++++++ include/linux/regmap.h | 9 +++++++++ 2 files changed, 32 insertions(+) diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c index beb98c6..a5bb3fa 100644 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c @@ -2376,6 +2376,29 @@ int regmap_update_bits(struct regmap *map, unsigned int reg, EXPORT_SYMBOL_GPL(regmap_update_bits); /** + * regmap_write_bits: Perform a read/modify/write cycle on the register map + * + * @map: Register map to update + * @reg: Register to update + * @mask: Bitmask to change + * @val: New value for bitmask + * + * Returns zero for success, a negative number on error. + */ +int regmap_write_bits(struct regmap *map, unsigned int reg, + unsigned int mask, unsigned int val) +{ + int ret; + + map->lock(map->lock_arg); + ret = _regmap_update_bits(map, reg, mask, val, NULL, true); + map->unlock(map->lock_arg); + + return ret; +} +EXPORT_SYMBOL_GPL(regmap_write_bits); + +/** * regmap_update_bits_async: Perform a read/modify/write cycle on the register * map asynchronously * diff --git a/include/linux/regmap.h b/include/linux/regmap.h index 59c55ea..e4b9ad4 100644 --- a/include/linux/regmap.h +++ b/include/linux/regmap.h @@ -424,6 +424,8 @@ int regmap_bulk_read(struct regmap *map, unsigned int reg, void *val, size_t val_count); int regmap_update_bits(struct regmap *map, unsigned int reg, unsigned int mask, unsigned int val); +int regmap_write_bits(struct regmap *map, unsigned int reg, + unsigned int mask, unsigned int val); int regmap_update_bits_async(struct regmap *map, unsigned int reg, unsigned int mask, unsigned int val); int regmap_update_bits_check(struct regmap *map, unsigned int reg, @@ -645,6 +647,13 @@ static inline int regmap_update_bits(struct regmap *map, unsigned int reg, return -EINVAL; } +static inline int regmap_write_bits(struct regmap *map, unsigned int reg, + unsigned int mask, unsigned int val) +{ + WARN_ONCE(1, "regmap API is disabled"); + return -EINVAL; +} + static inline int regmap_update_bits_async(struct regmap *map, unsigned int reg, unsigned int mask, unsigned int val) -- 1.9.1