From nobody Tue Jun 23 23:43:14 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3223DC433EF for ; Wed, 23 Feb 2022 22:35:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244133AbiBWWfm (ORCPT ); Wed, 23 Feb 2022 17:35:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42106 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244002AbiBWWfh (ORCPT ); Wed, 23 Feb 2022 17:35:37 -0500 Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CD8033AA4C for ; Wed, 23 Feb 2022 14:35:08 -0800 (PST) Received: by mail-wr1-x42b.google.com with SMTP id f17so200112wrh.7 for ; Wed, 23 Feb 2022 14:35:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Owyqqw4ZciiVsh4eNvQY483r2Ssh0yACfpW7BZLM4Mc=; b=dY+p/msL2shWcnl9rA194MZDfMK0Kt849BI/KEcfTQ78OurKFQ9zqDFtrnWyc3Iw8R XVKm16ZEzEg4qCDWE+q0eGAQaF0aGoP5rJTEeh+IlpdMc82Zp18NWXzE9p+NnGkU0leC W8i3hutXpcUVdmR8Dhee51RMd2n3jDoFHFT+TJlJGm1Bw/K96B0ds9wC9LFkI8HxB5HN wWJ3lde1LgqX0t6SdUkMO3fGWapU8FSgPPKvTCDvx8KJN/Dg5cN2YAl8t5EkSIlqzx1v e9GvLQzN4tCBeVe7Grk3cWXnKVUSmWoRVl7415yhk323JDXNVgxYnGxl5xsgkJpbGtjm YwXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Owyqqw4ZciiVsh4eNvQY483r2Ssh0yACfpW7BZLM4Mc=; b=dHp3NMCZ30fK7w+U3HAYFYnBpK6WXSpe6R5Z82sn156bOsnF7Qq8sX8c0I8W5x3YSw vd4jwpTnXMWjlovGUn8vDJjvK4Qxw1Rd8zG9TXecIRx7Xy/CbHg9gYoyYm8NXW0z4YRG NMVDD6+6LzpmsB8iD9thYfaq0VjtL35s/u+UqiA4TF3oLsli4xPNOc48LeUvlKuqgyvk ivjidHdL6853v8WPRonOJQECS+HAlNa7d2Xle+HrM5KBxnd1PY1wBgiaUGcMnC59eLJL PA2uO5NNqG4ZfJKE+hWKI+9PltsZ6hI++jojMneft5MyLv2Um07rLYJzhDmyU4myjs5U Hr5A== X-Gm-Message-State: AOAM531jEvDdT0t8kwrCIIQ4Tq5jtSd7n2Oy7f05BkEY9wtJfQL5zXfB FhPzCrrXQwYpMsCb4n4ZUxOQtw== X-Google-Smtp-Source: ABdhPJyhl15G3bAPoLbVstbkhLKh6b5K/EpXjs4YmkBJKKa28uI8oZthKhrehQSA5cyOwT99MbiNVg== X-Received: by 2002:adf:d1cc:0:b0:1ea:8355:88cc with SMTP id b12-20020adfd1cc000000b001ea835588ccmr1237538wrd.313.1645655707438; Wed, 23 Feb 2022 14:35:07 -0800 (PST) Received: from srini-hackbox.lan (cpc90716-aztw32-2-0-cust825.18-1.cable.virginm.net. [86.26.103.58]) by smtp.gmail.com with ESMTPSA id c9sm729435wrn.51.2022.02.23.14.35.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Feb 2022 14:35:06 -0800 (PST) From: Srinivas Kandagatla To: gregkh@linuxfoundation.org Cc: linux-kernel@vger.kernel.org, Knox Chiou , Douglas Anderson , Srinivas Kandagatla Subject: [PATCH 1/3] nvmem: qfprom: Increase fuse blow timeout to prevent write fail Date: Wed, 23 Feb 2022 22:35:00 +0000 Message-Id: <20220223223502.29454-2-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20220223223502.29454-1-srinivas.kandagatla@linaro.org> References: <20220223223502.29454-1-srinivas.kandagatla@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Knox Chiou sc7180 blow fuses got slightly chances to hit qfprom_reg_write timeout. Current timeout is simply too low. Since blowing fuses is a very rare operation, so the risk associated with overestimating this number is low. Increase fuse blow timeout from 1ms to 10ms. Signed-off-by: Knox Chiou Reviewed-by: Douglas Anderson Signed-off-by: Srinivas Kandagatla --- drivers/nvmem/qfprom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/nvmem/qfprom.c b/drivers/nvmem/qfprom.c index 061293f9136b..162132c7dab9 100644 --- a/drivers/nvmem/qfprom.c +++ b/drivers/nvmem/qfprom.c @@ -22,7 +22,7 @@ =20 /* Amount of time required to hold charge to blow fuse in micro-seconds */ #define QFPROM_FUSE_BLOW_POLL_US 100 -#define QFPROM_FUSE_BLOW_TIMEOUT_US 1000 +#define QFPROM_FUSE_BLOW_TIMEOUT_US 10000 =20 #define QFPROM_BLOW_STATUS_OFFSET 0x048 #define QFPROM_BLOW_STATUS_BUSY 0x1 --=20 2.21.0 From nobody Tue Jun 23 23:43:14 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 70E30C43217 for ; Wed, 23 Feb 2022 22:35:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244379AbiBWWft (ORCPT ); Wed, 23 Feb 2022 17:35:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42126 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243645AbiBWWfi (ORCPT ); Wed, 23 Feb 2022 17:35:38 -0500 Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DE2C21B7B8 for ; Wed, 23 Feb 2022 14:35:09 -0800 (PST) Received: by mail-wr1-x42e.google.com with SMTP id l13so228710wrt.2 for ; Wed, 23 Feb 2022 14:35:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lnzACGL84E5PU1+kaxCWrF1bw5ZldjRsYu9n9bKWfUY=; b=Ehymhi8IrmCzG1BSXubioskCKUTlWgCkcWLdVreGImIogJyFyXkoPzH+vTvfypVyZG Nlc4gQ9/d4C0GwTuCK7L4aT7/KxZtOy9VWF3R+4nW8v9cg5ip5wht0U0KJpaV312LrIZ j5nWIeiqkWVSmF2LJGJVQ000eG/pVzwcAEZX0XVh/Zpvgt2488R+TFKZP+jM3KKotDH7 GOW6ESjG38AYWrH/FH0n9pKh9rJqcurRdHw/dht+0l+Y276vGwULyoMMfXmmsg4FkVbD sfxhl9OK6Imy/yy2D6NTdp1Exe8Sg4w4DuehyaXKNCPC6m9+SV6nN9sFCTqc0yFOPUD2 5L/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lnzACGL84E5PU1+kaxCWrF1bw5ZldjRsYu9n9bKWfUY=; b=ZAI/k2m18Lcuc3UgMGk/pfJcJad/Ato+aQqW2eZD8IYPF1PTezQi7lHpq+Iatyo9er UDHi17oM+os/fTUrmJXS6h4nZy7Y/0QLBMJkXBf6et307ENYTB82HT5n8tnK4NSeR6a/ PdW3lSeVbytPH+6xLhbCMprqxtpIXWERcHaSeTpkALMyp+4kD68Rzo2PoKwz6XEcRFRF YRxmUqfgsEVhy08CXjFW2pXv7CdbrEKTkOUK6fl2vxLvhdleg7nJyKUsAo7bVIHCB7Zt zb0lVpZAq/gRVZCQ8xWb90k2YYVE/mwC2NFxHGBD+PeSgOWWrwS1kgnPpig5Ft93YhmG L7ew== X-Gm-Message-State: AOAM530t1y2KS88UAmljXPmfx9hh99muWTmtrNX6WoV7jLhasH2KDsEa yXrnMCpSm/Gsr2VhV900qwZzWIKlRLwpJQ== X-Google-Smtp-Source: ABdhPJy0v+RGKBsFc0njCkuWEdxMxFY6hbVU1qQ/W7ln/jyShbqbct9HIsEuPB4YqNjPhSYju2Hl2A== X-Received: by 2002:a5d:6546:0:b0:1e6:5b59:4eab with SMTP id z6-20020a5d6546000000b001e65b594eabmr1236235wrv.143.1645655708431; Wed, 23 Feb 2022 14:35:08 -0800 (PST) Received: from srini-hackbox.lan (cpc90716-aztw32-2-0-cust825.18-1.cable.virginm.net. [86.26.103.58]) by smtp.gmail.com with ESMTPSA id c9sm729435wrn.51.2022.02.23.14.35.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Feb 2022 14:35:07 -0800 (PST) From: Srinivas Kandagatla To: gregkh@linuxfoundation.org Cc: linux-kernel@vger.kernel.org, Vincent Shih , Srinivas Kandagatla Subject: [PATCH 2/3] nvmem: Add driver for OCOTP in Sunplus SP7021 Date: Wed, 23 Feb 2022 22:35:01 +0000 Message-Id: <20220223223502.29454-3-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20220223223502.29454-1-srinivas.kandagatla@linaro.org> References: <20220223223502.29454-1-srinivas.kandagatla@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Vincent Shih Add driver for OCOTP in Sunplus SP7021 Signed-off-by: Vincent Shih Signed-off-by: Srinivas Kandagatla --- MAINTAINERS | 5 + drivers/nvmem/Kconfig | 12 ++ drivers/nvmem/Makefile | 2 + drivers/nvmem/sunplus-ocotp.c | 228 ++++++++++++++++++++++++++++++++++ 4 files changed, 247 insertions(+) create mode 100644 drivers/nvmem/sunplus-ocotp.c diff --git a/MAINTAINERS b/MAINTAINERS index ea3e6c914384..534772dfc3ef 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -18491,6 +18491,11 @@ S: Maintained F: Documentation/devicetree/bindings/rtc/sunplus,sp7021-rtc.yaml F: drivers/rtc/rtc-sunplus.c =20 +SUNPLUS OCOTP DRIVER +M: Vincent Shih +S: Maintained +F: drivers/nvmem/sunplus-ocotp.c + SUPERH M: Yoshinori Sato M: Rich Felker diff --git a/drivers/nvmem/Kconfig b/drivers/nvmem/Kconfig index 4063ea15f7d2..555aa77a574d 100644 --- a/drivers/nvmem/Kconfig +++ b/drivers/nvmem/Kconfig @@ -312,4 +312,16 @@ config NVMEM_LAYERSCAPE_SFP This driver can also be built as a module. If so, the module will be called layerscape-sfp. =20 +config NVMEM_SUNPLUS_OCOTP + tristate "Sunplus SoC OTP support" + depends on SOC_SP7021 || COMPILE_TEST + depends on HAS_IOMEM + help + This is a driver for the On-chip OTP controller (OCOTP) available + on Sunplus SoCs. It provides access to 128 bytes of one-time + programmable eFuse. + + This driver can also be built as a module. If so, the module + will be called nvmem-sunplus-ocotp. + endif diff --git a/drivers/nvmem/Makefile b/drivers/nvmem/Makefile index d4e1052d2b95..891958e29d25 100644 --- a/drivers/nvmem/Makefile +++ b/drivers/nvmem/Makefile @@ -63,3 +63,5 @@ obj-$(CONFIG_NVMEM_BRCM_NVRAM) +=3D nvmem_brcm_nvram.o nvmem_brcm_nvram-y :=3D brcm_nvram.o obj-$(CONFIG_NVMEM_LAYERSCAPE_SFP) +=3D nvmem-layerscape-sfp.o nvmem-layerscape-sfp-y :=3D layerscape-sfp.o +obj-$(CONFIG_NVMEM_SUNPLUS_OCOTP) +=3D nvmem_sunplus_ocotp.o +nvmem_sunplus_ocotp-y :=3D sunplus-ocotp.o diff --git a/drivers/nvmem/sunplus-ocotp.c b/drivers/nvmem/sunplus-ocotp.c new file mode 100644 index 000000000000..2dc59c22eb55 --- /dev/null +++ b/drivers/nvmem/sunplus-ocotp.c @@ -0,0 +1,228 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* + * The OCOTP driver for Sunplus SP7021 + * + * Copyright (C) 2019 Sunplus Technology Inc., All rights reserved. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * OTP memory + * Each bank contains 4 words (32 bits). + * Bank 0 starts at offset 0 from the base. + */ + +#define OTP_WORDS_PER_BANK 4 +#define OTP_WORD_SIZE sizeof(u32) +#define OTP_BIT_ADDR_OF_BANK (8 * OTP_WORD_SIZE * OTP_WORDS_PER_BANK) +#define QAC628_OTP_NUM_BANKS 8 +#define QAC628_OTP_SIZE (QAC628_OTP_NUM_BANKS * OTP_WORDS_PER_BANK * OTP= _WORD_SIZE) +#define OTP_READ_TIMEOUT_US 200000 + +/* HB_GPIO */ +#define ADDRESS_8_DATA 0x20 + +/* OTP_RX */ +#define OTP_CONTROL_2 0x48 +#define OTP_RD_PERIOD GENMASK(15, 8) +#define OTP_RD_PERIOD_MASK ~GENMASK(15, 8) +#define CPU_CLOCK FIELD_PREP(OTP_RD_PERIOD, 30) +#define SEL_BAK_KEY2 BIT(5) +#define SEL_BAK_KEY2_MASK ~BIT(5) +#define SW_TRIM_EN BIT(4) +#define SW_TRIM_EN_MASK ~BIT(4) +#define SEL_BAK_KEY BIT(3) +#define SEL_BAK_KEY_MASK ~BIT(3) +#define OTP_READ BIT(2) +#define OTP_LOAD_SECURE_DATA BIT(1) +#define OTP_LOAD_SECURE_DATA_MASK ~BIT(1) +#define OTP_DO_CRC BIT(0) +#define OTP_DO_CRC_MASK ~BIT(0) +#define OTP_STATUS 0x4c +#define OTP_READ_DONE BIT(4) +#define OTP_READ_DONE_MASK ~BIT(4) +#define OTP_LOAD_SECURE_DONE_MASK ~BIT(2) +#define OTP_READ_ADDRESS 0x50 + +enum base_type { + HB_GPIO, + OTPRX, + BASEMAX, +}; + +struct sp_ocotp_priv { + struct device *dev; + void __iomem *base[BASEMAX]; + struct clk *clk; +}; + +struct sp_ocotp_data { + int size; +}; + +const struct sp_ocotp_data sp_otp_v0 =3D { + .size =3D QAC628_OTP_SIZE, +}; + +static int sp_otp_read_real(struct sp_ocotp_priv *otp, int addr, char *val= ue) +{ + unsigned int addr_data; + unsigned int byte_shift; + unsigned int status; + int ret; + + addr_data =3D addr % (OTP_WORD_SIZE * OTP_WORDS_PER_BANK); + addr_data =3D addr_data / OTP_WORD_SIZE; + + byte_shift =3D addr % (OTP_WORD_SIZE * OTP_WORDS_PER_BANK); + byte_shift =3D byte_shift % OTP_WORD_SIZE; + + addr =3D addr / (OTP_WORD_SIZE * OTP_WORDS_PER_BANK); + addr =3D addr * OTP_BIT_ADDR_OF_BANK; + + writel(readl(otp->base[OTPRX] + OTP_STATUS) & OTP_READ_DONE_MASK & + OTP_LOAD_SECURE_DONE_MASK, otp->base[OTPRX] + OTP_STATUS); + writel(addr, otp->base[OTPRX] + OTP_READ_ADDRESS); + writel(readl(otp->base[OTPRX] + OTP_CONTROL_2) | OTP_READ, + otp->base[OTPRX] + OTP_CONTROL_2); + writel(readl(otp->base[OTPRX] + OTP_CONTROL_2) & SEL_BAK_KEY2_MASK & SW_T= RIM_EN_MASK + & SEL_BAK_KEY_MASK & OTP_LOAD_SECURE_DATA_MASK & OTP_DO_CRC_MASK, + otp->base[OTPRX] + OTP_CONTROL_2); + writel((readl(otp->base[OTPRX] + OTP_CONTROL_2) & OTP_RD_PERIOD_MASK) | C= PU_CLOCK, + otp->base[OTPRX] + OTP_CONTROL_2); + + ret =3D readl_poll_timeout(otp->base[OTPRX] + OTP_STATUS, status, + status & OTP_READ_DONE, 10, OTP_READ_TIMEOUT_US); + + if (ret < 0) + return ret; + + *value =3D (readl(otp->base[HB_GPIO] + ADDRESS_8_DATA + addr_data * OTP_W= ORD_SIZE) + >> (8 * byte_shift)) & 0xff; + + return ret; +} + +static int sp_ocotp_read(void *priv, unsigned int offset, void *value, siz= e_t bytes) +{ + struct sp_ocotp_priv *otp =3D priv; + unsigned int addr; + char *buf =3D value; + char val[4]; + int ret; + + ret =3D clk_enable(otp->clk); + if (ret) + return ret; + + *buf =3D 0; + for (addr =3D offset; addr < (offset + bytes); addr++) { + ret =3D sp_otp_read_real(otp, addr, val); + if (ret < 0) { + dev_err(otp->dev, "OTP read fail:%d at %d", ret, addr); + goto disable_clk; + } + + *buf++ =3D *val; + } + +disable_clk: + clk_disable(otp->clk); + + return ret; +} + +static struct nvmem_config sp_ocotp_nvmem_config =3D { + .name =3D "sp-ocotp", + .read_only =3D true, + .word_size =3D 1, + .size =3D QAC628_OTP_SIZE, + .stride =3D 1, + .reg_read =3D sp_ocotp_read, + .owner =3D THIS_MODULE, +}; + +static int sp_ocotp_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct nvmem_device *nvmem; + struct sp_ocotp_priv *otp; + struct resource *res; + int ret; + + otp =3D devm_kzalloc(dev, sizeof(*otp), GFP_KERNEL); + if (!otp) + return -ENOMEM; + + otp->dev =3D dev; + + res =3D platform_get_resource_byname(pdev, IORESOURCE_MEM, "hb_gpio"); + otp->base[HB_GPIO] =3D devm_ioremap_resource(dev, res); + if (IS_ERR(otp->base[HB_GPIO])) + return PTR_ERR(otp->base[HB_GPIO]); + + res =3D platform_get_resource_byname(pdev, IORESOURCE_MEM, "otprx"); + otp->base[OTPRX] =3D devm_ioremap_resource(dev, res); + if (IS_ERR(otp->base[OTPRX])) + return PTR_ERR(otp->base[OTPRX]); + + otp->clk =3D devm_clk_get(&pdev->dev, NULL); + if (IS_ERR(otp->clk)) + return dev_err_probe(&pdev->dev, PTR_ERR(otp->clk), + "devm_clk_get fail\n"); + + ret =3D clk_prepare(otp->clk); + if (ret < 0) { + dev_err(dev, "failed to prepare clk: %d\n", ret); + return ret; + } + + sp_ocotp_nvmem_config.priv =3D otp; + sp_ocotp_nvmem_config.dev =3D dev; + + nvmem =3D devm_nvmem_register(dev, &sp_ocotp_nvmem_config); + if (IS_ERR(nvmem)) + return dev_err_probe(&pdev->dev, PTR_ERR(nvmem), + "register nvmem device fail\n"); + + platform_set_drvdata(pdev, nvmem); + + dev_dbg(dev, "banks:%d x wpb:%d x wsize:%d =3D %d", + (int)QAC628_OTP_NUM_BANKS, (int)OTP_WORDS_PER_BANK, + (int)OTP_WORD_SIZE, (int)QAC628_OTP_SIZE); + + dev_info(dev, "by Sunplus (C) 2020"); + + return 0; +} + +static const struct of_device_id sp_ocotp_dt_ids[] =3D { + { .compatible =3D "sunplus,sp7021-ocotp", .data =3D &sp_otp_v0 }, + { } +}; +MODULE_DEVICE_TABLE(of, sp_ocotp_dt_ids); + +static struct platform_driver sp_otp_driver =3D { + .probe =3D sp_ocotp_probe, + .driver =3D { + .name =3D "sunplus,sp7021-ocotp", + .of_match_table =3D sp_ocotp_dt_ids, + } +}; +module_platform_driver(sp_otp_driver); + +MODULE_AUTHOR("Vincent Shih "); +MODULE_DESCRIPTION("Sunplus On-Chip OTP driver"); +MODULE_LICENSE("GPL"); + --=20 2.21.0 From nobody Tue Jun 23 23:43:14 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 14E89C433F5 for ; Wed, 23 Feb 2022 22:35:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244473AbiBWWfy (ORCPT ); Wed, 23 Feb 2022 17:35:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42190 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244089AbiBWWfk (ORCPT ); Wed, 23 Feb 2022 17:35:40 -0500 Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com [IPv6:2a00:1450:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 16C4D50064 for ; Wed, 23 Feb 2022 14:35:11 -0800 (PST) Received: by mail-wr1-x433.google.com with SMTP id j17so270933wrc.0 for ; Wed, 23 Feb 2022 14:35:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6hRZD6N659v/Uhm1WCmy8CVfNDpkSy/hE0ouy3/yCRk=; b=JLmt2pqzSuFqCTMy4tGGWGOUY9cJpIvFOaqgJTynrAgIlh9aBMe7dHMjQfAPINZBcI NLtAzsgFaQuH8/GyDBUSsw1q7xxssNRB2b8QSqsmtMepjW0I7CIqHrLBkjX6wvOiZoBI HQohKdLLDYRtuHl/eFIYbuug8JVUEeuGp2SSqr1OfLQsfVjl9bFPUKjGpNBHxpqPlcDM AHs5Fq6dV18YU9LvWvub0xcA8iqje6nvLEF+1S3hKxKW0mNauguGyDlnEqWYVVhKMZtp 2ETz1skme069prsyRdXbd2oamO6yKCtLcJXKii4D0jv6WJvAhJm2sy1L2Jhf03lvWw95 Dpuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6hRZD6N659v/Uhm1WCmy8CVfNDpkSy/hE0ouy3/yCRk=; b=K6ScnNI2fcGKzaxDI+WHLwZ3gJey8ncS89zM8yTUeQUeofNO92JnmTsAHOH6VBIUv6 m0MDTK5ERG09IXAoqgmHzdupcRpQUamg2NxZaUB34LwcdqCzpBVOoOJcYSpQy7SlwDcX SGWl8TnAOTUJCqxj+4z4f0Gn+KDaRWESRg5L/VkWKgfZHxp+n91iXuV/0+Bj+fP0+kPv bbF8FGXopVplO7PQ6P5f4hLE86EuzoV7afJgoe0tzJ+R2vb/5RFpoQP6Hh3h6L4+kyHf RBvP1tv6sqRjzrybKKH1Dlk7Va50jS/pdUN+fEi/RApektP1FfgUy7Ll1lPJgqw2eBno Ahjw== X-Gm-Message-State: AOAM530ffrnmIGr60VGXCX8/DedmoWtkV9pa2aUk383yQ8I+f6EiMK6c PYcY9Caxa4ZQsfFIMaB3mSErV3FFj2fLEw== X-Google-Smtp-Source: ABdhPJzlCiLKhzQyqlb0+W5jcsxKJQVGASkIz2zp7TAIlv6rtg5xUG3lelogwq5yccIGMFeD+eZhRg== X-Received: by 2002:a05:6000:1ac5:b0:1ea:7870:d7eb with SMTP id i5-20020a0560001ac500b001ea7870d7ebmr1274205wry.171.1645655709701; Wed, 23 Feb 2022 14:35:09 -0800 (PST) Received: from srini-hackbox.lan (cpc90716-aztw32-2-0-cust825.18-1.cable.virginm.net. [86.26.103.58]) by smtp.gmail.com with ESMTPSA id c9sm729435wrn.51.2022.02.23.14.35.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Feb 2022 14:35:09 -0800 (PST) From: Srinivas Kandagatla To: gregkh@linuxfoundation.org Cc: linux-kernel@vger.kernel.org, Vincent Shih , Rob Herring , Srinivas Kandagatla Subject: [PATCH 3/3] dt-bindings: nvmem: Add bindings doc for Sunplus OCOTP driver Date: Wed, 23 Feb 2022 22:35:02 +0000 Message-Id: <20220223223502.29454-4-srinivas.kandagatla@linaro.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20220223223502.29454-1-srinivas.kandagatla@linaro.org> References: <20220223223502.29454-1-srinivas.kandagatla@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Vincent Shih Add bindings doc for Sunplus OCOTP driver Reviewed-by: Rob Herring Signed-off-by: Vincent Shih Signed-off-by: Srinivas Kandagatla --- .../bindings/nvmem/sunplus,sp7021-ocotp.yaml | 86 +++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 87 insertions(+) create mode 100644 Documentation/devicetree/bindings/nvmem/sunplus,sp7021-= ocotp.yaml diff --git a/Documentation/devicetree/bindings/nvmem/sunplus,sp7021-ocotp.y= aml b/Documentation/devicetree/bindings/nvmem/sunplus,sp7021-ocotp.yaml new file mode 100644 index 000000000000..4b28f37dfb67 --- /dev/null +++ b/Documentation/devicetree/bindings/nvmem/sunplus,sp7021-ocotp.yaml @@ -0,0 +1,86 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright (C) Sunplus Co., Ltd. 2021 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/nvmem/sunplus,sp7021-ocotp.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: On-Chip OTP Memory for Sunplus SP7021 + +maintainers: + - Vincent Shih + +allOf: + - $ref: "nvmem.yaml#" + +properties: + compatible: + const: sunplus,sp7021-ocotp + + reg: + maxItems: 2 + + reg-names: + items: + - const: hb_gpio + - const: otprx + + clocks: + maxItems: 1 + + "#address-cells": + const: 1 + + "#size-cells": + const: 1 + + thermal-calibration: + type: object + description: thermal calibration values + + disconnect-voltage: + type: object + description: disconnect voltages of usb2 port 0 and port 1 + + mac-address0: + type: object + description: MAC address of ethernet port 0 + + mac-address1: + type: object + description: MAC address of ethernet port 1 + +required: + - compatible + - reg + - reg-names + - clocks + +unevaluatedProperties: false + +examples: + - | + #include + + otp: otp@9c00af00 { + compatible =3D "sunplus,sp7021-ocotp"; + reg =3D <0x9c00af00 0x34>, <0x9c00af80 0x58>; + reg-names =3D "hb_gpio", "otprx"; + clocks =3D <&clks OTPRX>; + + #address-cells =3D <1>; + #size-cells =3D <1>; + therm_calib: thermal-calibration@14 { + reg =3D <0x14 0x3>; + }; + disc_vol: disconnect-voltage@18 { + reg =3D <0x18 0x2>; + }; + mac_addr0: mac-address0@34 { + reg =3D <0x34 0x6>; + }; + mac_addr1: mac-address1@3a { + reg =3D <0x3a 0x6>; + }; + }; +... diff --git a/MAINTAINERS b/MAINTAINERS index 534772dfc3ef..507697a11838 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -18494,6 +18494,7 @@ F: drivers/rtc/rtc-sunplus.c SUNPLUS OCOTP DRIVER M: Vincent Shih S: Maintained +F: Documentation/devicetree/bindings/nvmem/sunplus,sp7021-ocotp.yaml F: drivers/nvmem/sunplus-ocotp.c =20 SUPERH --=20 2.21.0