2024-03-27 06:39:15

by Sumit Garg

[permalink] [raw]
Subject: [PATCH v4 0/3] arm64: dts: qcom: apq8016: Add Schneider HMIBSC board DTS

Add Schneider Electric HMIBSC board DTS. The HMIBSC board is an IIoT Edge
Box Core board based on the Qualcomm APQ8016E SoC. For more information
refer to the product page [1].

One of the major difference from db410c is serial port where HMIBSC board
uses UART1 as the debug console with a default RS232 mode (UART1 mode mux
configured via gpio99 and gpio100).

Support for Schneider Electric HMIBSC. Features:
- Qualcomm Snapdragon 410C SoC - APQ8016 (4xCortex A53, Adreno 306)
- 1GiB RAM
- 8GiB eMMC, SD slot
- WiFi and Bluetooth
- 2x Host, 1x Device USB port
- HDMI
- Discrete TPM2 chip over SPI
- USB ethernet adaptors (soldered)

This series is a v2 since v1 of this DTS file has been reviewed on the
U-Boot mailing list [2].

Changes in v4:
- Dropped IRQ_TYPE_EDGE_FALLING for pm8916_resin given the expectations
of Linux kernel driver. Instead depend on systemd workaround suggested
by Caleb to get expected HMIBSC reset behaviour.
- Incorporated further DT coding style comments from Stephen.
- Warnings reported by Rob's DT check bot aren't related to HMIBSC
board DTS but rather they are due to msm8916.dtsi or extcon-usb-gpio.txt
still not converted to YAML format.

Changes in v3:
- Picked up tags.
- Fixed further DT schema warnings.
- Configure resin/power button interrupt as falling edge.
- Incorporate DTS coding style comments from Krzysztof and Konrad.

Changes in v2:
- Fix DT schema warnings.
- Incorporate suggestions from Stephan.
- Document UART1 mode GPIOs based mux.

[1] https://www.se.com/us/en/product/HMIBSCEA53D1L0T/iiot-edge-box-core-harmony-ipc-emmc-dc-linux-tpm/
[2] https://patchwork.ozlabs.org/project/uboot/patch/[email protected]/

Sumit Garg (3):
dt-bindings: vendor-prefixes: Add Schneider Electric
dt-bindings: arm: qcom: Add Schneider Electric HMIBSC board
arm64: dts: qcom: apq8016: Add Schneider HMIBSC board DTS

.../devicetree/bindings/arm/qcom.yaml | 1 +
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../dts/qcom/apq8016-schneider-hmibsc.dts | 490 ++++++++++++++++++
4 files changed, 494 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dts

--
2.34.1



2024-03-27 06:39:34

by Sumit Garg

[permalink] [raw]
Subject: [PATCH v4 1/3] dt-bindings: vendor-prefixes: Add Schneider Electric

Add vendor prefix for Schneider Electric (https://www.se.com/).

Acked-by: Krzysztof Kozlowski <[email protected]>
Signed-off-by: Sumit Garg <[email protected]>
---
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index 1a0dc04f1db4..4ef38573e411 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -1211,6 +1211,8 @@ patternProperties:
description: Smart Battery System
"^schindler,.*":
description: Schindler
+ "^schneider,.*":
+ description: Schneider Electric
"^seagate,.*":
description: Seagate Technology PLC
"^seeed,.*":
--
2.34.1


2024-03-27 06:39:48

by Sumit Garg

[permalink] [raw]
Subject: [PATCH v4 2/3] dt-bindings: arm: qcom: Add Schneider Electric HMIBSC board

Document the compatible for the Schneider Electric HMIBSC IIoT edge box
core board based on the Qualcomm APQ8016E SoC.

Acked-by: Krzysztof Kozlowski <[email protected]>
Signed-off-by: Sumit Garg <[email protected]>
---
Documentation/devicetree/bindings/arm/qcom.yaml | 1 +
1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml
index 1a5fb889a444..c8c91754fe04 100644
--- a/Documentation/devicetree/bindings/arm/qcom.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom.yaml
@@ -137,6 +137,7 @@ properties:
- items:
- enum:
- qcom,apq8016-sbc
+ - schneider,apq8016-hmibsc
- const: qcom,apq8016

- items:
--
2.34.1


2024-03-27 06:40:18

by Sumit Garg

[permalink] [raw]
Subject: [PATCH v4 3/3] arm64: dts: qcom: apq8016: Add Schneider HMIBSC board DTS

Add Schneider Electric HMIBSC board DTS. The HMIBSC board is an IIoT Edge
Box Core board based on the Qualcomm APQ8016E SoC.

Support for Schneider Electric HMIBSC. Features:
- Qualcomm Snapdragon 410C SoC - APQ8016 (4xCortex A53, Adreno 306)
- 1GiB RAM
- 8GiB eMMC, SD slot
- WiFi and Bluetooth
- 2x Host, 1x Device USB port
- HDMI
- Discrete TPM2 chip over SPI
- USB ethernet adaptors (soldered)

Co-developed-by: Jagdish Gediya <[email protected]>
Signed-off-by: Jagdish Gediya <[email protected]>
Reviewed-by: Caleb Connolly <[email protected]>
Signed-off-by: Sumit Garg <[email protected]>
---
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../dts/qcom/apq8016-schneider-hmibsc.dts | 490 ++++++++++++++++++
2 files changed, 491 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dts

diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 39889d5f8e12..ad55e52e950b 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -5,6 +5,7 @@ apq8016-sbc-usb-host-dtbs := apq8016-sbc.dtb apq8016-sbc-usb-host.dtbo

dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc-usb-host.dtb
dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc-d3-camera-mezzanine.dtb
+dtb-$(CONFIG_ARCH_QCOM) += apq8016-schneider-hmibsc.dtb
dtb-$(CONFIG_ARCH_QCOM) += apq8039-t2.dtb
dtb-$(CONFIG_ARCH_QCOM) += apq8094-sony-xperia-kitakami-karin_windy.dtb
dtb-$(CONFIG_ARCH_QCOM) += apq8096-db820c.dtb
diff --git a/arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dts b/arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dts
new file mode 100644
index 000000000000..62ce862ff5c0
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dts
@@ -0,0 +1,490 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2024, Linaro Ltd.
+ */
+
+/dts-v1/;
+
+#include "msm8916-pm8916.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
+#include <dt-bindings/sound/apq8016-lpass.h>
+
+/ {
+ model = "Schneider Electric HMIBSC Board";
+ compatible = "schneider,apq8016-hmibsc", "qcom,apq8016";
+
+ aliases {
+ i2c1 = &blsp_i2c6;
+ i2c3 = &blsp_i2c4;
+ i2c4 = &blsp_i2c3;
+ mmc0 = &sdhc_1; /* eMMC */
+ mmc1 = &sdhc_2; /* SD card */
+ serial0 = &blsp_uart1;
+ serial1 = &blsp_uart2;
+ spi0 = &blsp_spi5;
+ usid0 = &pm8916_0;
+ };
+
+ chosen {
+ stdout-path = "serial0";
+ };
+
+ hdmi-out {
+ compatible = "hdmi-connector";
+ type = "a";
+
+ port {
+ hdmi_con: endpoint {
+ remote-endpoint = <&adv7533_out>;
+ };
+ };
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+ autorepeat;
+ pinctrl-0 = <&msm_key_volp_n_default>;
+ pinctrl-names = "default";
+
+ button {
+ label = "Volume Up";
+ linux,code = <KEY_VOLUMEUP>;
+ gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+ leds {
+ compatible = "gpio-leds";
+ pinctrl-0 = <&pm8916_mpps_leds>;
+ pinctrl-names = "default";
+
+ led-1 {
+ function = LED_FUNCTION_WLAN;
+ color = <LED_COLOR_ID_YELLOW>;
+ gpios = <&pm8916_mpps 2 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "phy0tx";
+ default-state = "off";
+ };
+
+ led-2 {
+ function = LED_FUNCTION_BLUETOOTH;
+ color = <LED_COLOR_ID_BLUE>;
+ gpios = <&pm8916_mpps 3 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "bluetooth-power";
+ default-state = "off";
+ };
+ };
+
+ memory@80000000 {
+ reg = <0 0x80000000 0 0x40000000>;
+ };
+
+ reserved-memory {
+ ramoops@bff00000 {
+ compatible = "ramoops";
+ reg = <0x0 0xbff00000 0x0 0x100000>;
+ record-size = <0x20000>;
+ console-size = <0x20000>;
+ ftrace-size = <0x20000>;
+ ecc-size = <16>;
+ };
+ };
+
+ usb-hub {
+ compatible = "smsc,usb3503";
+ reset-gpios = <&pm8916_gpios 1 GPIO_ACTIVE_LOW>;
+ initial-mode = <1>;
+ };
+
+ usb_id: usb-id {
+ compatible = "linux,extcon-usb-gpio";
+ id-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
+ pinctrl-0 = <&usb_id_default>;
+ pinctrl-names = "default";
+ };
+};
+
+&blsp_i2c3 {
+ status = "okay";
+
+ eeprom@50 {
+ compatible = "atmel,24c32";
+ reg = <0x50>;
+ };
+};
+
+&blsp_i2c4 {
+ status = "okay";
+
+ adv_bridge: bridge@39 {
+ compatible = "adi,adv7533";
+ reg = <0x39>;
+ interrupts-extended = <&tlmm 31 IRQ_TYPE_EDGE_FALLING>;
+
+ adi,dsi-lanes = <4>;
+ clocks = <&rpmcc RPM_SMD_BB_CLK2>;
+ clock-names = "cec";
+ pd-gpios = <&tlmm 32 GPIO_ACTIVE_HIGH>;
+
+ avdd-supply = <&pm8916_l6>;
+ a2vdd-supply = <&pm8916_l6>;
+ dvdd-supply = <&pm8916_l6>;
+ pvdd-supply = <&pm8916_l6>;
+ v1p2-supply = <&pm8916_l6>;
+ v3p3-supply = <&pm8916_l17>;
+
+ pinctrl-0 = <&adv7533_int_active &adv7533_switch_active>;
+ pinctrl-1 = <&adv7533_int_suspend &adv7533_switch_suspend>;
+ pinctrl-names = "default","sleep";
+ #sound-dai-cells = <0>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ adv7533_in: endpoint {
+ remote-endpoint = <&mdss_dsi0_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ adv7533_out: endpoint {
+ remote-endpoint = <&hdmi_con>;
+ };
+ };
+ };
+ };
+};
+
+&blsp_i2c6 {
+ status = "okay";
+
+ rtc@30 {
+ compatible = "sii,s35390a";
+ reg = <0x30>;
+ };
+
+ eeprom@50 {
+ compatible = "atmel,24c256";
+ reg = <0x50>;
+ };
+};
+
+&blsp_spi5 {
+ cs-gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
+ status = "okay";
+
+ tpm@0 {
+ compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
+ reg = <0>;
+ spi-max-frequency = <500000>;
+ };
+};
+
+&blsp_uart1 {
+ label = "UART0";
+ status = "okay";
+};
+
+&blsp_uart2 {
+ label = "UART1";
+ status = "okay";
+};
+
+&lpass {
+ status = "okay";
+};
+
+&mdss {
+ status = "okay";
+};
+
+&mdss_dsi0_out {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&adv7533_in>;
+};
+
+&pm8916_codec {
+ qcom,mbhc-vthreshold-low = <75 150 237 450 500>;
+ qcom,mbhc-vthreshold-high = <75 150 237 450 500>;
+ status = "okay";
+};
+
+&pm8916_gpios {
+ gpio-line-names =
+ "USB_HUB_RESET_N_PM",
+ "USB_SW_SEL_PM",
+ "NC",
+ "NC";
+
+ usb_hub_reset_pm: usb-hub-reset-pm-state {
+ pins = "gpio1";
+ function = PMIC_GPIO_FUNC_NORMAL;
+ input-disable;
+ output-high;
+ };
+
+ usb_hub_reset_pm_device: usb-hub-reset-pm-device-state {
+ pins = "gpio1";
+ function = PMIC_GPIO_FUNC_NORMAL;
+ output-low;
+ };
+
+ usb_sw_sel_pm: usb-sw-sel-pm-state {
+ pins = "gpio2";
+ function = PMIC_GPIO_FUNC_NORMAL;
+ power-source = <PM8916_GPIO_VPH>;
+ input-disable;
+ output-high;
+ };
+
+ usb_sw_sel_pm_device: usb-sw-sel-pm-device-state {
+ pins = "gpio2";
+ function = PMIC_GPIO_FUNC_NORMAL;
+ power-source = <PM8916_GPIO_VPH>;
+ input-disable;
+ output-low;
+ };
+};
+
+&pm8916_mpps {
+ gpio-line-names =
+ "NC",
+ "WLAN_LED_CTRL",
+ "BT_LED_CTRL",
+ "NC";
+
+ pm8916_mpps_leds: pm8916-mpps-state {
+ pins = "mpp2", "mpp3";
+ function = "digital";
+ output-low;
+ };
+};
+
+&pm8916_resin {
+ linux,code = <KEY_POWER>;
+ status = "okay";
+};
+
+&pm8916_rpm_regulators {
+ pm8916_l17: l17 {
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ };
+};
+
+&sdhc_1 {
+ status = "okay";
+};
+
+&sdhc_2 {
+ pinctrl-0 = <&sdc2_default &sdc2_cd_default>;
+ pinctrl-1 = <&sdc2_sleep &sdc2_cd_default>;
+ pinctrl-names = "default", "sleep";
+ cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
+ status = "okay";
+};
+
+&sound {
+ pinctrl-0 = <&cdc_pdm_default &sec_mi2s_default>;
+ pinctrl-1 = <&cdc_pdm_sleep &sec_mi2s_sleep>;
+ pinctrl-names = "default", "sleep";
+ model = "HMIBSC";
+ audio-routing =
+ "AMIC2", "MIC BIAS Internal2",
+ "AMIC3", "MIC BIAS External1";
+ status = "okay";
+
+ quaternary-dai-link {
+ link-name = "ADV7533";
+ cpu {
+ sound-dai = <&lpass MI2S_QUATERNARY>;
+ };
+ codec {
+ sound-dai = <&adv_bridge 0>;
+ };
+ };
+
+ primary-dai-link {
+ link-name = "WCD";
+ cpu {
+ sound-dai = <&lpass MI2S_PRIMARY>;
+ };
+ codec {
+ sound-dai = <&lpass_codec 0>, <&pm8916_codec 0>;
+ };
+ };
+
+ tertiary-dai-link {
+ link-name = "WCD-Capture";
+ cpu {
+ sound-dai = <&lpass MI2S_TERTIARY>;
+ };
+ codec {
+ sound-dai = <&lpass_codec 1>, <&pm8916_codec 1>;
+ };
+ };
+};
+
+&tlmm {
+ pinctrl-0 = <&uart1_mux0_rs232_high &uart1_mux1_rs232_low>;
+ pinctrl-names = "default";
+
+ adv7533_int_active: adv533-int-active-state {
+ pins = "gpio31";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ };
+
+ adv7533_int_suspend: adv7533-int-suspend-state {
+ pins = "gpio31";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ adv7533_switch_active: adv7533-switch-active-state {
+ pins = "gpio32";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ };
+
+ adv7533_switch_suspend: adv7533-switch-suspend-state {
+ pins = "gpio32";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ msm_key_volp_n_default: msm-key-volp-n-default-state {
+ pins = "gpio107";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+
+ sdc2_cd_default: sdc2-cd-default-state {
+ pins = "gpio38";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ /*
+ * UART1 being the debug console supports various modes of
+ * operation (RS-232/485/422) controlled via GPIOs configured
+ * mux as follows:
+ *
+ * gpio100 gpio99 UART mode
+ * 0 0 loopback
+ * 0 1 RS-232
+ * 1 0 RS-485
+ * 1 1 RS-422
+ *
+ * The default mode configured here is RS-232 mode.
+ */
+ uart1_mux0_rs232_high: uart1-mux0-rs232-state {
+ bootph-all;
+ pins = "gpio99";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ output-high;
+ };
+
+ uart1_mux1_rs232_low: uart1-mux1-rs232-state {
+ bootph-all;
+ pins = "gpio100";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ output-low;
+ };
+
+ usb_id_default: usb-id-default-state {
+ pins = "gpio110";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+};
+
+&usb {
+ extcon = <&usb_id>, <&usb_id>;
+ pinctrl-0 = <&usb_sw_sel_pm &usb_hub_reset_pm>;
+ pinctrl-1 = <&usb_sw_sel_pm_device &usb_hub_reset_pm_device>;
+ pinctrl-names = "default", "device";
+ status = "okay";
+};
+
+&usb_hs_phy {
+ extcon = <&usb_id>;
+};
+
+&wcnss {
+ firmware-name = "qcom/apq8016/wcnss.mbn";
+ status = "okay";
+};
+
+&wcnss_ctrl {
+ firmware-name = "qcom/apq8016/WCNSS_qcom_wlan_nv_sbc.bin";
+};
+
+&wcnss_iris {
+ compatible = "qcom,wcn3620";
+};
+
+&wcnss_mem {
+ status = "okay";
+};
+
+/* PINCTRL - additions to nodes defined in msm8916.dtsi */
+
+/*
+ * 2mA drive strength is not enough when connecting multiple
+ * I2C devices with different pull up resistors.
+ */
+&blsp_i2c4_default {
+ drive-strength = <16>;
+};
+
+&blsp_i2c6_default {
+ drive-strength = <16>;
+};
+
+&blsp_uart1_default {
+ bootph-all;
+};
+
+/* Enable CoreSight */
+&cti0 { status = "okay"; };
+&cti1 { status = "okay"; };
+&cti12 { status = "okay"; };
+&cti13 { status = "okay"; };
+&cti14 { status = "okay"; };
+&cti15 { status = "okay"; };
+&debug0 { status = "okay"; };
+&debug1 { status = "okay"; };
+&debug2 { status = "okay"; };
+&debug3 { status = "okay"; };
+&etf { status = "okay"; };
+&etm0 { status = "okay"; };
+&etm1 { status = "okay"; };
+&etm2 { status = "okay"; };
+&etm3 { status = "okay"; };
+&etr { status = "okay"; };
+&funnel0 { status = "okay"; };
+&funnel1 { status = "okay"; };
+&replicator { status = "okay"; };
+&stm { status = "okay"; };
+&tpiu { status = "okay"; };
--
2.34.1


2024-03-27 15:43:54

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH v4 0/3] arm64: dts: qcom: apq8016: Add Schneider HMIBSC board DTS


On Wed, 27 Mar 2024 12:07:31 +0530, Sumit Garg wrote:
> Add Schneider Electric HMIBSC board DTS. The HMIBSC board is an IIoT Edge
> Box Core board based on the Qualcomm APQ8016E SoC. For more information
> refer to the product page [1].
>
> One of the major difference from db410c is serial port where HMIBSC board
> uses UART1 as the debug console with a default RS232 mode (UART1 mode mux
> configured via gpio99 and gpio100).
>
> Support for Schneider Electric HMIBSC. Features:
> - Qualcomm Snapdragon 410C SoC - APQ8016 (4xCortex A53, Adreno 306)
> - 1GiB RAM
> - 8GiB eMMC, SD slot
> - WiFi and Bluetooth
> - 2x Host, 1x Device USB port
> - HDMI
> - Discrete TPM2 chip over SPI
> - USB ethernet adaptors (soldered)
>
> This series is a v2 since v1 of this DTS file has been reviewed on the
> U-Boot mailing list [2].
>
> Changes in v4:
> - Dropped IRQ_TYPE_EDGE_FALLING for pm8916_resin given the expectations
> of Linux kernel driver. Instead depend on systemd workaround suggested
> by Caleb to get expected HMIBSC reset behaviour.
> - Incorporated further DT coding style comments from Stephen.
> - Warnings reported by Rob's DT check bot aren't related to HMIBSC
> board DTS but rather they are due to msm8916.dtsi or extcon-usb-gpio.txt
> still not converted to YAML format.
>
> Changes in v3:
> - Picked up tags.
> - Fixed further DT schema warnings.
> - Configure resin/power button interrupt as falling edge.
> - Incorporate DTS coding style comments from Krzysztof and Konrad.
>
> Changes in v2:
> - Fix DT schema warnings.
> - Incorporate suggestions from Stephan.
> - Document UART1 mode GPIOs based mux.
>
> [1] https://www.se.com/us/en/product/HMIBSCEA53D1L0T/iiot-edge-box-core-harmony-ipc-emmc-dc-linux-tpm/
> [2] https://patchwork.ozlabs.org/project/uboot/patch/[email protected]/
>
> Sumit Garg (3):
> dt-bindings: vendor-prefixes: Add Schneider Electric
> dt-bindings: arm: qcom: Add Schneider Electric HMIBSC board
> arm64: dts: qcom: apq8016: Add Schneider HMIBSC board DTS
>
> .../devicetree/bindings/arm/qcom.yaml | 1 +
> .../devicetree/bindings/vendor-prefixes.yaml | 2 +
> arch/arm64/boot/dts/qcom/Makefile | 1 +
> .../dts/qcom/apq8016-schneider-hmibsc.dts | 490 ++++++++++++++++++
> 4 files changed, 494 insertions(+)
> create mode 100644 arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dts
>
> --
> 2.34.1
>
>
>


My bot found new DTB warnings on the .dts files added or changed in this
series.

Some warnings may be from an existing SoC .dtsi. Or perhaps the warnings
are fixed by another series. Ultimately, it is up to the platform
maintainer whether these warnings are acceptable or not. No need to reply
unless the platform maintainer has comments.

If you already ran DT checks and didn't see these error(s), then
make sure dt-schema is up to date:

pip3 install dtschema --upgrade


New warnings running 'make CHECK_DTBS=y qcom/apq8016-schneider-hmibsc.dtb' for [email protected]:

arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dtb: /soc@0/audio-codec@771c000: failed to match any schema with compatible: ['qcom,msm8916-wcd-digital-codec']
arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dtb: /soc@0/power-manager@b088000: failed to match any schema with compatible: ['qcom,msm8916-acc']
arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dtb: /soc@0/power-manager@b098000: failed to match any schema with compatible: ['qcom,msm8916-acc']
arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dtb: /soc@0/power-manager@b0a8000: failed to match any schema with compatible: ['qcom,msm8916-acc']
arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dtb: /soc@0/power-manager@b0b8000: failed to match any schema with compatible: ['qcom,msm8916-acc']
arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dtb: /usb-id: failed to match any schema with compatible: ['linux,extcon-usb-gpio']






2024-03-27 19:11:32

by Stephan Gerhold

[permalink] [raw]
Subject: Re: [PATCH v4 3/3] arm64: dts: qcom: apq8016: Add Schneider HMIBSC board DTS

On Wed, Mar 27, 2024 at 12:07:34PM +0530, Sumit Garg wrote:
> Add Schneider Electric HMIBSC board DTS. The HMIBSC board is an IIoT Edge
> Box Core board based on the Qualcomm APQ8016E SoC.
>
> Support for Schneider Electric HMIBSC. Features:
> - Qualcomm Snapdragon 410C SoC - APQ8016 (4xCortex A53, Adreno 306)
> - 1GiB RAM
> - 8GiB eMMC, SD slot
> - WiFi and Bluetooth
> - 2x Host, 1x Device USB port
> - HDMI
> - Discrete TPM2 chip over SPI
> - USB ethernet adaptors (soldered)
>
> Co-developed-by: Jagdish Gediya <[email protected]>
> Signed-off-by: Jagdish Gediya <[email protected]>
> Reviewed-by: Caleb Connolly <[email protected]>
> Signed-off-by: Sumit Garg <[email protected]>

This looks good to me now. Thanks for making all the changes!

Reviewed-by: Stephan Gerhold <[email protected]>

Please drop the tag again in case you send another version with any
larger changes. I'm happy to look at the patch again then. Not sure if
Caleb's R-b is still valid now after all the changes you made.

I found one more nitpick below, but it also exists in apq8016-sbc.dts.
Feel free to leave it as-is, I can fix it up for both sometime later.

Thanks,
Stephan

> ---
> arch/arm64/boot/dts/qcom/Makefile | 1 +
> .../dts/qcom/apq8016-schneider-hmibsc.dts | 490 ++++++++++++++++++
> 2 files changed, 491 insertions(+)
> create mode 100644 arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dts
>
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index 39889d5f8e12..ad55e52e950b 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -5,6 +5,7 @@ apq8016-sbc-usb-host-dtbs := apq8016-sbc.dtb apq8016-sbc-usb-host.dtbo
>
> dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc-usb-host.dtb
> dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc-d3-camera-mezzanine.dtb
> +dtb-$(CONFIG_ARCH_QCOM) += apq8016-schneider-hmibsc.dtb
> dtb-$(CONFIG_ARCH_QCOM) += apq8039-t2.dtb
> dtb-$(CONFIG_ARCH_QCOM) += apq8094-sony-xperia-kitakami-karin_windy.dtb
> dtb-$(CONFIG_ARCH_QCOM) += apq8096-db820c.dtb
> diff --git a/arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dts b/arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dts
> new file mode 100644
> index 000000000000..62ce862ff5c0
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dts
> @@ -0,0 +1,490 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +/*
> + * Copyright (c) 2015, The Linux Foundation. All rights reserved.
> + * Copyright (c) 2024, Linaro Ltd.
> + */
> +
> +/dts-v1/;
> +
> +#include "msm8916-pm8916.dtsi"
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/leds/common.h>
> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
> +#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
> +#include <dt-bindings/sound/apq8016-lpass.h>
> +
> +/ {
> + model = "Schneider Electric HMIBSC Board";
> + compatible = "schneider,apq8016-hmibsc", "qcom,apq8016";
> +
> + aliases {
> + i2c1 = &blsp_i2c6;
> + i2c3 = &blsp_i2c4;
> + i2c4 = &blsp_i2c3;
> + mmc0 = &sdhc_1; /* eMMC */
> + mmc1 = &sdhc_2; /* SD card */
> + serial0 = &blsp_uart1;
> + serial1 = &blsp_uart2;
> + spi0 = &blsp_spi5;
> + usid0 = &pm8916_0;
> + };
> +
> + chosen {
> + stdout-path = "serial0";
> + };
> +
> + hdmi-out {
> + compatible = "hdmi-connector";
> + type = "a";
> +
> + port {
> + hdmi_con: endpoint {
> + remote-endpoint = <&adv7533_out>;
> + };
> + };
> + };
> +
> + gpio-keys {
> + compatible = "gpio-keys";
> + autorepeat;
> + pinctrl-0 = <&msm_key_volp_n_default>;
> + pinctrl-names = "default";
> +
> + button {
> + label = "Volume Up";
> + linux,code = <KEY_VOLUMEUP>;
> + gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
> + };
> + };
> +
> + leds {
> + compatible = "gpio-leds";
> + pinctrl-0 = <&pm8916_mpps_leds>;
> + pinctrl-names = "default";
> +
> + led-1 {
> + function = LED_FUNCTION_WLAN;
> + color = <LED_COLOR_ID_YELLOW>;
> + gpios = <&pm8916_mpps 2 GPIO_ACTIVE_HIGH>;
> + linux,default-trigger = "phy0tx";
> + default-state = "off";
> + };
> +
> + led-2 {
> + function = LED_FUNCTION_BLUETOOTH;
> + color = <LED_COLOR_ID_BLUE>;
> + gpios = <&pm8916_mpps 3 GPIO_ACTIVE_HIGH>;
> + linux,default-trigger = "bluetooth-power";
> + default-state = "off";
> + };
> + };
> +
> + memory@80000000 {
> + reg = <0 0x80000000 0 0x40000000>;
> + };
> +
> + reserved-memory {
> + ramoops@bff00000 {
> + compatible = "ramoops";
> + reg = <0x0 0xbff00000 0x0 0x100000>;
> + record-size = <0x20000>;
> + console-size = <0x20000>;
> + ftrace-size = <0x20000>;
> + ecc-size = <16>;
> + };
> + };
> +
> + usb-hub {
> + compatible = "smsc,usb3503";
> + reset-gpios = <&pm8916_gpios 1 GPIO_ACTIVE_LOW>;
> + initial-mode = <1>;
> + };
> +
> + usb_id: usb-id {
> + compatible = "linux,extcon-usb-gpio";
> + id-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
> + pinctrl-0 = <&usb_id_default>;
> + pinctrl-names = "default";
> + };
> +};
> +
> +&blsp_i2c3 {
> + status = "okay";
> +
> + eeprom@50 {
> + compatible = "atmel,24c32";
> + reg = <0x50>;
> + };
> +};
> +
> +&blsp_i2c4 {
> + status = "okay";
> +
> + adv_bridge: bridge@39 {
> + compatible = "adi,adv7533";
> + reg = <0x39>;
> + interrupts-extended = <&tlmm 31 IRQ_TYPE_EDGE_FALLING>;
> +
> + adi,dsi-lanes = <4>;
> + clocks = <&rpmcc RPM_SMD_BB_CLK2>;
> + clock-names = "cec";
> + pd-gpios = <&tlmm 32 GPIO_ACTIVE_HIGH>;
> +
> + avdd-supply = <&pm8916_l6>;
> + a2vdd-supply = <&pm8916_l6>;
> + dvdd-supply = <&pm8916_l6>;
> + pvdd-supply = <&pm8916_l6>;
> + v1p2-supply = <&pm8916_l6>;
> + v3p3-supply = <&pm8916_l17>;
> +
> + pinctrl-0 = <&adv7533_int_active &adv7533_switch_active>;
> + pinctrl-1 = <&adv7533_int_suspend &adv7533_switch_suspend>;
> + pinctrl-names = "default","sleep";
> + #sound-dai-cells = <0>;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> + adv7533_in: endpoint {
> + remote-endpoint = <&mdss_dsi0_out>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> + adv7533_out: endpoint {
> + remote-endpoint = <&hdmi_con>;
> + };
> + };
> + };
> + };
> +};
> +
> +&blsp_i2c6 {
> + status = "okay";
> +
> + rtc@30 {
> + compatible = "sii,s35390a";
> + reg = <0x30>;
> + };
> +
> + eeprom@50 {
> + compatible = "atmel,24c256";
> + reg = <0x50>;
> + };
> +};
> +
> +&blsp_spi5 {
> + cs-gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
> + status = "okay";
> +
> + tpm@0 {
> + compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
> + reg = <0>;
> + spi-max-frequency = <500000>;
> + };
> +};
> +
> +&blsp_uart1 {
> + label = "UART0";
> + status = "okay";
> +};
> +
> +&blsp_uart2 {
> + label = "UART1";
> + status = "okay";
> +};
> +
> +&lpass {
> + status = "okay";
> +};
> +
> +&mdss {
> + status = "okay";
> +};
> +
> +&mdss_dsi0_out {
> + data-lanes = <0 1 2 3>;
> + remote-endpoint = <&adv7533_in>;
> +};
> +
> +&pm8916_codec {
> + qcom,mbhc-vthreshold-low = <75 150 237 450 500>;
> + qcom,mbhc-vthreshold-high = <75 150 237 450 500>;
> + status = "okay";
> +};
> +
> +&pm8916_gpios {
> + gpio-line-names =
> + "USB_HUB_RESET_N_PM",
> + "USB_SW_SEL_PM",
> + "NC",
> + "NC";
> +
> + usb_hub_reset_pm: usb-hub-reset-pm-state {
> + pins = "gpio1";
> + function = PMIC_GPIO_FUNC_NORMAL;
> + input-disable;
> + output-high;
> + };
> +
> + usb_hub_reset_pm_device: usb-hub-reset-pm-device-state {
> + pins = "gpio1";
> + function = PMIC_GPIO_FUNC_NORMAL;
> + output-low;
> + };
> +

Nitpick: &usb_hub_reset_pm has input-disable (and the two others below),
but this one doesn't.

> + usb_sw_sel_pm: usb-sw-sel-pm-state {
> + pins = "gpio2";
> + function = PMIC_GPIO_FUNC_NORMAL;
> + power-source = <PM8916_GPIO_VPH>;
> + input-disable;
> + output-high;
> + };
> +
> + usb_sw_sel_pm_device: usb-sw-sel-pm-device-state {
> + pins = "gpio2";
> + function = PMIC_GPIO_FUNC_NORMAL;
> + power-source = <PM8916_GPIO_VPH>;
> + input-disable;
> + output-low;
> + };
> +};
> +
> +&pm8916_mpps {
> + gpio-line-names =
> + "NC",
> + "WLAN_LED_CTRL",
> + "BT_LED_CTRL",
> + "NC";
> +
> + pm8916_mpps_leds: pm8916-mpps-state {
> + pins = "mpp2", "mpp3";
> + function = "digital";
> + output-low;
> + };
> +};
> +
> +&pm8916_resin {
> + linux,code = <KEY_POWER>;
> + status = "okay";
> +};
> +
> +&pm8916_rpm_regulators {
> + pm8916_l17: l17 {
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + };
> +};
> +
> +&sdhc_1 {
> + status = "okay";
> +};
> +
> +&sdhc_2 {
> + pinctrl-0 = <&sdc2_default &sdc2_cd_default>;
> + pinctrl-1 = <&sdc2_sleep &sdc2_cd_default>;
> + pinctrl-names = "default", "sleep";
> + cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
> + status = "okay";
> +};
> +
> +&sound {
> + pinctrl-0 = <&cdc_pdm_default &sec_mi2s_default>;
> + pinctrl-1 = <&cdc_pdm_sleep &sec_mi2s_sleep>;
> + pinctrl-names = "default", "sleep";
> + model = "HMIBSC";
> + audio-routing =
> + "AMIC2", "MIC BIAS Internal2",
> + "AMIC3", "MIC BIAS External1";
> + status = "okay";
> +
> + quaternary-dai-link {
> + link-name = "ADV7533";
> + cpu {
> + sound-dai = <&lpass MI2S_QUATERNARY>;
> + };
> + codec {
> + sound-dai = <&adv_bridge 0>;
> + };
> + };
> +
> + primary-dai-link {
> + link-name = "WCD";
> + cpu {
> + sound-dai = <&lpass MI2S_PRIMARY>;
> + };
> + codec {
> + sound-dai = <&lpass_codec 0>, <&pm8916_codec 0>;
> + };
> + };
> +
> + tertiary-dai-link {
> + link-name = "WCD-Capture";
> + cpu {
> + sound-dai = <&lpass MI2S_TERTIARY>;
> + };
> + codec {
> + sound-dai = <&lpass_codec 1>, <&pm8916_codec 1>;
> + };
> + };
> +};
> +
> +&tlmm {
> + pinctrl-0 = <&uart1_mux0_rs232_high &uart1_mux1_rs232_low>;
> + pinctrl-names = "default";
> +
> + adv7533_int_active: adv533-int-active-state {
> + pins = "gpio31";
> + function = "gpio";
> + drive-strength = <16>;
> + bias-disable;
> + };
> +
> + adv7533_int_suspend: adv7533-int-suspend-state {
> + pins = "gpio31";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + adv7533_switch_active: adv7533-switch-active-state {
> + pins = "gpio32";
> + function = "gpio";
> + drive-strength = <16>;
> + bias-disable;
> + };
> +
> + adv7533_switch_suspend: adv7533-switch-suspend-state {
> + pins = "gpio32";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + msm_key_volp_n_default: msm-key-volp-n-default-state {
> + pins = "gpio107";
> + function = "gpio";
> + drive-strength = <8>;
> + bias-pull-up;
> + };
> +
> + sdc2_cd_default: sdc2-cd-default-state {
> + pins = "gpio38";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + /*
> + * UART1 being the debug console supports various modes of
> + * operation (RS-232/485/422) controlled via GPIOs configured
> + * mux as follows:
> + *
> + * gpio100 gpio99 UART mode
> + * 0 0 loopback
> + * 0 1 RS-232
> + * 1 0 RS-485
> + * 1 1 RS-422
> + *
> + * The default mode configured here is RS-232 mode.
> + */
> + uart1_mux0_rs232_high: uart1-mux0-rs232-state {
> + bootph-all;
> + pins = "gpio99";
> + function = "gpio";
> + drive-strength = <16>;
> + bias-disable;
> + output-high;
> + };
> +
> + uart1_mux1_rs232_low: uart1-mux1-rs232-state {
> + bootph-all;
> + pins = "gpio100";
> + function = "gpio";
> + drive-strength = <16>;
> + bias-disable;
> + output-low;
> + };
> +
> + usb_id_default: usb-id-default-state {
> + pins = "gpio110";
> + function = "gpio";
> + drive-strength = <8>;
> + bias-pull-up;
> + };
> +};
> +
> +&usb {
> + extcon = <&usb_id>, <&usb_id>;
> + pinctrl-0 = <&usb_sw_sel_pm &usb_hub_reset_pm>;
> + pinctrl-1 = <&usb_sw_sel_pm_device &usb_hub_reset_pm_device>;
> + pinctrl-names = "default", "device";
> + status = "okay";
> +};
> +
> +&usb_hs_phy {
> + extcon = <&usb_id>;
> +};
> +
> +&wcnss {
> + firmware-name = "qcom/apq8016/wcnss.mbn";
> + status = "okay";
> +};
> +
> +&wcnss_ctrl {
> + firmware-name = "qcom/apq8016/WCNSS_qcom_wlan_nv_sbc.bin";
> +};
> +
> +&wcnss_iris {
> + compatible = "qcom,wcn3620";
> +};
> +
> +&wcnss_mem {
> + status = "okay";
> +};
> +
> +/* PINCTRL - additions to nodes defined in msm8916.dtsi */
> +
> +/*
> + * 2mA drive strength is not enough when connecting multiple
> + * I2C devices with different pull up resistors.
> + */
> +&blsp_i2c4_default {
> + drive-strength = <16>;
> +};
> +
> +&blsp_i2c6_default {
> + drive-strength = <16>;
> +};
> +
> +&blsp_uart1_default {
> + bootph-all;
> +};
> +
> +/* Enable CoreSight */
> +&cti0 { status = "okay"; };
> +&cti1 { status = "okay"; };
> +&cti12 { status = "okay"; };
> +&cti13 { status = "okay"; };
> +&cti14 { status = "okay"; };
> +&cti15 { status = "okay"; };
> +&debug0 { status = "okay"; };
> +&debug1 { status = "okay"; };
> +&debug2 { status = "okay"; };
> +&debug3 { status = "okay"; };
> +&etf { status = "okay"; };
> +&etm0 { status = "okay"; };
> +&etm1 { status = "okay"; };
> +&etm2 { status = "okay"; };
> +&etm3 { status = "okay"; };
> +&etr { status = "okay"; };
> +&funnel0 { status = "okay"; };
> +&funnel1 { status = "okay"; };
> +&replicator { status = "okay"; };
> +&stm { status = "okay"; };
> +&tpiu { status = "okay"; };
> --
> 2.34.1
>

2024-03-27 23:34:33

by Caleb Connolly

[permalink] [raw]
Subject: Re: [PATCH v4 3/3] arm64: dts: qcom: apq8016: Add Schneider HMIBSC board DTS



On 27/03/2024 19:10, Stephan Gerhold wrote:
> On Wed, Mar 27, 2024 at 12:07:34PM +0530, Sumit Garg wrote:
>> Add Schneider Electric HMIBSC board DTS. The HMIBSC board is an IIoT Edge
>> Box Core board based on the Qualcomm APQ8016E SoC.
>>
>> Support for Schneider Electric HMIBSC. Features:
>> - Qualcomm Snapdragon 410C SoC - APQ8016 (4xCortex A53, Adreno 306)
>> - 1GiB RAM
>> - 8GiB eMMC, SD slot
>> - WiFi and Bluetooth
>> - 2x Host, 1x Device USB port
>> - HDMI
>> - Discrete TPM2 chip over SPI
>> - USB ethernet adaptors (soldered)
>>
>> Co-developed-by: Jagdish Gediya <[email protected]>
>> Signed-off-by: Jagdish Gediya <[email protected]>
>> Reviewed-by: Caleb Connolly <[email protected]>
>> Signed-off-by: Sumit Garg <[email protected]>
>
> This looks good to me now. Thanks for making all the changes!
>
> Reviewed-by: Stephan Gerhold <[email protected]>
>
> Please drop the tag again in case you send another version with any
> larger changes. I'm happy to look at the patch again then. Not sure if
> Caleb's R-b is still valid now after all the changes you made.

I appreciate the review and the re-submission. I would have rather given
it again explicitly -- but no doubt I'll make the same mistake 1000 times :P

Cheers, really happy that we can have Qualcomm boards land their DT
upstream and gain first-class U-Boot support as a result :D thanks for
all your work on this Sumit.
>
> I found one more nitpick below, but it also exists in apq8016-sbc.dts.
> Feel free to leave it as-is, I can fix it up for both sometime later.
>
> Thanks,
> Stephan
>
>> ---
>> arch/arm64/boot/dts/qcom/Makefile | 1 +
>> .../dts/qcom/apq8016-schneider-hmibsc.dts | 490 ++++++++++++++++++
>> 2 files changed, 491 insertions(+)
>> create mode 100644 arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dts
>>
>> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
>> index 39889d5f8e12..ad55e52e950b 100644
>> --- a/arch/arm64/boot/dts/qcom/Makefile
>> +++ b/arch/arm64/boot/dts/qcom/Makefile
>> @@ -5,6 +5,7 @@ apq8016-sbc-usb-host-dtbs := apq8016-sbc.dtb apq8016-sbc-usb-host.dtbo
>>
>> dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc-usb-host.dtb
>> dtb-$(CONFIG_ARCH_QCOM) += apq8016-sbc-d3-camera-mezzanine.dtb
>> +dtb-$(CONFIG_ARCH_QCOM) += apq8016-schneider-hmibsc.dtb
>> dtb-$(CONFIG_ARCH_QCOM) += apq8039-t2.dtb
>> dtb-$(CONFIG_ARCH_QCOM) += apq8094-sony-xperia-kitakami-karin_windy.dtb
>> dtb-$(CONFIG_ARCH_QCOM) += apq8096-db820c.dtb
>> diff --git a/arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dts b/arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dts
>> new file mode 100644
>> index 000000000000..62ce862ff5c0
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/qcom/apq8016-schneider-hmibsc.dts
>> @@ -0,0 +1,490 @@
>> +// SPDX-License-Identifier: GPL-2.0-only
>> +/*
>> + * Copyright (c) 2015, The Linux Foundation. All rights reserved.
>> + * Copyright (c) 2024, Linaro Ltd.
>> + */
>> +
>> +/dts-v1/;
>> +
>> +#include "msm8916-pm8916.dtsi"
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/input/input.h>
>> +#include <dt-bindings/leds/common.h>
>> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
>> +#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
>> +#include <dt-bindings/sound/apq8016-lpass.h>
>> +
>> +/ {
>> + model = "Schneider Electric HMIBSC Board";
>> + compatible = "schneider,apq8016-hmibsc", "qcom,apq8016";
>> +
>> + aliases {
>> + i2c1 = &blsp_i2c6;
>> + i2c3 = &blsp_i2c4;
>> + i2c4 = &blsp_i2c3;
>> + mmc0 = &sdhc_1; /* eMMC */
>> + mmc1 = &sdhc_2; /* SD card */
>> + serial0 = &blsp_uart1;
>> + serial1 = &blsp_uart2;
>> + spi0 = &blsp_spi5;
>> + usid0 = &pm8916_0;
>> + };
>> +
>> + chosen {
>> + stdout-path = "serial0";
>> + };
>> +
>> + hdmi-out {
>> + compatible = "hdmi-connector";
>> + type = "a";
>> +
>> + port {
>> + hdmi_con: endpoint {
>> + remote-endpoint = <&adv7533_out>;
>> + };
>> + };
>> + };
>> +
>> + gpio-keys {
>> + compatible = "gpio-keys";
>> + autorepeat;
>> + pinctrl-0 = <&msm_key_volp_n_default>;
>> + pinctrl-names = "default";
>> +
>> + button {
>> + label = "Volume Up";
>> + linux,code = <KEY_VOLUMEUP>;
>> + gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
>> + };
>> + };
>> +
>> + leds {
>> + compatible = "gpio-leds";
>> + pinctrl-0 = <&pm8916_mpps_leds>;
>> + pinctrl-names = "default";
>> +
>> + led-1 {
>> + function = LED_FUNCTION_WLAN;
>> + color = <LED_COLOR_ID_YELLOW>;
>> + gpios = <&pm8916_mpps 2 GPIO_ACTIVE_HIGH>;
>> + linux,default-trigger = "phy0tx";
>> + default-state = "off";
>> + };
>> +
>> + led-2 {
>> + function = LED_FUNCTION_BLUETOOTH;
>> + color = <LED_COLOR_ID_BLUE>;
>> + gpios = <&pm8916_mpps 3 GPIO_ACTIVE_HIGH>;
>> + linux,default-trigger = "bluetooth-power";
>> + default-state = "off";
>> + };
>> + };
>> +
>> + memory@80000000 {
>> + reg = <0 0x80000000 0 0x40000000>;
>> + };
>> +
>> + reserved-memory {
>> + ramoops@bff00000 {
>> + compatible = "ramoops";
>> + reg = <0x0 0xbff00000 0x0 0x100000>;
>> + record-size = <0x20000>;
>> + console-size = <0x20000>;
>> + ftrace-size = <0x20000>;
>> + ecc-size = <16>;
>> + };
>> + };
>> +
>> + usb-hub {
>> + compatible = "smsc,usb3503";
>> + reset-gpios = <&pm8916_gpios 1 GPIO_ACTIVE_LOW>;
>> + initial-mode = <1>;
>> + };
>> +
>> + usb_id: usb-id {
>> + compatible = "linux,extcon-usb-gpio";
>> + id-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
>> + pinctrl-0 = <&usb_id_default>;
>> + pinctrl-names = "default";
>> + };
>> +};
>> +
>> +&blsp_i2c3 {
>> + status = "okay";
>> +
>> + eeprom@50 {
>> + compatible = "atmel,24c32";
>> + reg = <0x50>;
>> + };
>> +};
>> +
>> +&blsp_i2c4 {
>> + status = "okay";
>> +
>> + adv_bridge: bridge@39 {
>> + compatible = "adi,adv7533";
>> + reg = <0x39>;
>> + interrupts-extended = <&tlmm 31 IRQ_TYPE_EDGE_FALLING>;
>> +
>> + adi,dsi-lanes = <4>;
>> + clocks = <&rpmcc RPM_SMD_BB_CLK2>;
>> + clock-names = "cec";
>> + pd-gpios = <&tlmm 32 GPIO_ACTIVE_HIGH>;
>> +
>> + avdd-supply = <&pm8916_l6>;
>> + a2vdd-supply = <&pm8916_l6>;
>> + dvdd-supply = <&pm8916_l6>;
>> + pvdd-supply = <&pm8916_l6>;
>> + v1p2-supply = <&pm8916_l6>;
>> + v3p3-supply = <&pm8916_l17>;
>> +
>> + pinctrl-0 = <&adv7533_int_active &adv7533_switch_active>;
>> + pinctrl-1 = <&adv7533_int_suspend &adv7533_switch_suspend>;
>> + pinctrl-names = "default","sleep";
>> + #sound-dai-cells = <0>;
>> +
>> + ports {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + port@0 {
>> + reg = <0>;
>> + adv7533_in: endpoint {
>> + remote-endpoint = <&mdss_dsi0_out>;
>> + };
>> + };
>> +
>> + port@1 {
>> + reg = <1>;
>> + adv7533_out: endpoint {
>> + remote-endpoint = <&hdmi_con>;
>> + };
>> + };
>> + };
>> + };
>> +};
>> +
>> +&blsp_i2c6 {
>> + status = "okay";
>> +
>> + rtc@30 {
>> + compatible = "sii,s35390a";
>> + reg = <0x30>;
>> + };
>> +
>> + eeprom@50 {
>> + compatible = "atmel,24c256";
>> + reg = <0x50>;
>> + };
>> +};
>> +
>> +&blsp_spi5 {
>> + cs-gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
>> + status = "okay";
>> +
>> + tpm@0 {
>> + compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
>> + reg = <0>;
>> + spi-max-frequency = <500000>;
>> + };
>> +};
>> +
>> +&blsp_uart1 {
>> + label = "UART0";
>> + status = "okay";
>> +};
>> +
>> +&blsp_uart2 {
>> + label = "UART1";
>> + status = "okay";
>> +};
>> +
>> +&lpass {
>> + status = "okay";
>> +};
>> +
>> +&mdss {
>> + status = "okay";
>> +};
>> +
>> +&mdss_dsi0_out {
>> + data-lanes = <0 1 2 3>;
>> + remote-endpoint = <&adv7533_in>;
>> +};
>> +
>> +&pm8916_codec {
>> + qcom,mbhc-vthreshold-low = <75 150 237 450 500>;
>> + qcom,mbhc-vthreshold-high = <75 150 237 450 500>;
>> + status = "okay";
>> +};
>> +
>> +&pm8916_gpios {
>> + gpio-line-names =
>> + "USB_HUB_RESET_N_PM",
>> + "USB_SW_SEL_PM",
>> + "NC",
>> + "NC";
>> +
>> + usb_hub_reset_pm: usb-hub-reset-pm-state {
>> + pins = "gpio1";
>> + function = PMIC_GPIO_FUNC_NORMAL;
>> + input-disable;
>> + output-high;
>> + };
>> +
>> + usb_hub_reset_pm_device: usb-hub-reset-pm-device-state {
>> + pins = "gpio1";
>> + function = PMIC_GPIO_FUNC_NORMAL;
>> + output-low;
>> + };
>> +
>
> Nitpick: &usb_hub_reset_pm has input-disable (and the two others below),
> but this one doesn't.
>
>> + usb_sw_sel_pm: usb-sw-sel-pm-state {
>> + pins = "gpio2";
>> + function = PMIC_GPIO_FUNC_NORMAL;
>> + power-source = <PM8916_GPIO_VPH>;
>> + input-disable;
>> + output-high;
>> + };
>> +
>> + usb_sw_sel_pm_device: usb-sw-sel-pm-device-state {
>> + pins = "gpio2";
>> + function = PMIC_GPIO_FUNC_NORMAL;
>> + power-source = <PM8916_GPIO_VPH>;
>> + input-disable;
>> + output-low;
>> + };
>> +};
>> +
>> +&pm8916_mpps {
>> + gpio-line-names =
>> + "NC",
>> + "WLAN_LED_CTRL",
>> + "BT_LED_CTRL",
>> + "NC";
>> +
>> + pm8916_mpps_leds: pm8916-mpps-state {
>> + pins = "mpp2", "mpp3";
>> + function = "digital";
>> + output-low;
>> + };
>> +};
>> +
>> +&pm8916_resin {
>> + linux,code = <KEY_POWER>;
>> + status = "okay";
>> +};
>> +
>> +&pm8916_rpm_regulators {
>> + pm8916_l17: l17 {
>> + regulator-min-microvolt = <3300000>;
>> + regulator-max-microvolt = <3300000>;
>> + };
>> +};
>> +
>> +&sdhc_1 {
>> + status = "okay";
>> +};
>> +
>> +&sdhc_2 {
>> + pinctrl-0 = <&sdc2_default &sdc2_cd_default>;
>> + pinctrl-1 = <&sdc2_sleep &sdc2_cd_default>;
>> + pinctrl-names = "default", "sleep";
>> + cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
>> + status = "okay";
>> +};
>> +
>> +&sound {
>> + pinctrl-0 = <&cdc_pdm_default &sec_mi2s_default>;
>> + pinctrl-1 = <&cdc_pdm_sleep &sec_mi2s_sleep>;
>> + pinctrl-names = "default", "sleep";
>> + model = "HMIBSC";
>> + audio-routing =
>> + "AMIC2", "MIC BIAS Internal2",
>> + "AMIC3", "MIC BIAS External1";
>> + status = "okay";
>> +
>> + quaternary-dai-link {
>> + link-name = "ADV7533";
>> + cpu {
>> + sound-dai = <&lpass MI2S_QUATERNARY>;
>> + };
>> + codec {
>> + sound-dai = <&adv_bridge 0>;
>> + };
>> + };
>> +
>> + primary-dai-link {
>> + link-name = "WCD";
>> + cpu {
>> + sound-dai = <&lpass MI2S_PRIMARY>;
>> + };
>> + codec {
>> + sound-dai = <&lpass_codec 0>, <&pm8916_codec 0>;
>> + };
>> + };
>> +
>> + tertiary-dai-link {
>> + link-name = "WCD-Capture";
>> + cpu {
>> + sound-dai = <&lpass MI2S_TERTIARY>;
>> + };
>> + codec {
>> + sound-dai = <&lpass_codec 1>, <&pm8916_codec 1>;
>> + };
>> + };
>> +};
>> +
>> +&tlmm {
>> + pinctrl-0 = <&uart1_mux0_rs232_high &uart1_mux1_rs232_low>;
>> + pinctrl-names = "default";
>> +
>> + adv7533_int_active: adv533-int-active-state {
>> + pins = "gpio31";
>> + function = "gpio";
>> + drive-strength = <16>;
>> + bias-disable;
>> + };
>> +
>> + adv7533_int_suspend: adv7533-int-suspend-state {
>> + pins = "gpio31";
>> + function = "gpio";
>> + drive-strength = <2>;
>> + bias-disable;
>> + };
>> +
>> + adv7533_switch_active: adv7533-switch-active-state {
>> + pins = "gpio32";
>> + function = "gpio";
>> + drive-strength = <16>;
>> + bias-disable;
>> + };
>> +
>> + adv7533_switch_suspend: adv7533-switch-suspend-state {
>> + pins = "gpio32";
>> + function = "gpio";
>> + drive-strength = <2>;
>> + bias-disable;
>> + };
>> +
>> + msm_key_volp_n_default: msm-key-volp-n-default-state {
>> + pins = "gpio107";
>> + function = "gpio";
>> + drive-strength = <8>;
>> + bias-pull-up;
>> + };
>> +
>> + sdc2_cd_default: sdc2-cd-default-state {
>> + pins = "gpio38";
>> + function = "gpio";
>> + drive-strength = <2>;
>> + bias-disable;
>> + };
>> +
>> + /*
>> + * UART1 being the debug console supports various modes of
>> + * operation (RS-232/485/422) controlled via GPIOs configured
>> + * mux as follows:
>> + *
>> + * gpio100 gpio99 UART mode
>> + * 0 0 loopback
>> + * 0 1 RS-232
>> + * 1 0 RS-485
>> + * 1 1 RS-422
>> + *
>> + * The default mode configured here is RS-232 mode.
>> + */
>> + uart1_mux0_rs232_high: uart1-mux0-rs232-state {
>> + bootph-all;
>> + pins = "gpio99";
>> + function = "gpio";
>> + drive-strength = <16>;
>> + bias-disable;
>> + output-high;
>> + };
>> +
>> + uart1_mux1_rs232_low: uart1-mux1-rs232-state {
>> + bootph-all;
>> + pins = "gpio100";
>> + function = "gpio";
>> + drive-strength = <16>;
>> + bias-disable;
>> + output-low;
>> + };
>> +
>> + usb_id_default: usb-id-default-state {
>> + pins = "gpio110";
>> + function = "gpio";
>> + drive-strength = <8>;
>> + bias-pull-up;
>> + };
>> +};
>> +
>> +&usb {
>> + extcon = <&usb_id>, <&usb_id>;
>> + pinctrl-0 = <&usb_sw_sel_pm &usb_hub_reset_pm>;
>> + pinctrl-1 = <&usb_sw_sel_pm_device &usb_hub_reset_pm_device>;
>> + pinctrl-names = "default", "device";
>> + status = "okay";
>> +};
>> +
>> +&usb_hs_phy {
>> + extcon = <&usb_id>;
>> +};
>> +
>> +&wcnss {
>> + firmware-name = "qcom/apq8016/wcnss.mbn";
>> + status = "okay";
>> +};
>> +
>> +&wcnss_ctrl {
>> + firmware-name = "qcom/apq8016/WCNSS_qcom_wlan_nv_sbc.bin";
>> +};
>> +
>> +&wcnss_iris {
>> + compatible = "qcom,wcn3620";
>> +};
>> +
>> +&wcnss_mem {
>> + status = "okay";
>> +};
>> +
>> +/* PINCTRL - additions to nodes defined in msm8916.dtsi */
>> +
>> +/*
>> + * 2mA drive strength is not enough when connecting multiple
>> + * I2C devices with different pull up resistors.
>> + */
>> +&blsp_i2c4_default {
>> + drive-strength = <16>;
>> +};
>> +
>> +&blsp_i2c6_default {
>> + drive-strength = <16>;
>> +};
>> +
>> +&blsp_uart1_default {
>> + bootph-all;
>> +};
>> +
>> +/* Enable CoreSight */
>> +&cti0 { status = "okay"; };
>> +&cti1 { status = "okay"; };
>> +&cti12 { status = "okay"; };
>> +&cti13 { status = "okay"; };
>> +&cti14 { status = "okay"; };
>> +&cti15 { status = "okay"; };
>> +&debug0 { status = "okay"; };
>> +&debug1 { status = "okay"; };
>> +&debug2 { status = "okay"; };
>> +&debug3 { status = "okay"; };
>> +&etf { status = "okay"; };
>> +&etm0 { status = "okay"; };
>> +&etm1 { status = "okay"; };
>> +&etm2 { status = "okay"; };
>> +&etm3 { status = "okay"; };
>> +&etr { status = "okay"; };
>> +&funnel0 { status = "okay"; };
>> +&funnel1 { status = "okay"; };
>> +&replicator { status = "okay"; };
>> +&stm { status = "okay"; };
>> +&tpiu { status = "okay"; };
>> --
>> 2.34.1
>>

--
// Caleb (they/them)