Hi Peter,

Am Mittwoch, 11. August 2021, 00:31:24 CEST schrieb Peter Geis:
> Good Evening,
> 
> I've been attempting to light off the feiyang fy07024di26a30d panel on
> the rockpro64. This is the official panel from the Pine64 store.
> I've confirmed it works with the downstream kernel on both the rk3399
> and rk3566, but on the mainline driver the display is partially
> corrupted (see attached photo: [1]).
> 
> As you can see, the left half of the display is fine, but the right half
> of the display is corrupted with the pixels smearing horizontally.
> 
> I saw when the panel was added, some additional code was added to
> handle burst mode in the sun6_mipi_dsi driver [2].
> I've seen that the dw-mipi-dsi driver appears to already support burst
> mode and I can't find anything out of place there.
> I also haven't had much success finding anything obviously different in
> the downstream driver vs the upstream driver that would explain this.
> 
> Attached below is the in-progress dts changes for an example of how the
> panel is plugged in.

is that really a dual-dsi panel needing two dsi controllers to drive it?

With that tiny resultion of 1024x600 I definitly wouldn't expect this,
in contrast to say the 2048x1536 dual-dsi displays used in the
Gru-Scarlet ChromeOS tablets.

So maybe just drop the 2nd dsi controller connection in a first step?
Because I really don't think that is the case on the hardware.

The dual-dsi setup means that you have one vop supplying half of its
display data to each of the 2 involved dsi controllers. And you're missing
in fact half of your display data.


Heiko



> I admit, I have little understanding of the mipi-dsi internal workings,
> so I'm reaching out to the experts on how to correct this.
> 
> Thank you for your time,
> Peter Geis
> 
> [1] https://photos.app.goo.gl/LBA9M2WcweGaEb4cA
> [2] 
> https://patchwork.kernel.org/project/linux-arm-kernel/cover/20181116163916.29621-1-ja...@amarulasolutions.com/
> 
> diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi 
> b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
> index 687a5afa5d2c..af55a30297ae 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi
> @@ -20,6 +20,13 @@ chosen {
>               stdout-path = "serial2:1500000n8";
>       };
>  
> +     backlight: backlight {
> +             compatible = "pwm-backlight";
> +             pwms = <&pwm0 0 1000000 0>;
> +             brightness-levels = <0 4 8 16 32 64 128 255>;
> +             default-brightness-level = <128>;
> +     };
> +
>       clkin_gmac: external-gmac-clock {
>               compatible = "fixed-clock";
>               clock-frequency = <125000000>;
> @@ -69,7 +76,7 @@ diy_led: led-1 {
>  
>       fan: pwm-fan {
>               compatible = "pwm-fan";
> -             cooling-levels = <0 150 200 255>;
> +             cooling-levels = <0 100 150 255>;
>               #cooling-cells = <2>;
>               fan-supply = <&vcc12v_dcin>;
>               pwms = <&pwm1 0 50000 0>;
> @@ -220,6 +227,16 @@ vdd_log: vdd-log {
>               regulator-max-microvolt = <1700000>;
>               vin-supply = <&vcc5v0_sys>;
>       };
> +
> +     avdd: avdd {
> +             compatible = "regulator-fixed";
> +             regulator-name = "avdd";
> +             regulator-always-on;
> +             regulator-boot-on;
> +             regulator-min-microvolt = <11000000>;
> +             regulator-max-microvolt = <11000000>;
> +             vin-supply = <&vcc3v3_s0>;
> +     };
>  };
>  
>  &cpu_l0 {
> @@ -428,8 +445,8 @@ regulator-state-mem {
>  
>                       vcc3v0_touch: LDO_REG2 {
>                               regulator-name = "vcc3v0_touch";
> -                             regulator-always-on;
> -                             regulator-boot-on;
> +//                           regulator-always-on;
> +//                           regulator-boot-on;
>                               regulator-min-microvolt = <3000000>;
>                               regulator-max-microvolt = <3000000>;
>                               regulator-state-mem {
> @@ -518,8 +535,8 @@ regulator-state-mem {
>  
>                       vcc3v3_s0: SWITCH_REG2 {
>                               regulator-name = "vcc3v3_s0";
> -                             regulator-always-on;
> -                             regulator-boot-on;
> +//                           regulator-always-on;
> +//                           regulator-boot-on;
>                               regulator-state-mem {
>                                       regulator-off-in-suspend;
>                               };
> @@ -593,6 +610,19 @@ fusb0: typec-portc@22 {
>               vbus-supply = <&vcc5v0_typec>;
>               status = "okay";
>       };
> +
> +     touch: touchscreen@5d {
> +             compatible = "goodix,gt911";
> +             reg = <0x5d>;
> +             AVDD28-supply = <&vcc3v0_touch>;
> +             VDDIO-supply = <&vcc3v0_touch>;
> +             interrupt-parent = <&gpio4>;
> +             interrupts = <RK_PD5 IRQ_TYPE_EDGE_FALLING>;
> +             irq-gpios = <&gpio4 RK_PD5 GPIO_ACTIVE_HIGH>;
> +             reset-gpios = <&gpio4 RK_PD6 GPIO_ACTIVE_HIGH>;
> +//           touchscreen-inverted-x;
> +//           touchscreen-inverted-y;
> +     };
>  };
>  
>  &i2s0 {
> @@ -628,6 +658,88 @@ &io_domains {
>       gpio1830-supply = <&vcc_3v0>;
>  };
>  
> +&mipi_dsi {
> +     status = "okay";
> +     clock-master;
> +
> +     ports {
> +             mipi_out: port@1 {
> +                     reg = <1>;
> +
> +                     mipi_out_panel: endpoint {
> +                             remote-endpoint = <&mipi_in_panel>;
> +                     };
> +             };
> +     };
> +
> +     mipi_panel: panel@0 {
> +             compatible = "feiyang,fy07024di26a30d";
> +             reg = <0>;
> +             backlight = <&backlight>;
> +             reset-gpios = <&gpio4 25 GPIO_ACTIVE_HIGH>;
> +//           enable-gpios = <&gpio4 25 GPIO_ACTIVE_HIGH>;
> +             width-mm = <154>;
> +             height-mm = <86>;
> +             rotation = <0>;
> +             avdd-supply = <&avdd>;
> +             dvdd-supply = <&vcc3v3_s0>;
> +
> +             display-timings {
> +                     native-mode = <&timing0>;
> +                     timing0: timing0 {
> +                             clock-frequency = <50000000>;
> +                             hactive = <1024>;
> +                             vactive = <600>;
> +                             hfront-porch = <160>;
> +                             hback-porch = <160>;
> +                             hsync-len = <10>;
> +                             vback-porch = <23>;
> +                             vfront-porch = <12>;
> +                             vsync-len = <1>;
> +                             hsync-active = <0>;
> +                             vsync-active = <0>;
> +                             pixelclk-active = <0>;
> +                             de-active = <0>;
> +                     };
> +             };
> +
> +             ports {
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +
> +                     port@0 {
> +                             reg = <0>;
> +
> +                             mipi_in_panel: endpoint {
> +                                     remote-endpoint = <&mipi_out_panel>;
> +                             };
> +                     };
> +
> +                     port@1 {
> +                             reg = <1>;
> +
> +                             mipi1_in_panel: endpoint@1 {
> +                                     remote-endpoint = <&mipi1_out_panel>;
> +                             };
> +                     };
> +             };
> +     };
> +};
> +
> +&mipi_dsi1 {
> +     status = "okay";
> +
> +     ports {
> +             mipi1_out: port@1 {
> +                     reg = <1>;
> +
> +                     mipi1_out_panel: endpoint {
> +                             remote-endpoint = <&mipi1_in_panel>;
> +                     };
> +             };
> +     };
> +};
> +
>  &pcie0 {
>       ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>;
>       num-lanes = <4>;
> 




Reply via email to