Skip to content

Shikra: retire ad-hoc downstream support, re-port from upstream-accepted + kernel-topics patches - #121

Open
Shiraz Hashim (shashim-quic) wants to merge 365 commits into
qualcomm-linux:resolute-qcom-develfrom
shashim-quic:shikra-port
Open

Shiraz Hashim (shashim-quic) wants to merge 365 commits into
qualcomm-linux:resolute-qcom-develfrom
shashim-quic:shikra-port

Conversation

@shashim-quic

Copy link
Copy Markdown

Summary

This branch replaces the Shikra SoC support that had accumulated in this tree as ad-hoc, downstream-only commits with a clean re-port from the actual upstream submission history: commits that have already landed in mainline (linux.git), plus the current, in-flight patch set on the kernel-topics (ktopics) Shikra topic branches (tech/all/shikra, early/hwe/shikra/{drivers,dt}).

Approach

  1. Full revert of the legacy Shikra support (~177 commits) — the original, downstream-only implementation (DT nodes, pinctrl, clocks, SoC IDs, remoteproc, etc., is reverted in its entirety.
  2. Re-apply the upstream-accepted subset (116 commits, UPSTREAM:) — cherry-picked directly from linux.git/master, i.e. everything from the original Shikra submission that has already been merged into mainline.
  3. Re-apply the not-yet-merged subset (138 FROMLIST: + 9 RFC: + 6 PENDING: = 153 commits) — applied in order off the kernel-topics Shikra topic branches, i.e. the current state of everything still on the mailing list
  4. Final cleanup (2 commits) — dropped the Lontium LT9611C(EX/UXD) HDMI bridge driver and its dt-bindings (FROMLIST: drm/bridge: ... / FROMLIST: dt-bindings: bridge: ...); the incoming driver targets a newer DRM core (atomic_create_state, of_drm_get_bridge_by_endpoint, etc.) than this tree carries, and this tree's own board wiring for it wasn't otherwise ready — deferred rather than carrying a half-integrated bridge driver.

Stats

  • 486 commits total in this range (origin/resolute-qcom-devel...HEAD)
    • 177 reverts of the legacy downstream implementation
    • 116 UPSTREAM: cherry-picks from mainline
    • 153 FROMLIST:/RFC:/PENDING: commits from kernel-topics
  • Adds/retains 12 Shikra DT sources: shikra.dtsi, shikra-evk.dtsi, shikra-{cqm,iqs}-som.dtsi, shikra-{cqm,cqs,iqs}-evk.dts, plus camera/HDMI/panel DT overlays

What's included

Shikra CQ2390M/IQ2390S SoM support across: GCC/AudioCoreCC/DISPCC/GPUCC clocks, pinctrl, LLCC, SMMU, remoteproc (CDSP/LPAICP/MPSS PAS), interconnect/EPSS L3, cpufreq, thermal/TSENS, USB (+Type-C role switch, Cypress cypd6129/6229 UCSI), PCIe, SD card, WiFi/BT, BAM-DMUX, Ethernet (stmmac/ethqos, DP83867 PHY), Adreno A704 GPU + cooling, Iris/Venus video, CAMSS/camera overlays, ILI7807S display panels, and audio (QAIF CPU DAI, SoundWire, LPASS macros, sc8280xp machine driver variants for the three EVK boards).

Explicitly not included

  • VMID/SCM-based mDSP buffer assignment (q6apm-dai.c FROMLIST patch) — its prerequisites (~23 upstream commits reworking q6apm.c/audioreach.c buffer mapping) aren't present in this tree yet. Needs a sound/soc/qcom/qdsp6/ baseline sync before it can be re-attempted.
  • Lontium LT9611C(EX/UXD) HDMI bridge — see cleanup step above; DT wiring for the IQS EVK HDMI overlay remains, but the driver itself is deferred.

Notes for reviewers

  • This is a large, mechanical-looking diff by commit count, but each FROMLIST/RFC/PENDING commit corresponds 1:1 to a real patch on the kernel-topics Shikra topic branches — review is best done by checking a given feature's current mailing-list/topic-branch status rather than re-reviewing each diff from scratch.
  • Conflicts against this tree's existing (non-Shikra) code were resolved case-by-case, preferring the newer/final upstream form and dropping any unrelated legacy divergence.

Comment thread sound/soc/qcom/qaif-platform.c Fixed
Comment thread sound/soc/qcom/qaif-platform.c Fixed
…Shikra"

This reverts commit 8439255.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
…a SoC"

This reverts commit c32e12b.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit d256342.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit b41dfa9.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit 3c10d8a.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit 5ec1f8b.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
…AS nodes"

This reverts commit 49cd256.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit 47ced1e.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
…ects"

This reverts commit 0f86ffe.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit 4b6ac1c.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit 61cd5e0.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit 139b551.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit 2d21e0e.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit d669a2d.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit be74700.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit 244df07.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit 670f4ea.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit dd434e7.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit bb2bbc3.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit 237d777.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit dc575ec.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit 609ed3e.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit ec1c84c.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit 251588e.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
This reverts commit 2250083.

Shikra platform support in this tree is being retired in favor of the
latest community Shikra patches; drop this downstream commit to avoid
conflicting with the upstream series.

Signed-off-by: Shiraz Hashim <shiraz.hashim@oss.qualcomm.com>
…tible

Shikra's EMAC requires two additional clocks for NOC interconnect
access (axi-noc, pcie-tile-axi-noc) beyond the standard four, and an
OPP table with required-opps to vote VDD_CX to SVS when the NOC clocks
are enabled.

Add qcom,shikra-ethqos to the compatible enum and use an if/else
block to constrain Shikra to exactly six clocks and require
operating-points-v2, while leaving existing compatibles unchanged.

Add the relevant compatible to the binding document for snps,dwmac as
well.

Link: https://lore.kernel.org/netdev/20260908-shikra_ethernet-v2-3-bbe3389d0652@oss.qualcomm.com/
Signed-off-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
… to void

The return value is never checked by its sole caller and the speed
validation duplicates a check higher up the call stack.  Convert to
void and remove the dead code.

Link: https://lore.kernel.org/netdev/20260908-shikra_ethernet-v2-4-bbe3389d0652@oss.qualcomm.com/
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Signed-off-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
When "rgmii-id" is selected the PHY supplies both TX and RX delays, so
the MAC must not add its own. The driver currently falls through to the
generic DLL initialisation path which programs it to add a delay.

Power down the DLL and set DDR bypass mode for RGMII_ID, then program
the IO_MACRO via a new ethqos_rgmii_id_macro_init() helper. Also fix
ethqos_set_clk_tx_rate() to not double the clock rate in bypass mode at
100M/10M, and remove RGMII_ID from the phase-shift suppression in
ethqos_rgmii_macro_init() since RGMII_ID no longer reaches that path.

Link: https://lore.kernel.org/netdev/20260908-shikra_ethernet-v2-5-bbe3389d0652@oss.qualcomm.com/
Signed-off-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
The qcom-ethqos driver is moving towards using "rgmii-id" together
with PHY-provided delays. However, existing DTBs use "rgmii" and
"rgmii-txid" and must remain supported for backwards compatibility.

Warn when either of these legacy PHY modes is used to encourage users
to migrate to updated DTBs using "rgmii-id".

Link: https://lore.kernel.org/netdev/20260908-shikra_ethernet-v2-6-bbe3389d0652@oss.qualcomm.com/
Signed-off-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
…owest speed

On probe the RGMII link clock is initialised at SPEED_1000, which
translates to a 250 MHz source clock even when no PHY link is present,
drawing unnecessary power.

Initialise at SPEED_10 instead; fix_mac_speed updates the rate once
a link is established.

Link: https://lore.kernel.org/netdev/20260908-shikra_ethernet-v2-7-bbe3389d0652@oss.qualcomm.com/
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Signed-off-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
Some SoCs gate the EMAC's path to the System NOC behind dedicated clocks
that must be enabled before the DMA can reach memory. Add
ethqos_noc_clk_cfg and the corresponding fields in the driver-data and
runtime structs so each compatible can declare its own set with per-clock
rates.  The clocks are acquired during probe and enabled/disabled
alongside the existing link clock in ethqos_clks_config().

No functional change for existing compatibles. This will help us when
we add support for Shikra.

Link: https://lore.kernel.org/netdev/20260908-shikra_ethernet-v2-8-bbe3389d0652@oss.qualcomm.com/
Signed-off-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
Shikra integrates two Qualcomm ETHQOS controllers based on the Synopsys
GMAC IP, similar to previous platforms.  Register qcom,shikra-ethqos
backed by a new shikra_data descriptor that enables the three NOC clocks
required for DMA memory access (axi-noc, pcie-tile-axi-noc, stmmaceth)
all at 120 MHz, and the 36-bit DMA address width.

As part of the NOC clock voting logic, the qcom-ethqos glue driver takes
a second enable reference on the "stmmaceth" clock, which is already
enabled by the stmmac core. All three clocks in shikra_noc_clks[] must
run at 120 MHz for NOC access, and managing "stmmaceth" through the same
clk_bulk path keeps the rate-setting and enable/disable together.

Link: https://lore.kernel.org/netdev/20260908-shikra_ethernet-v2-9-bbe3389d0652@oss.qualcomm.com/
Signed-off-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
The GPIO mappings on the IQS variant differ from the CQ variants.
GPIO138 is connected to the RGMII1_RX_CTL pin rather than the NFC ESE
Secure IO pin; the latter is connected to GPIO49. This incorrect
reservation causes the probe of the second Ethernet port to fail:

  shikra-tlmm 500000.pinctrl: error -EINVAL: pin-138 (5d20000.ethernet)
  shikra-tlmm 500000.pinctrl: error -EINVAL: could not request pin 138
  (GPIO_138) from group gpio138 on device 500000.pinctrl
  qcom-ethqos 5d20000.ethernet: Error applying setting, reverse things back

Replace gpio138 with gpio49 in the reserved list.

Link: https://lore.kernel.org/linux-arm-msm/20260908-shikra_ethernet_dts-v1-1-69c0c5c7c124@oss.qualcomm.com/
Fixes: 779aead2dace ("arm64: dts: qcom: shikra: Add gpio-reserved-ranges to tlmm")
Signed-off-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
Add the two Gigabit Ethernet controllers present on Shikra (ethernet0
at 0x5d00000, ethernet1 at 0x5d20000).  Both nodes are left disabled;
board files supply the PHY details.

Link: https://lore.kernel.org/linux-arm-msm/20260908-shikra_ethernet_dts-v1-2-69c0c5c7c124@oss.qualcomm.com/
Signed-off-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
… port

Enable ethernet0 for the Shikra CQM EVK board with its DP83867 RGMII
PHY. The PHY is powered on using a GPIO-controlled 2.5V regulator.

Link: https://lore.kernel.org/linux-arm-msm/20260908-shikra_ethernet_dts-v1-3-69c0c5c7c124@oss.qualcomm.com/
Signed-off-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
… port

Enable ethernet0 for the Shikra CQS EVK board with its DP83867 RGMII
PHY. The PHY is powered on using a GPIO-controlled 2.5V regulator.

Link: https://lore.kernel.org/linux-arm-msm/20260908-shikra_ethernet_dts-v1-4-69c0c5c7c124@oss.qualcomm.com/
Signed-off-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
Enable ethernet0 and ethernet1 on the IQS EVK with their respective
TI DP83867 RGMII PHYs. Both PHYs are powered by GPIO-controlled 2.5V
regulators.

Link: https://lore.kernel.org/linux-arm-msm/20260908-shikra_ethernet_dts-v1-5-69c0c5c7c124@oss.qualcomm.com
Signed-off-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com>
Shikra reuses the same QCE integration as Agatti and should follow the
corresponding binding requirements too.

Move the Shikra compatible to the appropriate binding hierarchy
(matching qcom,qcm2290-qce) to reflect the underlying hardware
description.

Fixes: 45834ff95a6f ("dt-bindings: crypto: qcom-qce: Document the Shikra crypto engine")
Signed-off-by: Kuldeep Singh <kuldeep.singh@oss.qualcomm.com>
Link: https://lore.kernel.org/linux-arm-msm/CAMRc=MckdJyEvOq73Fi+Q-sr1aoL6QzvHsNq-3k62RSi9sy08A@mail.gmail.com/
Signed-off-by: Roopak Houji <rhouji@qti.qualcomm.com>
Shikra is derived from Agatti and uses the same QCE integration.
Update the QCE node to match the underlying hardware implementation by
adjusting the fallback compatible and related properties, including
clocks and clock-names.

Signed-off-by: Kuldeep Singh <kuldeep.singh@oss.qualcomm.com>
Link: https://lore.kernel.org/linux-arm-msm/20260907-b4-shikra_crypto_changse-v6-2-0676f61894b3@oss.qualcomm.com/
Signed-off-by: Roopak Houji <rhouji@qti.qualcomm.com>
…for RPM targets

Keep "qcom,rpm-stats" as a fallback for RPM targets, so that SoC level
stats are still shown even without subsystem level stats support. A plain
enum can't express that, since it caps compatible at one item. Add a oneOf
branch with items for this pattern.

Link: https://lore.kernel.org/all/20260907-shikra_stats-v4-1-3825351f9740@oss.qualcomm.com
Signed-off-by: Sneh Mankad <sneh.mankad@oss.qualcomm.com>
clk_smd_rpm_handoff() votes both active and sleep RPM resource states for
every clock, keeping them non-zero until a consumer takes over. If there
is no consumer, those clocks will remain active in the idle scenario as
well, and the sleep vote is never cleared, blocking XO shutdown.

Introduce the skip_clks_handoff flag to handle this on QCM2290 clocks,
keeping other targets unaffected.

Link: https://lore.kernel.org/r/20260910-clk-smd-rpm-skip-proxy-v1-1-1cb5694a99d9@oss.qualcomm.com
Fixes: 00f64b5 ("clk: qcom: Add support for SMD-RPM Clocks")
Signed-off-by: Imran Shaik <imran.shaik@oss.qualcomm.com>
…ins property

Remove #power-domain-cells property and add power-domains property for
MPM device.

Link: https://lore.kernel.org/lkml/20260713-b4-shikra_lpm_addition-v1-1-3d858df2cbbf@oss.qualcomm.com
Signed-off-by: Sneh Mankad <sneh.mankad@oss.qualcomm.com>
…domain

MPM irqchip needs to notify RPM (Resource Power Manager) processor to read
the latest wake up capable interrupts when the CPU cluster is entering the
deepest idle state. This is done by sending IPC interrupt to RPM and is
implemented as .power_off() callback by registering MPM as parent power
domain to CPU cluster.

Such implementation introduces a hard probe dependency between MPM irqchip
and CPU cluster power domains. That is MPM irqchip needs to finish probe
before PSCI power domains are probed. MPM irqchip can be build as module
and can get later inserted where as PSCI power domains is not a module.

For in-built driver cases too PSCI domain gets probed first and later MPM
irqchip leading to failure of CPUidle states.

Detailed flow of the non-working scenario:

psci-cpuidle-domain.c probe
--> dt_idle_pd_init_topology()
    --> of_genpd_add_subdomain()
        --> genpd_get_from_provider()
            --> fails to find parent MPM genPD provider
                --> returns -EPROBE_DEFER.

irq-qcom-mpm.c probe
--> of_genpd_add_provider_simple()
    --> genpd_add_provider()
        --> MPM added as a genPD provider.

Now when psci_cpuidle_probe() is called to probe the CPU idle states, it
tries to map the states to the mentioned power-domains.

But since power domains probe has been deferred, psci_cpuidle_probe() too
will return -EPROBE_DEFER.

commit af5376a ("cpuidle: psci: Transition to the faux device
interface") transitioned cpuidle-psci to a faux device interface.

faux_device_create() calls faux_device_create_with_groups(), which ignores
the probe return value, and destroys the device if dev->driver is not set.

This will lead to psci_cpuidle_probe() not being called again, resulting in
all idle-state devices failing to init in SoCs setting MPM as a parent
power domain to CPU cluster.

cpuidle-psci.c init
--> faux_device_create()
        ...
        --> psci_cpuidle_probe()
            --> psci_idle_init_cpu()
                ...
                --> psci_dt_cpu_init_topology()
                ...
                -> dev_pm_domain_attach_by_name()
                   --> __genpd_dev_pm_attach()
                       --> genpd_get_from_provider()
                           --> fails to find CPU genPD provider
                               --> returns -EPROBE_DEFER
                                   --> return value ignored and device
                                       destroyed

Move the RPM notification handling to the GENPD_NOTIFY_PRE_OFF callback and
register MPM under the CPU cluster power domain.  Use runtime PM to report
the default RPM_SUSPENDED state to genPD so that the CPU cluster power
domain can enter low power mode.

If MPM has not registered with CPU cluster power domain, utilize the CPU PM
notifications to manage RPM communication when the last CPU goes to power
collapse.

Fixes: a6199bb ("irqchip: Add Qualcomm MPM controller driver")
Link: https://lore.kernel.org/lkml/20260713-b4-shikra_lpm_addition-v1-2-3d858df2cbbf@oss.qualcomm.com
Signed-off-by: Sneh Mankad <sneh.mankad@oss.qualcomm.com>
…and pin regs

The vMPM layout starts with two timer registers followed by pin register
banks (ENABLE/FALLING/RISING/POLARITY/STATUS), each with reg_stride
number of entries.

Use qcom_mpm_offset() as the common addressing helper for both timer and
pin register accesses based on that layout.

vMPM has MPM_REG_* values represented as contiguous register IDs,
hence replace the macros with enum qcom_mpm_reg and modify the accessor
helpers accordingly.

Link: https://lore.kernel.org/lkml/20260713-b4-shikra_lpm_addition-v1-3-3d858df2cbbf@oss.qualcomm.com
Signed-off-by: Sneh Mankad <sneh.mankad@oss.qualcomm.com>
… goes to LPM

The next wakeup timer value needs to be set in MPM timer as the arch timer
interrupt can not wakeup the SoC if after the deepest CPUidle states the
SoC also enters deepest low power state.

To wakeup the SoC in such scenarios the earliest wakeup time is set in MPM
timer and the Resource Power Manager (RPM processor) takes care of setting
the timer in HW.

Add MPM timer programming when CPU cluster enters power collapse.

Link: https://lore.kernel.org/lkml/20260713-b4-shikra_lpm_addition-v1-4-3d858df2cbbf@oss.qualcomm.com
Signed-off-by: Sneh Mankad <sneh.mankad@oss.qualcomm.com>
Add idle states for the  CPUs as well as the whole cluster. This enables
deeper-than-WFI cpuidle.

Add MPM under cluster_pd power domain.

Link: https://lore.kernel.org/lkml/20260713-b4-shikra_lpm_addition-v1-7-3d858df2cbbf@oss.qualcomm.com/
Signed-off-by: Sneh Mankad <sneh.mankad@oss.qualcomm.com>
…roller

Add the device-tree binding documentation for the Cypress cypd6129
and cypd6229 dual Type-C PD controllers. These are used on Shikra
CQM/CQS/IQS platforms to handle usb-role-switch for the USB Type-C
ports over an I2C interface, similarly to the existing cypd4226
binding.

cypd6229 is a variant of cypd6129 and is described with a
"cypress,cypd6129" fallback compatible string.

Link: https://lore.kernel.org/all/20260821-shikra-usb-dt-v7-apply-v2-1-030647f06285@oss.qualcomm.com/
Signed-off-by: Akash Kumar <akash.kumar@oss.qualcomm.com>
Signed-off-by: Akash Kumar <akakum@qti.qualcomm.com>
Add cypd6129 and cypd6229 compatible strings to the of_device_id
match table so the driver binds to boards describing these Cypress
PD controllers in their device tree. No other driver changes are
needed since the chip is accessed through the same generic UCSI/HPI
I2C register protocol as the existing cypd4226 support.

Link: https://lore.kernel.org/all/20260820145036.2035641-3-akash.kumar@oss.qualcomm.com/
Signed-off-by: Akash Kumar <akash.kumar@oss.qualcomm.com>
Signed-off-by: Akash Kumar <akakum@qti.qualcomm.com>
Add init sequence and phy configuration for the Super Speed port on Shikra
SoC. Also since Shikra uses 3 resets, add support for the third reset and
configure Shikra platform data to use 3 resets.

Link: https://lore.kernel.org/all/20260504170659.282532-5-krishna.kurapati@oss.qualcomm.com/
Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Akash Kumar <akakum@qti.qualcomm.com>
…ype-C ports

On Shikra CQS/CQM platforms, usb-role-switch is handled by PM4125 on
the primary Type-C port and Cypress PD controller CYPD6129 on the
second Type-C port. On Shikra IQS platform, usb-role-switch is
handled by Cypress PD controller CYPD6129 on both Type-C ports.

Add the CYPD6129 typec node under i2c3, wire its connector endpoints
to the corresponding DWC3 controller ports via remote-endpoint
phandles, and switch the associated USB controllers to OTG mode so
role switching can take effect.

Link: https://lore.kernel.org/all/20260820145036.2035641-4-akash.kumar@oss.qualcomm.com/
Signed-off-by: Akash Kumar <akash.kumar@oss.qualcomm.com>
Signed-off-by: Akash Kumar <akakum@qti.qualcomm.com>
The interconnect drivers for Qualcomm SoC Network-on-Chip are covering a
basic or fundamental SoC feature: bandwidth management between internal
SoC blocks.  SoC can boot without these, but power management or
performance will be affected.  These drivers do not represent any sort
of buses visible to the board designers/configurators, thus they should
be always enabled, regardless how SoC is used in the final board.

Kernel configuration should not ask users choice of drivers when that
choice is obvious and known to the developers that answer should be
'yes' or 'module'.

Switch all almost Qualcomm interconnect drivers to a default 'yes' for
ARCH_QCOM.  This has impact:

1. arm64 defconfig:
   a. Enable as built-in INTERCONNECT_QCOM_HAWI, INTERCONNECT_QCOM_NORD,
      INTERCONNECT_QCOM_SHIKRA, INTERCONNECT_QCOM_SDM660,
      INTERCONNECT_QCOM_SDM670, INTERCONNECT_QCOM_SM7150 and
      INTERCONNECT_QCOM_SAR2130P, which were not selected before but
      should be, because these platforms need them anyway for proper
      functioning.

   b. Switch to built-in from a module INTERCONNECT_QCOM_QCS404 and
      INTERCONNECT_QCOM_MSM8916, which as modules would not make the
      platform bootable in most cases, and INTERCONNECT_QCOM_OSM_L3,
      which when module might slow down boot considerably by having
      caches running at slow speed.

2. arm qcom_defconfig: Switch to built-in from a module
   INTERCONNECT_QCOM_RPMH, INTERCONNECT_QCOM_SMD_RPM,
   INTERCONNECT_QCOM_BCM_VOTER, INTERCONNECT_QCOM_MSM8974,
   INTERCONNECT_QCOM_SDX55, which as modules would not make the
   platform bootable in most cases.

3. arm multi_v7 defconfig: Enable drivers necessary to boot
   ARM 32-bit platforms, which are already enabled on qcom_defconfig:

   a. Enable as built-in INTERCONNECT_QCOM_MSM8974.
   b. Enable as modules (other dependencies prevent from built-in)
      INTERCONNECT_QCOM_RPMH, INTERCONNECT_QCOM_BCM_VOTER and
      INTERCONNECT_QCOM_SDX55.

4. COMPILE_TEST builds: Enable by default all drivers for arm or arm64
   builds, whenever ARCH_QCOM is selected.  This has impact on build
   time and feels logical, because if one selects ARCH_QCOM then
   probably by default wants to build test it entirely.  Kernels with
   COMPILE_TEST are not supposed to be used for booting.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260914-interconnect-qcom-clean-arm64-v4-1-5b2c0e6a929a@oss.qualcomm.com
…d and Shikra

Hawi, Maili, Nord and Shikra were added in parallel or after
commit 5b696f065843 ("interconnect: qcom: Restrict drivers per
ARM/ARM64"), thus they missed the update restricting them per
architecture (with the same rationale).

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260914-interconnect-qcom-clean-arm64-v4-2-5b2c0e6a929a@oss.qualcomm.com
The GENI_TO_CORE ("qup-core") ICC vote selects the QUP Core 2X clock
rate. The CORE_2X_*_MHZ constants are expressed in Bps, but their
values are several orders of magnitude too small. For example, the
50 MHz threshold is represented by 2500 rather than 25000000 Bps.

As a result, clients using these constants can severely under-vote the
QUP Core clock.

Correct the constants to their intended Bps thresholds so that the ICC
provider selects the corresponding QUP Core 2X clock rate.

Link: https://lore.kernel.org/all/20260909-correct-icc-bandwidth-vote-constants-v1-1-fbebf6b3c341@oss.qualcomm.com/
Fixes: 58ffbba ("soc: qcom: geni: Support for ICC voting")
Signed-off-by: Viken Dadhaniya <viken.dadhaniya@oss.qualcomm.com>
…fter deep idle

At baud rates up to 115200, the serial console uses only a 1 kBps keepalive
vote for the GENI_TO_CORE ("qup-core") ICC path. This vote keeps the path
active but does not request a QUP Core 2X clock rate.

When the CPU enters a deeper idle state, the missing Core clock vote can
leave the console RX path unresponsive.

Use the 19.2 MHz Core 2X vote at low baud rates, while retaining the 50 MHz
vote at higher baud rates, so that console RX remains functional after deep
idle transitions.

Link: https://lore.kernel.org/all/20260909-correct-icc-bandwidth-vote-constants-v1-2-fbebf6b3c341@oss.qualcomm.com/
Fixes: 7cf563b ("tty: serial: qcom_geni_serial: Add interconnect support")
Signed-off-by: Viken Dadhaniya <viken.dadhaniya@oss.qualcomm.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.