Skip to content
Linux 6.16.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.16.3.

Some video acceleration issues were addressed in this release. One of the fixes
is for video encoding, where the driver would allocate 3/4 of the required
output buffer. Another fix is when the driver needs to send an end of stream
(when seeking or closing a video), it would normally send the pointer
0xdeadb000, which confuses the firmware's CP (Content Protection) code. There
are still clock scaling issues when decoding.

An issue with disconnecting from WiFi was discovered, where the driver would be
stuck for 3 seconds trying to remove a WPA key. This makes it a little more
reliable to roam between WiFi access points, or between different frequencies of
the same access point.

The fuel gauge driver was updated, fixing expectations by UPower about how the
kernel reports the direction of electrical current.

Some review messages for the front camera were addressed.

SDM660 is anticipated to have working audio with the sound card driver. This
makes it more important to upstream, so some changes have been applied to make
it more upstreamable.

I added sign-offs to commits that I wrote and didn't sign-off already.

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

linux-patches.git commits since previous release (50):
 9f383eb patches: add review tags for camss power management patch
 e8d7bc7 ASoC: qdsp6: q6cvp: use common channel mappings for cvd 2.3 commands
 5614ef8 media: i2c: imx355: make regulator names more const
 ab113dd arm64: dts: qcom: sdm670-google: rearrange pinctrl props for front cam
 18e3d52 arm64: dts: qcom: sdm670-google: add camss regulator and empty line
 0eca773 arm64: dts: qcom: sdm670-google: assign mclk2 to 19.2 MHz
 00c9d35 arm64: dts: qcom: sdm670-google: remove nesting of mclk
 d5d3703 arm64: dts: qcom: sdm670-google: move front cam endpoint to camss fixup
 b173431 arm64: dts: qcom: sdm670-google: move rear cam endpoint to camss fixup
 96c6d86 arm64: dts: qcom: sdm670: remove camss endpoint nodes
 cab693b patches: squash Robert's front camera orientation patch
 b9c1d64 media: i2c: imx355: Get clock frequency from devicetree-defined clock
 0f66414 arm64: dts: qcom: sdm670-google: remove imx355 clock-frequency property
 087e07f dt-bindings: media: i2c: imx355: Remove clock-frequency property
 ae8bc3a dt-bindings: media: i2c: imx355: Be more strict with port child node
 9f59aaa dt-bindings: media: i2c: imx355: Remove assigned-clocks properties
 3669e87 media: i2c: imx355: Use common power on and off functions
 8ef94e8 dt-bindings: media: i2c: imx355: rename regulator names
 503cbc6 media: i2c: imx355: Rename regulators to avdd, dvdd, and dovdd
 e9fa14e arm64: dts: qcom: sdm670-google: rename imx355 regulators
 29fa424 patches: re-pick sdm845 patches from sdm845-6.16-rc2-3
 150b5f2 sdm845.config: enable ROHM BU64748 camera lens actuator
 4e63842 arch: arm64: configs: sdm845: enable LG SW49410 panel driver
 97b487d power: supply: qcom_fg: dont put battery info on remove
 f809d92 power: supply: qcom_fg: invert charging current
 5907117 sdm845.config: replace with upstream yoga c630 battery driver
 452265b patches: remove original commit message
 b823827 media: i2c: imx355: Bring init sequence closer to other upstream drivers
 e0bd0c8 patches: re-pick camss power management fix from linux-next
 7654527 patches: add reviewed-by from Konrad for charger patch
 bb8437b media: i2c: imx355: Use devm_clk_get_optional for clocks
 db548b1 arm64: dts: qcom: sdm670-google: use 0 in front cam gpio pin power
 7a6c77e media: i2c: imx355: Disable clocks as last power-off action
 bf6fd09 dt-bindings: media: i2c: imx355: Move unevaluatedProperties down
 dd267b3 dt-bindings: media: i2c: imx355: Require supplies and clock-names
 215f51a patches: stage wifi fix
 03c33e3 arm64: dts: qcom: sdm670-google: mark protected lpi pins as reserved
 fe526d3 media: venus: increase compressed frame size
 9786b15 media: venus: use a null pointer on HFI 4xx
 126bfa9 dt-bindings: pinctrl: qcom: Add SDM670 LPI pinctrl
 dd982e2 ASoC: qcom: sdm660-internal: use 6.144 MHz for internal microphone
 1a485b0 wifi: ath10k: only wait for response to SET_KEY
 6366054 patches: move venus driver fixes before dts patches
 c51e48d patches: separate adsp dts patch into SoC and device patches
 d82ca40 patches: sign-off ath10k install_key patch
 825b35a patches: sign off other patches that I wrote
 e30abd7 arm64: configs: sdm670.config: support zswap
 95e3ff5 patches: move camss pm patch to linux-next group
 7386b7a patches: re-pick charger patch from linux-next
 a84c871 patches: rebase onto v6.16.2

linux-next (2):
 164202f68203 media: qcom: camss: Power pipeline only when streaming
 8839b8e6e849 arm64: dts: qcom: sdm670-google-sargo: enable charger

sdm670-staging (8):
 [PATCH v2 1/4]
  dt-bindings: display/msm/gmu: Add SDM670 compatible
 [PATCH v2 0/4] media: i2c: IMX355 for the Pixel 3a
  dt-bindings: media: i2c: Add Sony IMX355
  media: i2c: imx355: Support devicetree and power management
  arm64: dts: qcom: sdm670: remove camss endpoint nodes
  arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera
 Not sent yet (2):
  wifi: ath10k: make in-order rx amsdu buffers persistent
  wifi: ath10k: only wait for response to SET_KEY

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 (8):
 1ce89808be07 arm64: configs: add sdm845 config fragment
 06e3b739fad6 power: supply: Add driver for Qualcomm PMIC fuel gauge
 e93c722859f5 Add back TEXT_OFFSET in the built image...
 f95a0d6b9100 media: i2c: Add imx363 image sensor driver
 abd0a0bd8881 sdm845.config: enable ROHM BU64748 camera lens actuator
 abd0a0bd8881 arch: arm64: configs: sdm845: enable LG SW49410 panel driver
 0d82ee4741e0 power: supply: qcom_fg: dont put battery info on remove
 80f32ed88cbe power: supply: qcom_fg: invert charging current
 7cddcfc12f44 sdm845.config: replace with upstream yoga c630 battery driver

sdm670-downstream (92):
 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
 media: venus: increase compressed frame size
 media: venus: use a null pointer on HFI 4xx
 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
 remoteproc: qcom: pas: Add SDM670 ADSP support
 arm64: dts: qcom: sdm670: add adsp
 arm64: dts: qcom: sdm670-google: enable adsp
 dt-bindings: pinctrl: qcom: Add SDM670 LPI pinctrl
 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
 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
 ASoC: qdsp6: q6core: add support for registering topologies
 arm64: dts: qcom: sdm670-google: specify acdb path
 ASoC: qdsp6: q6cvp: add commands in cvd 2.3
 ASoC: qdsp6: q6voice: add cvd 2.3 initialization sequence
 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
 ASoC: qdsp6: q6voice-dai: add internal mi2s
 ASoC: qdsp6: q6voice-dai: add tdm
 arm64: dts: qcom: sdm670: add q6voice apr services
 arm64: dts: qcom: sdm670-google: add voicemmode1 dai
 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
 drm/panel: Add Novatek/Tianma NT37700F panel
 arm64: dts: qcom: add support for pixel 3a xl with the tianma panel
 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
 dt-bindings: thermal: tsens: add SDM670 compatible
 dt-bindings: mfd: qcom,spmi-pmic: Allow PMIC4 thermal monitor on pm660
 thermal: qcom-spmi-adc-tm5: Correct the voltage-code scaling for HC
 arm64: dts: qcom: sdm670: add thermal zones
 arm64: dts: qcom: pm660: add thermal monitor
 arm64: dts: qcom: sdm670-google: add thermal zones
 dt-bindings: cache: qcom,llcc: Add SDM670 compatible
 soc: qcom: llcc: Add configuration data for SDM670
 arm64: dts: qcom: sdm670: add llcc
 arm64: dts: sdm670-google-common: add IMX363 rear camera
 arm64: dts: qcom: sdm670-google: model imx363 analog pin as regulator
 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
 arm64: dts: qcom: sdm670-google: switch polarity for rear camera reset
 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
 arm64: dts: qcom: sdm670: add cdsp
 arm64: dts: qcom: sdm670-google: enable cdsp

 Documentation/devicetree/bindings/arm/qcom.yaml    |    1 +
 .../devicetree/bindings/cache/qcom,llcc.yaml       |    2 +
 .../devicetree/bindings/display/msm/gmu.yaml       |    1 +
 .../bindings/mailbox/qcom,apcs-kpss-global.yaml    |    1 +
 .../devicetree/bindings/media/i2c/sony,imx355.yaml |  112 ++
 .../devicetree/bindings/mfd/qcom,spmi-pmic.yaml    |    1 +
 .../devicetree/bindings/net/qcom,ipa.yaml          |    1 +
 .../pinctrl/qcom,sdm670-lpass-lpi-pinctrl.yaml     |   79 +
 .../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               |   42 +
 .../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 | 1553 ++++++++++++++++++
 arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts   |  599 +------
 arch/arm64/boot/dts/qcom/sdm670.dtsi               | 1696 +++++++++++++++++++-
 arch/arm64/configs/sdm670.config                   |  331 ++++
 arch/arm64/configs/sdm845.config                   | 1165 ++++++++++++++
 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                         |  153 +-
 drivers/media/i2c/imx363.c                         | 1474 +++++++++++++++++
 drivers/media/platform/qcom/camss/camss-video.c    |   39 +-
 drivers/media/platform/qcom/venus/helpers.c        |    2 +-
 drivers/media/platform/qcom/venus/vdec.c           |    3 +-
 drivers/media/platform/qcom/venus/venc.c           |    5 +-
 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/net/wireless/ath/ath10k/mac.c              |    8 +-
 drivers/pinctrl/qcom/Kconfig                       |   10 +
 drivers/pinctrl/qcom/Makefile                      |    1 +
 drivers/pinctrl/qcom/pinctrl-sdm670-lpass-lpi.c    |  172 ++
 drivers/power/supply/Kconfig                       |    8 +
 drivers/power/supply/Makefile                      |    1 +
 drivers/power/supply/qcom_fg.c                     | 1322 +++++++++++++++
 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 ++
 drivers/thermal/qcom/qcom-spmi-adc-tm5.c           |    2 +-
 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                   |   47 +
 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                       |  331 ++++
 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, 14829 insertions(+), 649 deletions(-)