Message ID | 20241210-add-display-support-for-qcs615-platform-v4-9-2d875a67602d@quicinc.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Add display support for QCS615 platform | expand |
On Tue, Dec 10, 2024 at 02:54:00PM +0800, Fange Zhang wrote: > From: Li Liu <quic_lliu6@quicinc.com> > > Add display MDSS and DSI configuration for QCS615 RIDE board. > QCS615 has a DP port, and DP support will be added in a later patch. > > Signed-off-by: Li Liu <quic_lliu6@quicinc.com> > Signed-off-by: Fange Zhang <quic_fangez@quicinc.com> > --- > arch/arm64/boot/dts/qcom/qcs615-ride.dts | 89 ++++++++++++++++++++++++++++++++ > 1 file changed, 89 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/qcs615-ride.dts b/arch/arm64/boot/dts/qcom/qcs615-ride.dts > index a25928933e2b66241258e418c6e5bc36c306101e..694719a09ac46bfa2fe34f1883c0970b9d0902be 100644 > --- a/arch/arm64/boot/dts/qcom/qcs615-ride.dts > +++ b/arch/arm64/boot/dts/qcom/qcs615-ride.dts > @@ -32,6 +32,18 @@ xo_board_clk: xo-board-clk { > #clock-cells = <0>; > }; > }; > + > + dp-connector { > + compatible = "dp-connector"; > + label = "DP"; > + type = "mini"; > + > + port { > + dp_connector_out: endpoint { > + remote-endpoint = <&anx_7625_out>; > + }; > + }; > + }; > }; > > &apps_rsc { > @@ -202,6 +214,83 @@ &gcc { > <&sleep_clk>; > }; > > +&i2c2 { > + clock-frequency = <400000>; > + status = "okay"; > + > + ioexp: gpio@3e { > + compatible = "semtech,sx1509q"; > + reg = <0x3e>; > + interrupt-parent = <&tlmm>; > + interrupts = <58 0>; Use IRQ flags instead of just 0 (here and further on). Also it might be better to use interrupts-extended instead. > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-controller; > + #interrupt-cells = <2>; > + semtech,probe-reset; > + }; > + > + i2c-mux@77 { > + compatible = "nxp,pca9542"; > + reg = <0x77>; > + #address-cells = <1>; > + #size-cells = <0>; Add empty line before device nodes (here and furher on). > + i2c@0 { > + reg = <0>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + anx7625@58 { > + compatible = "analogix,anx7625"; > + reg = <0x58>; > + interrupt-parent = <&ioexp>; > + interrupts = <0 0>; > + enable-gpios = <&tlmm 4 GPIO_ACTIVE_HIGH>; > + reset-gpios = <&tlmm 5 GPIO_ACTIVE_HIGH>; > + wakeup-source; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + anx_7625_in: endpoint { > + remote-endpoint = <&mdss_dsi0_out>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + anx_7625_out: endpoint { > + remote-endpoint = <&dp_connector_out>; > + }; > + }; > + }; > + }; > + }; > + }; > +}; > + > +&mdss { > + status = "okay"; > +}; > + > +&mdss_dsi0 { > + vdda-supply = <&vreg_l11a>; > + status = "okay"; > +}; > + > +&mdss_dsi0_out { > + remote-endpoint = <&anx_7625_in>; > + data-lanes = <0 1 2 3>; > +}; > + > +&mdss_dsi0_phy { > + vdds-supply = <&vreg_l5a>; > + status = "okay"; > +}; > + > &qupv3_id_0 { > status = "okay"; > }; > > -- > 2.34.1 >
On 2024/12/10 19:02, Dmitry Baryshkov wrote: > On Tue, Dec 10, 2024 at 02:54:00PM +0800, Fange Zhang wrote: >> From: Li Liu <quic_lliu6@quicinc.com> >> >> Add display MDSS and DSI configuration for QCS615 RIDE board. >> QCS615 has a DP port, and DP support will be added in a later patch. >> >> Signed-off-by: Li Liu <quic_lliu6@quicinc.com> >> Signed-off-by: Fange Zhang <quic_fangez@quicinc.com> >> --- >> arch/arm64/boot/dts/qcom/qcs615-ride.dts | 89 ++++++++++++++++++++++++++++++++ >> 1 file changed, 89 insertions(+) >> >> diff --git a/arch/arm64/boot/dts/qcom/qcs615-ride.dts b/arch/arm64/boot/dts/qcom/qcs615-ride.dts >> index a25928933e2b66241258e418c6e5bc36c306101e..694719a09ac46bfa2fe34f1883c0970b9d0902be 100644 >> --- a/arch/arm64/boot/dts/qcom/qcs615-ride.dts >> +++ b/arch/arm64/boot/dts/qcom/qcs615-ride.dts >> @@ -32,6 +32,18 @@ xo_board_clk: xo-board-clk { >> #clock-cells = <0>; >> }; >> }; >> + >> + dp-connector { >> + compatible = "dp-connector"; >> + label = "DP"; >> + type = "mini"; >> + >> + port { >> + dp_connector_out: endpoint { >> + remote-endpoint = <&anx_7625_out>; >> + }; >> + }; >> + }; >> }; >> >> &apps_rsc { >> @@ -202,6 +214,83 @@ &gcc { >> <&sleep_clk>; >> }; >> >> +&i2c2 { >> + clock-frequency = <400000>; >> + status = "okay"; >> + >> + ioexp: gpio@3e { >> + compatible = "semtech,sx1509q"; >> + reg = <0x3e>; >> + interrupt-parent = <&tlmm>; >> + interrupts = <58 0>; > > Use IRQ flags instead of just 0 (here and further on). Also it might be > better to use interrupts-extended instead. Got it, will use interrupts-extended instead - interrupt-parent = <&tlmm>; - interrupts = <58 0>; + interrupts-extended = <&tlmm 58 IRQ_TYPE_NONE>; > >> + gpio-controller; >> + #gpio-cells = <2>; >> + interrupt-controller; >> + #interrupt-cells = <2>; >> + semtech,probe-reset; >> + }; >> + >> + i2c-mux@77 { >> + compatible = "nxp,pca9542"; >> + reg = <0x77>; >> + #address-cells = <1>; >> + #size-cells = <0>; > > Add empty line before device nodes (here and furher on). Sorry, will add it in next patch. > >> + i2c@0 { >> + reg = <0>; >> + #address-cells = <1>; >> + #size-cells = <0>; >> + >> + anx7625@58 { >> + compatible = "analogix,anx7625"; >> + reg = <0x58>; >> + interrupt-parent = <&ioexp>; >> + interrupts = <0 0>; will change it to interrupts-extended in next patch - interrupt-parent = <&ioexp>; - interrupts = <0 0>; + interrupts-extended = <&ioexp 0 IRQ_TYPE_NONE>; >> + enable-gpios = <&tlmm 4 GPIO_ACTIVE_HIGH>; >> + reset-gpios = <&tlmm 5 GPIO_ACTIVE_HIGH>; >> + wakeup-source; >> + >> + ports { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + >> + port@0 { >> + reg = <0>; >> + anx_7625_in: endpoint { >> + remote-endpoint = <&mdss_dsi0_out>; >> + }; >> + }; >> + >> + port@1 { >> + reg = <1>; >> + anx_7625_out: endpoint { >> + remote-endpoint = <&dp_connector_out>; >> + }; >> + }; >> + }; >> + }; >> + }; >> + }; >> +}; >> + >> +&mdss { >> + status = "okay"; >> +}; >> + >> +&mdss_dsi0 { >> + vdda-supply = <&vreg_l11a>; >> + status = "okay"; >> +}; >> + >> +&mdss_dsi0_out { >> + remote-endpoint = <&anx_7625_in>; >> + data-lanes = <0 1 2 3>; >> +}; >> + >> +&mdss_dsi0_phy { >> + vdds-supply = <&vreg_l5a>; >> + status = "okay"; >> +}; >> + >> &qupv3_id_0 { >> status = "okay"; >> }; >> >> -- >> 2.34.1 >> >
On Fri, 13 Dec 2024 at 11:21, fange zhang <quic_fangez@quicinc.com> wrote: > > > > On 2024/12/10 19:02, Dmitry Baryshkov wrote: > > On Tue, Dec 10, 2024 at 02:54:00PM +0800, Fange Zhang wrote: > >> From: Li Liu <quic_lliu6@quicinc.com> > >> > >> Add display MDSS and DSI configuration for QCS615 RIDE board. > >> QCS615 has a DP port, and DP support will be added in a later patch. > >> > >> Signed-off-by: Li Liu <quic_lliu6@quicinc.com> > >> Signed-off-by: Fange Zhang <quic_fangez@quicinc.com> > >> --- > >> arch/arm64/boot/dts/qcom/qcs615-ride.dts | 89 ++++++++++++++++++++++++++++++++ > >> 1 file changed, 89 insertions(+) > >> > >> diff --git a/arch/arm64/boot/dts/qcom/qcs615-ride.dts b/arch/arm64/boot/dts/qcom/qcs615-ride.dts > >> index a25928933e2b66241258e418c6e5bc36c306101e..694719a09ac46bfa2fe34f1883c0970b9d0902be 100644 > >> --- a/arch/arm64/boot/dts/qcom/qcs615-ride.dts > >> +++ b/arch/arm64/boot/dts/qcom/qcs615-ride.dts > >> @@ -32,6 +32,18 @@ xo_board_clk: xo-board-clk { > >> #clock-cells = <0>; > >> }; > >> }; > >> + > >> + dp-connector { > >> + compatible = "dp-connector"; > >> + label = "DP"; > >> + type = "mini"; > >> + > >> + port { > >> + dp_connector_out: endpoint { > >> + remote-endpoint = <&anx_7625_out>; > >> + }; > >> + }; > >> + }; > >> }; > >> > >> &apps_rsc { > >> @@ -202,6 +214,83 @@ &gcc { > >> <&sleep_clk>; > >> }; > >> > >> +&i2c2 { > >> + clock-frequency = <400000>; > >> + status = "okay"; > >> + > >> + ioexp: gpio@3e { > >> + compatible = "semtech,sx1509q"; > >> + reg = <0x3e>; > >> + interrupt-parent = <&tlmm>; > >> + interrupts = <58 0>; > > > > Use IRQ flags instead of just 0 (here and further on). Also it might be > > better to use interrupts-extended instead. > Got it, will use interrupts-extended instead > - interrupt-parent = <&tlmm>; > - interrupts = <58 0>; > + interrupts-extended = <&tlmm 58 IRQ_TYPE_NONE>; > > > >> + gpio-controller; > >> + #gpio-cells = <2>; > >> + interrupt-controller; > >> + #interrupt-cells = <2>; > >> + semtech,probe-reset; > >> + }; > >> + > >> + i2c-mux@77 { > >> + compatible = "nxp,pca9542"; > >> + reg = <0x77>; > >> + #address-cells = <1>; > >> + #size-cells = <0>; > > > > Add empty line before device nodes (here and furher on). > Sorry, will add it in next patch. > > > >> + i2c@0 { > >> + reg = <0>; > >> + #address-cells = <1>; > >> + #size-cells = <0>; > >> + > >> + anx7625@58 { > >> + compatible = "analogix,anx7625"; > >> + reg = <0x58>; > >> + interrupt-parent = <&ioexp>; > >> + interrupts = <0 0>; > will change it to interrupts-extended in next patch > - interrupt-parent = <&ioexp>; > - interrupts = <0 0>; > + interrupts-extended = <&ioexp 0 IRQ_TYPE_NONE>; Yes, much better. BTW: are you sure that it's really IRQ_TYPE_NONE? > >> + enable-gpios = <&tlmm 4 GPIO_ACTIVE_HIGH>; > >> + reset-gpios = <&tlmm 5 GPIO_ACTIVE_HIGH>; > >> + wakeup-source; > >> + > >> + ports { > >> + #address-cells = <1>; > >> + #size-cells = <0>; > >> + > >> + port@0 { > >> + reg = <0>; > >> + anx_7625_in: endpoint { > >> + remote-endpoint = <&mdss_dsi0_out>; > >> + }; > >> + }; > >> + > >> + port@1 { > >> + reg = <1>; > >> + anx_7625_out: endpoint { > >> + remote-endpoint = <&dp_connector_out>; > >> + }; > >> + }; > >> + }; > >> + }; > >> + }; > >> + }; > >> +}; > >> + > >> +&mdss { > >> + status = "okay"; > >> +}; > >> + > >> +&mdss_dsi0 { > >> + vdda-supply = <&vreg_l11a>; > >> + status = "okay"; > >> +}; > >> + > >> +&mdss_dsi0_out { > >> + remote-endpoint = <&anx_7625_in>; > >> + data-lanes = <0 1 2 3>; > >> +}; > >> + > >> +&mdss_dsi0_phy { > >> + vdds-supply = <&vreg_l5a>; > >> + status = "okay"; > >> +}; > >> + > >> &qupv3_id_0 { > >> status = "okay"; > >> }; > >> > >> -- > >> 2.34.1 > >> > > >
On 2024/12/13 18:19, Dmitry Baryshkov wrote: > On Fri, 13 Dec 2024 at 11:21, fange zhang <quic_fangez@quicinc.com> wrote: >> >> >> >> On 2024/12/10 19:02, Dmitry Baryshkov wrote: >>> On Tue, Dec 10, 2024 at 02:54:00PM +0800, Fange Zhang wrote: >>>> From: Li Liu <quic_lliu6@quicinc.com> >>>> >>>> Add display MDSS and DSI configuration for QCS615 RIDE board. >>>> QCS615 has a DP port, and DP support will be added in a later patch. >>>> >>>> Signed-off-by: Li Liu <quic_lliu6@quicinc.com> >>>> Signed-off-by: Fange Zhang <quic_fangez@quicinc.com> >>>> --- >>>> arch/arm64/boot/dts/qcom/qcs615-ride.dts | 89 ++++++++++++++++++++++++++++++++ >>>> 1 file changed, 89 insertions(+) >>>> >>>> diff --git a/arch/arm64/boot/dts/qcom/qcs615-ride.dts b/arch/arm64/boot/dts/qcom/qcs615-ride.dts >>>> index a25928933e2b66241258e418c6e5bc36c306101e..694719a09ac46bfa2fe34f1883c0970b9d0902be 100644 >>>> --- a/arch/arm64/boot/dts/qcom/qcs615-ride.dts >>>> +++ b/arch/arm64/boot/dts/qcom/qcs615-ride.dts >>>> @@ -32,6 +32,18 @@ xo_board_clk: xo-board-clk { >>>> #clock-cells = <0>; >>>> }; >>>> }; >>>> + >>>> + dp-connector { >>>> + compatible = "dp-connector"; >>>> + label = "DP"; >>>> + type = "mini"; >>>> + >>>> + port { >>>> + dp_connector_out: endpoint { >>>> + remote-endpoint = <&anx_7625_out>; >>>> + }; >>>> + }; >>>> + }; >>>> }; >>>> >>>> &apps_rsc { >>>> @@ -202,6 +214,83 @@ &gcc { >>>> <&sleep_clk>; >>>> }; >>>> >>>> +&i2c2 { >>>> + clock-frequency = <400000>; >>>> + status = "okay"; >>>> + >>>> + ioexp: gpio@3e { >>>> + compatible = "semtech,sx1509q"; >>>> + reg = <0x3e>; >>>> + interrupt-parent = <&tlmm>; >>>> + interrupts = <58 0>; >>> >>> Use IRQ flags instead of just 0 (here and further on). Also it might be >>> better to use interrupts-extended instead. >> Got it, will use interrupts-extended instead >> - interrupt-parent = <&tlmm>; >> - interrupts = <58 0>; >> + interrupts-extended = <&tlmm 58 IRQ_TYPE_NONE>; >>> >>>> + gpio-controller; >>>> + #gpio-cells = <2>; >>>> + interrupt-controller; >>>> + #interrupt-cells = <2>; >>>> + semtech,probe-reset; >>>> + }; >>>> + >>>> + i2c-mux@77 { >>>> + compatible = "nxp,pca9542"; >>>> + reg = <0x77>; >>>> + #address-cells = <1>; >>>> + #size-cells = <0>; >>> >>> Add empty line before device nodes (here and furher on). >> Sorry, will add it in next patch. >>> >>>> + i2c@0 { >>>> + reg = <0>; >>>> + #address-cells = <1>; >>>> + #size-cells = <0>; >>>> + >>>> + anx7625@58 { >>>> + compatible = "analogix,anx7625"; >>>> + reg = <0x58>; >>>> + interrupt-parent = <&ioexp>; >>>> + interrupts = <0 0>; >> will change it to interrupts-extended in next patch >> - interrupt-parent = <&ioexp>; >> - interrupts = <0 0>; >> + interrupts-extended = <&ioexp 0 IRQ_TYPE_NONE>; > > Yes, much better. BTW: are you sure that it's really IRQ_TYPE_NONE? We extensively tested FALLING and BOTH type, and they all work. However, I believe it’s better to use the default type, which is the same as the downstream approach. This way, it will be more stable. > >>>> + enable-gpios = <&tlmm 4 GPIO_ACTIVE_HIGH>; >>>> + reset-gpios = <&tlmm 5 GPIO_ACTIVE_HIGH>; >>>> + wakeup-source; >>>> + >>>> + ports { >>>> + #address-cells = <1>; >>>> + #size-cells = <0>; >>>> + >>>> + port@0 { >>>> + reg = <0>; >>>> + anx_7625_in: endpoint { >>>> + remote-endpoint = <&mdss_dsi0_out>; >>>> + }; >>>> + }; >>>> + >>>> + port@1 { >>>> + reg = <1>; >>>> + anx_7625_out: endpoint { >>>> + remote-endpoint = <&dp_connector_out>; >>>> + }; >>>> + }; >>>> + }; >>>> + }; >>>> + }; >>>> + }; >>>> +}; >>>> + >>>> +&mdss { >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&mdss_dsi0 { >>>> + vdda-supply = <&vreg_l11a>; >>>> + status = "okay"; >>>> +}; >>>> + >>>> +&mdss_dsi0_out { >>>> + remote-endpoint = <&anx_7625_in>; >>>> + data-lanes = <0 1 2 3>; >>>> +}; >>>> + >>>> +&mdss_dsi0_phy { >>>> + vdds-supply = <&vreg_l5a>; >>>> + status = "okay"; >>>> +}; >>>> + >>>> &qupv3_id_0 { >>>> status = "okay"; >>>> }; >>>> >>>> -- >>>> 2.34.1 >>>> >>> >> > >
On Wed, Dec 18, 2024 at 11:18:01AM +0800, fange zhang wrote: > > > On 2024/12/13 18:19, Dmitry Baryshkov wrote: > > On Fri, 13 Dec 2024 at 11:21, fange zhang <quic_fangez@quicinc.com> wrote: > > > > > > > > > > > > On 2024/12/10 19:02, Dmitry Baryshkov wrote: > > > > On Tue, Dec 10, 2024 at 02:54:00PM +0800, Fange Zhang wrote: > > > > > > > > > + i2c@0 { > > > > > + reg = <0>; > > > > > + #address-cells = <1>; > > > > > + #size-cells = <0>; > > > > > + > > > > > + anx7625@58 { > > > > > + compatible = "analogix,anx7625"; > > > > > + reg = <0x58>; > > > > > + interrupt-parent = <&ioexp>; > > > > > + interrupts = <0 0>; > > > will change it to interrupts-extended in next patch > > > - interrupt-parent = <&ioexp>; > > > - interrupts = <0 0>; > > > + interrupts-extended = <&ioexp 0 IRQ_TYPE_NONE>; > > > > Yes, much better. BTW: are you sure that it's really IRQ_TYPE_NONE? > We extensively tested FALLING and BOTH type, and they all work. However, I > believe it’s better to use the default type, which is the same as the > downstream approach. This way, it will be more stable. Following downstream is a lame reason. Downstream kernels are frequently wrong in many ways. So please check the actual documentation for ANX7625 and specify correct interrupt type.
diff --git a/arch/arm64/boot/dts/qcom/qcs615-ride.dts b/arch/arm64/boot/dts/qcom/qcs615-ride.dts index a25928933e2b66241258e418c6e5bc36c306101e..694719a09ac46bfa2fe34f1883c0970b9d0902be 100644 --- a/arch/arm64/boot/dts/qcom/qcs615-ride.dts +++ b/arch/arm64/boot/dts/qcom/qcs615-ride.dts @@ -32,6 +32,18 @@ xo_board_clk: xo-board-clk { #clock-cells = <0>; }; }; + + dp-connector { + compatible = "dp-connector"; + label = "DP"; + type = "mini"; + + port { + dp_connector_out: endpoint { + remote-endpoint = <&anx_7625_out>; + }; + }; + }; }; &apps_rsc { @@ -202,6 +214,83 @@ &gcc { <&sleep_clk>; }; +&i2c2 { + clock-frequency = <400000>; + status = "okay"; + + ioexp: gpio@3e { + compatible = "semtech,sx1509q"; + reg = <0x3e>; + interrupt-parent = <&tlmm>; + interrupts = <58 0>; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + semtech,probe-reset; + }; + + i2c-mux@77 { + compatible = "nxp,pca9542"; + reg = <0x77>; + #address-cells = <1>; + #size-cells = <0>; + i2c@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + + anx7625@58 { + compatible = "analogix,anx7625"; + reg = <0x58>; + interrupt-parent = <&ioexp>; + interrupts = <0 0>; + enable-gpios = <&tlmm 4 GPIO_ACTIVE_HIGH>; + reset-gpios = <&tlmm 5 GPIO_ACTIVE_HIGH>; + wakeup-source; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + anx_7625_in: endpoint { + remote-endpoint = <&mdss_dsi0_out>; + }; + }; + + port@1 { + reg = <1>; + anx_7625_out: endpoint { + remote-endpoint = <&dp_connector_out>; + }; + }; + }; + }; + }; + }; +}; + +&mdss { + status = "okay"; +}; + +&mdss_dsi0 { + vdda-supply = <&vreg_l11a>; + status = "okay"; +}; + +&mdss_dsi0_out { + remote-endpoint = <&anx_7625_in>; + data-lanes = <0 1 2 3>; +}; + +&mdss_dsi0_phy { + vdds-supply = <&vreg_l5a>; + status = "okay"; +}; + &qupv3_id_0 { status = "okay"; };