Loading Documentation/devicetree/bindings/display/msm/sde.txt +2 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,8 @@ Required properties Optional properties: - clock-rate: List of clock rates in Hz. - clock-max-rate: List of maximum clock rate in Hz that this device supports. - connectors: Specifies the connector components. - bridges: Specifies the bridge components. - qcom,platform-supply-entries: A node that lists the elements of the supply. There can be more than one instance of this binding, in which case the entry would be appended with Loading arch/arm64/boot/dts/qcom/qcs605-360camera.dtsi +6 −1 Original line number Diff line number Diff line Loading @@ -47,9 +47,14 @@ status = "disabled"; }; &mdss_mdp { bridges = <<9611>; }; &qupv3_se9_i2c { status = "okay"; lt9611@3b { lt9611: lt,lt9611@3b { compatible = "lt,lt9611"; reg = <0x3b>; interrupt-parent = <&tlmm>; Loading arch/arm64/boot/dts/qcom/qcs605-lc-sde-display.dtsi 0 → 100644 +73 −0 Original line number Diff line number Diff line /* Copyright (c) 2018, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include <dt-bindings/clock/mdss-10nm-pll-clk.h> &soc { ext_dsi_bridge_display: qcom,dsi-display@0 { compatible = "qcom,dsi-display"; label = "ext_dsi_bridge_display"; qcom,display-type = "primary"; qcom,dsi-ctrl = <&mdss_dsi0>; qcom,dsi-phy = <&mdss_dsi_phy0>; clocks = <&mdss_dsi0_pll BYTECLK_MUX_0_CLK>, <&mdss_dsi0_pll PCLK_MUX_0_CLK>; clock-names = "src_byte_clk", "src_pixel_clk"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; ext_dsi_out: endpoint { }; }; }; }; sde_wb: qcom,wb-display@0 { compatible = "qcom,wb-display"; cell-index = <0>; label = "wb_display"; }; ext_disp: qcom,msm-ext-disp { compatible = "qcom,msm-ext-disp"; ext_disp_audio_codec: qcom,msm-ext-disp-audio-codec-rx { compatible = "qcom,msm-ext-disp-audio-codec-rx"; }; }; }; &mdss_dsi0 { vdda-1p2-supply = <&pm660_l2>; }; &mdss_dsi1 { vdda-1p2-supply = <&pm660_l2>; }; &mdss_dsi_phy0 { vdda-0p9-supply = <&pm660_l6>; }; &mdss_dsi_phy1 { vdda-0p9-supply = <&pm660_l6>; }; &sde_dp { vdda-0p9-supply = <&pm660_l6>; }; arch/arm64/boot/dts/qcom/qcs605-lc.dtsi +92 −6 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include "qcs605.dtsi" #include "pm8005.dtsi" #include "qcs605-pm660-pm8005-regulator.dtsi" #include "qcs605-lc-sde-display.dtsi" / { model = "Qualcomm Technologies, Inc. QCS605 SoC"; Loading Loading @@ -209,16 +210,101 @@ parent-supply = <&pm8005_s2>; }; &mdss_dsi_phy0 { /delete-property/ vdda-0p9-supply; &mdss_mdp { connectors = <&sde_rscc &sde_wb>; bridges = <<9611>; }; &mdss_dsi_phy1 { /delete-property/ vdda-0p9-supply; &sde_dp { status = "disabled"; }; &qupv3_se9_i2c { status = "okay"; lt9611: lt,lt9611@3b { compatible = "lt,lt9611"; reg = <0x3b>; interrupt-parent = <&tlmm>; interrupts = <96 0>; interrupt-names = "lt_irq"; lt,irq-gpio = <&tlmm 96 0x0>; lt,reset-gpio = <&tlmm 95 0x0>; lt,hdmi-en-gpio = <&tlmm 53 0x0>; lt,non-pluggable; vdd-supply = <&pm660_l12>; lt,supply-entries { #address-cells = <1>; #size-cells = <0>; lt,supply-entry@0 { reg = <0>; lt,supply-name = "vdd"; lt,supply-min-voltage = <1800000>; lt,supply-max-voltage = <1800000>; lt,supply-enable-load = <200000>; lt,supply-post-on-sleep = <50>; }; }; lt,customize-modes { lt,customize-mode-id@0 { lt,mode-h-active = <1920>; lt,mode-h-front-porch = <88>; lt,mode-h-pulse-width = <44>; lt,mode-h-back-porch = <148>; lt,mode-h-active-high; lt,mode-v-active = <1080>; lt,mode-v-front-porch = <4>; lt,mode-v-pulse-width = <5>; lt,mode-v-back-porch = <36>; lt,mode-v-active-high; lt,mode-refresh-rate = <60>; lt,mode-clock-in-khz = <148500>; }; lt,customize-mode-id@1 { lt,mode-h-active = <3840>; lt,mode-h-front-porch = <176>; lt,mode-h-pulse-width = <88>; lt,mode-h-back-porch = <296>; lt,mode-h-active-high; lt,mode-v-active = <2160>; lt,mode-v-front-porch = <8>; lt,mode-v-pulse-width = <10>; lt,mode-v-back-porch = <72>; lt,mode-v-active-high; lt,mode-refresh-rate = <30>; lt,mode-clock-in-khz = <297000>; }; }; &sde_dp { /delete-property/ vdda-0p9-supply; ports { #address-cells = <1>; #size-cells = <0>; port@0 { lt9611_in: endpoint { remote-endpoint = <&ext_dsi_out>; }; }; }; }; }; &soc { qcom,dsi-display@0 { qcom,dsi-display-active; ports { port@0 { endpoint { remote-endpoint = <<9611_in>; }; }; }; }; }; &qusb_phy0 { Loading drivers/gpu/drm/bridge/lt9611.c +19 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <linux/i2c.h> #include <linux/gpio.h> #include <linux/interrupt.h> #include <linux/component.h> #include <linux/of_gpio.h> #include <linux/of_graph.h> #include <linux/of_irq.h> Loading Loading @@ -1997,6 +1998,20 @@ static void lt9611_sysfs_remove(struct device *dev) sysfs_remove_group(&dev->kobj, <9611_sysfs_attr_grp); } static int lt9611_bind(struct device *dev, struct device *master, void *data) { return 0; } static void lt9611_unbind(struct device *dev, struct device *master, void *data) { } static const struct component_ops lt9611_comp_ops = { .bind = lt9611_bind, .unbind = lt9611_unbind, }; static int lt9611_probe(struct i2c_client *client, const struct i2c_device_id *id) { Loading Loading @@ -2078,6 +2093,10 @@ static int lt9611_probe(struct i2c_client *client, drm_bridge_add(&pdata->bridge); ret = component_add(&client->dev, <9611_comp_ops); if (ret) pr_err("component add failed, rc=%d\n", ret); return ret; err_sysfs_init: Loading Loading
Documentation/devicetree/bindings/display/msm/sde.txt +2 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,8 @@ Required properties Optional properties: - clock-rate: List of clock rates in Hz. - clock-max-rate: List of maximum clock rate in Hz that this device supports. - connectors: Specifies the connector components. - bridges: Specifies the bridge components. - qcom,platform-supply-entries: A node that lists the elements of the supply. There can be more than one instance of this binding, in which case the entry would be appended with Loading
arch/arm64/boot/dts/qcom/qcs605-360camera.dtsi +6 −1 Original line number Diff line number Diff line Loading @@ -47,9 +47,14 @@ status = "disabled"; }; &mdss_mdp { bridges = <<9611>; }; &qupv3_se9_i2c { status = "okay"; lt9611@3b { lt9611: lt,lt9611@3b { compatible = "lt,lt9611"; reg = <0x3b>; interrupt-parent = <&tlmm>; Loading
arch/arm64/boot/dts/qcom/qcs605-lc-sde-display.dtsi 0 → 100644 +73 −0 Original line number Diff line number Diff line /* Copyright (c) 2018, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #include <dt-bindings/clock/mdss-10nm-pll-clk.h> &soc { ext_dsi_bridge_display: qcom,dsi-display@0 { compatible = "qcom,dsi-display"; label = "ext_dsi_bridge_display"; qcom,display-type = "primary"; qcom,dsi-ctrl = <&mdss_dsi0>; qcom,dsi-phy = <&mdss_dsi_phy0>; clocks = <&mdss_dsi0_pll BYTECLK_MUX_0_CLK>, <&mdss_dsi0_pll PCLK_MUX_0_CLK>; clock-names = "src_byte_clk", "src_pixel_clk"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; ext_dsi_out: endpoint { }; }; }; }; sde_wb: qcom,wb-display@0 { compatible = "qcom,wb-display"; cell-index = <0>; label = "wb_display"; }; ext_disp: qcom,msm-ext-disp { compatible = "qcom,msm-ext-disp"; ext_disp_audio_codec: qcom,msm-ext-disp-audio-codec-rx { compatible = "qcom,msm-ext-disp-audio-codec-rx"; }; }; }; &mdss_dsi0 { vdda-1p2-supply = <&pm660_l2>; }; &mdss_dsi1 { vdda-1p2-supply = <&pm660_l2>; }; &mdss_dsi_phy0 { vdda-0p9-supply = <&pm660_l6>; }; &mdss_dsi_phy1 { vdda-0p9-supply = <&pm660_l6>; }; &sde_dp { vdda-0p9-supply = <&pm660_l6>; };
arch/arm64/boot/dts/qcom/qcs605-lc.dtsi +92 −6 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include "qcs605.dtsi" #include "pm8005.dtsi" #include "qcs605-pm660-pm8005-regulator.dtsi" #include "qcs605-lc-sde-display.dtsi" / { model = "Qualcomm Technologies, Inc. QCS605 SoC"; Loading Loading @@ -209,16 +210,101 @@ parent-supply = <&pm8005_s2>; }; &mdss_dsi_phy0 { /delete-property/ vdda-0p9-supply; &mdss_mdp { connectors = <&sde_rscc &sde_wb>; bridges = <<9611>; }; &mdss_dsi_phy1 { /delete-property/ vdda-0p9-supply; &sde_dp { status = "disabled"; }; &qupv3_se9_i2c { status = "okay"; lt9611: lt,lt9611@3b { compatible = "lt,lt9611"; reg = <0x3b>; interrupt-parent = <&tlmm>; interrupts = <96 0>; interrupt-names = "lt_irq"; lt,irq-gpio = <&tlmm 96 0x0>; lt,reset-gpio = <&tlmm 95 0x0>; lt,hdmi-en-gpio = <&tlmm 53 0x0>; lt,non-pluggable; vdd-supply = <&pm660_l12>; lt,supply-entries { #address-cells = <1>; #size-cells = <0>; lt,supply-entry@0 { reg = <0>; lt,supply-name = "vdd"; lt,supply-min-voltage = <1800000>; lt,supply-max-voltage = <1800000>; lt,supply-enable-load = <200000>; lt,supply-post-on-sleep = <50>; }; }; lt,customize-modes { lt,customize-mode-id@0 { lt,mode-h-active = <1920>; lt,mode-h-front-porch = <88>; lt,mode-h-pulse-width = <44>; lt,mode-h-back-porch = <148>; lt,mode-h-active-high; lt,mode-v-active = <1080>; lt,mode-v-front-porch = <4>; lt,mode-v-pulse-width = <5>; lt,mode-v-back-porch = <36>; lt,mode-v-active-high; lt,mode-refresh-rate = <60>; lt,mode-clock-in-khz = <148500>; }; lt,customize-mode-id@1 { lt,mode-h-active = <3840>; lt,mode-h-front-porch = <176>; lt,mode-h-pulse-width = <88>; lt,mode-h-back-porch = <296>; lt,mode-h-active-high; lt,mode-v-active = <2160>; lt,mode-v-front-porch = <8>; lt,mode-v-pulse-width = <10>; lt,mode-v-back-porch = <72>; lt,mode-v-active-high; lt,mode-refresh-rate = <30>; lt,mode-clock-in-khz = <297000>; }; }; &sde_dp { /delete-property/ vdda-0p9-supply; ports { #address-cells = <1>; #size-cells = <0>; port@0 { lt9611_in: endpoint { remote-endpoint = <&ext_dsi_out>; }; }; }; }; }; &soc { qcom,dsi-display@0 { qcom,dsi-display-active; ports { port@0 { endpoint { remote-endpoint = <<9611_in>; }; }; }; }; }; &qusb_phy0 { Loading
drivers/gpu/drm/bridge/lt9611.c +19 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <linux/i2c.h> #include <linux/gpio.h> #include <linux/interrupt.h> #include <linux/component.h> #include <linux/of_gpio.h> #include <linux/of_graph.h> #include <linux/of_irq.h> Loading Loading @@ -1997,6 +1998,20 @@ static void lt9611_sysfs_remove(struct device *dev) sysfs_remove_group(&dev->kobj, <9611_sysfs_attr_grp); } static int lt9611_bind(struct device *dev, struct device *master, void *data) { return 0; } static void lt9611_unbind(struct device *dev, struct device *master, void *data) { } static const struct component_ops lt9611_comp_ops = { .bind = lt9611_bind, .unbind = lt9611_unbind, }; static int lt9611_probe(struct i2c_client *client, const struct i2c_device_id *id) { Loading Loading @@ -2078,6 +2093,10 @@ static int lt9611_probe(struct i2c_client *client, drm_bridge_add(&pdata->bridge); ret = component_add(&client->dev, <9611_comp_ops); if (ret) pr_err("component add failed, rc=%d\n", ret); return ret; err_sysfs_init: Loading