Commit graph

1,447,442 commits

Author SHA1 Message Date
52c785c315 arm64: dts: qcom: milos-fairphone-fp6: enable Senary MI2S dai-link
Uncomment the Senary MI2S speaker dai-link. The sc8280xp machine driver
gained Senary MI2S support and the aw88261 power-up check is fixed (both
carried on this branch), so the link is functional: both AW88261 amps
load their ACF firmware and play.

This restores the enablement that was lost when the audio carries were
rebased from the v7.0.8 stack onto v7.1.2-milos: only the two driver
patches were carried over, leaving the sound card with zero dai-links
(the card registers but stays empty - no PCMs, no controls).

Assisted-by: Claude:claude-fable-5
Signed-off-by: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
2026-07-05 21:32:11 +02:00
d571dd42d3 ASoC: qcom: q6apm-lpass-dais: start the graph at prepare
The DAPM power-up sequence runs during snd_pcm prepare, but the BE
port graph is only started at trigger time. A codec that powers up
synchronously from a DAPM widget event and needs a running bit clock
at that point - such as aw88261 since commit caea99ac809d ("ASoC:
codecs: aw88261: remove async start") - can therefore never see a
live clock: its power-up check runs before the trigger and fails on
every stream start.

Start the graph at the end of prepare instead, mirroring what
q6afe_dai_prepare() does on the legacy stack, so the interface
clocks already run when DAPM powers up the codec. The FE side
already starts its own graph at prepare in q6apm_dai_prepare();
only the BE waited for trigger. The trigger-time start is kept as
a fallback, guarded by is_port_started.

Tested on the Fairphone (Gen. 6) - 2x aw88261 on Senary MI2S:
without this the amplifiers fail to power up with SYSST reporting
"no clock" on every stream start; with it they start synchronously,
including for the first short stream of the boot.

Assisted-by: Claude:claude-fable-5
Signed-off-by: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
2026-07-05 21:32:11 +02:00
79c7597fc5 ASoC: codecs: aw88261: backport mainline format negotiation + power-up fix
The v7.1.2-milos base predates two aw88261 changes this branch needs:
the hw_params format-negotiation series (Val Packett's work, in broonie
for-7.2) and our power-up SYSST fix. The Senary MI2S carry drives the
two AW88261 amps in S16_LE end to end, which relies on the amplifier
negotiating its format; without it the machine driver has to force
32-bit slots. The SYSST fix is also required: aw88261_dev_start()
otherwise fails "check sysst fail" on this firmware profile because it
demands SWS/BSTS while the amp is still muted.

Backport aw88261.c/.h wholesale to the mainline state (matching
work/linux tag audio-mainline-aw88261) so this branch tracks mainline
rather than the older milos base driver. Local carry only; milos
absorbs it on the next rebase past those commits.

Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
2026-07-05 21:32:11 +02:00
692c0cd1a4 ASoC: qcom: sc8280xp: support Senary MI2S
Extend the clock-provider DAI fmt setup to Senary MI2S; without it
q6i2s_set_fmt() is never called, ws_src remains external and the DSP
does not drive the I2S clocks.

On the Fairphone (Gen. 6) the speaker amplifiers sit on this
interface; the board DTS enabling it is headed upstream separately
via linux-arm-msm.

Assisted-by: Claude:claude-fable-5
Signed-off-by: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
2026-07-05 21:32:11 +02:00
Luca Weiss
dfe0125e73 arm64: dts: qcom: milos-fairphone-fp6: Enable Iris v7.1.2-milos
Configure the firmware-name and enable Iris so that hardware-accelerated
video decoding & encoding works.

Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:41 +02:00
Luca Weiss
e6f80a5035 arm64: dts: qcom: milos-fairphone-fp6: Enable GPU
Configure the path for the zap shader firmware and enable the GPU.

Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:41 +02:00
Luca Weiss
1679e06efd ------------- 2026-06-30 15:48:41 +02:00
Luca Weiss
7b3104d3b1 arm64: dts: qcom: milos: Add reset for sdhc_2
Add the missing reset (BCR) for sdhc_2.

Fixes: d9d59d105f ("arm64: dts: qcom: Add initial Milos dtsi")
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:40 +02:00
Luca Weiss
c2bc6ab69c ------------- 2026-06-30 15:48:40 +02:00
Luca Weiss
963804678f WIP arm64: dts: qcom: milos: Add sound macro and soundwire nodes
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>

Still too many FIXMEs
2026-06-30 15:48:40 +02:00
Luca Weiss
66ce826713 WIP arm64: dts: qcom: milos-fairphone-fp6: Sound / speaker WIP
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:39 +02:00
Luca Weiss
421e386eb0 ASoC: qcom: sc8280xp: Add support for Milos
Add compatible for sound card on Qualcomm Milos boards.

Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:39 +02:00
Luca Weiss
c40b3e4b94 ASoC: dt-bindings: qcom,sm8250: Add Milos sound card
Add bindings for Milos sound card, which looks fully compatible with
existing SM8450.

Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:39 +02:00
Luca Weiss
26cc26f78a ------------- 2026-06-30 15:48:38 +02:00
Luca Weiss
b573968a94 fp6_defconfig: add defconfig 2026-06-30 15:48:38 +02:00
Luca Weiss
2356e72625 ------------- 2026-06-30 15:48:38 +02:00
Luca Weiss
39c588bb5b arm64: dts: qcom: milos-fairphone-fp6: Add downstream touchscreen
Add a node for the SPI-connected touchscreen, and its pinctrl.

WIP: Downstream touchscreen driver and bindings

Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:38 +02:00
Luca Weiss
022127938a Input: eswin_touch - Remove 10s probe delay 2026-06-30 15:48:37 +02:00
Luca Weiss
5f6c2aed42 Input: eswin_touch - Fix ABS_X min/max being 0
Only call input_mt_init_slots after setting up some properties which are
then copied to other properties.
2026-06-30 15:48:37 +02:00
Luca Weiss
f0509b42db Input: eswin_touch - Fix up downstream driver 2026-06-30 15:48:37 +02:00
Luca Weiss
60ca103344 Input: eswin_touch - Import from downstream 2026-06-30 15:48:36 +02:00
Luca Weiss
aec10556b7 ------------- 2026-06-30 15:48:36 +02:00
Luca Weiss
5cf18f1558 Revert "drm/panel: novatek-nt37705: Configure for 10-bit"
10-bit DSC command mode is currently broken (2026-04-21). Keep it for
later given the panel works great also in 8-bit mode.

This reverts commit ea6afb55c1.
2026-06-30 15:48:36 +02:00
Luca Weiss
93364750fe drm/panel: novatek-nt37705: Configure for 10-bit
Update the init sequence and configuration to initialize the panel for
10-bit DSC cmd-mode.

Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:36 +02:00
Luca Weiss
ae385cadc2 ------------- 2026-06-30 15:48:35 +02:00
Luca Weiss
80f9ea5bc9 FROMLIST v1 arm64: dts: qcom: milos-fairphone-fp6: Enable display
Configure the MDSS nodes for the phone and add the panel node.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:35 +02:00
Luca Weiss
c651dc2911 FROMLIST v1 arm64: defconfig: Enable Novatek NT37705 panel
Enable the NT37705 panel driver which is used on Fairphone (Gen. 6).

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:35 +02:00
Luca Weiss
66e571e789 FROMLIST v1 drm/panel: Add driver for Novatek NT37705 panel
Add support for the 2484x1116 AMOLED panel from BOE (BJ631JHM-T71-D900)
bundled with a NT37705 driver IC, as found on the Fairphone (Gen. 6)
smartphone.

The panel can also be configured in 10-bit (RGB101010) mode, however
currently it's configured in 8-bit (RGB888) since there's some issues in
the Qualcomm DPU driver when driving this panel in 10-bit.

Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:34 +02:00
Luca Weiss
3fc0ea7436 FROMLIST v1 dt-bindings: display: panel: Add Novatek NT37705
Novatek NT37705 is a display driver IC used to drive AMOLED DSI panels.

Describe it and the panel in the Fairphone (Gen. 6) (BJ631JHM-T71-D900
from BOE) using it.

Link: https://lore.kernel.org/r/81a3c207-4d8f-490f-8e2a-6f3f4c2acd35@kernel.org/
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:34 +02:00
Luca Weiss
bd10029b8d ------------- 2026-06-30 15:48:34 +02:00
Alexander Koskovich
acc082c0a3 FROMLIST RFC v6 arm64: dts: qcom: milos: Add Adreno 810 GPU and GMU nodes
Add GPU and GMU devicetree nodes for the Adreno 810 GPU found on
Qualcomm SM7635 (Milos) based devices.

The qcom,kaanapali-gxclkctl.h header can be reused here because
Milos uses the same driver and the GX_CLKCTL_GX_GDSC definition
is identical.

Signed-off-by: Alexander Koskovich <akoskovich@pm.me>
2026-06-30 15:48:34 +02:00
Luca Weiss
6629a0d934 ------------- 2026-06-30 15:48:33 +02:00
Taniya Das
fa645b9c77 FROMLIST v2 clk: qcom: gxclkctl: Remove GX/GMxC rail votes to align with IFPC
The GX GDSC control is handled through a dedicated clock controller,
and the enable/disable sequencing depends on correct rail voting.
The driver votes for the GX/GMxC rails and CX GDSC before toggling
the GX GDSC. Currently, during GMU runtime PM resume, rails remain
enabled due to upstream votes propagated via RPM-enabled devlinks
and explicit pm_runtime votes on GX GDSC.

This is not an expected behaviour of IFPC(Inter Frame Power Collapse)
requirements of GPU as GMU firmware is expected to control these rails,
except during the GPU/GMU recovery via the OS and that is where the GX
GDSC should be voting for the rails (GX/GMxC and CX GDSC) before
toggling the GX GDSC.

Thus, disable runtime PM after successfully registering the clock
controller.

Signed-off-by: Taniya Das <taniya.das@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
2026-06-30 15:48:33 +02:00
Taniya Das
e94350ea7b FROMLIST v2 clk: qcom: common: ensure runtime PM suspend completes on probe
When the clock controller is probed with 'use_rpm' enabled, the
runtime PM reference is currently released using pm_runtime_put(),
which may return before the runtime suspend has completed. When the
clock controller device is registered through this function, calling
pm_runtime_disable() immediately after pm_runtime_put() prevents
the runtime suspend from completing, leaving the clock controller
active and the HW rails in the ON state.

Use pm_runtime_put_sync() instead to ensure the runtime PM “putV
completes synchronously during probe. This does not have any functional
impact, but it guarantees that the device is fully runtime-suspended
before returning.

Signed-off-by: Taniya Das <taniya.das@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
2026-06-30 15:48:33 +02:00
Taniya Das
d9272ba106 FROMLIST v2 clk: qcom: gxclkctl: Use custom disable callback for gx_gdsc
The GX GDSC represents a special GPU power domain that must not be
disabled during normal runtime PM flows. As per the GMU architecture,
GX GDSC should only be force-disabled during GMU/GPU recovery, where the
OS explicitly resets the GX power domain.

However, when managed by the generic GDSC runtime PM path, GX GDSC may be
disabled during GMU runtime suspend, resulting in warnings such as:

  gx_clkctl_gx_gdsc status stuck at 'on'

and failures in gdsc_toggle_logic() during rpm suspend.

Use the newly added custom disable callback for gx_gdsc to ensure the
GDSC is toggled only in recovery scenarios, while preventing unintended
disable attempts during normal GMU runtime PM operations.

Reported-by: Pengyu Luo <mitltlatltl@gmail.com>
Closes: https://lore.kernel.org/all/CAH2e8h4Vp9fJYAUUbOmoHSKB25wakPBvmpwa62BTRqgRQbMWuw@mail.gmail.com/
Reported-by: Alexander Koskovich <akoskovich@pm.me>
Closes: https://lore.kernel.org/all/gwVAH2mJerU4dBInw8pKmOs5aQK55Q7W6q_UQAlLFCsEgX6eyvSgXAWbNNMqAX4WmPlYCKUSMhfkr5Jry4Ps5EqnxYZqEEDd3Whwv7ZXGlc=@pm.me/
Fixes: 5af11acae6 ("clk: qcom: Add a driver for SM8750 GPU clocks")
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Taniya Das <taniya.das@oss.qualcomm.com>
2026-06-30 15:48:32 +02:00
Jagadeesh Kona
ff597b7ce4 FROMLIST v2 clk: qcom: gdsc: Add custom disable callback for GX GDSC
The GX GDSC is a special power domain that should only be disabled
by OS during GMU recovery. In all other scenarios, the GMU firmware
is responsible for handling its disable sequence, and OS must not
interfere.

During the resume_noirq() phase of system resume, the GenPD framework
enables all power domains and later disables them in the complete()
phase if there are no active votes from OS. This behavior can
incorrectly disable the GX GDSC while the GMU firmware is still using
it.

To prevent this, implement a custom disable callback for GX GDSC that
relies on GenPD’s synced_poweroff flag. The GMU driver sets this flag
only during recovery, allowing OS to explicitly disable GX GDSC in
hardware in that case. In all other situations, the disable callback
will avoid touching GX GDSC hardware.

Signed-off-by: Jagadeesh Kona <jagadeesh.kona@oss.qualcomm.com>
Signed-off-by: Taniya Das <taniya.das@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
2026-06-30 15:48:32 +02:00
Luca Weiss
66386712d7 ------------- 2026-06-30 15:48:32 +02:00
Luca Weiss
070cf521f6 FROMLIST v3 arm64: dts: qcom: milos: Add GX clock controller
Add a node for the GX clock controller, which provides a power domain to
consumers.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Jagadeesh Kona <jagadeesh.kona@oss.qualcomm.com>
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:31 +02:00
Luca Weiss
e346b56bab ------------- 2026-06-30 15:48:31 +02:00
Luca Weiss
028075b690 FROMLIST v2 arm64: dts: qcom: milos: Add display (MDSS)
Add device nodes for display: MDSS, DPU, DSI and DSI PHY.

DisplayPort is not added for now.

Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:31 +02:00
Luca Weiss
ffe79165ed FROMLIST v2 soc: qcom: ubwc: Add config for Milos
Describe the Universal Bandwidth Compression (UBWC) configuration
for the Milos SoC.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:31 +02:00
Luca Weiss
12caa22971 ------------- 2026-06-30 15:48:30 +02:00
Luca Weiss
c2a069addc FROMLIST v2 arm64: dts: qcom: milos-fairphone-fp6: Enable IPA
Configure and enable the node for IPA which enables mobile data on this
device.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:30 +02:00
Luca Weiss
6d94441a93 FROMLIST v2 arm64: dts: qcom: milos: Add IPA node
Add the description of the IPA block in the Milos SoC.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:30 +02:00
Luca Weiss
434c2d0511 ------------- 2026-06-30 15:48:29 +02:00
Luca Weiss
348bad1406 FROMLIST v3 arm64: dts: qcom: milos: Add IMEM node
Add a node for the IMEM found on Milos, which contains pil-reloc-info
and the modem tables for IPA, among others.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
2026-06-30 15:48:29 +02:00
Luca Weiss
faa1559e1d ------------- 2026-06-30 15:48:29 +02:00
Alexander Koskovich
596a440de9 FROMLIST v2 arm64: dts: qcom: milos: Add Iris VPU v2.0
Add devicetree nodes for the Iris codec (VPU 2.0) found on the Milos
platform.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Alexander Koskovich <akoskovich@pm.me>
2026-06-30 15:48:29 +02:00
Alexander Koskovich
bae687b536 FROMLIST v2 media: iris: Add support for Milos (VPU v2.0)
Add support for the Milos Iris codec. This only supports the variant
found on the SM7635-AB that has half of it's pipes disabled via efuse.

Signed-off-by: Alexander Koskovich <akoskovich@pm.me>
2026-06-30 15:48:28 +02:00
Alexander Koskovich
d1fe94b1ee FROMLIST v2 dt-bindings: media: qcom,milos-iris: Add Milos video codec
Add binding for Qualcomm Milos Iris video codec.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Alexander Koskovich <akoskovich@pm.me>
2026-06-30 15:48:28 +02:00