* [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon)
@ 2026-05-11 14:40 Harrison Vanderbyl
2026-05-11 14:40 ` [PATCH v1 1/8] dt-bindings: arm: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl
` (8 more replies)
0 siblings, 9 replies; 33+ messages in thread
From: Harrison Vanderbyl @ 2026-05-11 14:40 UTC (permalink / raw)
To: linux-arm-msm; +Cc: linux-kernel
Add support for the Microsoft Surface Pro 12in 1st Edition (Snapdragon),
based on the Qualcomm X1P42100 SoC.
Currently supported:
- UFS (with inline crypto)
- Touchscreen, pen, cover keyboard and touchpad (via SAM)
- USB 3.2 x2 with DP Alt Mode
- Audio, WiFi, Bluetooth
- CDSP, ADSP, GPU
- Display (BOE NE120DRM-N28 panel)
Not yet supported:
- Accelerometer
- Front, back, and IR cameras
- IRIS video decoder
Note on the compatible string: unlike other Microsoft Surface devices
upstream (denali, arcata, romulus13, blackrock), this device does not
appear to carry an internal codename in firmware. The DSDT, SMBIOS, and
EFI variables only refer to it as "Surface Pro 12in 1st Ed with
Snapdragon" (SKU 2110). I have used `microsoft,surface-pro-12in` as the
compatible. Suggestions welcome.
Although the device is marketed as just a smaller version of the denali,
it has enough differences that it warrented a different compatible and
device tree.
Tested on Surface Pro 12in 1st Ed with Snapdragon (SKU 2110).
Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com>
Harrison Vanderbyl (8):
dt-bindings: arm: qcom: Add Microsoft Surface Pro 12in
dt-bindings: crypto: Add x1e80100 inline crypto
platform/surface: SAM: Add support for Surface Pro 12in
firmware: qcom: scm: Allow QSEECOM on Surface Pro 12in
hid: Pen battery quirk for Surface Pro 12in
drm/panel-edp: Add panel for Surface Pro 12in
arm64: dts: qcom: hamoa: Add inline crypto for UFS
arm64: dts: qcom: Add Microsoft Surface Pro 12in
.../devicetree/bindings/arm/qcom.yaml | 4 +
.../crypto/qcom,inline-crypto-engine.yaml | 1 +
arch/arm64/boot/dts/qcom/Makefile | 2 +
arch/arm64/boot/dts/qcom/hamoa.dtsi | 10 +
.../dts/qcom/x1p42100-microsoft-sp12in.dts | 1160 +++++++++++++++++
drivers/firmware/qcom/qcom_scm.c | 1 +
drivers/gpu/drm/panel/panel-edp.c | 1 +
drivers/hid/hid-ids.h | 1 +
drivers/hid/hid-input.c | 2 +
.../surface/surface_aggregator_registry.c | 15 +
10 files changed, 1197 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts
base-commit: 5d6919055dec134de3c40167a490f33c74c12581
--
2.53.0
^ permalink raw reply [flat|nested] 33+ messages in thread* [PATCH v1 1/8] dt-bindings: arm: qcom: Add Microsoft Surface Pro 12in 2026-05-11 14:40 [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon) Harrison Vanderbyl @ 2026-05-11 14:40 ` Harrison Vanderbyl 2026-05-11 14:40 ` [PATCH v1 2/8] dt-bindings: crypto: Add x1e80100 inline crypto Harrison Vanderbyl ` (7 subsequent siblings) 8 siblings, 0 replies; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-11 14:40 UTC (permalink / raw) To: linux-arm-msm, Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree, linux-kernel Document the compatible string for the Microsoft Surface Pro 12-inch, 1st Edition with Snapdragon, based on the Qualcomm X1P42100 SoC. Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> --- Documentation/devicetree/bindings/arm/qcom.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml index b4943123d2e4..aaa9a129908a 100644 --- a/Documentation/devicetree/bindings/arm/qcom.yaml +++ b/Documentation/devicetree/bindings/arm/qcom.yaml @@ -1168,6 +1168,10 @@ properties: - const: microsoft,denali - const: qcom,x1e80100 + - items: + - const: microsoft,surface-pro-12in + - const: qcom,x1p42100 + - items: - enum: - qcom,purwa-iot-evk -- 2.53.0 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v1 2/8] dt-bindings: crypto: Add x1e80100 inline crypto 2026-05-11 14:40 [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon) Harrison Vanderbyl 2026-05-11 14:40 ` [PATCH v1 1/8] dt-bindings: arm: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl @ 2026-05-11 14:40 ` Harrison Vanderbyl 2026-05-11 14:40 ` [PATCH v1 3/8] platform/surface: SAM: Add support for Surface Pro 12in Harrison Vanderbyl ` (6 subsequent siblings) 8 siblings, 0 replies; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-11 14:40 UTC (permalink / raw) To: linux-arm-msm, Herbert Xu, David S. Miller, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Bjorn Andersson, linux-crypto, devicetree, linux-kernel Add compatibility string for the x1e80100/x1p42100 inline crypto engine. Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> --- .../devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml b/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml index 876bf90ed96e..a338c4a33e98 100644 --- a/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml +++ b/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml @@ -24,6 +24,7 @@ properties: - qcom,sm8550-inline-crypto-engine - qcom,sm8650-inline-crypto-engine - qcom,sm8750-inline-crypto-engine + - qcom,x1e80100-inline-crypto-engine - const: qcom,inline-crypto-engine reg: -- 2.53.0 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v1 3/8] platform/surface: SAM: Add support for Surface Pro 12in 2026-05-11 14:40 [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon) Harrison Vanderbyl 2026-05-11 14:40 ` [PATCH v1 1/8] dt-bindings: arm: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl 2026-05-11 14:40 ` [PATCH v1 2/8] dt-bindings: crypto: Add x1e80100 inline crypto Harrison Vanderbyl @ 2026-05-11 14:40 ` Harrison Vanderbyl 2026-05-11 14:40 ` [PATCH v1 4/8] firmware: qcom: scm: Allow QSEECOM on " Harrison Vanderbyl ` (5 subsequent siblings) 8 siblings, 0 replies; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-11 14:40 UTC (permalink / raw) To: linux-arm-msm, Maximilian Luz, Hans de Goede, Ilpo Järvinen, platform-driver-x86, linux-kernel Add a SAM client device node group and registry entry for the Microsoft Surface Pro, 12-inch with Snapdragon. This set enables the use of the following devices. 1: cover keyboard 2: cover touchpad 3: pen stash events. The battery info and charger info devices have been purposefully omitted as they are also reported by other drivers and cause conflicts. Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> --- .../surface/surface_aggregator_registry.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/platform/surface/surface_aggregator_registry.c b/drivers/platform/surface/surface_aggregator_registry.c index 0599d5adf02e..884049961415 100644 --- a/drivers/platform/surface/surface_aggregator_registry.c +++ b/drivers/platform/surface/surface_aggregator_registry.c @@ -422,6 +422,19 @@ static const struct software_node *ssam_node_group_sp11[] = { NULL, }; +/* Devices for Surface Pro 12" first edition (ARM/QCOM) */ +static const struct software_node *ssam_node_group_sp12in[] = { + &ssam_node_root, + &ssam_node_hub_kip, + &ssam_node_tmp_sensors, + &ssam_node_hid_kip_keyboard, + &ssam_node_hid_sam_penstash, + &ssam_node_hid_kip_touchpad, + &ssam_node_hid_kip_fwupd, + &ssam_node_pos_tablet_switch, + NULL, +}; + /* -- SSAM platform/meta-hub driver. ---------------------------------------- */ static const struct acpi_device_id ssam_platform_hub_acpi_match[] = { @@ -500,6 +513,8 @@ static const struct of_device_id ssam_platform_hub_of_match[] __maybe_unused = { { .compatible = "microsoft,arcata", (void *)ssam_node_group_sp9_5g }, /* Surface Pro 11 (ARM/QCOM) */ { .compatible = "microsoft,denali", (void *)ssam_node_group_sp11 }, + /* Surface Pro 12in First Edition (ARM/QCOM) */ + { .compatible = "microsoft,surface-pro-12in", (void *)ssam_node_group_sp12in }, /* Surface Laptop 7 */ { .compatible = "microsoft,romulus13", (void *)ssam_node_group_sl7 }, { .compatible = "microsoft,romulus15", (void *)ssam_node_group_sl7 }, -- 2.53.0 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v1 4/8] firmware: qcom: scm: Allow QSEECOM on Surface Pro 12in 2026-05-11 14:40 [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon) Harrison Vanderbyl ` (2 preceding siblings ...) 2026-05-11 14:40 ` [PATCH v1 3/8] platform/surface: SAM: Add support for Surface Pro 12in Harrison Vanderbyl @ 2026-05-11 14:40 ` Harrison Vanderbyl 2026-05-12 18:44 ` Dmitry Baryshkov 2026-05-11 14:40 ` [PATCH v1 5/8] hid: Pen battery quirk for " Harrison Vanderbyl ` (4 subsequent siblings) 8 siblings, 1 reply; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-11 14:40 UTC (permalink / raw) To: linux-arm-msm, Bjorn Andersson, Konrad Dybcio, linux-kernel Add the Surface Pro 12in to the QSEECOM allowlist so that the Qualcomm Secure Execution Environment interface is available on this device. Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> --- drivers/firmware/qcom/qcom_scm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c index 9b06a69d3a6d..6b601a4b89db 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -2306,6 +2306,7 @@ static const struct of_device_id qcom_scm_qseecom_allowlist[] __maybe_unused = { { .compatible = "lenovo,yoga-slim7x" }, { .compatible = "medion,sprchrgd14s1" }, { .compatible = "microsoft,arcata", }, + { .compatible = "microsoft,surface-pro-12in", }, { .compatible = "microsoft,blackrock" }, { .compatible = "microsoft,denali", }, { .compatible = "microsoft,romulus13", }, -- 2.53.0 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH v1 4/8] firmware: qcom: scm: Allow QSEECOM on Surface Pro 12in 2026-05-11 14:40 ` [PATCH v1 4/8] firmware: qcom: scm: Allow QSEECOM on " Harrison Vanderbyl @ 2026-05-12 18:44 ` Dmitry Baryshkov 0 siblings, 0 replies; 33+ messages in thread From: Dmitry Baryshkov @ 2026-05-12 18:44 UTC (permalink / raw) To: Harrison Vanderbyl Cc: linux-arm-msm, Bjorn Andersson, Konrad Dybcio, linux-kernel On Tue, May 12, 2026 at 12:40:53AM +1000, Harrison Vanderbyl wrote: > Add the Surface Pro 12in to the QSEECOM allowlist > so that the Qualcomm Secure Execution Environment > interface is available on this device. > > Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> > --- > drivers/firmware/qcom/qcom_scm.c | 1 + > 1 file changed, 1 insertion(+) > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v1 5/8] hid: Pen battery quirk for Surface Pro 12in 2026-05-11 14:40 [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon) Harrison Vanderbyl ` (3 preceding siblings ...) 2026-05-11 14:40 ` [PATCH v1 4/8] firmware: qcom: scm: Allow QSEECOM on " Harrison Vanderbyl @ 2026-05-11 14:40 ` Harrison Vanderbyl 2026-05-12 6:07 ` sashiko-bot 2026-05-12 16:15 ` Jiri Kosina 2026-05-11 14:40 ` [PATCH v1 6/8] drm/panel-edp: Add panel " Harrison Vanderbyl ` (3 subsequent siblings) 8 siblings, 2 replies; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-11 14:40 UTC (permalink / raw) To: linux-arm-msm, Jiri Kosina, Benjamin Tissoires, linux-input, linux-kernel The pen setup for this device uses bluetooth for communicating battery levels and status instead of reporting it over i2c. Without this quirk, the device either reports an extra, broken phantom battery, or hangs. Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> --- drivers/hid/hid-ids.h | 1 + drivers/hid/hid-input.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index 0cf63742315b..d16f55479786 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -459,6 +459,7 @@ #define USB_DEVICE_ID_HP_X2 0x074d #define USB_DEVICE_ID_HP_X2_10_COVER 0x0755 #define I2C_DEVICE_ID_CHROMEBOOK_TROGDOR_POMPOM 0x2F81 +#define I2C_DEVICE_ID_SURFACE_PRO_12IN 0x4376 #define USB_VENDOR_ID_ELECOM 0x056e #define USB_DEVICE_ID_ELECOM_BM084 0x0061 diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index d73cfa2e73d3..61ecd840d0bd 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -395,6 +395,8 @@ static const struct hid_device_id hid_battery_quirks[] = { HID_BATTERY_QUIRK_AVOID_QUERY }, { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_CHROMEBOOK_TROGDOR_POMPOM), HID_BATTERY_QUIRK_AVOID_QUERY }, + { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_SURFACE_PRO_12IN), + HID_BATTERY_QUIRK_IGNORE }, /* * Elan HID touchscreens seem to all report a non present battery, * set HID_BATTERY_QUIRK_IGNORE for all Elan I2C and USB HID devices. -- 2.53.0 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH v1 5/8] hid: Pen battery quirk for Surface Pro 12in 2026-05-11 14:40 ` [PATCH v1 5/8] hid: Pen battery quirk for " Harrison Vanderbyl @ 2026-05-12 6:07 ` sashiko-bot 2026-05-12 16:15 ` Jiri Kosina 1 sibling, 0 replies; 33+ messages in thread From: sashiko-bot @ 2026-05-12 6:07 UTC (permalink / raw) To: Harrison Vanderbyl; +Cc: dmitry.torokhov, linux-input Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] Macro value alignment uses spaces instead of a tab. -- commit c48c3082a15452ea3cc6ed81c88834aa52ab9d60 Author: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> hid: Pen battery quirk for Surface Pro 12in This commit adds a quirk to ignore the battery on the Surface Pro 12in pen, which uses Bluetooth for battery reporting instead of I2C. This prevents a phantom battery or device hang. > diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h > --- a/drivers/hid/hid-ids.h > +++ b/drivers/hid/hid-ids.h > @@ -459,6 +459,7 @@ > #define USB_DEVICE_ID_HP_X2 0x074d > #define USB_DEVICE_ID_HP_X2_10_COVER 0x0755 > #define I2C_DEVICE_ID_CHROMEBOOK_TROGDOR_POMPOM 0x2F81 > +#define I2C_DEVICE_ID_SURFACE_PRO_12IN 0x4376 This isn't a bug, but it looks like spaces were used here instead of a tab to align the macro value. -- Sashiko AI review · https://sashiko.dev/#/patchset/cover.1778498477.git.harrison.vanderbyl@gmail.com?part=5 ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v1 5/8] hid: Pen battery quirk for Surface Pro 12in 2026-05-11 14:40 ` [PATCH v1 5/8] hid: Pen battery quirk for " Harrison Vanderbyl 2026-05-12 6:07 ` sashiko-bot @ 2026-05-12 16:15 ` Jiri Kosina 1 sibling, 0 replies; 33+ messages in thread From: Jiri Kosina @ 2026-05-12 16:15 UTC (permalink / raw) To: Harrison Vanderbyl Cc: linux-arm-msm, Benjamin Tissoires, linux-input, linux-kernel On Tue, 12 May 2026, Harrison Vanderbyl wrote: > The pen setup for this device uses bluetooth for > communicating battery levels and status instead of > reporting it over i2c. > > Without this quirk, the device either reports an > extra, broken phantom battery, or hangs. > > Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> As this is apparently part of some bigger series, I am not sure who is expected to merge this. FWIW Acked-by: Jiri Kosina <jkosina@suse.com> -- Jiri Kosina SUSE Labs ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v1 6/8] drm/panel-edp: Add panel for Surface Pro 12in 2026-05-11 14:40 [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon) Harrison Vanderbyl ` (4 preceding siblings ...) 2026-05-11 14:40 ` [PATCH v1 5/8] hid: Pen battery quirk for " Harrison Vanderbyl @ 2026-05-11 14:40 ` Harrison Vanderbyl 2026-05-11 15:13 ` Doug Anderson 2026-05-11 19:38 ` Dmitry Baryshkov 2026-05-11 14:40 ` [PATCH v1 7/8] arm64: dts: qcom: hamoa: Add inline crypto for UFS Harrison Vanderbyl ` (2 subsequent siblings) 8 siblings, 2 replies; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-11 14:40 UTC (permalink / raw) To: linux-arm-msm, Douglas Anderson, Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, dri-devel, linux-kernel Add an entry for the BOE NE120DRM-N28 panel, used in the Microsoft Surface Pro 12-inch. The values chosen were tested to be working fine for wake from sleep and hibernation. Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> --- drivers/gpu/drm/panel/panel-edp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c index 497dcd48f57b..2cf52f03c217 100644 --- a/drivers/gpu/drm/panel/panel-edp.c +++ b/drivers/gpu/drm/panel/panel-edp.c @@ -2020,6 +2020,7 @@ static const struct edp_panel_entry edp_panels[] = { EDP_PANEL_ENTRY('B', 'O', 'E', 0x0c26, &delay_200_500_p2e200, "NV140WUM-T08"), EDP_PANEL_ENTRY('B', 'O', 'E', 0x0c93, &delay_200_500_e200, "Unknown"), EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cb6, &delay_200_500_e200, "NT116WHM-N44"), + EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cc9, &delay_200_500_e50, "NE120DRM-N28"), EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cf2, &delay_200_500_e200, "NV156FHM-N4S"), EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cf6, &delay_200_500_e200_d100, "NV140WUM-N64"), EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cfa, &delay_200_500_e50, "NV116WHM-A4D"), -- 2.53.0 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH v1 6/8] drm/panel-edp: Add panel for Surface Pro 12in 2026-05-11 14:40 ` [PATCH v1 6/8] drm/panel-edp: Add panel " Harrison Vanderbyl @ 2026-05-11 15:13 ` Doug Anderson 2026-05-11 19:38 ` Dmitry Baryshkov 1 sibling, 0 replies; 33+ messages in thread From: Doug Anderson @ 2026-05-11 15:13 UTC (permalink / raw) To: Harrison Vanderbyl Cc: linux-arm-msm, Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, dri-devel, linux-kernel Hi, On Mon, May 11, 2026 at 7:42 AM Harrison Vanderbyl <harrison.vanderbyl@gmail.com> wrote: > > Add an entry for the BOE NE120DRM-N28 panel, > used in the Microsoft Surface Pro 12-inch. > > The values chosen were tested to be working fine > for wake from sleep and hibernation. > > Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> > --- > drivers/gpu/drm/panel/panel-edp.c | 1 + > 1 file changed, 1 insertion(+) Please follow the convention for recent similar patches and include the EDID in the commit message. -Doug ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v1 6/8] drm/panel-edp: Add panel for Surface Pro 12in 2026-05-11 14:40 ` [PATCH v1 6/8] drm/panel-edp: Add panel " Harrison Vanderbyl 2026-05-11 15:13 ` Doug Anderson @ 2026-05-11 19:38 ` Dmitry Baryshkov 1 sibling, 0 replies; 33+ messages in thread From: Dmitry Baryshkov @ 2026-05-11 19:38 UTC (permalink / raw) To: Harrison Vanderbyl Cc: linux-arm-msm, Douglas Anderson, Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, dri-devel, linux-kernel On Tue, May 12, 2026 at 12:40:55AM +1000, Harrison Vanderbyl wrote: > Add an entry for the BOE NE120DRM-N28 panel, > used in the Microsoft Surface Pro 12-inch. > > The values chosen were tested to be working fine > for wake from sleep and hibernation. Could you please include panel's EDID in the commit message (see how other panels are added to panel-edp.c) > > Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> > --- > drivers/gpu/drm/panel/panel-edp.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c > index 497dcd48f57b..2cf52f03c217 100644 > --- a/drivers/gpu/drm/panel/panel-edp.c > +++ b/drivers/gpu/drm/panel/panel-edp.c > @@ -2020,6 +2020,7 @@ static const struct edp_panel_entry edp_panels[] = { > EDP_PANEL_ENTRY('B', 'O', 'E', 0x0c26, &delay_200_500_p2e200, "NV140WUM-T08"), > EDP_PANEL_ENTRY('B', 'O', 'E', 0x0c93, &delay_200_500_e200, "Unknown"), > EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cb6, &delay_200_500_e200, "NT116WHM-N44"), > + EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cc9, &delay_200_500_e50, "NE120DRM-N28"), > EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cf2, &delay_200_500_e200, "NV156FHM-N4S"), > EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cf6, &delay_200_500_e200_d100, "NV140WUM-N64"), > EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cfa, &delay_200_500_e50, "NV116WHM-A4D"), > -- > 2.53.0 > -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v1 7/8] arm64: dts: qcom: hamoa: Add inline crypto for UFS 2026-05-11 14:40 [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon) Harrison Vanderbyl ` (5 preceding siblings ...) 2026-05-11 14:40 ` [PATCH v1 6/8] drm/panel-edp: Add panel " Harrison Vanderbyl @ 2026-05-11 14:40 ` Harrison Vanderbyl 2026-05-12 17:54 ` Dmitry Baryshkov 2026-05-11 14:40 ` [PATCH v1 8/8] arm64: dts: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl 2026-05-13 19:08 ` (subset) [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon) Bjorn Andersson 8 siblings, 1 reply; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-11 14:40 UTC (permalink / raw) To: linux-arm-msm, Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree, linux-kernel Add the Inline Crypto node and wire it to ufs_mem, enabling UFS storage encryption on x1e80100 and derivative SOCs. This is needed to support encrypted storage on the Microsoft Surface Pro 12-inch. Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> --- arch/arm64/boot/dts/qcom/hamoa.dtsi | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/hamoa.dtsi b/arch/arm64/boot/dts/qcom/hamoa.dtsi index 051dee076416..35755eabe549 100644 --- a/arch/arm64/boot/dts/qcom/hamoa.dtsi +++ b/arch/arm64/boot/dts/qcom/hamoa.dtsi @@ -3952,6 +3952,8 @@ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, phys = <&ufs_mem_phy>; phy-names = "ufsphy"; + qcom,ice = <&ice>; + #reset-cells = <1>; status = "disabled"; @@ -3997,6 +3999,14 @@ opp-300000000 { }; }; + ice: crypto@1d88000 { + compatible = "qcom,x1e80100-inline-crypto-engine", + "qcom,inline-crypto-engine"; + reg = <0 0x01d88000 0 0x8000>; + + clocks = <&gcc GCC_UFS_PHY_ICE_CORE_CLK>; + }; + cryptobam: dma-controller@1dc4000 { compatible = "qcom,bam-v1.7.4", "qcom,bam-v1.7.0"; reg = <0x0 0x01dc4000 0x0 0x28000>; -- 2.53.0 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH v1 7/8] arm64: dts: qcom: hamoa: Add inline crypto for UFS 2026-05-11 14:40 ` [PATCH v1 7/8] arm64: dts: qcom: hamoa: Add inline crypto for UFS Harrison Vanderbyl @ 2026-05-12 17:54 ` Dmitry Baryshkov 0 siblings, 0 replies; 33+ messages in thread From: Dmitry Baryshkov @ 2026-05-12 17:54 UTC (permalink / raw) To: Harrison Vanderbyl Cc: linux-arm-msm, Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree, linux-kernel On Tue, May 12, 2026 at 12:40:56AM +1000, Harrison Vanderbyl wrote: > Add the Inline Crypto node and wire it to ufs_mem, > enabling UFS storage encryption on x1e80100 and > derivative SOCs. > > This is needed to support encrypted storage on > the Microsoft Surface Pro 12-inch. > > Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> > --- > arch/arm64/boot/dts/qcom/hamoa.dtsi | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/hamoa.dtsi b/arch/arm64/boot/dts/qcom/hamoa.dtsi > index 051dee076416..35755eabe549 100644 > --- a/arch/arm64/boot/dts/qcom/hamoa.dtsi > +++ b/arch/arm64/boot/dts/qcom/hamoa.dtsi > @@ -3952,6 +3952,8 @@ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, > phys = <&ufs_mem_phy>; > phy-names = "ufsphy"; > > + qcom,ice = <&ice>; > + > #reset-cells = <1>; > > status = "disabled"; > @@ -3997,6 +3999,14 @@ opp-300000000 { > }; > }; > > + ice: crypto@1d88000 { > + compatible = "qcom,x1e80100-inline-crypto-engine", > + "qcom,inline-crypto-engine"; > + reg = <0 0x01d88000 0 0x8000>; 0x0 instead of just 0x, please. > + > + clocks = <&gcc GCC_UFS_PHY_ICE_CORE_CLK>; > + }; > + > cryptobam: dma-controller@1dc4000 { > compatible = "qcom,bam-v1.7.4", "qcom,bam-v1.7.0"; > reg = <0x0 0x01dc4000 0x0 0x28000>; > -- > 2.53.0 > -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v1 8/8] arm64: dts: qcom: Add Microsoft Surface Pro 12in 2026-05-11 14:40 [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon) Harrison Vanderbyl ` (6 preceding siblings ...) 2026-05-11 14:40 ` [PATCH v1 7/8] arm64: dts: qcom: hamoa: Add inline crypto for UFS Harrison Vanderbyl @ 2026-05-11 14:40 ` Harrison Vanderbyl 2026-05-12 18:44 ` Dmitry Baryshkov ` (2 more replies) 2026-05-13 19:08 ` (subset) [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon) Bjorn Andersson 8 siblings, 3 replies; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-11 14:40 UTC (permalink / raw) To: linux-arm-msm, Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree, linux-kernel Initial device tree for Microsoft Surface Pro 12in Currently supported: - UFS - Touchscreen - Pen - USB 3.2 x2 (DP Alt Mode) - Audio - Wifi - Bluetooth - CDSP - ADSP - GPU Not currently supported: - Accelerometer - Front, Back and IR cameras - IRIS video decoder Tested on Surface_Pro_12in_1st_Ed_with_Snapdragon_2110 Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> --- arch/arm64/boot/dts/qcom/Makefile | 2 + .../dts/qcom/x1p42100-microsoft-sp12in.dts | 1160 +++++++++++++++++ 2 files changed, 1162 insertions(+) create mode 100644 arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index 4ba8e7306419..8b6d3e4b479c 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -449,3 +449,5 @@ x1p42100-lenovo-thinkbook-16-el2-dtbs := x1p42100-lenovo-thinkbook-16.dtb x1-el2 dtb-$(CONFIG_ARCH_QCOM) += x1p42100-lenovo-thinkbook-16.dtb x1p42100-lenovo-thinkbook-16-el2.dtb x1p64100-microsoft-denali-el2-dtbs := x1p64100-microsoft-denali.dtb x1-el2.dtbo dtb-$(CONFIG_ARCH_QCOM) += x1p64100-microsoft-denali.dtb x1p64100-microsoft-denali-el2.dtb +x1p42100-microsoft-sp12in-el2-dtbs := x1p42100-microsoft-sp12in.dtb x1-el2.dtbo +dtb-$(CONFIG_ARCH_QCOM) += x1p42100-microsoft-sp12in.dtb x1p42100-microsoft-sp12in-el2.dtb diff --git a/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts b/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts new file mode 100644 index 000000000000..3a754179a848 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts @@ -0,0 +1,1160 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2024, Linaro Limited + * Copyright (c) 2025, Jens Glathe + * Copyright (c) 2025, Harrison Vanderbyl + */ + +/dts-v1/; + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/gpio-keys.h> +#include <dt-bindings/input/input.h> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h> +#include <dt-bindings/clock/qcom,x1e80100-tcsr.h> + +#include "purwa.dtsi" +#include "hamoa-pmics.dtsi" + +/delete-node/ &pmc8380_6; +/delete-node/ &pmc8380_6_thermal; + +/ { + model = "Surface Pro 12in 1st Edition"; + compatible = "microsoft,surface-pro-12in", "qcom,x1p42100"; + chassis-type = "tablet"; + + aliases { + serial0 = &uart2; + serial1 = &uart14; + }; + + backlight: backlight { + compatible = "pwm-backlight"; + pwms = <&pmk8550_pwm 0 5000000>; + + power-supply = <&vreg_edp_3p3>; + }; + + gpio-keys { + compatible = "gpio-keys"; + + pinctrl-0 = <&hall_int_n_default>; + pinctrl-names = "default"; + + switch-lid { + gpios = <&tlmm 2 GPIO_ACTIVE_LOW>; + linux,input-type = <EV_SW>; + linux,code = <SW_LID>; + wakeup-source; + wakeup-event-action = <EV_ACT_DEASSERTED>; + }; + + key-vol-up { + gpios = <&pm8550_gpios 8 GPIO_ACTIVE_LOW>; + linux,code = <KEY_VOLUMEUP>; + debounce-interval = <15>; + linux,can-disable; + wakeup-source; + }; + + key-vol-down { + gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>; + linux,code = <KEY_VOLUMEDOWN>; + debounce-interval = <15>; + linux,can-disable; + wakeup-source; + }; + }; + + pmic-glink { + compatible = "qcom,x1e80100-pmic-glink", + "qcom,sm8550-pmic-glink", + "qcom,pmic-glink"; + #address-cells = <1>; + #size-cells = <0>; + orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>, + <&tlmm 123 GPIO_ACTIVE_HIGH>; + + /* Right-side upper port */ + connector@0 { + compatible = "usb-c-connector"; + reg = <0>; + power-role = "dual"; + data-role = "dual"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + pmic_glink_ss0_hs_in: endpoint { + remote-endpoint = <&usb_1_ss0_dwc3_hs>; + }; + }; + + port@1 { + reg = <1>; + + pmic_glink_ss0_ss_in: endpoint { + remote-endpoint = <&usb_1_ss0_qmpphy_out>; + }; + }; + + port@2 { + reg = <2>; + + pmic_glink_ss0_sbu: endpoint { + remote-endpoint = <&usb_1_ss0_sbu_mux>; + }; + }; + }; + }; + + /* Right-side lower port */ + connector@1 { + compatible = "usb-c-connector"; + reg = <1>; + power-role = "dual"; + data-role = "dual"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + pmic_glink_ss1_hs_in: endpoint { + remote-endpoint = <&usb_1_ss1_dwc3_hs>; + }; + }; + + port@1 { + reg = <1>; + + pmic_glink_ss1_ss_in: endpoint { + remote-endpoint = <&usb_1_ss1_qmpphy_out>; + }; + }; + + port@2 { + reg = <2>; + + pmic_glink_ss1_sbu: endpoint { + remote-endpoint = <&usb_1_ss1_sbu_mux>; + }; + }; + }; + }; + }; + + reserved-memory { + linux,cma { + compatible = "shared-dma-pool"; + size = <0x0 0x20000000>; + reusable; + linux,cma-default; + }; + }; + + vreg_edp_3p3: regulator-edp-3p3 { + compatible = "regulator-fixed"; + + regulator-name = "VREG_EDP_3P3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + gpio = <&tlmm 70 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&edp_reg_en>; + pinctrl-names = "default"; + + regulator-boot-on; + }; + + vph_pwr: regulator-vph-pwr { + compatible = "regulator-fixed"; + + regulator-name = "vph_pwr"; + regulator-min-microvolt = <3700000>; + regulator-max-microvolt = <3700000>; + }; + + vreg_wcn_0p95: regulator-wcn-0p95 { + compatible = "regulator-fixed"; + + regulator-name = "VREG_WCN_0P95"; + regulator-min-microvolt = <950000>; + regulator-max-microvolt = <950000>; + + vin-supply = <&vreg_wcn_3p3>; + }; + + vreg_wcn_1p9: regulator-wcn-1p9 { + compatible = "regulator-fixed"; + + regulator-name = "VREG_WCN_1P9"; + regulator-min-microvolt = <1900000>; + regulator-max-microvolt = <1900000>; + + vin-supply = <&vreg_wcn_3p3>; + }; + + vreg_wcn_3p3: regulator-wcn-3p3 { + compatible = "regulator-fixed"; + + regulator-name = "VREG_WCN_3P3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + gpio = <&tlmm 214 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&wcn_sw_en>; + pinctrl-names = "default"; + }; + + sound { + compatible = "qcom,x1e80100-sndcard"; + model = "X1P42100-Microsoft-Surface-Pro-12in"; + audio-routing = "SpkrLeft IN", "WSA WSA_SPK1 OUT", + "SpkrRight IN", "WSA WSA_SPK2 OUT", + "VA DMIC0", "vdd-micb", + "VA DMIC1", "vdd-micb", + "VA DMIC2", "vdd-micb", + "VA DMIC3", "vdd-micb"; + + va-dai-link { + link-name = "VA Capture"; + + cpu { + sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>; + }; + + codec { + sound-dai = <&lpass_vamacro 0>; + }; + + platform { + sound-dai = <&q6apm>; + }; + }; + + wsa-dai-link { + link-name = "WSA Playback"; + + cpu { + sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>; + }; + + codec { + sound-dai = <&left_spkr>, <&right_spkr>, + <&swr0 0>, <&lpass_wsamacro 0>; + }; + + platform { + sound-dai = <&q6apm>; + }; + }; + }; + + wcn7850-pmu { + compatible = "qcom,wcn7850-pmu"; + + vdd-supply = <&vreg_wcn_0p95>; + vddio-supply = <&vreg_l15b_1p8>; + vddaon-supply = <&vreg_wcn_0p95>; + vdddig-supply = <&vreg_wcn_0p95>; + vddrfa1p2-supply = <&vreg_wcn_1p9>; + vddrfa1p8-supply = <&vreg_wcn_1p9>; + + wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>; + bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>; + + pinctrl-0 = <&wcn_wlan_bt_en>; + pinctrl-names = "default"; + + regulators { + vreg_pmu_rfa_cmn: ldo0 { + regulator-name = "vreg_pmu_rfa_cmn"; + }; + + vreg_pmu_aon_0p59: ldo1 { + regulator-name = "vreg_pmu_aon_0p59"; + }; + + vreg_pmu_wlcx_0p8: ldo2 { + regulator-name = "vreg_pmu_wlcx_0p8"; + }; + + vreg_pmu_wlmx_0p85: ldo3 { + regulator-name = "vreg_pmu_wlmx_0p85"; + }; + + vreg_pmu_btcmx_0p85: ldo4 { + regulator-name = "vreg_pmu_btcmx_0p85"; + }; + + vreg_pmu_rfa_0p8: ldo5 { + regulator-name = "vreg_pmu_rfa_0p8"; + }; + + vreg_pmu_rfa_1p2: ldo6 { + regulator-name = "vreg_pmu_rfa_1p2"; + }; + + vreg_pmu_rfa_1p8: ldo7 { + regulator-name = "vreg_pmu_rfa_1p8"; + }; + + vreg_pmu_pcie_0p9: ldo8 { + regulator-name = "vreg_pmu_pcie_0p9"; + }; + + vreg_pmu_pcie_1p8: ldo9 { + regulator-name = "vreg_pmu_pcie_1p8"; + }; + }; + }; + + usb-1-ss0-sbu-mux { + compatible = "onnn,fsusb42", "gpio-sbu-mux"; + + enable-gpios = <&tlmm 168 GPIO_ACTIVE_LOW>; + select-gpios = <&tlmm 167 GPIO_ACTIVE_HIGH>; + + pinctrl-0 = <&usb_1_ss0_sbu_default>; + pinctrl-names = "default"; + + mode-switch; + orientation-switch; + + port { + usb_1_ss0_sbu_mux: endpoint { + remote-endpoint = <&pmic_glink_ss0_sbu>; + }; + }; + }; + + usb-1-ss1-sbu-mux { + compatible = "onnn,fsusb42", "gpio-sbu-mux"; + + enable-gpios = <&tlmm 179 GPIO_ACTIVE_LOW>; + select-gpios = <&tlmm 178 GPIO_ACTIVE_HIGH>; + + pinctrl-0 = <&usb_1_ss1_sbu_default>; + pinctrl-names = "default"; + + mode-switch; + orientation-switch; + + port { + usb_1_ss1_sbu_mux: endpoint { + remote-endpoint = <&pmic_glink_ss1_sbu>; + }; + }; + }; + +}; + +&apps_rsc { + regulators-0 { + compatible = "qcom,pm8550-rpmh-regulators"; + qcom,pmic-id = "b"; + + vdd-bob1-supply = <&vph_pwr>; + vdd-bob2-supply = <&vph_pwr>; + vdd-l1-l4-l10-supply = <&vreg_s4c_1p8>; + vdd-l2-l13-l14-supply = <&vreg_bob1>; + vdd-l5-l16-supply = <&vreg_bob1>; + vdd-l6-l7-supply = <&vreg_bob2>; + vdd-l8-l9-supply = <&vreg_bob1>; + vdd-l12-supply = <&vreg_s5j_1p2>; + vdd-l15-supply = <&vreg_s4c_1p8>; + vdd-l17-supply = <&vreg_bob2>; + + vreg_bob1: bob1 { + regulator-name = "vreg_bob1"; + regulator-min-microvolt = <3008000>; + regulator-max-microvolt = <3960000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_bob2: bob2 { + regulator-name = "vreg_bob2"; + regulator-min-microvolt = <2504000>; + regulator-max-microvolt = <3008000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l1b_1p8: ldo1 { + regulator-name = "vreg_l1b_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2b_3p0: ldo2 { + regulator-name = "vreg_l2b_3p0"; + regulator-min-microvolt = <3072000>; + regulator-max-microvolt = <3100000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l4b_1p8: ldo4 { + regulator-name = "vreg_l4b_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l5b_3p0: ldo5 { + regulator-name = "vreg_l5b_3p0"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l6b_1p8: ldo6 { + regulator-name = "vreg_l6b_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2960000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l7b_2p8: ldo7 { + regulator-name = "vreg_l7b_2p8"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-always-on; + }; + + vreg_l8b_3p0: ldo8 { + regulator-name = "vreg_l8b_3p0"; + regulator-min-microvolt = <3072000>; + regulator-max-microvolt = <3072000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l9b_2p9: ldo9 { + regulator-name = "vreg_l9b_2p9"; + regulator-min-microvolt = <2960000>; + regulator-max-microvolt = <2960000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l10b_1p8: ldo10 { + regulator-name = "vreg_l10b_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l12b_1p2: ldo12 { + regulator-name = "vreg_l12b_1p2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l13b_3p0: ldo13 { + regulator-name = "vreg_l13b_3p0"; + regulator-min-microvolt = <3072000>; + regulator-max-microvolt = <3100000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l14b_3p0: ldo14 { + regulator-name = "vreg_l14b_3p0"; + regulator-min-microvolt = <3072000>; + regulator-max-microvolt = <3072000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l15b_1p8: ldo15 { + regulator-name = "vreg_l15b_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l16b_2p9: ldo16 { + regulator-name = "vreg_l16b_2p9"; + regulator-min-microvolt = <2900000>; + regulator-max-microvolt = <2912000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l17b_2p5: ldo17 { + regulator-name = "vreg_l17b_2p5"; + regulator-min-microvolt = <2504000>; + regulator-max-microvolt = <2504000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-1 { + compatible = "qcom,pm8550ve-rpmh-regulators"; + qcom,pmic-id = "c"; + + vdd-l1-supply = <&vreg_s5j_1p2>; + vdd-s4-supply = <&vph_pwr>; + + vreg_s4c_1p8: smps4 { + regulator-name = "vreg_s4c_1p8"; + regulator-min-microvolt = <1856000>; + regulator-max-microvolt = <2000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l1c_1p2: ldo1 { + regulator-name = "vreg_l1c_1p2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2c_0p8: ldo2 { + regulator-name = "vreg_l2c_0p8"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <920000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3c_0p8: ldo3 { + regulator-name = "vreg_l3c_0p8"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <920000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-2 { + compatible = "qcom,pmc8380-rpmh-regulators"; + qcom,pmic-id = "d"; + + vdd-l3-supply = <&vreg_s4c_1p8>; + vdd-s1-supply = <&vph_pwr>; + + vreg_l1d_0p8: ldo1 { + regulator-name = "vreg_l1d_0p8"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <920000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2d_0p9: ldo2 { + regulator-name = "vreg_l2d_0p9"; + regulator-min-microvolt = <912000>; + regulator-max-microvolt = <920000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3d_1p8: ldo3 { + regulator-name = "vreg_l3d_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-3 { + compatible = "qcom,pmc8380-rpmh-regulators"; + qcom,pmic-id = "e"; + + vdd-l3-supply = <&vreg_s5j_1p2>; + + vreg_l2e_0p8: ldo2 { + regulator-name = "vreg_l2e_0p8"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <880000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3e_1p2: ldo3 { + regulator-name = "vreg_l3e_1p2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-6 { + compatible = "qcom,pm8550ve-rpmh-regulators"; + qcom,pmic-id = "i"; + + vdd-l1-supply = <&vreg_s4c_1p8>; + vdd-l2-supply = <&vreg_s5j_1p2>; + vdd-s1-supply = <&vph_pwr>; + vdd-s2-supply = <&vph_pwr>; + + vreg_s1i_0p9: smps1 { + regulator-name = "vreg_s1i_0p9"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <920000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_s2i_1p0: smps2 { + regulator-name = "vreg_s2i_1p0"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1100000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l1i_1p8: ldo1 { + regulator-name = "vreg_l1i_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2i_1p2: ldo2 { + regulator-name = "vreg_l2i_1p2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3i_0p8: ldo3 { + regulator-name = "vreg_l3i_0p8"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <880000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-7 { + compatible = "qcom,pm8550ve-rpmh-regulators"; + qcom,pmic-id = "j"; + + vdd-l2-supply = <&vreg_s5j_1p2>; + vdd-s5-supply = <&vph_pwr>; + + vreg_s5j_1p2: smps5 { + regulator-name = "vreg_s5j_1p2"; + regulator-min-microvolt = <1256000>; + regulator-max-microvolt = <1304000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l1j_0p8: ldo1 { + regulator-name = "vreg_l1j_0p8"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <920000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2j_1p2: ldo2 { + regulator-name = "vreg_l2j_1p2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1256000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3j_0p8: ldo3 { + regulator-name = "vreg_l3j_0p8"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <880000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + }; +}; + +&gpu { + status = "okay"; +}; + +&gpu_zap_shader { + firmware-name = "qcom/x1p42100/Microsoft/Surface12/qcdxkmsucpurwa.mbn"; +}; + +&i2c8 { + clock-frequency = <1000000>; + + status = "okay"; + + touchscreen@16 { + compatible = "hid-over-i2c"; + reg = <0x16>; + + hid-descr-addr = <0x1>; + interrupts-extended = <&tlmm 38 IRQ_TYPE_LEVEL_LOW>; + wakeup-source; + + vddl-supply = <&vreg_l15b_1p8>; + + pinctrl-0 = <&ts0_default>; + pinctrl-names = "default"; + }; +}; + +&i2c0 { + clock-frequency = <400000>; + + status = "okay"; +}; + +&i2c4 { + clock-frequency = <400000>; + + status = "okay"; +}; + +&i2c9 { + clock-frequency = <400000>; + + status = "okay"; +}; + +&lpass_tlmm { + spkr_01_sd_n_active: spkr-01-sd-n-active-state { + pins = "gpio12"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + output-low; + }; +}; + +&lpass_vamacro { + qcom,dmic-sample-rate = <4800000>; + + vdd-micb-supply = <&vreg_l1b_1p8>; + + pinctrl-0 = <&dmic01_default>; + pinctrl-names = "default"; +}; + +&mdss { + status = "okay"; +}; + +&mdss_dp0 { + status = "okay"; +}; + +&mdss_dp0_out { + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; +}; + +&mdss_dp1 { + status = "okay"; +}; + +&mdss_dp1_out { + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; +}; + +&mdss_dp3 { + /delete-property/ #sound-dai-cells; + + pinctrl-names = "default"; + pinctrl-0 = <&edp0_hpd_default>; + + status = "okay"; + + aux-bus { + panel: panel { + compatible = "edp-panel"; + + backlight = <&backlight>; + + power-supply = <&vreg_edp_3p3>; + + port { + edp_panel_in: endpoint { + remote-endpoint = <&mdss_dp3_out>; + }; + }; + }; + }; + + ports { + port@1 { + reg = <1>; + + mdss_dp3_out: endpoint { + data-lanes = <0 1 2 3>; + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; + + remote-endpoint = <&edp_panel_in>; + }; + }; + }; +}; + +&mdss_dp3_phy { + vdda-phy-supply = <&vreg_l3j_0p8>; + vdda-pll-supply = <&vreg_l2j_1p2>; + + status = "okay"; +}; + +&pcie4 { + pinctrl-0 = <&pcie4_default>; + pinctrl-names = "default"; + + status = "okay"; +}; + +&pcie4_phy { + vdda-phy-supply = <&vreg_l3i_0p8>; + vdda-pll-supply = <&vreg_l3e_1p2>; + + status = "okay"; +}; + +&pcie4_port0 { + + reset-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>; + wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>; + + wifi@0 { + compatible = "pci17cb,1107"; + reg = <0x10000 0x0 0x0 0x0 0x0>; + + vddaon-supply = <&vreg_pmu_aon_0p59>; + vddwlcx-supply = <&vreg_pmu_wlcx_0p8>; + vddwlmx-supply = <&vreg_pmu_wlmx_0p85>; + vddrfacmn-supply = <&vreg_pmu_rfa_cmn>; + vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>; + vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>; + vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>; + vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>; + vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>; + }; +}; + +&pmk8550_pwm { + status = "okay"; +}; + +&qupv3_0 { + status = "okay"; +}; + +&qupv3_1 { + status = "okay"; +}; + +&qupv3_2 { + status = "okay"; +}; + +&remoteproc_adsp { + firmware-name = "qcom/x1p42100/Microsoft/Surface12/qcadsp8380.mbn", + "qcom/x1p42100/Microsoft/Surface12/adsp_dtbs.elf"; + + status = "okay"; +}; + +&remoteproc_cdsp { + firmware-name = "qcom/x1p42100/Microsoft/Surface12/qccdsp8380.mbn", + "qcom/x1p42100/Microsoft/Surface12/cdsp_dtbs.elf"; + + status = "okay"; +}; + +&smb2360_0 { + status = "okay"; +}; + +&smb2360_0_eusb2_repeater { + vdd18-supply = <&vreg_l3d_1p8>; + vdd3-supply = <&vreg_l2b_3p0>; +}; + +&smb2360_1 { + status = "okay"; +}; + +&smb2360_1_eusb2_repeater { + vdd18-supply = <&vreg_l3d_1p8>; + vdd3-supply = <&vreg_l14b_3p0>; +}; + +&swr0 { + pinctrl-0 = <&wsa_swr_active>, <&spkr_01_sd_n_active>; + pinctrl-names = "default"; + + status = "okay"; + + /* WSA8845, Left speaker */ + left_spkr: speaker@0,0 { + compatible = "sdw20217020400"; + reg = <0 0>; + reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>; + #sound-dai-cells = <0>; + sound-name-prefix = "SpkrLeft"; + vdd-1p8-supply = <&vreg_l15b_1p8>; + vdd-io-supply = <&vreg_l12b_1p2>; + qcom,port-mapping = <1 2 3 7 10 13>; + }; + + /* WSA8845, Right speaker */ + right_spkr: speaker@0,1 { + compatible = "sdw20217020400"; + reg = <0 1>; + reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>; + #sound-dai-cells = <0>; + sound-name-prefix = "SpkrRight"; + vdd-1p8-supply = <&vreg_l15b_1p8>; + vdd-io-supply = <&vreg_l12b_1p2>; + qcom,port-mapping = <4 5 6 7 11 13>; + }; +}; + +&tlmm { + gpio-reserved-ranges = <34 2>, /* Unused */ + <44 4>; /* SPI (TPM) */ + + edp_reg_en: edp-reg-en-state { + pins = "gpio70"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + output-high; + }; + + hall_int_n_default: hall-int-n-state { + pins = "gpio2"; + function = "gpio"; + bias-disable; + }; + + panel_pins: panel-pins-state { + pins = "gpio29"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + output-low; + }; + + pcie4_default: pcie4-default-state { + clkreq-n-pins { + pins = "gpio147"; + function = "pcie4_clk"; + drive-strength = <2>; + bias-pull-up; + }; + + perst-n-pins { + pins = "gpio146"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + wake-n-pins { + pins = "gpio148"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + }; + + ssam_state: ssam-state-state { + pins = "gpio91"; + function = "gpio"; + bias-disable; + }; + + ts0_default: ts0-default-state { + int-n-pins { + pins = "gpio38"; + function = "gpio"; + bias-disable; + }; + + reset-n-pins { + pins = "gpio48"; + function = "gpio"; + output-high; + drive-strength = <16>; + }; + }; + + wcn_sw_en: wcn-sw-en-state { + pins = "gpio214"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + wcn_wlan_bt_en: wcn-wlan-bt-en-state { + pins = "gpio116", "gpio117"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + usb_1_ss0_sbu_default: usb-1-ss0-sbu-state { + oe-n-pins { + pins = "gpio168"; + function = "gpio"; + bias-disable; + drive-strength = <2>; + }; + + sel-pins { + pins = "gpio167"; + function = "gpio"; + bias-disable; + drive-strength = <2>; + }; + + }; + + usb_1_ss1_sbu_default: usb-1-ss1-sbu-state { + oe-n-pins { + pins = "gpio179"; + function = "gpio"; + bias-disable; + drive-strength = <2>; + }; + + sel-pins { + pins = "gpio178"; + function = "gpio"; + bias-disable; + drive-strength = <2>; + }; + }; +}; + +&uart2 { + status = "okay"; + + embedded-controller { + compatible = "microsoft,surface-sam"; + + interrupts-extended = <&tlmm 91 IRQ_TYPE_EDGE_RISING>; + + current-speed = <4000000>; + + pinctrl-0 = <&ssam_state>; + pinctrl-names = "default"; + }; +}; + +&uart14 { + status = "okay"; + + bluetooth { + compatible = "qcom,wcn7850-bt"; + max-speed = <3200000>; + + vddaon-supply = <&vreg_pmu_aon_0p59>; + vddwlcx-supply = <&vreg_pmu_wlcx_0p8>; + vddwlmx-supply = <&vreg_pmu_wlmx_0p85>; + vddrfacmn-supply = <&vreg_pmu_rfa_cmn>; + vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>; + vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>; + vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>; + }; +}; + +&ufs_mem_hc { + status = "okay"; + + vcc-supply = <&vreg_l17b_2p5>; + vcc-max-microamp = <800000>; + vccq-supply = <&vreg_l2i_1p2>; + vccq-max-microamp = <900000>; + + vdd-hba-supply = <&vreg_l3j_0p8>; +}; + +&ufs_mem_phy { + status = "okay"; + + vdda-phy-supply = <&vreg_l3i_0p8>; + vdda-pll-supply = <&vreg_l3e_1p2>; +}; + +&usb_1_ss0_hsphy { + vdd-supply = <&vreg_l3j_0p8>; + vdda12-supply = <&vreg_l2j_1p2>; + + phys = <&smb2360_0_eusb2_repeater>; + + status = "okay"; +}; + +&usb_1_ss0_qmpphy { + vdda-phy-supply = <&vreg_l3e_1p2>; + vdda-pll-supply = <&vreg_l1j_0p8>; + + status = "okay"; +}; + +&usb_1_ss0 { + status = "okay"; + dr_mode = "host"; +}; + +&usb_1_ss0_dwc3_hs { + remote-endpoint = <&pmic_glink_ss0_hs_in>; +}; + +&usb_1_ss0_qmpphy_out { + remote-endpoint = <&pmic_glink_ss0_ss_in>; +}; + +&usb_1_ss1_hsphy { + vdd-supply = <&vreg_l3j_0p8>; + vdda12-supply = <&vreg_l2j_1p2>; + + phys = <&smb2360_1_eusb2_repeater>; + + status = "okay"; +}; + +&usb_1_ss1_qmpphy { + vdda-phy-supply = <&vreg_l2j_1p2>; + vdda-pll-supply = <&vreg_l2d_0p9>; + + status = "okay"; +}; + +&usb_1_ss1 { + status = "okay"; + dr_mode = "host"; +}; + +&usb_1_ss1_dwc3_hs { + remote-endpoint = <&pmic_glink_ss1_hs_in>; +}; + +&usb_1_ss1_qmpphy_out { + remote-endpoint = <&pmic_glink_ss1_ss_in>; +}; -- 2.53.0 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH v1 8/8] arm64: dts: qcom: Add Microsoft Surface Pro 12in 2026-05-11 14:40 ` [PATCH v1 8/8] arm64: dts: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl @ 2026-05-12 18:44 ` Dmitry Baryshkov 2026-05-12 21:23 ` sashiko-bot 2026-05-13 15:09 ` Konrad Dybcio 2 siblings, 0 replies; 33+ messages in thread From: Dmitry Baryshkov @ 2026-05-12 18:44 UTC (permalink / raw) To: Harrison Vanderbyl Cc: linux-arm-msm, Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree, linux-kernel On Tue, May 12, 2026 at 12:40:57AM +1000, Harrison Vanderbyl wrote: > Initial device tree for Microsoft Surface Pro 12in > > Currently supported: > - UFS > - Touchscreen > - Pen > - USB 3.2 x2 (DP Alt Mode) > - Audio > - Wifi > - Bluetooth > - CDSP > - ADSP > - GPU > > Not currently supported: > - Accelerometer > - Front, Back and IR cameras > - IRIS video decoder > > Tested on Surface_Pro_12in_1st_Ed_with_Snapdragon_2110 > > Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> > --- > arch/arm64/boot/dts/qcom/Makefile | 2 + > .../dts/qcom/x1p42100-microsoft-sp12in.dts | 1160 +++++++++++++++++ > 2 files changed, 1162 insertions(+) > create mode 100644 arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > index 4ba8e7306419..8b6d3e4b479c 100644 > --- a/arch/arm64/boot/dts/qcom/Makefile > +++ b/arch/arm64/boot/dts/qcom/Makefile > @@ -449,3 +449,5 @@ x1p42100-lenovo-thinkbook-16-el2-dtbs := x1p42100-lenovo-thinkbook-16.dtb x1-el2 > dtb-$(CONFIG_ARCH_QCOM) += x1p42100-lenovo-thinkbook-16.dtb x1p42100-lenovo-thinkbook-16-el2.dtb > x1p64100-microsoft-denali-el2-dtbs := x1p64100-microsoft-denali.dtb x1-el2.dtbo > dtb-$(CONFIG_ARCH_QCOM) += x1p64100-microsoft-denali.dtb x1p64100-microsoft-denali-el2.dtb > +x1p42100-microsoft-sp12in-el2-dtbs := x1p42100-microsoft-sp12in.dtb x1-el2.dtbo > +dtb-$(CONFIG_ARCH_QCOM) += x1p42100-microsoft-sp12in.dtb x1p42100-microsoft-sp12in-el2.dtb > diff --git a/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts b/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts > new file mode 100644 > index 000000000000..3a754179a848 > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts > @@ -0,0 +1,1160 @@ > +// SPDX-License-Identifier: BSD-3-Clause > +/* > + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. > + * Copyright (c) 2024, Linaro Limited > + * Copyright (c) 2025, Jens Glathe > + * Copyright (c) 2025, Harrison Vanderbyl > + */ > + > +/dts-v1/; > + > +#include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/input/gpio-keys.h> > +#include <dt-bindings/input/input.h> > +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> > +#include <dt-bindings/regulator/qcom,rpmh-regulator.h> > +#include <dt-bindings/clock/qcom,x1e80100-tcsr.h> > + > +#include "purwa.dtsi" > +#include "hamoa-pmics.dtsi" > + > +/delete-node/ &pmc8380_6; > +/delete-node/ &pmc8380_6_thermal; > + > +/ { > + model = "Surface Pro 12in 1st Edition"; > + compatible = "microsoft,surface-pro-12in", "qcom,x1p42100"; > + chassis-type = "tablet"; > + > + aliases { > + serial0 = &uart2; > + serial1 = &uart14; > + }; > + > + backlight: backlight { > + compatible = "pwm-backlight"; > + pwms = <&pmk8550_pwm 0 5000000>; > + > + power-supply = <&vreg_edp_3p3>; > + }; > + > + gpio-keys { > + compatible = "gpio-keys"; > + > + pinctrl-0 = <&hall_int_n_default>; > + pinctrl-names = "default"; > + > + switch-lid { > + gpios = <&tlmm 2 GPIO_ACTIVE_LOW>; > + linux,input-type = <EV_SW>; > + linux,code = <SW_LID>; > + wakeup-source; > + wakeup-event-action = <EV_ACT_DEASSERTED>; > + }; > + > + key-vol-up { > + gpios = <&pm8550_gpios 8 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_VOLUMEUP>; > + debounce-interval = <15>; > + linux,can-disable; > + wakeup-source; > + }; > + > + key-vol-down { > + gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_VOLUMEDOWN>; > + debounce-interval = <15>; > + linux,can-disable; > + wakeup-source; > + }; > + }; > + > + pmic-glink { > + compatible = "qcom,x1e80100-pmic-glink", > + "qcom,sm8550-pmic-glink", > + "qcom,pmic-glink"; > + #address-cells = <1>; > + #size-cells = <0>; > + orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>, > + <&tlmm 123 GPIO_ACTIVE_HIGH>; > + > + /* Right-side upper port */ > + connector@0 { > + compatible = "usb-c-connector"; > + reg = <0>; > + power-role = "dual"; > + data-role = "dual"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + pmic_glink_ss0_hs_in: endpoint { > + remote-endpoint = <&usb_1_ss0_dwc3_hs>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + > + pmic_glink_ss0_ss_in: endpoint { > + remote-endpoint = <&usb_1_ss0_qmpphy_out>; > + }; > + }; > + > + port@2 { > + reg = <2>; > + > + pmic_glink_ss0_sbu: endpoint { > + remote-endpoint = <&usb_1_ss0_sbu_mux>; > + }; > + }; > + }; > + }; > + > + /* Right-side lower port */ > + connector@1 { > + compatible = "usb-c-connector"; > + reg = <1>; > + power-role = "dual"; > + data-role = "dual"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + pmic_glink_ss1_hs_in: endpoint { > + remote-endpoint = <&usb_1_ss1_dwc3_hs>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + > + pmic_glink_ss1_ss_in: endpoint { > + remote-endpoint = <&usb_1_ss1_qmpphy_out>; > + }; > + }; > + > + port@2 { > + reg = <2>; > + > + pmic_glink_ss1_sbu: endpoint { > + remote-endpoint = <&usb_1_ss1_sbu_mux>; > + }; > + }; > + }; > + }; > + }; > + > + reserved-memory { > + linux,cma { > + compatible = "shared-dma-pool"; > + size = <0x0 0x20000000>; > + reusable; > + linux,cma-default; > + }; > + }; > + > + vreg_edp_3p3: regulator-edp-3p3 { > + compatible = "regulator-fixed"; > + > + regulator-name = "VREG_EDP_3P3"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + > + gpio = <&tlmm 70 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + > + pinctrl-0 = <&edp_reg_en>; > + pinctrl-names = "default"; > + > + regulator-boot-on; > + }; > + > + vph_pwr: regulator-vph-pwr { > + compatible = "regulator-fixed"; > + > + regulator-name = "vph_pwr"; > + regulator-min-microvolt = <3700000>; > + regulator-max-microvolt = <3700000>; > + }; > + > + vreg_wcn_0p95: regulator-wcn-0p95 { > + compatible = "regulator-fixed"; > + > + regulator-name = "VREG_WCN_0P95"; > + regulator-min-microvolt = <950000>; > + regulator-max-microvolt = <950000>; > + > + vin-supply = <&vreg_wcn_3p3>; > + }; > + > + vreg_wcn_1p9: regulator-wcn-1p9 { > + compatible = "regulator-fixed"; > + > + regulator-name = "VREG_WCN_1P9"; > + regulator-min-microvolt = <1900000>; > + regulator-max-microvolt = <1900000>; > + > + vin-supply = <&vreg_wcn_3p3>; > + }; > + > + vreg_wcn_3p3: regulator-wcn-3p3 { > + compatible = "regulator-fixed"; > + > + regulator-name = "VREG_WCN_3P3"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + > + gpio = <&tlmm 214 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + > + pinctrl-0 = <&wcn_sw_en>; > + pinctrl-names = "default"; > + }; > + > + sound { > + compatible = "qcom,x1e80100-sndcard"; > + model = "X1P42100-Microsoft-Surface-Pro-12in"; I see a PR for alsa-ucm-conf. Would you please also submit the topology to audioreach-topology? > + audio-routing = "SpkrLeft IN", "WSA WSA_SPK1 OUT", > + "SpkrRight IN", "WSA WSA_SPK2 OUT", > + "VA DMIC0", "vdd-micb", > + "VA DMIC1", "vdd-micb", > + "VA DMIC2", "vdd-micb", > + "VA DMIC3", "vdd-micb"; > + [...] > + > + usb-1-ss1-sbu-mux { > + compatible = "onnn,fsusb42", "gpio-sbu-mux"; > + > + enable-gpios = <&tlmm 179 GPIO_ACTIVE_LOW>; > + select-gpios = <&tlmm 178 GPIO_ACTIVE_HIGH>; > + > + pinctrl-0 = <&usb_1_ss1_sbu_default>; > + pinctrl-names = "default"; > + > + mode-switch; > + orientation-switch; > + > + port { > + usb_1_ss1_sbu_mux: endpoint { > + remote-endpoint = <&pmic_glink_ss1_sbu>; > + }; > + }; > + }; > + Nit: extra empty line > +}; > + [...] > + > +&i2c0 { > + clock-frequency = <400000>; > + > + status = "okay"; If you have an idea of the devices on these busses, would you please add corresponding comments? > +}; > + > +&i2c4 { > + clock-frequency = <400000>; > + > + status = "okay"; > +}; > + > +&i2c9 { > + clock-frequency = <400000>; > + > + status = "okay"; > +}; > + -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v1 8/8] arm64: dts: qcom: Add Microsoft Surface Pro 12in 2026-05-11 14:40 ` [PATCH v1 8/8] arm64: dts: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl 2026-05-12 18:44 ` Dmitry Baryshkov @ 2026-05-12 21:23 ` sashiko-bot 2026-05-13 15:09 ` Konrad Dybcio 2 siblings, 0 replies; 33+ messages in thread From: sashiko-bot @ 2026-05-12 21:23 UTC (permalink / raw) To: Harrison Vanderbyl; +Cc: robh, devicetree, krzk+dt, conor+dt Thank you for your contribution! Sashiko AI review found 6 potential issue(s) to consider: - [High] Touchscreen reset pin is statically driven high before power is applied. - [Medium] Audio routing specifies 4 DMICs but pinctrl only configures pins for DMIC0 and DMIC1. - [Medium] Regulator enable pin statically forced high by pinctrl. - [Medium] Inconsistent regulator assignment for USB QMP PHYs. - [Medium] Missing pinctrl configurations for volume keys. - [Low] Unused `panel_pins` pinctrl state defined in device tree. -- commit bfa1ccc215b18064216c44242bb8398931a0520f Author: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> arm64: dts: qcom: Add Microsoft Surface Pro 12in This commit adds the initial device tree for the Microsoft Surface Pro 12in, enabling various peripherals such as UFS, touchscreen, audio, and USB. > diff --git a/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts b/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts > new file mode 100644 > index 0000000000000..3a754179a8481 > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts > @@ -0,0 +1,1160 @@ [ ... ] > + key-vol-up { > + gpios = <&pm8550_gpios 8 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_VOLUMEUP>; > + debounce-interval = <15>; > + linux,can-disable; > + wakeup-source; > + }; > + > + key-vol-down { > + gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_VOLUMEDOWN>; > + debounce-interval = <15>; > + linux,can-disable; > + wakeup-source; > + }; Will these volume keys be prone to spurious interrupts? These nodes map to pm8550_gpios as GPIO_ACTIVE_LOW, but do not specify any pinctrl to configure internal pull-ups on the physical pads. Unless external pull-ups are present on the board, floating pins could trigger unwanted wakeups. [ ... ] > + sound { > + compatible = "qcom,x1e80100-sndcard"; > + model = "X1P42100-Microsoft-Surface-Pro-12in"; > + audio-routing = "SpkrLeft IN", "WSA WSA_SPK1 OUT", > + "SpkrRight IN", "WSA WSA_SPK2 OUT", > + "VA DMIC0", "vdd-micb", > + "VA DMIC1", "vdd-micb", > + "VA DMIC2", "vdd-micb", > + "VA DMIC3", "vdd-micb"; [ ... ] > +&lpass_vamacro { > + qcom,dmic-sample-rate = <4800000>; > + > + vdd-micb-supply = <&vreg_l1b_1p8>; > + > + pinctrl-0 = <&dmic01_default>; > + pinctrl-names = "default"; > +}; Will audio capture from DMIC2 and DMIC3 fail with this configuration? The audio-routing maps 4 DMICs, but only the dmic01_default pins are configured in pinctrl, leaving the data and clock pins for DMIC2 and DMIC3 unconfigured. Should <&dmic23_default> be included here? [ ... ] > + touchscreen@16 { > + compatible = "hid-over-i2c"; > + reg = <0x16>; > + > + hid-descr-addr = <0x1>; > + interrupts-extended = <&tlmm 38 IRQ_TYPE_LEVEL_LOW>; > + wakeup-source; > + > + vddl-supply = <&vreg_l15b_1p8>; > + > + pinctrl-0 = <&ts0_default>; > + pinctrl-names = "default"; > + }; Could this damage the touchscreen IC? The touchscreen node omits a reset-gpios property, but relies on ts0_default which hardcodes output-high on the reset pin. Because pinctrl states are applied prior to the driver probe (which enables vddl-supply), driving logic high into the unpowered IC violates power sequencing and risks back-powering via ESD diodes. Would it be better to provide reset-gpios in the touchscreen node so the driver can manage the line dynamically after regulators stabilize? [ ... ] > +&tlmm { > + gpio-reserved-ranges = <34 2>, /* Unused */ > + <44 4>; /* SPI (TPM) */ > + > + edp_reg_en: edp-reg-en-state { > + pins = "gpio70"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + output-high; > + }; Does this prevent the regulator framework from turning off vreg_edp_3p3? Hardcoding output-high in the pinctrl state overrides the regulator's ability to autonomously pull the line low when the supply is disabled, such as during system suspend. [ ... ] > + panel_pins: panel-pins-state { > + pins = "gpio29"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + output-low; > + }; This isn't a bug, but panel_pins is defined here yet never referenced by the panel node or any other component. Is it dead code, or is a reference to it missing elsewhere to properly enable the display? [ ... ] > + ts0_default: ts0-default-state { > + int-n-pins { > + pins = "gpio38"; > + function = "gpio"; > + bias-disable; > + }; > + > + reset-n-pins { > + pins = "gpio48"; > + function = "gpio"; > + output-high; > + drive-strength = <16>; > + }; > + }; (This is where output-high is currently defined for the touchscreen reset, as mentioned above.) [ ... ] > +&usb_1_ss0_qmpphy { > + vdda-phy-supply = <&vreg_l3e_1p2>; > + vdda-pll-supply = <&vreg_l1j_0p8>; > + > + status = "okay"; > +}; Should this use vreg_l2j_1p2 for the vdda-phy-supply instead? Mixing a PHY supply from PMIC 'e' with a PLL supply from PMIC 'j' on the same node differs from usb_1_ss1_qmpphy, which consistently uses vreg_l2j_1p2. Using vreg_l3e_1p2 here looks similar to the pcie4_phy configuration, which could be a copy-paste error resulting in improper voltage scaling for this USB PHY. -- Sashiko AI review · https://sashiko.dev/#/patchset/cover.1778498477.git.harrison.vanderbyl@gmail.com?part=8 ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: [PATCH v1 8/8] arm64: dts: qcom: Add Microsoft Surface Pro 12in 2026-05-11 14:40 ` [PATCH v1 8/8] arm64: dts: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl 2026-05-12 18:44 ` Dmitry Baryshkov 2026-05-12 21:23 ` sashiko-bot @ 2026-05-13 15:09 ` Konrad Dybcio 2 siblings, 0 replies; 33+ messages in thread From: Konrad Dybcio @ 2026-05-13 15:09 UTC (permalink / raw) To: Harrison Vanderbyl, linux-arm-msm, Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree, linux-kernel On 5/11/26 4:40 PM, Harrison Vanderbyl wrote: > Initial device tree for Microsoft Surface Pro 12in [...] > + pmic-glink { > + compatible = "qcom,x1e80100-pmic-glink", > + "qcom,sm8550-pmic-glink", > + "qcom,pmic-glink"; > + #address-cells = <1>; > + #size-cells = <0>; > + orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>, > + <&tlmm 123 GPIO_ACTIVE_HIGH>; Please align the "s and <s [...] > + va-dai-link { > + link-name = "VA Capture"; > + > + cpu { > + sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>; > + }; > + > + codec { > + sound-dai = <&lpass_vamacro 0>; > + }; 'co'dec < 'cp'u [...] > +&mdss_dp3 { > + /delete-property/ #sound-dai-cells; > + > + pinctrl-names = "default"; > + pinctrl-0 = <&edp0_hpd_default>; Please make sure to keep this order, file-wide: property-n property-names [...] > +&ufs_mem_hc { > + status = "okay"; Let's keep status uniformly the last property, preceded by a \n [...] > +&usb_1_ss0 { > + status = "okay"; > + dr_mode = "host"; You declared the Type-C ports as dual-role - does it work if you skip this bit? Konrad ^ permalink raw reply [flat|nested] 33+ messages in thread
* Re: (subset) [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon) 2026-05-11 14:40 [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon) Harrison Vanderbyl ` (7 preceding siblings ...) 2026-05-11 14:40 ` [PATCH v1 8/8] arm64: dts: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl @ 2026-05-13 19:08 ` Bjorn Andersson 2026-05-15 5:41 ` [PATCH v2 0/7] Add support for the Microsoft Surface Pro 12in 1st Edition (Snapdragon), Harrison Vanderbyl 8 siblings, 1 reply; 33+ messages in thread From: Bjorn Andersson @ 2026-05-13 19:08 UTC (permalink / raw) To: linux-arm-msm, Harrison Vanderbyl; +Cc: linux-kernel On Tue, 12 May 2026 00:40:49 +1000, Harrison Vanderbyl wrote: > Add support for the Microsoft Surface Pro 12in 1st Edition (Snapdragon), > based on the Qualcomm X1P42100 SoC. > > Currently supported: > - UFS (with inline crypto) > - Touchscreen, pen, cover keyboard and touchpad (via SAM) > - USB 3.2 x2 with DP Alt Mode > - Audio, WiFi, Bluetooth > - CDSP, ADSP, GPU > - Display (BOE NE120DRM-N28 panel) > > [...] Applied, thanks! [4/8] firmware: qcom: scm: Allow QSEECOM on Surface Pro 12in commit: 667d05a09db3da8b3dfbe0bc1dafae2d7887176b Best regards, -- Bjorn Andersson <andersson@kernel.org> ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v2 0/7] Add support for the Microsoft Surface Pro 12in 1st Edition (Snapdragon), 2026-05-13 19:08 ` (subset) [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon) Bjorn Andersson @ 2026-05-15 5:41 ` Harrison Vanderbyl 2026-05-15 5:41 ` [PATCH v2 1/7] dt-bindings: arm: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl ` (6 more replies) 0 siblings, 7 replies; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-15 5:41 UTC (permalink / raw) To: andersson, konradybcio, robh, krzk+dt, conor+dt, Herbert Xu, davem, neil.armstrong, maarten.lankhorst, mripard, tzimmermann, airlied, simona, jikos, bentiss, luzmaximilian, hansg, ilpo.jarvinen Cc: Douglas Anderson, Jessica Zhang, linux-arm-msm, devicetree, linux-kernel, linux-crypto, dri-devel, linux-input, platform-driver-x86 Changes in v2: Ice device tree: - Updated to use 0x0 formatting Panel: - Add edid to commit message Device tree: - Fixed formatting and ordering nits - Removed extra dmic audio declarations - Added suspected devices on i2c busses - Fixed incorrect usb regulator - Describe panel pin regulator - Added defaults for volume button GPIOs QSEECOM patch (4/8 in v1): - Applied by Bjorn Andersson Hid patch (5/8 in v1): - Acked by Jiri Kosina, but not applied yet. Link to v1: https://lore.kernel.org/all/cover.1778498477.git.harrison.vanderbyl@gmail.com/ Currently supported: - UFS (with inline crypto) - Touchscreen, pen, cover keyboard and touchpad (via SAM) - USB 3.2 x2 with DP Alt Mode - Audio, WiFi, Bluetooth - CDSP, ADSP, GPU - Display (BOE NE120DRM-N28 panel) Not yet supported: - Accelerometer - Front, back, and IR cameras - IRIS video decoder Note on the compatible string: unlike other Microsoft Surface devices upstream (denali, arcata, romulus13, blackrock), this device does not appear to carry an internal codename in firmware. The DSDT, SMBIOS, and EFI variables only refer to it as "Surface Pro 12in 1st Ed with Snapdragon" (SKU 2110). I have used `microsoft,surface-pro-12in` as the compatible. Suggestions welcome. Although the device is marketed as just a smaller version of the denali, it has enough differences that it warranted a different compatible and device tree. Tested on Surface Pro 12in 1st Ed with Snapdragon (SKU 2110). Harrison Vanderbyl (7): dt-bindings: arm: qcom: Add Microsoft Surface Pro 12in dt-bindings: crypto: Add x1e80100 inline crypto platform/surface: SAM: Add support for Surface Pro 12in hid: Pen battery quirk for Surface Pro 12in drm/panel-edp: Add panel for Surface Pro 12in arm64: dts: qcom: hamoa: Add inline crypto for UFS arm64: dts: qcom: Add Microsoft Surface Pro 12in .../devicetree/bindings/arm/qcom.yaml | 4 + .../crypto/qcom,inline-crypto-engine.yaml | 1 + arch/arm64/boot/dts/qcom/Makefile | 2 + arch/arm64/boot/dts/qcom/hamoa.dtsi | 10 + .../dts/qcom/x1p42100-microsoft-sp12in.dts | 1201 +++++++++++++++++ drivers/gpu/drm/panel/panel-edp.c | 1 + drivers/hid/hid-ids.h | 1 + drivers/hid/hid-input.c | 2 + .../surface/surface_aggregator_registry.c | 15 + 9 files changed, 1237 insertions(+) create mode 100644 arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts base-commit: 5d6919055dec134de3c40167a490f33c74c12581 prerequisite-patch-id: a34133ba03bd1d31c0ed08612c31131b62015654 -- 2.53.0 ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v2 1/7] dt-bindings: arm: qcom: Add Microsoft Surface Pro 12in 2026-05-15 5:41 ` [PATCH v2 0/7] Add support for the Microsoft Surface Pro 12in 1st Edition (Snapdragon), Harrison Vanderbyl @ 2026-05-15 5:41 ` Harrison Vanderbyl 2026-05-15 7:03 ` Krzysztof Kozlowski 2026-05-15 5:41 ` [PATCH v2 2/7] dt-bindings: crypto: Add x1e80100 inline crypto Harrison Vanderbyl ` (5 subsequent siblings) 6 siblings, 1 reply; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-15 5:41 UTC (permalink / raw) To: andersson, konradybcio, robh, krzk+dt, conor+dt, Herbert Xu, davem, neil.armstrong, maarten.lankhorst, mripard, tzimmermann, airlied, simona, jikos, bentiss, luzmaximilian, hansg, ilpo.jarvinen Cc: Douglas Anderson, Jessica Zhang, linux-arm-msm, devicetree, linux-kernel, linux-crypto, dri-devel, linux-input, platform-driver-x86 Document the compatible string for the Microsoft Surface Pro 12-inch, 1st Edition with Snapdragon, based on the Qualcomm X1P42100 SoC. Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> --- Documentation/devicetree/bindings/arm/qcom.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml index b4943123d2e4..aaa9a129908a 100644 --- a/Documentation/devicetree/bindings/arm/qcom.yaml +++ b/Documentation/devicetree/bindings/arm/qcom.yaml @@ -1168,6 +1168,10 @@ properties: - const: microsoft,denali - const: qcom,x1e80100 + - items: + - const: microsoft,surface-pro-12in + - const: qcom,x1p42100 + - items: - enum: - qcom,purwa-iot-evk -- 2.53.0 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH v2 1/7] dt-bindings: arm: qcom: Add Microsoft Surface Pro 12in 2026-05-15 5:41 ` [PATCH v2 1/7] dt-bindings: arm: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl @ 2026-05-15 7:03 ` Krzysztof Kozlowski 0 siblings, 0 replies; 33+ messages in thread From: Krzysztof Kozlowski @ 2026-05-15 7:03 UTC (permalink / raw) To: Harrison Vanderbyl Cc: andersson, konradybcio, robh, krzk+dt, conor+dt, Herbert Xu, davem, neil.armstrong, maarten.lankhorst, mripard, tzimmermann, airlied, simona, jikos, bentiss, luzmaximilian, hansg, ilpo.jarvinen, Douglas Anderson, Jessica Zhang, linux-arm-msm, devicetree, linux-kernel, linux-crypto, dri-devel, linux-input, platform-driver-x86 On Fri, May 15, 2026 at 03:41:46PM +1000, Harrison Vanderbyl wrote: > Document the compatible string for the Microsoft Surface Pro > 12-inch, 1st Edition with Snapdragon, based on the Qualcomm X1P42100 > SoC. > > Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> > --- > Documentation/devicetree/bindings/arm/qcom.yaml | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml > index b4943123d2e4..aaa9a129908a 100644 > --- a/Documentation/devicetree/bindings/arm/qcom.yaml > +++ b/Documentation/devicetree/bindings/arm/qcom.yaml > @@ -1168,6 +1168,10 @@ properties: > - const: microsoft,denali > - const: qcom,x1e80100 > > + - items: > + - const: microsoft,surface-pro-12in Why isn't this part of the other enum with all devices? Best regards, Krzysztof ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v2 2/7] dt-bindings: crypto: Add x1e80100 inline crypto 2026-05-15 5:41 ` [PATCH v2 0/7] Add support for the Microsoft Surface Pro 12in 1st Edition (Snapdragon), Harrison Vanderbyl 2026-05-15 5:41 ` [PATCH v2 1/7] dt-bindings: arm: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl @ 2026-05-15 5:41 ` Harrison Vanderbyl 2026-05-15 7:04 ` Krzysztof Kozlowski 2026-05-15 5:41 ` [PATCH v2 3/7] platform/surface: SAM: Add support for Surface Pro 12in Harrison Vanderbyl ` (4 subsequent siblings) 6 siblings, 1 reply; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-15 5:41 UTC (permalink / raw) To: andersson, konradybcio, robh, krzk+dt, conor+dt, Herbert Xu, davem, neil.armstrong, maarten.lankhorst, mripard, tzimmermann, airlied, simona, jikos, bentiss, luzmaximilian, hansg, ilpo.jarvinen Cc: Douglas Anderson, Jessica Zhang, linux-arm-msm, devicetree, linux-kernel, linux-crypto, dri-devel, linux-input, platform-driver-x86 Add compatibility string for the x1e80100/x1p42100 inline crypto engine. Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> --- .../devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml b/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml index 876bf90ed96e..a338c4a33e98 100644 --- a/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml +++ b/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml @@ -24,6 +24,7 @@ properties: - qcom,sm8550-inline-crypto-engine - qcom,sm8650-inline-crypto-engine - qcom,sm8750-inline-crypto-engine + - qcom,x1e80100-inline-crypto-engine - const: qcom,inline-crypto-engine reg: -- 2.53.0 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH v2 2/7] dt-bindings: crypto: Add x1e80100 inline crypto 2026-05-15 5:41 ` [PATCH v2 2/7] dt-bindings: crypto: Add x1e80100 inline crypto Harrison Vanderbyl @ 2026-05-15 7:04 ` Krzysztof Kozlowski 0 siblings, 0 replies; 33+ messages in thread From: Krzysztof Kozlowski @ 2026-05-15 7:04 UTC (permalink / raw) To: Harrison Vanderbyl Cc: andersson, konradybcio, robh, krzk+dt, conor+dt, Herbert Xu, davem, neil.armstrong, maarten.lankhorst, mripard, tzimmermann, airlied, simona, jikos, bentiss, luzmaximilian, hansg, ilpo.jarvinen, Douglas Anderson, Jessica Zhang, linux-arm-msm, devicetree, linux-kernel, linux-crypto, dri-devel, linux-input, platform-driver-x86 On Fri, May 15, 2026 at 03:41:47PM +1000, Harrison Vanderbyl wrote: > Add compatibility string for the x1e80100/x1p42100 > inline crypto engine. > > Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> This was posted, please do not duplicate work. https://lore.kernel.org/all/eggp3un5ufbw2mjamxmpfccq3cs2luxabpa2sucofydzoak4vg@hy7mx3rtqfko/ Do not attach (thread) your patchsets to some other threads (unrelated or older versions). This buries them deep in the mailbox and might interfere with applying entire sets. See also: https://elixir.bootlin.com/linux/v6.16-rc2/source/Documentation/process/submitting-patches.rst#L830 Best regards, Krzysztof ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v2 3/7] platform/surface: SAM: Add support for Surface Pro 12in 2026-05-15 5:41 ` [PATCH v2 0/7] Add support for the Microsoft Surface Pro 12in 1st Edition (Snapdragon), Harrison Vanderbyl 2026-05-15 5:41 ` [PATCH v2 1/7] dt-bindings: arm: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl 2026-05-15 5:41 ` [PATCH v2 2/7] dt-bindings: crypto: Add x1e80100 inline crypto Harrison Vanderbyl @ 2026-05-15 5:41 ` Harrison Vanderbyl 2026-05-15 6:02 ` sashiko-bot 2026-05-15 5:41 ` [PATCH v2 4/7] hid: Pen battery quirk " Harrison Vanderbyl ` (3 subsequent siblings) 6 siblings, 1 reply; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-15 5:41 UTC (permalink / raw) To: andersson, konradybcio, robh, krzk+dt, conor+dt, Herbert Xu, davem, neil.armstrong, maarten.lankhorst, mripard, tzimmermann, airlied, simona, jikos, bentiss, luzmaximilian, hansg, ilpo.jarvinen Cc: Douglas Anderson, Jessica Zhang, linux-arm-msm, devicetree, linux-kernel, linux-crypto, dri-devel, linux-input, platform-driver-x86 Add a SAM client device node group and registry entry for the Microsoft Surface Pro, 12-inch with Snapdragon. This set enables the use of the following devices. 1: cover keyboard 2: cover touchpad 3: pen stash events. The battery info and charger info devices have been purposefully omitted as they are also reported by other drivers and cause conflicts. Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> --- .../surface/surface_aggregator_registry.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/platform/surface/surface_aggregator_registry.c b/drivers/platform/surface/surface_aggregator_registry.c index 0599d5adf02e..884049961415 100644 --- a/drivers/platform/surface/surface_aggregator_registry.c +++ b/drivers/platform/surface/surface_aggregator_registry.c @@ -422,6 +422,19 @@ static const struct software_node *ssam_node_group_sp11[] = { NULL, }; +/* Devices for Surface Pro 12" first edition (ARM/QCOM) */ +static const struct software_node *ssam_node_group_sp12in[] = { + &ssam_node_root, + &ssam_node_hub_kip, + &ssam_node_tmp_sensors, + &ssam_node_hid_kip_keyboard, + &ssam_node_hid_sam_penstash, + &ssam_node_hid_kip_touchpad, + &ssam_node_hid_kip_fwupd, + &ssam_node_pos_tablet_switch, + NULL, +}; + /* -- SSAM platform/meta-hub driver. ---------------------------------------- */ static const struct acpi_device_id ssam_platform_hub_acpi_match[] = { @@ -500,6 +513,8 @@ static const struct of_device_id ssam_platform_hub_of_match[] __maybe_unused = { { .compatible = "microsoft,arcata", (void *)ssam_node_group_sp9_5g }, /* Surface Pro 11 (ARM/QCOM) */ { .compatible = "microsoft,denali", (void *)ssam_node_group_sp11 }, + /* Surface Pro 12in First Edition (ARM/QCOM) */ + { .compatible = "microsoft,surface-pro-12in", (void *)ssam_node_group_sp12in }, /* Surface Laptop 7 */ { .compatible = "microsoft,romulus13", (void *)ssam_node_group_sl7 }, { .compatible = "microsoft,romulus15", (void *)ssam_node_group_sl7 }, -- 2.53.0 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH v2 3/7] platform/surface: SAM: Add support for Surface Pro 12in 2026-05-15 5:41 ` [PATCH v2 3/7] platform/surface: SAM: Add support for Surface Pro 12in Harrison Vanderbyl @ 2026-05-15 6:02 ` sashiko-bot 0 siblings, 0 replies; 33+ messages in thread From: sashiko-bot @ 2026-05-15 6:02 UTC (permalink / raw) To: Harrison Vanderbyl Cc: krzk+dt, conor+dt, robh, dmitry.torokhov, devicetree, linux-input Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] Incorrect software node used for the pen stash device, breaking pen stash events. -- commit 66a330e4ed95d1a03b167abb4b106aaef584a66f Author: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> platform/surface: SAM: Add support for Surface Pro 12in This commit adds a SAM client device node group and registry entry for the Microsoft Surface Pro 12-inch. It specifically mentions enabling the cover keyboard, cover touchpad, and pen stash events. > diff --git a/drivers/platform/surface/surface_aggregator_registry.c b/drivers/platform/surface/surface_aggregator_registry.c > index 0599d5adf02e6..8840499614154 100644 > --- a/drivers/platform/surface/surface_aggregator_registry.c > +++ b/drivers/platform/surface/surface_aggregator_registry.c [ ... ] > @@ -422,6 +422,19 @@ static const struct software_node *ssam_node_group_sp11[] = { > NULL, > }; > > +/* Devices for Surface Pro 12" first edition (ARM/QCOM) */ > +static const struct software_node *ssam_node_group_sp12in[] = { > + &ssam_node_root, > + &ssam_node_hub_kip, > + &ssam_node_tmp_sensors, > + &ssam_node_hid_kip_keyboard, > + &ssam_node_hid_sam_penstash, Will this software node work correctly for the Surface Pro pen stash events? Since the pen is typically stashed inside the detachable cover keyboard on Surface Pro devices, its events are usually routed through the Keyboard Interface Protocol (KIP) hub. Other Surface Pro models, like the SP11, use ssam_node_hid_kip_penstash instead. Should this use the KIP variant here as well? Using the SAM variant might cause the driver to listen on the wrong target ID and miss the pen stash events entirely. > + &ssam_node_hid_kip_touchpad, > + &ssam_node_hid_kip_fwupd, > + &ssam_node_pos_tablet_switch, > + NULL, > +}; -- Sashiko AI review · https://sashiko.dev/#/patchset/cover.1778822464.git.harrison.vanderbyl@gmail.com?part=3 ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v2 4/7] hid: Pen battery quirk for Surface Pro 12in 2026-05-15 5:41 ` [PATCH v2 0/7] Add support for the Microsoft Surface Pro 12in 1st Edition (Snapdragon), Harrison Vanderbyl ` (2 preceding siblings ...) 2026-05-15 5:41 ` [PATCH v2 3/7] platform/surface: SAM: Add support for Surface Pro 12in Harrison Vanderbyl @ 2026-05-15 5:41 ` Harrison Vanderbyl 2026-05-15 6:12 ` sashiko-bot 2026-05-15 5:41 ` [PATCH v2 5/7] drm/panel-edp: Add panel " Harrison Vanderbyl ` (2 subsequent siblings) 6 siblings, 1 reply; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-15 5:41 UTC (permalink / raw) To: andersson, konradybcio, robh, krzk+dt, conor+dt, Herbert Xu, davem, neil.armstrong, maarten.lankhorst, mripard, tzimmermann, airlied, simona, jikos, bentiss, luzmaximilian, hansg, ilpo.jarvinen Cc: Douglas Anderson, Jessica Zhang, linux-arm-msm, devicetree, linux-kernel, linux-crypto, dri-devel, linux-input, platform-driver-x86, Jiri Kosina The pen setup for this device uses bluetooth for communicating battery levels and status instead of reporting it over i2c. Without this quirk, the device either reports an extra, broken phantom battery, or hangs. Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> Acked-by: Jiri Kosina <jkosina@suse.com> --- drivers/hid/hid-ids.h | 1 + drivers/hid/hid-input.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index 0cf63742315b..d16f55479786 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -459,6 +459,7 @@ #define USB_DEVICE_ID_HP_X2 0x074d #define USB_DEVICE_ID_HP_X2_10_COVER 0x0755 #define I2C_DEVICE_ID_CHROMEBOOK_TROGDOR_POMPOM 0x2F81 +#define I2C_DEVICE_ID_SURFACE_PRO_12IN 0x4376 #define USB_VENDOR_ID_ELECOM 0x056e #define USB_DEVICE_ID_ELECOM_BM084 0x0061 diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index d73cfa2e73d3..61ecd840d0bd 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -395,6 +395,8 @@ static const struct hid_device_id hid_battery_quirks[] = { HID_BATTERY_QUIRK_AVOID_QUERY }, { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_CHROMEBOOK_TROGDOR_POMPOM), HID_BATTERY_QUIRK_AVOID_QUERY }, + { HID_I2C_DEVICE(USB_VENDOR_ID_ELAN, I2C_DEVICE_ID_SURFACE_PRO_12IN), + HID_BATTERY_QUIRK_IGNORE }, /* * Elan HID touchscreens seem to all report a non present battery, * set HID_BATTERY_QUIRK_IGNORE for all Elan I2C and USB HID devices. -- 2.53.0 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH v2 4/7] hid: Pen battery quirk for Surface Pro 12in 2026-05-15 5:41 ` [PATCH v2 4/7] hid: Pen battery quirk " Harrison Vanderbyl @ 2026-05-15 6:12 ` sashiko-bot 0 siblings, 0 replies; 33+ messages in thread From: sashiko-bot @ 2026-05-15 6:12 UTC (permalink / raw) To: Harrison Vanderbyl Cc: dmitry.torokhov, conor+dt, devicetree, linux-input, krzk+dt, robh Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Low] The newly added macro uses spaces instead of a tab for value alignment. -- commit 41dd30be72b9f45b17d28788bd19cb4c73988147 Author: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> hid: Pen battery quirk for Surface Pro 12in This commit adds a battery quirk for the Surface Pro 12in pen, which uses bluetooth for communicating battery levels rather than i2c. Adding this quirk prevents the device from reporting a phantom battery or hanging. > diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h > index 0cf63742315bf..d16f55479786c 100644 > --- a/drivers/hid/hid-ids.h > +++ b/drivers/hid/hid-ids.h [ ... ] > @@ -459,6 +459,7 @@ > #define USB_DEVICE_ID_HP_X2 0x074d > #define USB_DEVICE_ID_HP_X2_10_COVER 0x0755 > #define I2C_DEVICE_ID_CHROMEBOOK_TROGDOR_POMPOM 0x2F81 > +#define I2C_DEVICE_ID_SURFACE_PRO_12IN 0x4376 This isn't a bug, but it looks like spaces were used instead of a tab for alignment here. The surrounding definitions use tabs. -- Sashiko AI review · https://sashiko.dev/#/patchset/cover.1778822464.git.harrison.vanderbyl@gmail.com?part=4 ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v2 5/7] drm/panel-edp: Add panel for Surface Pro 12in 2026-05-15 5:41 ` [PATCH v2 0/7] Add support for the Microsoft Surface Pro 12in 1st Edition (Snapdragon), Harrison Vanderbyl ` (3 preceding siblings ...) 2026-05-15 5:41 ` [PATCH v2 4/7] hid: Pen battery quirk " Harrison Vanderbyl @ 2026-05-15 5:41 ` Harrison Vanderbyl 2026-05-15 5:41 ` [PATCH v2 6/7] arm64: dts: qcom: hamoa: Add inline crypto for UFS Harrison Vanderbyl 2026-05-15 5:41 ` [PATCH v2 7/7] arm64: dts: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl 6 siblings, 0 replies; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-15 5:41 UTC (permalink / raw) To: andersson, konradybcio, robh, krzk+dt, conor+dt, Herbert Xu, davem, neil.armstrong, maarten.lankhorst, mripard, tzimmermann, airlied, simona, jikos, bentiss, luzmaximilian, hansg, ilpo.jarvinen Cc: Douglas Anderson, Jessica Zhang, linux-arm-msm, devicetree, linux-kernel, linux-crypto, dri-devel, linux-input, platform-driver-x86 Add an entry for the BOE NE120DRM-N28 panel, used in the Microsoft Surface Pro 12-inch. The values chosen were tested to be working fine for wake from sleep and hibernation. Panel edid: 00 ff ff ff ff ff ff 00 09 e5 c9 0c a0 06 00 07 0a 22 01 04 a5 19 11 78 07 9f 15 a6 55 4c 9b 25 0e 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 62 53 94 a0 80 b8 2e 50 18 10 3a 00 fe a9 00 00 00 1a 13 7d 94 a0 80 b8 2e 50 18 10 3a 00 fe a9 00 00 00 1a 00 00 00 fd 00 18 5a 5b 88 20 01 0a 20 20 20 20 20 20 00 00 00 fc 00 4e 45 31 32 30 44 52 4d 2d 4e 32 38 0a 00 0a Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> --- drivers/gpu/drm/panel/panel-edp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c index 497dcd48f57b..2cf52f03c217 100644 --- a/drivers/gpu/drm/panel/panel-edp.c +++ b/drivers/gpu/drm/panel/panel-edp.c @@ -2020,6 +2020,7 @@ static const struct edp_panel_entry edp_panels[] = { EDP_PANEL_ENTRY('B', 'O', 'E', 0x0c26, &delay_200_500_p2e200, "NV140WUM-T08"), EDP_PANEL_ENTRY('B', 'O', 'E', 0x0c93, &delay_200_500_e200, "Unknown"), EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cb6, &delay_200_500_e200, "NT116WHM-N44"), + EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cc9, &delay_200_500_e50, "NE120DRM-N28"), EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cf2, &delay_200_500_e200, "NV156FHM-N4S"), EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cf6, &delay_200_500_e200_d100, "NV140WUM-N64"), EDP_PANEL_ENTRY('B', 'O', 'E', 0x0cfa, &delay_200_500_e50, "NV116WHM-A4D"), -- 2.53.0 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* [PATCH v2 6/7] arm64: dts: qcom: hamoa: Add inline crypto for UFS 2026-05-15 5:41 ` [PATCH v2 0/7] Add support for the Microsoft Surface Pro 12in 1st Edition (Snapdragon), Harrison Vanderbyl ` (4 preceding siblings ...) 2026-05-15 5:41 ` [PATCH v2 5/7] drm/panel-edp: Add panel " Harrison Vanderbyl @ 2026-05-15 5:41 ` Harrison Vanderbyl 2026-05-15 6:24 ` sashiko-bot 2026-05-15 5:41 ` [PATCH v2 7/7] arm64: dts: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl 6 siblings, 1 reply; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-15 5:41 UTC (permalink / raw) To: andersson, konradybcio, robh, krzk+dt, conor+dt, Herbert Xu, davem, neil.armstrong, maarten.lankhorst, mripard, tzimmermann, airlied, simona, jikos, bentiss, luzmaximilian, hansg, ilpo.jarvinen Cc: Douglas Anderson, Jessica Zhang, linux-arm-msm, devicetree, linux-kernel, linux-crypto, dri-devel, linux-input, platform-driver-x86 Add the Inline Crypto node and wire it to ufs_mem, enabling UFS storage encryption on x1e80100 and derivative SOCs. This is needed to support encrypted storage on the Microsoft Surface Pro 12-inch. Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> --- arch/arm64/boot/dts/qcom/hamoa.dtsi | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/hamoa.dtsi b/arch/arm64/boot/dts/qcom/hamoa.dtsi index 051dee076416..22420d0a323a 100644 --- a/arch/arm64/boot/dts/qcom/hamoa.dtsi +++ b/arch/arm64/boot/dts/qcom/hamoa.dtsi @@ -3952,6 +3952,8 @@ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, phys = <&ufs_mem_phy>; phy-names = "ufsphy"; + qcom,ice = <&ice>; + #reset-cells = <1>; status = "disabled"; @@ -3997,6 +3999,14 @@ opp-300000000 { }; }; + ice: crypto@1d88000 { + compatible = "qcom,x1e80100-inline-crypto-engine", + "qcom,inline-crypto-engine"; + reg = <0x0 0x01d88000 0x0 0x8000>; + + clocks = <&gcc GCC_UFS_PHY_ICE_CORE_CLK>; + }; + cryptobam: dma-controller@1dc4000 { compatible = "qcom,bam-v1.7.4", "qcom,bam-v1.7.0"; reg = <0x0 0x01dc4000 0x0 0x28000>; -- 2.53.0 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH v2 6/7] arm64: dts: qcom: hamoa: Add inline crypto for UFS 2026-05-15 5:41 ` [PATCH v2 6/7] arm64: dts: qcom: hamoa: Add inline crypto for UFS Harrison Vanderbyl @ 2026-05-15 6:24 ` sashiko-bot 0 siblings, 0 replies; 33+ messages in thread From: sashiko-bot @ 2026-05-15 6:24 UTC (permalink / raw) To: Harrison Vanderbyl Cc: devicetree, dmitry.torokhov, krzk+dt, conor+dt, linux-input, robh Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [High] The mapped register size for the `ice` (Inline Crypto Engine) node is too small, which will cause a kernel panic when Hardware Key Manager (HWKM) features are used. -- commit d49e015ad1235b81d3dc9cb4256b44b206a03560 Author: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> arm64: dts: qcom: hamoa: Add inline crypto for UFS This commit adds the Inline Crypto Engine node and wires it to ufs_mem to enable UFS storage encryption on x1e80100 and derivative SOCs. > diff --git a/arch/arm64/boot/dts/qcom/hamoa.dtsi b/arch/arm64/boot/dts/qcom/hamoa.dtsi > --- a/arch/arm64/boot/dts/qcom/hamoa.dtsi > +++ b/arch/arm64/boot/dts/qcom/hamoa.dtsi [ ... ] > @@ -3997,6 +3999,14 @@ opp-300000000 { > }; > }; > > + ice: crypto@1d88000 { > + compatible = "qcom,x1e80100-inline-crypto-engine", > + "qcom,inline-crypto-engine"; > + reg = <0x0 0x01d88000 0x0 0x8000>; Will this mapped size be large enough when hardware-wrapped keys are enabled via the Hardware Key Manager (HWKM)? When the qcom_ice driver initializes HWKM, it accesses registers at offsets that appear to exceed the 0x8000 length provided here. For example, it accesses QCOM_ICE_REG_HWKM_TZ_KM_STATUS at 0x9004, and QCOM_ICE_REG_HWKM_BANK0_BBAC_4 at 0xD010. Could reading or writing to these offsets cause a synchronous external abort and crash the kernel since they fall outside the mapped memory region? Should the size be expanded to cover the full HWKM address space, such as 0x18000, similar to the configuration on other HWKM-capable SoCs? > + > + clocks = <&gcc GCC_UFS_PHY_ICE_CORE_CLK>; > + }; -- Sashiko AI review · https://sashiko.dev/#/patchset/cover.1778822464.git.harrison.vanderbyl@gmail.com?part=6 ^ permalink raw reply [flat|nested] 33+ messages in thread
* [PATCH v2 7/7] arm64: dts: qcom: Add Microsoft Surface Pro 12in 2026-05-15 5:41 ` [PATCH v2 0/7] Add support for the Microsoft Surface Pro 12in 1st Edition (Snapdragon), Harrison Vanderbyl ` (5 preceding siblings ...) 2026-05-15 5:41 ` [PATCH v2 6/7] arm64: dts: qcom: hamoa: Add inline crypto for UFS Harrison Vanderbyl @ 2026-05-15 5:41 ` Harrison Vanderbyl 2026-05-15 6:56 ` sashiko-bot 6 siblings, 1 reply; 33+ messages in thread From: Harrison Vanderbyl @ 2026-05-15 5:41 UTC (permalink / raw) To: andersson, konradybcio, robh, krzk+dt, conor+dt, Herbert Xu, davem, neil.armstrong, maarten.lankhorst, mripard, tzimmermann, airlied, simona, jikos, bentiss, luzmaximilian, hansg, ilpo.jarvinen Cc: Douglas Anderson, Jessica Zhang, linux-arm-msm, devicetree, linux-kernel, linux-crypto, dri-devel, linux-input, platform-driver-x86 Initial device tree for Microsoft Surface Pro 12in Currently supported: - UFS - Touchscreen - Pen - USB 3.2 x2 (DP Alt Mode) - Audio - Wifi - Bluetooth - CDSP - ADSP - GPU Not currently supported: - Accelerometer - Front, Back and IR cameras - IRIS video decoder Tested on Surface_Pro_12in_1st_Ed_with_Snapdragon_2110 Signed-off-by: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> --- arch/arm64/boot/dts/qcom/Makefile | 2 + .../dts/qcom/x1p42100-microsoft-sp12in.dts | 1201 +++++++++++++++++ 2 files changed, 1203 insertions(+) create mode 100644 arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index 4ba8e7306419..8b6d3e4b479c 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -449,3 +449,5 @@ x1p42100-lenovo-thinkbook-16-el2-dtbs := x1p42100-lenovo-thinkbook-16.dtb x1-el2 dtb-$(CONFIG_ARCH_QCOM) += x1p42100-lenovo-thinkbook-16.dtb x1p42100-lenovo-thinkbook-16-el2.dtb x1p64100-microsoft-denali-el2-dtbs := x1p64100-microsoft-denali.dtb x1-el2.dtbo dtb-$(CONFIG_ARCH_QCOM) += x1p64100-microsoft-denali.dtb x1p64100-microsoft-denali-el2.dtb +x1p42100-microsoft-sp12in-el2-dtbs := x1p42100-microsoft-sp12in.dtb x1-el2.dtbo +dtb-$(CONFIG_ARCH_QCOM) += x1p42100-microsoft-sp12in.dtb x1p42100-microsoft-sp12in-el2.dtb diff --git a/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts b/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts new file mode 100644 index 000000000000..32b8df249791 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts @@ -0,0 +1,1201 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2024, Linaro Limited + * Copyright (c) 2025, Jens Glathe + * Copyright (c) 2025, Harrison Vanderbyl + */ + +/dts-v1/; + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/gpio-keys.h> +#include <dt-bindings/input/input.h> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h> +#include <dt-bindings/clock/qcom,x1e80100-tcsr.h> + +#include "purwa.dtsi" +#include "hamoa-pmics.dtsi" + +/delete-node/ &pmc8380_6; +/delete-node/ &pmc8380_6_thermal; + +/ { + model = "Surface Pro 12in 1st Edition"; + compatible = "microsoft,surface-pro-12in", "qcom,x1p42100"; + chassis-type = "tablet"; + + aliases { + serial0 = &uart2; + serial1 = &uart14; + }; + + backlight: backlight { + compatible = "pwm-backlight"; + pwms = <&pmk8550_pwm 0 5000000>; + + power-supply = <&vreg_edp_3p3>; + }; + + gpio-keys { + compatible = "gpio-keys"; + + pinctrl-0 = <&hall_int_n_default>, <&vol_up_n_default>, <&vol_down_n_default>; + pinctrl-names = "default"; + + switch-lid { + gpios = <&tlmm 2 GPIO_ACTIVE_LOW>; + linux,input-type = <EV_SW>; + linux,code = <SW_LID>; + wakeup-source; + wakeup-event-action = <EV_ACT_DEASSERTED>; + }; + + key-vol-up { + gpios = <&pm8550_gpios 8 GPIO_ACTIVE_LOW>; + linux,code = <KEY_VOLUMEUP>; + debounce-interval = <15>; + linux,can-disable; + wakeup-source; + }; + + key-vol-down { + gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>; + linux,code = <KEY_VOLUMEDOWN>; + debounce-interval = <15>; + linux,can-disable; + wakeup-source; + }; + }; + + pmic-glink { + compatible = "qcom,x1e80100-pmic-glink", + "qcom,sm8550-pmic-glink", + "qcom,pmic-glink"; + orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>, + <&tlmm 123 GPIO_ACTIVE_HIGH>; + #address-cells = <1>; + #size-cells = <0>; + + /* Right-side upper port */ + connector@0 { + compatible = "usb-c-connector"; + reg = <0>; + power-role = "dual"; + data-role = "dual"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + pmic_glink_ss0_hs_in: endpoint { + remote-endpoint = <&usb_1_ss0_dwc3_hs>; + }; + }; + + port@1 { + reg = <1>; + + pmic_glink_ss0_ss_in: endpoint { + remote-endpoint = <&usb_1_ss0_qmpphy_out>; + }; + }; + + port@2 { + reg = <2>; + + pmic_glink_ss0_sbu: endpoint { + remote-endpoint = <&usb_1_ss0_sbu_mux>; + }; + }; + }; + }; + + /* Right-side lower port */ + connector@1 { + compatible = "usb-c-connector"; + reg = <1>; + power-role = "dual"; + data-role = "dual"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + pmic_glink_ss1_hs_in: endpoint { + remote-endpoint = <&usb_1_ss1_dwc3_hs>; + }; + }; + + port@1 { + reg = <1>; + + pmic_glink_ss1_ss_in: endpoint { + remote-endpoint = <&usb_1_ss1_qmpphy_out>; + }; + }; + + port@2 { + reg = <2>; + + pmic_glink_ss1_sbu: endpoint { + remote-endpoint = <&usb_1_ss1_sbu_mux>; + }; + }; + }; + }; + }; + + reserved-memory { + linux,cma { + compatible = "shared-dma-pool"; + size = <0x0 0x20000000>; + reusable; + linux,cma-default; + }; + }; + + vreg_edp_3p3: regulator-edp-3p3 { + compatible = "regulator-fixed"; + + regulator-name = "VREG_EDP_3P3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + gpio = <&tlmm 70 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&edp_reg_en>; + pinctrl-names = "default"; + + regulator-boot-on; + vin-supply = <&vreg_panel_en>; + }; + + vreg_panel_en: regulator-panel-en { + compatible = "regulator-fixed"; + + regulator-name = "VREG_PANEL_EN"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + gpio = <&tlmm 29 GPIO_ACTIVE_HIGH>; + enable-active-high; + + regulator-enable-ramp-delay = <150000>; + + pinctrl-0 = <&panel_en>; + pinctrl-names = "default"; + + regulator-boot-on; + }; + + vph_pwr: regulator-vph-pwr { + compatible = "regulator-fixed"; + + regulator-name = "vph_pwr"; + regulator-min-microvolt = <3700000>; + regulator-max-microvolt = <3700000>; + }; + + vreg_wcn_0p95: regulator-wcn-0p95 { + compatible = "regulator-fixed"; + + regulator-name = "VREG_WCN_0P95"; + regulator-min-microvolt = <950000>; + regulator-max-microvolt = <950000>; + + vin-supply = <&vreg_wcn_3p3>; + }; + + vreg_wcn_1p9: regulator-wcn-1p9 { + compatible = "regulator-fixed"; + + regulator-name = "VREG_WCN_1P9"; + regulator-min-microvolt = <1900000>; + regulator-max-microvolt = <1900000>; + + vin-supply = <&vreg_wcn_3p3>; + }; + + vreg_wcn_3p3: regulator-wcn-3p3 { + compatible = "regulator-fixed"; + + regulator-name = "VREG_WCN_3P3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + gpio = <&tlmm 214 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&wcn_sw_en>; + pinctrl-names = "default"; + }; + + sound { + compatible = "qcom,x1e80100-sndcard"; + model = "X1P42100-Microsoft-Surface-Pro-12in"; + audio-routing = "SpkrLeft IN", "WSA WSA_SPK1 OUT", + "SpkrRight IN", "WSA WSA_SPK2 OUT", + "VA DMIC0", "vdd-micb", + "VA DMIC1", "vdd-micb"; + + va-dai-link { + link-name = "VA Capture"; + + codec { + sound-dai = <&lpass_vamacro 0>; + }; + + cpu { + sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>; + }; + + platform { + sound-dai = <&q6apm>; + }; + }; + + wsa-dai-link { + link-name = "WSA Playback"; + + codec { + sound-dai = <&left_spkr>, <&right_spkr>, + <&swr0 0>, <&lpass_wsamacro 0>; + }; + + cpu { + sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>; + }; + + platform { + sound-dai = <&q6apm>; + }; + }; + }; + + wcn7850-pmu { + compatible = "qcom,wcn7850-pmu"; + + vdd-supply = <&vreg_wcn_0p95>; + vddio-supply = <&vreg_l15b_1p8>; + vddaon-supply = <&vreg_wcn_0p95>; + vdddig-supply = <&vreg_wcn_0p95>; + vddrfa1p2-supply = <&vreg_wcn_1p9>; + vddrfa1p8-supply = <&vreg_wcn_1p9>; + + wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>; + bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>; + + pinctrl-0 = <&wcn_wlan_bt_en>; + pinctrl-names = "default"; + + regulators { + vreg_pmu_rfa_cmn: ldo0 { + regulator-name = "vreg_pmu_rfa_cmn"; + }; + + vreg_pmu_aon_0p59: ldo1 { + regulator-name = "vreg_pmu_aon_0p59"; + }; + + vreg_pmu_wlcx_0p8: ldo2 { + regulator-name = "vreg_pmu_wlcx_0p8"; + }; + + vreg_pmu_wlmx_0p85: ldo3 { + regulator-name = "vreg_pmu_wlmx_0p85"; + }; + + vreg_pmu_btcmx_0p85: ldo4 { + regulator-name = "vreg_pmu_btcmx_0p85"; + }; + + vreg_pmu_rfa_0p8: ldo5 { + regulator-name = "vreg_pmu_rfa_0p8"; + }; + + vreg_pmu_rfa_1p2: ldo6 { + regulator-name = "vreg_pmu_rfa_1p2"; + }; + + vreg_pmu_rfa_1p8: ldo7 { + regulator-name = "vreg_pmu_rfa_1p8"; + }; + + vreg_pmu_pcie_0p9: ldo8 { + regulator-name = "vreg_pmu_pcie_0p9"; + }; + + vreg_pmu_pcie_1p8: ldo9 { + regulator-name = "vreg_pmu_pcie_1p8"; + }; + }; + }; + + usb-1-ss0-sbu-mux { + compatible = "onnn,fsusb42", "gpio-sbu-mux"; + + enable-gpios = <&tlmm 168 GPIO_ACTIVE_LOW>; + select-gpios = <&tlmm 167 GPIO_ACTIVE_HIGH>; + + pinctrl-0 = <&usb_1_ss0_sbu_default>; + pinctrl-names = "default"; + + mode-switch; + orientation-switch; + + port { + usb_1_ss0_sbu_mux: endpoint { + remote-endpoint = <&pmic_glink_ss0_sbu>; + }; + }; + }; + + usb-1-ss1-sbu-mux { + compatible = "onnn,fsusb42", "gpio-sbu-mux"; + + enable-gpios = <&tlmm 179 GPIO_ACTIVE_LOW>; + select-gpios = <&tlmm 178 GPIO_ACTIVE_HIGH>; + + pinctrl-0 = <&usb_1_ss1_sbu_default>; + pinctrl-names = "default"; + + mode-switch; + orientation-switch; + + port { + usb_1_ss1_sbu_mux: endpoint { + remote-endpoint = <&pmic_glink_ss1_sbu>; + }; + }; + }; +}; + +&apps_rsc { + regulators-0 { + compatible = "qcom,pm8550-rpmh-regulators"; + qcom,pmic-id = "b"; + + vdd-bob1-supply = <&vph_pwr>; + vdd-bob2-supply = <&vph_pwr>; + vdd-l1-l4-l10-supply = <&vreg_s4c_1p8>; + vdd-l2-l13-l14-supply = <&vreg_bob1>; + vdd-l5-l16-supply = <&vreg_bob1>; + vdd-l6-l7-supply = <&vreg_bob2>; + vdd-l8-l9-supply = <&vreg_bob1>; + vdd-l12-supply = <&vreg_s5j_1p2>; + vdd-l15-supply = <&vreg_s4c_1p8>; + vdd-l17-supply = <&vreg_bob2>; + + vreg_bob1: bob1 { + regulator-name = "vreg_bob1"; + regulator-min-microvolt = <3008000>; + regulator-max-microvolt = <3960000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_bob2: bob2 { + regulator-name = "vreg_bob2"; + regulator-min-microvolt = <2504000>; + regulator-max-microvolt = <3008000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l1b_1p8: ldo1 { + regulator-name = "vreg_l1b_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2b_3p0: ldo2 { + regulator-name = "vreg_l2b_3p0"; + regulator-min-microvolt = <3072000>; + regulator-max-microvolt = <3100000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l4b_1p8: ldo4 { + regulator-name = "vreg_l4b_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l5b_3p0: ldo5 { + regulator-name = "vreg_l5b_3p0"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l6b_1p8: ldo6 { + regulator-name = "vreg_l6b_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2960000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l7b_2p8: ldo7 { + regulator-name = "vreg_l7b_2p8"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-always-on; + }; + + vreg_l8b_3p0: ldo8 { + regulator-name = "vreg_l8b_3p0"; + regulator-min-microvolt = <3072000>; + regulator-max-microvolt = <3072000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l9b_2p9: ldo9 { + regulator-name = "vreg_l9b_2p9"; + regulator-min-microvolt = <2960000>; + regulator-max-microvolt = <2960000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l10b_1p8: ldo10 { + regulator-name = "vreg_l10b_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l12b_1p2: ldo12 { + regulator-name = "vreg_l12b_1p2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l13b_3p0: ldo13 { + regulator-name = "vreg_l13b_3p0"; + regulator-min-microvolt = <3072000>; + regulator-max-microvolt = <3100000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l14b_3p0: ldo14 { + regulator-name = "vreg_l14b_3p0"; + regulator-min-microvolt = <3072000>; + regulator-max-microvolt = <3072000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l15b_1p8: ldo15 { + regulator-name = "vreg_l15b_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l16b_2p9: ldo16 { + regulator-name = "vreg_l16b_2p9"; + regulator-min-microvolt = <2900000>; + regulator-max-microvolt = <2912000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l17b_2p5: ldo17 { + regulator-name = "vreg_l17b_2p5"; + regulator-min-microvolt = <2504000>; + regulator-max-microvolt = <2504000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-1 { + compatible = "qcom,pm8550ve-rpmh-regulators"; + qcom,pmic-id = "c"; + + vdd-l1-supply = <&vreg_s5j_1p2>; + vdd-s4-supply = <&vph_pwr>; + + vreg_s4c_1p8: smps4 { + regulator-name = "vreg_s4c_1p8"; + regulator-min-microvolt = <1856000>; + regulator-max-microvolt = <2000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l1c_1p2: ldo1 { + regulator-name = "vreg_l1c_1p2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2c_0p8: ldo2 { + regulator-name = "vreg_l2c_0p8"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <920000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3c_0p8: ldo3 { + regulator-name = "vreg_l3c_0p8"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <920000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-2 { + compatible = "qcom,pmc8380-rpmh-regulators"; + qcom,pmic-id = "d"; + + vdd-l3-supply = <&vreg_s4c_1p8>; + vdd-s1-supply = <&vph_pwr>; + + vreg_l1d_0p8: ldo1 { + regulator-name = "vreg_l1d_0p8"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <920000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2d_0p9: ldo2 { + regulator-name = "vreg_l2d_0p9"; + regulator-min-microvolt = <912000>; + regulator-max-microvolt = <920000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3d_1p8: ldo3 { + regulator-name = "vreg_l3d_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-3 { + compatible = "qcom,pmc8380-rpmh-regulators"; + qcom,pmic-id = "e"; + + vdd-l3-supply = <&vreg_s5j_1p2>; + + vreg_l2e_0p8: ldo2 { + regulator-name = "vreg_l2e_0p8"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <880000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3e_1p2: ldo3 { + regulator-name = "vreg_l3e_1p2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-6 { + compatible = "qcom,pm8550ve-rpmh-regulators"; + qcom,pmic-id = "i"; + + vdd-l1-supply = <&vreg_s4c_1p8>; + vdd-l2-supply = <&vreg_s5j_1p2>; + vdd-s1-supply = <&vph_pwr>; + vdd-s2-supply = <&vph_pwr>; + + vreg_s1i_0p9: smps1 { + regulator-name = "vreg_s1i_0p9"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <920000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_s2i_1p0: smps2 { + regulator-name = "vreg_s2i_1p0"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1100000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l1i_1p8: ldo1 { + regulator-name = "vreg_l1i_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2i_1p2: ldo2 { + regulator-name = "vreg_l2i_1p2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3i_0p8: ldo3 { + regulator-name = "vreg_l3i_0p8"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <880000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-7 { + compatible = "qcom,pm8550ve-rpmh-regulators"; + qcom,pmic-id = "j"; + + vdd-l2-supply = <&vreg_s5j_1p2>; + vdd-s5-supply = <&vph_pwr>; + + vreg_s5j_1p2: smps5 { + regulator-name = "vreg_s5j_1p2"; + regulator-min-microvolt = <1256000>; + regulator-max-microvolt = <1304000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l1j_0p8: ldo1 { + regulator-name = "vreg_l1j_0p8"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <920000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2j_1p2: ldo2 { + regulator-name = "vreg_l2j_1p2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1256000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3j_0p8: ldo3 { + regulator-name = "vreg_l3j_0p8"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <880000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-allow-set-load; + regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM + RPMH_REGULATOR_MODE_HPM>; + }; + }; +}; + +&gpu { + status = "okay"; +}; + +&gpu_zap_shader { + firmware-name = "qcom/x1p42100/Microsoft/Surface12/qcdxkmsucpurwa.mbn"; +}; + +&i2c8 { + clock-frequency = <1000000>; + + status = "okay"; + + touchscreen@16 { + compatible = "hid-over-i2c"; + reg = <0x16>; + + hid-descr-addr = <0x1>; + interrupts-extended = <&tlmm 38 IRQ_TYPE_LEVEL_LOW>; + wakeup-source; + + vddl-supply = <&vreg_l15b_1p8>; + + pinctrl-0 = <&ts0_default>; + pinctrl-names = "default"; + }; +}; + +&i2c0 { + clock-frequency = <400000>; + + status = "okay"; +}; + +&i2c4 { + clock-frequency = <400000>; + + /* MAX34417 @12 */ + /* MAX34417 @14 */ + /* MAX34417 @16 */ + /* MAX34417 @18 */ + /* MAX34417 @1a */ + + status = "okay"; +}; + +&i2c9 { + clock-frequency = <400000>; + + // NFC @28, commercial devices only + + status = "okay"; +}; + +&lpass_tlmm { + spkr_01_sd_n_active: spkr-01-sd-n-active-state { + pins = "gpio12"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + output-low; + }; +}; + +&lpass_vamacro { + qcom,dmic-sample-rate = <4800000>; + + vdd-micb-supply = <&vreg_l1b_1p8>; + + pinctrl-0 = <&dmic01_default>; + pinctrl-names = "default"; +}; + +&mdss { + status = "okay"; +}; + +&mdss_dp0 { + status = "okay"; +}; + +&mdss_dp0_out { + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; +}; + +&mdss_dp1 { + status = "okay"; +}; + +&mdss_dp1_out { + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; +}; + +&mdss_dp3 { + /delete-property/ #sound-dai-cells; + + pinctrl-0 = <&edp0_hpd_default>; + pinctrl-names = "default"; + + status = "okay"; + + aux-bus { + panel: panel { + compatible = "edp-panel"; + + backlight = <&backlight>; + + power-supply = <&vreg_edp_3p3>; + + port { + edp_panel_in: endpoint { + remote-endpoint = <&mdss_dp3_out>; + }; + }; + }; + }; + + ports { + port@1 { + reg = <1>; + + mdss_dp3_out: endpoint { + data-lanes = <0 1 2 3>; + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; + + remote-endpoint = <&edp_panel_in>; + }; + }; + }; +}; + +&mdss_dp3_phy { + vdda-phy-supply = <&vreg_l3j_0p8>; + vdda-pll-supply = <&vreg_l2j_1p2>; + + status = "okay"; +}; + +&pcie4 { + pinctrl-0 = <&pcie4_default>; + pinctrl-names = "default"; + + status = "okay"; +}; + +&pcie4_phy { + vdda-phy-supply = <&vreg_l3i_0p8>; + vdda-pll-supply = <&vreg_l3e_1p2>; + + status = "okay"; +}; + +&pcie4_port0 { + reset-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>; + wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>; + + wifi@0 { + compatible = "pci17cb,1107"; + reg = <0x10000 0x0 0x0 0x0 0x0>; + + vddaon-supply = <&vreg_pmu_aon_0p59>; + vddwlcx-supply = <&vreg_pmu_wlcx_0p8>; + vddwlmx-supply = <&vreg_pmu_wlmx_0p85>; + vddrfacmn-supply = <&vreg_pmu_rfa_cmn>; + vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>; + vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>; + vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>; + vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>; + vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>; + }; +}; + +&pm8550_gpios { + vol_up_n_default: vol-up-n-state { + pins = "gpio8"; + function = "normal"; + power-source = <1>; + bias-pull-up; + input-enable; + }; + + vol_down_n_default: vol-down-n-state { + pins = "gpio6"; + function = "normal"; + power-source = <1>; + bias-pull-up; + input-enable; + }; +}; + +&pmk8550_pwm { + status = "okay"; +}; + +&qupv3_0 { + status = "okay"; +}; + +&qupv3_1 { + status = "okay"; +}; + +&qupv3_2 { + status = "okay"; +}; + +&remoteproc_adsp { + firmware-name = "qcom/x1p42100/Microsoft/Surface12/qcadsp8380.mbn", + "qcom/x1p42100/Microsoft/Surface12/adsp_dtbs.elf"; + + status = "okay"; +}; + +&remoteproc_cdsp { + firmware-name = "qcom/x1p42100/Microsoft/Surface12/qccdsp8380.mbn", + "qcom/x1p42100/Microsoft/Surface12/cdsp_dtbs.elf"; + + status = "okay"; +}; + +&smb2360_0 { + status = "okay"; +}; + +&smb2360_0_eusb2_repeater { + vdd18-supply = <&vreg_l3d_1p8>; + vdd3-supply = <&vreg_l2b_3p0>; +}; + +&smb2360_1 { + status = "okay"; +}; + +&smb2360_1_eusb2_repeater { + vdd18-supply = <&vreg_l3d_1p8>; + vdd3-supply = <&vreg_l14b_3p0>; +}; + +&swr0 { + pinctrl-0 = <&wsa_swr_active>, <&spkr_01_sd_n_active>; + pinctrl-names = "default"; + + status = "okay"; + + /* WSA8845, Left speaker */ + left_spkr: speaker@0,0 { + compatible = "sdw20217020400"; + reg = <0 0>; + reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>; + #sound-dai-cells = <0>; + sound-name-prefix = "SpkrLeft"; + vdd-1p8-supply = <&vreg_l15b_1p8>; + vdd-io-supply = <&vreg_l12b_1p2>; + qcom,port-mapping = <1 2 3 7 10 13>; + }; + + /* WSA8845, Right speaker */ + right_spkr: speaker@0,1 { + compatible = "sdw20217020400"; + reg = <0 1>; + reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>; + #sound-dai-cells = <0>; + sound-name-prefix = "SpkrRight"; + vdd-1p8-supply = <&vreg_l15b_1p8>; + vdd-io-supply = <&vreg_l12b_1p2>; + qcom,port-mapping = <4 5 6 7 11 13>; + }; +}; + +&tlmm { + gpio-reserved-ranges = <34 2>, /* Unused */ + <44 4>; /* SPI (TPM) */ + + edp_reg_en: edp-reg-en-state { + pins = "gpio70"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + hall_int_n_default: hall-int-n-state { + pins = "gpio2"; + function = "gpio"; + bias-disable; + }; + + panel_en: panel-en-state { + pins = "gpio29"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + pcie4_default: pcie4-default-state { + clkreq-n-pins { + pins = "gpio147"; + function = "pcie4_clk"; + drive-strength = <2>; + bias-pull-up; + }; + + perst-n-pins { + pins = "gpio146"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + wake-n-pins { + pins = "gpio148"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + }; + + ssam_state: ssam-state-state { + pins = "gpio91"; + function = "gpio"; + bias-disable; + }; + + ts0_default: ts0-default-state { + int-n-pins { + pins = "gpio38"; + function = "gpio"; + bias-disable; + }; + + reset-n-pins { + pins = "gpio48"; + function = "gpio"; + output-high; + drive-strength = <16>; + }; + }; + + wcn_sw_en: wcn-sw-en-state { + pins = "gpio214"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + wcn_wlan_bt_en: wcn-wlan-bt-en-state { + pins = "gpio116", "gpio117"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + usb_1_ss0_sbu_default: usb-1-ss0-sbu-state { + oe-n-pins { + pins = "gpio168"; + function = "gpio"; + bias-disable; + drive-strength = <2>; + }; + + sel-pins { + pins = "gpio167"; + function = "gpio"; + bias-disable; + drive-strength = <2>; + }; + + }; + + usb_1_ss1_sbu_default: usb-1-ss1-sbu-state { + oe-n-pins { + pins = "gpio179"; + function = "gpio"; + bias-disable; + drive-strength = <2>; + }; + + sel-pins { + pins = "gpio178"; + function = "gpio"; + bias-disable; + drive-strength = <2>; + }; + }; +}; + +&uart2 { + status = "okay"; + + embedded-controller { + compatible = "microsoft,surface-sam"; + + interrupts-extended = <&tlmm 91 IRQ_TYPE_EDGE_RISING>; + + current-speed = <4000000>; + + pinctrl-0 = <&ssam_state>; + pinctrl-names = "default"; + }; +}; + +&uart14 { + status = "okay"; + + bluetooth { + compatible = "qcom,wcn7850-bt"; + max-speed = <3200000>; + + vddaon-supply = <&vreg_pmu_aon_0p59>; + vddwlcx-supply = <&vreg_pmu_wlcx_0p8>; + vddwlmx-supply = <&vreg_pmu_wlmx_0p85>; + vddrfacmn-supply = <&vreg_pmu_rfa_cmn>; + vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>; + vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>; + vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>; + }; +}; + +&ufs_mem_hc { + vcc-supply = <&vreg_l17b_2p5>; + vcc-max-microamp = <800000>; + vccq-supply = <&vreg_l2i_1p2>; + vccq-max-microamp = <900000>; + + vdd-hba-supply = <&vreg_l3j_0p8>; + + status = "okay"; +}; + +&ufs_mem_phy { + status = "okay"; + + vdda-phy-supply = <&vreg_l3i_0p8>; + vdda-pll-supply = <&vreg_l3e_1p2>; +}; + +&usb_1_ss0_hsphy { + vdd-supply = <&vreg_l3j_0p8>; + vdda12-supply = <&vreg_l2j_1p2>; + + phys = <&smb2360_0_eusb2_repeater>; + + status = "okay"; +}; + +&usb_1_ss0_qmpphy { + vdda-phy-supply = <&vreg_l2j_1p2>; + vdda-pll-supply = <&vreg_l1j_0p8>; + + status = "okay"; +}; + +&usb_1_ss0 { + dr_mode = "host"; + + status = "okay"; +}; + +&usb_1_ss0_dwc3_hs { + remote-endpoint = <&pmic_glink_ss0_hs_in>; +}; + +&usb_1_ss0_qmpphy_out { + remote-endpoint = <&pmic_glink_ss0_ss_in>; +}; + +&usb_1_ss1_hsphy { + vdd-supply = <&vreg_l3j_0p8>; + vdda12-supply = <&vreg_l2j_1p2>; + + phys = <&smb2360_1_eusb2_repeater>; + + status = "okay"; +}; + +&usb_1_ss1_qmpphy { + vdda-phy-supply = <&vreg_l2j_1p2>; + vdda-pll-supply = <&vreg_l2d_0p9>; + + status = "okay"; +}; + +&usb_1_ss1 { + dr_mode = "host"; + + status = "okay"; +}; + +&usb_1_ss1_dwc3_hs { + remote-endpoint = <&pmic_glink_ss1_hs_in>; +}; + +&usb_1_ss1_qmpphy_out { + remote-endpoint = <&pmic_glink_ss1_ss_in>; +}; -- 2.53.0 ^ permalink raw reply related [flat|nested] 33+ messages in thread
* Re: [PATCH v2 7/7] arm64: dts: qcom: Add Microsoft Surface Pro 12in 2026-05-15 5:41 ` [PATCH v2 7/7] arm64: dts: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl @ 2026-05-15 6:56 ` sashiko-bot 0 siblings, 0 replies; 33+ messages in thread From: sashiko-bot @ 2026-05-15 6:56 UTC (permalink / raw) To: Harrison Vanderbyl Cc: krzk+dt, devicetree, robh, dmitry.torokhov, linux-input, conor+dt Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [High] Device Tree and Driver mismatch for WSA8845 speaker reset GPIO - [Low] Incorrect indentation in `&pm8550_gpios` node -- commit 0876a51b5a0549c867accb3d391daa4e0f3c28b3 Author: Harrison Vanderbyl <harrison.vanderbyl@gmail.com> arm64: dts: qcom: Add Microsoft Surface Pro 12in This commit introduces the initial device tree for the Microsoft Surface Pro 12in, adding support for various peripherals including UFS, touchscreen, USB, audio, Wi-Fi, and Bluetooth. > diff --git a/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts b/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts > new file mode 100644 > index 0000000000000..32b8df2497913 > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts [ ... ] > +&pm8550_gpios { > + vol_up_n_default: vol-up-n-state { > + pins = "gpio8"; > + function = "normal"; > + power-source = <1>; > + bias-pull-up; > + input-enable; > + }; > + > + vol_down_n_default: vol-down-n-state { This isn't a bug, but should these subnodes be indented with a hardware tab instead of spaces to match standard device tree coding guidelines? [ ... ] > +&swr0 { > + pinctrl-0 = <&wsa_swr_active>, <&spkr_01_sd_n_active>; > + pinctrl-names = "default"; > + > + status = "okay"; > + > + /* WSA8845, Left speaker */ > + left_spkr: speaker@0,0 { > + compatible = "sdw20217020400"; > + reg = <0 0>; > + reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>; Will this prevent the speakers from enumerating on the SoundWire bus? Looking at the WSA884x codec driver in sound/soc/codecs/wsa884x.c, it requests this GPIO by the name "powerdown": devm_gpiod_get_optional(dev, "powerdown", ...) Because the driver looks for the powerdown-gpios property, it will fail to acquire the GPIO named reset-gpios here. Concurrently, the pinctrl state spkr_01_sd_n_active drives this pin output-low, asserting the active-low reset. Since the driver never releases the reset, the speakers will stay powered down and audio playback will fail. Should this property be renamed to powerdown-gpios? > + #sound-dai-cells = <0>; > + sound-name-prefix = "SpkrLeft"; > + vdd-1p8-supply = <&vreg_l15b_1p8>; > + vdd-io-supply = <&vreg_l12b_1p2>; > + qcom,port-mapping = <1 2 3 7 10 13>; > + }; > + > + /* WSA8845, Right speaker */ > + right_spkr: speaker@0,1 { > + compatible = "sdw20217020400"; > + reg = <0 1>; > + reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>; Does this speaker node have the same naming issue where it should use powerdown-gpios instead of reset-gpios? -- Sashiko AI review · https://sashiko.dev/#/patchset/cover.1778822464.git.harrison.vanderbyl@gmail.com?part=7 ^ permalink raw reply [flat|nested] 33+ messages in thread
end of thread, other threads:[~2026-05-15 7:04 UTC | newest] Thread overview: 33+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-05-11 14:40 [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon) Harrison Vanderbyl 2026-05-11 14:40 ` [PATCH v1 1/8] dt-bindings: arm: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl 2026-05-11 14:40 ` [PATCH v1 2/8] dt-bindings: crypto: Add x1e80100 inline crypto Harrison Vanderbyl 2026-05-11 14:40 ` [PATCH v1 3/8] platform/surface: SAM: Add support for Surface Pro 12in Harrison Vanderbyl 2026-05-11 14:40 ` [PATCH v1 4/8] firmware: qcom: scm: Allow QSEECOM on " Harrison Vanderbyl 2026-05-12 18:44 ` Dmitry Baryshkov 2026-05-11 14:40 ` [PATCH v1 5/8] hid: Pen battery quirk for " Harrison Vanderbyl 2026-05-12 6:07 ` sashiko-bot 2026-05-12 16:15 ` Jiri Kosina 2026-05-11 14:40 ` [PATCH v1 6/8] drm/panel-edp: Add panel " Harrison Vanderbyl 2026-05-11 15:13 ` Doug Anderson 2026-05-11 19:38 ` Dmitry Baryshkov 2026-05-11 14:40 ` [PATCH v1 7/8] arm64: dts: qcom: hamoa: Add inline crypto for UFS Harrison Vanderbyl 2026-05-12 17:54 ` Dmitry Baryshkov 2026-05-11 14:40 ` [PATCH v1 8/8] arm64: dts: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl 2026-05-12 18:44 ` Dmitry Baryshkov 2026-05-12 21:23 ` sashiko-bot 2026-05-13 15:09 ` Konrad Dybcio 2026-05-13 19:08 ` (subset) [PATCH v1 0/8] Add support for Microsoft Surface Pro 12in 1st Edition (Snapdragon) Bjorn Andersson 2026-05-15 5:41 ` [PATCH v2 0/7] Add support for the Microsoft Surface Pro 12in 1st Edition (Snapdragon), Harrison Vanderbyl 2026-05-15 5:41 ` [PATCH v2 1/7] dt-bindings: arm: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl 2026-05-15 7:03 ` Krzysztof Kozlowski 2026-05-15 5:41 ` [PATCH v2 2/7] dt-bindings: crypto: Add x1e80100 inline crypto Harrison Vanderbyl 2026-05-15 7:04 ` Krzysztof Kozlowski 2026-05-15 5:41 ` [PATCH v2 3/7] platform/surface: SAM: Add support for Surface Pro 12in Harrison Vanderbyl 2026-05-15 6:02 ` sashiko-bot 2026-05-15 5:41 ` [PATCH v2 4/7] hid: Pen battery quirk " Harrison Vanderbyl 2026-05-15 6:12 ` sashiko-bot 2026-05-15 5:41 ` [PATCH v2 5/7] drm/panel-edp: Add panel " Harrison Vanderbyl 2026-05-15 5:41 ` [PATCH v2 6/7] arm64: dts: qcom: hamoa: Add inline crypto for UFS Harrison Vanderbyl 2026-05-15 6:24 ` sashiko-bot 2026-05-15 5:41 ` [PATCH v2 7/7] arm64: dts: qcom: Add Microsoft Surface Pro 12in Harrison Vanderbyl 2026-05-15 6:56 ` sashiko-bot
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.