Skip to content

Add support for the System Power Management Interface (SPMI)

Josh Cartwright linux-arm-kernel linux-arm-msm linux-devicetree lkml 6 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v6 Latest6 patches 1 replyIn review
  2. v56 patches 5 repliesSuperseded
  3. v46 patches 5 repliesSuperseded
Earlier versions · 3
VersionPostedPatchesRepliesStatus
v310 patches30 repliesSuperseded
v2 RFC0 of 3 patches0 repliesSuperseded
v1 RFC2 of 3 patches14 repliesSuperseded

Patches in v6 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/6spmi: Linux driver framework for SPMIdrivers/Kconfig drivers/Makefile drivers/spmi/Kconfig +5 more+842 -00 replies
2/6spmi: add generic SPMI controller binding documentationDocumentation/devicetree/bindings/spmi/spmi.txt+41 -00 replies
3/6spmi: Add MSM PMIC Arbiter SPMI controllerdrivers/spmi/Kconfig drivers/spmi/Makefile drivers/spmi/spmi-pmic-arb.c+424 -00 replies
4/6spmi: pmic_arb: add support for interrupt handlingdrivers/spmi/Kconfig drivers/spmi/spmi-pmic-arb.c+376 -20 replies
5/6spmi: document the PMIC arbiter SPMI bindingsDocumentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.txt+61 -00 replies
6/6regmap: spmi: support base and extended register spacesdrivers/base/regmap/regmap-spmi.c include/linux/regmap.h+205 -350 replies

Reviews trailers per patch

1 of 6 patches has a Reviewed-by or Acked-by.

PatchMark Brown
1/6
2/6
3/6
4/6
5/6
6/6A-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v6 thread

Cover letter [PATCH v6 0/6] Add support for the System Power Management Interface (SPMI)

Hey Greg-

Is it possible for you to pick this up for 3.15? It'd be nice if we could get an Ack from devicetree folks on patches 2 and 5, but there has been many months worth of opportunity for that.

Thanks,
Josh

---

The System Power Management Interface (SPMI) is a high-speed, low-latency, bi-directional, two-wire serial bus suitable for real-time control of voltage and frequency scaled multi-core application processors and its power management of auxiliary components. SPMI obsoletes a number of legacy, custom point-to-point interfaces and provides a low pin count, high-speed control bus for up to 4 Master and 16 Slave devices.

SPMI is specified by the MIPI (Mobile Industry Process Interface) Alliance [1].

This patchset is intended both to provide a core implementation of SPMI and also to provide a controller driver implementation.
- Patches 1-2 implement the SPMI core functionality and provide basic DT binding documentation
- Patches 3-5 provide an implementation of an SPMI controller, the Qualcomm SPMI PMIC Arbiter, currently used on the 8x74 SoCs.
- Patch 6 rounds out regmap support for SPMI

Changes from v5[2]:
- Changed PMIC Arbiter locking to use a raw_spinlock_t over the non-raw variant due to it's use in an irqchip implementation (feedback from Thomas Gleixner)
- Reworded descriptions of the reg and reg-names properties in the PMIC Arbiter devicetree binding document

Changes from v4[3]:
- Fixed a few minor error-handling bugs found with further testing
- Addressed Courtney Cavin's feedback regarding device tree bindings
- Reworked Kconfig options a bit (allow for building PMIC arb when COMPILE_TEST=y)

Changes from v3[4]:
- Dropped the pm8x41 PMIC driver and pm8xxx-rtc changes as part of this patchset. (will be sent out separately)
- Rebased on v3.13-rc2
- Move to simple_ida_* for controller ID allocation
- Addressed documentation fixes and nits
- Provide pm_runtime implementation, which leverages SPMI's SLEEP and WAKEUP commands
- Address spmi_controller object lifetime issues

Changes from v2[5]:
- Dropped RFC.
- Add basic regmap support at Mark Brown's suggestion
- Drop debugfs interface. Debugging SPMI accesses can happen via the regmap debugfs interface if necessary.
- Add second address-cell in SPMI generic device tree binding, encoding the address type (suggestion by Stephen Warren)
- Implement interrupt handling functionality within the PMIC Arbiter driver
- Provide basic MFD driver for the PMIC8x41 PMICs, demonstrating SPMI regmap client use
- Adapt existing pm8xxx-rtc driver to work as a child of the PM8x41 mfd device

Changes from v1[6]:
- Adopted patch (1/5) to #define for_each_available_node() shim in the !CONFIG_OF case
- Moved device tree logic out of drivers/of and into spmi.c core (this mirrors what SPI is doing, and what i2c will soon be doing)
- Move of_spmi_add_devices() call into spmi_device_add(), so drivers don't have to call it explicitly
- Unconditionally build in debugfs code (rely on the underlying CONFIG_DEBUG_FS switch to throw unused code away)
- Change pr_* print functions to their dev_* equivalents
- Fix copy_{to,from}_user error handling
- Renamed "board_lock" to "ctrl_idr_lock" to better describe it's purpose
- Rework device object lifetime management
- Rename PMIC arb binding document, add description of PMIC arb
- Add generic SPMI device tree bindings

[1]: http://www.mipi.org/specifications/system-power-management-interface
[2]: http://lkml.kernel.org/r/1391468739-20987-1-git-send-email-joshc at codeaurora.org [3]: http://lkml.kernel.org/r/cover.1389738151.git.joshc at codeaurora.org [4]: http://lkml.kernel.org/r/cover.1382985169.git.joshc at codeaurora.org [5]: http://lkml.kernel.org/r/cover.1377202730.git.joshc at codeaurora.org [6]: http://lkml.kernel.org/r/cover.1376596224.git.joshc at codeaurora.org

Josh Cartwright (4):
spmi: add generic SPMI controller binding documentation
spmi: pmic_arb: add support for interrupt handling
spmi: document the PMIC arbiter SPMI bindings
regmap: spmi: support base and extended register spaces

Kenneth Heitke (2):
spmi: Linux driver framework for SPMI
spmi: Add MSM PMIC Arbiter SPMI controller

 .../bindings/spmi/qcom,spmi-pmic-arb.txt           |  61 ++
 Documentation/devicetree/bindings/spmi/spmi.txt    |  41 ++
 drivers/Kconfig                                    |   2 +
 drivers/Makefile                                   |   1 +
 drivers/base/regmap/regmap-spmi.c                  | 228 +++++-
 drivers/spmi/Kconfig                               |  27 +
 drivers/spmi/Makefile                              |   6 +
 drivers/spmi/spmi-pmic-arb.c                       | 778 +++++++++++++++++++++
 drivers/spmi/spmi.c                                | 609 ++++++++++++++++
 include/dt-bindings/spmi/spmi.h                    |  18 +
 include/linux/mod_devicetable.h                    |   8 +
 include/linux/regmap.h                             |  12 +-
 include/linux/spmi.h                               | 191 +++++
 13 files changed, 1947 insertions(+), 35 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.txt
 create mode 100644 Documentation/devicetree/bindings/spmi/spmi.txt
 create mode 100644 drivers/spmi/Kconfig
 create mode 100644 drivers/spmi/Makefile
 create mode 100644 drivers/spmi/spmi-pmic-arb.c
 create mode 100644 drivers/spmi/spmi.c
 create mode 100644 include/dt-bindings/spmi/spmi.h
 create mode 100644 include/linux/spmi.h
Signature · 2 lines
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation