* [PATCH v3 0/3] mtk-socinfo driver implementation
@ 2023-12-20 10:38 William-tw Lin
2023-12-20 10:38 ` [PATCH v3 1/3] arm64: dts: Add node for chip info driver William-tw Lin
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: William-tw Lin @ 2023-12-20 10:38 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
v3 changes:
changes dts:
1. remove socinfo node so mtk-socinfo can be registered from mtk-efuse
2. add unit address to mtk-socinfo nodes
mtk-socinfo.c:
1. add static to previously global variables
2. remove the check on soc_dev in mtk_socinfo_remove
3. Drop .owner from platform_driver mtk_socinfo
4. Instead of probing from devicetree, socinfo is registered from
mtk-efuse
mtk-efuse.c:
1. Add mtk-efuse name to nvmem_config to avoid confusion with future
nvmem nodes
2. register mtk-socinfo from mtk-efuse
William-tw Lin (3):
arm64: dts: Add node for chip info driver
soc: mediatek: mtk-socinfo: Add driver for getting chip information
nvmem: mtk-efuse: Modify driver for getting chip information
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 | 11 +-
drivers/soc/mediatek/Kconfig | 8 +
drivers/soc/mediatek/Makefile | 1 +
drivers/soc/mediatek/mtk-socinfo.c | 186 +++++++++++++++++++++++
9 files changed, 238 insertions(+), 1 deletion(-)
create mode 100644 drivers/soc/mediatek/mtk-socinfo.c
--
2.18.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 1/3] arm64: dts: Add node for chip info driver
2023-12-20 10:38 [PATCH v3 0/3] mtk-socinfo driver implementation William-tw Lin
@ 2023-12-20 10:38 ` William-tw Lin
2023-12-20 11:02 ` AngeloGioacchino Del Regno
2023-12-20 10:39 ` [PATCH v3 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information William-tw Lin
2023-12-20 10:39 ` [PATCH v3 3/3] nvmem: mtk-efuse: Modify " William-tw Lin
2 siblings, 1 reply; 11+ messages in thread
From: William-tw Lin @ 2023-12-20 10:38 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 dts node for socinfo retrieval for the following projects:
MT8173, MT8183, MT8186, MT8192, 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..06916e60679a 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: socinfo-data1@40 {
+ reg = <0x040 0x4>;
+ };
+
+ socinfo_data2: 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..d39c25db042e 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: socinfo-data1@4c {
+ reg = <0x04c 0x4>;
+ };
+
+ socinfo_data2: 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..0e2f6fe14081 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: 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..a329b430429f 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: socinfo-data1@44 {
+ reg = <0x044 0x4>;
+ };
+
+ socinfo_data2: 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..f1926a6afa8f 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: socinfo-data1@7a0 {
+ reg = <0x7a0 0x4>;
+ };
};
u3phy2: t-phy@11c40000 {
--
2.18.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v3 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information
2023-12-20 10:38 [PATCH v3 0/3] mtk-socinfo driver implementation William-tw Lin
2023-12-20 10:38 ` [PATCH v3 1/3] arm64: dts: Add node for chip info driver William-tw Lin
@ 2023-12-20 10:39 ` William-tw Lin
2023-12-20 10:53 ` AngeloGioacchino Del Regno
2023-12-20 11:34 ` Krzysztof Kozlowski
2023-12-20 10:39 ` [PATCH v3 3/3] nvmem: mtk-efuse: Modify " William-tw Lin
2 siblings, 2 replies; 11+ messages in thread
From: William-tw Lin @ 2023-12-20 10:39 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 | 8 ++
drivers/soc/mediatek/Makefile | 1 +
drivers/soc/mediatek/mtk-socinfo.c | 186 +++++++++++++++++++++++++++++
3 files changed, 195 insertions(+)
create mode 100644 drivers/soc/mediatek/mtk-socinfo.c
diff --git a/drivers/soc/mediatek/Kconfig b/drivers/soc/mediatek/Kconfig
index 0810b5b0c688..f34d93977ba6 100644
--- a/drivers/soc/mediatek/Kconfig
+++ b/drivers/soc/mediatek/Kconfig
@@ -68,4 +68,12 @@ 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
+ 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..4a257b5c8eda
--- /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",
+ },
+};
+builtin_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] 11+ messages in thread
* [PATCH v3 3/3] nvmem: mtk-efuse: Modify driver for getting chip information
2023-12-20 10:38 [PATCH v3 0/3] mtk-socinfo driver implementation William-tw Lin
2023-12-20 10:38 ` [PATCH v3 1/3] arm64: dts: Add node for chip info driver William-tw Lin
2023-12-20 10:39 ` [PATCH v3 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information William-tw Lin
@ 2023-12-20 10:39 ` William-tw Lin
2023-12-20 11:02 ` AngeloGioacchino Del Regno
2 siblings, 1 reply; 11+ messages in thread
From: William-tw Lin @ 2023-12-20 10:39 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
Retrieval of soc info is needed. This patch includes the following:
1. Register socinfo device in mtk-efuse.c
Signed-off-by: William-tw Lin <william-tw.lin@mediatek.com>
---
drivers/nvmem/mtk-efuse.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/nvmem/mtk-efuse.c b/drivers/nvmem/mtk-efuse.c
index 84f05b40a411..3914e039e288 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,19 @@ 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");
+
+ return 0;
}
static const struct mtk_efuse_pdata mtk_mt8186_efuse_pdata = {
--
2.18.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v3 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information
2023-12-20 10:39 ` [PATCH v3 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information William-tw Lin
@ 2023-12-20 10:53 ` AngeloGioacchino Del Regno
2023-12-22 8:03 ` William-tw Lin (林鼎崴)
2023-12-20 11:34 ` Krzysztof Kozlowski
1 sibling, 1 reply; 11+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-12-20 10:53 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 20/12/23 11:39, 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>
> ---
> drivers/soc/mediatek/Kconfig | 8 ++
> drivers/soc/mediatek/Makefile | 1 +
> drivers/soc/mediatek/mtk-socinfo.c | 186 +++++++++++++++++++++++++++++
> 3 files changed, 195 insertions(+)
> create mode 100644 drivers/soc/mediatek/mtk-socinfo.c
>
> diff --git a/drivers/soc/mediatek/Kconfig b/drivers/soc/mediatek/Kconfig
> index 0810b5b0c688..f34d93977ba6 100644
> --- a/drivers/soc/mediatek/Kconfig
> +++ b/drivers/soc/mediatek/Kconfig
> @@ -68,4 +68,12 @@ 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
Add the dependency please.
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..4a257b5c8eda
> --- /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");
Are you sure that this is supposed to be "mtk-efuse0" and not "mtk-efuse"?
Looks strange.
Everything else looks ok.
Cheers,
Angelo
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 3/3] nvmem: mtk-efuse: Modify driver for getting chip information
2023-12-20 10:39 ` [PATCH v3 3/3] nvmem: mtk-efuse: Modify " William-tw Lin
@ 2023-12-20 11:02 ` AngeloGioacchino Del Regno
0 siblings, 0 replies; 11+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-12-20 11:02 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 20/12/23 11:39, William-tw Lin ha scritto:
> Retrieval of soc info is needed. This patch includes the following:
> 1. Register socinfo device in mtk-efuse.c
>
nvmem: mtk-efuse: Register MediaTek socinfo driver from efuse
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.
^^^ that's a proper commit title and description :-)
> Signed-off-by: William-tw Lin <william-tw.lin@mediatek.com>
> ---
> drivers/nvmem/mtk-efuse.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/nvmem/mtk-efuse.c b/drivers/nvmem/mtk-efuse.c
> index 84f05b40a411..3914e039e288 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,19 @@ 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");
> +
if (IS_ERR(socinfo))
dev_info(dev, "MediaTek SoC Information will be unavailable\n");
platform_set_drvdata(pdev, socinfo);
return 0;
> + return 0;
> }
>
> static const struct mtk_efuse_pdata mtk_mt8186_efuse_pdata = {
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, <---- add this
.driver = {
.name = "mediatek,efuse",
.of_match_table = mtk_efuse_of_match,
}
};
After those additions, it's good for me.
Thanks,
Angelo
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 1/3] arm64: dts: Add node for chip info driver
2023-12-20 10:38 ` [PATCH v3 1/3] arm64: dts: Add node for chip info driver William-tw Lin
@ 2023-12-20 11:02 ` AngeloGioacchino Del Regno
0 siblings, 0 replies; 11+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-12-20 11:02 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 20/12/23 11:38, William-tw Lin ha scritto:
> Add dts node for socinfo retrieval for the following projects:
> MT8173, MT8183, MT8186, MT8192, MT8195
>
arm64: dts: mediatek: Add socinfo efuses to MT8173/83/96/92/95 SoCs
Add efuse nodes for socinfo retrieval for MT8173, MT8183, MT8186,
MT8192 and MT8195.
...because you're not adding a chipinfo node, but efuse nodes :-)
> 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..06916e60679a 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: socinfo-data1@40 {
Also, you don't need the phandles as those nodes will never be modified from
board specific devicetree, nor assigned to any devicetree node.
This means that you can go with just
socinfo-data1@40 {
reg ...
}
same for data2 and for all SoCs.
Apart from that, looks good to me.
Cheers,
Angelo
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information
2023-12-20 10:39 ` [PATCH v3 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information William-tw Lin
2023-12-20 10:53 ` AngeloGioacchino Del Regno
@ 2023-12-20 11:34 ` Krzysztof Kozlowski
2023-12-20 13:13 ` AngeloGioacchino Del Regno
2023-12-22 8:03 ` William-tw Lin (林鼎崴)
1 sibling, 2 replies; 11+ messages in thread
From: Krzysztof Kozlowski @ 2023-12-20 11:34 UTC (permalink / raw)
To: William-tw Lin, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Matthias Brugger, AngeloGioacchino Del Regno, Srinivas Kandagatla
Cc: devicetree, linux-kernel, linux-arm-kernel, linux-mediatek
On 20/12/2023 11:39, William-tw Lin wrote:
> 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>
...
> +static struct platform_driver mtk_socinfo = {
> + .probe = mtk_socinfo_probe,
> + .remove_new = mtk_socinfo_remove,
> + .driver = {
> + .name = "mtk-socinfo",
> + },
> +};
> +builtin_platform_driver(mtk_socinfo);
module platform driver, because this is tristate and because this should
be a module.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information
2023-12-20 11:34 ` Krzysztof Kozlowski
@ 2023-12-20 13:13 ` AngeloGioacchino Del Regno
2023-12-22 8:03 ` William-tw Lin (林鼎崴)
1 sibling, 0 replies; 11+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-12-20 13:13 UTC (permalink / raw)
To: Krzysztof Kozlowski, William-tw Lin, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Matthias Brugger,
Srinivas Kandagatla
Cc: devicetree, linux-kernel, linux-arm-kernel, linux-mediatek
Il 20/12/23 12:34, Krzysztof Kozlowski ha scritto:
> On 20/12/2023 11:39, William-tw Lin wrote:
>> 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>
>
> ...
>
>> +static struct platform_driver mtk_socinfo = {
>> + .probe = mtk_socinfo_probe,
>> + .remove_new = mtk_socinfo_remove,
>> + .driver = {
>> + .name = "mtk-socinfo",
>> + },
>> +};
>> +builtin_platform_driver(mtk_socinfo);
>
> module platform driver, because this is tristate and because this should
> be a module.
>
Oh! Yes, right! Thanks for catching that, it totally slipped off my brain.
Cheers,
Angelo
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information
2023-12-20 11:34 ` Krzysztof Kozlowski
2023-12-20 13:13 ` AngeloGioacchino Del Regno
@ 2023-12-22 8:03 ` William-tw Lin (林鼎崴)
1 sibling, 0 replies; 11+ messages in thread
From: William-tw Lin (林鼎崴) @ 2023-12-22 8:03 UTC (permalink / raw)
To: matthias.bgg@gmail.com, srinivas.kandagatla@linaro.org,
krzysztof.kozlowski@linaro.org, conor+dt@kernel.org,
robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org,
angelogioacchino.delregno@collabora.com
Cc: linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org,
devicetree@vger.kernel.org
Hi Krzysztof,
Thank you for the comments. The fix regarding module_platform_driver
will be provided in the next version of patches. Thanks a lot!
Best regards,
William
On Wed, 2023-12-20 at 12:34 +0100, Krzysztof Kozlowski wrote:
>
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
> On 20/12/2023 11:39, William-tw Lin wrote:
> > 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>
>
> ...
>
> > +static struct platform_driver mtk_socinfo = {
> > +.probe = mtk_socinfo_probe,
> > +.remove_new = mtk_socinfo_remove,
> > +.driver = {
> > +.name = "mtk-socinfo",
> > +},
> > +};
> > +builtin_platform_driver(mtk_socinfo);
>
> module platform driver, because this is tristate and because this
> should
> be a module.
>
> Best regards,
> Krzysztof
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information
2023-12-20 10:53 ` AngeloGioacchino Del Regno
@ 2023-12-22 8:03 ` William-tw Lin (林鼎崴)
0 siblings, 0 replies; 11+ messages in thread
From: William-tw Lin (林鼎崴) @ 2023-12-22 8:03 UTC (permalink / raw)
To: matthias.bgg@gmail.com, srinivas.kandagatla@linaro.org,
angelogioacchino.delregno@collabora.com, robh+dt@kernel.org,
krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org
Cc: linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org,
devicetree@vger.kernel.org
On Wed, 2023-12-20 at 11:53 +0100, AngeloGioacchino Del Regno wrote:
> Il 20/12/23 11:39, 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>
> > ---
> > drivers/soc/mediatek/Kconfig | 8 ++
> > drivers/soc/mediatek/Makefile | 1 +
> > drivers/soc/mediatek/mtk-socinfo.c | 186
> > +++++++++++++++++++++++++++++
> > 3 files changed, 195 insertions(+)
> > create mode 100644 drivers/soc/mediatek/mtk-socinfo.c
> >
> > diff --git a/drivers/soc/mediatek/Kconfig
> > b/drivers/soc/mediatek/Kconfig
> > index 0810b5b0c688..f34d93977ba6 100644
> > --- a/drivers/soc/mediatek/Kconfig
> > +++ b/drivers/soc/mediatek/Kconfig
> > @@ -68,4 +68,12 @@ 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
>
> Add the dependency please.
>
> 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..4a257b5c8eda
> > --- /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");
>
> Are you sure that this is supposed to be "mtk-efuse0" and not "mtk-
> efuse"?
> Looks strange.
>
> Everything else looks ok.
>
> Cheers,
> Angelo
>
>
Hi Angelo,
Thank you for the comments! I can confirm that the node for mtk-efuse
is "mtk-efuse0" since nvmem_regsiter() automatically appends an id to
the name. The changes for the other comments will be addressed in the
next version of patches. Thank you so much!
Best regards,
William
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2023-12-22 8:04 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-20 10:38 [PATCH v3 0/3] mtk-socinfo driver implementation William-tw Lin
2023-12-20 10:38 ` [PATCH v3 1/3] arm64: dts: Add node for chip info driver William-tw Lin
2023-12-20 11:02 ` AngeloGioacchino Del Regno
2023-12-20 10:39 ` [PATCH v3 2/3] soc: mediatek: mtk-socinfo: Add driver for getting chip information William-tw Lin
2023-12-20 10:53 ` AngeloGioacchino Del Regno
2023-12-22 8:03 ` William-tw Lin (林鼎崴)
2023-12-20 11:34 ` Krzysztof Kozlowski
2023-12-20 13:13 ` AngeloGioacchino Del Regno
2023-12-22 8:03 ` William-tw Lin (林鼎崴)
2023-12-20 10:39 ` [PATCH v3 3/3] nvmem: mtk-efuse: Modify " William-tw Lin
2023-12-20 11:02 ` AngeloGioacchino Del Regno
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).