Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp2836889ybl; Sun, 26 Jan 2020 11:57:28 -0800 (PST) X-Google-Smtp-Source: APXvYqzWrcl9Bh6020m7DzPQa67WDrt/f5PNWOamqXK0+sl+8w3nfxFEC5jwgGMVGJgukA6JvtTN X-Received: by 2002:a05:6830:1608:: with SMTP id g8mr9764343otr.169.1580068648423; Sun, 26 Jan 2020 11:57:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580068648; cv=none; d=google.com; s=arc-20160816; b=bFTB+Z0deaou5GLUwAogAPNPj261D2EiTts0AP1HX5Knl90EzlvkB/3vbL+hrDLSe4 cobt6a5wcohmJYIxEhkBb+/W1pWpMQIIbxsUGXHoCKPFGsMWnHo6IzFQMZVj7te/ER8b favKLeABjFCynHXanQ55kfQfhMHmtVJJ9PbIBzrVE3L4nQM/GkQxpkQ5xZpvQc1xjUBT FFiVFwQ/08BJIzorXXBzjinWUWU2ktY6eTmmRsaFtIvGX/x/cje8qyIrrE7X1Zx6RoVB V4rK3e97n7/0G7yi2DMUCX8EjIOt6/EMDcT9BgI9HMbty0nehB2bSFj72jCoWnZ2awtd zt8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=Lx1fQhTve1nbBbru9uKUTlLAi6KD+OaXiH29kpBKzw0=; b=j1aWGUEY1bIjzarLuwBwuCEFmk7ch07047siBMPkOVK9XqGA6zeQUOHyYf6+dYpFyH llhrJ2EOSW5ZgMUTT30udu0xAN2Rh69c73z4sAm6zcwBlDXyxXBpYqT4GOYZMGdRvO2C LVKwuR/gTh6gAIK/bI5tRH8lgb7wkcAmVJZ2DPIfrC8ifaKHQ9gg1PMIUXijEcauXJ6J 7BOhS+WlfxccydCI1pBI60LnpF/xUQSW5FE+wLuuYItJXyOWePT8luRgJhtdmvr0VXHy vikhn9Lw2rl4xHW77PJ+h7sq3HmiVXcI3a/ww13H4ZJrGHeGD3+tn9iu/ToRku4jkVoR 4mpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="WgNFjdx/"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g126si2643457oib.105.2020.01.26.11.57.16; Sun, 26 Jan 2020 11:57:28 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="WgNFjdx/"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726548AbgAZT4W (ORCPT + 99 others); Sun, 26 Jan 2020 14:56:22 -0500 Received: from mail-pg1-f193.google.com ([209.85.215.193]:44474 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726087AbgAZT4W (ORCPT ); Sun, 26 Jan 2020 14:56:22 -0500 Received: by mail-pg1-f193.google.com with SMTP id x7so4061937pgl.11 for ; Sun, 26 Jan 2020 11:56:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=Lx1fQhTve1nbBbru9uKUTlLAi6KD+OaXiH29kpBKzw0=; b=WgNFjdx/K7Oy/gpkIYTgTsheoRoGp2nIhySKj8a/8UX4/1M6tLWcoKsUHu7xQ/HeIe 1CWo7n6wb4uWi51iaAT9/8/+JXQKPJ8NfG3IpVdr+89a/EuczEtX6M5BlxKGtbBre69U vjsRtx/uAiii2dQUjQNGfdQr3v2RVU6hfs9Yw5EE/h3tAhgMG73tbgtB4aM9ZxjuFjoB 1OgpUPigqw/raAe2TVKMAFCUcyIwnP82/OPICazQdL96x1iEpGicpo2dqIwI5in7GQYx +WpHogXZC1doDocZkGwdg+rlf08NjdpHn8H7H++eeTNUNuJO8nJewcwp6MP7+sIygqbX mWRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=Lx1fQhTve1nbBbru9uKUTlLAi6KD+OaXiH29kpBKzw0=; b=IXfPaZfDeNPwtCMniQkt9cstPvCQpl1k+QrJcv42OwOWBe5s7nlkAYAPQ1VJ5fR92D S96ceesCH5Sr7LpMKDH7E8Mmv+Kkx+CFKV/j0IdMqzPxWN2t2VZw6VbMLFJlEd5wnTy5 W4Iopqcb6b96mVvSayAgHc1+XP3zkcFzrOjq5NYM1nxhrtWoM18iOC1yYWHHJidb5El3 iQxV4DGeWmrMr7Hf8iO0n6DJX52iFFI+Rg9AoTSeN450QDraYdgBBXNDhUHQEdFH6e6w LDPQ8GViYBJUQxAPJoEgNPsaqXrv3qPkN8qApEObbsX/TBGOOupbX1hZ/Li10bjstex8 qqQA== X-Gm-Message-State: APjAAAUmwIWcEMzRJKqBFJQjxKIbRjr7Hpo62hayyZZsHBYRgTN4hG4g 0bNZVRLAbcBd+UVYUrW1f3E= X-Received: by 2002:a63:4282:: with SMTP id p124mr15182237pga.155.1580068581923; Sun, 26 Jan 2020 11:56:21 -0800 (PST) Received: from localhost ([2001:19f0:6001:12c8:5400:2ff:fe72:6403]) by smtp.gmail.com with ESMTPSA id a2sm13219989pgv.64.2020.01.26.11.56.20 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 26 Jan 2020 11:56:21 -0800 (PST) From: Yangtao Li To: srinivas.kandagatla@linaro.org, linux-kernel@vger.kernel.org Cc: Yangtao Li Subject: [PATCH 1/2] nvmem: core: add nvmem_cell_read_common Date: Sun, 26 Jan 2020 19:56:18 +0000 Message-Id: <20200126195619.27596-1-tiny.windzz@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Now there are nvmem_cell_read_u16 and nvmem_cell_read_u32. They are very similar, let's strip out a common part. And use nvmem_cell_read_common to simplify their implementation. Signed-off-by: Yangtao Li --- drivers/nvmem/core.c | 54 ++++++++++++++++---------------------------- 1 file changed, 19 insertions(+), 35 deletions(-) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index 9f1ee9c766ec..f4226546e49a 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -1071,16 +1071,8 @@ int nvmem_cell_write(struct nvmem_cell *cell, void *buf, size_t len) } EXPORT_SYMBOL_GPL(nvmem_cell_write); -/** - * nvmem_cell_read_u16() - Read a cell value as an u16 - * - * @dev: Device that requests the nvmem cell. - * @cell_id: Name of nvmem cell to read. - * @val: pointer to output value. - * - * Return: 0 on success or negative errno. - */ -int nvmem_cell_read_u16(struct device *dev, const char *cell_id, u16 *val) +static int nvmem_cell_read_common(struct device *dev, const char *cell_id, + void *val, size_t count) { struct nvmem_cell *cell; void *buf; @@ -1095,17 +1087,31 @@ int nvmem_cell_read_u16(struct device *dev, const char *cell_id, u16 *val) nvmem_cell_put(cell); return PTR_ERR(buf); } - if (len != sizeof(*val)) { + if (len != count) { kfree(buf); nvmem_cell_put(cell); return -EINVAL; } - memcpy(val, buf, sizeof(*val)); + memcpy(val, buf, count); kfree(buf); nvmem_cell_put(cell); return 0; } + +/** + * nvmem_cell_read_u16() - Read a cell value as an u16 + * + * @dev: Device that requests the nvmem cell. + * @cell_id: Name of nvmem cell to read. + * @val: pointer to output value. + * + * Return: 0 on success or negative errno. + */ +int nvmem_cell_read_u16(struct device *dev, const char *cell_id, u16 *val) +{ + return nvmem_cell_read_common(dev, cell_id, val, sizeof(*val)); +} EXPORT_SYMBOL_GPL(nvmem_cell_read_u16); /** @@ -1119,29 +1125,7 @@ EXPORT_SYMBOL_GPL(nvmem_cell_read_u16); */ int nvmem_cell_read_u32(struct device *dev, const char *cell_id, u32 *val) { - struct nvmem_cell *cell; - void *buf; - size_t len; - - cell = nvmem_cell_get(dev, cell_id); - if (IS_ERR(cell)) - return PTR_ERR(cell); - - buf = nvmem_cell_read(cell, &len); - if (IS_ERR(buf)) { - nvmem_cell_put(cell); - return PTR_ERR(buf); - } - if (len != sizeof(*val)) { - kfree(buf); - nvmem_cell_put(cell); - return -EINVAL; - } - memcpy(val, buf, sizeof(*val)); - - kfree(buf); - nvmem_cell_put(cell); - return 0; + return nvmem_cell_read_common(dev, cell_id, val, sizeof(*val)); } EXPORT_SYMBOL_GPL(nvmem_cell_read_u32); -- 2.17.1