Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751799AbbFXF2G (ORCPT ); Wed, 24 Jun 2015 01:28:06 -0400 Received: from mail-pd0-f172.google.com ([209.85.192.172]:33947 "EHLO mail-pd0-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750937AbbFXF16 (ORCPT ); Wed, 24 Jun 2015 01:27:58 -0400 Date: Wed, 24 Jun 2015 10:55:13 +0530 From: maitysanchayan@gmail.com To: Srinivas Kandagatla Cc: linux-arm-kernel@lists.infradead.org, maxime.ripard@free-electrons.com, shawn.guo@linaro.org, arnd@arndb.de, kernel@pengutronix.de, stefan@agner.ch, linux-kernel@vger.kernel.org Subject: Re: [RFC PATCH v6 2/2] nvmem: Add Vybrid OCOTP and OCROM support Message-ID: <20150624052513.GB11753@Sanchayan-Arch.toradex.int> References: <5589AD83.8050704@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <5589AD83.8050704@linaro.org> User-Agent: Mutt/1.5.23+89 (0255b37be491) (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 5257 Lines: 165 Hello Srinivas, On 15-06-23 20:03:31, Srinivas Kandagatla wrote: > Hi Sanchayan, > > > On 23/06/15 14:44, Sanchayan Maity wrote: > >The patch adds support for the On Chip One Time Programmable Peripheral > >(OCOTP) and On Chip ROM (OCROM) support. > > > >On Vybrid OCOTP contain data like SoC ID, MAC address and OCROM has the > >revision ID. > > > >Signed-off-by: Sanchayan Maity > >--- > > drivers/nvmem/Kconfig | 11 +++++++++ > > drivers/nvmem/Makefile | 2 ++ > > drivers/nvmem/vf610-ocotp.c | 60 +++++++++++++++++++++++++++++++++++++++++++++ > > 3 files changed, 73 insertions(+) > > create mode 100644 drivers/nvmem/vf610-ocotp.c > > > > Fantastic! diff is already looking good, when compared to v5 patches, > "drivers/soc/fsl/soc-vf610.c | 166 > +++++++++++++++++++++++++++++++++++++++++++" Yes :) > > I think, We could even do a better job by moving qfprom and this driver to a > simple-mmio-nvmem provider, see below comments. > > >diff --git a/drivers/nvmem/Kconfig b/drivers/nvmem/Kconfig > >index 17f1a57..557c1e0 100644 > >--- a/drivers/nvmem/Kconfig > >+++ b/drivers/nvmem/Kconfig > >@@ -33,4 +33,15 @@ config NVMEM_SUNXI_SID > > This driver can also be built as a module. If so, the module > > will be called eeprom-sunxi-sid. > > > >+config NVMEM_VF610_OCOTP > >+ tristate "VF610 SoCs OCOTP support" > >+ depends on SOC_VF610 > >+ select REGMAP_MMIO > >+ help > >+ This is a driver for the 'OCOTP' available on various Vybrid > >+ devices. > >+ > >+ This driver can also be built as a module. If so, the module > >+ will be called nvmem-vf610-ocotp. > >+ > > endif > >diff --git a/drivers/nvmem/Makefile b/drivers/nvmem/Makefile > >index cc46791..a9ed113 100644 > >--- a/drivers/nvmem/Makefile > >+++ b/drivers/nvmem/Makefile > >@@ -11,3 +11,5 @@ obj-$(CONFIG_QCOM_QFPROM) += nvmem_qfprom.o > > nvmem_qfprom-y := qfprom.o > > obj-$(CONFIG_NVMEM_SUNXI_SID) += nvmem-sunxi-sid.o > > nvmem-sunxi-sid-y := sunxi-sid.o > >+obj-$(CONFIG_NVMEM_VF610_OCOTP) += nvmem-vf610-ocotp.o > >+nvmem-vf610-ocotp-y := vf610-ocotp.o > >diff --git a/drivers/nvmem/vf610-ocotp.c b/drivers/nvmem/vf610-ocotp.c > >new file mode 100644 > >index 0000000..d98772d > >--- /dev/null > >+++ b/drivers/nvmem/vf610-ocotp.c > >@@ -0,0 +1,60 @@ > >+/* > >+ * Copyright (C) 2015 Sanchayan Maity > >+ * > >+ * This program is free software; you can redistribute it and/or modify > >+ * it under the terms of the GNU General Public License version 2 and > >+ * only version 2 as published by the Free Software Foundation. > >+ * > >+ * This program is distributed in the hope that it will be useful, > >+ * but WITHOUT ANY WARRANTY; without even the implied warranty of > >+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > >+ * GNU General Public License for more details. > >+ */ > >+ > >+#include > >+#include > >+#include "nvmem-mmio.h" > >+ > >+static struct regmap_config regmap_config = { > >+ .reg_bits = 32, > >+ .val_bits = 32, > >+ .reg_stride = 4, > > Any particular reason why it cant support byte reads? > > This driver looks exactly same as qcom,qfprom driver, except the > regmap_config. It does support byte reads. This works as well static struct regmap_config regmap_config = { .reg_bits = 32, .val_bits = 8, .reg_stride = 1, }; } Hmm can't recall why I went with that. Yes it is more or less the same as qcom,qfprom driver, that's what I referred. > > >+}; > >+ > >+static struct nvmem_config ocotp_config = { > >+ .name = "soc_id", > >+}; > >+ > >+static struct nvmem_config rom_config = { > >+ .name = "rom_rev", > >+}; > >+ > >+static struct nvmem_mmio_data ocotp_data = { > >+ .nvmem_config = &ocotp_config, > >+ .regmap_config = ®map_config, > >+}; > >+ > >+static struct nvmem_mmio_data rom_data = { > >+ .nvmem_config = &rom_config, > >+ .regmap_config = ®map_config, > >+}; > >+ > >+static const struct of_device_id ocotp_of_match[] = { > >+ { .compatible = "fsl,vf610-ocotp", .data = &ocotp_data}, > >+ { .compatible = "fsl,vf610-ocrom", .data = &rom_data}, > >+ {/* sentinel */}, > >+}; > >+MODULE_DEVICE_TABLE(of, ocotp_of_match); > >+ > >+static struct platform_driver vf610_ocotp_driver = { > >+ .probe = nvmem_mmio_probe, > >+ .remove = nvmem_mmio_remove, > >+ .driver = { > >+ .name = "vf610-nvmem", > >+ .of_match_table = ocotp_of_match, > >+ }, > >+}; > >+module_platform_driver(vf610_ocotp_driver); > >+MODULE_AUTHOR("Sanchayan Maity "); > >+MODULE_DESCRIPTION("Vybrid NVMEM driver"); > >+MODULE_LICENSE("GPL v2"); > > > > > I moved the nvmem_mmio to qfprom as I did not any other user for that in v6 > patches. > > Now that Vybrid can be another user I should probably put it back, or may be > I should create a simple-mmio-nvmem driver which both qcom,qfprom and Vybrid > can use. Nice, then that would simplify things further from what I understand at the moment. - Sanchayan. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/