From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.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 6B3C33A901F for ; Mon, 8 Jun 2026 20:58:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780952289; cv=none; b=dom13G7ivPux3PzPpXg+/T2dWiJAG4rZy/qxCjbsKRCZEdDg1RnRwzulMZw88V+Bmud4N1E5IMIta01lQXyTUatGoCAziIxupQDCUJ6HqJjwQiXcQlVXYa4uQClUU6UlNyyosvfqVTWpflkuiksMVQVvaXS/RoKoM/MvqNQqKIA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780952289; c=relaxed/simple; bh=Adlvqfy4/RiVofJyXdnjYaiEBf1qc1usUCMPJaHxVWQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=njkFu0sDp02IpWfDyk0kWrGWJf8vAipBdzF6TP2HxZmXG6HIlkdu+RCCnjv7DR2HieJIwh+mkdB5CiQzBwUPWdZZR8XUoMM9OJ9gL0viku4gUo1d8pi+11K26dGz2PRH5gQzLdrUdyHvd7uSxgSuBG1T8rNoy7mHA6NUpftS5fM= 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=LfApxshA; arc=none smtp.client-ip=209.85.128.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="LfApxshA" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-490b4e1ade7so52553495e9.0 for ; Mon, 08 Jun 2026 13:58:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780952286; x=1781557086; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=F03FjO4LjSiNWn1/BhvBC+hqEK9VBACUAnKsqMGfyeQ=; b=LfApxshAA3zp6m4ef2G6XGVf7C0Bg+sSAwCBZ4weTVvMN9ddLpUfgK6u52QKcjvAPF 4T4v3SbLSVBwwhPKVrCFlScVY5vyQLfYYNWuAoqLUh9DilnnkHFx9gsVqkqEG0I6vgZP +w2anXtOKzIF7dhwGlcq0wtizrYkEdI4eYQSD3RV603ADjCSuwA6yKvIy3bLMc6Y+ae3 GTLZY2YSIv2oeInrI3I+Fvc+no7J8slKraHQaE9hi6Tnc8A+0sHEWUujqjqsrElmufuU O+M72ZsjTkHutJjsPX5/u3156DBpQBftbmtrJ3GXdVw0qTh4Q/QDSwmkyuwKHqcabItb IHOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780952286; x=1781557086; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=F03FjO4LjSiNWn1/BhvBC+hqEK9VBACUAnKsqMGfyeQ=; b=YoupYVB6eI5e07JM/sE0FniXRPsqbje/kso7zO8M8H26rZx6eeWdmL54kRZvTd/evy McnRAItXSWWYoqjI1PTSUkelnlFUdIvdv7w5w3jStVGO1bQvSXYqUINig2WWMxzWFwnk CtyGsY/YHiFsBS5isdVa0DRuSNQLV1g2B6NDezOd971k12AXNPeme+yZSvbccXn7nMgy LNHIdgguhdf+B7Ou2C1v8GrEulaoPbJC1c8DSIbDzJ/7yWKhnFf1gjhEqP/3UvEae1yt aXXSpcgDPVsWQba4cdBDyilLFeMeYzwT+mbFI66zUkdxiUNqW53XLucrS0Pil2ndophP W3cw== X-Forwarded-Encrypted: i=1; AFNElJ+ObARXE/rhqP6CcASXkgYwr441d7jA8sZkXUHS8yW2l+hvQHVu0Uwxnm0n7mzRhqpNRwCwGIRJL4apNtk=@vger.kernel.org X-Gm-Message-State: AOJu0Yx1b66c71OK7M95Eug5azW83y2gSDxZigdvLntoVaQlXvviLFVB YIO7YUn4r1etqPKeQ+Uqkff3fmu6C8BPtTFvk4zfFrd7WgpfNsu/iXwc X-Gm-Gg: Acq92OFLXmfDp8GB9ZIdK0YWWATFc2G/mg5pSQ56UfZxEvjDr669AkWTndd/ucudr0G ddL6m7O0tzLuk5yA6aXNvl9WbpiaxqXMqiEm/wc7aZbQ9Op8fJP8Ocrv3FMtdBabcuyf0vfFq8e 8Ni4Ma09dJwbpslTUYrw4Gpm3iQTdU58pN05H1fdf86K90iKvR/ITYBRxgt/45U6mMDjDgVepB5 M3m3D02bBpLNFd6PR6PJUnBE3ZPhp47+feJt7CBu7uOD0WV9INTanWQOdyaxzlpaWmgCYwQOTff v34iEoOgBE2aUZ8KUZ5rhsukLNsPv3njinOU2xkKMR8y3CWsTPB7OAgmQN9OARxlXZN8nRWj63K lQGZkx5ehkzOUFp0OpmigSd4Zm9ghy/vC4ODOaYDuwowwadwL72AEwGiNuvMUnPJVmJgFLXwzvi aznL+8aRRUR+HOnnufwjJzKyct8CfYYdJ0cIkA X-Received: by 2002:a05:600c:45ce:b0:490:b35c:88ea with SMTP id 5b1f17b1804b1-490c25e74b7mr261048755e9.15.1780952285658; Mon, 08 Jun 2026 13:58:05 -0700 (PDT) Received: from builder ([2001:9e8:f105:6a16:be24:11ff:fe30:5d85]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490c2d4891csm231011875e9.1.2026.06.08.13.58.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jun 2026 13:58:05 -0700 (PDT) From: Jonas Jelonek To: Oleksij Rempel , Kory Maincent , Andrew Lunn , "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Daniel Golle , =?UTF-8?q?Bj=C3=B8rn=20Mork?= , Jonas Jelonek Subject: [PATCH net-next 1/2] dt-bindings: net: pse-pd: add bindings for Realtek/Broadcom PSE MCU Date: Mon, 8 Jun 2026 20:57:56 +0000 Message-ID: <20260608205758.1830521-2-jelonek.jonas@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260608205758.1830521-1-jelonek.jonas@gmail.com> References: <20260608205758.1830521-1-jelonek.jonas@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: 8bit Add a binding for the microcontroller (MCU) that fronts the PSE silicon on a range of managed switches. The host talks only to the MCU, over I2C/SMBus or UART, using a fixed message-based protocol; the PSE chips behind it never appear on the bus. The compatible identifies the PSE-MCU protocol dialect (realtek,pse-mcu-rtk or realtek,pse-mcu-bcm), not a specific part: the node describes the MCU - whose silicon is a general-purpose microcontroller that varies across boards - and the 'realtek' vendor prefix reflects the platform these MCUs are found on (Realtek-based PoE switches), following the google,cros-ec-* pattern rather than naming the MCU silicon. The '-rtk'/'-bcm' suffix selects the Realtek or Broadcom dialect within that one family. The specific PSE chip is detected at runtime and is not described here. A single compatible per dialect covers both the I2C/SMBus and UART attachments: the wire protocol is identical across them and the transport is expressed by the node's parent bus, so it is not encoded in the compatible. Both dialects share one protocol family and one device tree contract, so they are documented in a single binding under one vendor prefix. The 'realtek' prefix is used because this MCU front-end is found almost exclusively on Realtek-based switches; the Broadcom dialect is expressed as the realtek,pse-mcu-bcm compatible within the same family. Signed-off-by: Jonas Jelonek --- .../bindings/net/pse-pd/realtek,pse-mcu.yaml | 154 ++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/pse-pd/realtek,pse-mcu.yaml diff --git a/Documentation/devicetree/bindings/net/pse-pd/realtek,pse-mcu.yaml b/Documentation/devicetree/bindings/net/pse-pd/realtek,pse-mcu.yaml new file mode 100644 index 000000000000..2fb729dcb41f --- /dev/null +++ b/Documentation/devicetree/bindings/net/pse-pd/realtek,pse-mcu.yaml @@ -0,0 +1,154 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/net/pse-pd/realtek,pse-mcu.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Realtek/Broadcom PSE MCU + +maintainers: + - Jonas Jelonek + +description: | + Microcontroller (MCU) that fronts the PSE hardware on switches using + Realtek (RTL8238B, RTL8239, RTL8239C) or Broadcom (BCM59111, BCM59121) + PSE chips. The MCU exposes a small message-based protocol over either + I2C/SMBus or UART; the actual PSE silicon is not accessed directly. The + Realtek and Broadcom variants share this device tree contract but use + different protocol opcodes, selected by the compatible. + + The compatible identifies the PSE-MCU protocol dialect, not a specific + part. The device described here is the MCU, whose own silicon varies + across boards and is incidental to the protocol. The MCU is not + made by Realtek or Broadcom; the 'realtek' vendor prefix reflects the + platform these MCUs are found on (Realtek-based PoE switches) and the + '-rtk'/'-bcm' suffix selects the Realtek or Broadcom protocol dialect. + The specific PSE chip behind the MCU is not described in the device + tree either; it is detected at runtime by querying the MCU. + + A single compatible per dialect covers both the I2C/SMBus and UART + attachments: the wire protocol is identical across them and the + transport is already expressed by the node's parent bus, so it is not + encoded in the compatible. Transport-specific properties differ + accordingly - the I2C attachment carries 'reg' (and, for Realtek, + 'realtek,i2c-protocol'), while the UART attachment carries the serial + peripheral properties such as 'current-speed'. + +properties: + compatible: + enum: + - realtek,pse-mcu-rtk + - realtek,pse-mcu-bcm + + reg: + maxItems: 1 + + power-supply: + description: Regulator supplying the PoE power rail. + + enable-gpios: + maxItems: 1 + + realtek,i2c-protocol: + $ref: /schemas/types.yaml#/definitions/string + enum: [ i2c, smbus ] + description: | + Wire framing the MCU firmware expects on the I2C bus. "smbus" means + reads carry a leading command byte (0x00) and a repeated start; "i2c" + means bare 12-byte writes and reads with no command prefix. Only + applies to the Realtek I2C attachment. + +required: + - compatible + +allOf: + - $ref: pse-controller.yaml# + - $ref: /schemas/serial/serial-peripheral-props.yaml# + # The I2C attachment (identified by 'reg') cannot carry serial bus props. + - if: + required: [reg] + then: + properties: + current-speed: false + max-speed: false + # 'realtek,i2c-protocol' is meaningful only for the Realtek I2C attachment; + # the Broadcom variant and any UART attachment must not carry it. + - if: + properties: + compatible: + contains: + const: realtek,pse-mcu-rtk + required: [reg] + then: + required: + - realtek,i2c-protocol + else: + properties: + "realtek,i2c-protocol": false + +unevaluatedProperties: false + +examples: + # Realtek PSE chip, I2C attachment (SMBus framing). + - | + i2c { + #address-cells = <1>; + #size-cells = <0>; + + ethernet-pse@20 { + compatible = "realtek,pse-mcu-rtk"; + reg = <0x20>; + realtek,i2c-protocol = "smbus"; + + pse-pis { + #address-cells = <1>; + #size-cells = <0>; + + pse-pi@0 { + reg = <0>; + #pse-cells = <0>; + }; + }; + }; + }; + + # Broadcom PSE chip, I2C attachment. + - | + i2c { + #address-cells = <1>; + #size-cells = <0>; + + ethernet-pse@20 { + compatible = "realtek,pse-mcu-bcm"; + reg = <0x20>; + + pse-pis { + #address-cells = <1>; + #size-cells = <0>; + + pse-pi@0 { + reg = <0>; + #pse-cells = <0>; + }; + }; + }; + }; + + # Realtek PSE chip, UART attachment. + - | + serial { + ethernet-pse { + compatible = "realtek,pse-mcu-rtk"; + current-speed = <115200>; + + pse-pis { + #address-cells = <1>; + #size-cells = <0>; + + pse-pi@0 { + reg = <0>; + #pse-cells = <0>; + }; + }; + }; + }; -- 2.51.0