Skip to content

6.18: Add Arduino UNO Q (QRB2210) board support - #995

Draft
Ricardo Salveti (ricardosalveti) wants to merge 30 commits into
qualcomm-linux:qcom-6.18.yfrom
ricardosalveti:uno-q-6.18
Draft

6.18: Add Arduino UNO Q (QRB2210) board support#995
Ricardo Salveti (ricardosalveti) wants to merge 30 commits into
qualcomm-linux:qcom-6.18.yfrom
ricardosalveti:uno-q-6.18

Conversation

@ricardosalveti

Copy link
Copy Markdown

Backport series enabling the Arduino UNO Q (qrb2210-arduino-imola, QCM2290/Agatti)
on qcom-6.18.y. 29 commits: 18 UPSTREAM, 7 BACKPORT, 3 FROMGIT, 1 QCLINUX.

The BACKPORT ones are applied to qcm2290.dtsi, since the upstream rename to
agatti.dtsi (021df9d) is not part of this branch.

  • SoC DT + bindings: uart2 (MPU↔MCU link) and the uart3 QUP interconnect fix,
    gpu_zap_shader label, APR services, FastRPC on the ADSP, LPASS LPI pin controller,
    venus 300/384 MHz OPPs, and the missing CX power domain on DISPCC (without it DPU
    performance-state votes never reach the CX rail).
  • Board: arduino,imola compatible, arduino,unoq-mcu binding + spidev entry,
    the board DTS, spidev node fix, and the DSI/DP bridge description.
  • ANX7625 Type-C (6 commits, all v7.1): what makes DisplayPort over USB-C work.
    Includes both upstream Fixes: commits, so boards without a connector node are
    unaffected.
  • Fixes: pm4125 vbus compatible/constraints, gcc-qcm2290 QUP no-park (keeps the
    bootloader console alive across gcc probe), two geni-serial TX DMA fixes (one
    Cc: stable, reproduced on this board).
  • Config: CONFIG_LEDS_GROUP_MULTICOLOR=m for the RGB user LED.

Deliberately not taken: the qcm2290→agatti rename, the tree-wide lowercase-hex and
GICv3-PPI sweeps, IPA nodes, camera mclk pinctrl, and the v7.2 UBWC rework.

Validation

Built with meta-qcom / meta-qcom-3rdparty and booted on real hardware in LAVA
(core-image-base and qcom-multimedia-image). Working: display (card0,
card0-DP-1 via the ANX7625) and GPU render node, USB-C Type-C port with data/power
role and orientation, iris decoder + encoder, modem and ADSP remoteprocs with
/dev/fastrpc-adsp, eMMC with CQE, WiFi, Bluetooth, spidev to the MCU, GPIO + RGB
LEDs, gpio-keys, cpufreq, thermal. No oops, no deferred probes, no regulator errors.

qrb2210-arduino-imola.dtb passes CHECK_DTBS=y cleanly, as do qrb2210-rb1 and the
sm6115 boards; full make dtbs is clean.

Known gaps

  • Audio is not included. It needs the Arduino LPASS/sound DT series that is posted
    to lore but not yet merged (upstream's imola DTS has no sound nodes), plus the
    va-macro version-detection rework, which conflicts with this branch's local shikra
    divergence in the same function. Planned as a separate, separately validated step.

Wojciech Slenska and others added 6 commits August 20, 2026 20:01
The config_noc interconnect should use SLAVE_QUP_0.

Signed-off-by: Wojciech Slenska <wojciech.slenska@gmail.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20251009090718.32503-1-wojciech.slenska@gmail.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
(cherry picked from commit cdf9756)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
Add nodes to support uart1 and uart5.

Signed-off-by: Wojciech Slenska <wojciech.slenska@gmail.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20251009090858.32911-1-wojciech.slenska@gmail.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
(cherry picked from commit 89e4902)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
uart2 is used in Arduino UnoQ as an interface between microprocessor and
microcontroller.

Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20251120155825.121483-6-r.mereu.kernel@arduino.cc
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
(cherry picked from commit 925ac1f)
[rsalveti: applied to qcm2290.dtsi, as the rename to agatti.dtsi is not
 part of this branch]
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
Patching existing DT nodes based on full path is error prone and
generally not recommended. Follow the pattern introduced in the last
platforms, add gpu_zap_shader label to the ZAP node and use it in the
board files.

Only the qcm2290 part of the upstream commit is backported here, as the
label is required by the Arduino UNO Q board DT.  The remaining
platforms are left untouched to avoid churn on boards that do not need
it.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: David Heidelberg <david@ixit.cz>
Link: https://lore.kernel.org/r/20251028-dt-zap-shader-v1-7-7eccb823b986@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
(cherry picked from commit 2377626)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
Add APR (asynchronous packet router) node and its associated services
required to enable audio on QRB2210 RB1 board.

Cc: Srinivas Kandagatla <srini@kernel.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
Link: https://lore.kernel.org/r/20251022-rb1_hdmi_audio-v3-1-0d38f777a547@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
(cherry picked from commit f8d21b5)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
On Agatti platform the ADSP provides FastRPC support. Add corresponding
device node, in order to be able to utilize the DSP offload from the
Linux side.

Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260113-agatti-fastrpc-v2-1-b66870213f89@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
(cherry picked from commit 851d5ae)
[rsalveti: applied to qcm2290.dtsi, as the rename to agatti.dtsi is not
 part of this branch]
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
@qswat-orbit-external

Copy link
Copy Markdown

Merge Check Failed: No CR Numbers Found

Error: No Change Request numbers were found.

Please add Change Request numbers to your pull request description in the format CRs-Fixed: 12345 or link GitHub issues that are associated with Change Requests.

@ricardosalveti

Copy link
Copy Markdown
Author

As we are adding Ventuno-Q there is also need to bring Uno-Q along, so we can have arduino support for both boards coming from the QLI LTS kernel.

Alexey Klimov (laklimov) and others added 18 commits August 20, 2026 22:06
…mpatible

Add a compatible for the LPASS LPI pin controller on QCM2290. It seems
to be compatible with sm6115 LPASS pinctrl.

Cc: Konrad Dybcio <konradybcio@kernel.org>
Cc: Srinivas Kandagatla <srini@kernel.org>
Acked-by: Rob Herring (Arm) <robh@kernel.org>
Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20251007-rb1_hdmi_audio-v2-1-821b6a705e4c@linaro.org
(cherry picked from commit f919466)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
Add the Low Power Audio SubSystem Low Power Island (LPASS LPI) pin
controller device node required for audio subsystem on Qualcomm
QRB2210 RB1. QRB2210 is based on qcm2290 which is based on sm6115.

While at this, also add description of lpi_i2s2 pins (active state)
required for audio playback via HDMI/I2S.

Cc: Srinivas Kandagatla <srini@kernel.org>
Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
Link: https://lore.kernel.org/r/20251022-rb1_hdmi_audio-v3-2-0d38f777a547@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
(cherry picked from commit 1fc3073)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
Add additional OPP entries for the Agatti platform to support higher
operating frequencies as specified in the hardware documentation.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260507-iris-ar50lt-v1-16-d22cccedc3e2@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
(cherry picked from commit f8874bc)
[rsalveti: applied to qcm2290.dtsi, as the rename to agatti.dtsi is not
 part of this branch]
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
…domains property

Add the missing power-domains property to associate DISPCC with RPMPD_CX.
This is to ensure the genpd performance state votes on the GDSC to get
propagated to the CX rail and to avoid the rail under-voltage conditions.
This change breaks ABI, as the power-domains property is marked as
required.

Fixes: 85cedb4 ("dt-bindings: clock: Add qualcomm QCM2290 DISPCC bindings")
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Imran Shaik <imran.shaik@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260718-shikra-dispcc-gpucc-v6-1-62703e05ef0f@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>

(cherry picked from commit 70ef527)
[rsalveti: keep the DSI1/sleep clocks already present in this branch, and
 require power-domains only when the compatible is not qcom,shikra-dispcc.
 Upstream marks it required for every compatible, but this branch also
 matches qcom,shikra-dispcc against this schema and the Shikra DTs do not
 describe the CX domain yet, so making it unconditional regresses
 dtbs_check on shikra-cq{m,s}-evk{,-imx577-camera}]
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
…SPCC

Add the missing power-domains property to associate DISPCC with CX rail.
This is to ensure the genpd performance state votes on the GDSC to get
propagated to the CX rail and to avoid the rail under-voltage conditions.

Fixes: a2b3209 ("arm64: dts: qcom: qcm2290: Add display nodes")
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Imran Shaik <imran.shaik@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260718-shikra-dispcc-gpucc-v6-12-62703e05ef0f@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>

(cherry picked from commit 26d7b23)
[rsalveti: applied to qcm2290.dtsi, keeping the DSI1/sleep clocks already
 present in this branch]
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
…619L/610/702

These GPUs have physically have the same regions as the base case
("main" + "cx_mem" + "cx_dbgc"). Remove the specific override.

Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Acked-by: Rob Herring (Arm) <robh@kernel.org>
Patchwork: https://patchwork.freedesktop.org/patch/696547/
Message-ID: <20251229-topic-6115_2290_gpu_dbgc-v1-1-4a24d196389c@oss.qualcomm.com>
Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20251229-topic-6115_2290_gpu_dbgc-v1-1-4a24d196389c@oss.qualcomm.com
(cherry picked from commit ae26b4d)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
Add entry for Arduino SRL (https://arduino.cc)

Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20251120155825.121483-2-r.mereu.kernel@arduino.cc
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
(cherry picked from commit d16ffac)

Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
Document Arduino imola, UnoQ codename.
Arduino UnoQ combines Qualcomm Dragonwing™ QRB2210 microprocessor
with STMicroelectronics STM32U585 microcontroller.

Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20251120155825.121483-5-r.mereu.kernel@arduino.cc
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
(cherry picked from commit 311d173)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
Add unoq mcu interface. It describes an iterface between Qualcomm
QRB2210 microprocessor and STMicroelectronics STM32U585 microcontroller
on Arduino UnoQ single-board computer.
This is a trivial device since it's usage is handled in user space
by the arduino-router service.

Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://patch.msgid.link/20251120155825.121483-3-r.mereu.kernel@arduino.cc
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit a7bde7c)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
Add compatible entry in spidev describing in Arduino UnoQ single-board
computer the interface between Qualcomm QRB2210 microprocessor and
STMicroelectronics STM32U585 microcontroller.
It is handled in user space by the arduino-router service.

Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://patch.msgid.link/20251120155825.121483-4-r.mereu.kernel@arduino.cc
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit 43a3adb)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
Arduino UnoQ is a single-board computer combining Qualcomm
Dragonwing™ QRB2210 microprocessor with STMicroelectronics STM32U585
microcontroller.
Support to a simply boot to shell environment includes:
- UART, I2C, SPI
- onboard LEDS
- eMMC
- WLAN and BT

Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20251120155825.121483-7-r.mereu.kernel@arduino.cc
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
(cherry picked from commit 3f745bc)
[rsalveti: include qcm2290.dtsi, as the rename to agatti.dtsi is not
 part of this branch]
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
CS pin added on pinctrl0 property is causing spidev to return -ENODEV
since that GPIO is already part of spi5 pinmuxing.

Fixes: 3f745bc ("arm64: dts: qcom: qrb2210: add dts for Arduino unoq")
Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260213101002.105238-1-r.mereu.kernel@arduino.cc
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
(cherry picked from commit 1a040df)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
ANX7625 can be used to mux converted video stream with the USB signals
on a Type-C connector. Describe the optional connector subnode, make it
exclusive with the AUX bus and port@1 as it is impossible to have both
eDP panel and USB-C connector.

Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://patch.msgid.link/20260121-anx7625-typec-v2-1-d14f31256a17@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
(cherry picked from commit 1d75324)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
ANX7625 can be used as a USB-C controller, handling USB and DP data
streams. Provide minimal Type-C support necessary for ANX7625 to
register the Type-C port device and properly respond to data / power
role events from the Type-C partner.

While ANX7625 provides TCPCI interface, using it would circumvent the
on-chip running firmware. Analogix recommended using the higher-level
interface instead of TCPCI.

Reviewed-by: Xin Ji <xji@analogixsemi.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://patch.msgid.link/20260121-anx7625-typec-v2-2-d14f31256a17@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
(cherry picked from commit f81455b)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
Swapping the data role requires sending the message to the other USB-C
side. Implement sending these messages through the OCM. The code is
largely based on the anx7411.c USB-C driver.

Reviewed-by: Xin Ji <xji@analogixsemi.com>
Link: https://patch.msgid.link/20260121-anx7625-typec-v2-3-d14f31256a17@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
(cherry picked from commit 8ad0f7d)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
…ency

When CONFIG_TYPEC is enabled, but USB_ROLE_SWITCH=m, the anx7625 driver
fails to link as built-in:

aarch64-linux-ld: drivers/gpu/drm/bridge/analogix/anx7625.o: in function `anx7625_i2c_remove':
anx7625.c:(.text+0x6ec): undefined reference to `usb_role_switch_put'
aarch64-linux-ld: drivers/gpu/drm/bridge/analogix/anx7625.o: in function `anx7625_typec_set_status':
anx7625.c:(.text+0x3080): undefined reference to `usb_role_switch_set_role'
aarch64-linux-ld: drivers/gpu/drm/bridge/analogix/anx7625.o: in function `anx7625_i2c_probe':
anx7625.c:(.text+0x5368): undefined reference to `fwnode_usb_role_switch_get'

The problem is that both dependencies are optional in the sense of allowing
the anx7625 driver to call the exported interfaces to be used from a loadable
module, but cannot work for built-in drivers. It would be possible to handle
all nine combinations of the CONFIG_TYPEC and CONFIG_USB_ROLE_SWITCH tristate
options, but that does add a lot of complexity that seems unnecessary when
in reality any user of this driver would have both enabled anyway.

Turn both dependencies into hard 'depends on' here to only allow configurations
where it's possible to actually use them, and remove the misguided IS_REACHABLE()
check that did nothing here.

Fixes: f81455b ("drm: bridge: anx7625: implement minimal Type-C support")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patch.msgid.link/20260304083604.724519-1-arnd@kernel.org
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
(cherry picked from commit 10e9ff4)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
The typec_set_*() functions do not tolerate being passed the NULL
typec_port instance. However, if CONFIG_TYPEC is enabled, but anx7625
DT node doesn't have the usb-c connector fwnode, then typec_port remains
NULL, crashing the kernel. Prevent calling typec_set_foo() functions by
checking that ctx->typec_port is not NULL in anx7625_typec_set_status().

 Call trace:
  typec_set_orientation+0x18/0x68 (P)
  anx7625_typec_set_status+0x108/0x13c
  anx7625_work_func+0x124/0x438
  process_one_work+0x214/0x648
  worker_thread+0x1b4/0x358
  kthread+0x14c/0x214
  ret_from_fork+0x10/0x20
 Code: 910003fd a90153f3 aa0003f3 2a0103f4 (f9431400)

Fixes: f81455b ("drm: bridge: anx7625: implement minimal Type-C support")
Reported-by: Salendarsingh Gaud <sgaud@qti.qualcomm.com>
Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
[db: dropped chunk anx7625_typec_unregister(), wrote commit message]
Cc: Amit Kucheria <akucheri@qti.qualcomm.com>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://patch.msgid.link/20260215-anx-fix-no-typec-v1-1-75172a5ca88b@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
(cherry picked from commit 8e3d8b3)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
During initial checks the ANX7625 bridge can be powered on before
setting up the Type-C port. At this point, when
anx7625_ocm_loading_check() checks if it can disable PD or not, it will
notice that typec_port is not set and disable PD, breaking orientation
and HPD handling. Unify the check between anx7625_ocm_loading_check()
anx7625_i2c_probe() and anx7625_typec_register() and check for the
presence of the "connector" node.

Fixes: 8ad0f7d ("drm: bridge: anx7625: implement message sending")
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Xin Ji <xji@analogixsemi.com>
Tested-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
Link: https://patch.msgid.link/20260211-anx7625-fix-pd-v1-1-1dd31451b06f@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
(cherry picked from commit 91d0450)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
…bridge

Aruino Uno-Q uses Analogix ANX7625 DSI-to-DP bridge to convert DSI
signals to the connected USB-C DisplayPort dongles. Decribe the chip,
USB-C connector and routing of USB and display signals.

Co-developed-by: Martino Facchin <m.facchin@arduino.cc>
Signed-off-by: Martino Facchin <m.facchin@arduino.cc>
Tested-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260213-uno-q-anx7625-v2-1-c23359616528@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>

(cherry picked from commit d5574bb)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
…onstraints

Remove pm8150b fallback compatible from pm4125_vbus and fix regulator
constraints in qrb2210 DTS files to use microvolt instead of
microamp.

Signed-off-by: Rakesh Kota <rakesh.kota@oss.qualcomm.com>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260706-add_pm4125-vbus-reg-v3-4-999d78a87b81@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
(cherry picked from commit cab6d96)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
The gcc_qupv3_wrap0_s[0-5]_clk_src RCGs feed the QUP serial engines
(UART/I2C/SPI). Since shared RCGs are parked to XO at registration time,
binding the gcc-qcm2290 driver reprograms these clocks away from the
rate configured by the bootloader. For the UART used as the boot console
this drops early console output until the serial driver later
reconfigures the clock.

Switch the QUP wrap0 clock sources over to
clk_rcg2_shared_no_init_park_ops so their frequency is left unchanged at
registration time, keeping the bootloader-configured console working
across the gcc driver probe.

Fixes: 01a0a6c ("clk: qcom: Park shared RCGs upon registration")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260722-agatti-no-park-v1-1-31ae3a4774e5@oss.qualcomm.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
(cherry picked from commit 9c4cee9)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
When transmit flushing a qcom-geni UART during an ongoing TX DMA, the
UART gets stuck infinitely repeating corrupted TX DMA frames.

The DMA-mode uart_ops does not provide a flush_buffer callback, so an
in-flight transfer can complete after serial core has reset the transmit
kfifo, underflowing its length and resubmitting page-sized transfers
indefinitely. Add one that stops the transfer and clears tx_remaining
and tx_queued.

The stop path was also broken: it unmapped the buffer while the serial
engine could still read it, and never reset the TX DMA state machine.
Cancel the main sequencer command first, then reset the state machine
and wait for it before unmapping. Drop the early return so a pending
mapping is also cleaned up when the main command is inactive.

The bug can be triggered from userspace with a large write immediately
followed by TCOFLUSH. A following tcdrain will hang forever. The bug was
reproduced and this fix was validated on Arduino Uno Q (QRB2210)
using /dev/ttyHS1.

Assisted-by: Claude:claude-5-opus Codex:gpt-5
Signed-off-by: Jan Sebastian Götte <linux@jaseg.de>
Fixes: 2aaa43c ("tty: serial: qcom-geni-serial: add support for serial engine DMA")
Cc: stable <stable@kernel.org>
Reviewed-by: Praveen Talari <praveen.talari@oss.qualcomm.com>
Link: https://patch.msgid.link/20260729174105.21838-2-git@jaseg.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit e3c0483)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
The qcom GENI serial DMA TX completion path advances the transmit fifo by
the number of bytes recorded in port->tx_remaining.

If uart_flush_buffer() runs after the hardware has completed a DMA
transfer but before the DMA completion interrupt has been handled, the
serial core resets the transmit fifo while port->tx_remaining still
describes the old DMA transfer.

A previous fix avoided advancing an empty fifo by checking that the fifo
length is at least tx_remaining. That still does not distinguish the old
DMA payload from new bytes written after the flush. If userspace writes
new data before the stale DMA completion interrupt is handled, the fifo
can again contain at least tx_remaining bytes and the stale completion
can advance and discard those new bytes.

Mark an in-flight DMA transfer stale when the transmit fifo is flushed.
The later completion still unprepares the original DMA mapping using the
saved length, but it no longer advances the transmit fifo.

Fixes: 2aaa43c ("tty: serial: qcom-geni-serial: add support for serial engine DMA")
Signed-off-by: Guangshuo Li <lgs201920130244@gmail.com>
Link: https://patch.msgid.link/20260708131726.768692-1-lgs201920130244@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 7ea38c4)
Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
The Arduino UNO Q exposes its three user LEDs (red, green, blue) both
individually and as a single RGB LED through the leds-group-multicolor
driver.  Enable it as a module so the multi-led node in
qrb2210-arduino-imola.dts probes.

Signed-off-by: Ricardo Salveti <ricardo.salveti@oss.qualcomm.com>
@qswat-orbit-external

Copy link
Copy Markdown

Merge Check Failed: No CR Numbers Found

Error: No Change Request numbers were found.

Please add Change Request numbers to your pull request description in the format CRs-Fixed: 12345 or link GitHub issues that are associated with Change Requests.

@ricardosalveti

Copy link
Copy Markdown
Author

checkpatch — 10 warnings, all verbatim from upstream

Commit Warning Why it stands
f3230c634fca APR services line length of 101 ×3 Byte-identical to upstream f8d21b5e4caa; re-indenting would break check-patch-compliance's diff against the Link: patch.
9b8bef5c0689, 1764203ac478, fa2f4d458d4e, 086538743104 Unknown commit id ×4 Upstream Fixes: tags. The targets are in this series (2006dea1a7ef, d297a8669579 ×2, f5e18277159f) but under backport SHAs. Rewriting them to local SHAs would destroy upstream traceability.
fa2f4d458d4e Reported-by: without Closes: Verbatim upstream message.
1764203ac478 Prefer a maximum 75 chars per line Verbatim upstream message.
80c257f6c534 Invalid email format for stable Verbatim upstream trailer.

The three vendor "arduino" appears un-documented warnings from the previous run
were real, and are fixed by backporting the missing d16ffac77171
"dt-bindings: vendor-prefixes: Add Arduino name".

check-patch-compliance — 3 adapted backports + 1 local patch

BACKPORT: arm64: dts: qcom: add gpu_zap_shader label                        ==> Change is different from the one mentioned in Link
BACKPORT: dt-bindings: clock: qcom,qcm2290-dispcc: Add missing power-domains ==> Change is different from the one mentioned in Link
BACKPORT: arm64: dts: qcom: qrb2210: add dts for Arduino unoq               ==> Change is different from the one mentioned in Link
QCLINUX:  arm64: defconfig: Enable multicolor LED group support             ==> Commit summary does not start with a required prefix

The first three are precisely what BACKPORT: denotes, each documented in a
[rsalveti: ...] note: only the qcm2290.dtsi hunk of a 64-file commit; keeping
this branch's DSI1/sleep clocks plus the Shikra scoping; and including
qcm2290.dtsi rather than agatti.dtsi since the rename (021df9dee9cd) is not
on this branch. The script has no exemption for BACKPORT:, so any adapted
backport fails by construction — worth relaxing the diff check for that prefix.

The last is a downstream-only defconfig change: the checker accepts only
FROMLIST|FROMGIT|UPSTREAM|BACKPORT and requires a Link:, which no local patch
can satisfy — though this branch already carries 119 QCLINUX: commits,
including config ones. Happy to move it to the BSP layer if you prefer the PR to
be exclusively backports.

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.

10 participants