Re: [PATCH v6] arch: arm64: dts: sm8650-hdk: add support for the Display Card overlay
From: Bjorn Andersson
Date: Thu Jun 06 2024 - 14:26:13 EST
On Thu, Jun 06, 2024 at 02:50:22PM GMT, Neil Armstrong wrote:
> With the SM8650-HDK, a Display Card kit can be connected to provide
> a VTDR6130 display with Goodix Berlin Touch controller.
>
> In order to route the DSI lanes to the connector for the Display
> Card kit, a switch must be changed on the board.
>
> The HDMI nodes are disabled since the DSI lanes are shared with
> the DSI to HDMI transceiver.
>
> Add support for this card as an overlay and apply it it at
> build-time to the sm8650-hdk dtb.
>
> Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@xxxxxxxxxx>
> Tested-by: Vladimir Zapolskiy <vladimir.zapolskiy@xxxxxxxxxx>
> Reviewed-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxx>
> Signed-off-by: Neil Armstrong <neil.armstrong@xxxxxxxxxx>
Please double check your subject prefix to match other similar files in
the future.
Thanks,
Bjorn
> ---
> The SM8650-HDK is an embedded development platforms for the
> Snapdragon 8 Gen 3 SoC aka SM8650, with the following features:
> - Qualcomm SM8650 SoC
> - 16GiB On-board LPDDR5
> - On-board WiFi 7 + Bluetooth 5.3/BLE
> - On-board UFS4.0
> - M.2 Key B+M Gen3x2 PCIe Slot
> - HDMI Output
> - USB-C Connector with DP Almode & Audio Accessory mode
> - Micro-SDCard Slot
> - Audio Jack with Playback and Microphone
> - 2 On-board Analog microphones
> - 2 On-board Speakers
> - 96Boards Compatible Low-Speed and High-Speed connectors [1]
> - For Camera, Sensors and external Display cards
> - Compatible with the Linaro Debug board [2]
> - SIM Slot for Modem
> - Debug connectors
> - 6x On-Board LEDs
>
> An optional Display Card kit can be connected on top,
> an overlay is handled to add support for the DSI Display
> and Touch Controller.
>
> Product Page: [3]
>
> Dependencies: None
>
> [1] https://www.96boards.org/specifications/
> [2] https://git.codelinaro.org/linaro/qcomlt/debugboard
> [3] https://www.lantronix.com/products/snapdragon-8-gen-3-mobile-hardware-development-kit/
>
> To: Bjorn Andersson <andersson@xxxxxxxxxx>
> To: Konrad Dybcio <konrad.dybcio@xxxxxxxxxx>
> To: Rob Herring <robh@xxxxxxxxxx>
> To: Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>
> To: Conor Dooley <conor+dt@xxxxxxxxxx>
> Cc: linux-arm-msm@xxxxxxxxxxxxxxx
> Cc: devicetree@xxxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> Signed-off-by: Neil Armstrong <neil.armstrong@xxxxxxxxxx>
>
> Changes in v6:
> - added comment explaining why we disable nodes
> - removed useles comment on why we add the port/endpoint/address/size-cells
> - added Konrad's review
> - Link to v5: https://lore.kernel.org/r/20240606-topic-sm8650-upstream-hdk-v5-1-5d878f3047e3@xxxxxxxxxx
>
> Changes in v5:
> - Resend the display card overlay now the I2C crash is fixed
> - Link to v4: https://lore.kernel.org/r/20240422-topic-sm8650-upstream-hdk-v4-0-b33993eaa2e8@xxxxxxxxxx
>
> Changes in v4:
> - Rebased on next and fixed the apply failures
> - Link to v3: https://lore.kernel.org/r/20240325-topic-sm8650-upstream-hdk-v3-0-4f365d7932af@xxxxxxxxxx
>
> Changes in v3:
> - fixed regulator node name to fix ordering
> - deleted pcie_1_phy_aux clock
> - removed undeeded mdss_mdp status okay
> - collected revied & tested tags
> - Link to v2: https://lore.kernel.org/r/20240318-topic-sm8650-upstream-hdk-v2-0-b63a5d45a784@xxxxxxxxxx
>
> Changes in v2:
> - Fixed commit messages with links, and recently added product page URL
> - Swapped i2c3/i2c6 nodes
> - Moved pcie_1_phy_aux_clk under pcie1_phy
> - Removed duplicate mdp_vsync pinctrl state
> - Collected review & tested tags
> - Link to v1: https://lore.kernel.org/r/20240223-topic-sm8650-upstream-hdk-v1-0-ccca645cd901@xxxxxxxxxx
> ---
> arch/arm64/boot/dts/qcom/Makefile | 4 +
> .../boot/dts/qcom/sm8650-hdk-display-card.dtso | 141 +++++++++++++++++++++
> 2 files changed, 145 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index 56992fc3fc59..0c1cebd16649 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -250,6 +250,10 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8550-mtp.dtb
> dtb-$(CONFIG_ARCH_QCOM) += sm8550-qrd.dtb
> dtb-$(CONFIG_ARCH_QCOM) += sm8550-samsung-q5q.dtb
> dtb-$(CONFIG_ARCH_QCOM) += sm8550-sony-xperia-yodo-pdx234.dtb
> +
> +sm8650-hdk-display-card-dtbs := sm8650-hdk.dtb sm8650-hdk-display-card.dtbo
> +
> +dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk-display-card.dtb
> dtb-$(CONFIG_ARCH_QCOM) += sm8650-hdk.dtb
> dtb-$(CONFIG_ARCH_QCOM) += sm8650-mtp.dtb
> dtb-$(CONFIG_ARCH_QCOM) += sm8650-qrd.dtb
> diff --git a/arch/arm64/boot/dts/qcom/sm8650-hdk-display-card.dtso b/arch/arm64/boot/dts/qcom/sm8650-hdk-display-card.dtso
> new file mode 100644
> index 000000000000..cb102535838d
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/sm8650-hdk-display-card.dtso
> @@ -0,0 +1,141 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) 2024, Linaro Limited
> + */
> +
> +/*
> + * Display Card kit overlay
> + * This requires S5702 Switch 7 to be turned to OFF to route DSI0 to the display panel
> + */
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/interrupt-controller/irq.h>
> +
> +/dts-v1/;
> +/plugin/;
> +
> +/* Disable HDMI bridge related nodes (mutually exclusive with the display card) */
> +
> +&i2c6 {
> + status = "disabled";
> +};
> +
> +<9611_1v2 {
> + status = "disabled";
> +};
> +
> +<9611_3v3 {
> + status = "disabled";
> +};
> +
> +&vreg_bob_3v3 {
> + status = "disabled";
> +};
> +
> +<9611_codec {
> + status = "disabled";
> +};
> +
> +&mdss_dsi0 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + panel@0 {
> + compatible = "visionox,vtdr6130";
> + reg = <0>;
> +
> + reset-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;
> +
> + vddio-supply = <&vreg_l12b_1p8>;
> + vci-supply = <&vreg_l13b_3p0>;
> + vdd-supply = <&vreg_l11b_1p2>;
> +
> + pinctrl-0 = <&disp0_reset_n_active>, <&mdp_vsync>;
> + pinctrl-1 = <&disp0_reset_n_suspend>, <&mdp_vsync>;
> + pinctrl-names = "default", "sleep";
> +
> + port {
> + panel0_in: endpoint {
> + remote-endpoint = <&mdss_dsi0_out>;
> + };
> + };
> + };
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@1 {
> + reg = <1>;
> +
> + mdss_dsi0_out: endpoint {
> + remote-endpoint = <&panel0_in>;
> + };
> + };
> + };
> +};
> +
> +&spi4 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + status = "okay";
> +
> + touchscreen@0 {
> + compatible = "goodix,gt9916";
> + reg = <0>;
> +
> + interrupt-parent = <&tlmm>;
> + interrupts = <162 IRQ_TYPE_LEVEL_LOW>;
> +
> + reset-gpios = <&tlmm 161 GPIO_ACTIVE_LOW>;
> +
> + avdd-supply = <&vreg_l14b_3p2>;
> +
> + spi-max-frequency = <1000000>;
> +
> + touchscreen-size-x = <1080>;
> + touchscreen-size-y = <2400>;
> +
> + pinctrl-0 = <&ts_irq>, <&ts_reset>;
> + pinctrl-names = "default";
> + };
> +};
> +
> +&tlmm {
> + disp0_reset_n_active: disp0-reset-n-active-state {
> + pins = "gpio133";
> + function = "gpio";
> + drive-strength = <8>;
> + bias-disable;
> + };
> +
> + disp0_reset_n_suspend: disp0-reset-n-suspend-state {
> + pins = "gpio133";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
> + mdp_vsync: mdp-vsync-state {
> + pins = "gpio86";
> + function = "mdp_vsync";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
> + ts_irq: ts-irq-state {
> + pins = "gpio161";
> + function = "gpio";
> + drive-strength = <8>;
> + bias-pull-up;
> + output-disable;
> + };
> +
> + ts_reset: ts-reset-state {
> + pins = "gpio162";
> + function = "gpio";
> + drive-strength = <8>;
> + bias-pull-up;
> + };
> +};
>
> ---
> base-commit: 234cb065ad82915ff8d06ce01e01c3e640b674d2
> change-id: 20240223-topic-sm8650-upstream-hdk-e21cfd6f1de8
>
> Best regards,
> --
> Neil Armstrong <neil.armstrong@xxxxxxxxxx>
>
>