From patchwork Sun Apr 24 19:28:13 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Srinivas Kandagatla X-Patchwork-Id: 66535 Delivered-To: patch@linaro.org Received: by 10.140.93.198 with SMTP id d64csp696388qge; Sun, 24 Apr 2016 12:29:05 -0700 (PDT) X-Received: by 10.66.254.74 with SMTP id ag10mr43619637pad.106.1461526144828; Sun, 24 Apr 2016 12:29:04 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l24si6328273pfb.246.2016.04.24.12.29.04; Sun, 24 Apr 2016 12:29:04 -0700 (PDT) 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=@linaro.org; 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 dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753279AbcDXT2t (ORCPT + 29 others); Sun, 24 Apr 2016 15:28:49 -0400 Received: from mail-wm0-f42.google.com ([74.125.82.42]:37868 "EHLO mail-wm0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753254AbcDXT2q (ORCPT ); Sun, 24 Apr 2016 15:28:46 -0400 Received: by mail-wm0-f42.google.com with SMTP id n3so97910468wmn.0 for ; Sun, 24 Apr 2016 12:28:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=lxOQx9XcygzQIdKHzZaCtzRfp1SU7nNhKSwuizF7x4Y=; b=QY8puruNmNK6eOQISw2k2o2RHrCh12OwSAeQk50BzUoabXAToelLGupuJm0xejnvRR oY72+N4a8lTV7jqGoUnUx5f7AChPrA9SV1YKmP16LDynKNsd8m6ACwPxHTrwCLVtqIj0 kUxF3zatmeaPZOmQZqHSgQ0tl+jj9ezOM3QH4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=lxOQx9XcygzQIdKHzZaCtzRfp1SU7nNhKSwuizF7x4Y=; b=THFDywWKoNo0f0T9sqfPKlND/twmoTP5SP8/xQ3genJJleSvFDQyy/2JNOayBkAW8I /JBIDu35ZmB8b8ILvF8vc7WHIkJs1hObTQhe7TUi5l/IOZgrcngXwZ1KncqWpnulcQD2 3Lhvfrpa7EF8Gd6x5RD04N+kpDNkkEuFp4oQ6a0OX9YvVbmjmcyyCESbQ8KHpYty8caZ ytPSmr7rNC0sEHzTDO0MXumDvqIytoNlN+ny0gGg8tplChRgiaqynQrysL3jGrDeDPbC OOv1ZpPWn1pSiGMs0SlXiG1UmN5xdDRypvm+iU0qRqNxQ4PiNfKPQcOivy0rU2eyN7SR LZaA== X-Gm-Message-State: AOPr4FWRYWYeMbB7wqw+GqjqxG4vH1OXo1GovkT3JuCtsuZcO5mIfqTWOiJH8XFHnXWKnLM1 X-Received: by 10.194.124.243 with SMTP id ml19mr34588841wjb.80.1461526124522; Sun, 24 Apr 2016 12:28:44 -0700 (PDT) Received: from localhost.localdomain (host-92-17-247-99.as13285.net. [92.17.247.99]) by smtp.gmail.com with ESMTPSA id q127sm15007708wmd.13.2016.04.24.12.28.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 24 Apr 2016 12:28:43 -0700 (PDT) From: Srinivas Kandagatla To: Greg Kroah-Hartman Cc: Wolfram Sang , Srinivas Kandagatla , Maxime Ripard , Joachim Eastwood , Matthias Brugger , Heiko Stuebner , Chen-Yu Tsai , linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-rockchip@lists.infradead.org, Mark Brown , andrew@lunn.ch Subject: [PATCH 09/12] nvmem: imx-ocotp: remove nvmem regmap dependency Date: Sun, 24 Apr 2016 20:28:13 +0100 Message-Id: <1461526096-29584-10-git-send-email-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1461526096-29584-1-git-send-email-srinivas.kandagatla@linaro.org> References: <1461526096-29584-1-git-send-email-srinivas.kandagatla@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch moves to nvmem support in the driver to use callback instead of regmap. Signed-off-by: Srinivas Kandagatla --- drivers/nvmem/imx-ocotp.c | 55 ++++++++++------------------------------------- 1 file changed, 11 insertions(+), 44 deletions(-) -- 2.5.0 diff --git a/drivers/nvmem/imx-ocotp.c b/drivers/nvmem/imx-ocotp.c index d7796eb..75e66ef 100644 --- a/drivers/nvmem/imx-ocotp.c +++ b/drivers/nvmem/imx-ocotp.c @@ -22,7 +22,6 @@ #include #include #include -#include #include struct ocotp_priv { @@ -31,59 +30,34 @@ struct ocotp_priv { unsigned int nregs; }; -static int imx_ocotp_read(void *context, const void *reg, size_t reg_size, - void *val, size_t val_size) +static int imx_ocotp_read(void *context, unsigned int offset, + void *val, size_t bytes) { struct ocotp_priv *priv = context; - unsigned int offset = *(u32 *)reg; unsigned int count; + u32 *buf = val; int i; u32 index; index = offset >> 2; - count = val_size >> 2; + count = bytes >> 2; if (count > (priv->nregs - index)) count = priv->nregs - index; - for (i = index; i < (index + count); i++) { - *(u32 *)val = readl(priv->base + 0x400 + i * 0x10); - val += 4; - } + for (i = index; i < (index + count); i++) + *buf++ = readl(priv->base + 0x400 + i * 0x10); return 0; } -static int imx_ocotp_write(void *context, const void *data, size_t count) -{ - /* Not implemented */ - return 0; -} - -static struct regmap_bus imx_ocotp_bus = { - .read = imx_ocotp_read, - .write = imx_ocotp_write, - .reg_format_endian_default = REGMAP_ENDIAN_NATIVE, - .val_format_endian_default = REGMAP_ENDIAN_NATIVE, -}; - -static bool imx_ocotp_writeable_reg(struct device *dev, unsigned int reg) -{ - return false; -} - -static struct regmap_config imx_ocotp_regmap_config = { - .reg_bits = 32, - .val_bits = 32, - .reg_stride = 4, - .writeable_reg = imx_ocotp_writeable_reg, - .name = "imx-ocotp", -}; - static struct nvmem_config imx_ocotp_nvmem_config = { .name = "imx-ocotp", .read_only = true, + .word_size = 4, + .stride = 4, .owner = THIS_MODULE, + .reg_read = imx_ocotp_read, }; static const struct of_device_id imx_ocotp_dt_ids[] = { @@ -99,7 +73,6 @@ static int imx_ocotp_probe(struct platform_device *pdev) const struct of_device_id *of_id; struct device *dev = &pdev->dev; struct resource *res; - struct regmap *regmap; struct ocotp_priv *priv; struct nvmem_device *nvmem; @@ -114,15 +87,9 @@ static int imx_ocotp_probe(struct platform_device *pdev) of_id = of_match_device(imx_ocotp_dt_ids, dev); priv->nregs = (unsigned int)of_id->data; - imx_ocotp_regmap_config.max_register = 4 * priv->nregs - 4; - - regmap = devm_regmap_init(dev, &imx_ocotp_bus, priv, - &imx_ocotp_regmap_config); - if (IS_ERR(regmap)) { - dev_err(dev, "regmap init failed\n"); - return PTR_ERR(regmap); - } + imx_ocotp_nvmem_config.size = 4 * priv->nregs; imx_ocotp_nvmem_config.dev = dev; + imx_ocotp_nvmem_config.priv = priv; nvmem = nvmem_register(&imx_ocotp_nvmem_config); if (IS_ERR(nvmem)) return PTR_ERR(nvmem);