Check out the patch that John Watts just sent out (you were included). This patch seems to fix all the tint issues.
On Saturday 29 June 2024 at 8:52:55 am UTC+10 jakob...@gmail.com wrote: > Hi James, > indeed this patch looks like it handles my solution properly... > Will give it a try. > > Had just built new gstreamer 1.24 and patched in video node for T113 using > the one from D1. > Including this patch i get it to probe. > > https://patchwork.kernel.org/project/linux-media/patch/20221231164628...@sholland.org/ > > <https://patchwork.kernel.org/project/linux-media/patch/20221231164628.19688-4-sam...@sholland.org/> > > But the screen stays blank, no error in gst-launch, but not image either. > fb0 emualtion works still. > > Some if my patches introduced a new color, now most of the time the sytem > boots with a pink tint. > > Will probably take some more months to fix this ;) > > K. James schrieb am Freitag, 28. Juni 2024 um 01:50:22 UTC+2: > >> >> No, not using with gstreamer. >> >> Also the tcon-top pipeline is very similar to the R40, there is a DSI >> patch for the R40 that has never been committed (still some issues) but >> based on the testing I have done, it might also solve the D1 implementation >> issues that you "patched" above: >> >> https://patchwork.freedesktop.org/patch/347129/?series=62062&rev=3 >> >> >> On Friday 28 June 2024 at 8:43:23 am UTC+10 jakob...@gmail.com wrote: >> >>> Hi James, oh that is brilliant. A friend of mine was doing some >>> debugging on the DSI via a seld made FPGA analyser.The packets looked fine. >>> But the mixer is indeed the problem... >>> >>> Did you use the T113 with gstreamer - by any chance? >>> >>> >>> >>> K. James schrieb am Mittwoch, 12. Juni 2024 um 08:15:37 UTC+2: >>> >>>> Hey Jakob, >>>> >>>> Jookia was dealing with something similar on IRC (except a blue tint). >>>> Some experimentation yielded a result for us both. >>>> >>>> Completely removing Mixer1 definition from the device tree and the >>>> tinting is gone. >>>> >>>> Patch here: >>>> https://paste.xogium.me/pn.txt >>>> >>>> Maybe try it on your DSI implementation and let us know? >>>> >>>> On Wednesday 12 June 2024 at 8:38:36 am UTC+10 K. James wrote: >>>> >>>>> Hey Jakob, >>>>> >>>>> I didn't proceed with testing the DSI on T113-S3, but I have attempted >>>>> to get the RGB output working. I have had "mixed" success. I can get the >>>>> display initialising and a directfb test runs. >>>>> >>>>> But it *also* has a green tinge over the whole display, which is >>>>> consistent and I cannot fathom why. >>>>> >>>>> It must be device related, because the exact same kernel, driver (+ >>>>> init code), display works perfectly on my v3s test setup. >>>>> >>>>> So frustrating!! Did you have any further progress? >>>>> >>>>> >>>>> >>>>> On Monday 26 February 2024 at 11:57:30 pm UTC+10 jakob...@gmail.com >>>>> wrote: >>>>> >>>>>> Hi James, >>>>>> >>>>>> were you able to test the patches? It unfortunalty seems like this >>>>>> isn't the only problem. On about 50% of the cold boots i get a green >>>>>> tinted >>>>>> image on the screen. Its working, but everything is greenish (blacks and >>>>>> also whites). >>>>>> Probably has to do with the wrong clocks or wrong dsi packager setup? >>>>>> We also tested the patches that Frank Oltmanns posted in this thread >>>>>> https://groups.google.com/g/linux-sunxi/c/Rh-Uqqa66bw >>>>>> Does anybody know why the calculation of timings is so much different >>>>>> than what the BSP of T113 does? >>>>>> >>>>>> Thanks! >>>>>> Jakob >>>>>> >>>>>> Jakob L schrieb am Montag, 29. Januar 2024 um 12:35:29 UTC+1: >>>>>> >>>>>>> Hi James, >>>>>>> >>>>>>> yes, exactly. The patch forces the tcon_top to bind at probe. >>>>>>> Its tested on 6.7.0 kernel with a custom mipi panel. But any other >>>>>>> panel should work. It was based on panel-feiyang-fy07024di26a30d.c, >>>>>>> i think. >>>>>>> I added these nodes to MangoPi dts. All other settings are stock >>>>>>> kernel. >>>>>>> >>>>>>> +&de { >>>>>>> + status = "okay"; >>>>>>> +}; >>>>>>> + >>>>>>> +&dsi { >>>>>>> + pinctrl-0 = <&dsi_4lane_pins>; >>>>>>> + pinctrl-names = "default"; >>>>>>> + status = "okay"; >>>>>>> + >>>>>>> + panel: panel@0 { >>>>>>> + reg = <0>; >>>>>>> + compatible = "test,7x-0"; >>>>>>> >>>>>>> + pinctrl-names = "default"; >>>>>>> + reset-gpios = <&pio 3 20 GPIO_ACTIVE_HIGH>; >>>>>>> + >>>>>>> + port { >>>>>>> + panel_in: endpoint { >>>>>>> + remote-endpoint = <&tcon_lcd0_out_dsi>; >>>>>>> + }; >>>>>>> + }; >>>>>>> + >>>>>>> + }; >>>>>>> +}; >>>>>>> + >>>>>>> +&dphy { >>>>>>> + status = "okay"; >>>>>>> +}; >>>>>>> + >>>>>>> >>>>>>> K. James schrieb am Sonntag, 28. Januar 2024 um 03:20:07 UTC+1: >>>>>>> >>>>>>>> Hey Jakob, >>>>>>>> >>>>>>>> So the issue is some sort of race condition between the binding of >>>>>>>> tcon top and the dsi driver? >>>>>>>> >>>>>>>> And your patch above forces the tcon top to bind? >>>>>>>> >>>>>>>> What DTS/Clock settings did you use with this? what kernel version? >>>>>>>> I will test. >>>>>>>> >>>>>>>> Cheers >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Saturday 27 January 2024 at 11:36:58 am UTC+10 >>>>>>>> jakob...@gmail.com wrote: >>>>>>>> >>>>>>>>> Hi James, >>>>>>>>> >>>>>>>>> a friend of mine managed to fix it based on our analysis. Its a >>>>>>>>> hack. >>>>>>>>> But it proves that the problem is what i had written. Not sure how >>>>>>>>> to code it so it can be upstreamed. >>>>>>>>> But you can test your hardware and use it like this. >>>>>>>>> >>>>>>>>> diff --git a/drivers/gpu/drm/sun4i/sun8i_tcon_top.c >>>>>>>>> b/drivers/gpu/drm/sun4i/sun8i_tcon_top.c >>>>>>>>> index a1ca3916f42b..df7b5c64679a 100644 >>>>>>>>> --- a/drivers/gpu/drm/sun4i/sun8i_tcon_top.c >>>>>>>>> +++ b/drivers/gpu/drm/sun4i/sun8i_tcon_top.c >>>>>>>>> @@ -121,6 +121,12 @@ static struct clk_hw >>>>>>>>> *sun8i_tcon_top_register_gate(struct device *dev, >>>>>>>>> bit, 0, lock); >>>>>>>>> }; >>>>>>>>> >>>>>>>>> +static int bind_new(struct device *dev, struct device *master, >>>>>>>>> + void *data) >>>>>>>>> +{ >>>>>>>>> + return 0; >>>>>>>>> +} >>>>>>>>> + >>>>>>>>> static int sun8i_tcon_top_bind(struct device *dev, struct device >>>>>>>>> *master, >>>>>>>>> void *data) >>>>>>>>> { >>>>>>>>> @@ -251,13 +257,18 @@ static void sun8i_tcon_top_unbind(struct >>>>>>>>> device *dev, struct device *master, >>>>>>>>> } >>>>>>>>> >>>>>>>>> static const struct component_ops sun8i_tcon_top_ops = { >>>>>>>>> - .bind = sun8i_tcon_top_bind, >>>>>>>>> + .bind = bind_new, >>>>>>>>> .unbind = sun8i_tcon_top_unbind, >>>>>>>>> }; >>>>>>>>> >>>>>>>>> static int sun8i_tcon_top_probe(struct platform_device *pdev) >>>>>>>>> { >>>>>>>>> - return component_add(&pdev->dev, &sun8i_tcon_top_ops); >>>>>>>>> + dev_info(&pdev->dev, "%s\n", __func__); >>>>>>>>> + component_add(&pdev->dev, &sun8i_tcon_top_ops); >>>>>>>>> + >>>>>>>>> + sun8i_tcon_top_bind(&pdev->dev, NULL, NULL); >>>>>>>>> + >>>>>>>>> + return 0; >>>>>>>>> } >>>>>>>>> >>>>>>>>> static void sun8i_tcon_top_remove(struct platform_device *pdev) >>>>>>>>> -- >>>>>>>>> 2.34.1 >>>>>>>>> >>>>>>>>> Jakob L schrieb am Montag, 1. Januar 2024 um 18:10:49 UTC+1: >>>>>>>>> >>>>>>>>>> I inserted some printks in the sun4i_tcon.c, sun8i-tcon-top.c and >>>>>>>>>> sun6i_mipi_dsi.c (because there are not many debug prints with >>>>>>>>>> DRM.debug) >>>>>>>>>> [ 0.968820] sun4i_tcon_probe >>>>>>>>>> [ 0.968890] sun4i_tcon_probe:hasChannel0 >>>>>>>>>> [ 0.969635] sun4i_tcon_probe >>>>>>>>>> [ 0.976753] sun8i_tcon_top_probe >>>>>>>>>> [ 2.391061] sun6i_dsi_probe >>>>>>>>>> [ 2.394217] sun6i-mipi-dsi 5450000.dsi: supply vcc-dsi not >>>>>>>>>> found, using dummy regulator >>>>>>>>>> [ 2.403074] sun6i-mipi-dsi 5450000.dsi: Couldn't get the DSI >>>>>>>>>> mod clock >>>>>>>>>> >>>>>>>>>> Might have to look more, but it seems the the tcon and tcon_top >>>>>>>>>> are probed, then when dsi is probed later, it fails. Can it be that >>>>>>>>>> the >>>>>>>>>> clock is not available yet, because tcon and tcon_top are not bound >>>>>>>>>> yet? >>>>>>>>>> I saw that this dependencies where a problem with other sunxi >>>>>>>>>> mipi implementations. Had been fixed though in 2019. >>>>>>>>>> So it might be that the clocks are fine after all. But it fails >>>>>>>>>> for another reason. >>>>>>>>>> >>>>>>>>>> Jakob L schrieb am Sonntag, 31. Dezember 2023 um 17:01:46 UTC+1: >>>>>>>>>> >>>>>>>>>>> Indeed, >>>>>>>>>>> >>>>>>>>>>> Had not looked at the clock print yet, but I saw the same thing >>>>>>>>>>> in the registers yesterday. TCON_TOP is not configured and >>>>>>>>>>> presumably not >>>>>>>>>>> enabled. Neither is the DPHY. >>>>>>>>>>> The above clock print was with the only patch that did not give >>>>>>>>>>> errors. >>>>>>>>>>> Option1 A >>>>>>>>>>> @@ -655,7 +655,7 @@ dsi: dsi@5450000 { >>>>>>>>>>> >>>>>>>>>>> reg = <0x5450000 0x1000>; >>>>>>>>>>> interrupts = <SOC_PERIPHERAL_IRQ(92) IRQ_TYPE_LEVEL_HIGH>; >>>>>>>>>>> clocks = <&ccu CLK_BUS_MIPI_DSI>, >>>>>>>>>>> - <&tcon_top CLK_TCON_TOP_DSI>; >>>>>>>>>>> + <&ccu CLK_MIPI_DSI>; >>>>>>>>>>> >>>>>>>>>>> So tcon-top-dsi not beeing prepared and enabled is ok. >>>>>>>>>>> >>>>>>>>>>> But looking at the registers from uboot and sun8i_tcon_top.h it >>>>>>>>>>> is clear that TCON_TOP_TCON_DSI_GATE is beeing set. So some clock >>>>>>>>>>> must come >>>>>>>>>>> from TCON_TOP >>>>>>>>>>> Also TCON_TOP_PORT_SEL_REG is set to 0x00000020 (kernel 0) >>>>>>>>>>> #define TCON_TOP_PORT_DE0_MSK GENMASK(1, 0) >>>>>>>>>>> #define TCON_TOP_PORT_DE1_MSK GENMASK(5, 4) >>>>>>>>>>> >>>>>>>>>>> So i looked again at what you found with Option 2 (index of >>>>>>>>>>> TCON_TOP clocks). In my kernel 6.5.7 its already fixed by Samuel >>>>>>>>>>> Holland. >>>>>>>>>>> https://lore.kernel.org/lkml/20220412042807.47519-13 >>>>>>>>>>> It is not needed anymore once you use a newer kernel. >>>>>>>>>>> >>>>>>>>>>> It has to be something on the init code for DPHY and TCON_TOP as >>>>>>>>>>> those registers remain untouched by the kernel as it is now. >>>>>>>>>>> Or it is because the clock is wrong, and thus the *DSI_BGR_REG >>>>>>>>>>> 0x02001B4C *DSI Clock is masked, resulting in failed writes to >>>>>>>>>>> some registers. >>>>>>>>>>> Might not be as easy as i hoped some days ago... >>>>>>>>>>> >>>>>>>>>>> Have a nice new years eve and a good start into the new one! >>>>>>>>>>> Jakob >>>>>>>>>>> K. James schrieb am Sonntag, 31. Dezember 2023 um 02:28:41 UTC+1: >>>>>>>>>>> >>>>>>>>>>>> Jakob, >>>>>>>>>>>> >>>>>>>>>>>> Regarding your clock, I don't know which DTS configuration this >>>>>>>>>>>> is from however: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> enable prepare protect >>>>>>>>>>>> duty hardware >>>>>>>>>>>> clock count count count >>>>>>>>>>>> rate accuracy phase cycle enable >>>>>>>>>>>> >>>>>>>>>>>> ------------------------------------------------------------------------------------------------------- >>>>>>>>>>>> ..... >>>>>>>>>>>> tcon-top-dsi 0 0 0 >>>>>>>>>>>> 216000000 0 0 50000 N >>>>>>>>>>>> ..... >>>>>>>>>>>> >>>>>>>>>>>> bus-mipi-dsi 0 2 0 >>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>> ..... >>>>>>>>>>>> >>>>>>>>>>>> If the DSI device/phy mod bus is supposed to be tcon-top-dsi >>>>>>>>>>>> (unlikely due to the prepare count) - it's not being enabled/set >>>>>>>>>>>> by the >>>>>>>>>>>> tcon top driver. But maybe you have the mod bus being set from a >>>>>>>>>>>> different >>>>>>>>>>>> clock in this config? >>>>>>>>>>>> >>>>>>>>>>>> If the DSI device/phy supposed to be using the bus-mipi-dsi >>>>>>>>>>>> (likely as this is the default in the mainline t113/d1s device >>>>>>>>>>>> tree) then >>>>>>>>>>>> its being prepared, but not enabled, which is maybe odd? certainly >>>>>>>>>>>> a >>>>>>>>>>>> prepare count of two, without an enable count of two indicates >>>>>>>>>>>> something >>>>>>>>>>>> funny, like the CCU is not starting the bus-mipi-dsi clock like it >>>>>>>>>>>> should >>>>>>>>>>>> when its called? >>>>>>>>>>>> >>>>>>>>>>>> This could be a thread to pull.. >>>>>>>>>>>> On Sunday 31 December 2023 at 8:23:46 am UTC+10:30 >>>>>>>>>>>> jakob...@gmail.com wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hello James, >>>>>>>>>>>>> >>>>>>>>>>>>> yes indeed. I also was pleasantly surprised to see your >>>>>>>>>>>>> question and that it has replies. Actually i started with T113 >>>>>>>>>>>>> about 6 >>>>>>>>>>>>> months ago. But then paused till last week. >>>>>>>>>>>>> I feel it is not far off and its a nice project to learn. >>>>>>>>>>>>> >>>>>>>>>>>>> Since the patches from Samuel Holland mention that its a >>>>>>>>>>>>> similar DSI hardware (40nm version) as the A64, i tried to add a >>>>>>>>>>>>> no >>>>>>>>>>>>> mod-clock patch. It removes the error, but it wont work. >>>>>>>>>>>>> >>>>>>>>>>>>> And according to the User Manual T113 does need a module clock >>>>>>>>>>>>> and it has to be started after the data clock. Otherwise that >>>>>>>>>>>>> Manual is >>>>>>>>>>>>> horrible and thin in DSI. >>>>>>>>>>>>> As far as i understand page 57 dsi module clock can be hosc, >>>>>>>>>>>>> peripll1x, video0pll2x, video1pll2x, audio1pll_div2 (this matches >>>>>>>>>>>>> the >>>>>>>>>>>>> registers from DSI_CLK_REG). >>>>>>>>>>>>> In typical pll application PLL_PERI(2X) is suggested for DSI. >>>>>>>>>>>>> Allwinner uboot sets the source in DSI_CLK_REG to 001 >>>>>>>>>>>>> (PLL_PERI(1x) and the >>>>>>>>>>>>> Factor to 0011 (4) >>>>>>>>>>>>> >>>>>>>>>>>>> I think the routing through TCON TOP is something that is done >>>>>>>>>>>>> in the kernel to make it fit into the scheme, but in hardware its >>>>>>>>>>>>> not >>>>>>>>>>>>> relevant? >>>>>>>>>>>>> >>>>>>>>>>>>> This is the output of /sys/kernel/debug/clk/clk_summary >>>>>>>>>>>>> (shortened) >>>>>>>>>>>>> enable prepare protect >>>>>>>>>>>>> duty hardware >>>>>>>>>>>>> clock count count count >>>>>>>>>>>>> rate accuracy phase cycle enable >>>>>>>>>>>>> >>>>>>>>>>>>> ------------------------------------------------------------------------------------------------------- >>>>>>>>>>>>> iosc 1 1 0 >>>>>>>>>>>>> 16000000 300000000 0 50000 Y >>>>>>>>>>>>> iosc-32k 1 1 0 >>>>>>>>>>>>> 31250 300000000 0 50000 Y >>>>>>>>>>>>> osc32k 1 1 0 >>>>>>>>>>>>> 31250 300000000 0 50000 Y >>>>>>>>>>>>> hdmi-cec 0 0 0 >>>>>>>>>>>>> 31250 300000000 0 50000 N >>>>>>>>>>>>> r-ir-rx 0 0 0 >>>>>>>>>>>>> 31250 300000000 0 50000 N >>>>>>>>>>>>> rtc-32k 1 1 0 >>>>>>>>>>>>> 31250 300000000 0 50000 Y >>>>>>>>>>>>> osc32k-fanout 0 0 0 >>>>>>>>>>>>> 31250 300000000 0 50000 N >>>>>>>>>>>>> dcxo 10 10 2 >>>>>>>>>>>>> 24000000 0 0 50000 Y >>>>>>>>>>>>> pll-ve 0 0 0 >>>>>>>>>>>>> 432000000 0 0 50000 N >>>>>>>>>>>>> ve 0 0 0 >>>>>>>>>>>>> 432000000 0 0 50000 N >>>>>>>>>>>>> pll-video1-4x 0 0 0 >>>>>>>>>>>>> 1188000000 0 0 50000 N >>>>>>>>>>>>> pll-video1 0 0 0 >>>>>>>>>>>>> 297000000 0 0 50000 Y >>>>>>>>>>>>> pll-video1-2x 0 0 0 >>>>>>>>>>>>> 594000000 0 0 50000 Y >>>>>>>>>>>>> pll-video0-4x 2 2 1 >>>>>>>>>>>>> 864000000 0 0 50000 Y >>>>>>>>>>>>> de 3 3 0 >>>>>>>>>>>>> 216000000 0 0 50000 Y >>>>>>>>>>>>> wb-div 0 0 0 >>>>>>>>>>>>> 216000000 0 0 50000 Y >>>>>>>>>>>>> wb 0 0 0 >>>>>>>>>>>>> 216000000 0 0 50000 N >>>>>>>>>>>>> mixer1-div 1 1 0 >>>>>>>>>>>>> 216000000 0 0 50000 Y >>>>>>>>>>>>> mixer1 1 1 0 >>>>>>>>>>>>> 216000000 0 0 50000 Y >>>>>>>>>>>>> mixer0-div 1 1 0 >>>>>>>>>>>>> 216000000 0 0 50000 Y >>>>>>>>>>>>> mixer0 1 1 0 >>>>>>>>>>>>> 216000000 0 0 50000 Y >>>>>>>>>>>>> pll-video0 1 1 1 >>>>>>>>>>>>> 216000000 0 0 50000 Y >>>>>>>>>>>>> fanout-27M 0 0 0 >>>>>>>>>>>>> 216000000 0 0 50000 N >>>>>>>>>>>>> tve 0 0 0 >>>>>>>>>>>>> 216000000 0 0 50000 N >>>>>>>>>>>>> tcon-tv 0 0 0 >>>>>>>>>>>>> 216000000 0 0 50000 N >>>>>>>>>>>>> tcon-top-tv0 0 0 0 >>>>>>>>>>>>> 216000000 0 0 50000 N >>>>>>>>>>>>> tcon-lcd0 2 2 1 >>>>>>>>>>>>> 216000000 0 0 50000 Y >>>>>>>>>>>>> tcon-pixel-clock 1 1 1 >>>>>>>>>>>>> 54000000 0 0 50000 Y >>>>>>>>>>>>> tcon-top-dsi 0 0 0 >>>>>>>>>>>>> 216000000 0 0 50000 N >>>>>>>>>>>>> pll-video0-2x 0 0 0 >>>>>>>>>>>>> 432000000 0 0 50000 Y >>>>>>>>>>>>> pll-periph0-4x 1 1 1 >>>>>>>>>>>>> 2400000000 0 0 50000 Y >>>>>>>>>>>>> pll-periph0-800M 0 0 0 >>>>>>>>>>>>> 800000000 0 0 50000 Y >>>>>>>>>>>>> pll-periph0-2x 1 1 1 >>>>>>>>>>>>> 1200000000 0 0 50000 Y >>>>>>>>>>>>> fanout-32k 0 0 0 >>>>>>>>>>>>> 32768 0 0 50000 N >>>>>>>>>>>>> fanout2 0 0 0 >>>>>>>>>>>>> 32768 0 0 50000 N >>>>>>>>>>>>> fanout1 0 0 0 >>>>>>>>>>>>> 32768 0 0 50000 N >>>>>>>>>>>>> fanout0 0 0 0 >>>>>>>>>>>>> 32768 0 0 50000 N >>>>>>>>>>>>> fanout-16M 0 0 0 >>>>>>>>>>>>> 16000000 0 0 50000 N >>>>>>>>>>>>> csi-top 0 0 0 >>>>>>>>>>>>> 1200000000 0 0 50000 N >>>>>>>>>>>>> hdmi-cec-32k 0 0 0 >>>>>>>>>>>>> 32768 0 0 50000 N >>>>>>>>>>>>> ce 0 0 0 >>>>>>>>>>>>> 300000000 0 0 50000 N >>>>>>>>>>>>> g2d 0 0 0 >>>>>>>>>>>>> 1200000000 0 0 50000 N >>>>>>>>>>>>> di 0 0 0 >>>>>>>>>>>>> 1200000000 0 0 50000 N >>>>>>>>>>>>> pll-periph0-div3 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> pll-periph0 5 5 1 >>>>>>>>>>>>> 600000000 0 0 50000 Y >>>>>>>>>>>>> mmc0 0 0 0 >>>>>>>>>>>>> 50000000 0 0 50000 N >>>>>>>>>>>>> mipi-dsi 2 2 1 >>>>>>>>>>>>> 150000000 0 0 50000 Y >>>>>>>>>>>>> fanout-25M 0 0 0 >>>>>>>>>>>>> 25000000 0 0 50000 N >>>>>>>>>>>>> usb-ohci1 2 2 0 >>>>>>>>>>>>> 12000000 0 0 50000 Y >>>>>>>>>>>>> usb-ohci0 2 2 0 >>>>>>>>>>>>> 12000000 0 0 50000 Y >>>>>>>>>>>>> spdif-rx 0 0 0 >>>>>>>>>>>>> 600000000 0 0 50000 N >>>>>>>>>>>>> emac-25M 0 0 0 >>>>>>>>>>>>> 25000000 0 0 50000 N >>>>>>>>>>>>> apb0 1 1 0 >>>>>>>>>>>>> 100000000 0 0 50000 Y >>>>>>>>>>>>> fanout-pclk 0 0 0 >>>>>>>>>>>>> 100000000 0 0 50000 N >>>>>>>>>>>>> bus-tzma 0 0 0 >>>>>>>>>>>>> 100000000 0 0 50000 N >>>>>>>>>>>>> bus-tpadc 0 0 0 >>>>>>>>>>>>> 100000000 0 0 50000 N >>>>>>>>>>>>> bus-lradc 0 0 0 >>>>>>>>>>>>> 100000000 0 0 50000 N >>>>>>>>>>>>> bus-audio 0 0 0 >>>>>>>>>>>>> 100000000 0 0 50000 N >>>>>>>>>>>>> bus-dmic 0 0 0 >>>>>>>>>>>>> 100000000 0 0 50000 N >>>>>>>>>>>>> bus-spdif 0 0 0 >>>>>>>>>>>>> 100000000 0 0 50000 N >>>>>>>>>>>>> bus-i2s2 0 0 0 >>>>>>>>>>>>> 100000000 0 0 50000 N >>>>>>>>>>>>> bus-i2s1 0 0 0 >>>>>>>>>>>>> 100000000 0 0 50000 N >>>>>>>>>>>>> bus-i2s0 0 0 0 >>>>>>>>>>>>> 100000000 0 0 50000 N >>>>>>>>>>>>> bus-ths 0 0 0 >>>>>>>>>>>>> 100000000 0 0 50000 N >>>>>>>>>>>>> bus-gpadc 0 0 0 >>>>>>>>>>>>> 100000000 0 0 50000 N >>>>>>>>>>>>> bus-ir-tx 0 0 0 >>>>>>>>>>>>> 100000000 0 0 50000 N >>>>>>>>>>>>> bus-iommu 0 0 0 >>>>>>>>>>>>> 100000000 0 0 50000 N >>>>>>>>>>>>> bus-pwm 0 0 0 >>>>>>>>>>>>> 100000000 0 0 50000 N >>>>>>>>>>>>> psi-ahb 13 14 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> bus-riscv-cfg 1 1 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> bus-dsp-cfg 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-csi 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-ledc 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-tvd 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-tvd-top 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-tve 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-tve-top 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-tcon-tv 1 1 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> bus-tcon-lcd0 1 1 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> bus-mipi-dsi 0 2 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-hdmi 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-dpss-top 1 1 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> bus-otg 1 1 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> bus-ehci1 1 1 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> bus-ehci0 1 1 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> bus-ohci1 2 2 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> bus-ohci0 2 2 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> bus-emac 1 1 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> bus-spi1 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-spi0 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-mmc2 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-mmc1 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-mmc0 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-dram 1 1 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> bus-dbg 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-hstimer 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-spinlock 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-msgbox2 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-msgbox1 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-msgbox0 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-dma 1 1 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> bus-ve 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-ce 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-g2d 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-di 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-de 3 3 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> bus-wb 0 0 0 >>>>>>>>>>>>> 200000000 0 0 50000 N >>>>>>>>>>>>> bus-mixer1 1 1 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> bus-mixer0 1 1 0 >>>>>>>>>>>>> 200000000 0 0 50000 Y >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> I have pulled a register overview from the working uboot >>>>>>>>>>>>> config. Will try to find some differences and keep you posted. >>>>>>>>>>>>> K. James schrieb am Samstag, 30. Dezember 2023 um 08:05:56 >>>>>>>>>>>>> UTC+1: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hey Jakob, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Ok, nice to know there is someone else working to solve the >>>>>>>>>>>>>> same problem, I saw some other guys having similar issues on the >>>>>>>>>>>>>> IRC >>>>>>>>>>>>>> channel. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Shame it was not something obvious like clock index didn't >>>>>>>>>>>>>> solve it straight away, but Option 1A seems like it could be >>>>>>>>>>>>>> part of the >>>>>>>>>>>>>> solution - at least it was init without error >>>>>>>>>>>>>> >>>>>>>>>>>>>> Pinctrl looks ok too, I don't think it should matter if it's >>>>>>>>>>>>>> under the dsi, dphy or tcon node - and no pinctrl assertion >>>>>>>>>>>>>> errors I >>>>>>>>>>>>>> presume? >>>>>>>>>>>>>> but if you have a chance to scope the lanes might give us >>>>>>>>>>>>>> some indication if we are anything looking correct with the >>>>>>>>>>>>>> working clock >>>>>>>>>>>>>> config. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Worth checking /sys/kernel/debug/clk/clk_summary (with >>>>>>>>>>>>>> debugfs mounted) to see if we can identify the clock sources >>>>>>>>>>>>>> >>>>>>>>>>>>>> I don't think the tcon print out any debug messages at the >>>>>>>>>>>>>> default level, maybe increase the console loglevel and pastebin >>>>>>>>>>>>>> your full >>>>>>>>>>>>>> dmesg? >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Sat, 30 Dec 2023 at 16:42, Jakob L <jakob...@gmail.com> >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hello James and Andrew, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> i was recently also tryting to get mipi dsi to work on >>>>>>>>>>>>>>> T113-S3 - with the same error. >>>>>>>>>>>>>>> These days i was going to compare register setting between >>>>>>>>>>>>>>> mainline kernel and bsp u-boot. >>>>>>>>>>>>>>> But this here came early and i was able to try the options. >>>>>>>>>>>>>>> The LCD i use works on A64 and also works with these timings >>>>>>>>>>>>>>> on allwinner kernel on my T113 board. >>>>>>>>>>>>>>> On T113 the Low power mode of DSI works - i can send the >>>>>>>>>>>>>>> init code. Verified that with oscilloscope and test patterns on >>>>>>>>>>>>>>> LCD. >>>>>>>>>>>>>>> Then the lanes are dead and do not have the right level >>>>>>>>>>>>>>> afair. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I used Kernel 6.5.7. DRM_SUN8I_TCON_TOP is enabled >>>>>>>>>>>>>>> With MangoPi dts as base and the following nodes: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> +&de { >>>>>>>>>>>>>>> + status = "okay"; >>>>>>>>>>>>>>> +}; >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> +&dsi { >>>>>>>>>>>>>>> + pinctrl-0 = <&dsi_4lane_pins>; >>>>>>>>>>>>>>> + pinctrl-names = "default"; >>>>>>>>>>>>>>> + status = "okay"; >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> + panel: panel@0 { >>>>>>>>>>>>>>> + reg = <0>; >>>>>>>>>>>>>>> + compatible = "jnj,7i"; >>>>>>>>>>>>>>> + pinctrl-names = "default"; >>>>>>>>>>>>>>> + reset-gpios = <&pio 3 20 GPIO_ACTIVE_HIGH>; >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> + // pinctrl-0 = <&panel_pin>; >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> + port { >>>>>>>>>>>>>>> + panel_in: endpoint { >>>>>>>>>>>>>>> + remote-endpoint = <&tcon_lcd0_out_dsi>; >>>>>>>>>>>>>>> + }; >>>>>>>>>>>>>>> + }; >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> + }; >>>>>>>>>>>>>>> +}; >>>>>>>>>>>>>>> + >>>>>>>>>>>>>>> +&dphy { >>>>>>>>>>>>>>> + status = "okay"; >>>>>>>>>>>>>>> +}; >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Option2 No Luck >>>>>>>>>>>>>>> @@ -655,7 +655,7 @@ dsi: dsi@5450000 { >>>>>>>>>>>>>>> reg = <0x5450000 0x1000>; >>>>>>>>>>>>>>> interrupts = <SOC_PERIPHERAL_IRQ(92) IRQ_TYPE_LEVEL_HIGH>; >>>>>>>>>>>>>>> clocks = <&ccu CLK_BUS_MIPI_DSI>, >>>>>>>>>>>>>>> - <&tcon_top CLK_TCON_TOP_DSI>; >>>>>>>>>>>>>>> + <&tcon_top 1>; >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I had a feeling option 2 has something to do with it. But >>>>>>>>>>>>>>> the patched kernel shows the same error. >>>>>>>>>>>>>>> sun6i-mipi-dsi 5450000.dsi: Couldn't get the DSI mod clock >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Option1 A >>>>>>>>>>>>>>> @@ -655,7 +655,7 @@ dsi: dsi@5450000 { >>>>>>>>>>>>>>> reg = <0x5450000 0x1000>; >>>>>>>>>>>>>>> interrupts = <SOC_PERIPHERAL_IRQ(92) IRQ_TYPE_LEVEL_HIGH>; >>>>>>>>>>>>>>> clocks = <&ccu CLK_BUS_MIPI_DSI>, >>>>>>>>>>>>>>> - <&tcon_top CLK_TCON_TOP_DSI>; >>>>>>>>>>>>>>> + <&ccu CLK_MIPI_DSI>; >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> With this patch i am no longer getting the modclock error. >>>>>>>>>>>>>>> But i am not getting an image either. >>>>>>>>>>>>>>> Unfortunatly i do not have my oscilloscope with me. So i >>>>>>>>>>>>>>> cannot check if there is a signal, but i guess not. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Option1 B >>>>>>>>>>>>>>> @@ -675,7 +675,7 @@ dphy: phy@5451000 { >>>>>>>>>>>>>>> reg = <0x5451000 0x1000>; >>>>>>>>>>>>>>> interrupts = <SOC_PERIPHERAL_IRQ(92) IRQ_TYPE_LEVEL_HIGH>; >>>>>>>>>>>>>>> clocks = <&ccu CLK_BUS_MIPI_DSI>, >>>>>>>>>>>>>>> - <&ccu CLK_MIPI_DSI>; >>>>>>>>>>>>>>> + <&tcon_top CLK_TCON_TOP_DSI>; >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> This is not ok either. >>>>>>>>>>>>>>> sun6i-mipi-dphy 5451000.phy: Couldn't get the DPHY mod clock >>>>>>>>>>>>>>> sun6i-mipi-dsi 5450000.dsi: Couldn't get the DSI mod clock >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Ultimatly i tested to use Option 2 with Option 1. So both >>>>>>>>>>>>>>> DSI and PHY get the modclock from top, but with the right index. >>>>>>>>>>>>>>> @@ -655,7 +655,7 @@ dsi: dsi@5450000 { >>>>>>>>>>>>>>> reg = <0x5450000 0x1000>; >>>>>>>>>>>>>>> interrupts = <SOC_PERIPHERAL_IRQ(92) IRQ_TYPE_LEVEL_HIGH>; >>>>>>>>>>>>>>> clocks = <&ccu CLK_BUS_MIPI_DSI>, >>>>>>>>>>>>>>> - <&tcon_top CLK_TCON_TOP_DSI>; >>>>>>>>>>>>>>> + <&tcon_top 1>; >>>>>>>>>>>>>>> clock-names = "bus", "mod"; >>>>>>>>>>>>>>> resets = <&ccu RST_BUS_MIPI_DSI>; >>>>>>>>>>>>>>> phys = <&dphy>; >>>>>>>>>>>>>>> @@ -675,7 +675,7 @@ dphy: phy@5451000 { >>>>>>>>>>>>>>> reg = <0x5451000 0x1000>; >>>>>>>>>>>>>>> interrupts = <SOC_PERIPHERAL_IRQ(92) IRQ_TYPE_LEVEL_HIGH>; >>>>>>>>>>>>>>> clocks = <&ccu CLK_BUS_MIPI_DSI>, >>>>>>>>>>>>>>> - <&ccu CLK_MIPI_DSI>; >>>>>>>>>>>>>>> + <&tcon_top 1>; >>>>>>>>>>>>>>> clock-names = "bus", "mod"; >>>>>>>>>>>>>>> resets = <&ccu RST_BUS_MIPI_DSI>; >>>>>>>>>>>>>>> #phy-cells = <0>; >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> sun6i-mipi-dphy 5451000.phy: Couldn't get the DPHY mod clock >>>>>>>>>>>>>>> sun6i-mipi-dsi 5450000.dsi: Couldn't get the DSI mod clock >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> So all options are not working. I will check some more >>>>>>>>>>>>>>> tomorrow. If you have another idea - i would be happy to test., >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> All the best >>>>>>>>>>>>>>> Jakob >>>>>>>>>>>>>>> K. James schrieb am Freitag, 29. Dezember 2023 um 03:48:37 >>>>>>>>>>>>>>> UTC+1: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Apologies for the bad etiquette - I didn't realise the copy >>>>>>>>>>>>>>>> paste from bootlin would put so much HTML. I will strip the >>>>>>>>>>>>>>>> formatting from >>>>>>>>>>>>>>>> my messages in the future. >>>>>>>>>>>>>>>> I am away from my desk and devkit for a few days, but I >>>>>>>>>>>>>>>> think I could have narrowed it down to two issues: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 1) Clock is wrong source - according to the device tree the >>>>>>>>>>>>>>>> mod clock for the DSI interface is from TCON_TOP as you >>>>>>>>>>>>>>>> mention, and from >>>>>>>>>>>>>>>> the patchset "[PATCH v2 1/4] dt-bindings: display: sun6i-dsi: >>>>>>>>>>>>>>>> Fix clock >>>>>>>>>>>>>>>> conditional" >>>>>>>>>>>>>>>> Samuel makes the following point: "the module clock routes >>>>>>>>>>>>>>>> through the TCON TOP". >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> the device tree has the following: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> dsi: dsi@5450000 { >>>>>>>>>>>>>>>> compatible = "allwinner,sun20i-d1-mipi-dsi", >>>>>>>>>>>>>>>> "allwinner,sun50i-a100-mipi-dsi"; >>>>>>>>>>>>>>>> reg = <0x5450000 0x1000>; >>>>>>>>>>>>>>>> interrupts = <SOC_PERIPHERAL_IRQ(92) IRQ_TYPE_LEVEL_HIGH>; >>>>>>>>>>>>>>>> clocks = <&ccu CLK_BUS_MIPI_DSI>, >>>>>>>>>>>>>>>> <&tcon_top CLK_TCON_TOP_DSI>; >>>>>>>>>>>>>>>> clock-names = "bus", "mod"; >>>>>>>>>>>>>>>> resets = <&ccu RST_BUS_MIPI_DSI>; >>>>>>>>>>>>>>>> phys = <&dphy>; >>>>>>>>>>>>>>>> phy-names = "dphy"; >>>>>>>>>>>>>>>> status = "disabled"; >>>>>>>>>>>>>>>> }; >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> dphy: phy@5451000 { >>>>>>>>>>>>>>>> compatible = "allwinner,sun20i-d1-mipi-dphy", >>>>>>>>>>>>>>>> "allwinner,sun50i-a100-mipi-dphy"; >>>>>>>>>>>>>>>> reg = <0x5451000 0x1000>; >>>>>>>>>>>>>>>> interrupts = <SOC_PERIPHERAL_IRQ(92) IRQ_TYPE_LEVEL_HIGH>; >>>>>>>>>>>>>>>> clocks = <&ccu CLK_BUS_MIPI_DSI>, >>>>>>>>>>>>>>>> <&ccu CLK_MIPI_DSI>; >>>>>>>>>>>>>>>> clock-names = "bus", "mod"; >>>>>>>>>>>>>>>> resets = <&ccu RST_BUS_MIPI_DSI>; >>>>>>>>>>>>>>>> #phy-cells = <0>; >>>>>>>>>>>>>>>> }; >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> In this case the DPHY is getting its clock from the CCU >>>>>>>>>>>>>>>> node "CLK_MIPI_DSI" instead of TCON TOP, so one of the >>>>>>>>>>>>>>>> following cases >>>>>>>>>>>>>>>> could be true: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> > The DSI node should get its mod clock from CCU >>>>>>>>>>>>>>>> CLK_MIPI_DSI and the TCON_TOP CLK_TCON_TOP_DSI clock source is >>>>>>>>>>>>>>>> incorrect, or >>>>>>>>>>>>>>>> > The DPHY should get its mod clock from TCON_TOP >>>>>>>>>>>>>>>> CLK_TCON_TOP_DSI and the ccu CLK_MIPI_DSI source is incorrect, >>>>>>>>>>>>>>>> or >>>>>>>>>>>>>>>> > These clock sources are correct and there is some other >>>>>>>>>>>>>>>> issue (such as below). >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 2) alternatively, it could be just a quirk of the D1/T113 >>>>>>>>>>>>>>>> TCON TOP setup. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I also had found this in reviewing the devicetree for this >>>>>>>>>>>>>>>> board - the patchset "[PATCH v2 00/14] drm/sun4i: Allwinner D1 >>>>>>>>>>>>>>>> Display >>>>>>>>>>>>>>>> Engine 2.0 Support" includes the TCON Top Support the >>>>>>>>>>>>>>>> following note: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> [PATCH v2 12/14] drm/sun4i: Add support for D1 TCON TOP >>>>>>>>>>>>>>>> "D1 has a TCON TOP with TCON TV0 and DSI, but no TCON TV1. >>>>>>>>>>>>>>>> This puts theDSI clock name at index 1 in clock-output-names. >>>>>>>>>>>>>>>> Support this >>>>>>>>>>>>>>>> by only incrementing the index for clocks that are actually >>>>>>>>>>>>>>>> supported." >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> But reviewing the DSI node: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> dsi: dsi@5450000 { >>>>>>>>>>>>>>>> compatible = "allwinner,sun20i-d1-mipi-dsi", >>>>>>>>>>>>>>>> "allwinner,sun50i-a100-mipi-dsi"; >>>>>>>>>>>>>>>> reg = <0x5450000 0x1000>; >>>>>>>>>>>>>>>> interrupts = <SOC_PERIPHERAL_IRQ(92) IRQ_TYPE_LEVEL_HIGH>; >>>>>>>>>>>>>>>> clocks = <&ccu CLK_BUS_MIPI_DSI>, >>>>>>>>>>>>>>>> <&tcon_top CLK_TCON_TOP_DSI>; >>>>>>>>>>>>>>>> clock-names = "bus", "mod"; >>>>>>>>>>>>>>>> resets = <&ccu RST_BUS_MIPI_DSI>; >>>>>>>>>>>>>>>> phys = <&dphy>; >>>>>>>>>>>>>>>> phy-names = "dphy"; >>>>>>>>>>>>>>>> status = "disabled"; >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> the definition of CLK_TCON_TOP_DSI comes from >>>>>>>>>>>>>>>> sun8i-tcon-top.h: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> /* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ >>>>>>>>>>>>>>>> /* Copyright (C) 2018 Jernej Skrabec <jernej....@siol.net> >>>>>>>>>>>>>>>> */ >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> #ifndef _DT_BINDINGS_CLOCK_SUN8I_TCON_TOP_H_ >>>>>>>>>>>>>>>> #define _DT_BINDINGS_CLOCK_SUN8I_TCON_TOP_H_ >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> #define CLK_TCON_TOP_TV0 0 >>>>>>>>>>>>>>>> #define CLK_TCON_TOP_TV1 1 >>>>>>>>>>>>>>>> #define CLK_TCON_TOP_DSI 2 >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> #endif /* _DT_BINDINGS_CLOCK_SUN8I_TCON_TOP_H_ */ >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I believe, if that the quirk of the D1s correct to the >>>>>>>>>>>>>>>> above comment, the incorrect clock index is being selected in >>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>> devicetree which would also cause the failure. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> In which case: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> clocks = <&ccu CLK_BUS_MIPI_DSI>, <&tcon_top 1>; >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> clock-names = "bus", "mod"; >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> would be a sufficient fix without updating the >>>>>>>>>>>>>>>> header/source. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Either case as soon as I am back with my devkit, I would >>>>>>>>>>>>>>>> try this for sure and try and see if I can find an answer. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >You can check /sys/kernel/debug/clk/clk_summary (with >>>>>>>>>>>>>>>> debugfs mounted) >>>>>>>>>>>>>>>> >to see what clocks are there and how they are used >>>>>>>>>>>>>>>> Also great information, I will test. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Regards, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Thursday 28 December 2023 at 9:59:09 am UTC+10:30 Andre >>>>>>>>>>>>>>>> Przywara wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Tue, 26 Dec 2023 19:00:58 -0800 (PST) >>>>>>>>>>>>>>>>> "K. James" <kirby.n...@gmail.com> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> please try to avoid HTML email on lists, that makes it >>>>>>>>>>>>>>>>> hard to reply >>>>>>>>>>>>>>>>> inline and messes up the text view - and there is little >>>>>>>>>>>>>>>>> need to provide >>>>>>>>>>>>>>>>> links to every identifier anyway. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> > Hi All, >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > Been working on getting T113-s3 on mainline as I prepare >>>>>>>>>>>>>>>>> to update a >>>>>>>>>>>>>>>>> > project from a v3s. One of the benefits has been the >>>>>>>>>>>>>>>>> ability to move from a >>>>>>>>>>>>>>>>> > 18bit RGB LCD to a MIPI-DSI display, with the interface >>>>>>>>>>>>>>>>> available on the >>>>>>>>>>>>>>>>> > T113-s3 , which has given some better display choices. >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > The DSI driver was on mainline from 6.2, however >>>>>>>>>>>>>>>>> building from sources on >>>>>>>>>>>>>>>>> > init I am getting the following error: >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > *"sun6i-mipi-dsi 5450000.dsi: Couldn't get the DSI mod >>>>>>>>>>>>>>>>> clock"* >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > Its tripping at the following init in sun6i_mipi_dsi.c >>>>>>>>>>>>>>>>> > < >>>>>>>>>>>>>>>>> https://elixir.bootlin.com/linux/v6.6.2/source/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c#L1155> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > if (variant-> has_mod_clk) { >>>>>>>>>>>>>>>>> > dsi->mod_clk = devm_clk_get(dev, "mod"); >>>>>>>>>>>>>>>>> > if (IS_ERR (dsi->mod_clk)) { >>>>>>>>>>>>>>>>> > dev_err(dev, "Couldn't get the DSI mod clock\n"); >>>>>>>>>>>>>>>>> > ret = PTR_ERR(dsi->mod_clk); >>>>>>>>>>>>>>>>> > goto err_attach_clk; >>>>>>>>>>>>>>>>> >} >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> But since this comes from the DSI driver, this refers to >>>>>>>>>>>>>>>>> the DT node of >>>>>>>>>>>>>>>>> the DSI device, not the DE2 clock, doesn't it? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> > The display modclock is registered from the following >>>>>>>>>>>>>>>>> DTS node in >>>>>>>>>>>>>>>>> > sunxi-d1s-t113.dtsi >>>>>>>>>>>>>>>>> > < >>>>>>>>>>>>>>>>> https://elixir.bootlin.com/linux/v6.6.2/source/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi#L641> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > display_clocks: clock-controller@5000000 { >>>>>>>>>>>>>>>>> > compatible = "allwinner,sun20i-d1-de2-clk", >>>>>>>>>>>>>>>>> > "allwinner,sun50i-h5-de2-clk"; >>>>>>>>>>>>>>>>> > reg = <0x5000000 0x10000>; >>>>>>>>>>>>>>>>> > clocks = <&ccu CLK_BUS_DE>, <&ccu CLK_DE>; >>>>>>>>>>>>>>>>> > clock-names = "bus", *"mod"*; >>>>>>>>>>>>>>>>> > resets = <&ccu RST_BUS_DE>; >>>>>>>>>>>>>>>>> > #clock-cells = <1>; >>>>>>>>>>>>>>>>> > #reset-cells = <1>; >>>>>>>>>>>>>>>>> > }; >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> So those are the clocks from: >>>>>>>>>>>>>>>>> dsi: dsi@5450000 { >>>>>>>>>>>>>>>>> ... >>>>>>>>>>>>>>>>> clocks = <&ccu CLK_BUS_MIPI_DSI>, >>>>>>>>>>>>>>>>> <&tcon_top CLK_TCON_TOP_DSI>; >>>>>>>>>>>>>>>>> clock-names = "bus", "mod"; >>>>>>>>>>>>>>>>> ... >>>>>>>>>>>>>>>>> }; >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> So the "mod" clock here points to the tcon_top device, the >>>>>>>>>>>>>>>>> one with the >>>>>>>>>>>>>>>>> "allwinner,sun20i-d1-tcon-top" compatible string. Which is >>>>>>>>>>>>>>>>> implemented >>>>>>>>>>>>>>>>> by drivers/gpu/drm/sun4i/sun8i_tcon_top.c, controlled by >>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>> DRM_SUN8I_TCON_TOP Kconfig symbol. Do you have that >>>>>>>>>>>>>>>>> enabled? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> You can check /sys/kernel/debug/clk/clk_summary (with >>>>>>>>>>>>>>>>> debugfs mounted) >>>>>>>>>>>>>>>>> to see what clocks are there and how they are used. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Cheers, >>>>>>>>>>>>>>>>> Andre >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> > I checked the buildroot config and the CCU for sun8i DE2 >>>>>>>>>>>>>>>>> is being >>>>>>>>>>>>>>>>> > built and included, the registration should occur and >>>>>>>>>>>>>>>>> give an >>>>>>>>>>>>>>>>> > exception if it's not happening: ccu-sun8i-de2.c >>>>>>>>>>>>>>>>> > < >>>>>>>>>>>>>>>>> https://elixir.bootlin.com/linux/v6.6.2/source/drivers/clk/sunxi-ng/ccu-sun8i-de2.c#L263> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > mod_clk < >>>>>>>>>>>>>>>>> https://elixir.bootlin.com/linux/v6.6.2/C/ident/mod_clk> >>>>>>>>>>>>>>>>> = >>>>>>>>>>>>>>>>> > devm_clk_get >>>>>>>>>>>>>>>>> > < >>>>>>>>>>>>>>>>> https://elixir.bootlin.com/linux/v6.6.2/C/ident/devm_clk_get>( >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> > &pdev->dev, "mod"); if (IS_ERR >>>>>>>>>>>>>>>>> > <https://elixir.bootlin.com/linux/v6.6.2/C/ident/IS_ERR>(mod_clk >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> > <https://elixir.bootlin.com/linux/v6.6.2/C/ident/mod_clk>)) >>>>>>>>>>>>>>>>> return >>>>>>>>>>>>>>>>> > dev_err_probe >>>>>>>>>>>>>>>>> > < >>>>>>>>>>>>>>>>> https://elixir.bootlin.com/linux/v6.6.2/C/ident/dev_err_probe>(&pdev->dev, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> > PTR_ERR >>>>>>>>>>>>>>>>> > <https://elixir.bootlin.com/linux/v6.6.2/C/ident/PTR_ERR>(mod_clk >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> > <https://elixir.bootlin.com/linux/v6.6.2/C/ident/mod_clk>), >>>>>>>>>>>>>>>>> "Couldn't >>>>>>>>>>>>>>>>> > get mod clk\n"); >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > ret = clk_prepare_enable >>>>>>>>>>>>>>>>> > < >>>>>>>>>>>>>>>>> https://elixir.bootlin.com/linux/v6.6.2/C/ident/clk_prepare_enable>(mod_clk >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> > <https://elixir.bootlin.com/linux/v6.6.2/C/ident/mod_clk>); >>>>>>>>>>>>>>>>> if (ret) >>>>>>>>>>>>>>>>> > { dev_err >>>>>>>>>>>>>>>>> > <https://elixir.bootlin.com/linux/v6.6.2/C/ident/dev_err>(&pdev->dev >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> > , "Couldn't enable mod clk: %d\n", ret); goto >>>>>>>>>>>>>>>>> err_disable_bus_clk; } >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > I don't see dmesg print any clock errors, but at the >>>>>>>>>>>>>>>>> same time, I >>>>>>>>>>>>>>>>> > understand that linux common clock framework also won't >>>>>>>>>>>>>>>>> print >>>>>>>>>>>>>>>>> > anything by default. >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > I can't see anything in either driver that would cause >>>>>>>>>>>>>>>>> an error other >>>>>>>>>>>>>>>>> > than the clock not existing, if anyone has any ideas - >>>>>>>>>>>>>>>>> i'm all ears. >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > At the moment I am leaning towards the clock-controller; >>>>>>>>>>>>>>>>> Is there a >>>>>>>>>>>>>>>>> > userspace or debug option to check (mod) clock status' >>>>>>>>>>>>>>>>> under the >>>>>>>>>>>>>>>>> > common clock framework? >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> > Thanks >>>>>>>>>>>>>>>>> > >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> You received this message because you are subscribed to a >>>>>>>>>>>>>>> topic in the Google Groups "linux-sunxi" group. >>>>>>>>>>>>>>> To unsubscribe from this topic, visit >>>>>>>>>>>>>>> https://groups.google.com/d/topic/linux-sunxi/HxDBpY5HbbQ/unsubscribe >>>>>>>>>>>>>>> . >>>>>>>>>>>>>>> To unsubscribe from this group and all its topics, send an >>>>>>>>>>>>>>> email to linux-sunxi...@googlegroups.com. >>>>>>>>>>>>>>> To view this discussion on the web, visit >>>>>>>>>>>>>>> https://groups.google.com/d/msgid/linux-sunxi/02e9453d-7335-4499-933b-ac5038e41bbcn%40googlegroups.com >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> <https://groups.google.com/d/msgid/linux-sunxi/02e9453d-7335-4499-933b-ac5038e41bbcn%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>>>>>>>>> . >>>>>>>>>>>>>>> >>>>>>>>>>>>>> -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscr...@googlegroups.com. To view this discussion on the web, visit https://groups.google.com/d/msgid/linux-sunxi/5d7c8282-532f-4ef8-893e-741d93c6373en%40googlegroups.com.