From nobody Sat Jun 13 03:31:25 2026 Received: from mail-dy1-f174.google.com (mail-dy1-f174.google.com [74.125.82.174]) (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 534103A6EF9 for ; Mon, 11 May 2026 07:51:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778485903; cv=none; b=DaXR7YpHXYQupNfc4HNSFfgm0XjkeOBDb5+sQ1adcJBICf+OsvtghRIfr4nkfcnCe7gB779+kMZQqnVoNTFqatB5PXcjdlo/VMVn3y8IduuuKze/r/OXb5spuvryypkjIbKs0qMzyhLgD11dWr3D8enTYtAW3nlzKyP+hCqO9iw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778485903; c=relaxed/simple; bh=6vBEHLMLOSh3PUQH6ftcKyQ9NFmKypGaweZdjAsCnfo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NtkcdpjZRZH1Lb9QBGu0uz3v6QdvF1SpCyNdK1Nw02zdKbkwxaJyTk178hx28iTeeZjZJV2hS6O95H2MWFpCEscfKVgpIGFJZqE3AHVXLHAic8HVekwFzJ0HlfsxmsTBWPMZOBi1WWUneg619RApMVbQG3wUkQaS8AA7l1+jU3c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nexthop.ai; spf=pass smtp.mailfrom=nexthop.ai; dkim=pass (2048-bit key) header.d=nexthop.ai header.i=@nexthop.ai header.b=Sgxsbk4k; arc=none smtp.client-ip=74.125.82.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nexthop.ai Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nexthop.ai Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nexthop.ai header.i=@nexthop.ai header.b="Sgxsbk4k" Received: by mail-dy1-f174.google.com with SMTP id 5a478bee46e88-2ecf9e398f4so10823964eec.1 for ; Mon, 11 May 2026 00:51:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nexthop.ai; s=google; t=1778485886; x=1779090686; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=qmlEmHdWn0teIVBaM5N/uRakvieamDiDIKxKpSCD5g8=; b=Sgxsbk4knNncflbso/qQIeh65TiUUa2VsC37vKBJFDopNhHAsowVs0dmE+5MhDH82L joKuH3QK5Hl/OjzGBBR4l/0mio+VYxaYunZsRYPnQA2IkjxM9vggJ/ke9/r9gm733E2U JD62RlDKRt2aBWS6gs8ds1e5u0WGXhu8pXdkQ7NsHWJ3E+JYULoHSW89aYPrsVyDMsnW ZpdYyuI11S7l6bAB42EglgB3DClbzYQO8IRlfUQ9dD10z04wX2B+4TX3NWaHrmE0ZyBK qn7mzg4M5ng97vfsNd+VF1KpIiZkb9FkJ9dkDskMQ+s9QL+wRKB4g+XmVLA9SWcEXgCD bugA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778485886; x=1779090686; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=qmlEmHdWn0teIVBaM5N/uRakvieamDiDIKxKpSCD5g8=; b=WjVcXwUIjZhDch8hh350jX40vLbL11GEM6lTFhyiu+Fh4eF8PV1dZoO5EPAqJCU0DJ MKh3GBSHZuMSLpMm+hIh4HOh7qIlsVvyUikxw5o7F7TVfpUZBgW/Fo5U+6YYXx9gMNHY lnjB3U3E8jrN5aPjcmhGTm3FcaxIX8rUqWruy1ocsi85NJzh8i0jP4Kz5mQpITUUYk3q Vl59orgFX8ot9DtwisnckLsRQTEdrV6vTxZ8rZcNLwk/SUQjJNsdbyRfyfwjSmzin0yO cJ3XzGVVB/6YSHmxB7v9+kaQZzBQq8YVHzW4AT5D9Kgrvc/ew4jB78GYgmjZaN0NfLh1 6K6g== X-Forwarded-Encrypted: i=1; AFNElJ8vt4medG4lLKMcZ4/1p5QwOiiMMV4vqaTFTzGH+BNqE4TqBZMjYTec5Lfn2vG/YUSQ5695/nvWWOe6je0=@vger.kernel.org X-Gm-Message-State: AOJu0Yw44MpwXzqZNCraV8O1KoKDlEvc8r6MeZ9cmyNqvXVW2VukPB3c IQB8slwRvcaeJhZTVCyqqHw2tS4UkwbJG9Z0F42nLEB0bcSVkZlc2ce+qgDk3OvaGfdUG1OYauJ 2Z7pbn1A= X-Gm-Gg: Acq92OFVyGzoaDc43eFlnKlVkipWgiAj3/+U7ZZWhhB6fG/FNUboIB2iBANDSnmuZhH 1UxaNIKSZ+TE1uBAaJzUO5rhKfEGjSiup5vhAH0CQmft9+vnLlt/342E4c8slINW93nLsZ7qIeh 9kPFDa37mE3DJO5yhq5mQsqSgL1VaosDw5kp/0Dx1DjcYOq0p07W3HiASrSwwOYpXLe9Ndl2FT8 bDVjPQYq91EVTQsToqXTkCbcl7f8083K8suFx9h86kehvTjHEmpxGvlN7JGce1sV0zWdlQ6FNV7 ytLZoTJq7C+mWOGHRWrHtH/7hgyv0dy8RIu5D3SRQ72+QfMRvExG2sXKJVDbGyRG0+74tFvRWY7 Ykiou75K8KuSe98X5VSbdw5R6LBLzUG3/U7Wj85U6DbvUmEjhRwcK2Km0Aj1heUHqJYs/91LMwa riGEvsEIr2njgPyAAcytpSsFFqycgOw9/AlatQ X-Received: by 2002:a05:7300:e60c:b0:2dd:6937:79bc with SMTP id 5a478bee46e88-2f54ad72f58mr11433054eec.6.1778485885893; Mon, 11 May 2026 00:51:25 -0700 (PDT) Received: from [127.0.0.2] ([50.145.100.174]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2f8862d429asm12549498eec.12.2026.05.11.00.51.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 00:51:25 -0700 (PDT) From: Abdurrahman Hussain Date: Mon, 11 May 2026 00:51:19 -0700 Subject: [PATCH RESEND v2 1/5] hwmon: (pmbus/adm1266) add firmware_revision debugfs entry Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260511-adm1266-v2-1-7a6d34f0de5d@nexthop.ai> References: <20260511-adm1266-v2-0-7a6d34f0de5d@nexthop.ai> In-Reply-To: <20260511-adm1266-v2-0-7a6d34f0de5d@nexthop.ai> To: Guenter Roeck , Alexandru Tachici Cc: linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778485884; l=2492; i=abdurrahman@nexthop.ai; s=20260510; h=from:subject:message-id; bh=6vBEHLMLOSh3PUQH6ftcKyQ9NFmKypGaweZdjAsCnfo=; b=FY7aCu84f2H+Pbpjl40LEPsA/JvRZxrYvwtgkWu1S6HPHGV61/dj+LIr7LQqP7XLUztrBrIRs 4fxggJ9feGyDZXBH0XG/pVH6Ef1WtzzpNNLNCbmigCAEURha2rklNZb X-Developer-Key: i=abdurrahman@nexthop.ai; a=ed25519; pk=omTm9cCAbO0ZhS32aKfJDKue0W3sQGpG9ub5eYHif8I= The ADM1266 reports its firmware revision via the IC_DEVICE_REV manufacturer-specific block-read command (0xAE, datasheet Rev. D Table 80). The first three returned bytes are the firmware major.minor.patch fields. This is useful when correlating field behaviour against ADI release notes; expose it through debugfs alongside the existing sequencer_state entry. The standard PMBus MFR_REVISION (0x9B) register is already exposed by pmbus_core's debugfs auto-create path and reports the manufacturer revision, which is a separate thing from the firmware running on the device. Signed-off-by: Abdurrahman Hussain --- drivers/hwmon/pmbus/adm1266.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/drivers/hwmon/pmbus/adm1266.c b/drivers/hwmon/pmbus/adm1266.c index d90f8f80be8e..7b8433226176 100644 --- a/drivers/hwmon/pmbus/adm1266.c +++ b/drivers/hwmon/pmbus/adm1266.c @@ -21,6 +21,7 @@ #include #include =20 +#define ADM1266_IC_DEVICE_REV 0xAE #define ADM1266_BLACKBOX_CONFIG 0xD3 #define ADM1266_PDIO_CONFIG 0xD4 #define ADM1266_READ_STATE 0xD9 @@ -331,6 +332,30 @@ static int adm1266_state_read(struct seq_file *s, void= *pdata) return 0; } =20 +/* + * IC_DEVICE_REV (0xAE) returns an 8-byte block (datasheet Rev. D, Table 8= 0): + * [2:0] firmware revision major.minor.patch + * [5:3] bootloader revision major.minor.patch + * [7:6] silicon revision two ASCII characters + */ +static int adm1266_firmware_revision_read(struct seq_file *s, void *pdata) +{ + struct device *dev =3D s->private; + struct i2c_client *client =3D to_i2c_client(dev); + u8 buf[I2C_SMBUS_BLOCK_MAX]; + int ret; + + ret =3D i2c_smbus_read_block_data(client, ADM1266_IC_DEVICE_REV, buf); + if (ret < 0) + return ret; + if (ret < 3) + return -EIO; + + seq_printf(s, "%u.%u.%u\n", buf[0], buf[1], buf[2]); + + return 0; +} + static void adm1266_init_debugfs(struct adm1266_data *data) { struct dentry *root; @@ -343,6 +368,8 @@ static void adm1266_init_debugfs(struct adm1266_data *d= ata) =20 debugfs_create_devm_seqfile(&data->client->dev, "sequencer_state", data->= debugfs_dir, adm1266_state_read); + debugfs_create_devm_seqfile(&data->client->dev, "firmware_revision", data= ->debugfs_dir, + adm1266_firmware_revision_read); } =20 static int adm1266_nvmem_read_blackbox(struct adm1266_data *data, u8 *read= _buff) --=20 2.53.0 From nobody Sat Jun 13 03:31:25 2026 Received: from mail-dy1-f174.google.com (mail-dy1-f174.google.com [74.125.82.174]) (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 2CAA43ACA62 for ; Mon, 11 May 2026 07:51:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778485902; cv=none; b=ahio19NuFr4Z9vTZqEZsrlN3JvioW2JxyfOBG/oi7LOO7o3y6ZKnPvDaHXCVhK1nE6oak2LiKhApgHry53jMeuHjC/ClcRmE6T4pBP8SfgYtmsQlsJDrVZ6huah2WRly4R47NWyM93fSUDJlNfOWB1tprFOzC2z9Am9Pq/1lHW4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778485902; c=relaxed/simple; bh=+s7AraqSSLTzzLZprtX85wFGz+qaFHzAS/LVroao8Pw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NfP7NIFXbnYd8FBugcn6msVpRwmCZAZCOxsFP2zXXwOYg8HftdjDW0SUjN0LGSHQl9MjzwtqQY+BieAFR2C78xOSoo71wiV4a42H2+qQFRqTM+ZqVkeHRynUx0PdlYyqmaNJVtVpe+oTIFuaXufQDmTStcUAOfh5h5bzTYhlNgg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nexthop.ai; spf=pass smtp.mailfrom=nexthop.ai; dkim=pass (2048-bit key) header.d=nexthop.ai header.i=@nexthop.ai header.b=D73AanxA; arc=none smtp.client-ip=74.125.82.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nexthop.ai Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nexthop.ai Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nexthop.ai header.i=@nexthop.ai header.b="D73AanxA" Received: by mail-dy1-f174.google.com with SMTP id 5a478bee46e88-2c15849aa2cso4874108eec.0 for ; Mon, 11 May 2026 00:51:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nexthop.ai; s=google; t=1778485887; x=1779090687; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=4AmrptWkczEF869M9qrsApFWh7ZKodviz0ehsBGJgsM=; b=D73AanxA5GAq8woMQyq7DcvumycFhZAP77vY58pkFj+oJo3pLWwrXSuWzE3JjWO5dx xYn6N1dp0RxrEs7LJ3zklrdEpKxMuyY6m20lFflJiWmOGcKhbOTGrnNJhSjbI41UCIKk R1PF813zekHlNIHeFSkUwGYoA8PB/vTTqaKic0hvwDaTJHROFizW1bx9VoeU4ekjqjLs s7VB/jAhmfAJ5+S/nvWA3sCoN0Mr4aOlR1BrXJtEPUoUloWjtxuJ8HIK9MVaSqWzKClQ 0+Pz2LoFDDNtTyp4gZfeZg8vtqnVkk763+gWNITNP6QbFX+CuQPA2yLV88Gqdxn/VsyZ v1Wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778485887; x=1779090687; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=4AmrptWkczEF869M9qrsApFWh7ZKodviz0ehsBGJgsM=; b=F9C2U3vsUDqFTw9HlW+WgZ85+XpCFwGPNs0dF/Oj5qgn4fFC9oDbMAUBPW8oOUEZQw yiNxB9KdwczAqBt9paetV3X1fN4h0km0ykSecGgfYcBIL5ip/swrhvED+4wywGsQcV76 ZdOCHEi5SzKkLKZ6+awzj4x4RD2uhl5HSntdPdIIBaQxguzxpO0Mn1x08cA2D9j0AIrs PFlGzc+SJDc8daGOIVbFnb/yzs/u0GKRpSOVJPBihh8wvlv0aDhcZbjmHeJUMSxVPmrT qQVP2o4otMgzol+uxMMp7iKFnfOWHHj6/aDJ1wvEnUYfvgMOJdsHlXzKtzaS8JFBnMnO mMLA== X-Forwarded-Encrypted: i=1; AFNElJ97zznxGFmjdpJUgwaCCVEBwnbCU8vzzOrkfLd0YyoaEMmfZtDVAD6b8ukGXGu1nD3TncDWUOWKFuOulQg=@vger.kernel.org X-Gm-Message-State: AOJu0YxAVbo762vMRfu5ctG80lR/lsl5nmgYsXvK1BVetkFWhOzl258/ AlZmEEnmh34EIA91LSF77+z8yj5YJvFkcQgnVRbMCtzfI4VBp6y8cTiXEo0p/bz5EOSUkn+pFRv PineV1oc= X-Gm-Gg: Acq92OEIF6YHxgngrjZYTSklwgJF2LyOYY2wNkiFkrFPPzDLOYZztagn3DRtR3hOX7l /4cfDmP8t+PWlEPi7BISdSMFSMfgnsq5oMQEwFccDofoUJOzyKrRM5GUSnWjtomvOWjNuIbQmUQ mfhaoe30mR6pTq7iv0n4Xzb3Uzgz+RuTuzCSH2euuwTUo9eyKHb7z42p9jCTvwsuoeI/1RFMPHG Ev9GuMHspTFGDPX4FGpGoYi4X9NKvDClmOaQGqWDJ/vwFR8fLwOYgGuacM5PMZ0RhqggQv5HmGr u8smQ2lXOPxnEhAlidNdCnX+LzTp/Q0HbzZiVsqfbU0nhpwFD/oZI9WLfx19S6DgiWVB3rPDmle Kzwer/wrWN95HdzGJFwx3DhTcddUfWk7ud/Hdh6ybM3L0qZU56KcwBpwL46IezlFvrzNPcdWSKV +r3i8NiA2Ww/kP16en5Ny81l59DpUesOvvEOTy X-Received: by 2002:a05:693c:3015:b0:2ef:2878:7ade with SMTP id 5a478bee46e88-2f548b9d579mr11792574eec.15.1778485886641; Mon, 11 May 2026 00:51:26 -0700 (PDT) Received: from [127.0.0.2] ([50.145.100.174]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2f8862d429asm12549498eec.12.2026.05.11.00.51.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 00:51:26 -0700 (PDT) From: Abdurrahman Hussain Date: Mon, 11 May 2026 00:51:20 -0700 Subject: [PATCH RESEND v2 2/5] hwmon: (pmbus/adm1266) add clear_blackbox debugfs entry Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260511-adm1266-v2-2-7a6d34f0de5d@nexthop.ai> References: <20260511-adm1266-v2-0-7a6d34f0de5d@nexthop.ai> In-Reply-To: <20260511-adm1266-v2-0-7a6d34f0de5d@nexthop.ai> To: Guenter Roeck , Alexandru Tachici Cc: linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778485884; l=2640; i=abdurrahman@nexthop.ai; s=20260510; h=from:subject:message-id; bh=+s7AraqSSLTzzLZprtX85wFGz+qaFHzAS/LVroao8Pw=; b=Nv+wnetTK53JcpETk016gR49G2k2LvmpuFfWh1lSCDwq84785lv4CqrT8m6vuzb7f0FORl9Ug C4RjvNW2MZ2AAE6qxP1DElN6gqz28FwAHMiJZKiBSryy4AYU6WfCjV6 X-Developer-Key: i=abdurrahman@nexthop.ai; a=ed25519; pk=omTm9cCAbO0ZhS32aKfJDKue0W3sQGpG9ub5eYHif8I= The ADM1266 blackbox can be configured in two recording modes via BLACKBOX_CONFIG[0]: cyclic, where the device overwrites the oldest record once the 32-record buffer fills, and single, where it stops recording until the buffer is cleared. Deployments that need to preserve the full record history across multiple fault episodes typically run in single mode and need a way to clear the buffer after the records have been collected. Expose a write-only debugfs file alongside sequencer_state. Writing any data to it issues the documented clear-blackbox sub-command: a 2-byte block-write to READ_BLACKBOX (0xDE) with payload {0xFE, 0x00} (datasheet Rev. D). Signed-off-by: Abdurrahman Hussain --- drivers/hwmon/pmbus/adm1266.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/hwmon/pmbus/adm1266.c b/drivers/hwmon/pmbus/adm1266.c index 7b8433226176..31aefa8fc75f 100644 --- a/drivers/hwmon/pmbus/adm1266.c +++ b/drivers/hwmon/pmbus/adm1266.c @@ -356,6 +356,36 @@ static int adm1266_firmware_revision_read(struct seq_f= ile *s, void *pdata) return 0; } =20 +/* + * Clearing the blackbox is required when the device is configured in + * single-recording mode (BLACKBOX_CONFIG[0] =3D 0): once the 32-record + * buffer is full the device stops recording until cleared. + * + * The clear is issued as a 2-byte block-write to READ_BLACKBOX with + * payload {0xFE, 0x00} per the datasheet. + */ +static ssize_t adm1266_clear_blackbox_write(struct file *file, const char = __user *ubuf, + size_t count, loff_t *ppos) +{ + struct i2c_client *client =3D file->private_data; + u8 payload[2] =3D { 0xFE, 0x00 }; + int ret; + + ret =3D i2c_smbus_write_block_data(client, ADM1266_READ_BLACKBOX, + sizeof(payload), payload); + if (ret < 0) + return ret; + + return count; +} + +static const struct file_operations adm1266_clear_blackbox_fops =3D { + .owner =3D THIS_MODULE, + .open =3D simple_open, + .write =3D adm1266_clear_blackbox_write, + .llseek =3D noop_llseek, +}; + static void adm1266_init_debugfs(struct adm1266_data *data) { struct dentry *root; @@ -370,6 +400,8 @@ static void adm1266_init_debugfs(struct adm1266_data *d= ata) adm1266_state_read); debugfs_create_devm_seqfile(&data->client->dev, "firmware_revision", data= ->debugfs_dir, adm1266_firmware_revision_read); + debugfs_create_file("clear_blackbox", 0200, data->debugfs_dir, data->clie= nt, + &adm1266_clear_blackbox_fops); } =20 static int adm1266_nvmem_read_blackbox(struct adm1266_data *data, u8 *read= _buff) --=20 2.53.0 From nobody Sat Jun 13 03:31:25 2026 Received: from mail-dl1-f44.google.com (mail-dl1-f44.google.com [74.125.82.44]) (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 5B44A3A8FE1 for ; Mon, 11 May 2026 07:51:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778485905; cv=none; b=EiSM8G/2RupXfD3ckKnOEkGjZgnkEEg+RHgCFlfWxoeDhrO0AQ3A6T3AIoCGfPOwpWWlf7dPdTyghtdVC1jzNWLV/IoUs+YyTERZbQ9MvdmQwyb1XxXXbikAs54KwH2NYLEay3VD3goraKppRqqWLzw/PLXzGHS4pPcHQFwDEfM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778485905; c=relaxed/simple; bh=Fvs4izgDZLwvwAFpe9E0YJJPp97a8WERWKXmnjgLvo4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jaWHYhrVW+9JgXo7ncRgM8+okTCvp59FqsWcS/hJqwdOVsF+oJRVtqRZLwy13dJ4UXYBPAlO01CxozelUUt7va9gJhAjwsa+dFjpuUFWbLVfNihaZjbul63iGuHWXbejNVBwu8pYDK7YBS+REOTTQYlwPf+IsYQVQ/p5dACZzkc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nexthop.ai; spf=pass smtp.mailfrom=nexthop.ai; dkim=pass (2048-bit key) header.d=nexthop.ai header.i=@nexthop.ai header.b=FiA+3OKz; arc=none smtp.client-ip=74.125.82.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nexthop.ai Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nexthop.ai Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nexthop.ai header.i=@nexthop.ai header.b="FiA+3OKz" Received: by mail-dl1-f44.google.com with SMTP id a92af1059eb24-12e332315a8so8865012c88.0 for ; Mon, 11 May 2026 00:51:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nexthop.ai; s=google; t=1778485888; x=1779090688; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=f8vyo3aKJz6kvSqhB3iqzMJn3n4LWS3lqwD60ofe3OY=; b=FiA+3OKz8MHV+zIZquC1f52TTRJWivm6pJK/TzvF5E1WCUXjFXznO8vIfIZUEoebrg Lv/2Fs5BXo/aRq7UZju72ei8giSI9FUKKbouSZy5V0Fgp4GdY/L9sM7ICrYeDZSUKZYd m09p3Gx0Vq1PliFDM+ymz9QZRO/mVQxO63w0oWeTn+PIQSBFogPsZPxZ3GO92/7IdIlE x4l5ETRB1h4tKg6zJ1IDvQThcmHIVC8cgxGh8xb2d2n9WeRGuVP6IW1Y53xliuixyVH2 1UxcWazZetDiWIwUFqC6tKUzsfaCU2ZsTMomMZsPYRDtJw8MDJ/yx1g6WFWFgTk+mrGW Xb2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778485888; x=1779090688; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=f8vyo3aKJz6kvSqhB3iqzMJn3n4LWS3lqwD60ofe3OY=; b=dobGM8ED7Wja1j5b61njbXIit1Qfto6MhH2lIi5wTA3zShjnpFnkVefeKVO5Q8Ul5V cJQ12hckr1h+RPd/drEpqyHikhKexd29Xj4LhTogCa+nmxf/QRqeYdyP29o2iQxJyjGa 4+tct726mwje+gnOg7zdYCaF2xQmhX/0IhRiPdwQ8YKlgWR/MhHiDsrmfjhkoBnXyfJa vDw2sbEyYmMyrjEoaip1j1XbJsg6Sg8gNf4CTxuCgX4ZZKLkyILuysMJOFsbpMDNmXNZ tV/x0hcNn+agrKJDiZvVn3HsoY7IVbZP0FnGMSJ/JvkEyTR4WpNyw5YkWrPhHC/nkYx9 fxyA== X-Forwarded-Encrypted: i=1; AFNElJ9ShHAJVVRH6eTS7XR/Y/0BoH80SG/ph93MtLCHmXGS2ZBh9CIAkZ1g46DphI4haxlfShGy9fPnfxP5SYY=@vger.kernel.org X-Gm-Message-State: AOJu0YzYNxFUbXaeXrrm0MhvinjU/lt4GoMAKR3S0k7E4eOONXxGRSzs Cyh9o2YDxaQ2MZCKdI/RiP5h7YWgltxcxQznhHrYiDWGMvf8VFmNrs3ZfLSkfVEHiV918bNdCum 78bpCjHo= X-Gm-Gg: Acq92OFFdOuYIApnGNZY7hRAk4IA0ekJTn+VCHvaD/YX4jADxGLb95bC41SJcYmBj99 v4c63/ggUsXlqtxftK7Q2R24/NHA8faXPLy/gcgNokl3rJOj8obQtBrC5xqlEp15PXfKZWcjysL uGnIRxYAF8xnyPwA1+KsgMxvk6BeY+8xiHN6yHE+/JA4zN5/8+NCr88sqKVzHmkzmdrmrHWDLQq Tx0xMao9DjhtT8VusHYNs45mgZGyaBgKsi1NgZjKzR6VmAWEOj94R2OvjQp5klgKocnV/UnmCtu N8WiI5+DoUcPI1wnMmOeVdLmZg+ltdgh40vkgxBZNSf16BOF0iJ8BmfGSMKdqyTMbKkqJjcLNu7 7OBFNUHX/Rf8NC0lHnZkx5IRLJp5LNypTdP+b7XAIplhrlEQetmzzMXXTtblESE0idYo59NNIfL qeNmGRdC6lOi0/PyhtBrqQw1ziMw== X-Received: by 2002:a05:7022:2381:b0:11b:9b9f:426b with SMTP id a92af1059eb24-132a81d8664mr4496956c88.20.1778485887332; Mon, 11 May 2026 00:51:27 -0700 (PDT) Received: from [127.0.0.2] ([50.145.100.174]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2f8862d429asm12549498eec.12.2026.05.11.00.51.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 00:51:26 -0700 (PDT) From: Abdurrahman Hussain Date: Mon, 11 May 2026 00:51:21 -0700 Subject: [PATCH RESEND v2 3/5] hwmon: (pmbus/adm1266) add powerup_counter debugfs entry Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260511-adm1266-v2-3-7a6d34f0de5d@nexthop.ai> References: <20260511-adm1266-v2-0-7a6d34f0de5d@nexthop.ai> In-Reply-To: <20260511-adm1266-v2-0-7a6d34f0de5d@nexthop.ai> To: Guenter Roeck , Alexandru Tachici Cc: linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778485884; l=2726; i=abdurrahman@nexthop.ai; s=20260510; h=from:subject:message-id; bh=Fvs4izgDZLwvwAFpe9E0YJJPp97a8WERWKXmnjgLvo4=; b=PBeENLC9td927hNWKsmqwm5769GFt+CUkHzmLGWArXRD8tz/THMLZKlOEiPvb3UiJ5WTHh+pO xYg0EngFBRZCg7djMVmXMRaASxho+mQDEVoPimvIebvhLFKNvLX415I X-Developer-Key: i=abdurrahman@nexthop.ai; a=ed25519; pk=omTm9cCAbO0ZhS32aKfJDKue0W3sQGpG9ub5eYHif8I= The ADM1266 maintains a 16-bit non-volatile POWERUP_COUNTER register (0xE4, datasheet Rev. D, Table 93) that increments on every power cycle and cannot be reset by the host. Each blackbox record already embeds the counter at record time, so the standalone live value is primarily useful for matching a captured record back to the boot it came from when correlating logs. Expose it as a read-only debugfs file alongside firmware_revision. The block-read returns two payload bytes in little-endian order. Signed-off-by: Abdurrahman Hussain --- drivers/hwmon/pmbus/adm1266.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/hwmon/pmbus/adm1266.c b/drivers/hwmon/pmbus/adm1266.c index 31aefa8fc75f..99e92a8365fb 100644 --- a/drivers/hwmon/pmbus/adm1266.c +++ b/drivers/hwmon/pmbus/adm1266.c @@ -28,6 +28,7 @@ #define ADM1266_READ_BLACKBOX 0xDE #define ADM1266_SET_RTC 0xDF #define ADM1266_GPIO_CONFIG 0xE1 +#define ADM1266_POWERUP_COUNTER 0xE4 #define ADM1266_BLACKBOX_INFO 0xE6 #define ADM1266_PDIO_STATUS 0xE9 #define ADM1266_GPIO_STATUS 0xEA @@ -356,6 +357,31 @@ static int adm1266_firmware_revision_read(struct seq_f= ile *s, void *pdata) return 0; } =20 +/* + * POWERUP_COUNTER (0xE4) is a 2-byte little-endian non-volatile counter + * that increments on every device power cycle (datasheet Rev. D, Table + * 93). It saturates at 65535 and cannot be reset by the host. Each + * blackbox record embeds the counter value at record time, so this live + * read is mainly useful for matching a record back to its boot. + */ +static int adm1266_powerup_counter_read(struct seq_file *s, void *pdata) +{ + struct device *dev =3D s->private; + struct i2c_client *client =3D to_i2c_client(dev); + u8 buf[I2C_SMBUS_BLOCK_MAX]; + int ret; + + ret =3D i2c_smbus_read_block_data(client, ADM1266_POWERUP_COUNTER, buf); + if (ret < 0) + return ret; + if (ret !=3D 2) + return -EIO; + + seq_printf(s, "%u\n", buf[0] | (buf[1] << 8)); + + return 0; +} + /* * Clearing the blackbox is required when the device is configured in * single-recording mode (BLACKBOX_CONFIG[0] =3D 0): once the 32-record @@ -400,6 +426,8 @@ static void adm1266_init_debugfs(struct adm1266_data *d= ata) adm1266_state_read); debugfs_create_devm_seqfile(&data->client->dev, "firmware_revision", data= ->debugfs_dir, adm1266_firmware_revision_read); + debugfs_create_devm_seqfile(&data->client->dev, "powerup_counter", data->= debugfs_dir, + adm1266_powerup_counter_read); debugfs_create_file("clear_blackbox", 0200, data->debugfs_dir, data->clie= nt, &adm1266_clear_blackbox_fops); } --=20 2.53.0 From nobody Sat Jun 13 03:31:25 2026 Received: from mail-dy1-f176.google.com (mail-dy1-f176.google.com [74.125.82.176]) (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 5B1683A75B5 for ; Mon, 11 May 2026 07:51:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778485905; cv=none; b=rGPhlEqcITWXvAmdMGrhJFj5zJI1pmgtWKxCJLwWVvbbIbjctJMK8jKTJaR5Nec92++LDNE8an3RIzLG9+3JoKMWsyxbL1QAPfdf/E0LIEM1uz/DM/EzXwVpqv5tYajxEjQhpJx/Y+O4o+4RegmVakkc0nBWo9oK91Sh0VR7LlY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778485905; c=relaxed/simple; bh=4ibCJKgh5O0PlQIzarHRly8PpVR0ik1+YJcgF8LKXcQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=vFJRsjZKOOjoSmmq44mLbRwr20av+Gedx1wgvgRHgzL1Z91j7cK2xhYJBgXzHJ0sUNAAeDiFoAU18V/MGxRZDwqYLwSWB8SQyn5vbjye7+JJxKo/OXXumRDHxb72h2v03MmjuT+2rOMMb2nrN3nUbiLhK0aksmMxPKbTFgA4Jac= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nexthop.ai; spf=pass smtp.mailfrom=nexthop.ai; dkim=pass (2048-bit key) header.d=nexthop.ai header.i=@nexthop.ai header.b=dru2DOmx; arc=none smtp.client-ip=74.125.82.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nexthop.ai Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nexthop.ai Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nexthop.ai header.i=@nexthop.ai header.b="dru2DOmx" Received: by mail-dy1-f176.google.com with SMTP id 5a478bee46e88-2ee990e8597so7084573eec.1 for ; Mon, 11 May 2026 00:51:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nexthop.ai; s=google; t=1778485888; x=1779090688; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=gOMLJB4Oh7xtGNEINQHb/KOg6mgGsuMaGDF24hTcF4o=; b=dru2DOmxZbt/rBepApbb+Dm+/+I4wkfqSOkm4CCvDDlw0chs1XiRX8ObqjVv5MEz6j Dc/V4bOQoRXs0rS6pwL22+lwUfDpDlzSCXRUMuWqD9+Obv8b7QHGugsDnc+1TXAtUv8N W6bVeUyCgpZcGc1sfWZljx05+Uw8fDGmRyq0davN/AnjKsl6idEBKPfvhHpJxR6Ky9hr +58owaDk8wweyBG5ORgF0ry/4zACD0Uk/uN85Fhqu1CzBNwSHq5MrpasdAFTDhH0MmOh Jv1faExq07NuIKeLume/xAIjDiQiKQot7Nk8xRPMogFU/wiXu1RPJFprf4nF4R1AUCc5 gUZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778485888; x=1779090688; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=gOMLJB4Oh7xtGNEINQHb/KOg6mgGsuMaGDF24hTcF4o=; b=fq07HjyHVVROQiklAA72KtcKY9IjE3Tu4n6oppe04v+Kox3mjLAzARjCMfzuJpjLk6 ldPXaApS1TMa6EzxkLIpNYsguoZJY4LYOaIlLzu9A4GO/Wj8b5COmuBosOFoa91aSXUP TY1RNxysRtnIhHXeFpPtnUCpoMbkjcdeisQP8xCJ/K1AB1jura78lWPGt36lF+uUTt2p G3F1/csN4iPaYyDlIDzpPsgHhpNl5rsjEmDMV6y/xpySGLp4gahs6aAYrfFwNzmF6cu5 9wZ/g2XGUjYT7//GcwPzjoBbMRU9usVnC415oyh4e13tpHiq4XTJYxGOopDk6o346q3f q3DQ== X-Forwarded-Encrypted: i=1; AFNElJ9TbQtnxsLa6cHWGUWbuglhxeeWR7d3YIXEVJv5hL2ci6iJNBFsdvyvury6jzQVUzxy4Wnd0Oc0GcwTUgo=@vger.kernel.org X-Gm-Message-State: AOJu0YzxdLE8HqKgiKLpxoJeDczah3/UiYyTGTHI+EvfHSXUjpSZ8u/+ miU1Ov1nTwxXzgE/55R38fKW48YS2Nu/gQGTB0nYA2Dyrq2Rrjp+klUvrqe3HVp6N5QsYZnRgtD 2o4qFj1E= X-Gm-Gg: Acq92OH9Vo3YePXLT/+iT0c8fha5yBVXQfcAfNisTzJN2ouUqSlNPoKknEcv+GnGBvf puTp4y3TgtIuDxlZMFDJtWyOIRpeJ+d+9HF69kpUpgY7whVbmqplnl7/BwCJTEzsUbM4EiKok+t iybq7feZSNH+sv6Yvz2b37LGQ8NYRsKsLWQ6GjZvgHhLG8afQP1SMhOt0RuHp8/WOQxvJzZGkRp H6qKCTCkTQuEXBOTf9yFtmOWlbBEoEdr8nfJzABgC8XoploZwYfuz2CgX+HKB4f0QKBXwE8yKIR KK5Beh3zH8YH42MAk07/YRgakUfOA17RTKbqeYfkYcIE8CJ2TnW9bGhnfjJIcjVIYfeAYsB+ImK hcOfClKDrqggujLOkP2eikvrdr5t6LjWjaUvHK3Mdg0o1iI3Sr0jMzleEWtx3j7APDmIakdnEdT MIXRr67PcbBUjXoRnJvS83XFGJHQ== X-Received: by 2002:a05:693c:2c01:b0:2c5:b23e:48a6 with SMTP id 5a478bee46e88-2f54b265a7dmr11730370eec.23.1778485888037; Mon, 11 May 2026 00:51:28 -0700 (PDT) Received: from [127.0.0.2] ([50.145.100.174]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2f8862d429asm12549498eec.12.2026.05.11.00.51.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 00:51:27 -0700 (PDT) From: Abdurrahman Hussain Date: Mon, 11 May 2026 00:51:22 -0700 Subject: [PATCH RESEND v2 4/5] hwmon: (pmbus/adm1266) replace probe-time RTC seed with rtc_class device Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260511-adm1266-v2-4-7a6d34f0de5d@nexthop.ai> References: <20260511-adm1266-v2-0-7a6d34f0de5d@nexthop.ai> In-Reply-To: <20260511-adm1266-v2-0-7a6d34f0de5d@nexthop.ai> To: Guenter Roeck , Alexandru Tachici Cc: linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778485884; l=4478; i=abdurrahman@nexthop.ai; s=20260510; h=from:subject:message-id; bh=4ibCJKgh5O0PlQIzarHRly8PpVR0ik1+YJcgF8LKXcQ=; b=ETLsCjM6H4EMaCozDZLBwrdM/ijhzzcc38skjIZYng0g5ME3hk6FcDI+ofaNo9bzLZ8FSJDwv RyvPs1Q4UI7CsFu4ZIz7XnG9ONonKq1lMoV+ugVjX2nlH3hls/JeE6B X-Developer-Key: i=abdurrahman@nexthop.ai; a=ed25519; pk=omTm9cCAbO0ZhS32aKfJDKue0W3sQGpG9ub5eYHif8I= The driver currently writes the device's internal RTC at probe with ktime_get_seconds(), which returns CLOCK_MONOTONIC seconds since boot and is not a wall-clock value. The resulting timestamps embedded in blackbox records are therefore meaningless across reboots, defeating the cross-reboot record-correlation use case the field exists for. Switching the seed to ktime_get_real_seconds() does not actually fix this: at probe the system wall clock may not yet have been set (no external RTC, no userspace NTP), and seeding unconditionally also clobbers whatever valid time the ADM1266 retained across a warm reboot. The data sheet (Rev. D, p. 22) recommends "frequently send the time stamp to the ADM1266 to synchronize the UNIX time and reduce the time from drifting" when running on the internal oscillator. The clean way to expose that policy is an rtc_class device backed by SET_RTC, so that userspace tooling (hwclock, chrony, systemd-timesyncd) can drive the re-sync against /dev/rtcN once it trusts the system clock - with no driver-specific sysfs ABI. Drop the probe-time seed and adm1266_set_rtc() entirely. Add an rtc_class device whose ->read_time and ->set_time callbacks read and write the SET_RTC frame. The rtc_class API is second-precision, so the SET_RTC fractional-seconds bytes are always written as zero. Fixes: 15609d189302 ("hwmon: (pmbus/adm1266) read blackbox") Signed-off-by: Abdurrahman Hussain --- drivers/hwmon/pmbus/adm1266.c | 70 ++++++++++++++++++++++++++++++++++++---= ---- 1 file changed, 60 insertions(+), 10 deletions(-) diff --git a/drivers/hwmon/pmbus/adm1266.c b/drivers/hwmon/pmbus/adm1266.c index 99e92a8365fb..0dfb02db8683 100644 --- a/drivers/hwmon/pmbus/adm1266.c +++ b/drivers/hwmon/pmbus/adm1266.c @@ -18,8 +18,8 @@ #include #include #include "pmbus.h" +#include #include -#include =20 #define ADM1266_IC_DEVICE_REV 0xAE #define ADM1266_BLACKBOX_CONFIG 0xD3 @@ -513,21 +513,71 @@ static int adm1266_config_nvmem(struct adm1266_data *= data) return 0; } =20 -static int adm1266_set_rtc(struct adm1266_data *data) +/* + * SET_RTC frame layout (datasheet Rev. D, Table 84): + * bytes [1:0] =3D fractional seconds, LSB =3D 1/65536 s + * bytes [5:2] =3D seconds since 1970-01-01 UTC + * The rtc_class API is second-precision, so the fractional bytes are + * always written as zero. + */ +static int adm1266_write_rtc(struct i2c_client *client, time64_t secs) { - time64_t kt; - char write_buf[6]; + u8 buf[6] =3D { 0 }; int i; =20 - kt =3D ktime_get_seconds(); + for (i =3D 0; i < 4; i++) + buf[2 + i] =3D (secs >> (i * 8)) & 0xFF; + + return i2c_smbus_write_block_data(client, ADM1266_SET_RTC, sizeof(buf), b= uf); +} + +static int adm1266_rtc_read_time(struct device *dev, struct rtc_time *tm) +{ + struct i2c_client *client =3D to_i2c_client(dev); + u8 buf[I2C_SMBUS_BLOCK_MAX]; + u32 secs; + int ret; + int i; =20 - memset(write_buf, 0, sizeof(write_buf)); + ret =3D i2c_smbus_read_block_data(client, ADM1266_SET_RTC, buf); + if (ret < 0) + return ret; + if (ret !=3D 6) + return -EIO; =20 + secs =3D 0; for (i =3D 0; i < 4; i++) - write_buf[2 + i] =3D (kt >> (i * 8)) & 0xFF; + secs |=3D (u32)buf[2 + i] << (i * 8); + + rtc_time64_to_tm(secs, tm); + return 0; +} + +static int adm1266_rtc_set_time(struct device *dev, struct rtc_time *tm) +{ + struct i2c_client *client =3D to_i2c_client(dev); + + return adm1266_write_rtc(client, rtc_tm_to_time64(tm)); +} + +static const struct rtc_class_ops adm1266_rtc_ops =3D { + .read_time =3D adm1266_rtc_read_time, + .set_time =3D adm1266_rtc_set_time, +}; + +static int adm1266_register_rtc(struct adm1266_data *data) +{ + struct rtc_device *rtc; + + rtc =3D devm_rtc_allocate_device(&data->client->dev); + if (IS_ERR(rtc)) + return PTR_ERR(rtc); + + rtc->ops =3D &adm1266_rtc_ops; + rtc->range_min =3D 0; + rtc->range_max =3D U32_MAX; =20 - return i2c_smbus_write_block_data(data->client, ADM1266_SET_RTC, sizeof(w= rite_buf), - write_buf); + return devm_rtc_register_device(rtc); } =20 static int adm1266_probe(struct i2c_client *client) @@ -553,7 +603,7 @@ static int adm1266_probe(struct i2c_client *client) if (ret < 0) return ret; =20 - ret =3D adm1266_set_rtc(data); + ret =3D adm1266_register_rtc(data); if (ret < 0) return ret; =20 --=20 2.53.0 From nobody Sat Jun 13 03:31:25 2026 Received: from mail-dy1-f178.google.com (mail-dy1-f178.google.com [74.125.82.178]) (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 DE5573AC0F8 for ; Mon, 11 May 2026 07:51:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778485903; cv=none; b=tk2XonImwUICgkfMBJ6rg2fEb6PdOumLI69pNGiuVv8E3jTStzdXAIe2bZqsqzGNBn9wkkqEhTzERDESs5k2Yt6Xw5JDsO+N3ViDzO6Pl+tseHehM+mBhQuvWstvQr+IQWhCM3T+hTL42Wv6qiPICkWDg+3ZGYaKE7xSl86pohQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778485903; c=relaxed/simple; bh=XbXHyUmmSPnlINR9vCvpAV0eATuZ1frtfzVXW5r+IYw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Y3Og00FHIk5Oo/TZyP4GGL1//fx/GiL0IKRCgGrjOXdEnRSvrFIW+CeWiRzmQi29tnSXBQOjM1s26d0DrR+/WdHbpotIpYw748UipvI19aoU6QCuRgMd+zr9mLDwYuhcvBAmmmB9x56XQK+pTF7JPgKGM3wF/nIJKuFiGJWFUNs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nexthop.ai; spf=pass smtp.mailfrom=nexthop.ai; dkim=pass (2048-bit key) header.d=nexthop.ai header.i=@nexthop.ai header.b=K7Oj2E8s; arc=none smtp.client-ip=74.125.82.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nexthop.ai Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nexthop.ai Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=nexthop.ai header.i=@nexthop.ai header.b="K7Oj2E8s" Received: by mail-dy1-f178.google.com with SMTP id 5a478bee46e88-2c15849aa2cso4874152eec.0 for ; Mon, 11 May 2026 00:51:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nexthop.ai; s=google; t=1778485889; x=1779090689; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=4q1SHKtQsxrNG23clQPndB4aglh1g+mHmxJ8IDbl1eM=; b=K7Oj2E8sJ6NTYQ0PG6B29rRaplwdyP3TcaretaY2PgPz4C2ZzORvmfM4+bAw6/py7i 7bkj30BdDBFAA91cCf+CqrwOfqzX7HFezcDIx8+q406VUNtB1OTkMypB6ntdSG1h30Qu So3aSoesYM4s554/ufFZUy1907o1jP/SJLqqOF6yLtIK9IaxaNyudo4e08lGH7+FN8YS 6kESlDDaAxCq5KveFM6mxkUdjadgIrN6XvV+0A4jxpVN4H9KJdxPEzOaWNYCPoaVabMd EOf84eXQYZsH4UmGT6NJZsixXp6mcqaR4h4FCMKEhLJemqjFT++/U1jajYjSEhH/ijpx mU3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778485889; x=1779090689; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=4q1SHKtQsxrNG23clQPndB4aglh1g+mHmxJ8IDbl1eM=; b=MB8eRn8h5TOFUdNw2d/DKJRXT4y37rAFmDLtkCBkar5VGXjQyhX7orW+sfAu7FNA68 OdlIvm9tTmtFRwBl4QabS2PTTznYWRAfuH6NGxjnKhixT35iFmHGKqE9QWgTUitgX07t enOCp9TcJb+fMWdRwieD9yRZPYsP/IeolIIHUtQ09eYrmup5KZ7jjkVW2x65ksa2y4bc x+8+4ro4PjDHtLG35t+b6vAl2cmbMC17SvNVf4VeOLKoKmJkTpgTQkFQuQBzXIgLHtI2 lkhwZyMjoWQRoqDzaFqJvyHz+fcpsMrPg7jhh15ENSCF9rIAM/4Dj3gw7abhMShra+NO gSVQ== X-Forwarded-Encrypted: i=1; AFNElJ8TRmx5GCe78Bwxy171n8ROqXRXlN81BYhOE1DIlV1mCsPAU7oP4YIRwGkeVLf/Pq6x7j16H+mIZghKM8A=@vger.kernel.org X-Gm-Message-State: AOJu0YweTonEuO+STaZzpCuVyejmMk3s6qCXbRvmRDF4WVyj99smwYUe FGnrM167768LcJG+xmQ+8pX/18iLnhHr3F6bs0fv5pqsI5hhcovtmE+ZyEQ8tbRYgzwJMSH9SgO 2GE9Y/B4= X-Gm-Gg: Acq92OFA6I3c+MKYO7hQ5zEco/JqsiaImLQooaDtAvHnwlGO6Y3VWBUlpWhLb8tRjNY Q6XKKNE3ogEZxohyisdNb4W1S+G1jYR0ES4bUnCRwe7Iqb7HQpkIz+cQUWLOthqiuXDXNaBkc92 oCkr5dd9ltashEMwmWP4oeK6fAiCj18hMw6upqxm6UROvl2WQ7GkPaX5ktEOIgQ0wBCJRYw+Ku4 huRNSPqLR7PUCebItFv4iHsMnhK2ciaYZGRu53hKnWXwnxxdvkMWj9ESMNCPOStneo6P3pgqKBq dneDZ1+fEk174OVxPdXu8Vs8SQOkS9QxoHytlsjz6OIymPDxEhIneOWfcsrcq7CAnbcL4VSljon gFdE8zGJ9wexvhbxUfeA/tNVDG3kwXjIdDDXFzHTDWvrEtwTsWImGCh34Yxzf2GhnLlGo335wcm DsL2DvmMlhSPCZIbfR1o2OmlB7wCE9oBhD7yLD X-Received: by 2002:a05:7300:4313:b0:2ed:e14:42e7 with SMTP id 5a478bee46e88-2f54b068c4fmr11223026eec.32.1778485888725; Mon, 11 May 2026 00:51:28 -0700 (PDT) Received: from [127.0.0.2] ([50.145.100.174]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2f8862d429asm12549498eec.12.2026.05.11.00.51.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2026 00:51:28 -0700 (PDT) From: Abdurrahman Hussain Date: Mon, 11 May 2026 00:51:23 -0700 Subject: [PATCH RESEND v2 5/5] hwmon: (pmbus/adm1266) include adapter number in GPIO line label Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260511-adm1266-v2-5-7a6d34f0de5d@nexthop.ai> References: <20260511-adm1266-v2-0-7a6d34f0de5d@nexthop.ai> In-Reply-To: <20260511-adm1266-v2-0-7a6d34f0de5d@nexthop.ai> To: Guenter Roeck , Alexandru Tachici Cc: linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1778485884; l=1498; i=abdurrahman@nexthop.ai; s=20260510; h=from:subject:message-id; bh=XbXHyUmmSPnlINR9vCvpAV0eATuZ1frtfzVXW5r+IYw=; b=srho/Xbrh37yWynX9q07r5979zsJrJjZSCUUfohsmL88CnamFqct9tWXTH2ubO8iA0n6KDUrR lX3d9ecsTQNDNVN3STBYL/UA30ETWw6dqosByNDcLAW7PLHn9hlqnmO X-Developer-Key: i=abdurrahman@nexthop.ai; a=ed25519; pk=omTm9cCAbO0ZhS32aKfJDKue0W3sQGpG9ub5eYHif8I= Platforms that fit more than one ADM1266 on different I2C buses at the same 7-bit slave address (a common shelf-management pattern, e.g. one device per power domain) end up with duplicate GPIO line labels because the existing format only includes the slave address. Including the adapter number disambiguates them. The adapter number is formatted as decimal to match the i2c-N convention used elsewhere in Linux (sysfs paths, dev nodes); the slave address keeps its conventional hexadecimal form. The label is purely informational (visible via gpioinfo and the gpiochip /sys/class/gpio name); no DT or ABI consumer parses it. Signed-off-by: Abdurrahman Hussain --- drivers/hwmon/pmbus/adm1266.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/hwmon/pmbus/adm1266.c b/drivers/hwmon/pmbus/adm1266.c index 0dfb02db8683..479e768ff87c 100644 --- a/drivers/hwmon/pmbus/adm1266.c +++ b/drivers/hwmon/pmbus/adm1266.c @@ -292,8 +292,9 @@ static int adm1266_config_gpio(struct adm1266_data *dat= a) int i; =20 for (i =3D 0; i < ARRAY_SIZE(data->gpio_names); i++) { - gpio_name =3D devm_kasprintf(&data->client->dev, GFP_KERNEL, "adm1266-%x= -%s", - data->client->addr, adm1266_names[i]); + gpio_name =3D devm_kasprintf(&data->client->dev, GFP_KERNEL, "adm1266-%d= -%x-%s", + data->client->adapter->nr, data->client->addr, + adm1266_names[i]); if (!gpio_name) return -ENOMEM; =20 --=20 2.53.0