[PATCH v2 00/12] clk: qcom: Add PDM GP_MN fractional clock divider driver and DT support

From: Taniya Das

Date: Mon Oct 26 2026 - 07:35:18 EST


The Peripheral Web PDM block on several Qualcomm SoCs contains a GP_MN
fractional divider that generates a clock output from the PDM XO4 clock.
The output can be routed to a dedicated GPIO pin for use as an external
reference clock.

This series adds the binding, a runtime PM-aware GP_MN divider driver,
and the GCC, pinctrl, and DT support needed on QCS615, QCS8300, SA8775P,
and SC7280. GP_MN controller nodes are disabled by default so boards must
explicitly opt in before the output pin is muxed.

Changes in v2:
- Add SoC-specific compatible strings with a qcom,sc7280-gp-mnd
fallback, map the 0x1000-byte register region, and document the PDM
source rates. [#Konrad Dybcio]
- Use runtime PM and pm_clk for AHB register-access clock management,
rely on the pinctrl core's default-state selection, and generate the
output-clock name. [#Dmitry Baryshkov]
- Enforce valid GP_MN duty-cycle constraints and report high-phase duty
cycles through the common clock framework.
- Add and register configurable PDM XO4 divider clocks and their public
IDs for all supported SoCs, allowing the source rate to be configured.
- Split the pinctrl changes by SoC, retain Reviewed-by tags, and combine
each SoC's pin state and controller node into one DTS patch.
[#Konrad Dybcio]
- Correct the SC7280 output to gpio60 and disable every GP_MN controller
node by default. Add QCS615 support as well. [#Luca Weiss]
- Link[v1]: https://lore.kernel.org/lkml/20260602-pdm_clk_gp_mnd_v1-v1-0-1522662b6c53@xxxxxxxxxxxxxxxx/

The series is organized as follows:

1. DT binding for the PDM GP_MN divider
2. GCC PDM XO4 divider clock IDs
3. PDM GP_MN divider driver
4. GCC PDM XO4 divider clocks
5-8. GP_MN pin mux support for QCS8300, SA8775P, SC7280, and QCS615
9-12. GP_MN DT support for QCS8300, SA8775P, SC7280, and QCS615

Signed-off-by: Taniya Das <taniya.das@xxxxxxxxxxxxxxxx>
---
Taniya Das (12):
dt-bindings: clock: qcom: Add bindings for PDM GP_MN clock divider
dt-bindings: clock: qcom: Add PDM XO4 divider clock IDs
clk: qcom: Add a driver for PDM GP_MN fractional clock divider
clk: qcom: gcc: Add configurable PDM XO4 div clocks across targets
pinctrl: qcom: qcs8300: Add gp_mn mux function
pinctrl: qcom: sa8775p: Add gp_mn mux function
pinctrl: qcom: sc7280: Add gp_mn mux function
pinctrl: qcom: qcs615: Add gp_mn mux function
arm64: dts: qcom: qcs8300: Add GP M/N clock controller
arm64: dts: qcom: sa8775p: Add GP M/N clock controller
arm64: dts: qcom: sc7280: Add GP M/N clock controller
arm64: dts: qcom: qcs615: Add GP M/N clock controller

.../devicetree/bindings/clock/qcom,clk-gp-mnd.yaml | 98 ++++++
arch/arm64/boot/dts/qcom/kodiak.dtsi | 21 ++
arch/arm64/boot/dts/qcom/lemans.dtsi | 21 ++
arch/arm64/boot/dts/qcom/monaco.dtsi | 21 ++
arch/arm64/boot/dts/qcom/talos.dtsi | 21 ++
drivers/clk/qcom/Kconfig | 15 +
drivers/clk/qcom/Makefile | 1 +
drivers/clk/qcom/clk-gp-mnd.c | 333 +++++++++++++++++++++
drivers/clk/qcom/gcc-qcs615.c | 20 ++
drivers/clk/qcom/gcc-qcs8300.c | 20 ++
drivers/clk/qcom/gcc-sa8775p.c | 20 ++
drivers/clk/qcom/gcc-sc7280.c | 20 ++
drivers/pinctrl/qcom/pinctrl-qcs615.c | 8 +-
drivers/pinctrl/qcom/pinctrl-qcs8300.c | 9 +-
drivers/pinctrl/qcom/pinctrl-sa8775p.c | 8 +-
drivers/pinctrl/qcom/pinctrl-sc7280.c | 8 +-
include/dt-bindings/clock/qcom,gcc-sc7280.h | 1 +
include/dt-bindings/clock/qcom,qcs615-gcc.h | 2 +
include/dt-bindings/clock/qcom,qcs8300-gcc.h | 1 +
include/dt-bindings/clock/qcom,sa8775p-gcc.h | 1 +
20 files changed, 645 insertions(+), 4 deletions(-)
---
base-commit: 4eb2586bd40db27d77cc5b724ca9386ed0c71d53
change-id: 20261013-b4-pdm_clk_gp_mnd_v2-993396fc6cac

Best regards,
--
Taniya Das <taniya.das@xxxxxxxxxxxxxxxx>