From 452a691a83df1aab77cec33203cb04a817817a05 Mon Sep 17 00:00:00 2001 From: The-going <48602507+The-going@users.noreply.github.com> Date: Thu, 5 May 2022 22:55:13 +0300 Subject: [PATCH] drv: nvmem: sunxi_sid: Add sunxi_get_soc_chipid, sunxi_get_serial --- drivers/nvmem/sunxi_sid.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/nvmem/sunxi_sid.c b/drivers/nvmem/sunxi_sid.c index 37a6abb0e..c81fac63d 100644 --- a/drivers/nvmem/sunxi_sid.c +++ b/drivers/nvmem/sunxi_sid.c @@ -37,6 +37,25 @@ struct sunxi_sid { u32 value_offset; }; +static unsigned int sunxi_soc_chipid[4]; +static unsigned int sunxi_serial[4]; + +int sunxi_get_soc_chipid(unsigned char *chipid) +{ + memcpy(chipid, sunxi_soc_chipid, 16); + + return 0; +} +EXPORT_SYMBOL(sunxi_get_soc_chipid); + +int sunxi_get_serial(unsigned char *serial) +{ + memcpy(serial, sunxi_serial, 16); + + return 0; +} +EXPORT_SYMBOL(sunxi_get_serial); + static int sunxi_sid_read(void *context, unsigned int offset, void *val, size_t bytes) { @@ -167,6 +186,15 @@ static int sunxi_sid_probe(struct platform_device *pdev) platform_set_drvdata(pdev, nvmem); + nvmem_cfg->reg_read(sid, 0, &sunxi_soc_chipid[0], sizeof(int)); + nvmem_cfg->reg_read(sid, 4, &sunxi_soc_chipid[1], sizeof(int)); + nvmem_cfg->reg_read(sid, 8, &sunxi_soc_chipid[2], sizeof(int)); + nvmem_cfg->reg_read(sid, 12, &sunxi_soc_chipid[3], sizeof(int)); + + sunxi_serial[0] = sunxi_soc_chipid[3]; + sunxi_serial[1] = sunxi_soc_chipid[2]; + sunxi_serial[2] = (sunxi_soc_chipid[1] >> 16) & 0x0ffff; + return 0; } -- 2.35.3