Implementing and Testing PinePhone Pro Support with Freedesktop-SDK Kernel (read description for info about the PinePhone)
Description
Given that !2432 (merged) is merged, we need to consider what we need to make the PinePhone Pro run physically using the freedesktop-sdk kernel. This also extends to the QEMU tests inside CI, i.e., we need to have an image that we can boot through QEMU with updated
tests.
We are not considering the PinePhone in this issue, with the likelihood of us dropping support for it in the long-run.
For reference, patches for pinephone pro kernel (for the current 6.6 series) are at:
For reference, the freedesktop-sdk branch that was used during development to test !2455 (merged) is:
To view our initiative to add UART 8250 support in QEMU, refer to our feature request:
Related MR's:
- !2455 (merged)
- https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/merge_requests/18165 (master)
- https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/merge_requests/18907 (master)
-
https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/merge_requests/18908 (backport of above 2 commits for the
release/23.08
branch)
Issue summary:
This issue was about us using the freedesktop-sdk kernel because we did not want to rely on a custom kernel and risk the same problems we faced with the original megous kernel.
Thus, we grabbed the patches from the linked pine64
repository. Using the patches alone was not sufficient.
Consequently, I created a small Python program to parse through the configs from the pine64 repository and those from sailfish-on-dontbeevil/kernel-megi(since this is a working customised kernel that would provide us with some clues).
The parser gave us ~ 250+
configs with both boards working. (The PinePhone was slightly lacking in Wi-Fi, Bluetooth etc. However, we were not concerned since we originally planned to drop the PinePhone and work solely on the PinePhone Pro).
Both I and @akitouni (mainly @akitouni) minimised this down to 23
(20 standard configs + 3 custom ones via the patches) because my parser cannot differentiate between modules and what is enabled through the junctions fdsdk-config.sh (directly through it's enable
and module
commands). We minimised the set by considering what GNOME is bringing in and what configs look like they are needed for making these boards boot.
As the junction updated, we eventually had issues with our patches applying to newer kernel tags. As a final attempt; I was asked to record the configs and the freedesktop-sdk kernel (research showed the PinePhone Pro works on version 6.1; however, we did not witness this behaviour.
Although, once the freedesktop-sdk kernel was combined with the 20 configs (excluding the additional 3 which rely on custom patches to our kernel, e.g., typex-to-extcon-bridge-driver
the PinePhone Pro and PinePhone worked (with both lack Wi-Fi, Bluetooth, sound, SMS, calling etc.) Hence, the upstream MR to freedesktop-sdk contains 20 standard configs alone. The additional 3 configs from their patches seem to be what enabled the PinePhone Pro to boot with Wi-Fi, Bluetooth, sound etc...)
We can close this issue down because our objective of getting the freedesktop-sdk kernel to work with the PinePhone Pro is complete. Having the PinePhone is a bonus. Officially, this is still about the PinePhone Pro because those configs that were computed using the pine64 against the sailfish against the freedesktop-sdk kernel used the PinePhone Pro configs. We are fortunate to see that these configs work for the original board just as much.
CC: