Git Product home page Git Product logo

msm8953-mainline / linux Goto Github PK

View Code? Open in Web Editor NEW

This project forked from msm8916-mainline/linux

104.0 104.0 58.0 4.88 GB

Linux mainline kernel with WIP patches for msm8953 devices

License: Other

Makefile 0.20% Roff 0.01% C 98.30% Assembly 0.73% C++ 0.01% Shell 0.36% Perl 0.10% Awk 0.01% Python 0.19% sed 0.01% Yacc 0.01% Lex 0.01% UnrealScript 0.01% Gherkin 0.01% XS 0.01% Clojure 0.01% M4 0.01% SmPL 0.01% Raku 0.01% Rust 0.06%
kernel linux mainline msm8953 qcom qualcomm sdm450 sdm625 sdm626 sdm632 snapdragon wip

linux's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

linux's Issues

RedMi Note 4X (Mido) after changing the screen cannot be displayed

Some mido that have had their screen modules replaced cannot be displayed,these panel uses an unknown chip which can be driven normally under Android, but cannot be driven under Linux.The backlight can be turned on or off normally under Linux, but the image cannot be displayed.
微信圖片_20240131104623

Patches for linux-next ()

This is a collection of the patches for msm8953 support in linux-next (currently for linux-next-20230616, but rebasing them to newer version was without problems so far, I started at linux-next-20230609). It would be nicer if I could just push them to a tree, but unfortunately it seems I cannot fork torvalds/linux, because I already have forked msm8953-mainline/linux (which is itself a fork of msm8916-mainline/linux which is a fork of torvalds linux).
GPU patches:
0001-iommu-qcom-Use-the-asid-read-from-device-tree-if-spe.patch.txt
0002-iommu-qcom-Properly-reset-the-IOMMU-context.patch.txt
0003-iommu-qcom-Index-contexts-by-asid-number-to-allow-as.patch.txt
0004-iommu-qcom-Add-support-for-QSMMUv2-and-QSMMU-500-sec.patch.txt
0005-iommu-qcom-Add-support-for-AArch64-IOMMU-pagetables.patch.txt
0006-fixup-iommu-qcom-Add-support-for-AArch64-IOMMU-paget.patch.txt
0007-iommu-qcom-avoid-bouncing-power-domain.patch.txt
0008-iommu-qcom-implement-adreno_priv-interface.patch.txt
0009-iommu-qcom-emulate-IDENTITY-domain-for-display-durin.patch.txt
0010-iommu-qcom-restore-IOMMU-state-if-needed.patch.txt
0011-iommu-qcom-defer-probe-until-scm-is-available.patch.txt
0012-MSM8953-drm-panel-Generate-using-linux-mdss-dsi-pane.patch.txt
0013-squash-MSM8953-drm-panel-Generate-using-linux-mdss-d.patch.txt
0014-drm-panel-fairphone-fp3-hx83112b-Swab-brightness-val.patch.txt
0015-squash-MSM8953-drm-panel-Generate-using-linux-mdss-d.patch.txt
0016-arm64-dts-qcom-msm8953-add-IOMMUs.patch.txt
0017-arm64-dts-qcom-msm8953-add-GPU.patch.txt
0018-arm64-dts-qcom-sdm632-fairphone-fp3-add-display.patch.txt
0019-fixup-arm64-dts-qcom-sdm632-fairphone-fp3-add-displa.patch.txt
0020-interconnect-icc-rpm-Add-option-to-get-regmap-from-p.patch.txt
0021-dt-bindings-interconnect-Add-bindings-for-Qualcomm-M.patch.txt
0022-arm64-dts-qcom-msm8953-add-interconnect.patch.txt
0023-interconnect-qcom-Add-MSM8953-interconnect-provider-.patch.txt
0024-Revert-drm-msm-dsi-Stop-unconditionally-powering-up-.patch.txt
0025-arm64-dts-qcom-msm8953-add-GPU-operating-points.patch.txt
0026-clk-qcom-gcc-msm8953-don-t-cache-rate-for-dsi-clocks.patch.txt
0027-clk-qcom-rcg2-round-parent-rate-when-SET_RATE_PARENT.patch.txt
WLAN patches:
0028-arm64-dts-qcom-sdm632-fairphone-fp3-enable-wcnss-rem.patch.txt
0029-net-wireless-wcn36xx-fix-Bad-TX-complete-indication-.patch.txt
modem (named mpss in linux-next) patches:
0030-remoteproc-qcom_q6v5_mss-Support-alternate-msm8953-c.patch.txt
0031-arm64-dts-qcom-sdm632-fairphone-fp3-enable-mpss.patch.txt
IPA v2 patches:
0032-dmaengine-Add-support-for-immediate-commands-in-the-.patch.txt
0033-dmaengine-qcom-bam_dma-Add-support-for-immediate-com.patch.txt
0034-net-ipa-Define-2.-versions.patch.txt
0035-net-ipa-Rename-gsi_ee_id-to-dma_ee_id.patch.txt
0036-TODO-net-ipa-Add-IPA-v2.-register-definitions.patch.txt
0037-net-ipa-Move-GSI-specific-functions-to-an-ops-struct.patch.txt
0038-net-ipa-Move-gsi_channel_tre_max-definition-to-gsi_p.patch.txt
0039-net-ipa-gsi.h-Rename-gsi-to-ipa_dma.patch.txt
0040-net-ipa-gsi_private.h-Rename-gsi-to-ipa_dma.patch.txt
0041-net-ipa-gsi_trans-Rename-gsi-to-ipa_dma.patch.txt
0042-net-ipa-Add-timeout-for-ipa_cmd_pipeline_clear_wait.patch.txt
0043-net-ipa-Add-support-for-using-BAM-as-a-DMA-transport.patch.txt
0044-TODO-net-ipa-Add-support-for-IPA-v2.x-commands-and-t.patch.txt
0045-FIXME-net-ipa-Add-support-for-IPA-v2.x-endpoints.patch.txt
0046-net-ipa-Add-support-for-IPA-v2.x-memory-map.patch.txt
0047-FIXME-net-ipa-Add-support-for-IPA-v2.x-in-the-driver.patch.txt
0048-net-ipa-Add-support-for-IPA-v2-microcontroller.patch.txt
0049-net-ipa-Add-IPA-v2.6L-initialization-sequence-suppor.patch.txt
0050-net-ipa-Add-support-for-IPA-v2-validation.patch.txt
0051-net-ipa-Add-hw-config-describing-IPA-v2.x-hardware.patch.txt
0052-net-ipa-Set-invalid-regions-for-2.6L-as-not-required.patch.txt
0053-net-ipa-Enable-support-for-IPA-v2.patch.txt
0054-dt-bindings-net-qcom-ipa-Add-support-for-MSM8953-and.patch.txt
0055-arm64-dts-qcom-msm8996-Add-IPA.patch.txt
0056-arm64-dts-qcom-msm8996-xiaomi-common-Enable-IPA.patch.txt
0057-WIP-net-ipa-Add-IPA-v2.-opcodes.patch.txt
0058-WIP-net-ipa-Remove-pad_align-from-IPA-v2.-AP_LAN_RX-.patch.txt
0059-arm64-dts-qcom-msm8953-add-IPA-and-IPA_BAM-nodes.patch.txt
0060-net-ipa-extend-version-checks-in-ipa_interrupt.c-to-.patch.txt
0061-net-ipa-Fix-memory-initialisation.patch.txt
0062-net-ipa-Fix-NULL-pointer-dereference-which-caused-a-.patch.txt
0063-net-ipa-Adjust-the-validity-check-of-ipa-registers-t.patch.txt
0064-net-ipa-Check-interrupts-for-availability.patch.txt
0065-net-ipa-Add-support-for-IPA-v2.x-interrupts.patch.txt

Still missing are the cpufreq patches which are already in msm8953-mainline/linux.

Update to linux 6.0.10

I just pushed a WIP branch based on linux 6.0.10. Here I want to make something like a ToDo list to track the status of the update.

Also I'm thinking on squashing all the typo fixes to clean up the history.

Regarding the panel drivers, maybe we should do the same as on msm8916-mainline and automatically add all panel drivers with lmdpdg. What do you think?

Please tell me what else to add:

  • Clean up device DTs.
  • #61
  • Squash all typo and fix commits.
  • Review the IOMMU commits.
  • Figure out what happened with the CPU and GPU frequency scaling (OPP tables) and fix it.
  • Get IPA working (maybe? I have a WIP rebase elsewhere and it almost works).
  • Enable the charger. (I'm not sure about this because we can't reliably test it and it's still an RFC whatever...)
  • Update configs
  • Himax hx83112b touchscreen driver
  • Use LABIBB driver

It can already be tested on phones although it's probably a bit slow because of the OPP stuff.

Tested on:

  • mido
  • daisy
  • tissot
  • ocean
  • vince
  • fp3
  • a6plte

Upstream MDSS support

I prepared a branch based on linux-next with only MDSS support and some extra patches that are probably needed (some maybe could be removed, not sure): https://github.com/z3ntu/linux/commits/msm8953-5.17-next-dsi3

@vldly Could you please answer these questions?

drm/msm/mdp5: Add perf data for MDP v1.16

Looks clear, any objection to send?

drm/msm/dsi: Use single function for reset

Not 100% sure why this exists, "However this assumtion is not true mobile devices which have boot splash set up by boot-loader." this literally applies to all smartphones I believe, why is this a problem on 8953?

clk: qcom: rcg2: round parent rate when SET_RATE_PARENT is set

no description (what does this commit do?), missing sign-off

clk: qcom: Don't update rcg2 when configuration wasn't changed

no description (what does this commit do?), missing sign-off

iommu: qcom-iommu: avoid bouncing power domain

no description (what does this commit do?), missing sign-off

soc: qcom: rpmpd: add hack to speed up suspend/resume

what does this commit improve, can we remove it?

Revert "Revert "drm/msm/mdp5: provide dynamic bandwidth management""

can we remove this?

firmware: qcom_scm: add support for smmu_change_pt_format

dependency for "iommu: arm-smmu-qcom: Add MSM8953 impl", missing description and sign-off though

iommu: arm-smmu: add prepare implementation callback

dependency for "iommu: arm-smmu-qcom: Add MSM8953 impl", missing description and sign-off though

iommu: arm-smmu-qcom: Add MSM8953 impl

not too familiar with iommu but looks ok, missing description and sign-off though

arm64: dts: qcom: msm8953: add IOMMUs

clear, missing sign-off

arm64: dts: qcom: msm8953: add MDSS

clear, missing sign-off

Slow charging speed

Hi,

I'm using a Xiaomi Redmi 6 pro device (Sakura), and getting very slow charging speed. It takes more than 3 hours for full charge. I verified that it isn't caused by bad battery or charger because on android based custom ROMs I'm getting much faster charging speeds.

Hope it will be resolved soon

Last but not least, Thank you for porting mainline kernel to msm8953 devices <3

xiaomi-mido: tryed compile with panel config and got errors

In file included from drivers/gpu/drm/panel/panels-xiaomi-mido.c:8:
./include/linux/module.h:131:49: error: redefinition of '__inittest'
131 | static inline initcall_t __maybe_unused __inittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:506:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
506 | MIPI_DSI_PANEL_DRIVER(otm1911_fhd, "otm1911-fhd", "xiaomi,otm1911");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:131:49: note: previous definition of '__inittest' with type 'int ((void))(void)'
131 | static inline initcall_t __maybe_unused __inittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:505:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
505 | MIPI_DSI_PANEL_DRIVER(r63350_ebbg_fhd, "r63350-ebbg-fhd", "xiaomi,ebbg-r63350");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:133:13: error: redefinition of 'init_module'
133 | int init_module(void) __copy(initfn)
| ^~~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:506:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
506 | MIPI_DSI_PANEL_DRIVER(otm1911_fhd, "otm1911-fhd", "xiaomi,otm1911");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:133:13: note: previous definition of 'init_module' with type 'int(void)'
133 | int init_module(void) __copy(initfn)
| ^~~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:505:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
505 | MIPI_DSI_PANEL_DRIVER(r63350_ebbg_fhd, "r63350-ebbg-fhd", "xiaomi,ebbg-r63350");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:139:49: error: redefinition of '__exittest'
139 | static inline exitcall_t __maybe_unused __exittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:506:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
506 | MIPI_DSI_PANEL_DRIVER(otm1911_fhd, "otm1911-fhd", "xiaomi,otm1911");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:139:49: note: previous definition of '__exittest' with type 'void (
(void))(void)'
139 | static inline exitcall_t __maybe_unused __exittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:505:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
505 | MIPI_DSI_PANEL_DRIVER(r63350_ebbg_fhd, "r63350-ebbg-fhd", "xiaomi,ebbg-r63350");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:141:14: error: redefinition of 'cleanup_module'
141 | void cleanup_module(void) __copy(exitfn)
| ^~~~~~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:506:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
506 | MIPI_DSI_PANEL_DRIVER(otm1911_fhd, "otm1911-fhd", "xiaomi,otm1911");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:141:14: note: previous definition of 'cleanup_module' with type 'void(void)'
141 | void cleanup_module(void) __copy(exitfn)
| ^~~~~~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:505:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
505 | MIPI_DSI_PANEL_DRIVER(r63350_ebbg_fhd, "r63350-ebbg-fhd", "xiaomi,ebbg-r63350");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:131:49: error: redefinition of '__inittest'
131 | static inline initcall_t __maybe_unused __inittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:507:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
507 | MIPI_DSI_PANEL_DRIVER(nt35596_tianma_fhd, "nt35596-tianma-fhd", "xiaomi,tianma-nt35596");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:131:49: note: previous definition of '__inittest' with type 'int ((void))(void)'
131 | static inline initcall_t __maybe_unused __inittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:506:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
506 | MIPI_DSI_PANEL_DRIVER(otm1911_fhd, "otm1911-fhd", "xiaomi,otm1911");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:133:13: error: redefinition of 'init_module'
133 | int init_module(void) __copy(initfn)
| ^~~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:507:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
507 | MIPI_DSI_PANEL_DRIVER(nt35596_tianma_fhd, "nt35596-tianma-fhd", "xiaomi,tianma-nt35596");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:133:13: note: previous definition of 'init_module' with type 'int(void)'
133 | int init_module(void) __copy(initfn)
| ^~~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:505:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
505 | MIPI_DSI_PANEL_DRIVER(r63350_ebbg_fhd, "r63350-ebbg-fhd", "xiaomi,ebbg-r63350");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:139:49: error: redefinition of '__exittest'
139 | static inline exitcall_t __maybe_unused __exittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:507:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
507 | MIPI_DSI_PANEL_DRIVER(nt35596_tianma_fhd, "nt35596-tianma-fhd", "xiaomi,tianma-nt35596");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:139:49: note: previous definition of '__exittest' with type 'void (
(void))(void)'
139 | static inline exitcall_t __maybe_unused __exittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:506:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
506 | MIPI_DSI_PANEL_DRIVER(otm1911_fhd, "otm1911-fhd", "xiaomi,otm1911");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:141:14: error: redefinition of 'cleanup_module'
141 | void cleanup_module(void) __copy(exitfn)
| ^~~~~~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:507:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
507 | MIPI_DSI_PANEL_DRIVER(nt35596_tianma_fhd, "nt35596-tianma-fhd", "xiaomi,tianma-nt35596");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:141:14: note: previous definition of 'cleanup_module' with type 'void(void)'
141 | void cleanup_module(void) __copy(exitfn)
| ^~~~~~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:505:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
505 | MIPI_DSI_PANEL_DRIVER(r63350_ebbg_fhd, "r63350-ebbg-fhd", "xiaomi,ebbg-r63350");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:131:49: error: redefinition of '__inittest'
131 | static inline initcall_t __maybe_unused __inittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:508:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
508 | MIPI_DSI_PANEL_DRIVER(nt35532_fhd, "nt35532-fhd", "xiaomi,nt35532");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:131:49: note: previous definition of '__inittest' with type 'int ((void))(void)'
131 | static inline initcall_t __maybe_unused __inittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:507:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
507 | MIPI_DSI_PANEL_DRIVER(nt35596_tianma_fhd, "nt35596-tianma-fhd", "xiaomi,tianma-nt35596");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:133:13: error: redefinition of 'init_module'
133 | int init_module(void) __copy(initfn)
| ^~~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:508:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
508 | MIPI_DSI_PANEL_DRIVER(nt35532_fhd, "nt35532-fhd", "xiaomi,nt35532");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:133:13: note: previous definition of 'init_module' with type 'int(void)'
133 | int init_module(void) __copy(initfn)
| ^~~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:505:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
505 | MIPI_DSI_PANEL_DRIVER(r63350_ebbg_fhd, "r63350-ebbg-fhd", "xiaomi,ebbg-r63350");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:139:49: error: redefinition of '__exittest'
139 | static inline exitcall_t __maybe_unused __exittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:508:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
508 | MIPI_DSI_PANEL_DRIVER(nt35532_fhd, "nt35532-fhd", "xiaomi,nt35532");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:139:49: note: previous definition of '__exittest' with type 'void (
(void))(void)'
139 | static inline exitcall_t __maybe_unused __exittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:507:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
507 | MIPI_DSI_PANEL_DRIVER(nt35596_tianma_fhd, "nt35596-tianma-fhd", "xiaomi,tianma-nt35596");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:141:14: error: redefinition of 'cleanup_module'
141 | void cleanup_module(void) __copy(exitfn)
| ^~~~~~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:508:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
508 | MIPI_DSI_PANEL_DRIVER(nt35532_fhd, "nt35532-fhd", "xiaomi,nt35532");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:141:14: note: previous definition of 'cleanup_module' with type 'void(void)'
141 | void cleanup_module(void) __copy(exitfn)
| ^~~~~~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:505:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
505 | MIPI_DSI_PANEL_DRIVER(r63350_ebbg_fhd, "r63350-ebbg-fhd", "xiaomi,ebbg-r63350");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:131:49: error: redefinition of '__inittest'
131 | static inline initcall_t __maybe_unused __inittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:509:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
509 | MIPI_DSI_PANEL_DRIVER(ili9885_boe_fhd, "ili9885-boe-fhd", "xiaomi,boe-ili9885");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:131:49: note: previous definition of '__inittest' with type 'int ((void))(void)'
131 | static inline initcall_t __maybe_unused __inittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:508:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
508 | MIPI_DSI_PANEL_DRIVER(nt35532_fhd, "nt35532-fhd", "xiaomi,nt35532");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:133:13: error: redefinition of 'init_module'
133 | int init_module(void) __copy(initfn)
| ^~~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:509:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
509 | MIPI_DSI_PANEL_DRIVER(ili9885_boe_fhd, "ili9885-boe-fhd", "xiaomi,boe-ili9885");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:133:13: note: previous definition of 'init_module' with type 'int(void)'
133 | int init_module(void) __copy(initfn)
| ^~~~~~~~~~~
./include/linux/device/driver.h:263:1: note: in expansion of macro 'module_init'
263 | module_init(__driver##_init);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:505:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
505 | MIPI_DSI_PANEL_DRIVER(r63350_ebbg_fhd, "r63350-ebbg-fhd", "xiaomi,ebbg-r63350");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:139:49: error: redefinition of '__exittest'
139 | static inline exitcall_t __maybe_unused __exittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:509:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
509 | MIPI_DSI_PANEL_DRIVER(ili9885_boe_fhd, "ili9885-boe-fhd", "xiaomi,boe-ili9885");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:139:49: note: previous definition of '__exittest' with type 'void (
(void))(void)'
139 | static inline exitcall_t __maybe_unused __exittest(void)
| ^~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:508:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
508 | MIPI_DSI_PANEL_DRIVER(nt35532_fhd, "nt35532-fhd", "xiaomi,nt35532");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:141:14: error: redefinition of 'cleanup_module'
141 | void cleanup_module(void) __copy(exitfn)
| ^~~~~~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:509:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
509 | MIPI_DSI_PANEL_DRIVER(ili9885_boe_fhd, "ili9885-boe-fhd", "xiaomi,boe-ili9885");
| ^~~~~~~~~~~~~~~~~~~~~
./include/linux/module.h:141:14: note: previous definition of 'cleanup_module' with type 'void(void)'
141 | void cleanup_module(void) __copy(exitfn)
| ^~~~~~~~~~~~~~
./include/linux/device/driver.h:268:1: note: in expansion of macro 'module_exit'
268 | module_exit(__driver##_exit);
| ^~~~~~~~~~~
./include/drm/drm_mipi_dsi.h:330:9: note: in expansion of macro 'module_driver'
330 | module_driver(__mipi_dsi_driver, mipi_dsi_driver_register,
| ^~~~~~~~~~~~~
drivers/gpu/drm/panel/panel-mipi-dsi-common.h:24:9: note: in expansion of macro 'module_mipi_dsi_driver'
24 | module_mipi_dsi_driver(_prefix##_driver)
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/panels-xiaomi-mido.c:505:1: note: in expansion of macro 'MIPI_DSI_PANEL_DRIVER'
505 | MIPI_DSI_PANEL_DRIVER(r63350_ebbg_fhd, "r63350-ebbg-fhd", "xiaomi,ebbg-r63350");

Ilitek ili7807-fhdplus drive license is wrong

This prevents the driver from being built as a module.

MODULE_LICENSE("GPL v2 or later");

From https://www.kernel.org/doc/html/latest/process/license-rules.html on MODULE_LICENSE usage:

“GPL”: Module is licensed under GPL version 2. This does not express any distinction between GPL-2.0-only or GPL-2.0-or-later. The exact license information can only be determined via the license information in the corresponding source files.

“GPL v2” Same as “GPL”. It exists for historic reasons.

Xiaomi-daisy: Ilitek ili7807-fdhplus display not working

With yesterday built kernel from here the ili7807-fhdplus display on my Xiaomi Mi A2 Lite (daisy) doesn’t come up (except for some blue artefacts). I’m using lk2nd and am able to ssh into the device (I’ll add the dmesg log after boot). Some time ago I already tested out the patches of #21 with the same outcome. Without the patches, it is not booting until ssh.

Am I missing something or is this still WIP?

dmesg_daisy_20211113.log

gcc_venus0_core0_vcodec0_clk status stuck at 'off'

Xiaomi-tissot,
Display can't work.

[ 50.685537] ------------[ cut here ]------------
[ 50.685626] gcc_venus0_core0_vcodec0_clk status stuck at 'off'
[ 50.685886] WARNING: CPU: 0 PID: 684 at drivers/clk/qcom/clk-branch.c:86 clk_branch_wait+0x144/0x15c
[ 50.685998] Modules linked in: apr(+) pdr_interface nf_nat(+) wcnss_ctrl venus_dec nf_conntrack nf_defrag_ipv6 venus_enc snd_soc_apq8016_sbc nf_defrag_ipv4 libcrc32c qrtr_smd videobuf2_dma_contig videobuf2_memops crct10dif_ce qcom_q6v5_pas qcom_rng snd_soc_max98927 snd_soc_msm8916_digital qcom_wcnss_pil snd_soc_qcom_common leds_aw2013 edt_ft5x06 snd_soc_msm8916_analog qcom_pon qcom_spmi_vadc qcom_wled qcom_spmi_temp_alarm qcom_vadc_common bmi160_i2c qcom_q6v5_mss ak8975 bmi160_core industrialio_triggered_buffer venus_core qcom_pil_info v4l2_mem2mem videobuf2_v4l2 kfifo_buf qcom_q6v5 videodev qcom_sysmon videobuf2_common rpmsg_ctrl qcom_common qcom_glink_smem qmi_helpers rpmsg_char mc snd_soc_simple_amplifier rmtfs_mem socinfo rfkill usb_f_ecm u_ether libcomposite qrtr fuse ip_tables x_tables ipv6 msm mdt_loader llcc_qcom ocmem gpu_sched drm_dp_aux_bus rtc_pm8xxx drm_display_helper drm_kms_helper drm backlight i2c_gpio
[ 50.686410] CPU: 0 PID: 684 Comm: v4l_id Tainted: G W 6.6.0-ga5adadd131b0 #3
[ 50.686425] Hardware name: Xiaomi Mi A1 (DT)
[ 50.686439] pstate: 600000c5 (nZCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 50.686449] pc : clk_branch_wait+0x144/0x15c
[ 50.686459] lr : clk_branch_wait+0x144/0x15c
[ 50.686469] sp : ffff8000833aba30
[ 50.686476] x29: ffff8000833aba30 x28: ffff000011cbbb00 x27: 0000000000000000
[ 50.686488] x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000000
[ 50.686499] x23: ffff800081a20a10 x22: 0000000000000001 x21: ffff8000807c0270
[ 50.686508] x20: 0000000000000000 x19: ffff8000826954a8 x18: 0000000000000040
[ 50.686517] x17: 0000000000000000 x16: 0000000000000000 x15: fffffffffffe8ff0
[ 50.686527] x14: ffff8000824dff58 x13: 00000000000005e5 x12: 00000000000001f7
[ 50.686537] x11: fffffffffffe8ff0 x10: fffffffffffe8fb0 x9 : 00000000fffff1f7
[ 50.686548] x8 : ffff8000824dff58 x7 : ffff800082537f58 x6 : 0000000000001794
[ 50.686560] x5 : ffff0000f9b52c88 x4 : 0000000000000000 x3 : 0000000000000027
[ 50.686569] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff000011cbbb00
[ 50.686586] Call trace:
[ 50.686601] clk_branch_wait+0x144/0x15c
[ 50.686614] clk_branch2_enable+0x30/0x40
[ 50.686627] clk_core_enable+0x6c/0xbc
[ 50.686648] clk_enable+0x2c/0x4c
[ 50.686660] vcodec_clks_enable.isra.0+0x94/0xd8 [venus_core]
[ 50.686869] venc_power_v3+0x9c/0xa0 [venus_core]
[ 50.686894] venc_runtime_resume+0x24/0x38 [venus_enc]
[ 50.686929] pm_generic_runtime_resume+0x2c/0x44
[ 50.686956] __genpd_runtime_resume+0x30/0xa8
[ 50.686976] genpd_runtime_resume+0xb4/0x29c
[ 50.686993] __rpm_callback+0x48/0x198
[ 50.687010] rpm_callback+0x6c/0x78
[ 50.687018] rpm_resume+0x3ac/0x654
[ 50.687025] __pm_runtime_resume+0x4c/0x90
[ 50.687036] venc_pm_get.isra.0+0x38/0xb8 [venus_enc]
[ 50.687048] venc_close+0x28/0xa4 [venus_enc]
[ 50.687057] v4l2_release+0xe4/0xec [videodev]
[ 50.687455] __fput+0xb4/0x274
[ 50.687485] __fput_sync+0x50/0x5c
[ 50.687491] __arm64_sys_close+0x38/0x7c
[ 50.687505] invoke_syscall+0x48/0x114
[ 50.687538] el0_svc_common.constprop.0+0xc0/0xe0
[ 50.687549] do_el0_svc+0x1c/0x28
[ 50.687556] el0_svc+0x40/0xf4
[ 50.687592] el0t_64_sync_handler+0xc0/0xc4
[ 50.687598] el0t_64_sync+0x190/0x194
[ 50.687625] ---[ end trace 0000000000000000 ]---
[ 50.688774] qcom-venus-encoder 1d00000.venus:video-encoder: Runtime PM usage count underflow!

msm8953 6.5.2 kernel gpu cannot be used in mobian system! System graphics card display software rendering can't use gpu.

[ 1.258101] adreno 1c00000.gpu: Adding to iommu group 0 [ 1.258761] i2c_qup 78b6000.i2c: using default clock-frequency 100000 [ 1.258793] i2c_qup 78b6000.i2c: tx channel not available [ 1.259163] i2c_qup 78b7000.i2c: using default clock-frequency 100000 [ 1.259184] i2c_qup 78b7000.i2c: tx channel not available [ 1.288999] platform 1a94000.dsi: Fixed dependency cycle(s) with /soc@0/display-subsystem@1a00000/dsi@1a94000/panel@0/port/endpoint [ 1.289067] platform 1a94000.dsi: Fixed dependency cycle(s) with /soc@0/display-subsystem@1a00000/display-controller@1a01000/ports/port@0/endpoint [ 1.293871] i2c_qup 78b6000.i2c: using default clock-frequency 100000 [ 1.293914] i2c_qup 78b6000.i2c: tx channel not available [ 1.294423] i2c_qup 78b7000.i2c: using default clock-frequency 100000 [ 1.294468] i2c_qup 78b7000.i2c: tx channel not available [ 1.295607] msm_mdp 1a01000.display-controller: Adding to iommu group 1 [ 1.305731] mipi-dsi 1a94000.dsi.0: Fixed dependency cycle(s) with /soc@0/display-subsystem@1a00000/dsi@1a94000/ports/port@1/endpoint [ 1.307376] i2c_qup 78b6000.i2c: using default clock-frequency 100000 [ 1.307418] i2c_qup 78b6000.i2c: tx channel not available [ 1.307822] i2c_qup 78b7000.i2c: using default clock-frequency 100000 [ 1.307844] i2c_qup 78b7000.i2c: tx channel not available [ 1.308619] msm_mdp 1a01000.display-controller: bound 1a94000.dsi (ops dsi_ops [msm]) [ 1.310060] adreno 1c00000.gpu: supply vdd not found, using dummy regulator [ 1.310208] adreno 1c00000.gpu: supply vddcx not found, using dummy regulator [ 1.315708] msm_mdp 1a01000.display-controller: bound 1c00000.gpu (ops a3xx_ops [msm]) [ 1.316031] msm_mdp 1a01000.display-controller: [drm:mdp5_kms_init [msm]] MDP5 version v1.16 [ 1.335166] [drm] Initialized msm 1.10.0 20130625 for 1a01000.display-controller on minor 0 [ 1.335640] msm_mdp 1a01000.display-controller: Direct firmware load for qcom/a530_pm4.fw failed with error -2 [ 1.335678] msm_mdp 1a01000.display-controller: [drm:adreno_request_fw [msm]] ERROR failed to load a530_pm4.fw [ 1.420083] [drm:mdp5_irq_error_handler [msm]] ERROR errors: 04000000 [ 1.732228] Console: switching to colour frame buffer device 135x120 [ 1.764915] msm_mdp 1a01000.display-controller: [drm] fb0: msmdrmfb frame buffer device

xiaomi–vince modemmanager and ofono unable to use modem

The sim card can be recognized.
xiaomi-vince:~# qmicli -d qrtr://0 --uim-get-card-status

[qrtr://0] Successfully got card status Provisioning applications: Primary GW:

slot '1', application '1' Primary 1X: session doesn't exist Secondary GW: session doesn't exist Secondary 1X: session doesn't exist Slot [1]: Card state: 'present' UPIN state: 'not-initialized' UPIN retries: '0' UPUK retries: '0' Application [1]: Application type: 'usim (2)' Application state: 'ready' Application ID: A0:00:00:00:87:10:02:FF:86:FF:FF:89:FF:FF:FF:FF Personalization state: 'ready' UPIN replaces PIN1: 'no' PIN1 state: 'disabled' PIN1 retries: '1' PUK1 retries: '10' PIN2 state: 'enabled-not-verified' PIN2 retries: '3' PUK2 retries: '10'

sot [2]: Card state: 'error: no-atr-received (3)' UPIN state: 'not-initialized' UPIN retries: '0' UPUK retries: '0'

xiaomi-vince:~# ModemManager --debug

[5572]: [000519809.909721] ModemManager (version 1.20.6) starting in system bus...
[5572]: [000519809.909880] [charsets] detecting platform iconv() support...
[5572]: [000519809.909935] [charsets] UTF-8: iconv conversion to/from charset is supported
[5572]: [000519809.909970] [charsets] UCS-2BE: iconv conversion to/from charset is supported
[5572]: [000519809.910007] [charsets] ASCII: iconv conversion to/from charset is supported
[5572]: [000519809.910044] [charsets] ISO8859-1: iconv conversion to/from charset is supported
[5572]: [000519809.910088] [charsets] CP437: iconv conversion to/from charset is supported
[5572]: [000519809.910132] [charsets] CP850: iconv conversion to/from charset is supported
[5572]: [000519809.910165] [charsets] UTF-16BE: iconv conversion to/from charset is supported
[5572]: [000519809.912440] Full suspend/resume hooks enabled
[5572]: [000519809.913205] [sleep-monitor-systemd] singleton created
[5572]: [000519809.917858] bus acquired, creating manager...
[5572]: [000519809.923192] [auth-provider] singleton created
[5572]: [000519809.923406] [filter] created
[5572]: [000519809.923440] [filter] explicit allowlist: yes
[5572]: [000519809.923464] [filter] explicit blocklist: yes
[5572]: [000519809.923491] [filter] plugin allowlist: yes
[5572]: [000519809.923514] [filter] qrtr devices allowed: yes
[5572]: [000519809.923540] [filter] virtual devices forbidden: yes
[5572]: [000519809.923567] [filter] net devices allowed: yes
[5572]: [000519809.923590] [filter] usbmisc devices allowed: yes
[5572]: [000519809.923613] [filter] rpmsg devices allowed: yes
[5572]: [000519809.923638] [filter] wwan devices allowed: yes
[5572]: [000519809.923663] [filter] tty devices:
[5572]: [000519809.923688] [filter] platform driver check: yes
[5572]: [000519809.923715] [filter] driver check: yes
[5572]: [000519809.923743] [filter] cdc-acm interface check: yes
[5572]: [000519809.923770] [filter] with net check: yes
[5572]: [000519809.923796] [filter] default: forbidden
[5572]: [000519809.923906] [plugin-manager] looking for plugins in '/usr/lib/ModemManager'
[5572]: [000519809.924575] [plugin-manager] loaded shared 'Sierra' utils from '/usr/lib/ModemManager/libmm-shared-sierra.so'
[5572]: [000519809.924913] [plugin-manager] loaded shared 'Telit' utils from '/usr/lib/ModemManager/libmm-shared-telit.so'
[5572]: [000519809.925115] [plugin-manager] loaded shared 'Novatel' utils from '/usr/lib/ModemManager/libmm-shared-novatel.so'
[5572]: [000519809.925408] [plugin-manager] loaded shared 'Xmm' utils from '/usr/lib/ModemManager/libmm-shared-xmm.so'
[5572]: [000519809.925647] [plugin-manager] loaded shared 'Foxconn' utils from '/usr/lib/ModemManager/libmm-shared-foxconn.so'
[5572]: [000519809.925855] [plugin-manager] loaded shared 'Option' utils from '/usr/lib/ModemManager/libmm-shared-option.so'
[5572]: [000519809.926152] [plugin-manager] loaded shared 'Icera' utils from '/usr/lib/ModemManager/libmm-shared-icera.so'
[5572]: [000519809.926315] [plugin-manager] loaded shared 'Intel' utils from '/usr/lib/ModemManager/libmm-shared-fibocom.so'
[5572]: [000519809.926886] [plugin-manager] loaded plugin 'nokia-icera' from '/usr/lib/ModemManager/libmm-plugin-nokia-icera.so'
[5572]: [000519809.926930] [filter] registered plugin allowlist vendor id: 0421
[5572]: [000519809.927172] [plugin-manager] loaded plugin 'x22x' from '/usr/lib/ModemManager/libmm-plugin-x22x.so'
[5572]: [000519809.927209] [filter] registered plugin allowlist tag: ID_MM_X22X_TAGGED
[5572]: [000519809.927240] [filter] registered plugin allowlist vendor id: 1bbb
[5572]: [000519809.927267] [filter] registered plugin allowlist vendor id: 0b3c
[5572]: [000519809.927473] [plugin-manager] loaded plugin 'telit' from '/usr/lib/ModemManager/libmm-plugin-telit.so'
[5572]: [000519809.927509] [filter] registered plugin allowlist vendor id: 1bc7
[5572]: [000519809.927539] [filter] registered plugin allowlist subsystem vendor id: 17cb:1c5d
[5572]: [000519809.927731] [plugin-manager] loaded plugin 'gosuncn' from '/usr/lib/ModemManager/libmm-plugin-gosuncn.so'
[5572]: [000519809.927767] [filter] registered plugin allowlist vendor id: 305a [5572]: [000519809.928017] [plugin-manager] loaded plugin 'quectel' from '/usr/lib/ModemManager/libmm-plugin-quectel.so'
[5572]: [000519809.928052] [filter] registered plugin allowlist vendor id: 2c7c
[5572]: [000519809.928082] [filter] registered plugin allowlist vendor id: 1eac
[5572]: [000519809.928362] [plugin-manager] loaded plugin 'generic' from '/usr/lib/ModemManager/libmm-plugin-generic.so'
[5572]: [000519809.928599] [plugin-manager] loaded plugin 'thuraya' from '/usr/lib/ModemManager/libmm-plugin-thuraya.so'
[5572]: [000519809.928635] [filter] registered plugin allowlist vendor id: 1a26
[5572]: [000519809.928894] [plugin-manager] loaded plugin 'simtech' from '/usr/lib/ModemManager/libmm-plugin-simtech.so'
[5572]: [000519809.928937] [filter] registered plugin allowlist vendor id: 1e0e
[5572]: [000519809.929187] [plugin-manager] loaded plugin 'motorola' from '/usr/lib/ModemManager/libmm-plugin-mtk.so'
[5572]: [000519809.929225] [filter] registered plugin allowlist tag: ID_MM_MTK_TAGGED
[5572]: [000519809.929429] [plugin-manager] loaded plugin 'sierra' from '/usr/lib/ModemManager/libmm-plugin-sierra.so'
[5572]: [000519809.929468] [filter] registered plugin allowlist vendor id: 1199
[5572]: [000519809.929690] [plugin-manager] loaded plugin 'Intel' from '/usr/lib/ModemManager/libmm-plugin-intel.so'
[5572]: [000519809.929727] [filter] registered plugin allowlist vendor id: 8086
[5572]: [000519809.929927] [plugin-manager] loaded plugin 'broadmobi' from '/usr/lib/ModemManager/libmm-plugin-broadmobi.so'
[5572]: [000519809.929964] [filter] registered plugin allowlist vendor id: 2020
[5572]: [000519809.930249] [plugin-manager] loaded plugin 'fibocom' from '/usr/lib/ModemManager/libmm-plugin-fibocom.so'
[5572]: [000519809.930286] [filter] registered plugin allowlist vendor id: 2cb7
[5572]: [000519809.930317] [filter] registered plugin allowlist vendor id: 1782
[5572]: [000519809.930570] [plugin-manager] loaded plugin 'novatel-lte' from '/usr/lib/ModemManager/libmm-plugin-novatel-lte.so'
[5572]: [000519809.930607] [filter] registered plugin allowlist product id: 1410:9010
[5572]: [000519809.930851] [plugin-manager] loaded plugin 'wavecom' from '/usr/lib/ModemManager/libmm-plugin-wavecom.so'
[5572]: [000519809.930888] [filter] registered plugin allowlist vendor id: 114f
[5572]: [000519809.931074] [plugin-manager] loaded plugin 'd-link' from '/usr/lib/ModemManager/libmm-plugin-dlink.so'
[5572]: [000519809.931112] [filter] registered plugin allowlist vendor id: 2001
[5572]: [000519809.931524] [plugin-manager] loaded plugin 'huawei' from '/usr/lib/ModemManager/libmm-plugin-huawei.so'
[5572]: [000519809.931561] [filter] registered plugin allowlist vendor id: 12d1
[5572]: [000519809.931808] [plugin-manager] loaded plugin 'zte' from '/usr/lib/ModemManager/libmm-plugin-zte.so'
[5572]: [000519809.931846] [filter] registered plugin allowlist vendor id: 19d2
[5572]: [000519809.932132] [plugin-manager] loaded plugin 'altair-lte' from '/usr/lib/ModemManager/libmm-plugin-altair-lte.so'
[5572]: [000519809.932170] [filter] registered plugin allowlist product id: 216f:0047
[5572]: [000519809.932496] [plugin-manager] loaded plugin 'ericsson-mbm' from '/usr/lib/ModemManager/libmm-plugin-ericsson-mbm.so'
[5572]: [000519809.932534] [filter] registered plugin allowlist tag: ID_MM_ERICSSON_MBM
[5572]: [000519809.932819] [plugin-manager] loaded plugin 'pantech' from '/usr/lib/ModemManager/libmm-plugin-pantech.so'
[5572]: [000519809.932857] [filter] registered plugin allowlist vendor id: 106c
[5572]: [000519809.933082] [plugin-manager] loaded plugin 'foxconn' from '/usr/lib/ModemManager/libmm-plugin-foxconn.so'
[5572]: [000519809.933119] [filter] registered plugin allowlist vendor id: 0489
[5572]: [000519809.933150] [filter] registered plugin allowlist vendor id: 105b
[5572]: [000519809.933343] [plugin-manager] loaded plugin 'samsung' from '/usr/lib/ModemManager/libmm-plugin-samsung.so'
[5572]: [000519809.933381] [filter] registered plugin allowlist product id: 04e8:6872
[5572]: [000519809.933413] [filter] registered plugin allowlist product id: 04e8:6906
[5572]: [000519809.933635] [plugin-manager] loaded plugin 'linktop' from '/usr/lib/ModemManager/libmm-plugin-linktop.so'
[5572]: [000519809.933672] [filter] registered plugin allowlist vendor id: 230d
[5572]: [000519809.933882] [plugin-manager] loaded plugin 'motorola' from '/usr/lib/ModemManager/libmm-plugin-motorola.so'
[5572]: [000519809.933919] [filter] registered plugin allowlist product id: 22b8:3802
[5572]: [000519809.933951] [filter] registered plugin allowlist product id: 22b8:4902
[5572]: [000519809.934222] [plugin-manager] loaded plugin 'dell' from '/usr/lib/ModemManager/libmm-plugin-dell.so'
[5572]: [000519809.934259] [filter] registered plugin allowlist vendor id: 413c
[5572]: [000519809.934464] [plugin-manager] loaded plugin 'tp-link' from '/usr/lib/ModemManager/libmm-plugin-tplink.so'
[5572]: [000519809.934500] [filter] registered plugin allowlist vendor id: 2357
[5572]: [000519809.934718] [plugin-manager] loaded plugin 'anydata' from '/usr/lib/ModemManager/libmm-plugin-anydata.so'
[5572]: [000519809.934755] [filter] registered plugin allowlist vendor id: 16d5
[5572]: [000519809.934953] [plugin-manager] loaded plugin 'option' from '/usr/lib/ModemManager/libmm-plugin-option.so'
[5572]: [000519809.934990] [filter] registered plugin allowlist vendor id: 0af0
[5572]: [000519809.935020] [filter] registered plugin allowlist vendor id: 1931
[5572]: [000519809.935229] [plugin-manager] loaded plugin 'qcom-soc' from '/usr/lib/ModemManager/libmm-plugin-qcom-soc.so'
[5572]: [000519809.935272] [filter] registered plugin allowlist tag: ID_MM_QCOM_SOC
[5572]: [000519809.935505] [plugin-manager] loaded plugin 'via' from '/usr/lib/ModemManager/libmm-plugin-via.so'
[5572]: [000519809.935864] [plugin-manager] loaded plugin 'u-blox' from '/usr/lib/ModemManager/libmm-plugin-ublox.so'
[5572]: [000519809.935902] [filter] registered plugin allowlist vendor id: 1546
[5572]: [000519809.936163] [plugin-manager] loaded plugin 'longcheer' from '/usr/lib/ModemManager/libmm-plugin-longcheer.so'
[5572]: [000519809.936202] [filter] registered plugin allowlist tag: ID_MM_LONGCHEER_TAGGED
[5572]: [000519809.936234] [filter] registered plugin allowlist vendor id: 1c9e
[5572]: [000519809.936605] [plugin-manager] loaded plugin 'cinterion' from '/usr/lib/ModemManager/libmm-plugin-cinterion.so'
[5572]: [000519809.936643] [filter] registered plugin allowlist vendor id: 1e2d
[5572]: [000519809.936674] [filter] registered plugin allowlist vendor id: 0681
[5572]: [000519809.936704] [filter] registered plugin allowlist vendor id: 1269
[5572]: [000519809.936914] [plugin-manager] loaded plugin 'novatel' from '/usr/lib/ModemManager/libmm-plugin-novatel.so'
[5572]: [000519809.936952] [filter] registered plugin allowlist vendor id: 1410
[5572]: [000519809.937238] [plugin-manager] loaded plugin 'option-hso' from '/usr/lib/ModemManager/libmm-plugin-option-hso.so'
[5572]: [000519809.937433] [plugin-manager] loaded plugin 'haier' from '/usr/lib/ModemManager/libmm-plugin-haier.so'
[5572]: [000519809.937471] [filter] registered plugin allowlist vendor id: 201e
[5572]: [000519809.937738] [plugin-manager] loaded plugin 'sierra-legacy' from '/usr/lib/ModemManager/libmm-plugin-sierra-legacy.so'
[5572]: [000519809.937987] [plugin-manager] loaded plugin 'nokia' from '/usr/lib/ModemManager/libmm-plugin-nokia.so'
[5572]: [000519809.938254] [plugin-manager] loaded plugin 'iridium' from '/usr/lib/ModemManager/libmm-plugin-iridium.so'
[5572]: [000519809.938292] [filter] registered plugin allowlist vendor id: 1edd
[5572]: [000519809.938329] [plugin-manager] successfully loaded 40 plugins registering 6 subsystems: tty, net, usbmisc, wwan, rpmsg, qrtr
[5572]: [000519809.939532] [qrtr] socket lookup from 1:0
[5572]: [000519809.940407] [qrtr] added server on 0:1 -> service 43, version 2, instance 18
[5572]: [000519809.940552] [qrtr] created new node 0 [5572]: [000519809.940643] [qrtr] added server on 0:14 -> service 15, version 1, instance 0
[5572]: [000519809.940702] [qrtr] added server on 0:16 -> service 24, version 1, instance 0
[5572]: [000519809.940761] [qrtr] added server on 0:17 -> service 23, version 1, instance 0
[5572]: [000519809.940810] [qrtr] added server on 0:18 -> service 22, version 1, instance 0
[5572]: [000519809.940865] [qrtr] added server on 0:20 -> service 36, version 1, instance 0
[5572]: [000519809.940916] [qrtr] added server on 0:21 -> service 49, version 1, instance 2
[5572]: [000519809.940970] [qrtr] added server on 0:23 -> service 70, version 1, instance 1
[5572]: [000519809.941029] [qrtr] added server on 0:24 -> service 54, version 1, instance 0
[5572]: [000519809.941083] [qrtr] added server on 0:25 -> service 41, version 1, instance 1
[5572]: [000519809.941136] [qrtr] added server on 0:26 -> service 17, version 1, instance 0
[5572]: [000519809.941190] [qrtr] added server on 0:27 -> service 34, version 1, instance 0
[5572]: [000519809.941245] [qrtr] added server on 0:36 -> service 55, version 1, instance 2
[5572]: [000519809.941302] [qrtr] added server on 0:37 -> service 50, version 1, instance 0
[5572]: [000519809.941358] [qrtr] added server on 0:38 -> service 9, version 2, instance 0
[5572]: [000519809.941414] [qrtr] added server on 0:40 -> service 3, version 1, instance 0
[5572]: [000519809.941477] [qrtr] added server on 0:41 -> service 12, version 1, instance 0
[5572]: [000519809.941535] [qrtr] added server on 0:42 -> service 10, version 2, instance 0
[5572]: [000519809.941613] [qrtr] added server on 0:43 -> service 1, version 1, instance 0
[5572]: [000519809.941662] could not acquire the 'org.freedesktop.ModemManager1' service name
[5572]: [000519809.941705] [base-manager] stopping connection in object manager server
[5572]: [000519809.943183] ModemManager is shut down
[5572]: [000519809.943662] [auth-provider] singleton disposed
[5572]: [000519809.943749] [sleep-monitor-systemd] singleton disposed

xiaomi-vince:~# ModemManager staus

[2238]: [1686455444.168399] [qrtr0/qmi] QMI port open operation finished successfully

[2238]: [1686455444.168587] [qrtr0/probe] port is QMI-capable

[2238]: [1686455444.169100] [plugin-manager] task 0,qrtr0: found best plugin for port (qcom-soc)

[2238]: [1686455444.169226] [plugin-manager] task 0,qrtr0: finished in '2.411706' seconds

[2238]: [1686455444.169389] [plugin-manager] task 0,qrtr0: found best plugin: qcom-soc

[2238]: [1686455444.169509] [plugin-manager] task 0: no more ports to probe

[2238]: [1686455444.169645] [plugin-manager] task 0: all port probings completed, but not reached min probing time yet

[2238]: [1686455444.258216] [plugin-manager] task 0: min probing time elapsed

[2238]: [1686455444.258363] [plugin-manager] task 0: no more ports to probe

[2238]: [1686455444.258472] [plugin-manager] task 0: finished in '2.501421' seconds

[2238]: [1686455444.258685] [device qcom-soc] creating modem with plugin 'qcom-soc' and '1' ports

[2238]: [1686455444.258816] [plugin/qcom-soc] (qcom-soc) Qualcomm SoC modem found...

[2238]: [1686455444.269901] [qrtr0/qmi] port monitoring enabled in QMI port

[2238]: [1686455444.270120] [modem0] port 'qrtr/qrtr0' grabbed

[2238]: [1686455444.270323] [modem0] cleaning up port 'qrtr/qrtr0'...

[2238]: [1686455444.270613] [modem0] completely disposed

[2238]: [1686455444.270745] [base-manager] couldn't create modem for device 'qcom-soc': Failed to find a net port in the QMI modem

I tried the ofono branch ./list-modem can see the modem, but ./enable-modem reported an error.Invalid apn setting.

https://github.com/msm8953-mainline/ofono

How can I use the modem?

xiaomi-vince: static noise when idle and popping noise when starting/stopping audio (q6asm_dai)

Hi,

I am using postmarket OS edge (phosh) with the msm8953-mainline kernel of the linux-6.7.2/main branch.

The issues I am facing are:

  • static noise as soon as I have plugged in and switched to my headphones
    • The noise pattern depends on which parts of the device are powered (WiFi, screen etc.)
    • It seems to be some inductive coupling (or floating OpAmp input)
  • a loud pop sound when I start/stop sound playback (my ears still hurt 😢 )
    • After the pop sound the playback starts/stops perfectly

In some situations after wildly enabling/disabling or plugging/unplugging headphones and starting/stopping playback, the static noise is gone.

I assume the noise stems from some output not being turned off properly. Longnoserob suggested it could be an erroneously configured power-saving feature or option.

After investigating a bit further, I found out that almost always error messages appear in dmesg that look like this:

[70807.344061] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70807.344107] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70807.344123] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70807.344313] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70812.881674] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10bdb] not expecting rsp
[70843.282577] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10bdb] not expecting rsp
[70896.027385] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70896.027432] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70896.027449] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70896.027464] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10dac] not expecting rsp
[70901.294569] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10bdb] not expecting rsp

Again when pushing buttons randomly, sometimes these messages stop appearing (while the problem persists).

I wondered whether the alsa ucm configuration could be the culprit, but I have just started investigating and the current configuration looked very similar to what xml2ucm produces from an Android mixer_paths.xml file.

Does anyone have an idea what could cause these problems?

Regards,
spongy

EDIT:

There seem to exist specialized audio chips which suppress "clicks and pops".
For example analog devices says the following on their website:

Click-Pop Suppressors
Analog Devices provides integrated audio click-and-pop suppressors for devices, such as codecs that have integrated headphone amplifiers but lack a clickless and/or popless startup or shutdown.

That sounds pretty much like the cure to my problem and the Xiaomi Vince uses a wcd_codec which is compatible to qcom,pm8916-wcd-analog-codec.

The datasheet of the msm-8953 recommends three audio configurations:

  • PM8953 codec
  • PM8953 + WSA8810/WSA8815
  • WCD9326/WCD9335 + WSA8810/WSA8815

The datasheet of the WCD9335 features two protection mechanisms: click-and-pop and overcurrent.
The device tree features interrupts(?) for both protection mechanisms:

  • cdc_hphr_ocp_int: headphone right over-current protection interrupt <0x1 0xf1 0x1 IRQ_TYPE_NONE>
  • cdc_hphl_ocp_det: headphone left over-current protection detection/interrupt <0x1 0xf1 0x2 IRQ_TYPE_NONE>
  • cdc_hphr_cnp_int: headphone right click-and-pop interrupt <0x1 0xf1 0x4 IRQ_TYPE_NONE>
  • cdc_hphl_cnp_int: headphone left click-and-pop interrupt <0x1 0xf1 0x5 IRQ_TYPE_NONE>

So perhaps the click-and-pop protection mechanism is not enabled on my device.


On Xiaomi vince several kernel modules are loaded, so that I believe that the audio chip is controlled via these:

q6asm_dai              24576  1
q6routing             385024  2 q6asm_dai
q6voice_dai            20480  1
q6afe_clocks           12288  1
q6afe_dai              77824  1
q6voice                16384  1 q6voice_dai
q6adm                  16384  1 q6routing
q6asm                  32768  1 q6asm_dai
q6afe                  20480  4 q6voice,q6afe_dai,q6afe_clocks,q6adm
q6cvp                  12288  1 q6voice
q6cvs                  12288  0
q6mvm                  12288  1 q6voice
snd_q6dsp_common       45056  4 q6asm,q6afe_dai,q6afe_clocks,q6adm
q6voice_common         16384  4 q6cvp,q6voice,q6mvm,q6cvs
q6core                 12288  3 q6asm,q6afe,q6adm
apr                    20480  8 q6asm,q6cvp,q6core,q6mvm,q6afe,q6cvs,q6voice_common,q6adm
pdr_interface          24576  1 apr
qrtr_smd               16384  0
venus_dec              32768  0
venus_enc              28672  0
snd_soc_apq8016_sbc    12288  0
snd_soc_qcom_common    12288  1 snd_soc_apq8016_sbc
qrtr                   28672  47 qrtr_smd
qcom_camss            245760  16
snd_soc_msm8916_analog    49152  1

snd_soc_msm8916_analog is the real audio driver which is used for the pm8953 power management chip. This chip also provides the audio dac.


References:

Further references:

hynix SR556 camera sensor: errors at compile time (6.1.0)

this should be the offending commit 25f6279

drivers/media/i2c/sr556.c:1042:19: error: initialization of 'void (*)(struct i2c_client *)' from incompatible pointer type 'int (*)(struct i2c_client *)' [-Werror=incompatible-pointer-types]
 1042 |         .remove = sr556_remove,
      |                   ^~~~~~~~~~~~
drivers/media/i2c/sr556.c:1042:19: note: (near initialization for 'sr556_i2c_driver.remove')
cc1: some warnings being treated as errors
make[4]: *** [scripts/Makefile.build:250: drivers/media/i2c/sr556.o] Error 1

@vldly @alikates

Xiaomi MI A2 Lite Daisy - touchpad does not work

On my phone display, which has display ILITEK ili7807-fdhplus 1080x2280 video and probably touchpad gt917d is not working.

This is my personal issue for tracking the status , but everyone is of course free and welcome to help. Inspiration here: https://github.com/goodix/goodix_gt9xx_public

https://github.com/LineageOS/android_kernel_xiaomi_msm8953/blob/lineage-18.1/arch/arm64/boot/dts/qcom/apq8053-lite-dragon-v2.2.dtsi

Daisy config here:
https://github.com/qwertyuiopzxcvbnmlkjhgfdsa1/xiaomi-daisy-touchpad-config

UPDATE2: Configuration is correctly applied, remaining issue is with IRQ. There is a function which tries to find description in devices radix tree structure by irq 0, but there is no description, thus it fails. Debugging why it happend.

UPDATE3:IRQ=0 it could be parent irq, nobody knows much

ARCHIVE
###Old Open questions:
1, Is my touchpad really goodix gt917d?
2, Is gt917s, which is base of this work actually working for anyone? I doubt that those two original lines work, there should be surely different values:
reset-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>;
irq-gpios = <&tlmm 65 GPIO_ACTIVE_HIGH>;
3, How to get know what value holds magic strings like "IRQ_TYPE_EDGE_FALLING"?
4, Some debuging - howto get more debug on boot?
5, Why AVDD28 is uppercase? And how original author know what names to use?
6, Datasheet for gt917d are not to be found. There are only for gt917s. Strange.

Question about config

Hi all! I have a question, every update of the kernel version I have to build my own kernel, to add an external usb wifi adapter mt7601u driver, will there ever be usb_wifi.config or full.config, for example, to make a full-fledged PC (or PDA, whatever you like) . In the kernel, almost everything is disabled, supposedly superfluous, more like the android kernel. I would like pmos to be, like other linux distributions in which almost everything is included in the kernel. And not to build the kernel on my own for the equipment I need, but what would such a kernel be publicly available to everyone in the main update repository.

xiaomi-vince Synaptics touchscreen not working

Hello, I installed pmos using pmbootstrap on Redmi 5 Plus (Synaptics touchscreen which should work) and have no working touch. Tried plasma and phosh, another got me read-only error.
In dmesg I have

[    3.646048] rmi4_i2c 2-0020: rmi_set_page: set page failed: -6.

[    3.646067] rmi4_i2c 2-0020: Failed to set page select to 0

Touchscreen doesnt work on Tissot

Hi, devs
I just Installed pmOS on tissot. But I got new issue here. Touchscreen doesn't worked at all. I think this error log below related with touchscreen issue

[ 15.840533] edt_ft5x06 3-0038: touchscreen probe failed
[ 15.841581] edt_ft5x06: probe of 3-0038 failed with error -110

And here is full dmesg error log
log.txt

1659840436510.mp4

Let me know if this error log is still lack and need more info for further fix
Anyway, thank you for your hard work.

Initial support for qpnp-qg fuel gauge on Fairphone3

I've pushed an early version of a driver for the fuel gauge on the fairphone3 (earlier hardware version) to the branch msm8953_v6.4_gpu_wlan_modem_ipa_cpufreq_qg of https://github.com/spasswolf/msm8953-linux.git.

commit a46ef5194c8f424bc6a337d203fc10978021896c (HEAD -> msm8953_v6.4_gpu_wlan_modem_ipa_cpufreq_qg, msm8953-linux/msm8953_v6.4_gpu_wlan_modem_ipa_cpufreq_qg)
Author: Bert Karwatzki <[email protected]>
Date:   Sun Jul 16 14:38:55 2023 +0200

    power: suppyly: qcom_qg: Initial qpnp-qg fuel gauge support.
    
    This commit adds initial support for the qpnp-qg fuel gauge based
    partly on the downstream driver[1]. So far voltage and current measurement
    work and the capacity is estimated using lookup tables adapted from
    the downstream kernel[1]. Interrupt support has not yet been added.
    
    [1]: https://code.fairphone.com/projects/fairphone-3/gpl.html
    
    Signed-off-by: Bert Karwatzki <[email protected]>

commit 8396191d3bf2267549e5fb3965366e1ef5e31dae
Author: Bert Karwatzki <[email protected]>
Date:   Sun Jul 16 15:18:06 2023 +0200

    drivers: iio: adc: qcom-spmi-adc5: Add bat_therm channel.
    
    The qpnp-qg fuel gauge driver in the downstream kernel [1] for the
    fairphone-fp3 uses this channel to read the battery temperature.
    
    [1] https://code.fairphone.com/projects/fairphone-3/gpl.html
    
    Signed-off-by: Bert Karwatzki <[email protected]>

What works is current and voltage measuring and capacity estimation:

$ cat /sys/class/power_supply/qcom-battery/uevent 
POWER_SUPPLY_NAME=qcom-battery
POWER_SUPPLY_TYPE=Battery
POWER_SUPPLY_TECHNOLOGY=Li-ion
POWER_SUPPLY_CAPACITY=94
POWER_SUPPLY_CURRENT_NOW=-344848
POWER_SUPPLY_VOLTAGE_NOW=4300504
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=3400000
POWER_SUPPLY_VOLTAGE_MAX_DESIGN=4390000
POWER_SUPPLY_CHARGE_FULL_DESIGN=3056000
POWER_SUPPLY_TEMP=33186

Voltage is in µV and current in µA, negative current seems to show that we're charging (which seems to work even without charger support in kernel).

Edit: Capacity estimation seems to be off by about 3 percentage points when charging, perhaps because the measured voltage is used directly without correcting for internal resistance and because the lookup table used are those for the non-charging case.

DMA for I2C

Need to check if blsp dma works with something like the following diff:

diff --git a/arch/arm64/boot/dts/qcom/msm8953.dtsi b/arch/arm64/boot/dts/qcom/msm8953.dtsi
index 32349174c4bd..75850ce460a2 100644
--- a/arch/arm64/boot/dts/qcom/msm8953.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8953.dtsi
@@ -1155,6 +1155,16 @@ opp-200000000 {
 			};
 		};
 
+		blsp1_dma: dma-controller@7884000 {
+			compatible = "qcom,bam-v1.7.0";
+			reg = <0x07884000 0x1f000>;
+			interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_AHB_CLK>;
+			clock-names = "bam_clk";
+			#dma-cells = <1>;
+			qcom,ee = <0>;
+		};
+
 		uart_0: serial@78af000 {
 			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
 			reg = <0x78af000 0x200>;
@@ -1173,6 +1183,8 @@ i2c_1: i2c@78b5000 {
 			clock-names = "core", "iface";
 			clocks = <&gcc GCC_BLSP1_QUP1_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
+			dmas = <&blsp1_dma 4>, <&blsp1_dma 5>;
+			dma-names = "tx", "rx";
 
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c_1_default>;
@@ -1191,6 +1203,8 @@ i2c_2: i2c@78b6000 {
 			clock-names = "core", "iface";
 			clocks = <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
+			dmas = <&blsp1_dma 6>, <&blsp1_dma 7>;
+			dma-names = "tx", "rx";
 
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c_2_default>;
@@ -1209,6 +1223,9 @@ i2c_3: i2c@78b7000 {
 			clock-names = "core", "iface";
 			clocks = <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
+			dmas = <&blsp1_dma 8>, <&blsp1_dma 9>;
+			dma-names = "tx", "rx";
+
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c_3_default>;
 			pinctrl-1 = <&i2c_3_sleep>;
@@ -1226,6 +1243,9 @@ i2c_4: i2c@78b8000 {
 			clock-names = "core", "iface";
 			clocks = <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP1_AHB_CLK>;
+			dmas = <&blsp2_dma 10>, <&blsp2_dma 11>;
+			dma-names = "tx", "rx";
+
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c_4_default>;
 			pinctrl-1 = <&i2c_4_sleep>;
@@ -1236,6 +1256,16 @@ i2c_4: i2c@78b8000 {
 			status = "disabled";
 		};
 
+		blsp2_dma: dma-controller@7ac4000 {
+			compatible = "qcom,bam-v1.7.0";
+			reg = <0x07ac4000 0x1f000>;
+			interrupts = <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP2_AHB_CLK>;
+			clock-names = "bam_clk";
+			#dma-cells = <1>;
+			qcom,ee = <0>;
+		};
+
 		i2c_5: i2c@7af5000 {
 			compatible = "qcom,i2c-qup-v2.2.1";
 			reg = <0x7af5000 0x600>;
@@ -1243,6 +1273,9 @@ i2c_5: i2c@7af5000 {
 			clock-names = "core", "iface";
 			clocks = <&gcc GCC_BLSP2_QUP1_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP2_AHB_CLK>;
+			dmas = <&blsp2_dma 4>, <&blsp2_dma 5>;
+			dma-names = "tx", "rx";
+
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c_5_default>;
 			pinctrl-1 = <&i2c_5_sleep>;
@@ -1260,6 +1293,9 @@ i2c_6: i2c@7af6000 {
 			clock-names = "core", "iface";
 			clocks = <&gcc GCC_BLSP2_QUP2_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP2_AHB_CLK>;
+			dmas = <&blsp2_dma 6>, <&blsp2_dma 7>;
+			dma-names = "tx", "rx";
+
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c_6_default>;
 			pinctrl-1 = <&i2c_6_sleep>;
@@ -1277,6 +1313,9 @@ i2c_7: i2c@7af7000 {
 			clock-names = "core", "iface";
 			clocks = <&gcc GCC_BLSP2_QUP3_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP2_AHB_CLK>;
+			dmas = <&blsp2_dma 8>, <&blsp2_dma 9>;
+			dma-names = "tx", "rx";
+
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c_7_default>;
 			pinctrl-1 = <&i2c_7_sleep>;
@@ -1294,6 +1333,9 @@ i2c_8: i2c@7af8000 {
 			clock-names = "core", "iface";
 			clocks = <&gcc GCC_BLSP2_QUP4_I2C_APPS_CLK>,
 				 <&gcc GCC_BLSP2_AHB_CLK>;
+			dmas = <&blsp2_dma 10>, <&blsp2_dma 11>;
+			dma-names = "tx", "rx";
+
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&i2c_8_default>;
 			pinctrl-1 = <&i2c_8_sleep>;

edit: doesn't seem relevant for now but spi uses qcom,bam-consumer-pipe-index & qcom,bam-producer-pipe-index; and for uart qcom,bam-tx-ep-pipe-index & qcom,bam-rx-ep-pipe-index for the indexes, not dmas property like i2c downstream

s5k2xx camera sensor driver: errors at compile time (6.1.0)

offending commit 257fb45

drivers/media/i2c/s5k2xx.c:1464:19: error: initialization of 'void (*)(struct i2c_client *)' from incompatible pointer type 'int (*)(struct i2c_client *)' [-Werror=incompatible-pointer-types]
 1464 |         .remove = s5k2xx_remove,
      |                   ^~~~~~~~~~~~~
drivers/media/i2c/s5k2xx.c:1464:19: note: (near initialization for 's5k2xx_i2c_driver.remove')
cc1: some warnings being treated as errors

@vldly @alikates

xiaomi-vince: power management issues (supend transitions, i2c/smbus, synaptic rmi4)

Hi,

currently I am experiencing issues with postmarket OS on my Xiaomi Redmi 5 Plus. I am using a dual-boot configuration with lk2nd flashed to recovery and postmarket OS flashed on an external SD card.

The issues are most likely power management related. When they set in, the phone turns the screen on, shows the lockscreen and then turns off again after a while. The dmesg output (obtained via ssh) shows [ 8324.012680] ltrf216a 0-0053: failed to resume runtime PM: -22 repeatedly (with a frequency of 3 to 5 times per second). Finally the touchscreen becomes unresponsive and cannot be used anymore - hardware buttons still work.

I assume these issues occur because some problems with the power management. At first I suspected the bit banging of the I2C bus might be responsible but idk.

I have tested the kernels 6.6.10 and 6.7.0 (head) both yield the same behavior.

(I am not sure but the issue often occurred after I unplugged the phone from my computer's USB. Yet the issue also occurs after just setting the phone to standby.)

Do you have any clues what the underlying issue might be?

EDIT-1: Added dmesg log on linux 6.7.0. Pattern repeats at regular intervals. Only CPU failure differs.

postmarketos-xiaomi-vince-linux-6.7.0-86d576e1465a5216cb2f1bb420fa39d5f85cf52c.txt

EDIT-2: Added dmesg log on linux 6.7.0. Pattern occurs when standby button is pressed for a short time.

postmarketos-xiaomi-vince-linux-6.7.0-86d576e1465a5216cb2f1bb420fa39d5f85cf52c-short_power_button_press.txt

EDIT-3: I have verified that the problems persist in version 6.7.2-r0 (with modification CONFIG_RT_GROUP_SCHED=n).

The line [ 8324.012680] ltrf216a 0-0053: failed to resume runtime PM: -22 now only shows when the device is woken up. Pressing hardware buttons does not seem to result in errors anymore.

There is still the wake up behavior where the display randomly turns on and runs down the battery.

postmarketos-xiaomi-vince-linux-6.7.2-r0__standby_button_on_and_off.txt

EDIT-4: The issues usually start when the phone tries to go into power saving mode (as set up in the energy settings, for me after approx. 15 minutes on battery or connected to mains).

EDIT-5: In the following log the above described issue start [ 1752.862237] PM: suspend entry (s2idle).

xiaomi-6.7.2-r0_dmesg_when_auto_standby_kicks_in_after_15min.txt

The most important lines (before the suspend is stopped and then retried again):

[ 1752.899606] wcn36xx: ERROR SMD_EVENT (312) not supported
[ 1753.049071] rmi4_f01 rmi4-00.fn01: Failed to write sleep mode: -6.
[ 1753.049095] rmi4_f01 rmi4-00.fn01: Suspend failed with code -6.
[ 1753.049106] rmi4_physical rmi4-00: Failed to suspend functions: -6
[ 1753.049128] rmi4_i2c 2-0020: Failed to resume device: -6
[ 1753.049147] rmi4_i2c 2-0020: PM: dpm_run_callback(): rmi_i2c_suspend+0x0/0x6c [rmi_i2c] returns -6
[ 1753.049192] rmi4_i2c 2-0020: PM: failed to suspend async: error -6
[ 1753.049494] PM: Some devices failed to suspend, or early wake event detected

Related:


EDIT-6: Okay, after digging through the kernel mailing list, this seems to be a long standing issue of the RMI4 driver. It seems not to model parent child relations properly, so that the power management suspends certain parts of the platform that are still needed (as far as I understood the child relationship to the I2C device is modeled properly but there are other undiscovered dependencies).

  • The asynchronous suspend mechanism might trigger this issue because RMI4 might be suspended earlier or later than defined by the hardware declaration order.
    • Disabling async suspend, might help if the declaration order was working before async suspend was enabled.

Related discussions:

Kernel discussion

Issue related commits:

  • 5b6164d ("driver core: Reorder devices on successful probe")
  • 172d931 ("i2c: enable async suspend/resume on i2c client devices")

Collection of magical workarounds (mostly hiding the issues with some likelihood):

  • Sometimes suggested but ineffective for vince (no psmouse module): Add psmouse.synaptics_intertouch=0 to kernel boot cmdline
  • Add fw_devlink=on to kernel boot cmdline
  • Revert ("driver core: Reorder devices on successful probe")
  • Revert ("i2c: enable async suspend/resume on i2c client devices")

Workaround for pmos:

  • Go to energy settings and disable "automatic suspend after x minutes" for both "on battery" and "connected to AC"
  • Locking the device via hardware button seems to work for vince (I guess only the screen is turned off and the screen locked)

panel-fairphone-fp3-hx83112b.c: errors at compile time (6.1.0)

with latest 6.1.0 branch

drivers/gpu/drm/panel/msm8953-generated/panel-fairphone-fp3-hx83112b.c:435:19: error: initialization of 'void (*)(struct mipi_dsi_device *)' from incompatible pointer type 'int (*)(struct mipi_dsi_device *)' [-Werror=incompatible-pointer-types]
  435 |         .remove = djn_hx83112b_remove,
      |                   ^~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/panel/msm8953-generated/panel-fairphone-fp3-hx83112b.c:435:19: note: (near initialization for 'djn_hx83112b_driver.remove')
cc1: some warnings being treated as errors

@z3ntu @mtvec @alikates

v6.1.0 testing

Hi, can we get the kernel tested on all devices so we can update the aport package?

Tested on:

  • mido
  • daisy
  • tissot
  • ocean
  • vince
  • fp3
  • a6plte

(tell me if i'm missing any)

How to show the kernel log when the kernel booted

I have a huawei msm8953 device and I tried to port the mainline kernel on it.I built it and booted it,but I weit about 10 second and it reboot into a QUALCOMM mode,and it is not the 9008/9006 mode.I do not know that what mode it is : ( .The UART has been disabled in bootloader and it cannot enable,I do not know that where I can find the log.......

Upstream msm8953.dtsi

We should aim to get at least basic parts of msm8953.dtsi upstream as it's quite well working but the file isn't upstream at all.

@SirSireesh Can I help with this, or do you already have a plan for this?

[PROPOSAL] Xiaomi Redmi Note 5 / Plus support

Hi @junak ,
hereby I want to propose support for another device powered by the msm8953 SoC. I'm talking about the Xiaomi Redmi Note 5 / Plus (codename vince). I am currently maintaining the downstream kernel for PostmarketOS and would be more than happy to test your efforts.
The most popular and fully working kernel repo for vince is here
and another great kernel (with some cherry-picks from 4.14) is here
Best regards and thanks for all your hard work done until now

motorola-potter Tianma panel name changed

Between branches msm8953-5.18.3 and msm8953-6.0.10 the Tianma panel driver name changed from tianma-tl052vdxp02 to tianma-tl052vdpx02. I am pretty sure that the original "xp" name is correct and the new "px" name is incorrect. I believe this issue came from the lk2nd motorola-potter device tree where the panel has the exact same spelling mistake

Xiaomi Mi A2 Lite (xiaomi-daisy) slow GPU

Using this kernel with PostmarketOS v23.12. Graphics is very slow. The driver seems to be loaded:

OpenGL vendor string: freedreno
OpenGL renderer string: FD506
OpenGL core profile version string: 3.1 Mesa 23.3.1
OpenGL core profile shading language version string: 1.40
OpenGL core profile context flags: (none)
OpenGL core profile extensions:
OpenGL version string: 3.1 Mesa 23.3.1
OpenGL shading language version string: 1.40
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 23.3.1
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
OpenGL ES profile extensions:

Slow interface and web graphics:
2023-12-21_17-26
(Not really sure if it's the right place for posting this)

error on 6.3 compilation due to sm5708 (used by sdm450-samsung-a6plte-r4.dts)

@alikates

../drivers/power/supply/sm5708_fuelgauge.c:769:23: error: initialization of 'int (*)(struct i2c_client *)' from incompatible pointer type 'int (*)(struct i2c_client *, const struct i2c_device_id *)' [-Werror=incompatible-pointer-types]
  769 |         .probe      = sm5708_battery_probe,
      |                       ^~~~~~~~~~~~~~~~~~~~
../drivers/power/supply/sm5708_fuelgauge.c:769:23: note: (near initialization for 'sm5708_fuelgauge_driver.<anonymous>.probe')

msm8953

Is msm8953 soc fully supported?

xiaomi ysl wifi connect 4WAY_HANDSHAKE_TIMEOUT

[   39.455604] wcn36xx: ERROR SMD_EVENT (312) not supported
[   41.279358] q6asm-dai c200000.remoteproc:smd-edge:apr:service@7:dais: command[0x10bdb] not expecting rsp
[   71.856710] wlan0: authenticate with 9c:9d:7e:64:0c:65
[   71.905212] wlan0: send auth to 9c:9d:7e:64:0c:65 (try 1/3)
[   71.943385] wlan0: authenticated
[   71.946826] wlan0: associate with 9c:9d:7e:64:0c:65 (try 1/3)
[   71.970867] wlan0: RX AssocResp from 9c:9d:7e:64:0c:65 (capab=0xc11 status=0 aid=4)
[   72.006011] wlan0: associated
[   78.092067] wlan0: deauthenticated from 9c:9d:7e:64:0c:65 (Reason: 15=4WAY_HANDSHAKE_TIMEOUT)
[   78.119923] wcn36xx: ERROR SMD_EVENT (312) not supported
[ 1425.822255] [drm:mdp5_irq_error_handler [msm]] *ERROR* errors: 04000000
[ 1588.133062] wlan0: authenticate with 9c:9d:7e:64:0c:65
[ 1588.187599] wlan0: send auth to 9c:9d:7e:64:0c:65 (try 1/3)
[ 1588.224597] wlan0: authenticated
[ 1588.226837] wlan0: associate with 9c:9d:7e:64:0c:65 (try 1/3)
[ 1588.251002] wlan0: RX AssocResp from 9c:9d:7e:64:0c:65 (capab=0xc11 status=0 aid=4)
[ 1588.285477] wlan0: associated
[ 1594.374641] wlan0: deauthenticated from 9c:9d:7e:64:0c:65 (Reason: 15=4WAY_HANDSHAKE_TIMEOUT)
[ 1594.415926] wcn36xx: ERROR SMD_EVENT (312) not supported
[ 1650.775880] wlan0: authenticate with 9c:9d:7e:64:0c:65
[ 1650.826507] wlan0: send auth to 9c:9d:7e:64:0c:65 (try 1/3)
[ 1650.873112] wlan0: authenticated
[ 1650.878979] wlan0: associate with 9c:9d:7e:64:0c:65 (try 1/3)
[ 1650.903031] wlan0: RX AssocResp from 9c:9d:7e:64:0c:65 (capab=0xc11 status=0 aid=4)
[ 1650.938080] wlan0: associated
[ 1657.026323] wlan0: deauthenticated from 9c:9d:7e:64:0c:65 (Reason: 15=4WAY_HANDSHAKE_TIMEOUT)
[ 1657.056196] wcn36xx: ERROR SMD_EVENT (312) not supported

rpmpd(and maybe qcom-cpufreq-nvmem?) are broken on sdm632

So @z3ntu and I noticed 5.18 didn't work on our sdm632 devices. We went and compared logs and we found that we had these lines in common in our stack traces:

4>[^@   0.482967] Call trace:
<4>[    0.482973]  of_get_next_available_child+0x98/0xc0
<4>[    0&482984]  _of_add_table_indexed+0x5f0/0x8e4
<4>[    0.482995]  dev_pm_opp_of_add_table_in$exed+0p14/0x20

However z3ntu at first got that from dsi and adreno drivers, while I did with rpmpd. However eventually we find out that disabling CPU OPPs seemed to get us to initramfs(although very slowly) at least. I change match_data in cpufreq_nvmem to kryo because of an oversight from my side that thought it would fix it. And it kinda did: cpufreq-nvmem didn't probe successfully but otherwise my ocean was usable in weston. However I noticed an error about "Not Snapdragon 820/821!" on my log so I reverted and decided to look deeper.

I noticed a line <3>[ 0.196112] cpu cpu0: Failed to add OPP name speed6-pvs0-v0. I later find out it's erroring out with -EPROBE_DEFER. A dependency with rpmpd perhaps? Would explain why it fails just before rpmpd panics. And yep, making rpmpd to sleep for 10 seconds made nvmem to probe deferral timeout, confirming my theory.

I went and look from the rpmpd side, and it seems the problem starts here. I did some printk debugging and it eventually led to here. But after that I can't get to figure it out. It doesn't help that that function is used quite a lot so I can't just pr_err away because my log gets filled out and slows the phone down.

Anyway, I also can't get the phone to boot fine again without nvmem(it hangs on initfs). I may have modified something else when I tried the kryo_match_table in nvmem and now I can't figure out what. I also think it's possible disabling CPU OPP works because the phone is too slow to get to rpmpd in the first place.

EDIT: @alikates Said on Matrix that this affects his sdm625 too. Maybe it isn't sdm632 exclusive?
Full ramoops:
ramoops.txt

linux-6.3 needs cache-size in devicetree

Since linux-6.3 booting linux on the fairphone-fp3 gives the following error messages:

[    4.682114] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    4.682158] CPU0: Booted secondary processor 0x0000000000 [0x51af8014]
[    4.700324] Detected VIPT I-cache on CPU1
[    4.700373] cacheinfo: Unable to detect cache hierarchy for CPU 1
[    4.700414] CPU1: Booted secondary processor 0x0000000001 [0x51af8014]
[    4.719364] Detected VIPT I-cache on CPU2
[    4.719402] cacheinfo: Unable to detect cache hierarchy for CPU 2
[    4.719436] CPU2: Booted secondary processor 0x0000000002 [0x51af8014]
[    4.737968] Detected VIPT I-cache on CPU3
[    4.738006] cacheinfo: Unable to detect cache hierarchy for CPU 3
[    4.738042] CPU3: Booted secondary processor 0x0000000003 [0x51af8014]
[    4.756919] Detected VIPT I-cache on CPU4
[    4.756970] cacheinfo: Unable to detect cache hierarchy for CPU 4
[    4.757009] CPU4: Booted secondary processor 0x0000000100 [0x51af8002] 
[    4.773856] Detected VIPT I-cache on CPU5
[    4.773892] cacheinfo: Unable to detect cache hierarchy for CPU 5
[    4.773922] CPU5: Booted secondary processor 0x0000000101 [0x51af8002]
[    4.791914] Detected VIPT I-cache on CPU6
[    4.791951] cacheinfo: Unable to detect cache hierarchy for CPU 6
[    4.791981] CPU6: Booted secondary processor 0x0000000102 [0x51af8002]

This patch fixes this on the fairphone-fp3, but similar patches will be needed for other devices:

commit 46d99d083306e88af47c5943b8229551fd63d720
Author: Bert Karwatzki <[email protected]>
Date:   Sat May 13 13:04:10 2023 +0200

    Add {i,d}-cache-size properties to the CPU nodes, cache-size
    and unified-cache properties to the L2 nodes.

diff --git a/arch/arm64/boot/dts/qcom/msm8953.dtsi b/arch/arm64/boot/dts/qcom/msm8953.dtsi
index 8328bac9f690..a88df4f14299 100644
--- a/arch/arm64/boot/dts/qcom/msm8953.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8953.dtsi
@@ -284,11 +284,13 @@ CLUSTER_PC: cluster-power-collapse {
 		L2_0: l2-cache-0 {
 			compatible = "cache";
 			cache-level = <2>;
+			cache-unified;
 		};
 
 		L2_1: l2-cache-1 {
 			compatible = "cache";
 			cache-level = <2>;
+			cache-unified;
 		};
 	};
 
diff --git a/arch/arm64/boot/dts/qcom/sdm632.dtsi b/arch/arm64/boot/dts/qcom/sdm632.dtsi
index 8f0c8e686733..ff9f943bf2ef 100644
--- a/arch/arm64/boot/dts/qcom/sdm632.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm632.dtsi
@@ -148,29 +148,43 @@ cpu7-thermal {
 /*
  * SDM632 uses Kryo 250 instead of Cortex A53
  * CPU0-3 are efficiency cores, CPU4-7 are performance cores
+ * cache sizes taken from
+ * https://en.wikipedia.org/wiki/Kryo#Kryo_250
  */
 &CPU0 {
 	compatible = "qcom,kryo250";
 	clocks = <&apcc_c0_mux>;
 	clock-names = "cpu";
+	i-cache-size = <0x8000>;
+	d-cache-size = <0x8000>;
 };
 
 &CPU1 {
 	compatible = "qcom,kryo250";
 	clocks = <&apcc_c0_mux>;
 	clock-names = "cpu";
+	i-cache-size = <0x8000>;
+	d-cache-size = <0x8000>;
 };
 
 &CPU2 {
 	compatible = "qcom,kryo250";
 	clocks = <&apcc_c0_mux>;
 	clock-names = "cpu";
+	i-cache-size = <0x8000>;
+	d-cache-size = <0x8000>;
 };
 
 &CPU3 {
 	compatible = "qcom,kryo250";
 	clocks = <&apcc_c0_mux>;
 	clock-names = "cpu";
+	i-cache-size = <0x8000>;
+	d-cache-size = <0x8000>;
+};
+
+&L2_0 {
+	cache-size = <0x80000>;
 };
 
 &apcc_pll {
@@ -225,6 +239,8 @@ &CPU4 {
 	clocks = <&apcc_c1_mux>;
 	clock-names = "cpu";
 	power-domains = <&cpr 1>;
+	i-cache-size = <0x8000>;
+	d-cache-size = <0x8000>;
 };
 
 &CPU5 {
@@ -233,6 +249,8 @@ &CPU5 {
 	clocks = <&apcc_c1_mux>;
 	clock-names = "cpu";
 	power-domains = <&cpr 1>;
+	i-cache-size = <0x8000>;
+	d-cache-size = <0x8000>;
 };
 
 &CPU6 {
@@ -241,6 +259,8 @@ &CPU6 {
 	clocks = <&apcc_c1_mux>;
 	clock-names = "cpu";
 	power-domains = <&cpr 1>;
+	i-cache-size = <0x8000>;
+	d-cache-size = <0x8000>;
 };
 
 &CPU7 {
@@ -249,6 +269,12 @@ &CPU7 {
 	clocks = <&apcc_c1_mux>;
 	clock-names = "cpu";
 	power-domains = <&cpr 1>;
+	i-cache-size = <0x8000>;
+	d-cache-size = <0x8000>;
+};
+
+&L2_1 {
+	cache-size = <0x100000>;
 };
 
 &cpr {

sdhc_1 eMMC ICE support

I'm quite sure our sdhc_1 supports some crypto stuff (ICE). Need to check at runtime if that's actually the case and if that works correctly.

diff --git a/arch/arm64/boot/dts/qcom/msm8953.dtsi b/arch/arm64/boot/dts/qcom/msm8953.dtsi
index 32349174c4bd..025684357f9a 100644
--- a/arch/arm64/boot/dts/qcom/msm8953.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8953.dtsi
@@ -1042,8 +1042,11 @@ usb3_dwc3: usb@7000000 {
 		sdhc_1: mmc@7824900 {
 			compatible = "qcom,msm8953-sdhci", "qcom,sdhci-msm-v4";
 
-			reg = <0x7824900 0x500>, <0x7824000 0x800>;
-			reg-names = "hc", "core";
+			reg = <0x7824900 0x500>,
+			      <0x7824000 0x800>,
+			      <0x7824e00 0x200>,
+			      <0x7803000 0x8000>;
+			reg-names = "hc", "core", "cqhci", "ice";
 
 			interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
 				     <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
@@ -1051,8 +1054,9 @@ sdhc_1: mmc@7824900 {
 
 			clocks = <&gcc GCC_SDCC1_AHB_CLK>,
 				 <&gcc GCC_SDCC1_APPS_CLK>,
-				 <&xo_board>;
-			clock-names = "iface", "core", "xo";
+				 <&xo_board>,
+				 <&gcc GCC_SDCC1_ICE_CORE_CLK>;
+			clock-names = "iface", "core", "xo", "ice";
 
 			power-domains = <&rpmpd MSM8953_VDDCX>;
 			operating-points-v2 = <&sdhc1_opp_table>;
@@ -1066,6 +1070,7 @@ sdhc_1: mmc@7824900 {
 			mmc-ddr-1_8v;
 			bus-width = <8>;
 			non-removable;
+			supports-cqe;
 
 			status = "disabled";
 

Some message like [ 0.391950] sdhci_msm 4744000.mmc: mmc0: CQE init: success for the supports-cqe property should pop up. Not sure how to validate ICE really.

edit: test commands from Konrad:

mkfs.ext4 -O encrypt part
mount -o inlinecrypt ...
fscrypt setup
mkdir secret/
fscrypt encrypt secret/
~ add some files to secret/ ~
~ you should/could get some spam in dmesg ~
umount 
mount without inlinecrypt
you should have garbage (encrypted) data
fscrypt status private/ # Unlocked: No
fscrypt unlock private/
fscrypt status private/ # Unlocked: Yes
check that the files are still in there
fscrypt lock private/
fscrypt status private/ # Unlocked: No
Check that you have the same sort of garbage (encrypted) files as before

extra edit: more something like this


# CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y
fallocate -l 1G part
mkfs.ext4 -O encrypt part
mkdir mount/
sudo mount -o inlinecrypt part mount/
sudo fscrypt setup # do this once
sudo fscrypt setup mount/
sudo mkdir mount/secret/
sudo fscrypt encrypt mount/secret/
# ~ add some files to secret/ ~
    echo "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." | sudo tee mount/secret/lorem.txt
    sudo f3write -e 1 mount/secret/
# ~ you should/could get some spam in dmesg ~
sudo umount mount/
sudo mount part mount/ # mount without inlinecrypt
# you should have garbage (encrypted) data
sudo fscrypt status mount/ # Unlocked: No
sudo fscrypt unlock mount/secret/
sudo fscrypt status mount/ # Unlocked: Yes
# check that the files are still in there
sudo fscrypt lock mount/secret/
sudo fscrypt status mount/ # Unlocked: No
Check that you have the same sort of garbage (encrypted) files as before

IPA upstreaming

Last time I rebased IPA patches was with kernel version 6.1 and it was half-working.
Let's try tu update them to kernel-next/6.3 with the objective of upstreaming.

Upstream GPU support

Required getting rid of some hacks like 3bc4027 and probably some IOMMU things.

@vldly Can you share any details why these hacks exist right now and a possible way to not need them anymore?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.