map220v / sm8150-mainline

WIP Mainline kernel for Xiaomi Pad 5
Other
29 stars 15 forks source link

Does the drm suspend/wakeup works? #12

Open catmengi opened 3 months ago

catmengi commented 3 months ago

Does the drm/dsi suspend works, can i suspend my screen and the wakeup it without any crash and fatal for UX bugs. One important question, does hibernate to disk works? Eg, no crashes after resuming from image

map220v commented 3 months ago

Did you remove udelay?

Yes, I reverted this change.

catmengi commented 3 months ago

What difference beetwen GCC_DISP_HF_AXI_CLK and GCC_DISP_AHB_CLK clocks. First used in dsi0/dsi1, 2nd found some whete in nabu dts for android

map220v commented 3 months ago

What difference beetwen GCC_DISP_HF_AXI_CLK and GCC_DISP_AHB_CLK clocks. First used in dsi0/dsi1, 2nd found some whete in nabu dts for android

GCC_DISP_AHB_CLK is always enabled, that is why it's not in sm8150.dtsi on mainline. GCC_DISP_HF_AXI_CLK is enabled by msm_mdss_enable and it's seems also in dpu_runtime_resume

catmengi commented 3 months ago

Does the dsi suspend / wakeup worked before UFS hack? I think that udelay may create some errors because it should fully stop execution of kernel for some amount of time. Is this right? Or you didnt test dsi before "fixing" ufs?

map220v commented 3 months ago

Does the dsi suspend / wakeup worked before UFS hack? I think that udelay may create some errors because it should fully stop execution of kernel for some amount of time. Is this right? Or you didnt test dsi before "fixing" ufs?

No, it didn't worked before that hack, that is why I wrote there "should fix broken UFS on boot and broken DSI on suspend/resume"

catmengi commented 3 months ago

I found DISP_CC_MDSS_EDP_GTC_CLK clock that i don't see used in dts? Maybe screen just missing some clock, like ufs? https://github.com/map220v/sm8150-mainline/blob/nabu-6.7/drivers/clk/qcom/dispcc-sm8250.c#L1157 founded here

map220v commented 3 months ago

I found DISP_CC_MDSS_EDP_GTC_CLK clock that i don't see used in dts? Maybe screen just missing some clock, like ufs? https://github.com/map220v/sm8150-mainline/blob/nabu-6.7/drivers/clk/qcom/dispcc-sm8250.c#L1157 founded here

That DISP_CC_MDSS_EDP_GTC_CLK clock is used for EDP Displays, it's not needed for DSI Display. DSI inits fine on boot without "clk_ignore_unused", so it means that all required clocks already there, maybe order in which clocks disabled is incorrect, that would explain why log says that one dsi clocks stuck in status "on"

catmengi commented 3 months ago

I found DISP_CC_MDSS_EDP_GTC_CLK clock that i don't see used in dts? Maybe screen just missing some clock, like ufs? https://github.com/map220v/sm8150-mainline/blob/nabu-6.7/drivers/clk/qcom/dispcc-sm8250.c#L1157 founded here

That DISP_CC_MDSS_EDP_GTC_CLK clock is used for EDP Displays, it's not needed for DSI Display. DSI inits fine on boot without "clk_ignore_unused", so it means that all required clocks already there, maybe order in which clocks disabled is incorrect, that would explain why log says that one dsi clocks stuck in status "on"

How to see what clock is stuck? How do enable logging of this? And which driver control order of clock disable or this controled by dts?

map220v commented 3 months ago

I found DISP_CC_MDSS_EDP_GTC_CLK clock that i don't see used in dts? Maybe screen just missing some clock, like ufs? https://github.com/map220v/sm8150-mainline/blob/nabu-6.7/drivers/clk/qcom/dispcc-sm8250.c#L1157 founded here

That DISP_CC_MDSS_EDP_GTC_CLK clock is used for EDP Displays, it's not needed for DSI Display. DSI inits fine on boot without "clk_ignore_unused", so it means that all required clocks already there, maybe order in which clocks disabled is incorrect, that would explain why log says that one dsi clocks stuck in status "on"

How to see what clock is stuck? How do enable logging of this? And which driver control order of clock disable or this controled by dts?

It's always enabled, this warning will tell in kernel log(dmesg) https://github.com/map220v/sm8150-mainline/blob/9894da172d3f6433475489d2d3332dd7b437c105/drivers/clk/qcom/clk-branch.c#L86

Drivers find and control clocks by their name specified in "clock-names" in their device node, or they can also bulk enable all clocks in their device node.

catmengi commented 3 months ago

What do you think about latest commits related to dispcc-sm8250 this commit is first of thoose newest commits

map220v commented 3 months ago

What do you think about latest commits related to dispcc-sm8250 this commit is first of thoose newest commits

module_platform_driver uses platform_driver_register that was replaced by it, so this change doesn't change any code behaviours right now. Also we don't have problems with dispcc driver itself, and sm8250 that uses it doesn't have dsi clock issues on dual dsi.

catmengi commented 3 months ago

Well thats may be dts mistake? Wrong clock or missing? Il take a look on xiaomi pad 5 pro dts

catmengi commented 3 months ago

Why sm8150 have other power-domain in dsi: 'power-domains = <&rpmhpd SM8150_MMCX>' while sm8250 and sm8350 have : 'power-domains = <&rpmhpd RPMHPD_MMCX>'? I think SM8150_MMCX is the broken clock.

P.s: on march 23 i can get testing, not just finding info on a laggy phone. Also i will try to extract android dts file, not a damn bunch of unreleated files that android sources have

map220v commented 3 months ago

Why sm8150 have other power-domain in dsi: 'power-domains = <&rpmhpd SM8150_MMCX>' while sm8250 and sm8350 have : 'power-domains = <&rpmhpd RPMHPD_MMCX>'? I think SM8150_MMCX is the broken clock.

P.s: on march 23 i can get testing, not just finding info on a laggy phone. Also i will try to extract android dts file, not a damn bunch of unreleated files that android sources have

SM8150_MMCX is the same power domain as RPMHPD_MMCX, just uses different name for some reason https://github.com/map220v/sm8150-mainline/blob/9894da172d3f6433475489d2d3332dd7b437c105/drivers/pmdomain/qcom/rpmhpd.c#L375 https://github.com/map220v/sm8150-mainline/blob/9894da172d3f6433475489d2d3332dd7b437c105/drivers/pmdomain/qcom/rpmhpd.c#L429

catmengi commented 3 months ago

Well, it will be better to make it standart look. But how to get original xiaomi dsi definition from devicetree? Tried to search but cant find anything 😔

catmengi commented 3 months ago

I found interesting commit in mainline: https://github.com/torvalds/linux/commit/617de4ce7b1c4b41c1316e493d4717cd2f208def

map220v commented 3 months ago

I found interesting commit in mainline: torvalds/linux@617de4c

Looks like it will fix our issue, sm8250 had this "required-opps" for long time, which explains why there is no issues on elish.

catmengi commented 3 months ago

I found interesting commit in mainline: torvalds/linux@617de4c

Looks like it will fix our issue, sm8250 had this "required-opps" for long time, which explains why there is no issues on elish.

Can we just update kernel to 6.8 from gregh repo to fix our issues? First thing that i will do when finally unlock my tablet is test this kernel, and also, can you add append_dtb config to defconfig?

map220v commented 3 months ago

I found interesting commit in mainline: torvalds/linux@617de4c

Looks like it will fix our issue, sm8250 had this "required-opps" for long time, which explains why there is no issues on elish.

Can we just update kernel to 6.8 from gregh repo to fix our issues? First thing that i will do when finally unlock my tablet is test this kernel, and also, can you add append_dtb config to defconfig?

I will rebase kernel to 6.8, I will remove all these clock hacks and also uart and bluetooth hack.

catmengi commented 3 months ago

Not sure about uart and bt. I will test it soon and say you about bluetooth, but i cant say anything about uart, because i cant dissamble it. Also i will add pm8150 RTC and cover detect from @maverickjb

map220v commented 3 months ago

I pushed nabu-6.8 branch, I hope it still boots.

catmengi commented 3 months ago

I pushed nabu-6.8 branch, I hope it still boots.

i too. Sorry but can only test it on march 23. Maybe you push it on xda? This may create some activity and someone who want to test it

catmengi commented 3 months ago

Can you build new kernel with CONFIG_ARM_APPENDED_DTB=y ? I'l make android boot.img myself

map220v commented 3 months ago

Can you build new kernel with CONFIG_ARM_APPENDED_DTB=y ? I'l make android boot.img myself

CONFIG_ARM_APPENDED_DTB doesn't exist for arm64, instead use: cat arch/arm64/boot/Image.gz arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dtb > bootimg-kernel

catmengi commented 3 months ago

Can you build new kernel with CONFIG_ARM_APPENDED_DTB=y ? I'l make android boot.img myself

CONFIG_ARM_APPENDED_DTB doesn't exist for arm64, instead use: cat arch/arm64/boot/Image.gz arch/arm64/boot/dts/qcom/sm8150-xiaomi-nabu.dtb > bootimg-kernel

Well, can you just compile kernel for me?, still cant do it myself due technical reasons

map220v commented 3 months ago

bootimg-kernel.zip

catmengi commented 3 months ago

Lesgar said that your kernel(he builed itself) have black screen. Il give him a boot.img kernel maybe it will work. Maybe this because of removed framebuffer node?

catmengi commented 3 months ago

bootimg-kernel.zip

Does it include dtb? I dont see any dtb in archive

catmengi commented 3 months ago

Can old dtb in bootloader (efi, dtb from @maverickjb) affect boot of kernel? I think that removal of FB may affect blackscreen, i can say more accurate on march 23

catmengi commented 3 months ago

According to mkbootimg docs, dtb should be included into kernel in different way: mkbootimg --dtb [file]. Pls build me a kernel, and send me kernel and dtb. Try to post it on xda again. Ubuntu thread is kinda 'dead'

map220v commented 3 months ago

Can old dtb in bootloader (efi, dtb from @maverickjb) affect boot of kernel? I think that removal of FB may affect blackscreen, i can say more accurate on march 23

Old and new rengade uefi's don't append dtb when booting linux as efi app. Blackscreen means that dsi doesn't work, I would need logs.

According to mkbootimg docs, dtb should be included into kernel in different way: mkbootimg --dtb [file]. Pls build me a kernel, and send me kernel and dtb. Try to post it on xda again. Ubuntu thread is kinda 'dead'

LinuxLoader.efi in abl can load appended dtb at the end of kernel image only when header_version 0 is used for boot.img

map220v commented 3 months ago

kernel&dtb.zip

catmengi commented 3 months ago

Can old dtb in bootloader (efi, dtb from @maverickjb) affect boot of kernel? I think that removal of FB may affect blackscreen, i can say more accurate on march 23

Old and new rengade uefi's don't append dtb when booting linux as efi app. Blackscreen means that dsi doesn't work, I would need logs.

According to mkbootimg docs, dtb should be included into kernel in different way: mkbootimg --dtb [file]. Pls build me a kernel, and send me kernel and dtb. Try to post it on xda again. Ubuntu thread is kinda 'dead'

LinuxLoader.efi in abl can load appended dtb at the end of kernel image only when header_version 0 is used for boot.img

@TheMagicMojoMan had this issue(black screen )with working arch linux installation on linux 6.1.10

map220v commented 3 months ago

Can old dtb in bootloader (efi, dtb from @maverickjb) affect boot of kernel? I think that removal of FB may affect blackscreen, i can say more accurate on march 23

Old and new rengade uefi's don't append dtb when booting linux as efi app. Blackscreen means that dsi doesn't work, I would need logs.

According to mkbootimg docs, dtb should be included into kernel in different way: mkbootimg --dtb [file]. Pls build me a kernel, and send me kernel and dtb. Try to post it on xda again. Ubuntu thread is kinda 'dead'

LinuxLoader.efi in abl can load appended dtb at the end of kernel image only when header_version 0 is used for boot.img

@TheMagicMojoMan had this issue(black screen )with working arch linux installation on linux 6.1.10

Maybe some display/gpu releated stuff is now built as modules, I will check 6.8 defconfig for changes. Modules for 6.8 kernel can be found here(ubuntu only): https://github.com/map220v/ubuntu-xiaomi-nabu/actions/runs/8360994443/artifacts/1342984590

catmengi commented 3 months ago

Can old dtb in bootloader (efi, dtb from @maverickjb) affect boot of kernel? I think that removal of FB may affect blackscreen, i can say more accurate on march 23

Old and new rengade uefi's don't append dtb when booting linux as efi app. Blackscreen means that dsi doesn't work, I would need logs.

Well, grub2 is booting kernel, may be he just forgot to add devicetree in grub?

catmengi commented 3 months ago

Can old dtb in bootloader (efi, dtb from @maverickjb) affect boot of kernel? I think that removal of FB may affect blackscreen, i can say more accurate on march 23

Old and new rengade uefi's don't append dtb when booting linux as efi app. Blackscreen means that dsi doesn't work, I would need logs.

According to mkbootimg docs, dtb should be included into kernel in different way: mkbootimg --dtb [file]. Pls build me a kernel, and send me kernel and dtb. Try to post it on xda again. Ubuntu thread is kinda 'dead'

LinuxLoader.efi in abl can load appended dtb at the end of kernel image only when header_version 0 is used for boot.img

@TheMagicMojoMan had this issue(black screen )with working arch linux installation on linux 6.1.10

Maybe some display/gpu releated stuff is now built as modules, I will check 6.8 defconfig for changes. Modules for 6.8 kernel can be found here(ubuntu only): https://github.com/map220v/ubuntu-xiaomi-nabu/actions/runs/8360994443/artifacts/1342984590

How deals are going?

map220v commented 3 months ago

Can old dtb in bootloader (efi, dtb from @maverickjb) affect boot of kernel? I think that removal of FB may affect blackscreen, i can say more accurate on march 23

Old and new rengade uefi's don't append dtb when booting linux as efi app. Blackscreen means that dsi doesn't work, I would need logs.

According to mkbootimg docs, dtb should be included into kernel in different way: mkbootimg --dtb [file]. Pls build me a kernel, and send me kernel and dtb. Try to post it on xda again. Ubuntu thread is kinda 'dead'

LinuxLoader.efi in abl can load appended dtb at the end of kernel image only when header_version 0 is used for boot.img

@TheMagicMojoMan had this issue(black screen )with working arch linux installation on linux 6.1.10

Maybe some display/gpu releated stuff is now built as modules, I will check 6.8 defconfig for changes. Modules for 6.8 kernel can be found here(ubuntu only): https://github.com/map220v/ubuntu-xiaomi-nabu/actions/runs/8360994443/artifacts/1342984590

How deals are going?

I checked 6.8 defconfig changes and it's pretty much the same, so all required dsi/gpu drivers should still be builtin instead of modules.

catmengi commented 3 months ago

Can old dtb in bootloader (efi, dtb from @maverickjb) affect boot of kernel? I think that removal of FB may affect blackscreen, i can say more accurate on march 23

Old and new rengade uefi's don't append dtb when booting linux as efi app. Blackscreen means that dsi doesn't work, I would need logs.

According to mkbootimg docs, dtb should be included into kernel in different way: mkbootimg --dtb [file]. Pls build me a kernel, and send me kernel and dtb. Try to post it on xda again. Ubuntu thread is kinda 'dead'

LinuxLoader.efi in abl can load appended dtb at the end of kernel image only when header_version 0 is used for boot.img

@TheMagicMojoMan had this issue(black screen )with working arch linux installation on linux 6.1.10

Maybe some display/gpu releated stuff is now built as modules, I will check 6.8 defconfig for changes. Modules for 6.8 kernel can be found here(ubuntu only): https://github.com/map220v/ubuntu-xiaomi-nabu/actions/runs/8360994443/artifacts/1342984590

How deals are going?

I checked 6.8 defconfig changes and it's pretty much the same, so all required dsi/gpu drivers should still be builtin instead of modules.

I think he just messed up with bootloader or dtb in grub. 2 days and i can test it. But if screen wont work how to i install ssh-server and connect it to the network? But i think kernel should boot because there arent any big changes related to display driver. Now we need just wait for me or try to get help from XDA users. I'l send you my results when i be able to do this.

map220v commented 3 months ago

Can old dtb in bootloader (efi, dtb from @maverickjb) affect boot of kernel? I think that removal of FB may affect blackscreen, i can say more accurate on march 23

Old and new rengade uefi's don't append dtb when booting linux as efi app. Blackscreen means that dsi doesn't work, I would need logs.

According to mkbootimg docs, dtb should be included into kernel in different way: mkbootimg --dtb [file]. Pls build me a kernel, and send me kernel and dtb. Try to post it on xda again. Ubuntu thread is kinda 'dead'

LinuxLoader.efi in abl can load appended dtb at the end of kernel image only when header_version 0 is used for boot.img

@TheMagicMojoMan had this issue(black screen )with working arch linux installation on linux 6.1.10

Maybe some display/gpu releated stuff is now built as modules, I will check 6.8 defconfig for changes. Modules for 6.8 kernel can be found here(ubuntu only): https://github.com/map220v/ubuntu-xiaomi-nabu/actions/runs/8360994443/artifacts/1342984590

How deals are going?

I checked 6.8 defconfig changes and it's pretty much the same, so all required dsi/gpu drivers should still be builtin instead of modules.

I think he just messed up with bootloader or dtb in grub. 2 days and i can test it. But if screen wont work how to i install ssh-server and connect it to the network? But i think kernel should boot because there arent any big changes related to display driver. Now we need just wait for me or try to get help from XDA users. I'l send you my results when i be able to do this.

ssh server should be already installed and enabled in ubuntu's roorfs, you can connect using usb rndis by enabling this config "CONFIG_USB_ETH" and adding this to kernel cmdline "ip=192.168.100.1::192.168.100.2:255.255.255.0::usb0:on", ip address for connection is 192.168.100.1

map220v commented 3 months ago

Check sm8150.dtsi, i saw that dispcc and dsi nodes are DISABLED

It's normal sm8150.dtsi is imported by sm8150-xiaomi-nabu.dts and status for these nodes is overwritten there.

catmengi commented 3 months ago

Can old dtb in bootloader (efi, dtb from @maverickjb) affect boot of kernel? I think that removal of FB may affect blackscreen, i can say more accurate on march 23

Old and new rengade uefi's don't append dtb when booting linux as efi app. Blackscreen means that dsi doesn't work, I would need logs.

According to mkbootimg docs, dtb should be included into kernel in different way: mkbootimg --dtb [file]. Pls build me a kernel, and send me kernel and dtb. Try to post it on xda again. Ubuntu thread is kinda 'dead'

LinuxLoader.efi in abl can load appended dtb at the end of kernel image only when header_version 0 is used for boot.img

@TheMagicMojoMan had this issue(black screen )with working arch linux installation on linux 6.1.10

Maybe some display/gpu releated stuff is now built as modules, I will check 6.8 defconfig for changes. Modules for 6.8 kernel can be found here(ubuntu only): https://github.com/map220v/ubuntu-xiaomi-nabu/actions/runs/8360994443/artifacts/1342984590

How deals are going?

I checked 6.8 defconfig changes and it's pretty much the same, so all required dsi/gpu drivers should still be builtin instead of modules.

I think he just messed up with bootloader or dtb in grub. 2 days and i can test it. But if screen wont work how to i install ssh-server and connect it to the network? But i think kernel should boot because there arent any big changes related to display driver. Now we need just wait for me or try to get help from XDA users. I'l send you my results when i be able to do this.

ssh server should be already installed and enabled in ubuntu's roorfs, you can connect using usb rndis by enabling this config "CONFIG_USB_ETH" and adding this to kernel cmdline "ip=192.168.100.1::192.168.100.2:255.255.255.0::usb0:on", ip address for connection is 192.168.100.1

How can i made my pc to serve network connection to tablet?

map220v commented 3 months ago

Can old dtb in bootloader (efi, dtb from @maverickjb) affect boot of kernel? I think that removal of FB may affect blackscreen, i can say more accurate on march 23

Old and new rengade uefi's don't append dtb when booting linux as efi app. Blackscreen means that dsi doesn't work, I would need logs.

According to mkbootimg docs, dtb should be included into kernel in different way: mkbootimg --dtb [file]. Pls build me a kernel, and send me kernel and dtb. Try to post it on xda again. Ubuntu thread is kinda 'dead'

LinuxLoader.efi in abl can load appended dtb at the end of kernel image only when header_version 0 is used for boot.img

@TheMagicMojoMan had this issue(black screen )with working arch linux installation on linux 6.1.10

Maybe some display/gpu releated stuff is now built as modules, I will check 6.8 defconfig for changes. Modules for 6.8 kernel can be found here(ubuntu only): https://github.com/map220v/ubuntu-xiaomi-nabu/actions/runs/8360994443/artifacts/1342984590

How deals are going?

I checked 6.8 defconfig changes and it's pretty much the same, so all required dsi/gpu drivers should still be builtin instead of modules.

I think he just messed up with bootloader or dtb in grub. 2 days and i can test it. But if screen wont work how to i install ssh-server and connect it to the network? But i think kernel should boot because there arent any big changes related to display driver. Now we need just wait for me or try to get help from XDA users. I'l send you my results when i be able to do this.

ssh server should be already installed and enabled in ubuntu's roorfs, you can connect using usb rndis by enabling this config "CONFIG_USB_ETH" and adding this to kernel cmdline "ip=192.168.100.1::192.168.100.2:255.255.255.0::usb0:on", ip address for connection is 192.168.100.1

How can i made my pc to serve network connection to tablet?

Tablet will serve network for PC using rndis protocol.

catmengi commented 3 months ago

Houston we have a problem,linux dropped RNDIS now we only have CDC

map220v commented 3 months ago

Houston we have a problem,linux dropped RNDIS now we only have CDC

Never tried CDC, but I guess it should work same way, after enabling CONFIG_USB_ETH in menuconfig, disable rndis inside if it's not disabled.

catmengi commented 3 months ago

this commit possibly create black screen error, can you revert it, and send me new dtb?

map220v commented 3 months ago

this commit possibly create black screen error, can you revert it, and send me new dtb?

I will revert that, also because simple framebuffer starts earlier than msm fb(maybe there is panic before dsi starts)

catmengi commented 3 months ago

this commit possibly create black screen error, can you revert it, and send me new dtb?

I will revert that, also because simple framebuffer starts earlier than msm fb(maybe there is panic before dsi starts)

Cant say anything about panic(no logs, no screenshots). Does simple-framebuffef will output image before dsi start?

map220v commented 3 months ago

sm8150-xiaomi-nabu.zip

this commit possibly create black screen error, can you revert it, and send me new dtb?

I will revert that, also because simple framebuffer starts earlier than msm fb(maybe there is panic before dsi starts)

Cant say anything about panic(no logs, no screenshots). Does simple-framebuffef will output image before dsi start?

Yes, it starts before dsi

catmengi commented 3 months ago

Can you refert framebuffer commit in main branch?

map220v commented 3 months ago

Can you refert framebuffer commit in main branch?

Yes, I pushed changes.