* [PATCH v4 0/3] mtk-socinfo driver implementation
@ 2023-12-22 8:07 William-tw Lin
2023-12-22 8:07 ` [PATCH v4 1/3] arm64: dts: mediatek: Add socinfo efuses to MT8173/83/96/92/95 SoCs William-tw Lin
` (3 more replies)
0 siblings, 4 replies; 10+ messages in thread
From: William-tw Lin @ 2023-12-22 8:07 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger,
AngeloGioacchino Del Regno, Srinivas Kandagatla
Cc: devicetree, linux-kernel, linux-arm-kernel, linux-mediatek,
William-tw Lin
v4 changes:
dts:
1. remove phandle from socinfo-data for all platforms
mtk-socinfo.c:
1. use module_platform_driver instead of builtin_platform_driver
drivers/soc/mediatek/Kconfig:
1. add dependency for MTK_SOCINFO
mtk-efuse.c:
1. add remove function
commit message:
1. update commit message by following reviewer's comment
William-tw Lin (3):
arm64: dts: mediatek: Add socinfo efuses to MT8173/83/96/92/95 SoCs
soc: mediatek: mtk-socinfo: Add driver for getting chip information
nvmem: mtk-efuse: Register MediaTek socinfo driver from efuse
arch/arm64/boot/dts/mediatek/mt8173.dtsi | 9 ++
arch/arm64/boot/dts/mediatek/mt8183.dtsi | 9 ++
arch/arm64/boot/dts/mediatek/mt8186.dtsi | 4 +
arch/arm64/boot/dts/mediatek/mt8192.dtsi | 8 +
arch/arm64/boot/dts/mediatek/mt8195.dtsi | 3 +
drivers/nvmem/mtk-efuse.c | 21 ++-
drivers/soc/mediatek/Kconfig | 9 ++
drivers/soc/mediatek/Makefile | 1 +
drivers/soc/mediatek/mtk-socinfo.c | 186 +++++++++++++++++++++++
9 files changed, 249 insertions(+), 1 deletion(-)
create mode 100644 drivers/soc/mediatek/mtk-socinfo.c
--
2.18.0
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH v4 1/3] arm64: dts: mediatek: Add socinfo efuses to MT8173/83/96/92/95 SoCs 2023-12-22 8:07 [PATCH v4 0/3] mtk-socinfo driver implementation William-tw Lin @ 2023-12-22 8:07 ` William-tw Lin 2024-01-02 9:49 ` AngeloGioacchino Del Regno 2024-01-29 10:27 ` AngeloGioacchino Del Regno 2023-12-22 8:07 ` [PATCH v4 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information William-tw Lin ` (2 subsequent siblings) 3 siblings, 2 replies; 10+ messages in thread From: William-tw Lin @ 2023-12-22 8:07 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno, Srinivas Kandagatla Cc: devicetree, linux-kernel, linux-arm-kernel, linux-mediatek, William-tw Lin Add efuse nodes for socinfo retrieval for MT8173, MT8183, MT8186, MT8192 and MT8195. Signed-off-by: William-tw Lin <william-tw.lin@mediatek.com> --- arch/arm64/boot/dts/mediatek/mt8173.dtsi | 9 +++++++++ arch/arm64/boot/dts/mediatek/mt8183.dtsi | 9 +++++++++ arch/arm64/boot/dts/mediatek/mt8186.dtsi | 4 ++++ arch/arm64/boot/dts/mediatek/mt8192.dtsi | 8 ++++++++ arch/arm64/boot/dts/mediatek/mt8195.dtsi | 3 +++ 5 files changed, 33 insertions(+) diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi index c47d7d900f28..0f4aab80d5e4 100644 --- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi @@ -590,6 +590,15 @@ reg = <0 0x10206000 0 0x1000>; #address-cells = <1>; #size-cells = <1>; + + socinfo-data1@40 { + reg = <0x040 0x4>; + }; + + socinfo-data2@44 { + reg = <0x044 0x4>; + }; + thermal_calibration: calib@528 { reg = <0x528 0xc>; }; diff --git a/arch/arm64/boot/dts/mediatek/mt8183.dtsi b/arch/arm64/boot/dts/mediatek/mt8183.dtsi index 976dc968b3ca..1fe351b710ed 100644 --- a/arch/arm64/boot/dts/mediatek/mt8183.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt8183.dtsi @@ -1585,6 +1585,15 @@ reg = <0 0x11f10000 0 0x1000>; #address-cells = <1>; #size-cells = <1>; + + socinfo-data1@4c { + reg = <0x04c 0x4>; + }; + + socinfo-data2@60 { + reg = <0x060 0x4>; + }; + thermal_calibration: calib@180 { reg = <0x180 0xc>; }; diff --git a/arch/arm64/boot/dts/mediatek/mt8186.dtsi b/arch/arm64/boot/dts/mediatek/mt8186.dtsi index df0c04f2ba1d..7dd0ae965ee0 100644 --- a/arch/arm64/boot/dts/mediatek/mt8186.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt8186.dtsi @@ -1672,6 +1672,10 @@ reg = <0x59c 0x4>; bits = <0 3>; }; + + socinfo-data1@7a0 { + reg = <0x7a0 0x4>; + }; }; mipi_tx0: dsi-phy@11cc0000 { diff --git a/arch/arm64/boot/dts/mediatek/mt8192.dtsi b/arch/arm64/boot/dts/mediatek/mt8192.dtsi index 69f4cded5dbb..85f2c49be6fc 100644 --- a/arch/arm64/boot/dts/mediatek/mt8192.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt8192.dtsi @@ -1120,6 +1120,14 @@ #address-cells = <1>; #size-cells = <1>; + socinfo-data1@44 { + reg = <0x044 0x4>; + }; + + socinfo-data2@50 { + reg = <0x050 0x4>; + }; + lvts_e_data1: data1@1c0 { reg = <0x1c0 0x58>; }; diff --git a/arch/arm64/boot/dts/mediatek/mt8195.dtsi b/arch/arm64/boot/dts/mediatek/mt8195.dtsi index e0ac2e9f5b72..520f7b649cb2 100644 --- a/arch/arm64/boot/dts/mediatek/mt8195.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt8195.dtsi @@ -1686,6 +1686,9 @@ lvts_efuse_data2: lvts2-calib@1d0 { reg = <0x1d0 0x38>; }; + socinfo-data1@7a0 { + reg = <0x7a0 0x4>; + }; }; u3phy2: t-phy@11c40000 { -- 2.18.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v4 1/3] arm64: dts: mediatek: Add socinfo efuses to MT8173/83/96/92/95 SoCs 2023-12-22 8:07 ` [PATCH v4 1/3] arm64: dts: mediatek: Add socinfo efuses to MT8173/83/96/92/95 SoCs William-tw Lin @ 2024-01-02 9:49 ` AngeloGioacchino Del Regno 2024-01-29 10:27 ` AngeloGioacchino Del Regno 1 sibling, 0 replies; 10+ messages in thread From: AngeloGioacchino Del Regno @ 2024-01-02 9:49 UTC (permalink / raw) To: William-tw Lin, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, Srinivas Kandagatla Cc: devicetree, linux-kernel, linux-arm-kernel, linux-mediatek Il 22/12/23 09:07, William-tw Lin ha scritto: > Add efuse nodes for socinfo retrieval for MT8173, MT8183, MT8186, > MT8192 and MT8195. > > Signed-off-by: William-tw Lin <william-tw.lin@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 1/3] arm64: dts: mediatek: Add socinfo efuses to MT8173/83/96/92/95 SoCs 2023-12-22 8:07 ` [PATCH v4 1/3] arm64: dts: mediatek: Add socinfo efuses to MT8173/83/96/92/95 SoCs William-tw Lin 2024-01-02 9:49 ` AngeloGioacchino Del Regno @ 2024-01-29 10:27 ` AngeloGioacchino Del Regno 1 sibling, 0 replies; 10+ messages in thread From: AngeloGioacchino Del Regno @ 2024-01-29 10:27 UTC (permalink / raw) To: William-tw Lin, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, Srinivas Kandagatla Cc: devicetree, linux-kernel, linux-arm-kernel, linux-mediatek Il 22/12/23 09:07, William-tw Lin ha scritto: > Add efuse nodes for socinfo retrieval for MT8173, MT8183, MT8186, > MT8192 and MT8195. > > Signed-off-by: William-tw Lin <william-tw.lin@mediatek.com> Applied to v6.4-next/dts64 Thanks! Angelo ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v4 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information 2023-12-22 8:07 [PATCH v4 0/3] mtk-socinfo driver implementation William-tw Lin 2023-12-22 8:07 ` [PATCH v4 1/3] arm64: dts: mediatek: Add socinfo efuses to MT8173/83/96/92/95 SoCs William-tw Lin @ 2023-12-22 8:07 ` William-tw Lin 2024-01-02 9:48 ` AngeloGioacchino Del Regno 2024-01-29 10:27 ` AngeloGioacchino Del Regno 2023-12-22 8:07 ` [PATCH v4 3/3] nvmem: mtk-efuse: Register MediaTek socinfo driver from efuse William-tw Lin 2024-01-27 11:29 ` (subset) [PATCH v4 0/3] mtk-socinfo driver implementation Srinivas Kandagatla 3 siblings, 2 replies; 10+ messages in thread From: William-tw Lin @ 2023-12-22 8:07 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno, Srinivas Kandagatla Cc: devicetree, linux-kernel, linux-arm-kernel, linux-mediatek, William-tw Lin Add driver for socinfo retrieval. This patch includes the following: 1. mtk-socinfo driver for chip info retrieval 2. Related changes to Makefile and Kconfig Signed-off-by: William-tw Lin <william-tw.lin@mediatek.com> --- drivers/soc/mediatek/Kconfig | 9 ++ drivers/soc/mediatek/Makefile | 1 + drivers/soc/mediatek/mtk-socinfo.c | 186 +++++++++++++++++++++++++++++ 3 files changed, 196 insertions(+) create mode 100644 drivers/soc/mediatek/mtk-socinfo.c diff --git a/drivers/soc/mediatek/Kconfig b/drivers/soc/mediatek/Kconfig index 0810b5b0c688..50c664b65f4d 100644 --- a/drivers/soc/mediatek/Kconfig +++ b/drivers/soc/mediatek/Kconfig @@ -68,4 +68,13 @@ config MTK_SVS chip process corner, temperatures and other factors. Then DVFS driver could apply SVS bank voltage to PMIC/Buck. +config MTK_SOCINFO + tristate "MediaTek SoC Information" + default y + depends on NVMEM_MTK_EFUSE + help + The MediaTek SoC Information (mtk-socinfo) driver provides + information about the SoC to the userspace including the + manufacturer name, marketing name and soc name. + endmenu diff --git a/drivers/soc/mediatek/Makefile b/drivers/soc/mediatek/Makefile index 9d3ce7878c5c..6830512848fd 100644 --- a/drivers/soc/mediatek/Makefile +++ b/drivers/soc/mediatek/Makefile @@ -7,3 +7,4 @@ obj-$(CONFIG_MTK_REGULATOR_COUPLER) += mtk-regulator-coupler.o obj-$(CONFIG_MTK_MMSYS) += mtk-mmsys.o obj-$(CONFIG_MTK_MMSYS) += mtk-mutex.o obj-$(CONFIG_MTK_SVS) += mtk-svs.o +obj-$(CONFIG_MTK_SOCINFO) += mtk-socinfo.o diff --git a/drivers/soc/mediatek/mtk-socinfo.c b/drivers/soc/mediatek/mtk-socinfo.c new file mode 100644 index 000000000000..0094f43e1e08 --- /dev/null +++ b/drivers/soc/mediatek/mtk-socinfo.c @@ -0,0 +1,186 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2023 MediaTek Inc. + */ +#include <linux/kernel.h> +#include <linux/module.h> +#include <linux/of.h> +#include <linux/of_platform.h> +#include <linux/pm_runtime.h> +#include <linux/nvmem-consumer.h> +#include <linux/device.h> +#include <linux/debugfs.h> +#include <linux/seq_file.h> +#include <linux/string.h> +#include <linux/sys_soc.h> +#include <linux/slab.h> +#include <linux/platform_device.h> + +#define MTK_SOCINFO_ENTRY(_soc_name, _segment_name, _marketing_name, _cell_data1, _cell_data2) {\ + .soc_name = _soc_name, \ + .segment_name = _segment_name, \ + .marketing_name = _marketing_name, \ + .cell_data = {_cell_data1, _cell_data2} \ +} +#define CELL_NOT_USED (0xFFFFFFFF) +#define MAX_CELLS (2) + +struct mtk_socinfo { + struct device *dev; + struct name_data *name_data; + struct socinfo_data *socinfo_data; + struct soc_device *soc_dev; +}; + +struct socinfo_data { + char *soc_name; + char *segment_name; + char *marketing_name; + u32 cell_data[MAX_CELLS]; +}; + +static const char *cell_names[MAX_CELLS] = {"socinfo-data1", "socinfo-data2"}; + +static struct socinfo_data socinfo_data_table[] = { + MTK_SOCINFO_ENTRY("MT8173", "MT8173V/AC", "MT8173", 0x6CA20004, 0x10000000), + MTK_SOCINFO_ENTRY("MT8183", "MT8183V/AZA", "Kompanio 500", 0x00010043, 0x00000840), + MTK_SOCINFO_ENTRY("MT8186", "MT8186GV/AZA", "Kompanio 520", 0x81861001, CELL_NOT_USED), + MTK_SOCINFO_ENTRY("MT8186T", "MT8186TV/AZA", "Kompanio 528", 0x81862001, CELL_NOT_USED), + MTK_SOCINFO_ENTRY("MT8188", "MT8188GV/AZA", "Kompanio 830", 0x81880000, 0x00000010), + MTK_SOCINFO_ENTRY("MT8188", "MT8188GV/HZA", "Kompanio 830", 0x81880000, 0x00000011), + MTK_SOCINFO_ENTRY("MT8192", "MT8192V/AZA", "Kompanio 820", 0x00001100, 0x00040080), + MTK_SOCINFO_ENTRY("MT8192T", "MT8192V/ATZA", "Kompanio 828", 0x00000100, 0x000400C0), + MTK_SOCINFO_ENTRY("MT8195", "MT8195GV/EZA", "Kompanio 1200", 0x81950300, CELL_NOT_USED), + MTK_SOCINFO_ENTRY("MT8195", "MT8195GV/EHZA", "Kompanio 1200", 0x81950304, CELL_NOT_USED), + MTK_SOCINFO_ENTRY("MT8195", "MT8195TV/EZA", "Kompanio 1380", 0x81950400, CELL_NOT_USED), + MTK_SOCINFO_ENTRY("MT8195", "MT8195TV/EHZA", "Kompanio 1380", 0x81950404, CELL_NOT_USED), +}; + +static int mtk_socinfo_create_socinfo_node(struct mtk_socinfo *mtk_socinfop) +{ + struct soc_device_attribute *attrs; + static char machine[30] = {0}; + static const char *soc_manufacturer = "MediaTek"; + + attrs = devm_kzalloc(mtk_socinfop->dev, sizeof(*attrs), GFP_KERNEL); + if (!attrs) + return -ENOMEM; + + snprintf(machine, sizeof(machine), "%s (%s)", mtk_socinfop->socinfo_data->marketing_name, + mtk_socinfop->socinfo_data->soc_name); + attrs->family = soc_manufacturer; + attrs->machine = machine; + + mtk_socinfop->soc_dev = soc_device_register(attrs); + if (IS_ERR(mtk_socinfop->soc_dev)) + return PTR_ERR(mtk_socinfop->soc_dev); + + dev_info(mtk_socinfop->dev, "%s %s SoC detected.\n", soc_manufacturer, attrs->machine); + return 0; +} + +static u32 mtk_socinfo_read_cell(struct device *dev, const char *name) +{ + struct nvmem_device *nvmemp; + struct device_node *np = dev->of_node; + u32 offset; + u32 cell_val = CELL_NOT_USED; + + nvmemp = devm_nvmem_device_get(dev, "mtk-efuse0"); + if (IS_ERR(nvmemp)) + goto out; + + np = of_find_node_by_name(NULL, name); + if (!np) + goto out; + + if (of_property_read_u32_index(np, "reg", 0, &offset)) + goto out; + + nvmem_device_read(nvmemp, offset, sizeof(cell_val), &cell_val); + + nvmem_device_put(nvmemp); + +out: + return cell_val; +} + +static int mtk_socinfo_get_socinfo_data(struct mtk_socinfo *mtk_socinfop) +{ + unsigned int i, j; + unsigned int num_cell_data = 0; + u32 cell_data[MAX_CELLS] = {0}; + bool match_socinfo; + int match_socinfo_index = -1; + + for (i = 0; i < MAX_CELLS; i++) { + cell_data[i] = mtk_socinfo_read_cell(mtk_socinfop->dev, cell_names[i]); + if (cell_data[i] != CELL_NOT_USED) + num_cell_data++; + else + break; + } + + if (!num_cell_data) + return -ENOENT; + + for (i = 0; i < ARRAY_SIZE(socinfo_data_table); i++) { + match_socinfo = true; + for (j = 0; j < num_cell_data; j++) { + if (cell_data[j] != socinfo_data_table[i].cell_data[j]) { + match_socinfo = false; + break; + } + } + if (match_socinfo) { + mtk_socinfop->socinfo_data = &(socinfo_data_table[i]); + match_socinfo_index = i; + break; + } + } + + return match_socinfo_index >= 0 ? match_socinfo_index : -ENOENT; +} + +static int mtk_socinfo_probe(struct platform_device *pdev) +{ + struct mtk_socinfo *mtk_socinfop; + int ret; + + mtk_socinfop = devm_kzalloc(&pdev->dev, sizeof(*mtk_socinfop), GFP_KERNEL); + if (!mtk_socinfop) + return -ENOMEM; + + mtk_socinfop->dev = &pdev->dev; + + ret = mtk_socinfo_get_socinfo_data(mtk_socinfop); + if (ret < 0) + return dev_err_probe(mtk_socinfop->dev, ret, "Failed to get socinfo data\n"); + + ret = mtk_socinfo_create_socinfo_node(mtk_socinfop); + if (ret) + return dev_err_probe(mtk_socinfop->dev, ret, "Cannot create node\n"); + + platform_set_drvdata(pdev, mtk_socinfop); + return 0; +} + +static void mtk_socinfo_remove(struct platform_device *pdev) +{ + struct mtk_socinfo *mtk_socinfop = platform_get_drvdata(pdev); + + soc_device_unregister(mtk_socinfop->soc_dev); +} + +static struct platform_driver mtk_socinfo = { + .probe = mtk_socinfo_probe, + .remove_new = mtk_socinfo_remove, + .driver = { + .name = "mtk-socinfo", + }, +}; +module_platform_driver(mtk_socinfo); + +MODULE_AUTHOR("William-TW LIN <william-tw.lin@mediatek.com>"); +MODULE_DESCRIPTION("MediaTek socinfo driver"); +MODULE_LICENSE("GPL"); -- 2.18.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v4 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information 2023-12-22 8:07 ` [PATCH v4 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information William-tw Lin @ 2024-01-02 9:48 ` AngeloGioacchino Del Regno 2024-01-29 10:27 ` AngeloGioacchino Del Regno 1 sibling, 0 replies; 10+ messages in thread From: AngeloGioacchino Del Regno @ 2024-01-02 9:48 UTC (permalink / raw) To: William-tw Lin, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, Srinivas Kandagatla Cc: devicetree, linux-kernel, linux-arm-kernel, linux-mediatek Il 22/12/23 09:07, William-tw Lin ha scritto: > Add driver for socinfo retrieval. This patch includes the following: > 1. mtk-socinfo driver for chip info retrieval > 2. Related changes to Makefile and Kconfig > > Signed-off-by: William-tw Lin <william-tw.lin@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v4 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information 2023-12-22 8:07 ` [PATCH v4 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information William-tw Lin 2024-01-02 9:48 ` AngeloGioacchino Del Regno @ 2024-01-29 10:27 ` AngeloGioacchino Del Regno 1 sibling, 0 replies; 10+ messages in thread From: AngeloGioacchino Del Regno @ 2024-01-29 10:27 UTC (permalink / raw) To: William-tw Lin, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, Srinivas Kandagatla Cc: devicetree, linux-kernel, linux-arm-kernel, linux-mediatek Il 22/12/23 09:07, William-tw Lin ha scritto: > Add driver for socinfo retrieval. This patch includes the following: > 1. mtk-socinfo driver for chip info retrieval > 2. Related changes to Makefile and Kconfig > > Signed-off-by: William-tw Lin <william-tw.lin@mediatek.com> Applied to v6.4-next/soc Thanks! Angelo ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v4 3/3] nvmem: mtk-efuse: Register MediaTek socinfo driver from efuse 2023-12-22 8:07 [PATCH v4 0/3] mtk-socinfo driver implementation William-tw Lin 2023-12-22 8:07 ` [PATCH v4 1/3] arm64: dts: mediatek: Add socinfo efuses to MT8173/83/96/92/95 SoCs William-tw Lin 2023-12-22 8:07 ` [PATCH v4 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information William-tw Lin @ 2023-12-22 8:07 ` William-tw Lin 2024-01-02 9:48 ` AngeloGioacchino Del Regno 2024-01-27 11:29 ` (subset) [PATCH v4 0/3] mtk-socinfo driver implementation Srinivas Kandagatla 3 siblings, 1 reply; 10+ messages in thread From: William-tw Lin @ 2023-12-22 8:07 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno, Srinivas Kandagatla Cc: devicetree, linux-kernel, linux-arm-kernel, linux-mediatek, William-tw Lin The socinfo driver reads chip information from eFuses and does not need any devicetree node. Register it from mtk-efuse. While at it, also add the name for this driver's nvmem_config. Signed-off-by: William-tw Lin <william-tw.lin@mediatek.com> --- drivers/nvmem/mtk-efuse.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/nvmem/mtk-efuse.c b/drivers/nvmem/mtk-efuse.c index 84f05b40a411..f5bebcecf9bd 100644 --- a/drivers/nvmem/mtk-efuse.c +++ b/drivers/nvmem/mtk-efuse.c @@ -68,6 +68,7 @@ static int mtk_efuse_probe(struct platform_device *pdev) struct nvmem_config econfig = {}; struct mtk_efuse_priv *priv; const struct mtk_efuse_pdata *pdata; + struct platform_device *socinfo; priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); if (!priv) @@ -85,11 +86,20 @@ static int mtk_efuse_probe(struct platform_device *pdev) econfig.size = resource_size(res); econfig.priv = priv; econfig.dev = dev; + econfig.name = "mtk-efuse"; if (pdata->uses_post_processing) econfig.fixup_dt_cell_info = &mtk_efuse_fixup_dt_cell_info; nvmem = devm_nvmem_register(dev, &econfig); + if (IS_ERR(nvmem)) + return PTR_ERR(nvmem); - return PTR_ERR_OR_ZERO(nvmem); + socinfo = platform_device_register_data(&pdev->dev, "mtk-socinfo", + PLATFORM_DEVID_AUTO, NULL, 0); + if (IS_ERR(socinfo)) + dev_info(dev, "MediaTek SoC Information will be unavailable\n"); + + platform_set_drvdata(pdev, socinfo); + return 0; } static const struct mtk_efuse_pdata mtk_mt8186_efuse_pdata = { @@ -108,8 +118,17 @@ static const struct of_device_id mtk_efuse_of_match[] = { }; MODULE_DEVICE_TABLE(of, mtk_efuse_of_match); +static void mtk_efuse_remove(struct platform_device *pdev) +{ + struct platform_device *socinfo = platform_get_drvdata(pdev); + + if (!IS_ERR_OR_NULL(socinfo)) + platform_device_unregister(socinfo); +} + static struct platform_driver mtk_efuse_driver = { .probe = mtk_efuse_probe, + .remove_new = mtk_efuse_remove, .driver = { .name = "mediatek,efuse", .of_match_table = mtk_efuse_of_match, -- 2.18.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v4 3/3] nvmem: mtk-efuse: Register MediaTek socinfo driver from efuse 2023-12-22 8:07 ` [PATCH v4 3/3] nvmem: mtk-efuse: Register MediaTek socinfo driver from efuse William-tw Lin @ 2024-01-02 9:48 ` AngeloGioacchino Del Regno 0 siblings, 0 replies; 10+ messages in thread From: AngeloGioacchino Del Regno @ 2024-01-02 9:48 UTC (permalink / raw) To: William-tw Lin, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, Srinivas Kandagatla Cc: devicetree, linux-kernel, linux-arm-kernel, linux-mediatek Il 22/12/23 09:07, William-tw Lin ha scritto: > The socinfo driver reads chip information from eFuses and does not need > any devicetree node. Register it from mtk-efuse. > > While at it, also add the name for this driver's nvmem_config. > > Signed-off-by: William-tw Lin <william-tw.lin@mediatek.com> Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: (subset) [PATCH v4 0/3] mtk-socinfo driver implementation 2023-12-22 8:07 [PATCH v4 0/3] mtk-socinfo driver implementation William-tw Lin ` (2 preceding siblings ...) 2023-12-22 8:07 ` [PATCH v4 3/3] nvmem: mtk-efuse: Register MediaTek socinfo driver from efuse William-tw Lin @ 2024-01-27 11:29 ` Srinivas Kandagatla 3 siblings, 0 replies; 10+ messages in thread From: Srinivas Kandagatla @ 2024-01-27 11:29 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno, William-tw Lin Cc: devicetree, linux-kernel, linux-arm-kernel, linux-mediatek On Fri, 22 Dec 2023 16:07:36 +0800, William-tw Lin wrote: > v4 changes: > dts: > 1. remove phandle from socinfo-data for all platforms > > mtk-socinfo.c: > 1. use module_platform_driver instead of builtin_platform_driver > > [...] Applied, thanks! [3/3] nvmem: mtk-efuse: Register MediaTek socinfo driver from efuse commit: 4e6102d60d88975bc65a0dde05a8ba096c450249 Best regards, -- Srinivas Kandagatla <srinivas.kandagatla@linaro.org> ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2024-01-29 10:27 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-12-22 8:07 [PATCH v4 0/3] mtk-socinfo driver implementation William-tw Lin 2023-12-22 8:07 ` [PATCH v4 1/3] arm64: dts: mediatek: Add socinfo efuses to MT8173/83/96/92/95 SoCs William-tw Lin 2024-01-02 9:49 ` AngeloGioacchino Del Regno 2024-01-29 10:27 ` AngeloGioacchino Del Regno 2023-12-22 8:07 ` [PATCH v4 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information William-tw Lin 2024-01-02 9:48 ` AngeloGioacchino Del Regno 2024-01-29 10:27 ` AngeloGioacchino Del Regno 2023-12-22 8:07 ` [PATCH v4 3/3] nvmem: mtk-efuse: Register MediaTek socinfo driver from efuse William-tw Lin 2024-01-02 9:48 ` AngeloGioacchino Del Regno 2024-01-27 11:29 ` (subset) [PATCH v4 0/3] mtk-socinfo driver implementation Srinivas Kandagatla
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).