Designing a Multi-PMIC Linux Driver: Key Decisions for Effective Mainline Submission
summary
Adds support for two new PMIC variants (TPS65215 and TPS65214) to an existing TPS65219 driver over about a year of upstream work, with concrete changes: migrates to MFD cell macros, removes unused macros, renames regulator driver to the tps652-regulator convention, replaces direct structs with headers, uses dev_err_probe, and introduces a TPS65219 chip data struct to minimize probe changes. Hardware differences force PMIC-specific IRQ and GPIO structs and device-specific get_direction/change_direction functions; an attempted regulator helper abstraction fails kernel build so per-device structs remain.
AI-written summary · about
chapters (17)
- 0:00Multi-PMIC Linux driver intro
- 1:06Project overview
- 3:20What is a PMIC
- 5:05Typical PMIC driver structure
- 6:29Prioritizing code reuse
- 7:11Cleanup patch series
- 10:05Adding PMIC support
- 11:09Hardware architecture impacts
- 14:18Code churn analysis
- 15:42Regulator driver restructuring
- 19:15GPIO lessons
- 21:44Hardware impact on GPIO
- 23:07Maintainer perspective
- 24:10Key takeaways
- 26:44Upstreaming challenges
- 28:11Acknowledgements
- 28:33Q&A
related talks
43mLinux Power! (from the Perspective of a PMIC Vendor)
29mPMIC: First One to Turn On and Last One to Turn Off
40mPower Management Integrated Circuits: Keep the Power in Your Hands
41mThe Case for an SoC Power Management Driver
41mThe Case for an SoC Power Management Driver
25mThe Power-Supply Subsystem
40mVisions for the Linux Kernel PWM Subsystem
14mPCI Pwrctrl woes
