Skip to content
Linux 6.13.3 with patches for Snapdragon 670

This is a collection of patches that are useful for devices with the
Qualcomm Snapdragon 670, applied on top of Linux 6.13.3.

Thermal mitigation for charging has been added and the 5 Watt limit was lifted.
The Pixel 3a will now typically charge at 6.5 Watts due to the lack of support
for some USB-C protocols.

Power management for cameras with libcamera was fixed. A VIDIOC_STREAMOFF ioctl
will now allow the pipeline to turn off, without closing the /dev/videoX file.
Power management for the Pixel 3a rear camera was also fixed, and the analog
GPIO will now turn off when the camera is not in use.

The IMX355 driver was made more reliable with a 12 ms delay when starting. There
is still another 12 ms delay when starting the camera, after a reset command.

Clock controllers have all been configured as built-in to allow dependent
devices to be probed correctly. Consequently, panel drivers are also configured
as built-in.

Support for the SDM670 camera subsystem has been mostly upstreamed, except for
some device tree patches. This is not to be confused with the Pixel 3a camera
sensors, the IMX355 and IMX363, which are still not upstream.

The device tree definition for the Pixel 3a flashlight has been upstreamed.

The thermal sensors have been changed to use PDC interrupts. The scaling factor
for a PMIC thermal sensor was corrected.

Bluetooth, call audio, display, USB, I2C, eMMC, modem, video acceleration,
WiFi, haptics, NFC, sensors, and touchscreen should work and be slightly broken
like before.

linux-patches.git commits since previous release (66):
 b438587 dt-bindings: media: camss: sdm670: Use correct unit address
 34d694d arm64: dts: qcom: sdm670: set correct unit address for camss
 3aea8c4 pinctrl: qcom: sdm670-lpass-lpi: convert to remove callback returning void
 abc7547 media: qcom: camss: move sdm670 regulators from csid to csiphy
 fc1cf89 dt-bindings: media: camss: sdm670: match property order with example
 363d4fe dt-bindings: media: camss: sdm670: reorder clocks
 7f82986 media: qcom: camss: prefix sdm670 csid clocks with vfe
 4589f5e arm64: dts: qcom: sdm670: sort clocks and rename csid clocks
 0f8f9ea dt-bindings: media: camss: sdm670: move interrupts after clocks
 f70b656 arm64: dts: qcom: sdm670: move camss interrupts after clocks property
 21069db dt-bindings: media: camss: sdm670: rename example node to generic name
 73aa45e Revert "media: qcom: camss: prefix sdm670 csid clocks with vfe"
 0cf00dc dt-bindings: media: camss: sdm670: rename csid clocks back to csiX
 d9cfcd8 arm64: dts: qcom: sdm670: rename camss csid clocks back to csiX
 3230200 arm64: configs: sdm670.config: configure clocks and drm as built-in
 ef8e402 patches: re-pick flash led dt-bindings patch from linux-next
 966f961 patches: move camss dt-bindings amendments to dt-bindings patch
 95b233f arm64: dts: qcom: sdm670: rename camss node to isp
 3645ce9 dt-bindings: media: camss: sdm670: rename camss node to isp
 f0e6645 patches: remove review patches for camss driver patch
 b58a945 Revert "arm64: dts: qcom: sdm670: move camss interrupts after clocks property"
 c9047a1 Revert "dt-bindings: media: camss: sdm670: move interrupts after clocks"
 d451dc1 arm64: dts: qcom: sdm670: add labelled endpoint nodes
 124402e arm64: dts: qcom: sdm670-google: use labelled endpoint node
 f57f025 arm64: dts: qcom: sdm670-google: use labelled endpoint node for rear cam
 5d3e336 patches: add reviewed-by from Krzysztof for camss dt-bindings patch
 dbf4b2d arm64: configs: add sdm845 config fragment (sdm845-6.13-rc2-r2)
 44c3285 sdm845.config: ZRAM zstd and modules compression
 508b5e2 patches: re-pick patches from sdm845-6.13-rc2-r2
 c851fc4 Revert "media: i2c: imx363: move asm/unaligned.h to linux/unaligned.h"
 a62312e arm64: dts: qcom: sdm670: rename camss endpoint node labels
 4adc351 arm64: dts: qcom: sdm670-google: enable front camera endpoint node
 784c125 arm64: dts: qcom: sdm670-google: enable rear camera endpoint node
 e166a81 patches: add reviewed-by from Vladimir for camss dtsi patch
 d926e31 arm64: configs: sdm670.config: compile panels as built-in
 c56bc4e ASoC: qdsp6: q6cvp: accept configurable number of channels
 072cbfc ASoC: qdsp6: q6voice: configure number of channels
 0c6f483 media: qcom: camss: fix indentation for SDM670 clocks
 c555a12 arm64: configs: sdm670.config: remove configs repeating sdm845
 3d3b59b patches: add reviewed-by from Konrad for camcc dts patch
 8a8e753 Revert "ASoC: qdsp6: q6voice: configure number of channels"
 b16da21 Revert "ASoC: qdsp6: q6cvp: accept configurable number of channels"
 448720d arm64: dts: qcom: sdm670-google: correct xo temp scaling factor
 7de09cf patches: re-pick December 2024 commits from linux-next
 50133e3 power: supply: qcom_pmi8998_charger: add charger enable and disable
 42c0bd0 arm64: configs: sdm670.config: remove unused drivers as of next-20250108
 d05a3f5 patches: re-pick camcc bindings patch from linux-next
 604f681 power: supply: qcom_pmi8998_charger: add passive cooling support
 dd4d629 arm64: dts: qcom: pm660: add cooling for charger
 5029c70 arm64: dts: qcom: sdm670-google: add battery thermal zones
 2da59db power: supply: qcom_pmi8998_charger: increase default current to 3 Amps
 9dfaac4 arm64: configs: sdm670.config: update for linux-next and pmOS changes
 df05f9f arm64: dts: qcom: sdm670: use pdc for thermal zones
 501d9c8 media: i2c: imx355: Add delay after clock enable
 ed5abef media: qcom: camss: Power pipeline only when streaming
 abf2a0f patches: add Reviewed-by from Konrad for camss dts patch
 79b5f33 media: qcom: camss: add management of supply regulators to CSIPHY
 7d159f0 arm64: dts: qcom: sdm670-google: model imx363 analog pin as regulator
 0e44e20 patches: re-pick camss patches from linux-next
 522b3f6 patches: re-pick sdm845 patches from latest sdm845-6.13.0
 9a692a6 patches: re-pick camcc dts patch from linux-next
 3c91930 patches: re-pick voicemmode1 patch from msm8953-mainline v6.13.0-r0
 4229ae8 patches: rebase on v6.13.3
 fbef2e5 soc: qcom: llcc: stop using macro for sdm670 config
 a5419ea arm64: dts: qcom: sdm670: update cpu labels for thermal zones
 9010e44 arm64: dts: qcom: sdm670-google: update cpu labels in thermal zones

linux-next (14):
 7f58b336f3e0 dt-bindings: i2c: qcom-cci: Document SDM670 compatible
 7271bbc86008 i2c: qcom-cci: Stop complaining about DT set clock rate
 44fdbb9d1a38 media: qcom: camss: add management of supply regulators to CSIPHY
 a1234b215538 dt-bindings: leds: qcom,spmi-flash-led: Add pm660l compatible
 87cafa082ce3 dt-bindings: iommu: arm,smmu: add sdm670 adreno iommu compatible
 423147389063 iommu/arm-smmu-qcom: add sdm670 adreno iommu compatible
 9b2955bae702 arm64: dts: qcom: pm660l: add flash leds
 44d2a252698e arm64: dts: qcom: sdm670-google-sargo: add flash leds
 cd89483a1327 arm64: dts: qcom: sdm670: add gpu
 fbf7cfa3ea98 arm64: dts: qcom: sdm670-google-sargo: enable gpu
 9620f5484424 arm64: dts: qcom: sdm670: add camcc
 bf6aa2d6935c dt-bindings: clock: qcom,sdm845-camcc: add sdm670 compatible
 0274ea59f83e dt-bindings: media: camss: Add qcom,sdm670-camss
 c52643b24152 media: qcom: camss: add support for SDM670 camss

sdm670-staging (7):
 [PATCH v2 1/4]
  dt-bindings: display/msm/gmu: Add SDM670 compatible
 [PATCH v10 3/3]
  arm64: dts: qcom: sdm670: add camss and cci
 Not sent yet (5):
  arm64: dts: qcom: sdm670-google-sargo: enable charger
  dt-bindings: media: i2c: Add Sony IMX355
  media: i2c: imx355: Support device tree probing and resource management
  media: i2c: imx355: Add power management for managed resources
  arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera

msm8916-mainline (8):
 a7f55b13fcdd ASoC: qdsp6: Add shared session management for q6voice services
 eb82ba2c4229 ASoC: qdsp6: Add driver for Q6 Multimode Voice Manager (q6mvm)
 d04fd7b3a873 ASoC: qdsp6: Add driver for Q6 Core Voice Processor (q6cvp)
 ba9cd1dac6c7 ASoC: qdsp6: Add driver for Q6 Core Voice Stream (q6cvs)
 e49b67185e83 ASoC: qdsp6: Add voice call functionality in Q6 Voice driver
 fe7841409608 ASoC: qdsp6: Add Q6 Voice DAI driver (v2.1)
 6599fc6fa4ac ASoC: qdsp6: q6voice: Add getter/setter for rx and tx ports
 0f3005393555 ASoC: qdsp6: q6voice-dai: Add controls for voice rx and tx ports

msm8953-mainline (1):
 e191c0d08488 ASoC: qdsp6: q6voice-dai: Add VoiceMMode1 DAI

msm8996-mainline (1):
 c444d999d4e7 dt-bindings: power: supply: Add DT schema for qcom,fg

sdm845-mainline (5):
 0140a4392bb8 arm64: configs: add sdm845 config fragment
 c21551fc9899 power: supply: Add driver for Qualcomm PMIC fuel gauge
 a2397a64ed83 Add back TEXT_OFFSET in the built image...
 7e49235bf391 media: i2c: Add imx363 image sensor driver
 63247f12e2b8 sdm845.config: ZRAM zstd and modules compression

sdm670-downstream (89):
 arm64: configs: add sdm670 config fragment
 arm64: dts: qcom: sdm670-google-sargo: mask the dtbo
 arm64: dts: qcom: sdm670-google-sargo: add touchscreen and display labels
 arm64: dts: qcom: sdm670-google: add common device tree include
 arm64: dts: qcom: pm660: add fuel gauge
 arm64: dts: qcom: sdm670-google: enable fuel gauge
 Input: add ti drv2624 haptics driver
 arm64: dts: qcom: sdm670-google: add haptics node
 arm64: dts: qcom: sdm670: add video codec
 arm64: dts: qcom: sdm670-google: enable venus video codec
 arm64: dts: qcom: drop-in bluetooth support
 arm64: dts: qcom: sdm670-google: add nfc support
 dt-bindings: soc: qcom: add modemsmem
 soc: qcom: add modemsmem
 arm64: dts: qcom: sdm670-google: add modemsmem
 dt-bindings: mailbox: qcom: Add SDM670 APCS compatible
 dt-bindings: soc: qcom: aoss: Add compatible for SDM670
 remoteproc: qcom_q6v5_mss: Add modem support for SDM670
 arm64: dts: qcom: sdm670: add modem
 dt-bindings: net: qcom,ipa: Add SDM670 compatible
 net: ipa: add sdm670 compatible
 arm64: dts: qcom: sdm670: add ipa
 arm64: dts: qcom: sdm670: add wifi
 dt-bindings: soc: qcom,smp2p: add sleepstate support
 arm64: dts: qcom: sdm670: add and enable adsp
 remoteproc: qcom: pas: Add SDM670 ADSP support
 wifi: ath10k: make in-order rx amsdu buffers persistent
 pinctrl: qcom: add sdm670 lpi tlmm
 ASoC: dt-bindings: qcom: q6dsp: add internal mi2s support
 ASoC: qdsp6: q6dsp-lpass-ports: add internal mi2s support
 ASoC: qdsp6: q6afe: add internal mi2s support
 ASoC: qdsp6: q6afe-dai: add internal mi2s support
 ASoC: qdsp6: q6routing: add internal mi2s support
 ASoC: qcom: add sdm660 internal sound card support
 ASoC: msm8916-wcd-analog: add quirk for cajon 2.0
 arm64: dts: qcom: sdm670: add lpi pinctrl
 arm64: dts: qcom: sdm670-google: add sound card
 arm64: dts: qcom: sdm670-google: add cs35l36 codecs
 arm64: dts: qcom: pm660l: add analog audio codec
 arm64: dts: qcom: sdm670: add digital audio codec
 arm64: dts: qcom: sdm670-google: configure analog and digital codecs
 drm/panel: add sofef00 panel for bonito
 drm/panel: samsung-sofef00-bonito: move dsi commands to disable function
 drm/panel: samsung-sofef00-bonito: move dsi commands to enable function
 dt-bindings: arm: qcom: document google,bonito-sdc board
 arm64: dts: qcom: sdm670-google: add bonito sdc
 dt-bindings: power: supply: qcom,fg: correct compatibles in allOf
 dt-bindings: power: supply: qcom,fg: allow interrupt properties
 dt-bindings: power: supply: qcom,fg: Document power-supplies property
 ASoC: qdsp6: q6voice-dai: add internal mi2s
 ASoC: qdsp6: q6voice-dai: add tdm
 ASoC: qdsp6: q6cvp: add commands in cvd 2.3
 ASoC: qdsp6: q6voice: add cvd 2.3 initialization sequence
 arm64: dts: qcom: sdm670: add q6voice apr services
 arm64: dts: qcom: sdm670-google: add voicemmode1 dai
 dt-bindings: thermal: tsens: add SDM670 compatible
 dt-bindings: mfd: qcom,spmi-pmic: Allow PMIC4 thermal monitor on pm660
 arm64: dts: qcom: sdm670: add thermal zones
 arm64: dts: qcom: pm660: add thermal monitor
 arm64: dts: qcom: sdm670-google: add thermal zones
 ASoC: qdsp6: q6afe: pass tdm ctrl_sync_data_delay from config
 ASoC: qdsp6: q6afe-dai: configure tdm data delay from device tree
 ASoC: codecs: rt5514: allow codec to be enabled manually
 arm64: dts: qcom: sdm670: add support for geni spi
 arm64: dts: qcom: sdm670-google: add rt5514 microphone codec
 arm64: dts: qcom: sdm670-google: Add front camera rotation/orientation
 dt-bindings: cache: qcom,llcc: Add SDM670 compatible
 soc: qcom: llcc: Add configuration data for SDM670
 arm64: dts: qcom: sdm670: add llcc
 drm/panel: Add Novatek/Tianma NT37700F panel
 arm64: dts: qcom: add support for pixel 3a xl with the tianma panel
 arm64: dts: sdm670-google-common: add IMX363 rear camera
 arm64: dts: qcom: sdm670-google: model imx363 analog pin as regulator
 pmdomain: core: Defer probe again when power domain is not found
 media: i2c: imx355: Port imx258/imx363 stream startup fixes
 media: i2c: imx363: Remove 1920_1080 mode
 arm64: dts: sdm670-google-common: set chassis-type property
 ASoC: qdsp6: q6core: add support for registering topologies
 arm64: dts: qcom: sdm670-google: specify acdb path
 ASoC: qdsp6: q6cvp: add topology ID parameters to session functions
 ASoC: qdsp6: q6voice: pass new topology property to q6cvp
 ASoC: qdsp6: q6voice-dai: add ALSA controls for the topology ID
 arm64: dts: qcom: sdm670-google: use labelled endpoint node for rear cam
 power: supply: qcom_pmi8998_charger: add charger enable and disable
 power: supply: qcom_pmi8998_charger: add passive cooling support
 arm64: dts: qcom: pm660: add cooling for charger
 arm64: dts: qcom: sdm670-google: add battery thermal zones
 power: supply: qcom_pmi8998_charger: increase default current to 3 Amps
 media: qcom: camss: Power pipeline only when streaming

sdm670-fixup (3):
 soc: qcom: llcc: stop using macro for sdm670 config
 arm64: dts: qcom: sdm670: update cpu labels for thermal zones
 arm64: dts: qcom: sdm670-google: update cpu labels in thermal zones

 Documentation/devicetree/bindings/arm/qcom.yaml    |    1 +
 .../devicetree/bindings/cache/qcom,llcc.yaml       |    2 +
 .../bindings/clock/qcom,sdm845-camcc.yaml          |    6 +-
 .../devicetree/bindings/display/msm/gmu.yaml       |    1 +
 .../devicetree/bindings/iommu/arm,smmu.yaml        |    1 +
 .../bindings/leds/qcom,spmi-flash-led.yaml         |    1 +
 .../bindings/mailbox/qcom,apcs-kpss-global.yaml    |    1 +
 .../devicetree/bindings/media/i2c/sony,imx355.yaml |  117 ++
 .../bindings/media/qcom,sdm670-camss.yaml          |  318 ++++
 .../devicetree/bindings/mfd/qcom,spmi-pmic.yaml    |    1 +
 .../devicetree/bindings/net/qcom,ipa.yaml          |    1 +
 .../devicetree/bindings/power/supply/qcom,fg.yaml  |  115 ++
 .../bindings/soc/qcom/google,modemsmem.yaml        |   40 +
 .../bindings/soc/qcom/qcom,aoss-qmp.yaml           |    1 +
 .../devicetree/bindings/soc/qcom/qcom,smp2p.yaml   |    2 +-
 .../bindings/sound/qcom,q6dsp-lpass-ports.yaml     |    5 +-
 .../devicetree/bindings/thermal/qcom-tsens.yaml    |    1 +
 arch/arm64/boot/dts/qcom/Makefile                  |    2 +
 arch/arm64/boot/dts/qcom/pm660.dtsi                |   20 +
 arch/arm64/boot/dts/qcom/pm660l.dtsi               |   48 +
 .../boot/dts/qcom/sdm670-google-bonito-sdc.dts     |   42 +
 .../boot/dts/qcom/sdm670-google-bonito-tianma.dts  |   42 +
 .../dts/qcom/sdm670-google-common-dtbo-mask.dtsi   |  483 +++++
 arch/arm64/boot/dts/qcom/sdm670-google-common.dtsi | 1563 ++++++++++++++++
 arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts   |  590 +-----
 arch/arm64/boot/dts/qcom/sdm670.dtsi               | 1965 ++++++++++++++++++++
 arch/arm64/configs/sdm670.config                   |  424 +++++
 arch/arm64/configs/sdm845.config                   | 1032 ++++++++++
 arch/arm64/kernel/head.S                           |    2 +-
 arch/arm64/kernel/image.h                          |    1 +
 drivers/gpu/drm/panel/Kconfig                      |   18 +
 drivers/gpu/drm/panel/Makefile                     |    2 +
 drivers/gpu/drm/panel/panel-novatek-nt37700f.c     |  319 ++++
 .../gpu/drm/panel/panel-samsung-sofef00-bonito.c   |  297 +++
 drivers/input/misc/Kconfig                         |   12 +
 drivers/input/misc/Makefile                        |    1 +
 drivers/input/misc/drv2624.c                       |  950 ++++++++++
 drivers/input/misc/drv2624.h                       |  290 +++
 drivers/media/i2c/Kconfig                          |   10 +
 drivers/media/i2c/Makefile                         |    1 +
 drivers/media/i2c/imx355.c                         |  120 ++
 drivers/media/i2c/imx363.c                         | 1474 +++++++++++++++
 drivers/media/platform/qcom/camss/camss-video.c    |   39 +-
 drivers/media/platform/qcom/camss/camss.c          |  191 ++
 drivers/net/ipa/ipa_main.c                         |    4 +
 drivers/net/wireless/ath/ath10k/htt.h              |    4 +
 drivers/net/wireless/ath/ath10k/htt_rx.c           |   45 +-
 drivers/pinctrl/qcom/Kconfig                       |   10 +
 drivers/pinctrl/qcom/Makefile                      |    1 +
 drivers/pinctrl/qcom/pinctrl-sdm670-lpass-lpi.c    |  172 ++
 drivers/pmdomain/core.c                            |    2 +-
 drivers/power/supply/Kconfig                       |    8 +
 drivers/power/supply/Makefile                      |    1 +
 drivers/power/supply/qcom_fg.c                     | 1318 +++++++++++++
 drivers/power/supply/qcom_pmi8998_charger.c        |  121 +-
 drivers/remoteproc/qcom_q6v5_mss.c                 |    1 +
 drivers/remoteproc/qcom_q6v5_pas.c                 |    1 +
 drivers/soc/qcom/Kconfig                           |   11 +
 drivers/soc/qcom/Makefile                          |    1 +
 drivers/soc/qcom/llcc-qcom.c                       |  105 ++
 drivers/soc/qcom/modemsmem.c                       |  107 ++
 include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h |   14 +
 include/dt-bindings/sound/qcom,q6voice.h           |    8 +
 sound/soc/codecs/Kconfig                           |    9 +-
 sound/soc/codecs/msm8916-wcd-analog.c              |   63 +-
 sound/soc/qcom/Kconfig                             |   20 +
 sound/soc/qcom/Makefile                            |    2 +
 sound/soc/qcom/qdsp6/Makefile                      |    3 +
 sound/soc/qcom/qdsp6/q6afe-dai.c                   |   46 +
 sound/soc/qcom/qdsp6/q6afe.c                       |   57 +
 sound/soc/qcom/qdsp6/q6afe.h                       |    3 +-
 sound/soc/qcom/qdsp6/q6core.c                      |  148 +-
 sound/soc/qcom/qdsp6/q6cvp.c                       |  350 ++++
 sound/soc/qcom/qdsp6/q6cvp.h                       |   20 +
 sound/soc/qcom/qdsp6/q6cvs.c                       |   36 +
 sound/soc/qcom/qdsp6/q6cvs.h                       |    9 +
 sound/soc/qcom/qdsp6/q6dsp-lpass-ports.c           |  200 ++
 sound/soc/qcom/qdsp6/q6mvm.c                       |  174 ++
 sound/soc/qcom/qdsp6/q6mvm.h                       |   15 +
 sound/soc/qcom/qdsp6/q6routing.c                   |   78 +-
 sound/soc/qcom/qdsp6/q6voice-common.c              |  272 +++
 sound/soc/qcom/qdsp6/q6voice-common.h              |   44 +
 sound/soc/qcom/qdsp6/q6voice-dai.c                 | 1320 +++++++++++++
 sound/soc/qcom/qdsp6/q6voice.c                     |  333 ++++
 sound/soc/qcom/qdsp6/q6voice.h                     |   33 +
 sound/soc/qcom/sdm660-internal.c                   |  399 ++++
 86 files changed, 15512 insertions(+), 608 deletions(-)