From nobody Mon Feb 9 01:50:29 2026 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.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 129711D363D; Fri, 2 Aug 2024 09:10:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722589853; cv=none; b=TU3hi+lRM6BpNK07zA5QzSH5EQ6vD1NZmpZRPV1ZloxPAYn/9lLhu4ZkA+ZdV/+2kW1xcpQz1fPOoyIsoaZICb08ZVKJZ97Atohi7MlCCo4qz155dQKSUAAO6YS30wpMzIxcyhSloGkOVm6/cAPJeK0F9u8C+fJ0X0DXheskgXk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722589853; c=relaxed/simple; bh=wZM6LoO4PA/XB4ycTumABemVy7G9m8wLw28advUxNRg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TvoEBrjsJ4Khyx289K9onUg/y6ngA73ye+QRLhtd3fbATUsdYy3juZuH457L5M0OK6jFQEnYkw3HiaRECnnpk0LVbBfqxR3UKAZZqjLWJEX2h1VudyyrRz/7RpTTcRXgOQamsBrATSjxdiGAmd0UFsL3vRzrH2ntNxobrkZRulk= 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=e6LKNONW; arc=none smtp.client-ip=209.85.210.178 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="e6LKNONW" Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-70d19d768c2so6129973b3a.3; Fri, 02 Aug 2024 02:10:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722589851; x=1723194651; 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=kzCkDzQg10EK8n1YgINi+79HQeehaLLCfYvwgSxxax8=; b=e6LKNONW8Hcy5/ttqJythCqNQiihzVerMSP9UbYuvTudYhtp+C818ZATR6aXe19gf/ RixeQ9dtCQVIcKdaPtrMx1qzGoAGdY0Q3kiq2bpByTmV0djWGPYPSA7QGjC4S9/xAZY6 lhgg8mWPqJmovBkCjSwe/M9er4mtTFD3XKMjw/9iLmGaDkOvrV1tD2u8LxcY4wf+vR/q uXFjXI61O9ee+8eYU/nDx0lf7DjQPtrSCvD9ZdZKacliv/LYO1OKUAeAkSGgRYyxRqqf Fl9FnX/EgfDgdiqX7/VRauPxEhSDWOoW6NqsrqMEKXBfzyRayj6IdY1b30qq0M7YCY9l vM0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722589851; x=1723194651; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kzCkDzQg10EK8n1YgINi+79HQeehaLLCfYvwgSxxax8=; b=OvNIXaM1yRhQNBxEZ0JQxw1k/b+NDVJBvx/bGM2FJUWYK1LPWpJaviKgE3XaFMxfC+ YQo6nDXUR/WrmaJNUTysBJ/NBAb0AB1VC6pppyh+KgKvm5dTrJ+valZbVFFQQiAWXpmA SuOqI57ifciZEKqF6vY7r4Y49pEBrS4qJM2d7RkJmGcNYY2HHU2n9olNic+607s7fMzh etipFlSA5Wg/a1Lj4agN++lSY+EM5pmg26lsE0L82K/8t832tbbTxFI0TN9yb6N+NRSE hBGae6Y+kwH80uumdRCVddpruaZJPoZ1BgSoym5vSgQufKRMfLu11lrlE4ETHQjYtGCO rxXw== X-Forwarded-Encrypted: i=1; AJvYcCWLzN2tpbdPPUQE76i9ZYH/lk/d7PEZk0gkSuZp2wQBJTmJ7mMB377YVbdBmQ4NxsICDUM2eGZxJGSl5mq7uVsYm2eJjjiD6dgcDaml X-Gm-Message-State: AOJu0Yx9gbjVElBQ8UyaxeGo+RHJDi3oy9E5PSp0fk9sy/Z5nBhqefNq 8u/ZWf2NLhzqMI4kIcZMVAGz5X4KVlzq8uMg9wWDRrFrg517g2F5/+nIwg== X-Google-Smtp-Source: AGHT+IEFrmC7YhTZ2p/did8YcX/HUIj/lWUcw4s2YvO23C207GBu2bgytaE/SHvIcFBVT2LAUaUTHQ== X-Received: by 2002:a05:6a00:14c8:b0:70e:91ca:32ab with SMTP id d2e1a72fcca58-7106cf8ffa6mr4213333b3a.6.1722589850930; Fri, 02 Aug 2024 02:10:50 -0700 (PDT) Received: from localhost.localdomain (61-220-246-151.hinet-ip.hinet.net. [61.220.246.151]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7106ec05bf3sm1034145b3a.13.2024.08.02.02.10.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Aug 2024 02:10:50 -0700 (PDT) From: Potin Lai Date: Fri, 02 Aug 2024 17:07:47 +0800 Subject: [PATCH v6 1/2] dt-bindings: arm: aspeed: add Meta Catalina board 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: <20240802-potin-catalina-dts-v6-1-0b8f61b80688@gmail.com> References: <20240802-potin-catalina-dts-v6-0-0b8f61b80688@gmail.com> In-Reply-To: <20240802-potin-catalina-dts-v6-0-0b8f61b80688@gmail.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Joel Stanley , Andrew Jeffery , Patrick Williams Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-aspeed@lists.ozlabs.org, linux-kernel@vger.kernel.org, Potin Lai , Cosmo Chou , Potin Lai , Conor Dooley X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1722589845; l=879; i=potin.lai.pt@gmail.com; s=20240724; h=from:subject:message-id; bh=wZM6LoO4PA/XB4ycTumABemVy7G9m8wLw28advUxNRg=; b=85T95yZ+AIPCpHbO25SIMKP97TSUcCuT+AHc1DKJHL7+qR+pWCl2q4sTdViovOSvZVwX1Rxsp qPT47Nah2KSBWERvs6/j+Vz224agt9SYUsLu8IFqoyGRW71Qh2CprmA X-Developer-Key: i=potin.lai.pt@gmail.com; a=ed25519; pk=6Z4H4V4fJwLteH/WzIXSsx6TkuY5FOcBBP+4OflJ5gM= Document the new compatibles used on Meta Catalina. Signed-off-by: Potin Lai Acked-by: Conor Dooley --- Documentation/devicetree/bindings/arm/aspeed/aspeed.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/arm/aspeed/aspeed.yaml b/Doc= umentation/devicetree/bindings/arm/aspeed/aspeed.yaml index 95113df178cc..f1bc2bb7b670 100644 --- a/Documentation/devicetree/bindings/arm/aspeed/aspeed.yaml +++ b/Documentation/devicetree/bindings/arm/aspeed/aspeed.yaml @@ -79,6 +79,7 @@ properties: - aspeed,ast2600-evb-a1 - asus,x4tf-bmc - facebook,bletchley-bmc + - facebook,catalina-bmc - facebook,cloudripper-bmc - facebook,elbert-bmc - facebook,fuji-bmc --=20 2.31.1 From nobody Mon Feb 9 01:50:29 2026 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (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 A817A1D4148; Fri, 2 Aug 2024 09:10:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722589857; cv=none; b=C2zmElb8imEUk+4mbNGZFVpzloxYQODh/s7RBa3cvVcWYTXtGxJN2E+dZf3U7gQCvLg094mNmRpgqOgx3lX63WWMLohOpdcVLMvSF6KeQnW3F9zRmKU60hU/QjFGCxzkyu753z0z0YPvwVgDXEhLMzKmtIFJdjmkGuzeaQ1TN2M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1722589857; c=relaxed/simple; bh=XMiBSsaFfXexyZf/1xn6Q8oxIzLkRDl4OaS8LlHRIoc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kFQPnWL+Kw4bA3Cn8u7STJDxiqX+2Vgvt9dJm3UFalnYCFcyHrLXMHX3J5u8/Z6UWk45iEZ3Wwufz/dRCT7LvNjc1Gr4FnqPLLM1U9Rpk2f7w8kheRZm9+w+GTLOSbTsvoPhjsf4Zwwxs/UFpVK4T3sr/wxR0Ge1KDRDkTUqAxY= 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=cS4kXOOs; arc=none smtp.client-ip=209.85.210.172 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="cS4kXOOs" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-70eec5f2401so5151935b3a.3; Fri, 02 Aug 2024 02:10:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1722589854; x=1723194654; 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=uqC2GiakjdUh1ZCMjmlhzXiTm1T2mQFXtXWsJack9DU=; b=cS4kXOOsVhEw/USSOllgmg8RNMNeFpzpWxY/hwtyjG+dyK7Ekqa/bgnePZ8puHT/6c M6gEgDts51jn3Qlko/4FuBsPe8Naon0vC9nQYQzabwWx63J3ZumVjKfbAyLloocgojgD FsL3l6/eqWyuiMFtJWwb4h2Va46ZwXvplqAqcln/YpNUqOg9VC7feRMXDw+uHTFSMrsT KJB79Xhfdwvrf5Tk01PQM8Sc06wE7STcI22oiDNEGPk4I23R2lBQyvunP21ib6IAtbn7 McMmZ+kviY4LUjEcbCkvrGwuOvRJyqm3Nf8tTXlMyRuHk06WtM5KCgZSiDxediY1QuPY 1iIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722589854; x=1723194654; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=uqC2GiakjdUh1ZCMjmlhzXiTm1T2mQFXtXWsJack9DU=; b=cKSwQ+1dhk9MXd/Pug8Myyg+4hPkigjs8WyGDy23Jhm7xJ8fPiAjQcOcIqez+ZzEAP knF00E2yiXz6atPpt8tv4L71xzjA2vBqCa6V1AQpHbQeNEHa0PGSgCfTndSe3oHY7lyU eOIHj/+tRj6ZikkeFlKTKdMmHt0+FS+qLN++22OqDpHbJWPk4NJCBlg7W/jQP9srHJ1z y3q7uhzNG8DY76HkPj1IdiFndepTcqYtq2AtocahpvQggnkX0xq3PFU47DPSDv4w+gw3 JOomLUIETyUvFAiQ7Qa5ZIbtFrKfp6nmNmNE7RLCENtPOnnUhzufPF3uOCs0kPs4nsY4 5nSw== X-Forwarded-Encrypted: i=1; AJvYcCXzB1MgqDnxpEgV5VWf1SL0Fj1H2DxwzvGBbWtSWraGiye84g7Ux+twNlKR2mawBdj5gXlcMVapBOFEGy1mmJBCKF8Dxyhl3Qn32Xc+ X-Gm-Message-State: AOJu0YxlJRNatO9/4IK5boW5hv00BsYdP9qGTUm+mN3L/GpJyHm5oSzb QOtW2hj0SocAl/ijV4EmendgAjrAHlOYruP0KWhCYOD4O5vMSu2WZ+pPNQ== X-Google-Smtp-Source: AGHT+IGWpKUg0KbSuowbqego8YjO0bx30+WKe90HPv1MEPviBq8W6yWiN+bkaJos0Q96r0HvCfEL7w== X-Received: by 2002:a05:6a00:3988:b0:70d:2892:402b with SMTP id d2e1a72fcca58-7106cfa5379mr4260800b3a.7.1722589853800; Fri, 02 Aug 2024 02:10:53 -0700 (PDT) Received: from localhost.localdomain (61-220-246-151.hinet-ip.hinet.net. [61.220.246.151]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7106ec05bf3sm1034145b3a.13.2024.08.02.02.10.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Aug 2024 02:10:53 -0700 (PDT) From: Potin Lai Date: Fri, 02 Aug 2024 17:07:48 +0800 Subject: [PATCH v6 2/2] ARM: dts: aspeed: catalina: add Meta Catalina BMC 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: <20240802-potin-catalina-dts-v6-2-0b8f61b80688@gmail.com> References: <20240802-potin-catalina-dts-v6-0-0b8f61b80688@gmail.com> In-Reply-To: <20240802-potin-catalina-dts-v6-0-0b8f61b80688@gmail.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Joel Stanley , Andrew Jeffery , Patrick Williams Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-aspeed@lists.ozlabs.org, linux-kernel@vger.kernel.org, Potin Lai , Cosmo Chou , Potin Lai , Krzysztof Kozlowski X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1722589845; l=21707; i=potin.lai.pt@gmail.com; s=20240724; h=from:subject:message-id; bh=XMiBSsaFfXexyZf/1xn6Q8oxIzLkRDl4OaS8LlHRIoc=; b=hgiEzZYYmsdxXoFEz74dyKwt6qJ+DJzrKiGWVfzP734DKPGEnxddpKJiT//212ZFf6MK8GuPL JZYpO5McgyOCnu4vMOCvr/MPURVaj5r1JD/pAU4tbarBQiQA7jdFeZk X-Developer-Key: i=potin.lai.pt@gmail.com; a=ed25519; pk=6Z4H4V4fJwLteH/WzIXSsx6TkuY5FOcBBP+4OflJ5gM= Add linux device tree entry for Meta(Facebook) Catalina compute-tray BMC using AT2600 SoC. Signed-off-by: Potin Lai Reviewed-by: Krzysztof Kozlowski --- arch/arm/boot/dts/aspeed/Makefile | 1 + .../dts/aspeed/aspeed-bmc-facebook-catalina.dts | 965 +++++++++++++++++= ++++ 2 files changed, 966 insertions(+) diff --git a/arch/arm/boot/dts/aspeed/Makefile b/arch/arm/boot/dts/aspeed/M= akefile index e51c6d203725..afdc9f78dd7f 100644 --- a/arch/arm/boot/dts/aspeed/Makefile +++ b/arch/arm/boot/dts/aspeed/Makefile @@ -17,6 +17,7 @@ dtb-$(CONFIG_ARCH_ASPEED) +=3D \ aspeed-bmc-bytedance-g220a.dtb \ aspeed-bmc-delta-ahe50dc.dtb \ aspeed-bmc-facebook-bletchley.dtb \ + aspeed-bmc-facebook-catalina.dtb \ aspeed-bmc-facebook-cmm.dtb \ aspeed-bmc-facebook-elbert.dtb \ aspeed-bmc-facebook-fuji.dtb \ diff --git a/arch/arm/boot/dts/aspeed/aspeed-bmc-facebook-catalina.dts b/ar= ch/arm/boot/dts/aspeed/aspeed-bmc-facebook-catalina.dts new file mode 100644 index 000000000000..70cec690f541 --- /dev/null +++ b/arch/arm/boot/dts/aspeed/aspeed-bmc-facebook-catalina.dts @@ -0,0 +1,965 @@ +// SPDX-License-Identifier: GPL-2.0+ +// Copyright (c) 2021 Facebook Inc. +/dts-v1/; + +#include "aspeed-g6.dtsi" +#include +#include +#include +#include +#include + +/ { + model =3D "Facebook Catalina BMC"; + compatible =3D "facebook,catalina-bmc", "aspeed,ast2600"; + + aliases { + serial0 =3D &uart1; + serial2 =3D &uart3; + serial3 =3D &uart4; + serial4 =3D &uart5; + i2c16 =3D &i2c1mux0ch0; + i2c17 =3D &i2c1mux0ch1; + i2c18 =3D &i2c1mux0ch2; + i2c19 =3D &i2c1mux0ch3; + i2c20 =3D &i2c1mux0ch4; + i2c21 =3D &i2c1mux0ch5; + i2c22 =3D &i2c1mux0ch6; + i2c23 =3D &i2c1mux0ch7; + i2c24 =3D &i2c0mux0ch0; + i2c25 =3D &i2c0mux0ch1; + i2c26 =3D &i2c0mux0ch2; + i2c27 =3D &i2c0mux0ch3; + i2c28 =3D &i2c0mux1ch0; + i2c29 =3D &i2c0mux1ch1; + i2c30 =3D &i2c0mux1ch2; + i2c31 =3D &i2c0mux1ch3; + i2c32 =3D &i2c0mux2ch0; + i2c33 =3D &i2c0mux2ch1; + i2c34 =3D &i2c0mux2ch2; + i2c35 =3D &i2c0mux2ch3; + i2c36 =3D &i2c0mux3ch0; + i2c37 =3D &i2c0mux3ch1; + i2c38 =3D &i2c0mux3ch2; + i2c39 =3D &i2c0mux3ch3; + i2c40 =3D &i2c0mux4ch0; + i2c41 =3D &i2c0mux4ch1; + i2c42 =3D &i2c0mux4ch2; + i2c43 =3D &i2c0mux4ch3; + i2c44 =3D &i2c0mux5ch0; + i2c45 =3D &i2c0mux5ch1; + i2c46 =3D &i2c0mux5ch2; + i2c47 =3D &i2c0mux5ch3; + i2c48 =3D &i2c30mux0ch0; + i2c49 =3D &i2c30mux0ch1; + i2c50 =3D &i2c30mux0ch2; + i2c51 =3D &i2c30mux0ch3; + i2c52 =3D &i2c30mux0ch4; + i2c53 =3D &i2c30mux0ch5; + i2c54 =3D &i2c30mux0ch6; + i2c55 =3D &i2c30mux0ch7; + }; + + chosen { + stdout-path =3D "serial4:57600n8"; + }; + + memory@80000000 { + device_type =3D "memory"; + reg =3D <0x80000000 0x80000000>; + }; + + iio-hwmon { + compatible =3D "iio-hwmon"; + io-channels =3D <&adc0 0>, <&adc0 1>, <&adc0 2>, <&adc0 3>, + <&adc0 4>, <&adc0 5>, <&adc0 6>, <&adc0 7>, + <&adc1 2>; + }; + + spi1_gpio: spi { + compatible =3D "spi-gpio"; + #address-cells =3D <1>; + #size-cells =3D <0>; + + sck-gpios =3D <&gpio0 ASPEED_GPIO(Z, 3) GPIO_ACTIVE_HIGH>; + mosi-gpios =3D <&gpio0 ASPEED_GPIO(Z, 4) GPIO_ACTIVE_HIGH>; + miso-gpios =3D <&gpio0 ASPEED_GPIO(Z, 5) GPIO_ACTIVE_HIGH>; + cs-gpios =3D <&gpio0 ASPEED_GPIO(Z, 0) GPIO_ACTIVE_LOW>; + num-chipselects =3D <1>; + + tpm@0 { + compatible =3D "infineon,slb9670", "tcg,tpm_tis-spi"; + spi-max-frequency =3D <33000000>; + reg =3D <0>; + }; + }; + + leds { + compatible =3D "gpio-leds"; + + led-0 { + label =3D "bmc_heartbeat_amber"; + gpios =3D <&gpio0 ASPEED_GPIO(P, 7) GPIO_ACTIVE_LOW>; + linux,default-trigger =3D "heartbeat"; + }; + + led-1 { + label =3D "fp_id_amber"; + default-state =3D "off"; + gpios =3D <&gpio0 ASPEED_GPIO(B, 5) GPIO_ACTIVE_HIGH>; + }; + + led-2 { + label =3D "bmc_ready_noled"; + gpios =3D <&gpio0 ASPEED_GPIO(B, 3) (GPIO_ACTIVE_HIGH|GPIO_TRANSITORY)>; + }; + + led-3 { + label =3D "bmc_ready_cpld_noled"; + gpios =3D <&gpio0 ASPEED_GPIO(P, 5) (GPIO_ACTIVE_HIGH|GPIO_TRANSITORY)>; + }; + }; +}; + +&uart1 { + status =3D "okay"; +}; + +&uart3 { + status =3D "okay"; +}; + +&uart4 { + status =3D "okay"; +}; + +&uart5 { + status =3D "okay"; +}; + +&mac3 { + status =3D "okay"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_ncsi4_default>; + use-ncsi; +}; + +&fmc { + status =3D "okay"; + flash@0 { + status =3D "okay"; + m25p,fast-read; + label =3D "bmc"; + spi-max-frequency =3D <50000000>; +#include "openbmc-flash-layout-128.dtsi" + }; + flash@1 { + status =3D "okay"; + m25p,fast-read; + label =3D "alt-bmc"; + spi-max-frequency =3D <50000000>; + }; +}; + +&i2c0 { + status =3D "okay"; + + i2c-mux@71 { + compatible =3D "nxp,pca9546"; + reg =3D <0x71>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + i2c0mux0ch0: i2c@0 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0>; + }; + i2c0mux0ch1: i2c@1 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <1>; + }; + i2c0mux0ch2: i2c@2 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <2>; + }; + i2c0mux0ch3: i2c@3 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <3>; + }; + }; + + i2c-mux@72 { + compatible =3D "nxp,pca9546"; + reg =3D <0x72>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + i2c0mux1ch0: i2c@0 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0>; + }; + i2c0mux1ch1: i2c@1 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <1>; + + // IO Mezz 0 IOEXP + io_expander7: gpio@20 { + compatible =3D "nxp,pca9535"; + reg =3D <0x20>; + gpio-controller; + #gpio-cells =3D <2>; + }; + + // IO Mezz 0 FRU EEPROM + eeprom@50 { + compatible =3D "atmel,24c64"; + reg =3D <0x50>; + }; + }; + i2c0mux1ch2: i2c@2 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <2>; + i2c-mux@70 { + compatible =3D "nxp,pca9548"; + reg =3D <0x70>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + i2c30mux0ch0: i2c@0 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0>; + }; + i2c30mux0ch1: i2c@1 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <1>; + }; + i2c30mux0ch2: i2c@2 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <2>; + }; + i2c30mux0ch3: i2c@3 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <3>; + }; + i2c30mux0ch4: i2c@4 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <4>; + }; + i2c30mux0ch5: i2c@5 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <5>; + }; + i2c30mux0ch6: i2c@6 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <6>; + // HDD FRU EEPROM + eeprom@52 { + compatible =3D "atmel,24c64"; + reg =3D <0x52>; + }; + }; + i2c30mux0ch7: i2c@7 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <7>; + + power-sensor@40 { + compatible =3D "ti,ina230"; + reg =3D <0x40>; + shunt-resistor =3D <2000>; + }; + power-sensor@41 { + compatible =3D "ti,ina230"; + reg =3D <0x41>; + shunt-resistor =3D <2000>; + }; + power-sensor@44 { + compatible =3D "ti,ina230"; + reg =3D <0x44>; + shunt-resistor =3D <2000>; + }; + power-sensor@45 { + compatible =3D "ti,ina230"; + reg =3D <0x45>; + shunt-resistor =3D <2000>; + }; + }; + }; + }; + i2c0mux1ch3: i2c@3 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <3>; + }; + }; + + i2c-mux@73 { + compatible =3D "nxp,pca9546"; + reg =3D <0x73>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + i2c0mux2ch0: i2c@0 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0>; + }; + i2c0mux2ch1: i2c@1 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <1>; + }; + i2c0mux2ch2: i2c@2 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <2>; + }; + i2c0mux2ch3: i2c@3 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <3>; + }; + }; + + i2c-mux@75 { + compatible =3D "nxp,pca9546"; + reg =3D <0x75>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + i2c0mux3ch0: i2c@0 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0>; + }; + i2c0mux3ch1: i2c@1 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <1>; + }; + i2c0mux3ch2: i2c@2 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <2>; + }; + i2c0mux3ch3: i2c@3 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <3>; + }; + }; + + i2c-mux@76 { + compatible =3D "nxp,pca9546"; + reg =3D <0x76>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + i2c0mux4ch0: i2c@0 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0>; + }; + i2c0mux4ch1: i2c@1 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <1>; + + // IO Mezz 1 IOEXP + io_expander8: gpio@21 { + compatible =3D "nxp,pca9535"; + reg =3D <0x21>; + gpio-controller; + #gpio-cells =3D <2>; + }; + + // IO Mezz 1 FRU EEPROM + eeprom@50 { + compatible =3D "atmel,24c64"; + reg =3D <0x50>; + }; + }; + i2c0mux4ch2: i2c@2 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <2>; + }; + i2c0mux4ch3: i2c@3 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <3>; + }; + }; + + i2c-mux@77 { + compatible =3D "nxp,pca9546"; + reg =3D <0x77>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + i2c0mux5ch0: i2c@0 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0>; + }; + i2c0mux5ch1: i2c@1 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <1>; + }; + i2c0mux5ch2: i2c@2 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <2>; + }; + i2c0mux5ch3: i2c@3 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <3>; + }; + }; +}; + +&i2c1 { + status =3D "okay"; + i2c-mux@70 { + compatible =3D "nxp,pca9548"; + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0x70>; + i2c-mux-idle-disconnect; + + i2c1mux0ch0: i2c@0 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0x0>; + + power-sensor@41 { + compatible =3D "ti,ina238"; + reg =3D <0x41>; + shunt-resistor =3D <500>; + }; + power-sensor@42 { + compatible =3D "ti,ina238"; + reg =3D <0x42>; + shunt-resistor =3D <500>; + }; + power-sensor@44 { + compatible =3D "ti,ina238"; + reg =3D <0x44>; + shunt-resistor =3D <500>; + }; + }; + i2c1mux0ch1: i2c@1 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0x1>; + + power-sensor@41 { + compatible =3D "ti,ina238"; + reg =3D <0x41>; + }; + power-sensor@43 { + compatible =3D "ti,ina238"; + reg =3D <0x43>; + }; + }; + i2c1mux0ch2: i2c@2 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0x2>; + }; + i2c1mux0ch3: i2c@3 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0x3>; + }; + i2c1mux0ch4: i2c@4 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0x4>; + + power-monitor@42 { + compatible =3D "lltc,ltc4287"; + reg =3D <0x42>; + shunt-resistor-micro-ohms =3D <200>; + }; + power-monitor@43 { + compatible =3D "lltc,ltc4287"; + reg =3D <0x43>; + shunt-resistor-micro-ohms =3D <200>; + }; + }; + i2c1mux0ch5: i2c@5 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0x5>; + + // PDB FRU EEPROM + eeprom@54 { + compatible =3D "atmel,24c64"; + reg =3D <0x54>; + }; + + // PDB TEMP SENSOR + temperature-sensor@4f { + compatible =3D "ti,tmp75"; + reg =3D <0x4f>; + }; + }; + i2c1mux0ch6: i2c@6 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0x6>; + + // PDB IOEXP + io_expander5: gpio@27 { + compatible =3D "nxp,pca9554"; + reg =3D <0x27>; + gpio-controller; + #gpio-cells =3D <2>; + }; + + // OSFP IOEXP + io_expander6: gpio@25 { + compatible =3D "nxp,pca9555"; + reg =3D <0x25>; + gpio-controller; + #gpio-cells =3D <2>; + }; + + // OSFP FRU EEPROM + eeprom@51 { + compatible =3D "atmel,24c64"; + reg =3D <0x51>; + }; + }; + i2c1mux0ch7: i2c@7 { + #address-cells =3D <1>; + #size-cells =3D <0>; + reg =3D <0x7>; + + // FIO FRU EEPROM + eeprom@53 { + compatible =3D "atmel,24c64"; + reg =3D <0x53>; + }; + + // FIO TEMP SENSOR + temperature-sensor@4b { + compatible =3D "ti,tmp75"; + reg =3D <0x4b>; + }; + }; + }; +}; + +&i2c2 { + status =3D "okay"; + + // Module 0 IOEXP + io_expander0: gpio@20 { + compatible =3D "nxp,pca9555"; + reg =3D <0x20>; + gpio-controller; + #gpio-cells =3D <2>; + interrupt-parent =3D <&gpio0>; + interrupts =3D ; + }; + + // Module 1 IOEXP + io_expander1: gpio@21 { + compatible =3D "nxp,pca9555"; + reg =3D <0x21>; + gpio-controller; + #gpio-cells =3D <2>; + interrupt-parent =3D <&gpio0>; + interrupts =3D ; + }; + + // HMC IOEXP + io_expander2: gpio@27 { + compatible =3D "nxp,pca9555"; + reg =3D <0x27>; + gpio-controller; + #gpio-cells =3D <2>; + interrupt-parent =3D <&gpio0>; + interrupts =3D ; + }; + + // Module 0 EEPROM + eeprom@50 { + compatible =3D "atmel,24c64"; + reg =3D <0x50>; + }; + + // Module 1 EEPROM + eeprom@51 { + compatible =3D "atmel,24c64"; + reg =3D <0x51>; + }; +}; + +&i2c3 { + status =3D "okay"; +}; + +&i2c4 { + status =3D "okay"; +}; + +&i2c5 { + status =3D "okay"; +}; + +&i2c6 { + status =3D "okay"; + + // BMC IOEXP on Module 0 + io_expander3: gpio@21 { + compatible =3D "nxp,pca9555"; + reg =3D <0x21>; + gpio-controller; + #gpio-cells =3D <2>; + }; + + rtc@6f { + compatible =3D "nuvoton,nct3018y"; + reg =3D <0x6f>; + }; +}; + +&i2c7 { + status =3D "okay"; +}; + +&i2c8 { + status =3D "okay"; +}; + +&i2c9 { + status =3D "okay"; + + // SCM CPLD IOEXP + io_expander4: gpio@4f { + compatible =3D "nxp,pca9555"; + reg =3D <0x4f>; + gpio-controller; + #gpio-cells =3D <2>; + }; + + // SCM TEMP SENSOR + temperature-sensor@4b { + compatible =3D "ti,tmp75"; + reg =3D <0x4b>; + }; + + // SCM FRU EEPROM + eeprom@50 { + compatible =3D "atmel,24c64"; + reg =3D <0x50>; + }; + + // BSM FRU EEPROM + eeprom@56 { + compatible =3D "atmel,24c64"; + reg =3D <0x56>; + }; +}; + +&i2c10 { + status =3D "okay"; + + // OCP NIC0 TEMP + temperature-sensor@1f { + compatible =3D "ti,tmp421"; + reg =3D <0x1f>; + }; + + // OCP NIC0 FRU EEPROM + eeprom@50 { + compatible =3D "atmel,24c64"; + reg =3D <0x50>; + }; +}; + +&i2c11 { + status =3D "okay"; + + ssif-bmc@10 { + compatible =3D "ssif-bmc"; + reg =3D <0x10>; + }; +}; + +&i2c12 { + status =3D "okay"; + + // Module 1 FRU EEPROM + eeprom@50 { + compatible =3D "atmel,24c64"; + reg =3D <0x50>; + }; +}; + +&i2c13 { + status =3D "okay"; + + // Module 0 FRU EEPROM + eeprom@50 { + compatible =3D "atmel,24c64"; + reg =3D <0x50>; + }; + + // Left CBC FRU EEPROM + eeprom@54 { + compatible =3D "atmel,24c02"; + reg =3D <0x54>; + }; + + // Right CBC FRU EEPROM + eeprom@55 { + compatible =3D "atmel,24c02"; + reg =3D <0x55>; + }; + + // HMC FRU EEPROM + eeprom@57 { + compatible =3D "atmel,24c02"; + reg =3D <0x57>; + }; +}; + +&i2c14 { + status =3D "okay"; +}; + +&i2c15 { + status =3D "okay"; + + // OCP NIC1 TEMP + temperature-sensor@1f { + compatible =3D "ti,tmp421"; + reg =3D <0x1f>; + }; + + // OCP NIC1 FRU EEPROM + eeprom@50 { + compatible =3D "atmel,24c64"; + reg =3D <0x50>; + }; +}; + +&adc0 { + vref =3D <1800>; + status =3D "okay"; + + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_adc0_default &pinctrl_adc1_default + &pinctrl_adc2_default &pinctrl_adc3_default + &pinctrl_adc4_default &pinctrl_adc5_default + &pinctrl_adc6_default &pinctrl_adc7_default>; +}; + +&adc1 { + vref =3D <2500>; + status =3D "okay"; + + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_adc10_default>; +}; + +&ehci0 { + status =3D "okay"; +}; + +&wdt1 { + status =3D "okay"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_wdtrst1_default>; + aspeed,reset-type =3D "soc"; + aspeed,external-signal; + aspeed,ext-push-pull; + aspeed,ext-active-high; + aspeed,ext-pulse-duration =3D <256>; +}; + +&pinctrl { + pinctrl_ncsi3_default: ncsi3_default { + function =3D "RMII3"; + groups =3D "NCSI3"; + }; + + pinctrl_ncsi4_default: ncsi4_default { + function =3D "RMII4"; + groups =3D "NCSI4"; + }; +}; + +&gpio0 { + pinctrl-names =3D "default"; + + gpio-line-names =3D + /*A0-A7*/ "","","","","","","","", + /*B0-B7*/ "BATTERY_DETECT","PRSNT1_HPM_SCM_N", + "BMC_I2C1_FPGA_ALERT_L","BMC_READY", + "IOEXP_INT_L","FM_ID_LED", + "","", + /*C0-C7*/ "","","","", + "PMBUS_REQ_N","PSU_FW_UPDATE_REQ_N", + "","BMC_I2C_SSIF_ALERT_L", + /*D0-D7*/ "","","","","","","","", + /*E0-E7*/ "","","","","","","","", + /*F0-F7*/ "","","","","","","","", + /*G0-G7*/ "","","","","","", + "FM_DEBUG_PORT_PRSNT_N","FM_BMC_DBP_PRESENT_N", + /*H0-H7*/ "PWR_BRAKE_L","RUN_POWER_EN", + "SHDN_FORCE_L","SHDN_REQ_L", + "","","","", + /*I0-I7*/ "","","","", + "","FLASH_WP_STATUS", + "FM_PDB_HEALTH_N","RUN_POWER_PG", + /*J0-J7*/ "","","","","","","","", + /*K0-K7*/ "","","","","","","","", + /*L0-L7*/ "","","","","","","","", + /*M0-M7*/ "PCIE_EP_RST_EN","BMC_FRU_WP", + "SCM_HPM_STBY_RST_N","SCM_HPM_STBY_EN", + "STBY_POWER_PG_3V3","TH500_SHDN_OK_L","","", + /*N0-N7*/ "LED_POSTCODE_0","LED_POSTCODE_1", + "LED_POSTCODE_2","LED_POSTCODE_3", + "LED_POSTCODE_4","LED_POSTCODE_5", + "LED_POSTCODE_6","LED_POSTCODE_7", + /*O0-O7*/ "HMC_I2C3_FPGA_ALERT_L","FPGA_READY_HMC", + "CHASSIS_AC_LOSS_L","BSM_PRSNT_R_N", + "PSU_SMB_ALERT_L","FM_TPM_PRSNT_0_N", + "","USBDBG_IPMI_EN_L", + /*P0-P7*/ "PWR_BTN_BMC_N","IPEX_CABLE_PRSNT_L", + "ID_RST_BTN_BMC_N","RST_BMC_RSTBTN_OUT_N", + "host0-ready","BMC_READY_CPLD","","BMC_HEARTBEAT_N", + /*Q0-Q7*/ "IRQ_PCH_TPM_SPI_N","USB_OC0_REAR_R_N", + "UART_MUX_SEL","I2C_MUX_RESET_L", + "RSVD_NV_PLT_DETECT","SPI_TPM_INT_L", + "CPU_JTAG_MUX_SELECT","THERM_BB_OVERT_L", + /*R0-R7*/ "THERM_BB_WARN_L","SPI_BMC_FPGA_INT_L", + "CPU_BOOT_DONE","PMBUS_GNT_L", + "CHASSIS_PWR_BRK_L","PCIE_WAKE_L", + "PDB_THERM_OVERT_L","HMC_I2C2_FPGA_ALERT_L", + /*S0-S7*/ "","","SYS_BMC_PWRBTN_R_N","FM_TPM_PRSNT_1_N", + "FM_BMC_DEBUG_SW_N","UID_LED_N", + "SYS_FAULT_LED_N","RUN_POWER_FAULT_L", + /*T0-T7*/ "","","","","","","","", + /*U0-U7*/ "","","","","","","","", + /*V0-V7*/ "L2_RST_REQ_OUT_L","L0L1_RST_REQ_OUT_L", + "BMC_ID_BEEP_SEL","BMC_I2C0_FPGA_ALERT_L", + "SMB_BMC_TMP_ALERT","PWR_LED_N", + "SYS_RST_OUT_L","IRQ_TPM_SPI_N", + /*W0-W7*/ "","","","","","","","", + /*X0-X7*/ "","","","","","","","", + /*Y0-Y7*/ "","RST_BMC_SELF_HW", + "FM_FLASH_LATCH_N","BMC_EMMC_RST_N", + "","","","", + /*Z0-Z7*/ "","","","","","","",""; +}; + +&io_expander0 { + gpio-line-names =3D + "FPGA_THERM_OVERT_L","FPGA_READY_BMC", + "HMC_BMC_DETECT","HMC_PGOOD", + "","BMC_SELF_PWR_CYCLE", + "FPGA_EROT_FATAL_ERROR_L","WP_HW_EXT_CTRL_L", + "EROT_FPGA_RST_L","FPGA_EROT_RECOVERY_L", + "BMC_EROT_FPGA_SPI_MUX_SEL","USB2_HUB_RESET_L", + "NCSI_CS1_SEL","SGPIO_EN_L", + "B2B_IOEXP_INT_L","I2C_BUS_MUX_RESET_L"; +}; + +&io_expander1 { + gpio-line-names =3D + "SEC_FPGA_THERM_OVERT_L","SEC_FPGA_READY_BMC", + "","", + "","", + "SEC_FPGA_EROT_FATAL_ERROR_L","SEC_WP_HW_EXT_CTRL_L", + "SEC_EROT_FPGA_RST_L","SEC_FPGA_EROT_RECOVERY_L", + "SEC_BMC_EROT_FPGA_SPI_MUX_SEL","", + "","", + "","SEC_I2C_BUS_MUX_RESET_L"; +}; + +&io_expander2 { + gpio-line-names =3D + "HMC_PRSNT_L","HMC_READY", + "HMC_EROT_FATAL_ERROR_L","I2C_MUX_SEL", + "HMC_EROT_SPI_MUX_SEL","HMC_EROT_RECOVERY_L", + "HMC_EROT_RST_L","GLOBAL_WP_HMC", + "FPGA_RST_L","USB2_HUB_RST", + "CPU_UART_MUX_SEL","", + "","","",""; +}; + +&io_expander3 { + gpio-line-names =3D + "RTC_MUX_SEL","PCI_MUX_SEL","TPM_MUX_SEL","FAN_MUX-SEL", + "SGMII_MUX_SEL","DP_MUX_SEL","UPHY3_USB_SEL","NCSI_MUX_SEL", + "BMC_PHY_RST","RTC_CLR_L","BMC_12V_CTRL","PS_RUN_IO0_PG", + "","","",""; +}; + +&io_expander4 { + gpio-line-names =3D + "stby_power_en_cpld","stby_power_gd_cpld","","", + "","","","", + "","","","", + "","","",""; +}; + +&io_expander5 { + gpio-line-names =3D + "JTAG_MUX_SEL","IOX_BMC_RESET","","", + "","","",""; +}; + +&io_expander6 { + gpio-line-names =3D + "OSFP_PHASE_ID0","OSFP_PHASE_ID1", + "OSFP_PHASE_ID2","OSFP_PHASE_ID3", + "","","","", + "OSFP_BOARD_ID0","OSFP_BOARD_ID1", + "OSFP_BOARD_ID2","PWRGD_P3V3_N1", + "PWRGD_P3V3_N2","","",""; +}; + +&io_expander7 { + gpio-line-names =3D + "RST_CX7_0","RST_CX7_1", + "CX0_SSD0_PRSNT_L","CX1_SSD1_PRSNT_L", + "CX_BOOT_CMPLT_CX0","CX_BOOT_CMPLT_CX1", + "CX_TWARN_CX0_L","CX_TWARN_CX1_L", + "CX_OVT_SHDN_CX0","CX_OVT_SHDN_CX1", + "FNP_L_CX0","FNP_L_CX1", + "","","",""; +}; + +&io_expander8 { + gpio-line-names =3D + "SEC_RST_CX7_0","SEC_RST_CX7_1", + "SEC_CX0_SSD0_PRSNT_L","SEC_CX1_SSD1_PRSNT_L", + "SEC_CX_BOOT_CMPLT_CX0","SEC_CX_BOOT_CMPLT_CX1", + "SEC_CX_TWARN_CX0_L","SEC_CX_TWARN_CX1_L", + "SEC_CX_OVT_SHDN_CX0","SEC_CX_OVT_SHDN_CX1", + "SEC_FNP_L_CX0","SEC_FNP_L_CX1", + "","","",""; +}; --=20 2.31.1