Intro
My dissatisfaction with very slow "mainlining" in the sdm845-mainline project grew stronger and stronger.
Few points which made me unhappy:
- the project enforced no mainlining policy, e.g. patches has been added, but never sent upstream
- various quality ‒ some "premium" patches, but also many of hacked-up ugly ones, and hacks without clear path to mainline
- very slow progress due to maintainers not having time.
I understand,
- that getting devices work is important (even in questionable quality), but there also needs to be effort to guide people to contribute to mainline
- that rebases are sometimes pain and very hard to do, when debugging multiple devices issues at the time, but I would definitely love to see higher quality rebase and maintainance of the tree, where I believe maintainers have the experience to get there, but that get us to the third point...
- maintainers may not have that much free time to focus on sdm845-mainline. As far I know, it's volunteer work, so I understand no-one (!) should demand time of the people volunteering to do something nice for community, but then it's the duty of maintainers to find someone who will.
More than a month ago I decided to not rely on mercy of others (giving access to the project), but proactively push towards the future I was hoping will happen few years ago.
The power of open-source I believe is in forking. When you see something doesn't work for you or the community, you're free to fork. It's also double-edged sword. Multiple forks may hurt the community. Luckily here, we have one mainline kernel, where interests of everyone meets!
Week 0 (14. ‒ 20. 11.)
Needed to setup the basics, communication channels, invite people interested in progress, and get the repository running.
Code won't compile, many bugs. We need to sort out patches. Moved multiple commits supporting devices I don't posses into MR aside, to get basics working first.
The toughest week. Nothing works. There will be dragons.
Many patches needs big re-bases and rework, everything conflict with anything. This needs to be addressed.
David Heidelberg
- Created Matrix room #sdm845:ixit.cz setup, invites.
- Started using b4 commits as a separators for patchsets in sdm845-next.
- This provides amazing ability to change
b4/branches and then just cherry-pick commits into the integration branchsdm845-next
- This provides amazing ability to change
- Resolved merge conflicts for most of the patches from sdm845-mainline so it applies on
-nexttree. - Nothing boots, luckily I have borrowed Google Pixel serial dongle, so found out there has to be compiled in Qualcomm RefGen driver.
- Reviewed NekoCWD focus coil patches.
- Wrote small tool to visualize the b4 commits inside the git oneline log.
- Did multiple small cleanups of the patches in the tree to eliminate warnings.
- Fixed TAS2557 and TAS2559 drivers and re-added.
- Authored:
- Started discussion on framebuffer commonize from sdm845-mainline:
- Cleaned up and sent number of changes to the upstream:
Vasiliy "NekoCWD" Doylov
- Discussed focus for the main camera.
- Shared focus coil (lc898217xc) patches and send to mailing list!
agx
- Did lot of build-testing :)
- Hit another compilation issue from the imported sdm845-mainline patches, where things didn't worked with gcc, but only clang.
Petr Hodina
- Did initial testing and found we still don't have display working on OP6/6T.
- Insight into Pixel 3 Citadel/Titan/SPI stuff.
Sam
- Proposed more transparency, room is visible outside.
- Contributed to the CI discussion and focusing of the sdm845-next project.
Week 1 (21. ‒ 27. 11.)
Something working, we're not there yet.
We have stability issues such as
disp_cc_mdss_pclk0_clk_src: rcg didn't update its configuration.
and consequent crashes (Pixel 3) or Qualcomm Crashdumps (OnePlus 6/6T).
Haptics is broken as the upstream sent patches doesn't work.
No cameras currently working.
David Heidelberg
- Started writing a changelog for the PMI8998 Fuel Gauge patchset, which had many different revisions and changes on top of.
- Thanks to clean-up done by Barnabás Czémán (barni2000), the chances to get mainlined rised a lot. Thank you Barni!
- Asked Stephan Gerhold about the
qdsp6patchset series.- I got feedback that these patches needs full rewrite and more work
- 2 ‒ 3 months of paid work likely, discussion being done regarding to financing (outside of current scope
sdm845-next)
- More cleanups and polishing. (I can write this forever...ever...ever).
- Ongoing discussion on handling firmware bug on Xiaomi Poco F1,
- ath10k: Introduce a devicetree quirk to skip host cap QMI requests
- started from device-tree quirk, but maintainers wants to have firmware quirk. Make sense.
- ath10k: Introduce a firmware quirk to skip host cap QMI requests
- Driver needs to know firmware quirk before firmware is loaded. OOOPS.
- We need to figure out what's next. Paul Sajna (sajattack) has same problem on LG G7 and V35, we need to find the right solution.
- Discussion started on mailing lists:
- [QUESTION] arm64: configs: Add Snapdragon 845 config fragment
- hopefully this may lead to having fragments bundled with kernel, which should make building Linux kernel more error-prone.
- Patches polished and sent:
agx
- Started testing Shift 6MQ and found out display won't initialize, later provided patch to hack around the initialization (use the panel driver as module
=m).
Petr Hodina
- Experimented with touchscreen driver for Pixel 3, found alternation to existing driver to run touchscreen, thou it works a bit weird.
Vasiliy "NekoCWD" Doylov
- Actuator discussions, Most of OnePlus enchiladas have
lc*actuators, fajitas -sa*or a mix.
longnoserob
- Prepared
b4/branch for SLPI Xiaomi Poco F1 patches with promise to upstream. Included in our tree. - Patches polished and sent:
Marco Mattiolo (Tiol)
- Started working on 6.18 kernel for Mobian using some of our polished patches, asked mostly about the C-PHY patchset for enablement of the main rear camera (imx519 driver).
Week 2 (28. 11. ‒ 4. 12.)
Upstream wants to have all new firmware paths in format
sdm845/Vendor/codename instead of our usual sdm845/codename.
Make sense, but we'll going to make unpleasant changes to the distributions.
📝 Made a small helper function, for cherry-picking from b4 branches, as the merging is not so convinient as it creates the merge commit and re-sort commits when rebased.
- We find a tag (thus we assume
b4branch is based onnext,linus, or just something tagged. - Print range of the commits, so we see what is being picked and wait for conformation.
- Just
cherry-pick, but we want to keep "empty" b4 commits, which provides nice separator, changelog, and links to the previously sent version.
$ cat ~/.config/fish/functions/cpick.fish
function cpick
set base_tag $(git describe $argv[1] --no-abbrev)
set range $base_tag..$argv[1]
git log --oneline $range
read -P "Cherry pick into current tree $(set_color green; git describe --all)$(set_color normal). y/n?" -l confirm
switch $confirm
case y Y
git cherry-pick --empty=keep $range
end
end
$ cpick b4/qcom-cphy # picks commit from the given branch

David Heidelberg
- Noticed that i2c bus on Pixel 3 may not have high enough clock to run touchscreen well, proposed 400 kHz, later found that upstream even does 1 MHz.
- Figured out, why cameras aren't working.
- v4l2 can't handle incomplete setup, so let's check
/sys/kernel/debug/v4l2-async/pending_async_subdevices- Why is there focus coil in the waiting list?
- Oh, I didn't have enabled it in
.config. Big mystery found.
- We have now all three cameras working (D-PHY/C-PHY; rear main, rear secondary, front).
- Did review of latest NekoCWD focus coil patches.
- Discussion with dsankouski regarding to small bug in
s6e3ha8panel driver. - Patches sent:
Petr Hodina
- Worked on getting upstream
ftmstsdriver work with Pixel 3.
NekoCWD
- Sent improved version of focus coil to mailing list.
Marco Mattiolo (Tiol)
- Figured out, why main rear camera didn't work for him on 6.18 ‒ old C-PHY patch (most likely my early patch included in sdm845-mainline).
Pavel Píša and Sam
- Had nice discussion regarding to multi-function compose gadget, g_ether and other USB configuration options.
Week 3 (5. ‒ 12. 12.)
We're getting stable.
David Heidelberg
- Thanks to Konrad, improved C-PHY initialization sequence for C-PHY patchset.
- Pixel 3 XL boots into framebuffer, so screen works now (disabled
dispccwhich interfered with framebuffer) - Cleaned up of Xiaomi Mi Mix 3 (perseus).
- Firmware sent:
- Reviewed:
[PATCH v4 00/12] arm64: dts: qcom: sdm845-lg-{common, judyln}: Improve HW support in dts
longnoserob
- Sent v2 of SLPI enablement on Xiaomi Poco F1 patches.
- Including firmware paths change.
Vasiliy "NekoCWD" Doylov
- Small build fixes.
Petr Hodina
- Porting stuff from older trees to get Sony Xperia XZ3 (akatsuki) working again on `-next`.
Next month
There is long journey ahead of us. Mainlining fuel gauge will likely bring more stability and better charging, on other hand I assume it'll ask for another month of work.
EOM ‒ End of Month
Journey
We started with hardly booting -next tree. After month, we're close to having fully functional phones and numbers of patches are increasing (due to good people fixing issues), but also decreasing, as we having no-keep, everything to upstream policy.
Except rare or patches not meant to be upstream, we preparing and sending patches where they belong. Mainline.
I hope, one day this community will turn into direct kernel contributors and maintainers. Hopefully our effort will lead to the state, where patches contained in sdm845-next a top of actual -next repository can be counted on one hand.
Devices
🗒️ keep in mind we started with hardly booting kernel.
| Device | Works | Work-in-progress (WIP) | Doesn't work |
|---|---|---|---|
| OnePlus 6 | Hopefully everything | calls | |
| OnePlus 6T | Hopefully everything | calls | |
| Xiaomi Poco F1 | Something should work. | calls | |
| SHIFT 6MQ | Boots, display works. | ||
| Pixel 3 | WiFi, framebuffer, display (only one way -> on) | Display stability and touchscreen (Petr Hodina) | |
| Pixel 3 XL | WiFi, framebuffer | Display (David Heidelberg) |
Ending titles
I would like to thank to everyone who contributed within the sdm845-next project, but also to everyone who contributed outside of our channel, as f.e. Paul Sajna (sajattack) who worked on LG G7 ThinQ and V35 ThinQ mainline improvements.
There's an upcoming hackday planned for January 2026 (most likely between 12th and 16th Jan) in Prague. Stay tuned for more information!
Join us!
If you want to contribute, learn, or being curious, everyone with our goals in mind is welcome to join!
Expenses report
| Category | Time spent | |
|---|---|---|
| David Heidelberg (donate with LiberaPay) | Development | 10 člověkodnů |
| Review | 6 člověkodnů | |
| Q&A | 4 člověkodnů | |
| Events / Meetings | 1.5 člověkodne | |
| Petr Hodina (done with LiberaPay) | Development | 5 člověkodnů |
| Research | 1.5 člověkodne | |
| Q&A | 12.5 člověkodnů | |
| Events/ Meetings | 1.5 člověkodne | |
| Vasiliy "NekoCWD" Doylov | Development | 5 člověkodnů |
| Review | 7 člověkohodin | |
| Q&A | 7 člověkohodin | |
| longnoserob | Development | 3 člověkohodiny |
| Events / Meetings | 1 člověkohodina | |
| agx (contribute to Phosh e.v.) | Q&A | 0.5 člověkohodiny |
| Marco "Tiol" Mattiolo | Q&A | 4 člověkohodiny |
- Development ‒ writing new code, fixing and rebasing existing one, writing the documentation.
- Review ‒ trying to understand existing code, helping other with preparation of their code for upstreaming.
- Q&A ‒ flashing images & testing them on DUT, debugging issues
- Events / Meeting ‒ organizing, attending, and contributing to the events and occasional sync-up meetings.
- Time spent, measured in "člověkoden" (also knows as work-day, man-day / MD, or a cat-day) or "člověkohodina" .