All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafał Miłecki" <zajec5@gmail.com>
To: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
Cc: "Matthias Brugger" <matthias.bgg@gmail.com>,
	"Kunihiko Hayashi" <hayashi.kunihiko@socionext.com>,
	"Masami Hiramatsu" <mhiramat@kernel.org>,
	linux-mediatek@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, "Rafał Miłecki" <rafal@milecki.pl>
Subject: [PATCH 3/4] nvmem: mtk-efuse: replace driver with a generic MMIO one
Date: Wed,  1 Feb 2023 07:47:16 +0100	[thread overview]
Message-ID: <20230201064717.18410-4-zajec5@gmail.com> (raw)
In-Reply-To: <20230201064717.18410-1-zajec5@gmail.com>

From: Rafał Miłecki <rafal@milecki.pl>

Mediatek EFUSE uses a simple MMIO that can be handled with a generic
driver. Replace this driver to avoid code duplication.

Keep Kconfig symbol for a release or two to help with "make oldconfig".

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
 drivers/nvmem/Kconfig     |  7 ++-
 drivers/nvmem/Makefile    |  2 -
 drivers/nvmem/mmio.c      |  3 ++
 drivers/nvmem/mtk-efuse.c | 97 ---------------------------------------
 4 files changed, 6 insertions(+), 103 deletions(-)
 delete mode 100644 drivers/nvmem/mtk-efuse.c

diff --git a/drivers/nvmem/Kconfig b/drivers/nvmem/Kconfig
index 9eb5e93f0455..4d652c7382a6 100644
--- a/drivers/nvmem/Kconfig
+++ b/drivers/nvmem/Kconfig
@@ -184,12 +184,11 @@ config NVMEM_MTK_EFUSE
 	tristate "Mediatek SoCs EFUSE support"
 	depends on ARCH_MEDIATEK || COMPILE_TEST
 	depends on HAS_IOMEM
+	select NVMEM_MMIO
 	help
-	  This is a driver to access hardware related data like sensor
-	  calibration, HDMI impedance etc.
+	  This driver has been replaced by a generic MMIO implementation.
 
-	  This driver can also be built as a module. If so, the module
-	  will be called efuse-mtk.
+	  Update your config as this symbol will be dropped in the next release.
 
 config NVMEM_MXS_OCOTP
 	tristate "Freescale MXS On-Chip OTP Memory Support"
diff --git a/drivers/nvmem/Makefile b/drivers/nvmem/Makefile
index 2f2bed7cdf24..7a8e29ea408e 100644
--- a/drivers/nvmem/Makefile
+++ b/drivers/nvmem/Makefile
@@ -38,8 +38,6 @@ obj-$(CONFIG_NVMEM_MICROCHIP_OTPC)	+= nvmem-microchip-otpc.o
 nvmem-microchip-otpc-y			:= microchip-otpc.o
 obj-$(CONFIG_NVMEM_MMIO)		+= nvmem-mmio.o
 nvmem-mmio-y				:= mmio.o
-obj-$(CONFIG_NVMEM_MTK_EFUSE)		+= nvmem_mtk-efuse.o
-nvmem_mtk-efuse-y			:= mtk-efuse.o
 obj-$(CONFIG_NVMEM_MXS_OCOTP)		+= nvmem-mxs-ocotp.o
 nvmem-mxs-ocotp-y			:= mxs-ocotp.o
 obj-$(CONFIG_NVMEM_NINTENDO_OTP)	+= nvmem-nintendo-otp.o
diff --git a/drivers/nvmem/mmio.c b/drivers/nvmem/mmio.c
index 19c8880dc675..253ade72e0c3 100644
--- a/drivers/nvmem/mmio.c
+++ b/drivers/nvmem/mmio.c
@@ -57,6 +57,9 @@ static int mmio_nvmem_probe(struct platform_device *pdev)
 
 static const struct of_device_id mmio_nvmem_of_match_table[] = {
 	{ .compatible = "mmio-nvmem", },
+	/* Custom bindings that were introduced before the mmio one */
+	{ .compatible = "mediatek,mt8173-efuse", },
+	{ .compatible = "mediatek,efuse", },
 	{},
 };
 
diff --git a/drivers/nvmem/mtk-efuse.c b/drivers/nvmem/mtk-efuse.c
deleted file mode 100644
index a08e0aedd21c..000000000000
--- a/drivers/nvmem/mtk-efuse.c
+++ /dev/null
@@ -1,97 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (c) 2015 MediaTek Inc.
- * Author: Andrew-CT Chen <andrew-ct.chen@mediatek.com>
- */
-
-#include <linux/device.h>
-#include <linux/module.h>
-#include <linux/mod_devicetable.h>
-#include <linux/io.h>
-#include <linux/nvmem-provider.h>
-#include <linux/platform_device.h>
-
-struct mtk_efuse_priv {
-	void __iomem *base;
-};
-
-static int mtk_reg_read(void *context,
-			unsigned int reg, void *_val, size_t bytes)
-{
-	struct mtk_efuse_priv *priv = context;
-	void __iomem *addr = priv->base + reg;
-	u8 *val = _val;
-	int i;
-
-	for (i = 0; i < bytes; i++, val++)
-		*val = readb(addr + i);
-
-	return 0;
-}
-
-static int mtk_efuse_probe(struct platform_device *pdev)
-{
-	struct device *dev = &pdev->dev;
-	struct resource *res;
-	struct nvmem_device *nvmem;
-	struct nvmem_config econfig = {};
-	struct mtk_efuse_priv *priv;
-
-	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
-	if (!priv)
-		return -ENOMEM;
-
-	priv->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
-	if (IS_ERR(priv->base))
-		return PTR_ERR(priv->base);
-
-	econfig.stride = 1;
-	econfig.word_size = 1;
-	econfig.reg_read = mtk_reg_read;
-	econfig.size = resource_size(res);
-	econfig.priv = priv;
-	econfig.dev = dev;
-	nvmem = devm_nvmem_register(dev, &econfig);
-
-	return PTR_ERR_OR_ZERO(nvmem);
-}
-
-static const struct of_device_id mtk_efuse_of_match[] = {
-	{ .compatible = "mediatek,mt8173-efuse",},
-	{ .compatible = "mediatek,efuse",},
-	{/* sentinel */},
-};
-MODULE_DEVICE_TABLE(of, mtk_efuse_of_match);
-
-static struct platform_driver mtk_efuse_driver = {
-	.probe = mtk_efuse_probe,
-	.driver = {
-		.name = "mediatek,efuse",
-		.of_match_table = mtk_efuse_of_match,
-	},
-};
-
-static int __init mtk_efuse_init(void)
-{
-	int ret;
-
-	ret = platform_driver_register(&mtk_efuse_driver);
-	if (ret) {
-		pr_err("Failed to register efuse driver\n");
-		return ret;
-	}
-
-	return 0;
-}
-
-static void __exit mtk_efuse_exit(void)
-{
-	return platform_driver_unregister(&mtk_efuse_driver);
-}
-
-subsys_initcall(mtk_efuse_init);
-module_exit(mtk_efuse_exit);
-
-MODULE_AUTHOR("Andrew-CT Chen <andrew-ct.chen@mediatek.com>");
-MODULE_DESCRIPTION("Mediatek EFUSE driver");
-MODULE_LICENSE("GPL v2");
-- 
2.34.1


WARNING: multiple messages have this Message-ID (diff)
From: "Rafał Miłecki" <zajec5@gmail.com>
To: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
Cc: "Matthias Brugger" <matthias.bgg@gmail.com>,
	"Kunihiko Hayashi" <hayashi.kunihiko@socionext.com>,
	"Masami Hiramatsu" <mhiramat@kernel.org>,
	linux-mediatek@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, "Rafał Miłecki" <rafal@milecki.pl>
Subject: [PATCH 3/4] nvmem: mtk-efuse: replace driver with a generic MMIO one
Date: Wed,  1 Feb 2023 07:47:16 +0100	[thread overview]
Message-ID: <20230201064717.18410-4-zajec5@gmail.com> (raw)
In-Reply-To: <20230201064717.18410-1-zajec5@gmail.com>

From: Rafał Miłecki <rafal@milecki.pl>

Mediatek EFUSE uses a simple MMIO that can be handled with a generic
driver. Replace this driver to avoid code duplication.

Keep Kconfig symbol for a release or two to help with "make oldconfig".

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
 drivers/nvmem/Kconfig     |  7 ++-
 drivers/nvmem/Makefile    |  2 -
 drivers/nvmem/mmio.c      |  3 ++
 drivers/nvmem/mtk-efuse.c | 97 ---------------------------------------
 4 files changed, 6 insertions(+), 103 deletions(-)
 delete mode 100644 drivers/nvmem/mtk-efuse.c

diff --git a/drivers/nvmem/Kconfig b/drivers/nvmem/Kconfig
index 9eb5e93f0455..4d652c7382a6 100644
--- a/drivers/nvmem/Kconfig
+++ b/drivers/nvmem/Kconfig
@@ -184,12 +184,11 @@ config NVMEM_MTK_EFUSE
 	tristate "Mediatek SoCs EFUSE support"
 	depends on ARCH_MEDIATEK || COMPILE_TEST
 	depends on HAS_IOMEM
+	select NVMEM_MMIO
 	help
-	  This is a driver to access hardware related data like sensor
-	  calibration, HDMI impedance etc.
+	  This driver has been replaced by a generic MMIO implementation.
 
-	  This driver can also be built as a module. If so, the module
-	  will be called efuse-mtk.
+	  Update your config as this symbol will be dropped in the next release.
 
 config NVMEM_MXS_OCOTP
 	tristate "Freescale MXS On-Chip OTP Memory Support"
diff --git a/drivers/nvmem/Makefile b/drivers/nvmem/Makefile
index 2f2bed7cdf24..7a8e29ea408e 100644
--- a/drivers/nvmem/Makefile
+++ b/drivers/nvmem/Makefile
@@ -38,8 +38,6 @@ obj-$(CONFIG_NVMEM_MICROCHIP_OTPC)	+= nvmem-microchip-otpc.o
 nvmem-microchip-otpc-y			:= microchip-otpc.o
 obj-$(CONFIG_NVMEM_MMIO)		+= nvmem-mmio.o
 nvmem-mmio-y				:= mmio.o
-obj-$(CONFIG_NVMEM_MTK_EFUSE)		+= nvmem_mtk-efuse.o
-nvmem_mtk-efuse-y			:= mtk-efuse.o
 obj-$(CONFIG_NVMEM_MXS_OCOTP)		+= nvmem-mxs-ocotp.o
 nvmem-mxs-ocotp-y			:= mxs-ocotp.o
 obj-$(CONFIG_NVMEM_NINTENDO_OTP)	+= nvmem-nintendo-otp.o
diff --git a/drivers/nvmem/mmio.c b/drivers/nvmem/mmio.c
index 19c8880dc675..253ade72e0c3 100644
--- a/drivers/nvmem/mmio.c
+++ b/drivers/nvmem/mmio.c
@@ -57,6 +57,9 @@ static int mmio_nvmem_probe(struct platform_device *pdev)
 
 static const struct of_device_id mmio_nvmem_of_match_table[] = {
 	{ .compatible = "mmio-nvmem", },
+	/* Custom bindings that were introduced before the mmio one */
+	{ .compatible = "mediatek,mt8173-efuse", },
+	{ .compatible = "mediatek,efuse", },
 	{},
 };
 
diff --git a/drivers/nvmem/mtk-efuse.c b/drivers/nvmem/mtk-efuse.c
deleted file mode 100644
index a08e0aedd21c..000000000000
--- a/drivers/nvmem/mtk-efuse.c
+++ /dev/null
@@ -1,97 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (c) 2015 MediaTek Inc.
- * Author: Andrew-CT Chen <andrew-ct.chen@mediatek.com>
- */
-
-#include <linux/device.h>
-#include <linux/module.h>
-#include <linux/mod_devicetable.h>
-#include <linux/io.h>
-#include <linux/nvmem-provider.h>
-#include <linux/platform_device.h>
-
-struct mtk_efuse_priv {
-	void __iomem *base;
-};
-
-static int mtk_reg_read(void *context,
-			unsigned int reg, void *_val, size_t bytes)
-{
-	struct mtk_efuse_priv *priv = context;
-	void __iomem *addr = priv->base + reg;
-	u8 *val = _val;
-	int i;
-
-	for (i = 0; i < bytes; i++, val++)
-		*val = readb(addr + i);
-
-	return 0;
-}
-
-static int mtk_efuse_probe(struct platform_device *pdev)
-{
-	struct device *dev = &pdev->dev;
-	struct resource *res;
-	struct nvmem_device *nvmem;
-	struct nvmem_config econfig = {};
-	struct mtk_efuse_priv *priv;
-
-	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
-	if (!priv)
-		return -ENOMEM;
-
-	priv->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
-	if (IS_ERR(priv->base))
-		return PTR_ERR(priv->base);
-
-	econfig.stride = 1;
-	econfig.word_size = 1;
-	econfig.reg_read = mtk_reg_read;
-	econfig.size = resource_size(res);
-	econfig.priv = priv;
-	econfig.dev = dev;
-	nvmem = devm_nvmem_register(dev, &econfig);
-
-	return PTR_ERR_OR_ZERO(nvmem);
-}
-
-static const struct of_device_id mtk_efuse_of_match[] = {
-	{ .compatible = "mediatek,mt8173-efuse",},
-	{ .compatible = "mediatek,efuse",},
-	{/* sentinel */},
-};
-MODULE_DEVICE_TABLE(of, mtk_efuse_of_match);
-
-static struct platform_driver mtk_efuse_driver = {
-	.probe = mtk_efuse_probe,
-	.driver = {
-		.name = "mediatek,efuse",
-		.of_match_table = mtk_efuse_of_match,
-	},
-};
-
-static int __init mtk_efuse_init(void)
-{
-	int ret;
-
-	ret = platform_driver_register(&mtk_efuse_driver);
-	if (ret) {
-		pr_err("Failed to register efuse driver\n");
-		return ret;
-	}
-
-	return 0;
-}
-
-static void __exit mtk_efuse_exit(void)
-{
-	return platform_driver_unregister(&mtk_efuse_driver);
-}
-
-subsys_initcall(mtk_efuse_init);
-module_exit(mtk_efuse_exit);
-
-MODULE_AUTHOR("Andrew-CT Chen <andrew-ct.chen@mediatek.com>");
-MODULE_DESCRIPTION("Mediatek EFUSE driver");
-MODULE_LICENSE("GPL v2");
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2023-02-01  6:52 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-01  6:47 [PATCH 0/4] nvmem: add and use generic MMIO NVMEM Rafał Miłecki
2023-02-01  6:47 ` Rafał Miłecki
2023-02-01  6:47 ` [PATCH 1/4] dt-bindings: nvmem: mmio: new binding for MMIO accessible NVMEM devices Rafał Miłecki
2023-02-01  6:47   ` Rafał Miłecki
2023-02-03 21:06   ` Rob Herring
2023-02-03 21:06     ` Rob Herring
2023-02-01  6:47 ` [PATCH 2/4] nvmem: add generic driver for devices with MMIO access Rafał Miłecki
2023-02-01  6:47   ` Rafał Miłecki
2023-02-01  9:41   ` Kunihiko Hayashi
2023-02-01  9:41     ` Kunihiko Hayashi
2023-02-01 11:52   ` Srinivas Kandagatla
2023-02-01 11:52     ` Srinivas Kandagatla
2023-02-02  9:24   ` AngeloGioacchino Del Regno
2023-02-02  9:24     ` AngeloGioacchino Del Regno
2023-02-01  6:47 ` Rafał Miłecki [this message]
2023-02-01  6:47   ` [PATCH 3/4] nvmem: mtk-efuse: replace driver with a generic MMIO one Rafał Miłecki
2023-02-01  8:48   ` Michael Walle
2023-02-01  8:48     ` Michael Walle
2023-02-01  9:30     ` Rafał Miłecki
2023-02-01  9:30       ` Rafał Miłecki
2023-02-01 10:46       ` Michael Walle
2023-02-01 10:46         ` Michael Walle
2023-02-01 11:01         ` Rafał Miłecki
2023-02-01 11:01           ` Rafał Miłecki
2023-02-01 11:11           ` Michael Walle
2023-02-01 11:11             ` Michael Walle
2023-02-01 18:54         ` Rob Herring
2023-02-01 18:54           ` Rob Herring
2023-02-01 20:15           ` Michael Walle
2023-02-01 20:15             ` Michael Walle
2023-02-02 23:44             ` Rob Herring
2023-02-02 23:44               ` Rob Herring
2023-02-01  6:47 ` [PATCH 4/4] nvmem: uniphier-efuse: " Rafał Miłecki
2023-02-01  6:47   ` Rafał Miłecki
2023-02-01  7:50 ` [PATCH 0/4] nvmem: add and use generic MMIO NVMEM Rafał Miłecki
2023-02-01  7:50   ` Rafał Miłecki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230201064717.18410-4-zajec5@gmail.com \
    --to=zajec5@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=hayashi.kunihiko@socionext.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=matthias.bgg@gmail.com \
    --cc=mhiramat@kernel.org \
    --cc=rafal@milecki.pl \
    --cc=robh+dt@kernel.org \
    --cc=srinivas.kandagatla@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.