{"id":2220158,"url":"http://patchwork.ozlabs.org/api/patches/2220158/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-gpio/patch/20260406-ltc4283-support-v9-1-b66cfc749261@analog.com/","project":{"id":42,"url":"http://patchwork.ozlabs.org/api/projects/42/?format=json","name":"Linux GPIO development","link_name":"linux-gpio","list_id":"linux-gpio.vger.kernel.org","list_email":"linux-gpio@vger.kernel.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260406-ltc4283-support-v9-1-b66cfc749261@analog.com>","list_archive_url":null,"date":"2026-04-06T14:31:11","name":"[v9,1/3] dt-bindings: hwmon: Document the LTC4283 Swap Controller","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"affa0a7b13a6fd0aacfd65a27a1a1d86b4118201","submitter":{"id":87565,"url":"http://patchwork.ozlabs.org/api/people/87565/?format=json","name":"Nuno Sá via B4 Relay","email":"devnull+nuno.sa.analog.com@kernel.org"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-gpio/patch/20260406-ltc4283-support-v9-1-b66cfc749261@analog.com/mbox/","series":[{"id":498863,"url":"http://patchwork.ozlabs.org/api/series/498863/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-gpio/list/?series=498863","date":"2026-04-06T14:31:11","name":"hwmon: Add support for the LTC4283 Hot Swap Controller","version":9,"mbox":"http://patchwork.ozlabs.org/series/498863/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2220158/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2220158/checks/","tags":{},"related":[],"headers":{"Return-Path":"\n <linux-gpio+bounces-34714-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-gpio@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=KcbQ8F5t;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-gpio+bounces-34714-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"KcbQ8F5t\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fqBrR3Sh4z1yFt\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 07 Apr 2026 00:42:47 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id CA9F2301105C\n\tfor <incoming@patchwork.ozlabs.org>; Mon,  6 Apr 2026 14:42:44 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id E585B3845D1;\n\tMon,  6 Apr 2026 14:42:42 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id A6D4833B969;\n\tMon,  6 Apr 2026 14:42:42 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPS id 863F3C2BCAF;\n\tMon,  6 Apr 2026 14:42:42 +0000 (UTC)","from aws-us-west-2-korg-lkml-1.web.codeaurora.org\n (localhost.localdomain [127.0.0.1])\n\tby smtp.lore.kernel.org (Postfix) with ESMTP id 71DE2F46C47;\n\tMon,  6 Apr 2026 14:42:42 +0000 (UTC)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1775486562; cv=none;\n b=YJw2Yyhlf8GoTSwVhE0t1UkSgqAiy63Zys/xCpmsQDpx2UaP7ra45xdj3Ifog6vrD4xFjVNLgy46vNHs2/g3udDQCFx7Wz3xPtUiA6SW3mGqGawvVAi5D43Au6udgqCILdXHcX6XbmOcmz185vJOV32oKtr4LGpTQwG/LPSe7ag=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1775486562; c=relaxed/simple;\n\tbh=YRAZwpdtLFzBHDJ6JvxbTm1XlKhjW+5RrwxjYrMbb+c=;\n\th=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:\n\t In-Reply-To:To:Cc;\n b=EfcVj7haTwmMtmZE1FlS9FEAvIObve8A94vNP/OSYex/f6xPycByquP/P7/URazozfSfYkJ46r8yT1BtsyO79mg6dViZB/IRBFsbi8x+aLV/j56a46rozPMNhjqsSq7GiU5RNIsWNvNaqB7BxZYZY89MGn+WvqBoUk1wKWP37Yc=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=KcbQ8F5t; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1775486562;\n\tbh=YRAZwpdtLFzBHDJ6JvxbTm1XlKhjW+5RrwxjYrMbb+c=;\n\th=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From;\n\tb=KcbQ8F5tJmq84jNkHQEPWRoXbRm66VrD9HqMuHn78ysI1F3f1Qas4oWsBxv0FaThj\n\t TG7zyyAqD7VXhS61Yo7uzDAt631XNM24UIJMgafqFsvo81VtdcazAJ9gjuTzD2amtb\n\t ViW7wdwWABovSJbg0HcG7G8WyVbzA7gw35b25m/OAszDCGDEWXm3dgpGinvfRgFD0D\n\t hwrWO1VbFUtvWXmUcRBI6n5RPW6xfmjzokKd8jGlWSFrxGLVjHwoFKr8wzgAyuPoTE\n\t OPr9reDXuf5FxQ+kXIEPCudr5BJUt+yRbVvd6J3WqRzkOFMMAlOu60PwxroOxyHzMg\n\t sUDWHLHKiZagg==","From":"=?utf-8?q?Nuno_S=C3=A1_via_B4_Relay?=\n <devnull+nuno.sa.analog.com@kernel.org>","Date":"Mon, 06 Apr 2026 15:31:11 +0100","Subject":"[PATCH v9 1/3] dt-bindings: hwmon: Document the LTC4283 Swap\n Controller","Precedence":"bulk","X-Mailing-List":"linux-gpio@vger.kernel.org","List-Id":"<linux-gpio.vger.kernel.org>","List-Subscribe":"<mailto:linux-gpio+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-gpio+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"8bit","Message-Id":"<20260406-ltc4283-support-v9-1-b66cfc749261@analog.com>","References":"<20260406-ltc4283-support-v9-0-b66cfc749261@analog.com>","In-Reply-To":"<20260406-ltc4283-support-v9-0-b66cfc749261@analog.com>","To":"linux-gpio@vger.kernel.org, linux-hwmon@vger.kernel.org,\n devicetree@vger.kernel.org, linux-doc@vger.kernel.org","Cc":"Guenter Roeck <linux@roeck-us.net>, Rob Herring <robh@kernel.org>,\n Krzysztof Kozlowski <krzk+dt@kernel.org>,\n Conor Dooley <conor+dt@kernel.org>, Jonathan Corbet <corbet@lwn.net>,\n Linus Walleij <linusw@kernel.org>, Bartosz Golaszewski <brgl@kernel.org>","X-Mailer":"b4 0.15.1","X-Developer-Signature":"v=1; a=ed25519-sha256; t=1775486610; l=9689;\n i=nuno.sa@analog.com; s=20231116; h=from:subject:message-id;\n bh=dpLW/FJbkJTdEYKnbIi0pTDRPqeW7tODozYYmkat6BE=;\n b=af6PY1yfFLwRTEGXA9fRledfC3SBTjahvHACCV9CtCIf7vTmd6Z16n8Y1OcF7dRNUecTPv74p\n 0S7r3/Zo9XLDZxYBlvpby62VwjYdUQcs4/vC+Fe/2C68Zj1mkES3QqX","X-Developer-Key":"i=nuno.sa@analog.com; a=ed25519;\n pk=3NQwYA013OUYZsmDFBf8rmyyr5iQlxV/9H4/Df83o1E=","X-Endpoint-Received":"by B4 Relay for nuno.sa@analog.com/20231116 with\n auth_id=100","X-Original-From":"=?utf-8?q?Nuno_S=C3=A1?= <nuno.sa@analog.com>","Reply-To":"nuno.sa@analog.com"},"content":"From: Nuno Sá <nuno.sa@analog.com>\n\nThe LTC4283 is a negative voltage hot swap controller that drives an\nexternal N-channel MOSFET to allow a board to be safely inserted and\nremoved from a live backplane.\n\nSpecial note for the \"adi,vpower-drns-enable\" property. It allows to choose\nbetween the attenuated MOSFET drain voltage or the attenuated input\nvoltage at the RTNS pin (effectively choosing between input or output\npower). This is a system level decision not really intended to change at\nruntime and hence is being added as a Firmware property.\n\nReviewed-by: Rob Herring (Arm) <robh@kernel.org>\nSigned-off-by: Nuno Sá <nuno.sa@analog.com>\n---\n .../devicetree/bindings/hwmon/adi,ltc4283.yaml     | 272 +++++++++++++++++++++\n MAINTAINERS                                        |   6 +\n 2 files changed, 278 insertions(+)","diff":"diff --git a/Documentation/devicetree/bindings/hwmon/adi,ltc4283.yaml b/Documentation/devicetree/bindings/hwmon/adi,ltc4283.yaml\nnew file mode 100644\nindex 000000000000..05e2132ad4d8\n--- /dev/null\n+++ b/Documentation/devicetree/bindings/hwmon/adi,ltc4283.yaml\n@@ -0,0 +1,272 @@\n+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)\n+%YAML 1.2\n+---\n+$id: http://devicetree.org/schemas/hwmon/adi,ltc4283.yaml#\n+$schema: http://devicetree.org/meta-schemas/core.yaml#\n+\n+title: LTC4283 Negative Voltage Hot Swap Controller\n+\n+maintainers:\n+  - Nuno Sá <nuno.sa@analog.com>\n+\n+description: |\n+  The LTC4283 negative voltage hot swap controller drives an external N-channel\n+  MOSFET to allow a board to be safely inserted and removed from a live\n+  backplane.\n+\n+  https://www.analog.com/media/en/technical-documentation/data-sheets/ltc4283.pdf\n+\n+properties:\n+  compatible:\n+    enum:\n+      - adi,ltc4283\n+\n+  reg:\n+    maxItems: 1\n+\n+  adi,rsense-nano-ohms:\n+    description: Value of the sense resistor.\n+\n+  adi,current-limit-sense-microvolt:\n+    description:\n+      The current limit sense voltage of the chip is adjustable between\n+      15mV and 30mV in 1mV steps. This effectively limits the current\n+      on the load.\n+    minimum: 15000\n+    maximum: 30000\n+    default: 15000\n+\n+  adi,current-limit-foldback-factor:\n+    description:\n+      Specifies the foldback factor for the current limit. The current limit\n+      can be reduced (folded back) to one of four preset levels. The value\n+      represents the percentage of the current limit sense voltage to use\n+      during foldback. A value of 100 means no foldback.\n+    $ref: /schemas/types.yaml#/definitions/uint32\n+    enum: [10, 20, 50, 100]\n+    default: 100\n+\n+  adi,cooling-delay-ms:\n+    description:\n+      Cooling time to apply after an overcurrent fault, FET bad or\n+      external fault.\n+    enum: [512, 1002, 2005, 4100, 8190, 16400, 32800, 65600]\n+    default: 512\n+\n+  adi,fet-bad-timer-delay-ms:\n+    description:\n+      FET bad timer delay. After a FET bad status condition is detected,\n+      this timer is started. If the condition persists for the\n+      specified time, the FET is turned off and a fault is logged.\n+    enum: [256, 512, 1002, 2005]\n+    default: 256\n+\n+  adi,power-good-reset-on-fet:\n+    description:\n+      If set, resets the power good status when the MOSFET is turned off.\n+      Otherwise, it resets when a low output voltage is detected.\n+    type: boolean\n+\n+  adi,fet-turn-off-disable:\n+    description:\n+      If set, the MOSFET is not turned off when a FET fault is detected.\n+    type: boolean\n+\n+  adi,tmr-pull-down-disable:\n+    description: Disables 2uA pull-down current on the TMR pin.\n+    type: boolean\n+\n+  adi,dvdt-inrush-control-disable:\n+    description:\n+      Disables dV/dt inrush control during startup. In dV/dt mode, the inrush\n+      current is limited by controlling a constant output voltage ramp rate.\n+      When disabled, the inrush control mechanism is active current limiting.\n+    type: boolean\n+\n+  adi,fault-log-enable:\n+    description:\n+      If set, enables logging fault registers and ADC data into EEPROM upon a\n+      fault.\n+    type: boolean\n+\n+  adi,vpower-drns-enable:\n+    description:\n+      If set, enables the attenuated MOSFET drain voltage to be monitored. This\n+      effectively means that the MOSFET power is monitored. If not set, the\n+      attenuated input voltage (and hence input power) is monitored.\n+    type: boolean\n+\n+  adi,external-fault-fet-off-enable:\n+    description: Turns MOSFET off following an external fault.\n+    type: boolean\n+\n+  adi,undervoltage-retry-disable:\n+    description: Do not retry to turn on the MOSFET after an undervoltage fault.\n+    type: boolean\n+\n+  adi,overvoltage-retry-disable:\n+    description: Do not retry to turn on the MOSFET after an overvoltage fault.\n+    type: boolean\n+\n+  adi,external-fault-retry-enable:\n+    description: Retry to turn on the MOSFET after an external fault.\n+    type: boolean\n+\n+  adi,overcurrent-retries:\n+    description: Configures auto-retry following an Overcurrent fault.\n+    $ref: /schemas/types.yaml#/definitions/string\n+    enum: [latch-off, \"1\", \"7\", unlimited]\n+    default: latch-off\n+\n+  adi,fet-bad-retries:\n+    description:\n+      Configures auto-retry following a FET bad fault and a consequent MOSFET\n+      turn off.\n+    $ref: /schemas/types.yaml#/definitions/string\n+    enum: [latch-off, \"1\", \"7\", unlimited]\n+    default: latch-off\n+\n+  adi,pgio1-func:\n+    description: Configures the function of the PGIO1 pin.\n+    $ref: /schemas/types.yaml#/definitions/string\n+    enum: [inverted_power_good, power_good, gpio]\n+    default: inverted_power_good\n+\n+  adi,pgio2-func:\n+    description: Configures the function of the PGIO2 pin.\n+    $ref: /schemas/types.yaml#/definitions/string\n+    enum: [inverted_power_good, power_good, gpio, active_current_limiting]\n+    default: inverted_power_good\n+\n+  adi,pgio3-func:\n+    description: Configures the function of the PGIO3 pin.\n+    $ref: /schemas/types.yaml#/definitions/string\n+    enum: [inverted_power_good_input, power_good_input, gpio]\n+    default: inverted_power_good_input\n+\n+  adi,pgio4-func:\n+    description: Configures the function of the PGIO4 pin.\n+    $ref: /schemas/types.yaml#/definitions/string\n+    enum: [inverted_external_fault, external_fault, gpio]\n+    default: inverted_external_fault\n+\n+  adi,gpio-on-adio1:\n+    description: If set, the ADIO1 pin is used as a GPIO.\n+    type: boolean\n+\n+  adi,gpio-on-adio2:\n+    description: If set, the ADIO2 pin is used as a GPIO.\n+    type: boolean\n+\n+  adi,gpio-on-adio3:\n+    description: If set, the ADIO3 pin is used as a GPIO.\n+    type: boolean\n+\n+  adi,gpio-on-adio4:\n+    description: If set, the ADIO4 pin is used as a GPIO.\n+    type: boolean\n+\n+  gpio-controller: true\n+\n+  '#gpio-cells':\n+    const: 2\n+\n+dependencies:\n+  adi,gpio-on-adio1:\n+    - gpio-controller\n+    - '#gpio-cells'\n+  adi,gpio-on-adio2:\n+    - gpio-controller\n+    - '#gpio-cells'\n+  adi,gpio-on-adio3:\n+    - gpio-controller\n+    - '#gpio-cells'\n+  adi,gpio-on-adio4:\n+    - gpio-controller\n+    - '#gpio-cells'\n+  adi,external-fault-retry-enable:\n+    - adi,pgio4-func\n+  adi,external-fault-fet-off-enable:\n+    - adi,pgio4-func\n+\n+required:\n+  - compatible\n+  - reg\n+  - adi,rsense-nano-ohms\n+\n+allOf:\n+  - if:\n+      properties:\n+        adi,pgio1-func:\n+          const: gpio\n+      required:\n+        - adi,pgio1-func\n+    then:\n+      required:\n+        - gpio-controller\n+        - '#gpio-cells'\n+\n+  - if:\n+      properties:\n+        adi,pgio2-func:\n+          const: gpio\n+      required:\n+        - adi,pgio2-func\n+    then:\n+      required:\n+        - gpio-controller\n+        - '#gpio-cells'\n+\n+  - if:\n+      properties:\n+        adi,pgio3-func:\n+          const: gpio\n+      required:\n+        - adi,pgio3-func\n+    then:\n+      required:\n+        - gpio-controller\n+        - '#gpio-cells'\n+\n+  - if:\n+      properties:\n+        adi,pgio4-func:\n+          const: gpio\n+      required:\n+        - adi,pgio4-func\n+    then:\n+      properties:\n+        adi,external-fault-retry-enable: false\n+        adi,external-fault-fet-off-enable: false\n+      required:\n+        - gpio-controller\n+        - '#gpio-cells'\n+\n+additionalProperties: false\n+\n+examples:\n+  - |\n+    i2c {\n+        #address-cells = <1>;\n+        #size-cells = <0>;\n+\n+        swap-controller@15 {\n+            compatible = \"adi,ltc4283\";\n+            reg = <0x15>;\n+\n+            adi,rsense-nano-ohms = <500>;\n+            adi,current-limit-sense-microvolt = <25000>;\n+            adi,current-limit-foldback-factor = <10>;\n+            adi,cooling-delay-ms = <8190>;\n+            adi,fet-bad-timer-delay-ms = <512>;\n+\n+            adi,external-fault-fet-off-enable;\n+            adi,pgio4-func = \"external_fault\";\n+\n+            adi,gpio-on-adio1;\n+            adi,pgio1-func = \"gpio\";\n+            gpio-controller;\n+            #gpio-cells = <2>;\n+        };\n+    };\n+...\ndiff --git a/MAINTAINERS b/MAINTAINERS\nindex e008c2bcc187..3f727d7fdfa4 100644\n--- a/MAINTAINERS\n+++ b/MAINTAINERS\n@@ -15161,6 +15161,12 @@ F:\tDocumentation/devicetree/bindings/hwmon/adi,ltc4282.yaml\n F:\tDocumentation/hwmon/ltc4282.rst\n F:\tdrivers/hwmon/ltc4282.c\n \n+LTC4283 HARDWARE MONITOR AND GPIO DRIVER\n+M:\tNuno Sá <nuno.sa@analog.com>\n+L:\tlinux-hwmon@vger.kernel.org\n+S:\tSupported\n+F:\tDocumentation/devicetree/bindings/hwmon/adi,ltc4283.yaml\n+\n LTC4286 HARDWARE MONITOR DRIVER\n M:\tDelphine CC Chiu <Delphine_CC_Chiu@Wiwynn.com>\n L:\tlinux-hwmon@vger.kernel.org\n","prefixes":["v9","1/3"]}