From nobody Mon May 25 05:12:13 2026 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 38F7240757A for ; Mon, 18 May 2026 14:20:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779114065; cv=none; b=MgCKddyXlGzor9QGlPiZHUt0kRdG5pIdFk1SegkTk3FBQibiHZt4sjWFfOMfG4dO0LmA+EyY2OwqvyqaQUFVs7rodVQUjjp2XOM0rK6RkpA4CPCAFHdf0N/O7SR0m+V3yJ4vgdnPcVfqFs8vtKx8PQzBAUdM6VROwN4m32cnFxM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779114065; c=relaxed/simple; bh=BXR1guabdFkXTU0pewTHfayRrjY42kQnfPQoGJ/jZok=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kJMkJEpJR7ElBKZ9Qbohv5WSFC7szHr4KsFp18ywTjLGsexI0qfQY7vxPdu6f+kvGHSuSyWyAT9/EOsSCfqxrGOCLKMQXmDq0H77q3WkLGD3hNDOkmHWTcBDNucfN3H7NJD/uBlVFvaukupOT0pXKqXfZ4+7CjCFNaNbbyLbt9o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=p3aogkLy; arc=none smtp.client-ip=209.85.221.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="p3aogkLy" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-453903ee4adso2029161f8f.3 for ; Mon, 18 May 2026 07:20:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779114053; x=1779718853; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=gfacA4QRILcKp0x4kch3e/wxFubsy8hlXb/wYlJDVIk=; b=p3aogkLyMQ4P0gmtfgoBQIDJ3PsVHp2rEDUHiWatOrXWxa6VpX1XVC1bZpSYU0LuQ/ jImXEm+cKQFI0libPFXaFwxw7K5FYs1ZyHp99BP8lVsrITiqKKMDVNOVNd1yIM+RfYOC 6uxlEulajh/r6ZR8Tqy3AyADHOCj4FkBRDwXgVEEZIfMWvkRWQHFxzo+JZshgV/clFHN mknVZdQ532lbkFcqblVBGcRcrkYuPM6TK+rzhmXDaz1aE+D+/neIQgcNZBdhB7RLTevY xBGBqUEumIo85IPA+6GPoEqmFmCtPKkwPmxKZTUFPY2Abtoqk7Tf9RBh+/r8lUc7OP0I KU5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779114053; x=1779718853; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=gfacA4QRILcKp0x4kch3e/wxFubsy8hlXb/wYlJDVIk=; b=NwG7c/mhQ9TjAOflWT0vk5atMKKqBzXj6xKSGfDsBeYSuVYmezbJ9ANMP/jkOPuCeY 4h0cK98NgApRayIZyEpOWI/QL0WIPHTvCvzI2mJj2oQrG00uEm/AjbutrgiyKkl8J1gx NQMQsrNfrIDE9byB8Mg4I6mYNIcmCbJXGqDfNzZdWFZOOMnN2rWnd8q0JmjduNFE1B5V BQJWm05H872FmeacSNOgziQ5ygCmDS77zvkC9kkaxEEvpNGUaSU9S2+y6fK3Nuy12Hlp 8kaFgBPH/wR5JG54yToT3bkStZJqKB7neH490nVElIkNKeqcme1Zp8ei8QnrlDA0aFNz lFWA== X-Forwarded-Encrypted: i=1; AFNElJ9ZwjRfBLnakqSPYUnuc0HsScfad4KRHHr3w5yT5I/W/fse6aL07tAHGGaW/IAYtQ0RR3p2szixm6yQF3w=@vger.kernel.org X-Gm-Message-State: AOJu0YwKwPQPgEtZGxFHdLrZX1+Gh3ozcgpbi6xV6YlIR/CfQp3v3p0P 5JxPur3t/TwH8e7BIkh60d1AK0vl0IVtwXSE91EdZtYM2O66f1pDaIQj X-Gm-Gg: Acq92OHZhILe7Chr6uMG1xjIIK11ICkVHIPacE5PNPC4fj79UMKftxCRnLtgxZzCCfW WHdzCNjBQyQLBAC35nOSQs4kjiFN5R6c2Z7iMkuoI4DBPRw+ZULoacjuGdA5gMfO/j1A70mmbIw VbpPEMc8hf5BczgKj0tIKmuQmnICIRqQjAo3PpsAB40s6Pcl2UCGF7Hzzd7dFOXKQLgLXtxH/49 BHeJA5bXI8rCmjIr+Jdpmsq7NNF6EkhmMMmzncBEXO/8KiHmWpM+FZCoZCbY0vbkVipXxsgOEua DWDggQ007gNP4fPFVb2fgEi1B/nnB5m2UbcYiKIEzvrgoVd3VYww6MNnDEIa0uZWoWdEc0M6zhJ Ln2L8auesXAg2rK4II+63h1MUL4HNCPsJ2k7JiRag5FSYtdkgQLzPS7ggFfyir1tEdIeKgljZm+ /uD/+fIqwbnwrey2IRn+Tf2+9ymrJhxDz0H9G3EgnekfxsjniSxi1xP0vb+llC1Eyj8d38l7MUb 8ue84uabQ== X-Received: by 2002:a5d:584c:0:b0:439:b8b2:fabc with SMTP id ffacd0b85a97d-45e5c587396mr22645755f8f.21.1779114051690; Mon, 18 May 2026 07:20:51 -0700 (PDT) Received: from Ansuel-XPS24 (host-82-55-252-101.retail.telecomitalia.it. [82.55.252.101]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-45da0fe0fecsm34905626f8f.26.2026.05.18.07.20.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 07:20:50 -0700 (PDT) From: Christian Marangi To: Srinivas Kandagatla , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Christian Marangi , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 1/2] dt-bindings: nvmem: airoha: add SMC eFuses schema Date: Mon, 18 May 2026 16:20:31 +0200 Message-ID: <20260518142042.8331-2-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260518142042.8331-1-ansuelsmth@gmail.com> References: <20260518142042.8331-1-ansuelsmth@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add Airoha SMC eFuses schema to document new Airoha SoC AN7581/AN7583 way of accessing the 2 eFuse bank via the SMC command. Each eFuse bank expose 64 eFuse cells of 32 bit used to give information on HW Revision, PHY Calibration, Device Model, Private Key and all kind of other info specific to the SoC or the running system. Signed-off-by: Christian Marangi Reviewed-by: Rob Herring (Arm) --- .../bindings/nvmem/airoha,smc-efuses.yaml | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Documentation/devicetree/bindings/nvmem/airoha,smc-efus= es.yaml diff --git a/Documentation/devicetree/bindings/nvmem/airoha,smc-efuses.yaml= b/Documentation/devicetree/bindings/nvmem/airoha,smc-efuses.yaml new file mode 100644 index 000000000000..e21ce07c4f41 --- /dev/null +++ b/Documentation/devicetree/bindings/nvmem/airoha,smc-efuses.yaml @@ -0,0 +1,65 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/nvmem/airoha,smc-efuses.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Airoha SMC eFuses + +description: | + Airoha new SoC (AN7581/AN7583) expose banks of eFuse accessible + via specific SMC commands. + + 2 different bank of eFuse or 64 cells of 32 bit are exposed + read-only used to give information on HW Revision, PHY Calibration, + Device Model, Private Key... + +maintainers: + - Christian Marangi + +properties: + compatible: + enum: + - airoha,an7581-efuses + + "#address-cells": + const: 1 + + "#size-cells": + const: 0 + +patternProperties: + '^efuse-bank@[0-1]$': + type: object + + allOf: + - $ref: nvmem.yaml# + + properties: + reg: + description: Identify the eFuse bank. + enum: [0, 1] + + required: + - reg + + unevaluatedProperties: false + +required: + - compatible + +additionalProperties: false + +examples: + - | + efuse { + compatible =3D "airoha,an7581-efuses"; + #address-cells =3D <1>; + #size-cells =3D <0>; + + efuse-bank@0 { + reg =3D <0>; + }; + }; + +... --=20 2.53.0 From nobody Mon May 25 05:12:13 2026 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7F5423F412E for ; Mon, 18 May 2026 14:20:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779114065; cv=none; b=smnYODoDPB7Mm0AXC45QGo6Bqfr1hQrFNuequxSHeTjFsfbQWJebbLvNwjlSMJjitppHx8JZ5GfN4xpMEDV5dC8hzcTrrak+E2azC0uG5FgziPxeWW2exJQitxwch8dG1R3HHndxfD7TbDf/tAeReYjZOi+iQbsNm/K0LPXEff8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779114065; c=relaxed/simple; bh=7IxyLn7/GTQfidiqPllWO1BcJ/tmNAyzxF6iCaiajmc=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pbFHWmAXeTKkECBtIXo06eLjZ2dMn5U29JX4ZLfRGklmwFDcQttK/XemIHiBoF76sAVqVKhRQPAfHPwFpFr8OYlWk6nA4ekm+j7+JM0pvX6mjAbIe78V2gAkgUSw6B8Yr2u8eaSE8pyjEh+i6/lPJSmz3SzZ6YMlCAs/WeTjVBw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=B24OJsFo; arc=none smtp.client-ip=209.85.221.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="B24OJsFo" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-45e7c636e74so771642f8f.0 for ; Mon, 18 May 2026 07:20:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779114054; x=1779718854; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Two8INXQM5ey4/UQP4u04Ps1i9Z9naN07Q8ziJqEkkw=; b=B24OJsFou51aG0q89wR9ewMfHMadWDI6oCCiF8HhIyb0RLL6CeGZI7XRGi3cLq8/z0 EHPSTc+2rBAvFLBE9p86/KRcm8jc0G7CJnMtdVxmGoOOHWaUBE5cSlkfneUUL105pSjl WFzhmNh0BF926dO7IFcQh8lqxFWxGYMVyrcIWxqlKKGKLSxCERoKJnX9jbRQPx0KvR5I k4TfrDMp/e1cFvnl+BPOmL8W1N8a4KzEnayM2qRFUUzIon2iB2fzB96C0gsmH1hy2fHQ 2xT9jyu7q2I2OgRw/UoKoMpi+D6JHMg6r7ZrXl+mmfuhUq4jCBO6lzbVhevPvBFh8UFz 592A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779114054; x=1779718854; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Two8INXQM5ey4/UQP4u04Ps1i9Z9naN07Q8ziJqEkkw=; b=bbKzt7G4JTuVOXKSQi3TCLixI5Xv0FRKoDgDo90zok9WkvV9ZXjaNIJhLqPZfKRl7l RPXyA2fu03dBAWHpgJr+J7Y2CFT+pv2qMigm0Y7jPoCu+LnGSLinYbM+3R1BntkT5X1A anblJIrz6pq4KCh8QLgpvYQjmpsTjps6yqHE4GtIWzrg4ncEU3J3fC9fdcypC4NzaBtT 97UOcDTR4w4ljBgz0BNkhV9xRJYwIevpL9l2Q7fOJj91H81veAYQ/awbOQMR9pzJVqLi UhirWpeSgeEM3U7OaeRagGKNpkXHUjzeoLhSdlpa8lsduxBde6Sc6OIuM0T2pNyrZyl/ IhDg== X-Forwarded-Encrypted: i=1; AFNElJ9OiietPQ7MbCK2r4hak674yKdyJTO9HoOCGbb936tLV/K/u9Af76W70lOtRtr4v6Yi+o8b0I8IZWKHlAY=@vger.kernel.org X-Gm-Message-State: AOJu0YyG905L/YOf+GaimuPmV63ZC8yA9aA1RUnlVtGIexAAE+kk+OET ZKuTygk6xa2wJF5JA0XgWb+HvvmT4unieoPnzFe0U3Kh6iD/5d1Pk62d X-Gm-Gg: Acq92OFIEVv23xvzx1gVbDqk3Sh4rL52nDIqRH2piRKh0mltBiVGJ+zJfXSVBBJAMDw 97zNepScbjDU8qwVhebmY9H8+uDv9/nBMPibTDq/HCsuCJ87fDTYiQ4racKHmwMFM8lYmscVICG wA2WeuP2Tss8i1N9EHbTnP0prTq36bz71smoxfVbCMuO/tV1IdNHmjtVJxVT/xPyfLazjiZ7rKa mc6zbksuda+crGyudtNb749MGe8W7U05iYalMx3nvFzqOh3BahCGyGAkBT/K36BJjOlIfmtFpZn pXvLs/e53DyYgASdHnAEXB3xfBAPzEd5nOehp9xc4Aqvr4DdxSDOcJGyfAKyQX+ofZ1LsgXPZJn gc7g1bFTiNHXToieFrbLGEWpiGr0/dxnChXMyw2rnuU85rRoknol2ohPRK1bIROcxovfqFAJvRP nmMPvqCNOEUpUNjjyUW5OEzweZv3x2c+JgTUXIcqo+u5W7mvemcD0egaZKfjJWwYelCI95Ul3Sn 2nRaRKWKQ== X-Received: by 2002:a05:6000:26c4:b0:43c:fa96:d939 with SMTP id ffacd0b85a97d-45e5c5e2ee5mr23864236f8f.22.1779114053016; Mon, 18 May 2026 07:20:53 -0700 (PDT) Received: from Ansuel-XPS24 (host-82-55-252-101.retail.telecomitalia.it. [82.55.252.101]) by smtp.googlemail.com with ESMTPSA id ffacd0b85a97d-45da0fe0fecsm34905626f8f.26.2026.05.18.07.20.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 07:20:52 -0700 (PDT) From: Christian Marangi To: Srinivas Kandagatla , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Christian Marangi , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 2/2] nvmem: airoha: Add support for SMC eFUSE Date: Mon, 18 May 2026 16:20:32 +0200 Message-ID: <20260518142042.8331-3-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260518142042.8331-1-ansuelsmth@gmail.com> References: <20260518142042.8331-1-ansuelsmth@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add support for SMC eFUSE on AN7581 SoC. The SoC have 2 set of 2048 bits of eFUSE that are used to read calibration value for PCIe, Thermal, USB and other specific info of the SoC like revision and HW device present. eFuse value are taken by sending SMC command. ATF is responsible of validaing the data and rejecting reading protected data (like Private Key). In such case the SMC command will return non-zero value on a0 register. Signed-off-by: Christian Marangi --- drivers/nvmem/Kconfig | 13 ++++ drivers/nvmem/Makefile | 2 + drivers/nvmem/airoha-smc-efuses.c | 118 ++++++++++++++++++++++++++++++ 3 files changed, 133 insertions(+) create mode 100644 drivers/nvmem/airoha-smc-efuses.c diff --git a/drivers/nvmem/Kconfig b/drivers/nvmem/Kconfig index 74ddbd0f79b0..95a399258538 100644 --- a/drivers/nvmem/Kconfig +++ b/drivers/nvmem/Kconfig @@ -28,6 +28,19 @@ source "drivers/nvmem/layouts/Kconfig" =20 # Devices =20 +config NVMEM_AIROHA_SMC_EFUSES + tristate "Airoha SMC eFuse support" + depends on ARCH_AIROHA || COMPILE_TEST + depends on HAVE_ARM_SMCCC + default ARCH_AIROHA + help + Say y here to enable support for reading eFuses on Airoha AN7581 + SoCs. These are e.g. used to store factory programmed + calibration data required for the PCIe or the USB-C PHY or Thermal. + + This driver can also be built as a module. If so, the module will + be called nvmem-airoha-smc-efuses. + config NVMEM_AN8855_EFUSE tristate "Airoha AN8855 eFuse support" depends on COMPILE_TEST diff --git a/drivers/nvmem/Makefile b/drivers/nvmem/Makefile index 7252b8ec88d4..f6f2bc51dee1 100644 --- a/drivers/nvmem/Makefile +++ b/drivers/nvmem/Makefile @@ -10,6 +10,8 @@ nvmem_layouts-y :=3D layouts.o obj-y +=3D layouts/ =20 # Devices +obj-$(CONFIG_NVMEM_AIROHA_SMC_EFUSES) +=3D nvmem-airoha-smc-efuses.o +nvmem-airoha-smc-efuses-y :=3D airoha-smc-efuses.o obj-$(CONFIG_NVMEM_AN8855_EFUSE) +=3D nvmem-an8855-efuse.o nvmem-an8855-efuse-y :=3D an8855-efuse.o obj-$(CONFIG_NVMEM_APPLE_EFUSES) +=3D nvmem-apple-efuses.o diff --git a/drivers/nvmem/airoha-smc-efuses.c b/drivers/nvmem/airoha-smc-e= fuses.c new file mode 100644 index 000000000000..bb279d149519 --- /dev/null +++ b/drivers/nvmem/airoha-smc-efuses.c @@ -0,0 +1,118 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Author: Christian Marangi + */ + +#include +#include +#include +#include +#include +#include +#include + +#define AIROHA_SMC_EFUSE_FID 0x82000001 +#define AIROHA_SMC_EFUSE_SUB_ID_READ 0x44414552 + +#define AIROHA_EFUSE_CELLS 64 + +struct airoha_efuse_bank_priv { + u8 bank_index; +}; + +static int airoha_efuse_read(void *context, unsigned int offset, + void *val, size_t bytes) +{ + struct regmap *regmap =3D context; + + return regmap_bulk_read(regmap, offset, + val, bytes / sizeof(u32)); +} + +static int airoha_efuse_reg_read(void *context, unsigned int offset, + unsigned int *val) +{ + struct airoha_efuse_bank_priv *priv =3D context; + struct arm_smccc_res res; + + arm_smccc_1_1_invoke(AIROHA_SMC_EFUSE_FID, + AIROHA_SMC_EFUSE_SUB_ID_READ, + priv->bank_index, offset, 0, 0, 0, 0, &res); + + /* check if SMC reported an error */ + if (res.a0) + return -EIO; + + *val =3D res.a1; + return 0; +} + +static const struct regmap_config airoha_efuse_regmap_config =3D { + .reg_read =3D airoha_efuse_reg_read, + .reg_bits =3D 32, + .val_bits =3D 32, + .reg_stride =3D 4, +}; + +static int airoha_efuse_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + int ret; + + for_each_child_of_node_scoped(dev->of_node, child) { + struct nvmem_config airoha_nvmem_config =3D { + .name =3D "airoha-efuse", + .size =3D AIROHA_EFUSE_CELLS * sizeof(u32), + .stride =3D sizeof(u32), + .word_size =3D sizeof(u32), + .reg_read =3D airoha_efuse_read, + }; + struct airoha_efuse_bank_priv *priv; + struct nvmem_device *nvmem; + struct regmap *regmap; + u32 bank; + + ret =3D of_property_read_u32(child, "reg", &bank); + if (ret) + return ret; + + priv =3D devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; + + priv->bank_index =3D bank; + + regmap =3D devm_regmap_init(dev, NULL, priv, + &airoha_efuse_regmap_config); + if (IS_ERR(regmap)) + return PTR_ERR(regmap); + + airoha_nvmem_config.priv =3D regmap; + airoha_nvmem_config.dev =3D dev; + airoha_nvmem_config.id =3D bank; + nvmem =3D devm_nvmem_register(dev, &airoha_nvmem_config); + if (IS_ERR(nvmem)) + return PTR_ERR(nvmem); + } + + return 0; +} + +static const struct of_device_id airoha_efuse_of_match[] =3D { + { .compatible =3D "airoha,an7581-efuses", }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, airoha_efuse_of_match); + +static struct platform_driver airoha_efuse_driver =3D { + .probe =3D airoha_efuse_probe, + .driver =3D { + .name =3D "airoha-efuse", + .of_match_table =3D airoha_efuse_of_match, + }, +}; +module_platform_driver(airoha_efuse_driver); + +MODULE_AUTHOR("Christian Marangi "); +MODULE_DESCRIPTION("Driver for Airoha SMC eFUSEs"); +MODULE_LICENSE("GPL"); --=20 2.53.0