lkml.org 
[lkml]   [2023]   [Feb]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/4] nvmem: uniphier-efuse: replace driver with a generic MMIO one
    Date
    From: Rafał Miłecki <rafal@milecki.pl>

    UniPhier 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 | 1 +
    drivers/nvmem/uniphier-efuse.c | 78 ----------------------------------
    4 files changed, 4 insertions(+), 84 deletions(-)
    delete mode 100644 drivers/nvmem/uniphier-efuse.c

    diff --git a/drivers/nvmem/Kconfig b/drivers/nvmem/Kconfig
    index 4d652c7382a6..d65950da39b0 100644
    --- a/drivers/nvmem/Kconfig
    +++ b/drivers/nvmem/Kconfig
    @@ -359,12 +359,11 @@ config NVMEM_UNIPHIER_EFUSE
    tristate "UniPhier SoCs eFuse support"
    depends on ARCH_UNIPHIER || COMPILE_TEST
    depends on HAS_IOMEM
    + select NVMEM_MMIO
    help
    - This is a simple driver to dump specified values of UniPhier SoC
    - from eFuse.
    + 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 nvmem-uniphier-efuse.
    + Update your config as this symbol will be dropped in the next release.

    config NVMEM_VF610_OCOTP
    tristate "VF610 SoC OCOTP support"
    diff --git a/drivers/nvmem/Makefile b/drivers/nvmem/Makefile
    index 7a8e29ea408e..70dd1154c832 100644
    --- a/drivers/nvmem/Makefile
    +++ b/drivers/nvmem/Makefile
    @@ -67,8 +67,6 @@ obj-$(CONFIG_NVMEM_SUNPLUS_OCOTP) += nvmem_sunplus_ocotp.o
    nvmem_sunplus_ocotp-y := sunplus-ocotp.o
    obj-$(CONFIG_NVMEM_SUNXI_SID) += nvmem_sunxi_sid.o
    nvmem_sunxi_sid-y := sunxi_sid.o
    -obj-$(CONFIG_NVMEM_UNIPHIER_EFUSE) += nvmem-uniphier-efuse.o
    -nvmem-uniphier-efuse-y := uniphier-efuse.o
    obj-$(CONFIG_NVMEM_VF610_OCOTP) += nvmem-vf610-ocotp.o
    nvmem-vf610-ocotp-y := vf610-ocotp.o
    obj-$(CONFIG_NVMEM_ZYNQMP) += nvmem_zynqmp_nvmem.o
    diff --git a/drivers/nvmem/mmio.c b/drivers/nvmem/mmio.c
    index 253ade72e0c3..f44ff2a56c56 100644
    --- a/drivers/nvmem/mmio.c
    +++ b/drivers/nvmem/mmio.c
    @@ -60,6 +60,7 @@ static const struct of_device_id mmio_nvmem_of_match_table[] = {
    /* Custom bindings that were introduced before the mmio one */
    { .compatible = "mediatek,mt8173-efuse", },
    { .compatible = "mediatek,efuse", },
    + { .compatible = "socionext,uniphier-efuse", },
    {},
    };

    diff --git a/drivers/nvmem/uniphier-efuse.c b/drivers/nvmem/uniphier-efuse.c
    deleted file mode 100644
    index aca910b3b6f8..000000000000
    --- a/drivers/nvmem/uniphier-efuse.c
    +++ /dev/null
    @@ -1,78 +0,0 @@
    -// SPDX-License-Identifier: GPL-2.0-only
    -/*
    - * UniPhier eFuse driver
    - *
    - * Copyright (C) 2017 Socionext Inc.
    - */
    -
    -#include <linux/device.h>
    -#include <linux/io.h>
    -#include <linux/module.h>
    -#include <linux/mod_devicetable.h>
    -#include <linux/nvmem-provider.h>
    -#include <linux/platform_device.h>
    -
    -struct uniphier_efuse_priv {
    - void __iomem *base;
    -};
    -
    -static int uniphier_reg_read(void *context,
    - unsigned int reg, void *_val, size_t bytes)
    -{
    - struct uniphier_efuse_priv *priv = context;
    - u8 *val = _val;
    - int offs;
    -
    - for (offs = 0; offs < bytes; offs += sizeof(u8))
    - *val++ = readb(priv->base + reg + offs);
    -
    - return 0;
    -}
    -
    -static int uniphier_efuse_probe(struct platform_device *pdev)
    -{
    - struct device *dev = &pdev->dev;
    - struct resource *res;
    - struct nvmem_device *nvmem;
    - struct nvmem_config econfig = {};
    - struct uniphier_efuse_priv *priv;
    -
    - priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
    - if (!priv)
    - return -ENOMEM;
    -
    - res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
    - priv->base = devm_ioremap_resource(dev, res);
    - if (IS_ERR(priv->base))
    - return PTR_ERR(priv->base);
    -
    - econfig.stride = 1;
    - econfig.word_size = 1;
    - econfig.read_only = true;
    - econfig.reg_read = uniphier_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 uniphier_efuse_of_match[] = {
    - { .compatible = "socionext,uniphier-efuse",},
    - {/* sentinel */},
    -};
    -MODULE_DEVICE_TABLE(of, uniphier_efuse_of_match);
    -
    -static struct platform_driver uniphier_efuse_driver = {
    - .probe = uniphier_efuse_probe,
    - .driver = {
    - .name = "uniphier-efuse",
    - .of_match_table = uniphier_efuse_of_match,
    - },
    -};
    -module_platform_driver(uniphier_efuse_driver);
    -
    -MODULE_AUTHOR("Keiji Hayashibara <hayashibara.keiji@socionext.com>");
    -MODULE_DESCRIPTION("UniPhier eFuse driver");
    -MODULE_LICENSE("GPL v2");
    --
    2.34.1
    \
     
     \ /
      Last update: 2023-03-27 00:04    [W:4.177 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site