lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <0abd8bacbc61a649af125f6ff1a0ac5fc4841e34.camel@mediatek.com>
Date: Fri, 22 Dec 2023 08:03:36 +0000
From: William-tw Lin (林鼎崴)
	<William-tw.Lin@...iatek.com>
To: "matthias.bgg@...il.com" <matthias.bgg@...il.com>,
	"srinivas.kandagatla@...aro.org" <srinivas.kandagatla@...aro.org>,
	"angelogioacchino.delregno@...labora.com"
	<angelogioacchino.delregno@...labora.com>, "robh+dt@...nel.org"
	<robh+dt@...nel.org>, "krzysztof.kozlowski+dt@...aro.org"
	<krzysztof.kozlowski+dt@...aro.org>, "conor+dt@...nel.org"
	<conor+dt@...nel.org>
CC: "linux-arm-kernel@...ts.infradead.org"
	<linux-arm-kernel@...ts.infradead.org>, "linux-kernel@...r.kernel.org"
	<linux-kernel@...r.kernel.org>, "linux-mediatek@...ts.infradead.org"
	<linux-mediatek@...ts.infradead.org>, "devicetree@...r.kernel.org"
	<devicetree@...r.kernel.org>
Subject: Re: [PATCH v3 2/3] soc: mediatek: mtk-socinfo: Add driver for getting
 chip information

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@...iatek.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 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ