* Re: [PATCH v2 1/3] dt-bindings: display: msm: qcm2290: Add Shikra MDSS
From: Krzysztof Kozlowski @ 2026-06-04 12:51 UTC (permalink / raw)
To: Nabige Aala, Rob Clark, Dmitry Baryshkov, Abhinav Kumar,
Jessica Zhang, Sean Paul, Marijn Suijten, David Airlie,
Simona Vetter, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Krishna Manikandan, Loic Poulain, Bjorn Andersson, Konrad Dybcio,
Will Deacon, Robin Murphy, Joerg Roedel (AMD)
Cc: linux-arm-msm, dri-devel, freedreno, devicetree, linux-kernel,
iommu, linux-arm-kernel
In-Reply-To: <20260604-shikra-display-v2-1-b3c1b2b67edc@oss.qualcomm.com>
On 04/06/2026 14:30, Nabige Aala wrote:
>
> +select:
> + properties:
> + compatible:
> + contains:
> + enum:
> + - qcom,qcm2290-mdss
> + required:
> + - compatible
Why do you need this select? None of the bindings have it, I think.
> +
> properties:
> compatible:
> - const: qcom,qcm2290-mdss
> + oneOf:
> + - const: qcom,qcm2290-mdss
Best regards,
Krzysztof
^ permalink raw reply
* Re: [PATCH 1/3] dt-bindings: soc: realtek: Add Realtek DHC I/O level detector
From: Krzysztof Kozlowski @ 2026-06-04 12:49 UTC (permalink / raw)
To: Yu-Chun Lin, robh, krzk+dt, conor+dt, tychang
Cc: cy.huang, stanley_chang, james.tai, afaerber, devicetree,
linux-kernel, linux-arm-kernel, linux-realtek-soc
In-Reply-To: <20260604111821.975624-2-eleanor.lin@realtek.com>
On 04/06/2026 13:18, Yu-Chun Lin wrote:
> From: Tzuyi Chang <tychang@realtek.com>
>
> Add device tree binding documentation for the Realtek DHC I/O level
> detector.
>
> This hardware block is responsible for detecting the I/O signaling
> levels (e.g., 1.8V or 3.3V) of various interfaces (RGMII, SDIO, eMMC,
> etc.) and applying the corresponding pad configurations via pinctrl
> states.
>
> Signed-off-by: Tzuyi Chang <tychang@realtek.com>
> Signed-off-by: Yu-Chun Lin <eleanor.lin@realtek.com>
> ---
> .../realtek/realtek,rtd1625-io-detect.yaml | 77 +++++++++++++++++++
> 1 file changed, 77 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/soc/realtek/realtek,rtd1625-io-detect.yaml
>
> diff --git a/Documentation/devicetree/bindings/soc/realtek/realtek,rtd1625-io-detect.yaml b/Documentation/devicetree/bindings/soc/realtek/realtek,rtd1625-io-detect.yaml
> new file mode 100644
> index 000000000000..badf27212dfd
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/soc/realtek/realtek,rtd1625-io-detect.yaml
> @@ -0,0 +1,77 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +# Copyright 2026 Realtek Semiconductor Corporation
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/soc/realtek/realtek,rtd1625-io-detect.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Realtek DHC I/O Level Detector
> +
> +maintainers:
> + - Tzuyi Chang <tychang@realtek.com>
> +
> +description: |
Drop |
> + The Realtek DHC I/O Level Detector is a hardware block that detects I/O
> + signaling levels (such as 1.8V or 3.3V) to determine the correct pad
> + configurations for specific IP blocks.
> +
> +properties:
> + compatible:
> + const: realtek,rtd1625-io-detect
> +
No resources here, so does not look like a real device, but driver
instantiation.
> + pinctrl-names:
> + items:
> + - const: rgmii_1v8
> + - const: rgmii_3v3
> + - const: sdio_1v8
> + - const: sdio_3v3
> + - const: csi_1v8
> + - const: csi_3v3
> + - const: sd_1v8
> + - const: sd_3v3
> + - const: uart1_1v8
> + - const: uart1_3v3
> + - const: aio_1v8
> + - const: aio_3v3
> + - const: emmc_1v8
> + - const: emmc_3v3
> +
> + realtek,iso-pinctrl:
> + $ref: /schemas/types.yaml#/definitions/phandle
> + description:
> + Pinctrl phandle containing I/O detection registers.
MMIO registers are in 'reg' property.
> +
> +required:
> + - compatible
> + - pinctrl-names
> + - realtek,iso-pinctrl
Best regards,
Krzysztof
^ permalink raw reply
* Re: [PATCH v1 1/3] dt-bindings: arm: sunxi: Add NetCube Systems OpenNMC (dobermann)
From: Krzysztof Kozlowski @ 2026-06-04 12:46 UTC (permalink / raw)
To: Lukas Schmid, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Chen-Yu Tsai, Jernej Skrabec, Samuel Holland, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Alexandre Ghiti, Maxime Ripard
Cc: devicetree, linux-arm-kernel, linux-sunxi, linux-kernel,
linux-riscv
In-Reply-To: <20260604115241.1358528-2-lukas.schmid@netcube.li>
On 04/06/2026 13:52, Lukas Schmid wrote:
> The OpenNMC is an open replacement for APC SmartSlot management cards
> based on the Nagami System-on-Module.
>
> Signed-off-by: Lukas Schmid <lukas.schmid@netcube.li>
> ---
> Documentation/devicetree/bindings/arm/sunxi.yaml | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/Documentation/devicetree/bindings/arm/sunxi.yaml b/Documentation/devicetree/bindings/arm/sunxi.yaml
> index e6443c266fa1..8e2c9b8fe121 100644
> --- a/Documentation/devicetree/bindings/arm/sunxi.yaml
> +++ b/Documentation/devicetree/bindings/arm/sunxi.yaml
> @@ -600,6 +600,7 @@ properties:
> - enum:
> - netcube,nagami-basic-carrier
> - netcube,nagami-keypad-carrier
> + - netcube,dobermann
Don't break alphabetical order.
Best regards,
Krzysztof
^ permalink raw reply
* [PATCH] drm/rockchip: dsi: Open-code drm_simple_encoder_init()
From: Diogo Silva @ 2026-06-04 12:32 UTC (permalink / raw)
To: Sandy Huang, Heiko Stübner, Andy Yan
Cc: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, dri-devel, linux-arm-kernel, linux-rockchip,
linux-kernel, Diogo Silva
Remove the dependency on drm_simple_kms_helper by open-coding the
drm_simple_encoder_init call.
Signed-off-by: Diogo Silva <diogompaissilva@gmail.com>
---
drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c
index 3547d91b25d3..a09b382d208e 100644
--- a/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c
+++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c
@@ -25,7 +25,6 @@
#include <drm/drm_mipi_dsi.h>
#include <drm/drm_of.h>
#include <drm/drm_print.h>
-#include <drm/drm_simple_kms_helper.h>
#include "rockchip_drm_drv.h"
@@ -825,6 +824,10 @@ static void dw_mipi_dsi_encoder_enable(struct drm_encoder *encoder)
clk_disable_unprepare(dsi->grf_clk);
}
+static const struct drm_encoder_funcs dw_mipi_dsi_encoder_funcs = {
+ .destroy = drm_encoder_cleanup,
+};
+
static const struct drm_encoder_helper_funcs
dw_mipi_dsi_encoder_helper_funcs = {
.atomic_check = dw_mipi_dsi_encoder_atomic_check,
@@ -840,7 +843,9 @@ static int rockchip_dsi_drm_create_encoder(struct dw_mipi_dsi_rockchip *dsi,
encoder->possible_crtcs = drm_of_find_possible_crtcs(drm_dev,
dsi->dev->of_node);
- ret = drm_simple_encoder_init(drm_dev, encoder, DRM_MODE_ENCODER_DSI);
+ ret = drm_encoder_init(drm_dev, encoder,
+ &dw_mipi_dsi_encoder_funcs,
+ DRM_MODE_ENCODER_DSI, NULL);
if (ret) {
DRM_ERROR("Failed to initialize encoder with drm\n");
return ret;
--
2.51.2
^ permalink raw reply related
* [PATCH v2 3/3] soc: qcom: ubwc: Add Shikra UBWC config
From: Nabige Aala @ 2026-06-04 12:30 UTC (permalink / raw)
To: Rob Clark, Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang,
Sean Paul, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Krishna Manikandan,
Loic Poulain, Bjorn Andersson, Konrad Dybcio, Will Deacon,
Robin Murphy, Joerg Roedel (AMD)
Cc: linux-arm-msm, dri-devel, freedreno, devicetree, linux-kernel,
iommu, linux-arm-kernel, Nabige Aala
In-Reply-To: <20260604-shikra-display-v2-0-b3c1b2b67edc@oss.qualcomm.com>
Add UBWC configuration for the Shikra platform. Shikra shares the
same hardware as QCM2290 (Agatti), so reuse qcm2290_data for the
UBWC settings
Signed-off-by: Nabige Aala <nabige.aala@oss.qualcomm.com>
---
drivers/soc/qcom/ubwc_config.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/soc/qcom/ubwc_config.c b/drivers/soc/qcom/ubwc_config.c
index 3fe47d8f0f63..1a2e54c6480d 100644
--- a/drivers/soc/qcom/ubwc_config.c
+++ b/drivers/soc/qcom/ubwc_config.c
@@ -278,6 +278,7 @@ static const struct of_device_id qcom_ubwc_configs[] __maybe_unused = {
{ .compatible = "qcom,sdm660", .data = &msm8937_data },
{ .compatible = "qcom,sdm670", .data = &sdm670_data, },
{ .compatible = "qcom,sdm845", .data = &sdm845_data, },
+ { .compatible = "qcom,shikra", .data = &qcm2290_data, },
{ .compatible = "qcom,sm4250", .data = &sm6115_data, },
{ .compatible = "qcom,sm6115", .data = &sm6115_data, },
{ .compatible = "qcom,sm6125", .data = &sm6125_data, },
--
2.34.1
^ permalink raw reply related
* [PATCH v2 2/3] arm64: defconfig: Enable ILI7807S DSI panel driver
From: Nabige Aala @ 2026-06-04 12:30 UTC (permalink / raw)
To: Rob Clark, Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang,
Sean Paul, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Krishna Manikandan,
Loic Poulain, Bjorn Andersson, Konrad Dybcio, Will Deacon,
Robin Murphy, Joerg Roedel (AMD)
Cc: linux-arm-msm, dri-devel, freedreno, devicetree, linux-kernel,
iommu, linux-arm-kernel, Nabige Aala
In-Reply-To: <20260604-shikra-display-v2-0-b3c1b2b67edc@oss.qualcomm.com>
Enable the ILI7807S 1080x1920 video-mode DSI panel driver as a module,
used on the Shikra CQM EVK board.
Signed-off-by: Nabige Aala <nabige.aala@oss.qualcomm.com>
---
arch/arm64/configs/defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index 909f3c188e75..a6d72ff63e57 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -1005,6 +1005,7 @@ CONFIG_DRM_MXSFB=m
CONFIG_DRM_IMX_LCDIF=m
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_PANEL_BOE_TV101WUM_NL6=m
+CONFIG_DRM_PANEL_ILITEK_ILI7807S=m
CONFIG_DRM_PANEL_LVDS=m
CONFIG_DRM_PANEL_HIMAX_HX8279=m
CONFIG_DRM_PANEL_HIMAX_HX83112A=m
--
2.34.1
^ permalink raw reply related
* [PATCH v2 1/3] dt-bindings: display: msm: qcm2290: Add Shikra MDSS
From: Nabige Aala @ 2026-06-04 12:30 UTC (permalink / raw)
To: Rob Clark, Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang,
Sean Paul, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Krishna Manikandan,
Loic Poulain, Bjorn Andersson, Konrad Dybcio, Will Deacon,
Robin Murphy, Joerg Roedel (AMD)
Cc: linux-arm-msm, dri-devel, freedreno, devicetree, linux-kernel,
iommu, linux-arm-kernel, Nabige Aala
In-Reply-To: <20260604-shikra-display-v2-0-b3c1b2b67edc@oss.qualcomm.com>
Shikra SoC uses the same MDSS/DPU/DSI hardware as QCM2290 (DPU 6.5),
sharing the same register layout, DSI controller and 14nm DSI PHY.
Add qcom,shikra-mdss to the qcm2290-mdss binding compatible enum
rather than introducing a separate binding file.
Register qcom,shikra-dsi-ctrl in dsi-controller-main.yaml alongside
qcom,qcm2290-dsi-ctrl, and update the qcm2290-mdss patternProperties
to accept both SoC-specific DPU and DSI controller compatibles.
Signed-off-by: Nabige Aala <nabige.aala@oss.qualcomm.com>
---
.../bindings/display/msm/dsi-controller-main.yaml | 1 +
.../bindings/display/msm/qcom,qcm2290-dpu.yaml | 7 ++--
.../bindings/display/msm/qcom,qcm2290-mdss.yaml | 38 ++++++++++++++++++----
3 files changed, 37 insertions(+), 9 deletions(-)
diff --git a/Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml b/Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml
index dbc0613e427e..a2f3e91104af 100644
--- a/Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml
+++ b/Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml
@@ -33,6 +33,7 @@ properties:
- qcom,sdm660-dsi-ctrl
- qcom,sdm670-dsi-ctrl
- qcom,sdm845-dsi-ctrl
+ - qcom,shikra-dsi-ctrl
- qcom,sm6115-dsi-ctrl
- qcom,sm6125-dsi-ctrl
- qcom,sm6150-dsi-ctrl
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-dpu.yaml b/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-dpu.yaml
index be6cd8adb3b6..e166a73651df 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-dpu.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-dpu.yaml
@@ -13,8 +13,11 @@ $ref: /schemas/display/msm/dpu-common.yaml#
properties:
compatible:
- const: qcom,qcm2290-dpu
-
+ oneOf:
+ - const: qcom,qcm2290-dpu
+ - items:
+ - const: qcom,shikra-dpu
+ - const: qcom,qcm2290-dpu
reg:
items:
- description: Address offset and size for mdp register set
diff --git a/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml b/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml
index bb09ecd1a5b4..7184b09a8774 100644
--- a/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml
+++ b/Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml
@@ -4,21 +4,36 @@
$id: http://devicetree.org/schemas/display/msm/qcom,qcm2290-mdss.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
-title: Qualcomm QCM220 Display MDSS
+title: Qualcomm QCM2290 and Shikra Display MDSS
maintainers:
- Loic Poulain <loic.poulain@linaro.org>
+ - Nabige Aala <nabige.aala@oss.qualcomm.com>
description:
Device tree bindings for MSM Mobile Display Subsystem(MDSS) that encapsulates
sub-blocks like DPU display controller and DSI. Device tree bindings of MDSS
- are mentioned for QCM2290 target.
+ are mentioned for QCM2290 and Shikra targets. Shikra uses the same MDSS/DPU/DSI
+ hardware as QCM2290 (DPU 6.5) and shares the same register layout.
$ref: /schemas/display/msm/mdss-common.yaml#
+select:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - qcom,qcm2290-mdss
+ required:
+ - compatible
+
properties:
compatible:
- const: qcom,qcm2290-mdss
+ oneOf:
+ - const: qcom,qcm2290-mdss
+ - items:
+ - const: qcom,shikra-mdss
+ - const: qcom,qcm2290-mdss
clocks:
items:
@@ -52,7 +67,11 @@ patternProperties:
properties:
compatible:
- const: qcom,qcm2290-dpu
+ oneOf:
+ - const: qcom,qcm2290-dpu
+ - items:
+ - const: qcom,shikra-dpu
+ - const: qcom,qcm2290-dpu
"^dsi@[0-9a-f]+$":
type: object
@@ -60,9 +79,14 @@ patternProperties:
properties:
compatible:
- items:
- - const: qcom,qcm2290-dsi-ctrl
- - const: qcom,mdss-dsi-ctrl
+ oneOf:
+ - items:
+ - const: qcom,qcm2290-dsi-ctrl
+ - const: qcom,mdss-dsi-ctrl
+ - items:
+ - const: qcom,shikra-dsi-ctrl
+ - const: qcom,qcm2290-dsi-ctrl
+ - const: qcom,mdss-dsi-ctrl
"^phy@[0-9a-f]+$":
type: object
--
2.34.1
^ permalink raw reply related
* [PATCH v2 0/3] Subject: [PATCH 0/3] Add Shikra (QCM2390) display support
From: Nabige Aala @ 2026-06-04 12:30 UTC (permalink / raw)
To: Rob Clark, Dmitry Baryshkov, Abhinav Kumar, Jessica Zhang,
Sean Paul, Marijn Suijten, David Airlie, Simona Vetter,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Krishna Manikandan,
Loic Poulain, Bjorn Andersson, Konrad Dybcio, Will Deacon,
Robin Murphy, Joerg Roedel (AMD)
Cc: linux-arm-msm, dri-devel, freedreno, devicetree, linux-kernel,
iommu, linux-arm-kernel, Nabige Aala
Shikra (QCM2390) is a Qualcomm SoC based on the QCM2290 family that
reuses the same MDSS/DPU 6.5 hardware as QCM2290. This series enables
the display subsystem for Shikra by adding DT binding updates for MDSS,
DSI controller and DPU, arm64 defconfig enablement for the ILI7807S DSI
panel, and UBWC configuration mapping Shikra to qcm2290_data.
Driver and SMMU support are covered by the existing qcom,qcm2290-mdss
fallback compatible string — no separate drm/msm or IOMMU patches are
required.
Tested on Shikra CQM EVK board with ILI7807S DSI panel. Display
pipeline probes cleanly and panel renders correctly.
Signed-off-by: Nabige Aala <nabige.aala@oss.qualcomm.com>
---
Nabige Aala (3):
dt-bindings: display: msm: qcm2290: Add Shikra MDSS
arm64: defconfig: Enable ILI7807S DSI panel driver
soc: qcom: ubwc: Add Shikra UBWC config
Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml | 1 +
Documentation/devicetree/bindings/display/msm/qcom,qcm2290-dpu.yaml | 4 +++-
Documentation/devicetree/bindings/display/msm/qcom,qcm2290-mdss.yaml | 34 +++++++++++++++++++++++++++-------
arch/arm64/configs/defconfig | 1 +
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 1 +
drivers/soc/qcom/ubwc_config.c | 1 +
5 files changed, 33 insertions(+), 8 deletions(-)
---
Prerequisite-Message-Id: <20260518-ili7807s-panel-v1-0-d7b048163b1c@oss.qualcomm.com>
---
Changes in v2:
- Drop drm/msm/mdss: Shikra support patch; driver reuse is handled via
the qcom,qcm2290-mdss fallback compatible string (per Dmitry's review)
- Drop iommu/arm-smmu: Shikra SMMU client table patch; not required with
fallback compatible approach
- Fix UBWC config to map qcom,shikra to qcm2290_data instead of
no_ubwc_data; Shikra shares UBWC support with QCM2290
- Refactor series from 5 patches to 3 patches
- Link to v1: https://patch.msgid.link/20260603-shikra-display-v1-0-aeac1b94faa7@oss.qualcomm.com
---
Nabige Aala (3):
dt-bindings: display: msm: qcm2290: Add Shikra MDSS
arm64: defconfig: Enable ILI7807S DSI panel driver
soc: qcom: ubwc: Add Shikra UBWC config
.../bindings/display/msm/dsi-controller-main.yaml | 1 +
.../bindings/display/msm/qcom,qcm2290-dpu.yaml | 7 ++--
.../bindings/display/msm/qcom,qcm2290-mdss.yaml | 38 ++++++++++++++++++----
arch/arm64/configs/defconfig | 1 +
drivers/soc/qcom/ubwc_config.c | 1 +
5 files changed, 39 insertions(+), 9 deletions(-)
---
base-commit: 3a34f9c13cc0688f8db2a0db8506bf8c0d90737d
change-id: 20260603-shikra-display-07767208fa90
Best regards,
--
Nabige Aala <nabige.aala@oss.qualcomm.com>
^ permalink raw reply
* Re: [PATCH v8 5/5] arm64: defconfig: enable Exynos ACPM thermal support
From: Peter Griffin @ 2026-06-04 12:25 UTC (permalink / raw)
To: Tudor Ambarus
Cc: Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba,
Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Kees Cook,
Gustavo A. R. Silva, André Draszik, Alim Akhtar, jyescas,
linux-kernel, linux-samsung-soc, linux-pm, devicetree,
linux-hardening, linux-arm-kernel
In-Reply-To: <20260603-acpm-tmu-v8-5-0f1810a356e6@linaro.org>
On Wed, 3 Jun 2026 at 14:00, Tudor Ambarus <tudor.ambarus@linaro.org> wrote:
>
> Enable the Exynos ACPM thermal driver (CONFIG_EXYNOS_ACPM_THERMAL)
> to allow temperature monitoring and thermal management on Samsung
> Exynos SoCs (like Google GS101), used on pixel phones.
>
> Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
> ---
Reviewed-by: Peter Griffin <peter.griffin@linaro.org>
> arch/arm64/configs/defconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
> index d905a0777f93..3fe76a4c2633 100644
> --- a/arch/arm64/configs/defconfig
> +++ b/arch/arm64/configs/defconfig
> @@ -793,6 +793,7 @@ CONFIG_BCM2711_THERMAL=m
> CONFIG_BCM2835_THERMAL=m
> CONFIG_BRCMSTB_THERMAL=m
> CONFIG_EXYNOS_THERMAL=y
> +CONFIG_EXYNOS_ACPM_THERMAL=m
> CONFIG_TEGRA_SOCTHERM=m
> CONFIG_TEGRA_BPMP_THERMAL=m
> CONFIG_GENERIC_ADC_THERMAL=m
>
> --
> 2.54.0.1013.g208068f2d8-goog
>
^ permalink raw reply
* Re: [RFC PATCH 00/20] mshv: enable kexec with Hyper-V donated pages and partitions
From: Mike Rapoport @ 2026-06-04 12:17 UTC (permalink / raw)
To: Jork Loeser
Cc: linux-hyperv, linux-mm, kexec, K. Y. Srinivasan, Haiyang Zhang,
Wei Liu, Dexuan Cui, Long Li, Pasha Tatashin, Pratyush Yadav,
Alexander Graf, Jason Miu, Andrew Morton, David Hildenbrand,
Muchun Song, Oscar Salvador, Baoquan He, Catalin Marinas,
Will Deacon, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
Dave Hansen, H. Peter Anvin, Kees Cook, Ran Xiaokai,
Justinien Bouron, Sourabh Jain, Pingfan Liu, Rafael J. Wysocki,
Mario Limonciello, linux-arm-kernel, x86, linux-kernel,
Michael Kelley
In-Reply-To: <3197c9c9-9e4f-c592-bb7-ac422f89115@linux.microsoft.com>
On Wed, Jun 03, 2026 at 10:25:58AM -0700, Jork Loeser wrote:
>
>
> On Wed, 3 Jun 2026, Mike Rapoport wrote:
>
> > On Mon, Jun 01, 2026 at 01:09:41PM -0700, Jork Loeser wrote:
> > > On Sun, 31 May 2026, Mike Rapoport wrote:
> > >
> > > > > Patch 19: Export kexec_in_progress for modules
> > > >
> > > > Isn't there another way to differentiate kexec reboot?
> >
> > There's that "kexec reboot" string passed as the cmd to the reboot
> > notifier.
> > Maybe we can make it somehow more well defined API and use it?
>
> A string? Dear my - the compiler won't flag it on an API change then, not
> ideal clearly. What's wrong with exporting kexec_in_progress()?
The policy in general is avoid exports unless strictly necessary.
A string can be declared as const char *KEXEC_REBOOT = "kexec reboot" and
used in both kexec and mshv. Not ideal, but still better.
No strong feelings from my side, just EXPORT_SYMBOL there felt a bit off.
> Best,
> Jork
--
Sincerely yours,
Mike.
^ permalink raw reply
* [PATCH v2 02/11] iio: adc: change from %ld to %pe for PTR_ERR() printing
From: Vojtěch Krátký @ 2026-06-04 11:59 UTC (permalink / raw)
To: linux-iio
Cc: Vojtěch Krátký, Jonathan Cameron, David Lechner,
Nuno Sá, Andy Shevchenko, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Sakari Ailus, Linus Walleij, Wolfram Sang,
linux-arm-kernel, linux-sunxi, linux-kernel
In-Reply-To: <20260604120201.116925-1-vo.kratky@seznam.cz>
Replace numeric PTR_ERR() logging with the %pe format specifier
so that error values are printed in a more readable form.
This change was identified using a Coccinelle semantic patch.
No functional change intended.
Signed-off-by: Vojtěch Krátký <vo.kratky@seznam.cz>
---
drivers/iio/adc/sun4i-gpadc-iio.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/iio/adc/sun4i-gpadc-iio.c b/drivers/iio/adc/sun4i-gpadc-iio.c
index 479115ea50bf..5d7a61abcaea 100644
--- a/drivers/iio/adc/sun4i-gpadc-iio.c
+++ b/drivers/iio/adc/sun4i-gpadc-iio.c
@@ -508,7 +508,7 @@ static int sun4i_gpadc_probe_dt(struct platform_device *pdev,
&sun4i_gpadc_regmap_config);
if (IS_ERR(info->regmap)) {
ret = PTR_ERR(info->regmap);
- dev_err(&pdev->dev, "failed to init regmap: %d\n", ret);
+ dev_err(&pdev->dev, "failed to init regmap: %pe\n", info->regmap);
return ret;
}
@@ -639,8 +639,8 @@ static int sun4i_gpadc_probe(struct platform_device *pdev)
*/
if (IS_ERR(info->tzd) && PTR_ERR(info->tzd) != -ENODEV) {
dev_err(&pdev->dev,
- "could not register thermal sensor: %ld\n",
- PTR_ERR(info->tzd));
+ "could not register thermal sensor: %pe\n",
+ info->tzd);
return PTR_ERR(info->tzd);
}
}
--
2.54.0
^ permalink raw reply related
* Re: [PATCH v8 3/5] MAINTAINERS: Add entry for Samsung Exynos ACPM thermal driver
From: Peter Griffin @ 2026-06-04 11:57 UTC (permalink / raw)
To: Tudor Ambarus
Cc: Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba,
Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Kees Cook,
Gustavo A. R. Silva, André Draszik, Alim Akhtar, jyescas,
linux-kernel, linux-samsung-soc, linux-pm, devicetree,
linux-hardening, linux-arm-kernel, Krzysztof Kozlowski
In-Reply-To: <20260603-acpm-tmu-v8-3-0f1810a356e6@linaro.org>
On Wed, 3 Jun 2026 at 14:00, Tudor Ambarus <tudor.ambarus@linaro.org> wrote:
>
> Add a MAINTAINERS entry for the Samsung Exynos ACPM thermal driver.
>
> Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
> ---
Reviewed-by: Peter Griffin <peter.griffin@linaro.org>
> MAINTAINERS | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index e8218c2749b7..6a8521270daf 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -23661,6 +23661,14 @@ F: drivers/clk/samsung/clk-acpm.c
> F: drivers/firmware/samsung/exynos-acpm*
> F: include/linux/firmware/samsung/exynos-acpm-protocol.h
>
> +SAMSUNG EXYNOS ACPM THERMAL DRIVER
> +M: Tudor Ambarus <tudor.ambarus@linaro.org>
> +L: linux-kernel@vger.kernel.org
> +L: linux-samsung-soc@vger.kernel.org
> +S: Supported
> +F: Documentation/devicetree/bindings/thermal/google,gs101-tmu-top.yaml
> +F: drivers/thermal/samsung/acpm-tmu.c
> +
> SAMSUNG EXYNOS MAILBOX DRIVER
> M: Tudor Ambarus <tudor.ambarus@linaro.org>
> L: linux-kernel@vger.kernel.org
>
> --
> 2.54.0.1013.g208068f2d8-goog
>
^ permalink raw reply
* [PATCH v1 1/3] dt-bindings: arm: sunxi: Add NetCube Systems OpenNMC (dobermann)
From: Lukas Schmid @ 2026-06-04 11:52 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen-Yu Tsai,
Jernej Skrabec, Samuel Holland, Paul Walmsley, Palmer Dabbelt,
Albert Ou, Alexandre Ghiti, Maxime Ripard
Cc: Lukas Schmid, devicetree, linux-arm-kernel, linux-sunxi,
linux-kernel, linux-riscv
In-Reply-To: <20260604115241.1358528-1-lukas.schmid@netcube.li>
The OpenNMC is an open replacement for APC SmartSlot management cards
based on the Nagami System-on-Module.
Signed-off-by: Lukas Schmid <lukas.schmid@netcube.li>
---
Documentation/devicetree/bindings/arm/sunxi.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/arm/sunxi.yaml b/Documentation/devicetree/bindings/arm/sunxi.yaml
index e6443c266fa1..8e2c9b8fe121 100644
--- a/Documentation/devicetree/bindings/arm/sunxi.yaml
+++ b/Documentation/devicetree/bindings/arm/sunxi.yaml
@@ -600,6 +600,7 @@ properties:
- enum:
- netcube,nagami-basic-carrier
- netcube,nagami-keypad-carrier
+ - netcube,dobermann
- const: netcube,nagami
- const: allwinner,sun8i-t113s
--
2.47.3
^ permalink raw reply related
* [PATCH v1 2/3] riscv: dts: allwinner: d1s-t113: Add uart4 pinctrl required by NetCube Systems OpenNMC
From: Lukas Schmid @ 2026-06-04 11:52 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen-Yu Tsai,
Jernej Skrabec, Samuel Holland, Paul Walmsley, Palmer Dabbelt,
Albert Ou, Alexandre Ghiti, Maxime Ripard
Cc: Lukas Schmid, devicetree, linux-arm-kernel, linux-sunxi,
linux-kernel, linux-riscv
In-Reply-To: <20260604115241.1358528-1-lukas.schmid@netcube.li>
Added the "uart4_pb_pins" pinctrl used by the OpenNMC
Signed-off-by: Lukas Schmid <lukas.schmid@netcube.li>
---
arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi b/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
index 82cc85acccb1..00fddedfa36f 100644
--- a/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
+++ b/arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi
@@ -191,6 +191,12 @@ uart3_pb_pins: uart3-pb-pins {
pins = "PB6", "PB7";
function = "uart3";
};
+
+ /omit-if-no-ref/
+ uart4_pb_pins: uart4-pb-pins {
+ pins = "PB2", "PB3";
+ function = "uart4";
+ };
};
ccu: clock-controller@2001000 {
--
2.47.3
^ permalink raw reply related
* [PATCH v1 3/3] ARM: dts: sunxi: add support for NetCube Systems OpenNMC (dobermann)
From: Lukas Schmid @ 2026-06-04 11:52 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen-Yu Tsai,
Jernej Skrabec, Samuel Holland, Paul Walmsley, Palmer Dabbelt,
Albert Ou, Alexandre Ghiti, Maxime Ripard
Cc: Lukas Schmid, devicetree, linux-arm-kernel, linux-sunxi,
linux-kernel, linux-riscv
In-Reply-To: <20260604115241.1358528-1-lukas.schmid@netcube.li>
NetCube Systems OpenNMC is an open replacement for APC SmartSlot Management
Cards. It is based on the Nagami System-on-Module. It breaks out the
following interfaces:
- 10/100 Mbps Ethernet
- USB Type-C OTG using a TUSB320 (usb0)
- USB Type-C Console Port using a CH340 (uart3)
- USB Type-A Host with internal CH334 USB-Hub (usb1)
- MicroSD Slot with Card-Detect (mmc0)
- WiFi/Bluetooth using the modules built-in ESP32
- SmartSlot serial interface (uart4)
- DS3232 RTC with CR1220 Battery Backup
- Extension connector providing SPI,I2C,USB,CAN,UART for future use.
Signed-off-by: Lukas Schmid <lukas.schmid@netcube.li>
---
.../sun8i-t113s-netcube-dobermann.dts | 149 ++++++++++++++++++
1 file changed, 149 insertions(+)
create mode 100644 arch/arm/boot/dts/allwinner/sun8i-t113s-netcube-dobermann.dts
diff --git a/arch/arm/boot/dts/allwinner/sun8i-t113s-netcube-dobermann.dts b/arch/arm/boot/dts/allwinner/sun8i-t113s-netcube-dobermann.dts
new file mode 100644
index 000000000000..97dd4b950dd8
--- /dev/null
+++ b/arch/arm/boot/dts/allwinner/sun8i-t113s-netcube-dobermann.dts
@@ -0,0 +1,149 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2026 Lukas Schmid <lukas.schmid@netcube.li>
+ */
+
+/dts-v1/;
+#include "sun8i-t113s-netcube-nagami.dtsi"
+
+#include <dt-bindings/leds/common.h>
+
+/ {
+ model = "NetCube Systems OpenNMC (dobermann)";
+ compatible = "netcube,dobermann", "netcube,nagami",
+ "allwinner,sun8i-t113s";
+
+ aliases {
+ serial2 = &uart4; // UART on SmartSlot
+ rtc0 = &ds3232;
+ rtc1 = &rtc; // not battery backed
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led_heartbeat_green: led-heartbeat-green {
+ gpios = <&pio 6 14 GPIO_ACTIVE_HIGH>; /* PG14 */
+ linux,default-trigger = "heartbeat";
+ color = <LED_COLOR_ID_GREEN>;
+ function = LED_FUNCTION_HEARTBEAT;
+ };
+ };
+};
+
+&ehci0 {
+ status = "okay";
+};
+
+&ehci1 {
+ status = "okay";
+};
+
+&i2c2 {
+ status = "okay";
+
+ tusb320: typec@60 {
+ compatible = "ti,tusb320";
+ reg = <0x60>;
+ interrupts-extended = <&pio 3 22 IRQ_TYPE_LEVEL_LOW>; /* PD22 */
+ };
+
+ ds3232: rtc@68 {
+ compatible = "dallas,ds3232";
+ reg = <0x68>;
+ };
+};
+
+/* microSD Card Slot on the board */
+&mmc0 {
+ vmmc-supply = <®_vcc3v3>;
+ disable-wp;
+ bus-width = <4>;
+ cd-gpios = <&pio 6 15 GPIO_ACTIVE_LOW>; /* PG15 */
+ status = "okay";
+};
+
+&ohci0 {
+ status = "okay";
+};
+
+&ohci1 {
+ status = "okay";
+};
+
+&pio {
+ gpio-line-names = "", "", "", "", // PA
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "SMART_TX", "SMART_RX", // PB
+ "EXT_IO3", "EXT_IO2", "CONSOLE_TX", "CONSOLE_RX",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "eMMC_CLK", "eMMC_CMD", // PC
+ "eMMC_D2", "eMMC_D1", "eMMC_D0", "eMMC_D3",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "", // PD
+ "", "", "", "",
+ "", "USB_SEC_EN", "EXT_SPI_nCS", "EXT_SPI_SCK",
+ "EXT_SPI_MOSI", "EXT_SPI_MISO", "EXT_IO5", "EXT_IO4",
+ "SMART_SEL", "", "", "",
+ "I2C3_SCL", "I2C3_SDA", "TUSB320_nINT", "",
+ "", "", "", "",
+ "", "", "", "",
+ "ETH_CRSDV", "ETH_RXD0", "ETH_RXD1", "ETH_TXCK", // PE
+ "ETH_TXD0", "ETH_TXD1", "ETH_TXEN", "",
+ "ETH_MDC", "ETH_MDIO", "I2C3_nINT", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "uSD_D1", "uSD_D0", "uSD_CLK", "uSD_CLK", // PF
+ "uSD_D3", "uSD_D2", "TUSB320_ID", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "ESP_CLK", "ESP_CMD", "ESP_D0", "ESP_D1", // PG
+ "ESP_D2", "ESP_D3", "ESP_TXD", "ESP_RXD",
+ "ESP_nBOOT", "ESP_nRST", "I2C2_SCL", "I2C2_SDA",
+ "EXT_IO1", "EXT_IO0", "LED_HEARTBEAT", "SD_DETECT",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "",
+ "", "", "", "";
+};
+
+/* SmartSlot serial */
+&uart4 {
+ pinctrl-0 = <&uart4_pb_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&usb_otg {
+ extcon = <&tusb320 0>;
+ dr_mode = "otg";
+ status = "okay";
+};
+
+&usbphy {
+ usb0_id_det-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; /* PF6 */
+ status = "okay";
+};
--
2.47.3
^ permalink raw reply related
* [PATCH v1 0/3] Add support for NetCube Systems OpenNMC (dobermann)
From: Lukas Schmid @ 2026-06-04 11:52 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Chen-Yu Tsai,
Jernej Skrabec, Samuel Holland, Paul Walmsley, Palmer Dabbelt,
Albert Ou, Alexandre Ghiti, Maxime Ripard
Cc: Lukas Schmid, devicetree, linux-arm-kernel, linux-sunxi,
linux-kernel, linux-riscv
This series adds support for the NetCube Systems OpenNMC
Signed-off-by: Lukas Schmid <lukas.schmid@netcube.li>
---
Lukas Schmid (3):
dt-bindings: arm: sunxi: Add NetCube Systems OpenNMC (dobermann)
riscv: dts: allwinner: d1s-t113: Add uart4 pinctrl required by NetCube
Systems OpenNMC
ARM: dts: sunxi: add support for NetCube Systems OpenNMC (dobermann)
.../devicetree/bindings/arm/sunxi.yaml | 1 +
.../sun8i-t113s-netcube-dobermann.dts | 149 ++++++++++++++++++
.../boot/dts/allwinner/sunxi-d1s-t113.dtsi | 6 +
3 files changed, 156 insertions(+)
create mode 100644 arch/arm/boot/dts/allwinner/sun8i-t113s-netcube-dobermann.dts
--
2.47.3
^ permalink raw reply
* Re: [PATCH v19 00/14] crypto/dmaengine: qce: introduce BAM locking and use DMA for register I/O
From: Bartosz Golaszewski @ 2026-06-04 11:50 UTC (permalink / raw)
To: Vinod Koul
Cc: Bartosz Golaszewski, Jonathan Corbet, Thara Gopinath, Herbert Xu,
David S. Miller, Udit Tiwari, Md Sadre Alam, Dmitry Baryshkov,
Manivannan Sadhasivam, Bjorn Andersson, Peter Ujfalusi,
Michal Simek, Frank Li, Andy Gross, Neil Armstrong, dmaengine,
linux-doc, linux-kernel, linux-arm-msm, linux-crypto,
linux-arm-kernel, brgl, Bartosz Golaszewski, Dmitry Baryshkov,
Konrad Dybcio, Stephan Gerhold
In-Reply-To: <aiFScCW_NEY3CsEf@vaman>
On Thu, 4 Jun 2026 12:24:48 +0200, Vinod Koul <vkoul@kernel.org> said:
> On 02-06-26, 18:38, Stephan Gerhold wrote:
>> On Tue, May 26, 2026 at 03:10:48PM +0200, Bartosz Golaszewski wrote:
>> > I feel like I fell into the trap of trying to address pre-existing
>> > issues reported by sashiko and in the process provoking more reports so
>> > let this be the last iteration where I do this. Vinod can we get this
>> > queued for v7.2 now and iron out any previously existing problems in
>> > tree?
>>
>> Thanks a lot for working on fixing all these issues!
>>
>> I agree there is no point addressing all the "pre-existing issues"
>> pointed out by Sashiko, but have you looked through the other comments
>> for new issues pointed out for your patches?
>
> I hope Bart and Qualcomm can fix these driver issues as well
>>
>> Out of curiosity, I was looking a bit at the comments for [PATCH v19
>> 06/14] dmaengine: qcom: bam_dma: add support for BAM locking [1]. There
>> are 8 open comments there (Critical: 1, High: 6 and Medium: 1). From a
>> quick look I would say most of these could be valid. The critical one
>> about the usage of dma_cookie_assign() sounds a bit concerning to me, if
>> it is true we would be basically breaking parts of the dmaengine API for
>> consumers by inserting the lock descriptor in front of everything else.
>
> Yes this seems to be a valid one. Attaching another descriptor for lock
> does not sound right to me, as in this case causes descriptor to be
> marked 'done' prematurely.
>
Yes, I have a fix for this queued.
> Honestly, I am not quite happy with the way lock is being handled here.
> I would hope we can have some better suggestions. Adding a descriptor
> for lock does not look right to me. We are adding odd hardware/firmware
> behaviour on engine apis.
>
> I had earlier suggested to lock always or lock only for hw/sw versions
> supported inside the driver, that might be simplist solution without the
> complexity added here
>
I'm not sure what you mean here. Several iterations ago it was deferred to
consumer drivers. Mani objected and Bjorn and you agreed. I reworked it to move
the locking logic into the DMA driver as requested.
Bart
^ permalink raw reply
* Re: [PATCH v2 03/12] drm/bridge: synopsys: dw-dp: Simplify driver data setting
From: Andy Yan @ 2026-06-04 11:32 UTC (permalink / raw)
To: Sebastian Reichel, Sandy Huang, Heiko Stübner,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann,
Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
Jonas Karlman, Jernej Skrabec, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, David Airlie, Simona Vetter, Dmitry Baryshkov,
Luca Ceresoli
Cc: Cristian Ciocaltea, Damon Ding, Dmitry Baryshkov, Alexey Charkov,
dri-devel, linux-rockchip, linux-kernel, devicetree, kernel,
linux-arm-kernel
In-Reply-To: <20260501-synopsys-dw-dp-improvements-v2-3-d7e7f6bac77f@collabora.com>
Hello,
On 5/1/26 06:20, Sebastian Reichel wrote:
> There is no need to get the platform device just for setting up
> the driver data. Simplify the logic.
>
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Reviewed-by: Andy Yan <andy.yan@rock-chips.com>
> ---
> drivers/gpu/drm/rockchip/dw_dp-rockchip.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/rockchip/dw_dp-rockchip.c b/drivers/gpu/drm/rockchip/dw_dp-rockchip.c
> index 150c2da8fee5..52e956bffb12 100644
> --- a/drivers/gpu/drm/rockchip/dw_dp-rockchip.c
> +++ b/drivers/gpu/drm/rockchip/dw_dp-rockchip.c
> @@ -74,7 +74,6 @@ static const struct drm_encoder_helper_funcs dw_dp_encoder_helper_funcs = {
>
> static int dw_dp_rockchip_bind(struct device *dev, struct device *master, void *data)
> {
> - struct platform_device *pdev = to_platform_device(dev);
> const struct dw_dp_plat_data *plat_data;
> struct drm_device *drm_dev = data;
> struct rockchip_dw_dp *dp;
> @@ -87,7 +86,7 @@ static int dw_dp_rockchip_bind(struct device *dev, struct device *master, void *
> return -ENOMEM;
>
> dp->dev = dev;
> - platform_set_drvdata(pdev, dp);
> + dev_set_drvdata(dev, dp);
>
> plat_data = of_device_get_match_data(dev);
> if (!plat_data)
>
^ permalink raw reply
* Re: [PATCH v8 1/5] dt-bindings: thermal: Add Google GS101 TMU
From: Peter Griffin @ 2026-06-04 11:23 UTC (permalink / raw)
To: Tudor Ambarus
Cc: Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba,
Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Kees Cook,
Gustavo A. R. Silva, André Draszik, Alim Akhtar, jyescas,
linux-kernel, linux-samsung-soc, linux-pm, devicetree,
linux-hardening, linux-arm-kernel, Krzysztof Kozlowski
In-Reply-To: <20260603-acpm-tmu-v8-1-0f1810a356e6@linaro.org>
On Wed, 3 Jun 2026 at 14:00, Tudor Ambarus <tudor.ambarus@linaro.org> wrote:
>
> Document the Thermal Management Unit (TMU) found on the Google GS101 SoC.
>
> The GS101 TMU utilizes a hybrid control model shared between the
> Application Processor (AP) and the ACPM (Alive Clock and Power Manager)
> firmware. This hybrid ACPM TMU architecture is also present on other
> Samsung Exynos SoCs (e.g., AutoV920, Exynos850).
>
> While the TMU is a standard memory-mapped IP block, on this platform
> the AP's direct register access is restricted to the interrupt pending
> (INTPEND) registers for event identification. High-level functional
> tasks, such as sensor initialization, threshold programming, and
> temperature reads, are delegated to the ACPM firmware.
>
> Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
> ---
Reviewed-by: Peter Griffin <peter.griffin@linaro.org>
> .../bindings/thermal/google,gs101-tmu-top.yaml | 69 ++++++++++++++++++++++
> 1 file changed, 69 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/thermal/google,gs101-tmu-top.yaml b/Documentation/devicetree/bindings/thermal/google,gs101-tmu-top.yaml
> new file mode 100644
> index 000000000000..75560ebca48d
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/thermal/google,gs101-tmu-top.yaml
> @@ -0,0 +1,69 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/thermal/google,gs101-tmu-top.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Samsung Exynos ACPM Thermal Management Unit (TMU)
> +
> +maintainers:
> + - Tudor Ambarus <tudor.ambarus@linaro.org>
> +
> +description:
> + The Samsung Exynos ACPM TMU is a thermal sensor block found on Exynos
> + based platforms (such as Google GS101 and Exynos850). It supports
> + both direct register-level access and firmware-mediated management
> + via the ACPM (Alive Clock and Power Manager) firmware.
> +
> + On these platforms, the hardware is managed in a hybrid fashion. The
> + Application Processor (AP) maintains direct memory-mapped access
> + exclusively to the interrupt pending registers to identify thermal
> + events. All other functional aspects - including sensor
> + initialization, threshold configuration, and temperature acquisition
> + - are handled by the ACPM firmware. The AP coordinates these
> + operations through the ACPM IPC protocol.
> +
> +properties:
> + compatible:
> + const: google,gs101-tmu-top
> +
> + reg:
> + maxItems: 1
> +
> + clocks:
> + items:
> + - description: APB peripheral clock (PCLK) for TMU register access.
> +
> + interrupts:
> + maxItems: 1
> +
> + "#thermal-sensor-cells":
> + const: 1
> +
> + samsung,acpm-ipc:
> + $ref: /schemas/types.yaml#/definitions/phandle
> + description: Phandle to the ACPM IPC node.
> +
> +required:
> + - compatible
> + - reg
> + - clocks
> + - interrupts
> + - "#thermal-sensor-cells"
> + - samsung,acpm-ipc
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> + #include <dt-bindings/clock/google,gs101.h>
> +
> + thermal-sensor@100a0000 {
> + compatible = "google,gs101-tmu-top";
> + reg = <0x100a0000 0x800>;
> + clocks = <&cmu_misc CLK_GOUT_MISC_TMU_TOP_PCLK>;
> + interrupts = <GIC_SPI 769 IRQ_TYPE_LEVEL_HIGH 0>;
> + #thermal-sensor-cells = <1>;
> + samsung,acpm-ipc = <&acpm_ipc>;
> + };
>
> --
> 2.54.0.1013.g208068f2d8-goog
>
^ permalink raw reply
* [PATCH 02/11] iio: adc: change from %ld to %pe for PTR_ERR() printing
From: Vojtěch Krátký @ 2026-06-04 11:19 UTC (permalink / raw)
To: linux-iio
Cc: Vojtěch Krátký, Jonathan Cameron, David Lechner,
Nuno Sá, Andy Shevchenko, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Wolfram Sang, Sakari Ailus, Linus Walleij,
linux-arm-kernel, linux-sunxi, linux-kernel
In-Reply-To: <20260604111921.106936-1-vo.kratky@seznam.cz>
Found by Coccinelle.
No functional change intended.
Signed-off-by: Vojtěch Krátký <vo.kratky@seznam.cz>
---
drivers/iio/adc/sun4i-gpadc-iio.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/iio/adc/sun4i-gpadc-iio.c b/drivers/iio/adc/sun4i-gpadc-iio.c
index 479115ea50bf..5d7a61abcaea 100644
--- a/drivers/iio/adc/sun4i-gpadc-iio.c
+++ b/drivers/iio/adc/sun4i-gpadc-iio.c
@@ -508,7 +508,7 @@ static int sun4i_gpadc_probe_dt(struct platform_device *pdev,
&sun4i_gpadc_regmap_config);
if (IS_ERR(info->regmap)) {
ret = PTR_ERR(info->regmap);
- dev_err(&pdev->dev, "failed to init regmap: %d\n", ret);
+ dev_err(&pdev->dev, "failed to init regmap: %pe\n", info->regmap);
return ret;
}
@@ -639,8 +639,8 @@ static int sun4i_gpadc_probe(struct platform_device *pdev)
*/
if (IS_ERR(info->tzd) && PTR_ERR(info->tzd) != -ENODEV) {
dev_err(&pdev->dev,
- "could not register thermal sensor: %ld\n",
- PTR_ERR(info->tzd));
+ "could not register thermal sensor: %pe\n",
+ info->tzd);
return PTR_ERR(info->tzd);
}
}
--
2.54.0
^ permalink raw reply related
* [PATCH 3/3] arm64: dts: realtek: Add I/O level detector
From: Yu-Chun Lin @ 2026-06-04 11:18 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, tychang
Cc: eleanor.lin, cy.huang, stanley_chang, james.tai, afaerber,
devicetree, linux-kernel, linux-arm-kernel, linux-realtek-soc
In-Reply-To: <20260604111821.975624-1-eleanor.lin@realtek.com>
Add io-level-detector node with pinctrl configurations for 1.8V/3.3V
voltage selection on RGMII, SDIO, CSI, SD, UART1, AIO, and eMMC.
Signed-off-by: Yu-Chun Lin <eleanor.lin@realtek.com>
---
This patch depends on this pinctrl node patch [1].
[1] https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git/commit/?id=50d92732d10e
---
arch/arm64/boot/dts/realtek/kent-pinctrl.dtsi | 108 ++++++++++++++++++
arch/arm64/boot/dts/realtek/kent.dtsi | 28 +++++
2 files changed, 136 insertions(+)
create mode 100644 arch/arm64/boot/dts/realtek/kent-pinctrl.dtsi
diff --git a/arch/arm64/boot/dts/realtek/kent-pinctrl.dtsi b/arch/arm64/boot/dts/realtek/kent-pinctrl.dtsi
new file mode 100644
index 000000000000..ec7e33034b96
--- /dev/null
+++ b/arch/arm64/boot/dts/realtek/kent-pinctrl.dtsi
@@ -0,0 +1,108 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
+/*
+ * Copyright (c) 2022-2026 Realtek Semiconductor Corp.
+ */
+
+&iso_pinctrl {
+ aio_vsel_1v8_pins: aio-vsel-1v8-pins {
+ pins = "gpio_98", "gpio_99", "gpio_100", "gpio_101", "gpio_102", "gpio_103",
+ "gpio_104", "gpio_105", "gpio_106", "gpio_107", "gpio_108", "gpio_109",
+ "gpio_110", "gpio_111", "gpio_112";
+ power-source = <0>;
+ input-threshold-voltage-microvolt = <1800000>;
+ };
+
+ aio_vsel_3v3_pins: aio-vsel-3v3-pins {
+ pins = "gpio_98", "gpio_99", "gpio_100", "gpio_101", "gpio_102", "gpio_103",
+ "gpio_104", "gpio_105", "gpio_106", "gpio_107", "gpio_108", "gpio_109",
+ "gpio_110", "gpio_111", "gpio_112";
+ power-source = <1>;
+ input-threshold-voltage-microvolt = <3300000>;
+ };
+
+ csi_vsel_1v8_pins: csi-vsel-1v8-pins {
+ pins = "csi_vdsel";
+ function = "csi_1v8";
+ };
+
+ csi_vsel_3v3_pins: csi-vsel-3v3-pins {
+ pins = "csi_vdsel";
+ function = "csi_3v3";
+ };
+
+ rgmii_vsel_1v8_pins: rgmii-vsel-1v8-pins {
+ pins = "rgmii_vdsel";
+ function = "rgmii_1v8";
+ };
+
+ rgmii_vsel_3v3_pins: rgmii-vsel-3v3-pins {
+ pins = "rgmii_vdsel";
+ function = "rgmii_3v3";
+ };
+
+ sdio_vsel_1v8_pins: sdio-vsel-1v8-pins {
+ pins = "gpio_45", "gpio_46", "gpio_47", "gpio_48", "gpio_49", "gpio_50";
+ power-source = <0>;
+ };
+
+ sdio_vsel_3v3_pins: sdio-vsel-3v3-pins {
+ pins = "gpio_45", "gpio_46", "gpio_47", "gpio_48", "gpio_49", "gpio_50";
+ power-source = <1>;
+ };
+
+ uart1_vsel_1v8_pins: uart1-vsel-1v8-pins {
+ pins = "gpio_8", "gpio_9", "gpio_10", "gpio_11";
+ power-source = <0>;
+ input-threshold-voltage-microvolt = <1800000>;
+ };
+
+ uart1_vsel_3v3_pins: uart1-vsel-3v3-pins {
+ pins = "gpio_8", "gpio_9", "gpio_10", "gpio_11";
+ power-source = <1>;
+ input-threshold-voltage-microvolt = <3300000>;
+ };
+};
+
+&main2_pinctrl {
+ emmc_vsel_1v8_pins: emmc-vsel-1v8-pins {
+ pins = "emmc_rst_n",
+ "emmc_dd_sb",
+ "emmc_clk",
+ "emmc_cmd",
+ "emmc_data_0",
+ "emmc_data_1",
+ "emmc_data_2",
+ "emmc_data_3",
+ "emmc_data_4",
+ "emmc_data_5",
+ "emmc_data_6",
+ "emmc_data_7";
+ power-source = <0>;
+ };
+
+ emmc_vsel_3v3_pins: emmc-vsel-3v3-pins {
+ pins = "emmc_rst_n",
+ "emmc_dd_sb",
+ "emmc_clk",
+ "emmc_cmd",
+ "emmc_data_0",
+ "emmc_data_1",
+ "emmc_data_2",
+ "emmc_data_3",
+ "emmc_data_4",
+ "emmc_data_5",
+ "emmc_data_6",
+ "emmc_data_7";
+ power-source = <1>;
+ };
+
+ sd_vsel_1v8_pins: sd-vsel-1v8-pins {
+ pins = "gpio_40", "gpio_41", "hif_clk", "hif_data", "hif_en", "hif_rdy";
+ power-source = <0>;
+ };
+
+ sd_vsel_3v3_pins: sd-vsel-3v3-pins {
+ pins = "gpio_40", "gpio_41", "hif_clk", "hif_data", "hif_en", "hif_rdy";
+ power-source = <1>;
+ };
+};
diff --git a/arch/arm64/boot/dts/realtek/kent.dtsi b/arch/arm64/boot/dts/realtek/kent.dtsi
index 8d4293cd4c03..f18b975c3593 100644
--- a/arch/arm64/boot/dts/realtek/kent.dtsi
+++ b/arch/arm64/boot/dts/realtek/kent.dtsi
@@ -125,6 +125,32 @@ psci: psci {
method = "smc";
};
+ io_level_detector: io-level-detector {
+ compatible = "realtek,rtd1625-io-detect";
+ pinctrl-names = "rgmii_1v8", "rgmii_3v3",
+ "sdio_1v8", "sdio_3v3",
+ "csi_1v8", "csi_3v3",
+ "sd_1v8", "sd_3v3",
+ "uart1_1v8", "uart1_3v3",
+ "aio_1v8", "aio_3v3",
+ "emmc_1v8", "emmc_3v3";
+ pinctrl-0 = <&rgmii_vsel_1v8_pins>;
+ pinctrl-1 = <&rgmii_vsel_3v3_pins>;
+ pinctrl-2 = <&sdio_vsel_1v8_pins>;
+ pinctrl-3 = <&sdio_vsel_3v3_pins>;
+ pinctrl-4 = <&csi_vsel_1v8_pins>;
+ pinctrl-5 = <&csi_vsel_3v3_pins>;
+ pinctrl-6 = <&sd_vsel_1v8_pins>;
+ pinctrl-7 = <&sd_vsel_3v3_pins>;
+ pinctrl-8 = <&uart1_vsel_1v8_pins>;
+ pinctrl-9 = <&uart1_vsel_3v3_pins>;
+ pinctrl-10 = <&aio_vsel_1v8_pins>;
+ pinctrl-11 = <&aio_vsel_3v3_pins>;
+ pinctrl-12 = <&emmc_vsel_1v8_pins>;
+ pinctrl-13 = <&emmc_vsel_3v3_pins>;
+ realtek,iso-pinctrl = <&iso_pinctrl>;
+ };
+
soc@0 {
compatible = "simple-bus";
ranges = <0x0 0x0 0x0 0x40000>, /* boot code */
@@ -184,3 +210,5 @@ gic: interrupt-controller@ff100000 {
};
};
};
+
+#include "kent-pinctrl.dtsi"
--
2.43.0
^ permalink raw reply related
* [PATCH 2/3] soc: realtek: Add driver for DHC I/O level detector
From: Yu-Chun Lin @ 2026-06-04 11:18 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, tychang
Cc: eleanor.lin, cy.huang, stanley_chang, james.tai, afaerber,
devicetree, linux-kernel, linux-arm-kernel, linux-realtek-soc
In-Reply-To: <20260604111821.975624-1-eleanor.lin@realtek.com>
From: Tzuyi Chang <tychang@realtek.com>
Add driver support for the Realtek DHC I/O level detector.
The driver reads hardware registers to determine the current I/O voltage
levels (e.g., 1.8V or 3.3V) for specific IP blocks. Based on the
detection results, it selects and applies the appropriate pinctrl states
to ensure the correct pad configurations are used.
Signed-off-by: Tzuyi Chang <tychang@realtek.com>
Signed-off-by: Yu-Chun Lin <eleanor.lin@realtek.com>
---
MAINTAINERS | 1 +
drivers/soc/Kconfig | 1 +
drivers/soc/Makefile | 1 +
drivers/soc/realtek/Kconfig | 21 ++++
drivers/soc/realtek/Makefile | 2 +
drivers/soc/realtek/rtd-io-detect.c | 152 ++++++++++++++++++++++++++++
6 files changed, 178 insertions(+)
create mode 100644 drivers/soc/realtek/Kconfig
create mode 100644 drivers/soc/realtek/Makefile
create mode 100644 drivers/soc/realtek/rtd-io-detect.c
diff --git a/MAINTAINERS b/MAINTAINERS
index 9ec290e38b44..6121eb4f904e 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3379,6 +3379,7 @@ F: arch/arm/boot/dts/realtek/
F: arch/arm/mach-realtek/
F: arch/arm64/boot/dts/realtek/
F: drivers/pinctrl/realtek/
+F: drivers/soc/realtek/
ARM/RISC-V/RENESAS ARCHITECTURE
M: Geert Uytterhoeven <geert+renesas@glider.be>
diff --git a/drivers/soc/Kconfig b/drivers/soc/Kconfig
index a2d65adffb80..d63b9d4dc042 100644
--- a/drivers/soc/Kconfig
+++ b/drivers/soc/Kconfig
@@ -20,6 +20,7 @@ source "drivers/soc/microchip/Kconfig"
source "drivers/soc/nuvoton/Kconfig"
source "drivers/soc/pxa/Kconfig"
source "drivers/soc/qcom/Kconfig"
+source "drivers/soc/realtek/Kconfig"
source "drivers/soc/renesas/Kconfig"
source "drivers/soc/rockchip/Kconfig"
source "drivers/soc/samsung/Kconfig"
diff --git a/drivers/soc/Makefile b/drivers/soc/Makefile
index c9e689080ceb..8678b1001183 100644
--- a/drivers/soc/Makefile
+++ b/drivers/soc/Makefile
@@ -26,6 +26,7 @@ obj-y += nuvoton/
obj-y += pxa/
obj-y += amlogic/
obj-y += qcom/
+obj-y += realtek/
obj-y += renesas/
obj-y += rockchip/
obj-$(CONFIG_SOC_SAMSUNG) += samsung/
diff --git a/drivers/soc/realtek/Kconfig b/drivers/soc/realtek/Kconfig
new file mode 100644
index 000000000000..4c5796c7f9f7
--- /dev/null
+++ b/drivers/soc/realtek/Kconfig
@@ -0,0 +1,21 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Realtek SoC drivers
+#
+menu "Realtek SoC drivers"
+ depends on ARCH_REALTEK || COMPILE_TEST
+
+config RTD_IO_LEVEL_DETECT
+ tristate "Realtek DHC I/O Level Detector"
+ depends on PINCTRL_RTD
+ select MFD_SYSCON
+ default ARCH_REALTEK
+ help
+ Enable support for the Realtek DHC I/O level detector.
+
+ This driver handles the auto-detection of I/O signaling levels
+ (such as 1.8V and 3.3V) and dynamically configures the pad states
+ for specific IP blocks.
+
+endmenu
+
diff --git a/drivers/soc/realtek/Makefile b/drivers/soc/realtek/Makefile
new file mode 100644
index 000000000000..c307e5bdb52d
--- /dev/null
+++ b/drivers/soc/realtek/Makefile
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0-only
+obj-$(CONFIG_RTD_IO_LEVEL_DETECT) += rtd-io-detect.o
diff --git a/drivers/soc/realtek/rtd-io-detect.c b/drivers/soc/realtek/rtd-io-detect.c
new file mode 100644
index 000000000000..84ef8ea23cb5
--- /dev/null
+++ b/drivers/soc/realtek/rtd-io-detect.c
@@ -0,0 +1,152 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Realtek DHC I/O Level Detect driver
+ *
+ * Copyright (c) 2026 Realtek Semiconductor Corp.
+ */
+
+#include <linux/mfd/syscon.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/pinctrl/consumer.h>
+#include <linux/platform_device.h>
+#include <linux/property.h>
+#include <linux/regmap.h>
+
+struct rtd_io_detect_desc_info {
+ const char *name;
+ const char *state_1v8;
+ const char *state_3v3;
+ unsigned int reg_offset;
+ unsigned int en_offset;
+ unsigned int status_offset;
+};
+
+struct rtd_io_detect_descs {
+ const struct rtd_io_detect_desc_info *info;
+ int num_descs;
+};
+
+struct rtd_io_detect_data {
+ const struct rtd_io_detect_descs *descs;
+ struct regmap *base;
+ struct device *dev;
+};
+
+#define RTD_IO_DETECT_DESC(_name, _reg_off, _en_off, _st_off) \
+ { \
+ .name = #_name, \
+ .state_1v8 = #_name "_1v8", \
+ .state_3v3 = #_name "_3v3", \
+ .reg_offset = _reg_off, \
+ .en_offset = _en_off, \
+ .status_offset = _st_off, \
+ }
+
+static const struct rtd_io_detect_desc_info rtd1625_io_detect_desc[] = {
+ RTD_IO_DETECT_DESC(rgmii, 0x1a0, 8, 1),
+ RTD_IO_DETECT_DESC(sd, 0x1a0, 9, 2),
+ RTD_IO_DETECT_DESC(csi, 0x1a0, 10, 3),
+ RTD_IO_DETECT_DESC(sdio, 0x1a0, 11, 4),
+ RTD_IO_DETECT_DESC(uart1, 0x1a0, 12, 5),
+ RTD_IO_DETECT_DESC(aio, 0x1a0, 13, 6),
+ RTD_IO_DETECT_DESC(emmc, 0x1a0, 14, 7),
+};
+
+static const struct rtd_io_detect_descs rtd1625_io_detect_descs = {
+ .info = rtd1625_io_detect_desc,
+ .num_descs = ARRAY_SIZE(rtd1625_io_detect_desc),
+};
+
+static void detect_io_set(struct pinctrl *pinctrl,
+ const struct rtd_io_detect_desc_info *desc,
+ struct rtd_io_detect_data *data)
+{
+ struct pinctrl_state *state_1v8;
+ struct pinctrl_state *state_3v3;
+ unsigned int val;
+ int ret;
+
+ state_1v8 = pinctrl_lookup_state(pinctrl, desc->state_1v8);
+ if (IS_ERR(state_1v8)) {
+ dev_err(data->dev, "Failed to lookup %s state: %ld\n",
+ desc->state_1v8, PTR_ERR(state_1v8));
+ return;
+ }
+
+ state_3v3 = pinctrl_lookup_state(pinctrl, desc->state_3v3);
+ if (IS_ERR(state_3v3)) {
+ dev_err(data->dev, "Failed to lookup %s state: %ld\n",
+ desc->state_3v3, PTR_ERR(state_3v3));
+ return;
+ }
+
+ regmap_update_bits(data->base, desc->reg_offset,
+ BIT(desc->en_offset), BIT(desc->en_offset));
+
+ regmap_read(data->base, desc->reg_offset, &val);
+
+ ret = pinctrl_select_state(pinctrl,
+ (val & BIT(desc->status_offset)) ? state_3v3 : state_1v8);
+ if (ret)
+ dev_err(data->dev, "Failed to select pinctrl state\n");
+}
+
+static int rtd_io_detect_probe(struct platform_device *pdev)
+{
+ struct rtd_io_detect_data *data;
+ struct device *dev = &pdev->dev;
+ struct device_node *pinctrl_np;
+ struct pinctrl *pinctrl;
+ int i;
+
+ data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
+ if (!data)
+ return -ENOMEM;
+
+ pinctrl_np = of_parse_phandle(dev->of_node, "realtek,iso-pinctrl", 0);
+ if (!pinctrl_np) {
+ dev_err(dev, "Failed to find ISO pinctrl node\n");
+ return -ENODEV;
+ }
+
+ data->base = device_node_to_regmap(pinctrl_np);
+ of_node_put(pinctrl_np);
+
+ if (IS_ERR(data->base))
+ return dev_err_probe(dev, PTR_ERR(data->base), "Failed to get regmap\n");
+
+ data->descs = device_get_match_data(dev);
+ if (!data->descs)
+ return -EINVAL;
+
+ pinctrl = devm_pinctrl_get(dev);
+ if (IS_ERR(pinctrl))
+ return dev_err_probe(dev, PTR_ERR(pinctrl), "Failed to get pinctrl\n");
+
+ data->dev = dev;
+
+ for (i = 0; i < data->descs->num_descs; i++)
+ detect_io_set(pinctrl, &data->descs->info[i], data);
+
+ return 0;
+}
+
+static const struct of_device_id rtd_io_detect_of_matches[] = {
+ { .compatible = "realtek,rtd1625-io-detect", .data = &rtd1625_io_detect_descs },
+ { /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, rtd_io_detect_of_matches);
+
+static struct platform_driver rtd_io_detect_driver = {
+ .driver = {
+ .name = "rtd_io_level_detect",
+ .of_match_table = rtd_io_detect_of_matches,
+ },
+ .probe = rtd_io_detect_probe,
+};
+module_platform_driver(rtd_io_detect_driver);
+
+MODULE_DESCRIPTION("Realtek DHC SoC I/O Level Detect driver");
+MODULE_LICENSE("GPL");
+
--
2.43.0
^ permalink raw reply related
* [PATCH 1/3] dt-bindings: soc: realtek: Add Realtek DHC I/O level detector
From: Yu-Chun Lin @ 2026-06-04 11:18 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, tychang
Cc: eleanor.lin, cy.huang, stanley_chang, james.tai, afaerber,
devicetree, linux-kernel, linux-arm-kernel, linux-realtek-soc
In-Reply-To: <20260604111821.975624-1-eleanor.lin@realtek.com>
From: Tzuyi Chang <tychang@realtek.com>
Add device tree binding documentation for the Realtek DHC I/O level
detector.
This hardware block is responsible for detecting the I/O signaling
levels (e.g., 1.8V or 3.3V) of various interfaces (RGMII, SDIO, eMMC,
etc.) and applying the corresponding pad configurations via pinctrl
states.
Signed-off-by: Tzuyi Chang <tychang@realtek.com>
Signed-off-by: Yu-Chun Lin <eleanor.lin@realtek.com>
---
.../realtek/realtek,rtd1625-io-detect.yaml | 77 +++++++++++++++++++
1 file changed, 77 insertions(+)
create mode 100644 Documentation/devicetree/bindings/soc/realtek/realtek,rtd1625-io-detect.yaml
diff --git a/Documentation/devicetree/bindings/soc/realtek/realtek,rtd1625-io-detect.yaml b/Documentation/devicetree/bindings/soc/realtek/realtek,rtd1625-io-detect.yaml
new file mode 100644
index 000000000000..badf27212dfd
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/realtek/realtek,rtd1625-io-detect.yaml
@@ -0,0 +1,77 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+# Copyright 2026 Realtek Semiconductor Corporation
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/realtek/realtek,rtd1625-io-detect.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Realtek DHC I/O Level Detector
+
+maintainers:
+ - Tzuyi Chang <tychang@realtek.com>
+
+description: |
+ The Realtek DHC I/O Level Detector is a hardware block that detects I/O
+ signaling levels (such as 1.8V or 3.3V) to determine the correct pad
+ configurations for specific IP blocks.
+
+properties:
+ compatible:
+ const: realtek,rtd1625-io-detect
+
+ pinctrl-names:
+ items:
+ - const: rgmii_1v8
+ - const: rgmii_3v3
+ - const: sdio_1v8
+ - const: sdio_3v3
+ - const: csi_1v8
+ - const: csi_3v3
+ - const: sd_1v8
+ - const: sd_3v3
+ - const: uart1_1v8
+ - const: uart1_3v3
+ - const: aio_1v8
+ - const: aio_3v3
+ - const: emmc_1v8
+ - const: emmc_3v3
+
+ realtek,iso-pinctrl:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description:
+ Pinctrl phandle containing I/O detection registers.
+
+required:
+ - compatible
+ - pinctrl-names
+ - realtek,iso-pinctrl
+
+additionalProperties: false
+
+examples:
+ - |
+ io-detect {
+ compatible = "realtek,rtd1625-io-detect";
+ pinctrl-names = "rgmii_1v8", "rgmii_3v3",
+ "sdio_1v8", "sdio_3v3",
+ "csi_1v8", "csi_3v3",
+ "sd_1v8", "sd_3v3",
+ "uart1_1v8", "uart1_3v3",
+ "aio_1v8", "aio_3v3",
+ "emmc_1v8", "emmc_3v3";
+ pinctrl-0 = <&rgmii_vsel_1v8_pins>;
+ pinctrl-1 = <&rgmii_vsel_3v3_pins>;
+ pinctrl-2 = <&sdio_vsel_1v8_pins>;
+ pinctrl-3 = <&sdio_vsel_3v3_pins>;
+ pinctrl-4 = <&csi_vsel_1v8_pins>;
+ pinctrl-5 = <&csi_vsel_3v3_pins>;
+ pinctrl-6 = <&sd_vsel_1v8_pins>;
+ pinctrl-7 = <&sd_vsel_3v3_pins>;
+ pinctrl-8 = <&uart1_vsel_1v8_pins>;
+ pinctrl-9 = <&uart1_vsel_3v3_pins>;
+ pinctrl-10 = <&aio_vsel_1v8_pins>;
+ pinctrl-11 = <&aio_vsel_3v3_pins>;
+ pinctrl-12 = <&emmc_vsel_1v8_pins>;
+ pinctrl-13 = <&emmc_vsel_3v3_pins>;
+ realtek,iso-pinctrl = <&iso_pinctrl>;
+ };
--
2.43.0
^ permalink raw reply related
* [PATCH 0/3] soc: realtek: Add Realtek DHC I/O level detector support
From: Yu-Chun Lin @ 2026-06-04 11:18 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, tychang
Cc: eleanor.lin, cy.huang, stanley_chang, james.tai, afaerber,
devicetree, linux-kernel, linux-arm-kernel, linux-realtek-soc
Hi all,
This patch series introduces support for the Realtek DHC I/O level detector.
The Realtek DHC I/O level detector is a hardware block responsible for
detecting the I/O signaling levels (1.8V or 3.3V) of various IP blocks
such as RGMII, SDIO, eMMC, CSI, SD, UART1, and AIO.
The driver reads the hardware registers to determine the current I/O voltage
levels. Based on these detection results, it dynamically selects and applies
the appropriate pinctrl states to ensure the correct pad configurations are
used for each interface.
Thanks,
Yu-Chun
Tzuyi Chang (2):
dt-bindings: soc: realtek: Add Realtek DHC I/O level detector
soc: realtek: Add driver for DHC I/O level detector
Yu-Chun Lin (1):
arm64: dts: realtek: Add I/O level detector
.../realtek/realtek,rtd1625-io-detect.yaml | 77 +++++++++
MAINTAINERS | 1 +
arch/arm64/boot/dts/realtek/kent-pinctrl.dtsi | 108 +++++++++++++
arch/arm64/boot/dts/realtek/kent.dtsi | 28 ++++
drivers/soc/Kconfig | 1 +
drivers/soc/Makefile | 1 +
drivers/soc/realtek/Kconfig | 21 +++
drivers/soc/realtek/Makefile | 2 +
drivers/soc/realtek/rtd-io-detect.c | 152 ++++++++++++++++++
9 files changed, 391 insertions(+)
create mode 100644 Documentation/devicetree/bindings/soc/realtek/realtek,rtd1625-io-detect.yaml
create mode 100644 arch/arm64/boot/dts/realtek/kent-pinctrl.dtsi
create mode 100644 drivers/soc/realtek/Kconfig
create mode 100644 drivers/soc/realtek/Makefile
create mode 100644 drivers/soc/realtek/rtd-io-detect.c
--
2.43.0
^ permalink raw reply
* [PATCH] KVM: arm64: Sanitise host vCPU fields in flush_hyp_vcpu()
From: Hyunwoo Kim @ 2026-06-04 11:18 UTC (permalink / raw)
To: maz, oupton, joey.gouly, seiden, suzuki.poulose, yuzenghui,
catalin.marinas, will
Cc: linux-arm-kernel, kvmarm, imv4bel
flush_hyp_vcpu() copies the host vCPU context and vGIC state into the
hyp's private vCPU on every run. ctxt_to_vcpu() expects a guest context
to have a NULL __hyp_running_vcpu, which is only ever set on the host
context, so that it resolves the vCPU via container_of(). The vGIC list
register save and restore expect used_lrs to stay within the number of
implemented list registers. While this is generally the case,
flush_hyp_vcpu() copies both fields verbatim from the host vCPU and
enforces neither expectation.
Fix by clearing __hyp_running_vcpu and clamping used_lrs after the copy.
Fixes: be66e67f1750 ("KVM: arm64: Use the pKVM hyp vCPU structure in handle___kvm_vcpu_run()")
Signed-off-by: Hyunwoo Kim <imv4bel@gmail.com>
---
arch/arm64/kvm/hyp/nvhe/hyp-main.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-main.c b/arch/arm64/kvm/hyp/nvhe/hyp-main.c
index 06db299c37a89..ef9318ff0c25e 100644
--- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c
+++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c
@@ -7,6 +7,7 @@
#include <hyp/adjust_pc.h>
#include <hyp/switch.h>
+#include <asm/arch_gicv3.h>
#include <asm/pgtable-types.h>
#include <asm/kvm_asm.h>
#include <asm/kvm_emulate.h>
@@ -128,6 +129,9 @@ static void flush_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu)
hyp_vcpu->vcpu.arch.ctxt = host_vcpu->arch.ctxt;
+ /* A guest context must keep a NULL __hyp_running_vcpu. */
+ hyp_vcpu->vcpu.arch.ctxt.__hyp_running_vcpu = NULL;
+
hyp_vcpu->vcpu.arch.mdcr_el2 = host_vcpu->arch.mdcr_el2;
hyp_vcpu->vcpu.arch.hcr_el2 &= ~(HCR_TWI | HCR_TWE);
hyp_vcpu->vcpu.arch.hcr_el2 |= READ_ONCE(host_vcpu->arch.hcr_el2) &
@@ -139,6 +143,13 @@ static void flush_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu)
hyp_vcpu->vcpu.arch.vgic_cpu.vgic_v3 = host_vcpu->arch.vgic_cpu.vgic_v3;
+ /* Bound the host-provided used_lrs by the implemented list registers. */
+ if (static_branch_unlikely(&kvm_vgic_global_state.gicv3_cpuif))
+ hyp_vcpu->vcpu.arch.vgic_cpu.vgic_v3.used_lrs =
+ min_t(unsigned int,
+ hyp_vcpu->vcpu.arch.vgic_cpu.vgic_v3.used_lrs,
+ (read_gicreg(ICH_VTR_EL2) & 0xf) + 1);
+
hyp_vcpu->vcpu.arch.pid = host_vcpu->arch.pid;
}
--
2.43.0
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox