* [PATCH v3 0/8] Add support for Pixel 3 and Pixel 3 XL
@ 2025-11-18 11:30 David Heidelberg via B4 Relay
2025-11-18 11:30 ` [PATCH v3 1/8] dt-bindings: arm: qcom: Add Pixel 3 and " David Heidelberg via B4 Relay
` (7 more replies)
0 siblings, 8 replies; 23+ messages in thread
From: David Heidelberg via B4 Relay @ 2025-11-18 11:30 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter
Cc: phodina, linux-arm-msm, devicetree, linux-kernel, phone-devel,
dri-devel, David Heidelberg, Amit Pundir, Casey Connolly,
Joel Selvaraj, Vinod Koul, Bjorn Andersson
This adds initial device tree support for the following phones:
- Google Pixel 3 (blueline)
- Google Pixel 3 XL (crosshatch)
Both phone boards use the same identifiers and differ only slightly
in their connected peripherals.
This is mainly focused to get the base functionality of the board and
being able to use the upstream DTS within Linux and u-boot.
Booting
-------
For older Pixel 3 bootloaders, bootloader-compatible board and MSM IDs are
required for the kernel to boot, so these have been added.
For recent Pixel 3 bootloaders,
a) you want chainloaded proper bootloader (f.e. u-boot),
b) you can also boot kernel when adding back TEXT_OFFSET
(partial revert of 120dc60d).
This series is a beggining of cleaning up and transitioning support from
sdm845 close to mainline tree to the mainline.
Until merged, available at:
https://gitlab.com/sdm845/sdm845-next/-/commits/b4/pixel-3
Depends on:
- "[PATCH 0/7] arm64: dts: qcom: cleanup GPU's zap-shader node" series.
Signed-off-by: David Heidelberg <david@ixit.cz>
---
Changes in v3:
- dropped Documentaion: prefix from 1st commit (Krzysztof)
- extended the compatible for panel driver
- Document reserved GPIOs.
- Drop some useless statuses, sort pinctrl. (Konrad)
- Link to v2: https://lore.kernel.org/r/20251030-pixel-3-v2-0-8caddbe072c9@ixit.cz
Changes in v2:
- rebased on next-20251030
- generalize chosen to -common (Dmitry)
- demystify rmtfs_mem qcom,vmid
- use qcom,use-guard-pages instead of lower/upper guard block
- merge port@1 endpoint into label mdss_dsi0_out
- sort pinctrl
- sorted the nodes inside root
- put status as a last property into mdss_dsi0 block
- rename volume-keys to gpio-keys
- removed LS-UART1 label
- removed gmu block, already enabled
- removed accidentally introduced WIP crosshatch panel support
- removed useless panel_pmgpio_pins (Dmitry)
- removed usb_2 as it's unused on production units (only devkit)
- move mdss node into the -common and disable in crosshatch (Dmitry)
- move battery node into the -commonm
- move framebuffer into the -common (Dmitry)
- add all firmwares (Dmitry)
- add Wi-Fi support
- add Bluetooth support
- add missing gpi_dma1 node
- renamed regulators to follow regulator-foo-bar BCP (Dmitry)
- adapt to recent cleanup GPU's zap-shader node
- Link to v1: https://lore.kernel.org/r/20251005-pixel-3-v1-0-ab8b85f6133f@ixit.cz
---
David Heidelberg (8):
dt-bindings: arm: qcom: Add Pixel 3 and 3 XL
dt-bindings: panel: sw43408: adjust to reflect the DDIC and panel used
drm/panel: sw43408: Introduce LH546WF1-ED01 panel compatible
drm/panel: sw43408: Introduce disable/enable functions
drm/panel: sw43408: Remove manual invocation of unprepare at remove
drm/panel: sw43408: Switch to devm_regulator_bulk_get_const
drm/panel: sw43408: Improve wording when reset-gpios aren't available
arm64: dts: qcom: Add support for Pixel 3 and Pixel 3 XL
Documentation/devicetree/bindings/arm/qcom.yaml | 2 +
.../bindings/display/panel/lg,sw43408.yaml | 11 +-
arch/arm64/boot/dts/qcom/Makefile | 2 +
.../arm64/boot/dts/qcom/sdm845-google-blueline.dts | 88 ++++
arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi | 515 +++++++++++++++++++++
.../boot/dts/qcom/sdm845-google-crosshatch.dts | 33 ++
drivers/gpu/drm/panel/panel-lg-sw43408.c | 123 +++--
7 files changed, 721 insertions(+), 53 deletions(-)
---
base-commit: ace0e2ec8bedd82f153e51c5d8d36ed3cb181e69
change-id: 20250419-pixel-3-511edc2a4607
Best regards,
--
David Heidelberg <david@ixit.cz>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH v3 1/8] dt-bindings: arm: qcom: Add Pixel 3 and 3 XL
2025-11-18 11:30 [PATCH v3 0/8] Add support for Pixel 3 and Pixel 3 XL David Heidelberg via B4 Relay
@ 2025-11-18 11:30 ` David Heidelberg via B4 Relay
2025-11-19 7:16 ` Krzysztof Kozlowski
2025-11-18 11:30 ` [PATCH v3 2/8] dt-bindings: panel: sw43408: adjust to reflect the DDIC and panel used David Heidelberg via B4 Relay
` (6 subsequent siblings)
7 siblings, 1 reply; 23+ messages in thread
From: David Heidelberg via B4 Relay @ 2025-11-18 11:30 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter
Cc: phodina, linux-arm-msm, devicetree, linux-kernel, phone-devel,
dri-devel, David Heidelberg
From: David Heidelberg <david@ixit.cz>
Document the bindings for the Pixel 3 and 3 XL.
Signed-off-by: David Heidelberg <david@ixit.cz>
---
Documentation/devicetree/bindings/arm/qcom.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml
index d84bd3bca2010..760b6633b7a55 100644
--- a/Documentation/devicetree/bindings/arm/qcom.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom.yaml
@@ -900,6 +900,8 @@ properties:
- items:
- enum:
+ - google,blueline
+ - google,crosshatch
- huawei,planck
- lenovo,yoga-c630
- lg,judyln
--
2.51.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH v3 2/8] dt-bindings: panel: sw43408: adjust to reflect the DDIC and panel used
2025-11-18 11:30 [PATCH v3 0/8] Add support for Pixel 3 and Pixel 3 XL David Heidelberg via B4 Relay
2025-11-18 11:30 ` [PATCH v3 1/8] dt-bindings: arm: qcom: Add Pixel 3 and " David Heidelberg via B4 Relay
@ 2025-11-18 11:30 ` David Heidelberg via B4 Relay
2025-11-18 12:29 ` Rob Herring (Arm)
2025-11-18 11:30 ` [PATCH v3 3/8] drm/panel: sw43408: Introduce LH546WF1-ED01 panel compatible David Heidelberg via B4 Relay
` (5 subsequent siblings)
7 siblings, 1 reply; 23+ messages in thread
From: David Heidelberg via B4 Relay @ 2025-11-18 11:30 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter
Cc: phodina, linux-arm-msm, devicetree, linux-kernel, phone-devel,
dri-devel, David Heidelberg
From: David Heidelberg <david@ixit.cz>
Add compatible for used LG panel.
SW43408 is not panel, but DDIC. The panel itself is the
LG LH546WF1-ED01, so introduce combined compatible for it.
Signed-off-by: David Heidelberg <david@ixit.cz>
---
.../devicetree/bindings/display/panel/lg,sw43408.yaml | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/display/panel/lg,sw43408.yaml b/Documentation/devicetree/bindings/display/panel/lg,sw43408.yaml
index 2219d3d4ac43b..bcf5efac6902c 100644
--- a/Documentation/devicetree/bindings/display/panel/lg,sw43408.yaml
+++ b/Documentation/devicetree/bindings/display/panel/lg,sw43408.yaml
@@ -4,14 +4,16 @@
$id: http://devicetree.org/schemas/display/panel/lg,sw43408.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
-title: LG SW43408 1080x2160 DSI panel
+title: LG SW43408 AMOLED DDIC
maintainers:
- Casey Connolly <casey.connolly@linaro.org>
description:
- This panel is used on the Pixel 3, it is a 60hz OLED panel which
- required DSC (Display Stream Compression) and has rounded corners.
+ The SW43408 is display driver IC with connected panel.
+
+ LG LH546WF1-ED01 panel is used on the Pixel 3, it is a 60hz OLED panel
+ which required DSC (Display Stream Compression) and has rounded corners.
allOf:
- $ref: panel-common.yaml#
@@ -19,6 +21,9 @@ allOf:
properties:
compatible:
items:
+ - enum:
+ # LG 5.46 inch, 1080x2160 pixels, 18:9 ratio
+ - lg,sw43408-lh546wf1-ed01
- const: lg,sw43408
reg:
--
2.51.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH v3 3/8] drm/panel: sw43408: Introduce LH546WF1-ED01 panel compatible
2025-11-18 11:30 [PATCH v3 0/8] Add support for Pixel 3 and Pixel 3 XL David Heidelberg via B4 Relay
2025-11-18 11:30 ` [PATCH v3 1/8] dt-bindings: arm: qcom: Add Pixel 3 and " David Heidelberg via B4 Relay
2025-11-18 11:30 ` [PATCH v3 2/8] dt-bindings: panel: sw43408: adjust to reflect the DDIC and panel used David Heidelberg via B4 Relay
@ 2025-11-18 11:30 ` David Heidelberg via B4 Relay
2025-11-19 7:36 ` Dmitry Baryshkov
2025-11-18 11:30 ` [PATCH v3 4/8] drm/panel: sw43408: Introduce disable/enable functions David Heidelberg via B4 Relay
` (4 subsequent siblings)
7 siblings, 1 reply; 23+ messages in thread
From: David Heidelberg via B4 Relay @ 2025-11-18 11:30 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter
Cc: phodina, linux-arm-msm, devicetree, linux-kernel, phone-devel,
dri-devel, David Heidelberg
From: David Heidelberg <david@ixit.cz>
The supported panel is LH546WF1-ED01, add compatible and adjust the
struct name to reflect that.
The standalone compatible lg,sw43408 will continue to work, even thou
there are no users yet.
Signed-off-by: David Heidelberg <david@ixit.cz>
---
drivers/gpu/drm/panel/panel-lg-sw43408.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-lg-sw43408.c b/drivers/gpu/drm/panel/panel-lg-sw43408.c
index 46a56ea92ad9f..bd55f6d8f2771 100644
--- a/drivers/gpu/drm/panel/panel-lg-sw43408.c
+++ b/drivers/gpu/drm/panel/panel-lg-sw43408.c
@@ -149,7 +149,7 @@ static int sw43408_prepare(struct drm_panel *panel)
return ret;
}
-static const struct drm_display_mode sw43408_mode = {
+static const struct drm_display_mode lh546wf1_ed01_mode = {
.clock = (1080 + 20 + 32 + 20) * (2160 + 20 + 4 + 20) * 60 / 1000,
.hdisplay = 1080,
@@ -171,7 +171,7 @@ static const struct drm_display_mode sw43408_mode = {
static int sw43408_get_modes(struct drm_panel *panel,
struct drm_connector *connector)
{
- return drm_connector_helper_get_modes_fixed(connector, &sw43408_mode);
+ return drm_connector_helper_get_modes_fixed(connector, &lh546wf1_ed01_mode);
}
static int sw43408_backlight_update_status(struct backlight_device *bl)
@@ -214,7 +214,9 @@ static const struct drm_panel_funcs sw43408_funcs = {
};
static const struct of_device_id sw43408_of_match[] = {
+ /* legacy */
{ .compatible = "lg,sw43408", },
+ { .compatible = "lg,sw43408-lh546wf1-ed01", },
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, sw43408_of_match);
--
2.51.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH v3 4/8] drm/panel: sw43408: Introduce disable/enable functions
2025-11-18 11:30 [PATCH v3 0/8] Add support for Pixel 3 and Pixel 3 XL David Heidelberg via B4 Relay
` (2 preceding siblings ...)
2025-11-18 11:30 ` [PATCH v3 3/8] drm/panel: sw43408: Introduce LH546WF1-ED01 panel compatible David Heidelberg via B4 Relay
@ 2025-11-18 11:30 ` David Heidelberg via B4 Relay
2025-11-19 7:28 ` Dmitry Baryshkov
2025-11-18 11:30 ` [PATCH v3 5/8] drm/panel: sw43408: Remove manual invocation of unprepare at remove David Heidelberg via B4 Relay
` (3 subsequent siblings)
7 siblings, 1 reply; 23+ messages in thread
From: David Heidelberg via B4 Relay @ 2025-11-18 11:30 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter
Cc: phodina, linux-arm-msm, devicetree, linux-kernel, phone-devel,
dri-devel, David Heidelberg
From: David Heidelberg <david@ixit.cz>
Mostly cleanup, introduced disable, enable, and reset function, which
takeover parts of prepare and unprepare suitable for splitting.
Signed-off-by: David Heidelberg <david@ixit.cz>
---
drivers/gpu/drm/panel/panel-lg-sw43408.c | 83 ++++++++++++++++++++------------
1 file changed, 53 insertions(+), 30 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-lg-sw43408.c b/drivers/gpu/drm/panel/panel-lg-sw43408.c
index bd55f6d8f2771..e5a8a9bb8d15c 100644
--- a/drivers/gpu/drm/panel/panel-lg-sw43408.c
+++ b/drivers/gpu/drm/panel/panel-lg-sw43408.c
@@ -38,11 +38,10 @@ static inline struct sw43408_panel *to_panel_info(struct drm_panel *panel)
return container_of(panel, struct sw43408_panel, base);
}
-static int sw43408_unprepare(struct drm_panel *panel)
+static int sw43408_disable(struct drm_panel *panel)
{
struct sw43408_panel *sw43408 = to_panel_info(panel);
struct mipi_dsi_multi_context ctx = { .dsi = sw43408->link };
- int ret;
mipi_dsi_dcs_set_display_off_multi(&ctx);
@@ -50,19 +49,55 @@ static int sw43408_unprepare(struct drm_panel *panel)
mipi_dsi_msleep(&ctx, 100);
+ return ctx.accum_err;
+}
+
+static int sw43408_unprepare(struct drm_panel *panel)
+{
+ struct sw43408_panel *sw43408 = to_panel_info(panel);
+ int ret;
+
gpiod_set_value(sw43408->reset_gpio, 1);
ret = regulator_bulk_disable(ARRAY_SIZE(sw43408->supplies), sw43408->supplies);
- return ret ? : ctx.accum_err;
+ return ret;
}
-static int sw43408_program(struct drm_panel *panel)
+static int sw43408_enable(struct drm_panel *panel)
{
struct sw43408_panel *sw43408 = to_panel_info(panel);
struct mipi_dsi_multi_context ctx = { .dsi = sw43408->link };
struct drm_dsc_picture_parameter_set pps;
+ mipi_dsi_dcs_set_display_on_multi(&ctx);
+
+ mipi_dsi_msleep(&ctx, 50);
+
+ sw43408->link->mode_flags &= ~MIPI_DSI_MODE_LPM;
+
+ drm_dsc_pps_payload_pack(&pps, sw43408->link->dsc);
+
+ mipi_dsi_picture_parameter_set_multi(&ctx, &pps);
+
+ sw43408->link->mode_flags |= MIPI_DSI_MODE_LPM;
+
+ /*
+ * This panel uses PPS selectors with offset:
+ * PPS 1 if pps_identifier is 0
+ * PPS 2 if pps_identifier is 1
+ */
+ mipi_dsi_compression_mode_ext_multi(&ctx, true,
+ MIPI_DSI_COMPRESSION_DSC, 1);
+
+ return ctx.accum_err;
+}
+
+static int sw43408_program(struct drm_panel *panel)
+{
+ struct sw43408_panel *sw43408 = to_panel_info(panel);
+ struct mipi_dsi_multi_context ctx = { .dsi = sw43408->link };
+
mipi_dsi_dcs_write_seq_multi(&ctx, MIPI_DCS_SET_GAMMA_CURVE, 0x02);
mipi_dsi_dcs_set_tear_on_multi(&ctx, MIPI_DSI_DCS_TEAR_MODE_VBLANK);
@@ -97,26 +132,19 @@ static int sw43408_program(struct drm_panel *panel)
mipi_dsi_dcs_write_seq_multi(&ctx, 0x55, 0x04, 0x61, 0xdb, 0x04, 0x70, 0xdb);
mipi_dsi_dcs_write_seq_multi(&ctx, 0xb0, 0xca);
- mipi_dsi_dcs_set_display_on_multi(&ctx);
-
- mipi_dsi_msleep(&ctx, 50);
-
- sw43408->link->mode_flags &= ~MIPI_DSI_MODE_LPM;
-
- drm_dsc_pps_payload_pack(&pps, sw43408->link->dsc);
-
- mipi_dsi_picture_parameter_set_multi(&ctx, &pps);
+ return ctx.accum_err;
+}
- sw43408->link->mode_flags |= MIPI_DSI_MODE_LPM;
+static void sw43408_reset(struct sw43408_panel *ctx)
+{
+ usleep_range(5000, 6000);
- /*
- * This panel uses PPS selectors with offset:
- * PPS 1 if pps_identifier is 0
- * PPS 2 if pps_identifier is 1
- */
- mipi_dsi_compression_mode_ext_multi(&ctx, true,
- MIPI_DSI_COMPRESSION_DSC, 1);
- return ctx.accum_err;
+ gpiod_set_value(ctx->reset_gpio, 0);
+ usleep_range(9000, 10000);
+ gpiod_set_value(ctx->reset_gpio, 1);
+ usleep_range(1000, 2000);
+ gpiod_set_value(ctx->reset_gpio, 0);
+ usleep_range(9000, 10000);
}
static int sw43408_prepare(struct drm_panel *panel)
@@ -128,14 +156,7 @@ static int sw43408_prepare(struct drm_panel *panel)
if (ret < 0)
return ret;
- usleep_range(5000, 6000);
-
- gpiod_set_value(ctx->reset_gpio, 0);
- usleep_range(9000, 10000);
- gpiod_set_value(ctx->reset_gpio, 1);
- usleep_range(1000, 2000);
- gpiod_set_value(ctx->reset_gpio, 0);
- usleep_range(9000, 10000);
+ sw43408_reset(ctx);
ret = sw43408_program(panel);
if (ret)
@@ -208,6 +229,8 @@ static int sw43408_backlight_init(struct sw43408_panel *ctx)
}
static const struct drm_panel_funcs sw43408_funcs = {
+ .disable = sw43408_disable,
+ .enable = sw43408_enable,
.unprepare = sw43408_unprepare,
.prepare = sw43408_prepare,
.get_modes = sw43408_get_modes,
--
2.51.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH v3 5/8] drm/panel: sw43408: Remove manual invocation of unprepare at remove
2025-11-18 11:30 [PATCH v3 0/8] Add support for Pixel 3 and Pixel 3 XL David Heidelberg via B4 Relay
` (3 preceding siblings ...)
2025-11-18 11:30 ` [PATCH v3 4/8] drm/panel: sw43408: Introduce disable/enable functions David Heidelberg via B4 Relay
@ 2025-11-18 11:30 ` David Heidelberg via B4 Relay
2025-11-19 7:29 ` Dmitry Baryshkov
2025-11-18 11:30 ` [PATCH v3 6/8] drm/panel: sw43408: Switch to devm_regulator_bulk_get_const David Heidelberg via B4 Relay
` (2 subsequent siblings)
7 siblings, 1 reply; 23+ messages in thread
From: David Heidelberg via B4 Relay @ 2025-11-18 11:30 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter
Cc: phodina, linux-arm-msm, devicetree, linux-kernel, phone-devel,
dri-devel, David Heidelberg
From: David Heidelberg <david@ixit.cz>
The drm_panel_remove should take care of disable/unprepare. Remove the
manual call from the sw43408_remove function.
Signed-off-by: David Heidelberg <david@ixit.cz>
---
drivers/gpu/drm/panel/panel-lg-sw43408.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-lg-sw43408.c b/drivers/gpu/drm/panel/panel-lg-sw43408.c
index e5a8a9bb8d15c..d8481bdafd6dd 100644
--- a/drivers/gpu/drm/panel/panel-lg-sw43408.c
+++ b/drivers/gpu/drm/panel/panel-lg-sw43408.c
@@ -319,10 +319,6 @@ static void sw43408_remove(struct mipi_dsi_device *dsi)
struct sw43408_panel *ctx = mipi_dsi_get_drvdata(dsi);
int ret;
- ret = sw43408_unprepare(&ctx->base);
- if (ret < 0)
- dev_err(&dsi->dev, "failed to unprepare panel: %d\n", ret);
-
ret = mipi_dsi_detach(dsi);
if (ret < 0)
dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", ret);
--
2.51.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH v3 6/8] drm/panel: sw43408: Switch to devm_regulator_bulk_get_const
2025-11-18 11:30 [PATCH v3 0/8] Add support for Pixel 3 and Pixel 3 XL David Heidelberg via B4 Relay
` (4 preceding siblings ...)
2025-11-18 11:30 ` [PATCH v3 5/8] drm/panel: sw43408: Remove manual invocation of unprepare at remove David Heidelberg via B4 Relay
@ 2025-11-18 11:30 ` David Heidelberg via B4 Relay
2025-11-19 7:29 ` Dmitry Baryshkov
2025-11-18 11:30 ` [PATCH v3 7/8] drm/panel: sw43408: Improve wording when reset-gpios aren't available David Heidelberg via B4 Relay
2025-11-18 11:30 ` [PATCH v3 8/8] arm64: dts: qcom: Add support for Pixel 3 and Pixel 3 XL David Heidelberg via B4 Relay
7 siblings, 1 reply; 23+ messages in thread
From: David Heidelberg via B4 Relay @ 2025-11-18 11:30 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter
Cc: phodina, linux-arm-msm, devicetree, linux-kernel, phone-devel,
dri-devel, David Heidelberg
From: David Heidelberg <david@ixit.cz>
Switch to devm_regulator_bulk_get_const() to stop setting the supplies
list in probe(), and move the regulator_bulk_data struct in static const.
Signed-off-by: David Heidelberg <david@ixit.cz>
---
drivers/gpu/drm/panel/panel-lg-sw43408.c | 26 ++++++++++++++------------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-lg-sw43408.c b/drivers/gpu/drm/panel/panel-lg-sw43408.c
index d8481bdafd6dd..0a902470e03fa 100644
--- a/drivers/gpu/drm/panel/panel-lg-sw43408.c
+++ b/drivers/gpu/drm/panel/panel-lg-sw43408.c
@@ -20,13 +20,18 @@
#include <drm/display/drm_dsc.h>
#include <drm/display/drm_dsc_helper.h>
-#define NUM_SUPPLIES 2
+static const struct regulator_bulk_data sw43408_supplies[] = {
+ { .supply = "vddi", /* 1.88V */
+ .init_load_uA = 62000 },
+ { .supply = "vpnl", /* 3.0 V */
+ .init_load_uA = 857000 },
+};
struct sw43408_panel {
struct drm_panel base;
struct mipi_dsi_device *link;
- struct regulator_bulk_data supplies[NUM_SUPPLIES];
+ struct regulator_bulk_data *supplies;
struct gpio_desc *reset_gpio;
@@ -59,7 +64,7 @@ static int sw43408_unprepare(struct drm_panel *panel)
gpiod_set_value(sw43408->reset_gpio, 1);
- ret = regulator_bulk_disable(ARRAY_SIZE(sw43408->supplies), sw43408->supplies);
+ ret = regulator_bulk_disable(ARRAY_SIZE(sw43408_supplies), sw43408->supplies);
return ret;
}
@@ -152,7 +157,7 @@ static int sw43408_prepare(struct drm_panel *panel)
struct sw43408_panel *ctx = to_panel_info(panel);
int ret;
- ret = regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies);
+ ret = regulator_bulk_enable(ARRAY_SIZE(sw43408_supplies), ctx->supplies);
if (ret < 0)
return ret;
@@ -166,7 +171,7 @@ static int sw43408_prepare(struct drm_panel *panel)
poweroff:
gpiod_set_value(ctx->reset_gpio, 1);
- regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies);
+ regulator_bulk_disable(ARRAY_SIZE(sw43408_supplies), ctx->supplies);
return ret;
}
@@ -249,13 +254,10 @@ static int sw43408_add(struct sw43408_panel *ctx)
struct device *dev = &ctx->link->dev;
int ret;
- ctx->supplies[0].supply = "vddi"; /* 1.88 V */
- ctx->supplies[0].init_load_uA = 62000;
- ctx->supplies[1].supply = "vpnl"; /* 3.0 V */
- ctx->supplies[1].init_load_uA = 857000;
-
- ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ctx->supplies),
- ctx->supplies);
+ ret = devm_regulator_bulk_get_const(dev,
+ ARRAY_SIZE(sw43408_supplies),
+ sw43408_supplies,
+ &ctx->supplies);
if (ret < 0)
return ret;
--
2.51.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH v3 7/8] drm/panel: sw43408: Improve wording when reset-gpios aren't available
2025-11-18 11:30 [PATCH v3 0/8] Add support for Pixel 3 and Pixel 3 XL David Heidelberg via B4 Relay
` (5 preceding siblings ...)
2025-11-18 11:30 ` [PATCH v3 6/8] drm/panel: sw43408: Switch to devm_regulator_bulk_get_const David Heidelberg via B4 Relay
@ 2025-11-18 11:30 ` David Heidelberg via B4 Relay
2025-11-19 7:30 ` Dmitry Baryshkov
2025-11-18 11:30 ` [PATCH v3 8/8] arm64: dts: qcom: Add support for Pixel 3 and Pixel 3 XL David Heidelberg via B4 Relay
7 siblings, 1 reply; 23+ messages in thread
From: David Heidelberg via B4 Relay @ 2025-11-18 11:30 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter
Cc: phodina, linux-arm-msm, devicetree, linux-kernel, phone-devel,
dri-devel, David Heidelberg
From: David Heidelberg <david@ixit.cz>
Choose better wording.
Cosmetic: also inline PTR_ERR.
Signed-off-by: David Heidelberg <david@ixit.cz>
---
drivers/gpu/drm/panel/panel-lg-sw43408.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-lg-sw43408.c b/drivers/gpu/drm/panel/panel-lg-sw43408.c
index 0a902470e03fa..5f5f013a4da75 100644
--- a/drivers/gpu/drm/panel/panel-lg-sw43408.c
+++ b/drivers/gpu/drm/panel/panel-lg-sw43408.c
@@ -263,8 +263,8 @@ static int sw43408_add(struct sw43408_panel *ctx)
ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW);
if (IS_ERR(ctx->reset_gpio)) {
- ret = PTR_ERR(ctx->reset_gpio);
- return dev_err_probe(dev, ret, "cannot get reset gpio\n");
+ return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio),
+ "Failed to get reset-gpios\n");
}
ret = sw43408_backlight_init(ctx);
--
2.51.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH v3 8/8] arm64: dts: qcom: Add support for Pixel 3 and Pixel 3 XL
2025-11-18 11:30 [PATCH v3 0/8] Add support for Pixel 3 and Pixel 3 XL David Heidelberg via B4 Relay
` (6 preceding siblings ...)
2025-11-18 11:30 ` [PATCH v3 7/8] drm/panel: sw43408: Improve wording when reset-gpios aren't available David Heidelberg via B4 Relay
@ 2025-11-18 11:30 ` David Heidelberg via B4 Relay
2025-11-18 12:32 ` Konrad Dybcio
7 siblings, 1 reply; 23+ messages in thread
From: David Heidelberg via B4 Relay @ 2025-11-18 11:30 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter
Cc: phodina, linux-arm-msm, devicetree, linux-kernel, phone-devel,
dri-devel, David Heidelberg, Amit Pundir, Casey Connolly,
Joel Selvaraj, Vinod Koul, Bjorn Andersson
From: David Heidelberg <david@ixit.cz>
This adds initial device tree support for the following phones:
- Google Pixel 3 (blueline)
- Google Pixel 3 XL (crosshatch)
Both phone boards use the same identifiers and differ only slightly
in their connected peripherals.
Supported functionality includes:
- Debug UART
- UFS
- USB-C (peripheral mode)
- Display (Pixel 3 only, and the driver needs improvements)
- GPU
- Bluetooth
- Wi-Fi
The rmtfs region is allocated using UIO, making it technically "dynamic."
Its address and size can be read from sysfs:
$ cat /sys/class/uio/uio0/name
/sys/class/uio/uio0/maps/map0/addr
0x00000000f2701000
$ cat /sys/class/uio/uio0/maps/map0/size
0x0000000000200000
Like the OnePlus 6, the Pixel 3 requires 1 kB of reserved memory on either
side of the rmtfs region to work around an XPU bug that would otherwise
cause erroneous violations when accessing the rmtfs_mem region.
Co-developed-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Co-developed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Co-developed-by: Casey Connolly <casey@connolly.tech>
Signed-off-by: Casey Connolly <casey@connolly.tech>
Co-developed-by: Joel Selvaraj <foss@joelselvaraj.com>
Signed-off-by: Joel Selvaraj <foss@joelselvaraj.com>
Co-developed-by: Sumit Semwal <sumit.semwal@linaro.org>
Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
Co-developed-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: David Heidelberg <david@ixit.cz>
---
arch/arm64/boot/dts/qcom/Makefile | 2 +
.../arm64/boot/dts/qcom/sdm845-google-blueline.dts | 88 ++++
arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi | 515 +++++++++++++++++++++
.../boot/dts/qcom/sdm845-google-crosshatch.dts | 33 ++
4 files changed, 638 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 6f34d5ed331c4..c853b28b3b198 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -250,6 +250,8 @@ dtb-$(CONFIG_ARCH_QCOM) += sdm845-db845c.dtb
sdm845-db845c-navigation-mezzanine-dtbs := sdm845-db845c.dtb sdm845-db845c-navigation-mezzanine.dtbo
dtb-$(CONFIG_ARCH_QCOM) += sdm845-db845c-navigation-mezzanine.dtb
+dtb-$(CONFIG_ARCH_QCOM) += sdm845-google-crosshatch.dtb
+dtb-$(CONFIG_ARCH_QCOM) += sdm845-google-blueline.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-lg-judyln.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-lg-judyp.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-mtp.dtb
diff --git a/arch/arm64/boot/dts/qcom/sdm845-google-blueline.dts b/arch/arm64/boot/dts/qcom/sdm845-google-blueline.dts
new file mode 100644
index 0000000000000..cdaa0a76256ce
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sdm845-google-blueline.dts
@@ -0,0 +1,88 @@
+// SPDX-License-Identifier: GPL-2.0-only
+
+/dts-v1/;
+
+#include "sdm845-google-common.dtsi"
+
+/ {
+ model = "Google Pixel 3";
+ compatible = "google,blueline", "qcom,sdm845";
+};
+
+&battery {
+ charge-full-design-microamp-hours = <2970000>;
+ voltage-min-design-microvolt = <3600000>;
+ voltage-max-design-microvolt = <4400000>;
+};
+
+&cont_splash_mem {
+ reg = <0 0x9d400000 0 0x02400000>;
+};
+
+&framebuffer0 {
+ width = <1080>;
+ height = <2160>;
+ stride = <(1080 * 4)>;
+ format = "a8r8g8b8";
+};
+
+&mdss_dsi0 {
+ vdda-supply = <&vdda_mipi_dsi0_1p2>;
+
+ status = "okay";
+
+ panel@0 {
+ compatible = "lg,sw43408-lh546wf1-ed01", "lg,sw43408";
+ reg = <0>;
+
+ vddi-supply = <&vreg_l14a_1p88>;
+ vpnl-supply = <&vreg_l28a_3p0>;
+
+ reset-gpios = <&tlmm 6 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&panel_reset_pins &panel_te_pin>;
+ pinctrl-names = "default";
+
+ port {
+ panel_in: endpoint {
+ remote-endpoint = <&mdss_dsi0_out>;
+ };
+ };
+ };
+};
+
+&mdss_dsi0_out {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&panel_in>;
+ qcom,te-source = "mdp_vsync_e";
+};
+
+&mdss_dsi0_phy {
+ vdds-supply = <&vdda_mipi_dsi0_pll>;
+
+ status = "okay";
+};
+
+&tlmm {
+ panel_te_pin: panel-te-state {
+ pins = "gpio12";
+ function = "mdp_vsync";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ panel_reset_pins: panel-active-state {
+ pins = "gpio6";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-disable;
+ };
+
+ panel_suspend: panel-suspend-state {
+ pins = "gpio6";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+};
diff --git a/arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi b/arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi
new file mode 100644
index 0000000000000..f8323b1ec861d
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi
@@ -0,0 +1,515 @@
+// SPDX-License-Identifier: GPL-2.0-only
+
+/dts-v1/;
+
+#include <dt-bindings/arm/qcom,ids.h>
+#include <dt-bindings/dma/qcom-gpi.h>
+#include <dt-bindings/input/linux-event-codes.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+
+#include "sdm845.dtsi"
+#include "pm8998.dtsi"
+#include "pmi8998.dtsi"
+
+/delete-node/ &mpss_region;
+/delete-node/ &venus_mem;
+/delete-node/ &cdsp_mem;
+/delete-node/ &mba_region;
+/delete-node/ &slpi_mem;
+/delete-node/ &spss_mem;
+/delete-node/ &rmtfs_mem;
+
+/ {
+ chassis-type = "handset";
+ qcom,board-id = <0x00021505 0>;
+ qcom,msm-id = <QCOM_ID_SDM845 0x20001>;
+
+ aliases {
+ serial0 = &uart9;
+ serial1 = &uart6;
+ };
+
+ battery: battery {
+ compatible = "simple-battery";
+ };
+
+ chosen {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ stdout-path = "serial0:115200n8";
+
+ /* Use display framebuffer as setup by bootloader */
+ framebuffer0: framebuffer-0 {
+ compatible = "simple-framebuffer";
+ memory-region = <&cont_splash_mem>;
+ };
+ };
+
+ reserved-memory {
+ cont_splash_mem: splash@9d400000 {
+ no-map;
+ };
+
+ mpss_region: memory@8e000000 {
+ reg = <0 0x8e000000 0 0x9800000>;
+ no-map;
+ };
+
+ venus_mem: venus@97800000 {
+ reg = <0 0x97800000 0 0x500000>;
+ no-map;
+ };
+
+ cdsp_mem: cdsp-mem@97D00000 {
+ reg = <0 0x97D00000 0 0x800000>;
+ no-map;
+ };
+
+ mba_region: mba@98500000 {
+ reg = <0 0x98500000 0 0x200000>;
+ no-map;
+ };
+
+ slpi_mem: slpi@98700000 {
+ reg = <0 0x98700000 0 0x1400000>;
+ no-map;
+ };
+
+ spss_mem: spss@99B00000 {
+ reg = <0 0x99B00000 0 0x100000>;
+ no-map;
+ };
+
+ rmtfs_mem: rmtfs-region@f2700000 {
+ compatible = "qcom,rmtfs-mem";
+ reg = <0 0xf2700000 0 0x202000>;
+ qcom,use-guard-pages;
+ no-map;
+
+ qcom,client-id = <1>;
+ qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>;
+ };
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+ label = "Volume keys";
+ autorepeat;
+
+ pinctrl-0 = <&volume_up_gpio>;
+ pinctrl-names = "default";
+
+ key-vol-up {
+ label = "Volume Up";
+ linux,code = <KEY_VOLUMEUP>;
+ gpios = <&pm8998_gpios 6 GPIO_ACTIVE_LOW>;
+ debounce-interval = <15>;
+ };
+ };
+
+ vph_pwr: regulator-vph-pwr {
+ compatible = "regulator-fixed";
+ regulator-name = "vph_pwr";
+ regulator-min-microvolt = <3700000>;
+ regulator-max-microvolt = <3700000>;
+ };
+
+ vreg_s4a_1p8: regulator-vreg-s4a-1p8 {
+ compatible = "regulator-fixed";
+ regulator-name = "vreg_s4a_1p8";
+
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on;
+ regulator-boot-on;
+
+ vin-supply = <&vph_pwr>;
+ };
+};
+
+&adsp_pas {
+ firmware-name = "qcom/sdm845/Google/blueline/adsp.mbn";
+
+ status = "okay";
+};
+
+&apps_rsc {
+ regulators-0 {
+ compatible = "qcom,pm8998-rpmh-regulators";
+ qcom,pmic-id = "a";
+
+ vdd-s1-supply = <&vph_pwr>;
+ vdd-s2-supply = <&vph_pwr>;
+ vdd-s3-supply = <&vph_pwr>;
+ vdd-s4-supply = <&vph_pwr>;
+ vdd-s5-supply = <&vph_pwr>;
+ vdd-s6-supply = <&vph_pwr>;
+ vdd-s7-supply = <&vph_pwr>;
+ vdd-s8-supply = <&vph_pwr>;
+ vdd-s9-supply = <&vph_pwr>;
+ vdd-s10-supply = <&vph_pwr>;
+ vdd-s11-supply = <&vph_pwr>;
+ vdd-s12-supply = <&vph_pwr>;
+ vdd-s13-supply = <&vph_pwr>;
+ vdd-l1-l27-supply = <&vreg_s7a_1p025>;
+ vdd-l2-l8-l17-supply = <&vreg_s3a_1p35>;
+ vdd-l3-l11-supply = <&vreg_s7a_1p025>;
+ vdd-l4-l5-supply = <&vreg_s7a_1p025>;
+ vdd-l6-supply = <&vph_pwr>;
+ vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p04>;
+ vdd-l9-supply = <&vreg_bob>;
+ vdd-l10-l23-l25-supply = <&vreg_bob>;
+ vdd-l13-l19-l21-supply = <&vreg_bob>;
+ vdd-l16-l28-supply = <&vreg_bob>;
+ vdd-l18-l22-supply = <&vreg_bob>;
+ vdd-l20-l24-supply = <&vreg_bob>;
+ vdd-l26-supply = <&vreg_s3a_1p35>;
+ vin-lvs-1-2-supply = <&vreg_s4a_1p8>;
+
+ vreg_s3a_1p35: smps3 {
+ regulator-min-microvolt = <1352000>;
+ regulator-max-microvolt = <1352000>;
+ };
+
+ vreg_s5a_2p04: smps5 {
+ regulator-min-microvolt = <1904000>;
+ regulator-max-microvolt = <2040000>;
+ };
+
+ vreg_s7a_1p025: smps7 {
+ regulator-min-microvolt = <900000>;
+ regulator-max-microvolt = <1028000>;
+ };
+
+ vdda_mipi_dsi0_pll:
+ vreg_l1a_0p875: ldo1 {
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <880000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-boot-on;
+ };
+
+ vreg_l5a_0p8: ldo5 {
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l12a_1p8: ldo12 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l7a_1p8: ldo7 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l13a_2p95: ldo13 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2960000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l14a_1p88: ldo14 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-boot-on;
+ /*
+ * We can't properly bring the panel back if it gets turned off
+ * so keep it's regulators always on for now.
+ */
+ regulator-always-on;
+ };
+
+ vreg_l17a_1p3: ldo17 {
+ regulator-min-microvolt = <1304000>;
+ regulator-max-microvolt = <1304000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l19a_3p3: ldo19 {
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3312000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ /*
+ * The touchscreen needs this to be 3.3v, which is apparently
+ * quite close to the hardware limit for this LDO (3.312v)
+ * It must be kept in high power mode to prevent TS brownouts
+ */
+ regulator-allowed-modes = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l20a_2p95: ldo20 {
+ regulator-min-microvolt = <2960000>;
+ regulator-max-microvolt = <2968000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l21a_2p95: ldo21 {
+ regulator-min-microvolt = <2960000>;
+ regulator-max-microvolt = <2968000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l24a_3p075: ldo24 {
+ regulator-min-microvolt = <3088000>;
+ regulator-max-microvolt = <3088000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l25a_3p3: ldo25 {
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3312000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vdda_mipi_dsi0_1p2:
+ vreg_l26a_1p2: ldo26 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-boot-on;
+ };
+
+ vreg_l28a_3p0: ldo28 {
+ regulator-min-microvolt = <2856000>;
+ regulator-max-microvolt = <3008000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
+ regulator-boot-on;
+ /*
+ * We can't properly bring the panel back if it gets turned off
+ * so keep it's regulators always on for now.
+ */
+ regulator-always-on;
+ };
+ };
+
+ regulators-1 {
+ compatible = "qcom,pmi8998-rpmh-regulators";
+ qcom,pmic-id = "b";
+
+ vdd-bob-supply = <&vph_pwr>;
+
+ vreg_bob: bob {
+ regulator-min-microvolt = <3312000>;
+ regulator-max-microvolt = <3600000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
+ regulator-allow-bypass;
+ };
+ };
+
+ regulators-2 {
+ compatible = "qcom,pm8005-rpmh-regulators";
+ qcom,pmic-id = "c";
+
+ vdd-s1-supply = <&vph_pwr>;
+ vdd-s2-supply = <&vph_pwr>;
+ vdd-s3-supply = <&vph_pwr>;
+ vdd-s4-supply = <&vph_pwr>;
+
+ vreg_s3c_0p6: smps3 {
+ regulator-min-microvolt = <600000>;
+ regulator-max-microvolt = <600000>;
+ };
+ };
+};
+
+&cdsp_pas {
+ firmware-name = "qcom/sdm845/Google/blueline/cdsp.mbn";
+
+ status = "okay";
+};
+
+&gcc {
+ protected-clocks = <GCC_QSPI_CORE_CLK>,
+ <GCC_QSPI_CORE_CLK_SRC>,
+ <GCC_QSPI_CNOC_PERIPH_AHB_CLK>;
+};
+
+&gpi_dma0 {
+ status = "okay";
+};
+
+&gpi_dma1 {
+ status = "okay";
+};
+
+&gpu {
+ status = "okay";
+};
+
+&gpu_zap_shader {
+ firmware-name = "qcom/sdm845/Google/blueline/a630_zap.mbn";
+};
+
+&ipa {
+ firmware-name = "qcom/sdm845/Google/blueline/ipa_fws.mbn";
+ memory-region = <&ipa_fw_mem>;
+
+ status = "okay";
+};
+
+&mdss {
+ status = "okay";
+};
+
+&mss_pil {
+ firmware-name = "qcom/sdm845/Google/blueline/mba.mbn",
+ "qcom/sdm845/Google/blueline/modem.mbn";
+
+ status = "okay";
+};
+
+&pm8998_gpios {
+ volume_up_gpio: vol-up-active-state {
+ pins = "gpio6";
+ function = "normal";
+ input-enable;
+ bias-pull-up;
+ qcom,drive-strength = <0>;
+ };
+};
+
+&pm8998_resin {
+ linux,code = <KEY_VOLUMEDOWN>;
+
+ status = "okay";
+};
+
+&pmi8998_charger {
+ monitored-battery = <&battery>;
+
+ status = "okay";
+};
+
+&qupv3_id_0 {
+ status = "okay";
+};
+
+&qupv3_id_1 {
+ status = "okay";
+};
+
+&qup_uart9_rx {
+ drive-strength = <2>;
+ bias-pull-up;
+};
+
+&qup_uart9_tx {
+ drive-strength = <2>;
+ bias-disable;
+};
+
+&tlmm {
+ gpio-reserved-ranges = < 0 4>, /* SPI (Intel MNH Pixel Visual Core) */
+ <81 4>; /* SPI (most likely Fingerprint Cards FPC1075) */
+
+ touchscreen_reset: ts-reset-state {
+ pins = "gpio99";
+ function = "gpio";
+ drive-strength = <8>;
+ bias-pull-up;
+ };
+
+ touchscreen_pins: ts-pins-gpio-state {
+ pins = "gpio125";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ touchscreen_i2c_pins: qup-i2c2-gpio-state {
+ pins = "gpio27", "gpio28";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+};
+
+&uart6 {
+ pinctrl-0 = <&qup_uart6_4pin>;
+
+ status = "okay";
+
+ bluetooth {
+ compatible = "qcom,wcn3990-bt";
+
+ vddio-supply = <&vreg_s4a_1p8>;
+ vddxo-supply = <&vreg_l7a_1p8>;
+ vddrf-supply = <&vreg_l17a_1p3>;
+ vddch0-supply = <&vreg_l25a_3p3>;
+ max-speed = <3200000>;
+ };
+};
+
+&uart9 {
+ status = "okay";
+};
+
+&ufs_mem_hc {
+ reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
+
+ vcc-supply = <&vreg_l20a_2p95>;
+ vcc-max-microamp = <800000>;
+
+ status = "okay";
+};
+
+&ufs_mem_phy {
+ vdda-phy-supply = <&vreg_l1a_0p875>;
+ vdda-pll-supply = <&vreg_l26a_1p2>;
+
+ status = "okay";
+};
+
+&usb_1 {
+ status = "okay";
+};
+
+&usb_1_dwc3 {
+ dr_mode = "peripheral";
+};
+
+&usb_1_hsphy {
+ vdd-supply = <&vreg_l1a_0p875>;
+ vdda-pll-supply = <&vreg_l12a_1p8>;
+ vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
+
+ qcom,imp-res-offset-value = <8>;
+ qcom,hstx-trim-value = <QUSB2_V2_HSTX_TRIM_21_6_MA>;
+ qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_5_PERCENT>;
+ qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
+
+ status = "okay";
+};
+
+&usb_1_qmpphy {
+ vdda-phy-supply = <&vreg_l26a_1p2>;
+ vdda-pll-supply = <&vreg_l1a_0p875>;
+
+ status = "okay";
+};
+
+&venus {
+ firmware-name = "qcom/sdm845/Google/blueline/venus.mbn";
+
+ status = "okay";
+};
+
+&wifi {
+ vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
+ vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
+ vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
+ vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
+
+ qcom,snoc-host-cap-8bit-quirk;
+
+ status = "okay";
+};
diff --git a/arch/arm64/boot/dts/qcom/sdm845-google-crosshatch.dts b/arch/arm64/boot/dts/qcom/sdm845-google-crosshatch.dts
new file mode 100644
index 0000000000000..ca534f0950a19
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sdm845-google-crosshatch.dts
@@ -0,0 +1,33 @@
+// SPDX-License-Identifier: GPL-2.0-only
+
+/dts-v1/;
+
+#include "sdm845-google-common.dtsi"
+
+/ {
+ model = "Google Pixel 3 XL";
+ compatible = "google,crosshatch", "qcom,sdm845";
+};
+
+&battery {
+ charge-full-design-microamp-hours = <3480000>;
+ voltage-min-design-microvolt = <3600000>;
+ voltage-max-design-microvolt = <4400000>;
+};
+
+&cont_splash_mem {
+ reg = <0 0x9d400000 0 0x02400000>;
+};
+
+&framebuffer0 {
+ width = <1440>;
+ height = <2960>;
+ stride = <(1440 * 4)>;
+ format = "a8r8g8b8";
+};
+
+&mdss {
+ /* until the panel is prepared */
+ status = "disabled";
+};
+
--
2.51.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v3 2/8] dt-bindings: panel: sw43408: adjust to reflect the DDIC and panel used
2025-11-18 11:30 ` [PATCH v3 2/8] dt-bindings: panel: sw43408: adjust to reflect the DDIC and panel used David Heidelberg via B4 Relay
@ 2025-11-18 12:29 ` Rob Herring (Arm)
2025-11-18 12:33 ` Konrad Dybcio
0 siblings, 1 reply; 23+ messages in thread
From: Rob Herring (Arm) @ 2025-11-18 12:29 UTC (permalink / raw)
To: David Heidelberg
Cc: phone-devel, Bjorn Andersson, Konrad Dybcio, Krzysztof Kozlowski,
Jessica Zhang, dri-devel, Thomas Zimmermann, Casey Connolly,
linux-arm-msm, phodina, Conor Dooley, devicetree, Neil Armstrong,
Sumit Semwal, Maarten Lankhorst, David Airlie, linux-kernel,
Maxime Ripard, Simona Vetter
On Tue, 18 Nov 2025 12:30:37 +0100, David Heidelberg wrote:
> Add compatible for used LG panel.
> SW43408 is not panel, but DDIC. The panel itself is the
> LG LH546WF1-ED01, so introduce combined compatible for it.
>
> Signed-off-by: David Heidelberg <david@ixit.cz>
> ---
> .../devicetree/bindings/display/panel/lg,sw43408.yaml | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
My bot found errors running 'make dt_binding_check' on your patch:
yamllint warnings/errors:
dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/display/panel/lg,sw43408.example.dtb: panel@0 (lg,sw43408): compatible:0: 'lg,sw43408' is not one of ['lg,sw43408-lh546wf1-ed01']
from schema $id: http://devicetree.org/schemas/display/panel/lg,sw43408.yaml
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/display/panel/lg,sw43408.example.dtb: panel@0 (lg,sw43408): compatible: ['lg,sw43408'] is too short
from schema $id: http://devicetree.org/schemas/display/panel/lg,sw43408.yaml
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20251118-pixel-3-v3-2-317a2b400d8a@ixit.cz
The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v3 8/8] arm64: dts: qcom: Add support for Pixel 3 and Pixel 3 XL
2025-11-18 11:30 ` [PATCH v3 8/8] arm64: dts: qcom: Add support for Pixel 3 and Pixel 3 XL David Heidelberg via B4 Relay
@ 2025-11-18 12:32 ` Konrad Dybcio
2025-11-18 13:31 ` David Heidelberg
0 siblings, 1 reply; 23+ messages in thread
From: Konrad Dybcio @ 2025-11-18 12:32 UTC (permalink / raw)
To: david, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Sumit Semwal, Casey Connolly,
Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter
Cc: phodina, linux-arm-msm, devicetree, linux-kernel, phone-devel,
dri-devel, Amit Pundir, Casey Connolly, Joel Selvaraj,
Vinod Koul
On 11/18/25 12:30 PM, David Heidelberg via B4 Relay wrote:
> From: David Heidelberg <david@ixit.cz>
>
> This adds initial device tree support for the following phones:
>
> - Google Pixel 3 (blueline)
> - Google Pixel 3 XL (crosshatch)
>
> Both phone boards use the same identifiers and differ only slightly
> in their connected peripherals.
[...]
> +&cont_splash_mem {
> + reg = <0 0x9d400000 0 0x02400000>;
> +};
You override it to the same value on both devices, keep it in common
> +
> +&framebuffer0 {
> + width = <1080>;
> + height = <2160>;
> + stride = <(1080 * 4)>;
> + format = "a8r8g8b8";
The format is mandated by the UEFI specification and won't change too
[...]
> +&tlmm {
> + panel_te_pin: panel-te-state {
> + pins = "gpio12";
> + function = "mdp_vsync";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
> + panel_reset_pins: panel-active-state {
> + pins = "gpio6";
Pin entries would be best sorted by the GPIO index:
https://docs.kernel.org/devicetree/bindings/dts-coding-style.html#order-of-nodes
> + function = "gpio";
> + drive-strength = <8>;
> + bias-disable;
> + };
> +
> + panel_suspend: panel-suspend-state {
> + pins = "gpio6";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
> +};
Stray \n above
[...]
> +&adsp_pas {
> + firmware-name = "qcom/sdm845/Google/blueline/adsp.mbn";
Sorry if I asked this before, but are the binaries identical for
both devices?
[...]
> + vreg_l14a_1p88: ldo14 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + regulator-boot-on;
> + /*
> + * We can't properly bring the panel back if it gets turned off
> + * so keep it's regulators always on for now.
> + */
> + regulator-always-on;
Is that still the case with your fixes to the panel driver?
[...]
> +
> + vreg_l28a_3p0: ldo28 {
> + regulator-min-microvolt = <2856000>;
> + regulator-max-microvolt = <3008000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
> + regulator-boot-on;
> + /*
> + * We can't properly bring the panel back if it gets turned off
> + * so keep it's regulators always on for now.
> + */
> + regulator-always-on;
ditto
[...]
> + regulators-1 {
> + compatible = "qcom,pmi8998-rpmh-regulators";
> + qcom,pmic-id = "b";
> +
> + vdd-bob-supply = <&vph_pwr>;
> +
> + vreg_bob: bob {
> + regulator-min-microvolt = <3312000>;
> + regulator-max-microvolt = <3600000>;
This is a very broad range, what voltage does it need to be?
[...]
[...]
> +&tlmm {
> + gpio-reserved-ranges = < 0 4>, /* SPI (Intel MNH Pixel Visual Core) */
stray space before '0'
Konrad
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v3 2/8] dt-bindings: panel: sw43408: adjust to reflect the DDIC and panel used
2025-11-18 12:29 ` Rob Herring (Arm)
@ 2025-11-18 12:33 ` Konrad Dybcio
2025-11-18 12:34 ` David Heidelberg
0 siblings, 1 reply; 23+ messages in thread
From: Konrad Dybcio @ 2025-11-18 12:33 UTC (permalink / raw)
To: Rob Herring (Arm), David Heidelberg
Cc: phone-devel, Bjorn Andersson, Konrad Dybcio, Krzysztof Kozlowski,
Jessica Zhang, dri-devel, Thomas Zimmermann, Casey Connolly,
linux-arm-msm, phodina, Conor Dooley, devicetree, Neil Armstrong,
Sumit Semwal, Maarten Lankhorst, David Airlie, linux-kernel,
Maxime Ripard, Simona Vetter
On 11/18/25 1:29 PM, Rob Herring (Arm) wrote:
>
> On Tue, 18 Nov 2025 12:30:37 +0100, David Heidelberg wrote:
>> Add compatible for used LG panel.
>> SW43408 is not panel, but DDIC. The panel itself is the
>> LG LH546WF1-ED01, so introduce combined compatible for it.
>>
>> Signed-off-by: David Heidelberg <david@ixit.cz>
>> ---
>> .../devicetree/bindings/display/panel/lg,sw43408.yaml | 11 ++++++++---
>> 1 file changed, 8 insertions(+), 3 deletions(-)
>>
>
> My bot found errors running 'make dt_binding_check' on your patch:
>
> yamllint warnings/errors:
>
> dtschema/dtc warnings/errors:
> /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/display/panel/lg,sw43408.example.dtb: panel@0 (lg,sw43408): compatible:0: 'lg,sw43408' is not one of ['lg,sw43408-lh546wf1-ed01']
> from schema $id: http://devicetree.org/schemas/display/panel/lg,sw43408.yaml
> /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/display/panel/lg,sw43408.example.dtb: panel@0 (lg,sw43408): compatible: ['lg,sw43408'] is too short
You got this error because you didn't fix the example DT (which would be
validated with `make dt_binding_check`
Konrad
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v3 2/8] dt-bindings: panel: sw43408: adjust to reflect the DDIC and panel used
2025-11-18 12:33 ` Konrad Dybcio
@ 2025-11-18 12:34 ` David Heidelberg
0 siblings, 0 replies; 23+ messages in thread
From: David Heidelberg @ 2025-11-18 12:34 UTC (permalink / raw)
To: Konrad Dybcio, Rob Herring (Arm)
Cc: phone-devel, Bjorn Andersson, Konrad Dybcio, Krzysztof Kozlowski,
Jessica Zhang, dri-devel, Thomas Zimmermann, Casey Connolly,
linux-arm-msm, phodina, Conor Dooley, devicetree, Neil Armstrong,
Sumit Semwal, Maarten Lankhorst, David Airlie, linux-kernel,
Maxime Ripard, Simona Vetter
yup, saw, consider it solved in next version! :)
Also hopefully I'll fire ut the dt_bindings_check and dtbs_check in our CI.
David
On 18/11/2025 13:33, Konrad Dybcio wrote:
> On 11/18/25 1:29 PM, Rob Herring (Arm) wrote:
>>
>> On Tue, 18 Nov 2025 12:30:37 +0100, David Heidelberg wrote:
>>> Add compatible for used LG panel.
>>> SW43408 is not panel, but DDIC. The panel itself is the
>>> LG LH546WF1-ED01, so introduce combined compatible for it.
>>>
>>> Signed-off-by: David Heidelberg <david@ixit.cz>
>>> ---
>>> .../devicetree/bindings/display/panel/lg,sw43408.yaml | 11 ++++++++---
>>> 1 file changed, 8 insertions(+), 3 deletions(-)
>>>
>>
>> My bot found errors running 'make dt_binding_check' on your patch:
>>
>> yamllint warnings/errors:
>>
>> dtschema/dtc warnings/errors:
>> /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/display/panel/lg,sw43408.example.dtb: panel@0 (lg,sw43408): compatible:0: 'lg,sw43408' is not one of ['lg,sw43408-lh546wf1-ed01']
>> from schema $id: http://devicetree.org/schemas/display/panel/lg,sw43408.yaml
>> /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/display/panel/lg,sw43408.example.dtb: panel@0 (lg,sw43408): compatible: ['lg,sw43408'] is too short
>
> You got this error because you didn't fix the example DT (which would be
> validated with `make dt_binding_check`
>
> Konrad
--
David Heidelberg
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v3 8/8] arm64: dts: qcom: Add support for Pixel 3 and Pixel 3 XL
2025-11-18 12:32 ` Konrad Dybcio
@ 2025-11-18 13:31 ` David Heidelberg
2025-11-18 13:41 ` Konrad Dybcio
0 siblings, 1 reply; 23+ messages in thread
From: David Heidelberg @ 2025-11-18 13:31 UTC (permalink / raw)
To: Konrad Dybcio, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Sumit Semwal, Casey Connolly,
Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter
Cc: phodina, linux-arm-msm, devicetree, linux-kernel, phone-devel,
dri-devel, Amit Pundir, Casey Connolly, Joel Selvaraj,
Vinod Koul
On 18/11/2025 13:32, Konrad Dybcio wrote:
> On 11/18/25 12:30 PM, David Heidelberg via B4 Relay wrote:
>> From: David Heidelberg <david@ixit.cz>
>>
>> This adds initial device tree support for the following phones:
>>
>> - Google Pixel 3 (blueline)
>> - Google Pixel 3 XL (crosshatch)
>>
>> Both phone boards use the same identifiers and differ only slightly
>> in their connected peripherals.
>
> [...]
>
>> +&cont_splash_mem {
>> + reg = <0 0x9d400000 0 0x02400000>;
>> +};
>
> You override it to the same value on both devices, keep it in common
Done.
>
>> +
>> +&framebuffer0 {
>> + width = <1080>;
>> + height = <2160>;
>> + stride = <(1080 * 4)>;
>> + format = "a8r8g8b8";
>
> The format is mandated by the UEFI specification and won't change too
>
Done.
> [...]
>
>> +&tlmm {
>> + panel_te_pin: panel-te-state {
>> + pins = "gpio12";
>> + function = "mdp_vsync";
>> + drive-strength = <2>;
>> + bias-pull-down;
>> + };
>> +
>> + panel_reset_pins: panel-active-state {
>> + pins = "gpio6";
>
> Pin entries would be best sorted by the GPIO index:
>
> https://docs.kernel.org/devicetree/bindings/dts-coding-style.html#order-of-nodes
>
>
Done.
>> + function = "gpio";
>> + drive-strength = <8>;
>> + bias-disable;
>> + };
>> +
>> + panel_suspend: panel-suspend-state {
>> + pins = "gpio6";
>> + function = "gpio";
>> + drive-strength = <2>;
>> + bias-pull-down;
>> + };
>> +
>> +};
>
> Stray \n above
>
> [...]
>
>> +&adsp_pas {
>> + firmware-name = "qcom/sdm845/Google/blueline/adsp.mbn";
>
> Sorry if I asked this before, but are the binaries identical for
> both devices?
Yes, there is only one firmware, which crosshatch has different, but all
listed in the initial bringup are used for both.
To add, crosshatch was somehow not that popular device, so as I've been
suggested in u-boot discussion, I would love to keep blueline everywhere.
One exception is LineageOS kernels, where they go by name crosshatch,
but again for the both phones.
>
> [...]
>
>
>> + vreg_l14a_1p88: ldo14 {
>> + regulator-min-microvolt = <1800000>;
>> + regulator-max-microvolt = <1800000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + regulator-boot-on;
>> + /*
>> + * We can't properly bring the panel back if it gets turned off
>> + * so keep it's regulators always on for now.
>> + */
>> + regulator-always-on;
>
> Is that still the case with your fixes to the panel driver?
>
> [...]
Sadly yes, but I think Petr Hodina has idea what needs to be addressed,
so likely before 6.19 this will get addressed.
>
>> +
>> + vreg_l28a_3p0: ldo28 {
>> + regulator-min-microvolt = <2856000>;
>> + regulator-max-microvolt = <3008000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
>> + regulator-boot-on;
>> + /*
>> + * We can't properly bring the panel back if it gets turned off
>> + * so keep it's regulators always on for now.
>> + */
>> + regulator-always-on;
>
> ditto
>
> [...]
>
>> + regulators-1 {
>> + compatible = "qcom,pmi8998-rpmh-regulators";
>> + qcom,pmic-id = "b";
>> +
>> + vdd-bob-supply = <&vph_pwr>;
>> +
>> + vreg_bob: bob {
>> + regulator-min-microvolt = <3312000>;
>> + regulator-max-microvolt = <3600000>;
>
> This is a very broad range, what voltage does it need to be?
I think it's possible, I just randomly picked bob regs, and f.e.
qcs6490-radxa-dragon-q6a.dts has even greater range.
Downstream set it also this way on blueline/crosshatch.
>
> [...]
>
> [...]
>
>> +&tlmm {
>> + gpio-reserved-ranges = < 0 4>, /* SPI (Intel MNH Pixel Visual Core) */
>
> stray space before '0'
done
>
> Konrad
--
David Heidelberg
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v3 8/8] arm64: dts: qcom: Add support for Pixel 3 and Pixel 3 XL
2025-11-18 13:31 ` David Heidelberg
@ 2025-11-18 13:41 ` Konrad Dybcio
2025-11-20 1:04 ` Doug Anderson
0 siblings, 1 reply; 23+ messages in thread
From: Konrad Dybcio @ 2025-11-18 13:41 UTC (permalink / raw)
To: David Heidelberg, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Sumit Semwal, Casey Connolly,
Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Douglas Anderson
Cc: phodina, linux-arm-msm, devicetree, linux-kernel, phone-devel,
dri-devel, Amit Pundir, Casey Connolly, Joel Selvaraj,
Vinod Koul
On 11/18/25 2:31 PM, David Heidelberg wrote:
> On 18/11/2025 13:32, Konrad Dybcio wrote:
>> On 11/18/25 12:30 PM, David Heidelberg via B4 Relay wrote:
>>> From: David Heidelberg <david@ixit.cz>
>>>
>>> This adds initial device tree support for the following phones:
>>>
>>> - Google Pixel 3 (blueline)
>>> - Google Pixel 3 XL (crosshatch)
[...]
>>> +&adsp_pas {
>>> + firmware-name = "qcom/sdm845/Google/blueline/adsp.mbn";
>>
>> Sorry if I asked this before, but are the binaries identical for
>> both devices?
>
> Yes, there is only one firmware, which crosshatch has different, but all listed in the initial bringup are used for both.
>
> To add, crosshatch was somehow not that popular device, so as I've been suggested in u-boot discussion, I would love to keep blueline everywhere.
>
> One exception is LineageOS kernels, where they go by name crosshatch, but again for the both phones.
Google seems to suggest crosshatch is the 'base'
https://android.googlesource.com/device/google/crosshatch/+/refs/heads/main
Ultimately if none of the Googlers (hello +Doug) care that much, it's up
to you to choose
Konrad
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v3 1/8] dt-bindings: arm: qcom: Add Pixel 3 and 3 XL
2025-11-18 11:30 ` [PATCH v3 1/8] dt-bindings: arm: qcom: Add Pixel 3 and " David Heidelberg via B4 Relay
@ 2025-11-19 7:16 ` Krzysztof Kozlowski
0 siblings, 0 replies; 23+ messages in thread
From: Krzysztof Kozlowski @ 2025-11-19 7:16 UTC (permalink / raw)
To: David Heidelberg
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, phodina,
linux-arm-msm, devicetree, linux-kernel, phone-devel, dri-devel
On Tue, Nov 18, 2025 at 12:30:36PM +0100, David Heidelberg wrote:
> Document the bindings for the Pixel 3 and 3 XL.
>
> Signed-off-by: David Heidelberg <david@ixit.cz>
> ---
> Documentation/devicetree/bindings/arm/qcom.yaml | 2 ++
> 1 file changed, 2 insertions(+)
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v3 4/8] drm/panel: sw43408: Introduce disable/enable functions
2025-11-18 11:30 ` [PATCH v3 4/8] drm/panel: sw43408: Introduce disable/enable functions David Heidelberg via B4 Relay
@ 2025-11-19 7:28 ` Dmitry Baryshkov
0 siblings, 0 replies; 23+ messages in thread
From: Dmitry Baryshkov @ 2025-11-19 7:28 UTC (permalink / raw)
To: david
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, phodina,
linux-arm-msm, devicetree, linux-kernel, phone-devel, dri-devel
On Tue, Nov 18, 2025 at 12:30:39PM +0100, David Heidelberg via B4 Relay wrote:
> From: David Heidelberg <david@ixit.cz>
>
> Mostly cleanup, introduced disable, enable, and reset function, which
> takeover parts of prepare and unprepare suitable for splitting.
Why?
>
> Signed-off-by: David Heidelberg <david@ixit.cz>
> ---
> drivers/gpu/drm/panel/panel-lg-sw43408.c | 83 ++++++++++++++++++++------------
> 1 file changed, 53 insertions(+), 30 deletions(-)
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v3 5/8] drm/panel: sw43408: Remove manual invocation of unprepare at remove
2025-11-18 11:30 ` [PATCH v3 5/8] drm/panel: sw43408: Remove manual invocation of unprepare at remove David Heidelberg via B4 Relay
@ 2025-11-19 7:29 ` Dmitry Baryshkov
0 siblings, 0 replies; 23+ messages in thread
From: Dmitry Baryshkov @ 2025-11-19 7:29 UTC (permalink / raw)
To: david
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, phodina,
linux-arm-msm, devicetree, linux-kernel, phone-devel, dri-devel
On Tue, Nov 18, 2025 at 12:30:40PM +0100, David Heidelberg via B4 Relay wrote:
> From: David Heidelberg <david@ixit.cz>
>
> The drm_panel_remove should take care of disable/unprepare. Remove the
> manual call from the sw43408_remove function.
>
> Signed-off-by: David Heidelberg <david@ixit.cz>
Missing Fixes: tag
> ---
> drivers/gpu/drm/panel/panel-lg-sw43408.c | 4 ----
> 1 file changed, 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/panel/panel-lg-sw43408.c b/drivers/gpu/drm/panel/panel-lg-sw43408.c
> index e5a8a9bb8d15c..d8481bdafd6dd 100644
> --- a/drivers/gpu/drm/panel/panel-lg-sw43408.c
> +++ b/drivers/gpu/drm/panel/panel-lg-sw43408.c
> @@ -319,10 +319,6 @@ static void sw43408_remove(struct mipi_dsi_device *dsi)
> struct sw43408_panel *ctx = mipi_dsi_get_drvdata(dsi);
> int ret;
>
> - ret = sw43408_unprepare(&ctx->base);
> - if (ret < 0)
> - dev_err(&dsi->dev, "failed to unprepare panel: %d\n", ret);
> -
> ret = mipi_dsi_detach(dsi);
> if (ret < 0)
> dev_err(&dsi->dev, "failed to detach from DSI host: %d\n", ret);
>
> --
> 2.51.0
>
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v3 6/8] drm/panel: sw43408: Switch to devm_regulator_bulk_get_const
2025-11-18 11:30 ` [PATCH v3 6/8] drm/panel: sw43408: Switch to devm_regulator_bulk_get_const David Heidelberg via B4 Relay
@ 2025-11-19 7:29 ` Dmitry Baryshkov
0 siblings, 0 replies; 23+ messages in thread
From: Dmitry Baryshkov @ 2025-11-19 7:29 UTC (permalink / raw)
To: david
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, phodina,
linux-arm-msm, devicetree, linux-kernel, phone-devel, dri-devel
On Tue, Nov 18, 2025 at 12:30:41PM +0100, David Heidelberg via B4 Relay wrote:
> From: David Heidelberg <david@ixit.cz>
>
> Switch to devm_regulator_bulk_get_const() to stop setting the supplies
> list in probe(), and move the regulator_bulk_data struct in static const.
>
> Signed-off-by: David Heidelberg <david@ixit.cz>
> ---
> drivers/gpu/drm/panel/panel-lg-sw43408.c | 26 ++++++++++++++------------
> 1 file changed, 14 insertions(+), 12 deletions(-)
>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v3 7/8] drm/panel: sw43408: Improve wording when reset-gpios aren't available
2025-11-18 11:30 ` [PATCH v3 7/8] drm/panel: sw43408: Improve wording when reset-gpios aren't available David Heidelberg via B4 Relay
@ 2025-11-19 7:30 ` Dmitry Baryshkov
0 siblings, 0 replies; 23+ messages in thread
From: Dmitry Baryshkov @ 2025-11-19 7:30 UTC (permalink / raw)
To: david
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, phodina,
linux-arm-msm, devicetree, linux-kernel, phone-devel, dri-devel
On Tue, Nov 18, 2025 at 12:30:42PM +0100, David Heidelberg via B4 Relay wrote:
> From: David Heidelberg <david@ixit.cz>
>
> Choose better wording.
>
> Cosmetic: also inline PTR_ERR.
>
> Signed-off-by: David Heidelberg <david@ixit.cz>
> ---
> drivers/gpu/drm/panel/panel-lg-sw43408.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v3 3/8] drm/panel: sw43408: Introduce LH546WF1-ED01 panel compatible
2025-11-18 11:30 ` [PATCH v3 3/8] drm/panel: sw43408: Introduce LH546WF1-ED01 panel compatible David Heidelberg via B4 Relay
@ 2025-11-19 7:36 ` Dmitry Baryshkov
2025-11-19 10:20 ` David Heidelberg
0 siblings, 1 reply; 23+ messages in thread
From: Dmitry Baryshkov @ 2025-11-19 7:36 UTC (permalink / raw)
To: david
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, phodina,
linux-arm-msm, devicetree, linux-kernel, phone-devel, dri-devel
On Tue, Nov 18, 2025 at 12:30:38PM +0100, David Heidelberg via B4 Relay wrote:
> From: David Heidelberg <david@ixit.cz>
>
> The supported panel is LH546WF1-ED01, add compatible and adjust the
> struct name to reflect that.
>
> The standalone compatible lg,sw43408 will continue to work, even thou
> there are no users yet.
.. no users _left_ ?
>
> Signed-off-by: David Heidelberg <david@ixit.cz>
> ---
> drivers/gpu/drm/panel/panel-lg-sw43408.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/panel/panel-lg-sw43408.c b/drivers/gpu/drm/panel/panel-lg-sw43408.c
> index 46a56ea92ad9f..bd55f6d8f2771 100644
> --- a/drivers/gpu/drm/panel/panel-lg-sw43408.c
> +++ b/drivers/gpu/drm/panel/panel-lg-sw43408.c
> @@ -149,7 +149,7 @@ static int sw43408_prepare(struct drm_panel *panel)
> return ret;
> }
>
> -static const struct drm_display_mode sw43408_mode = {
> +static const struct drm_display_mode lh546wf1_ed01_mode = {
> .clock = (1080 + 20 + 32 + 20) * (2160 + 20 + 4 + 20) * 60 / 1000,
>
> .hdisplay = 1080,
> @@ -171,7 +171,7 @@ static const struct drm_display_mode sw43408_mode = {
> static int sw43408_get_modes(struct drm_panel *panel,
> struct drm_connector *connector)
> {
> - return drm_connector_helper_get_modes_fixed(connector, &sw43408_mode);
> + return drm_connector_helper_get_modes_fixed(connector, &lh546wf1_ed01_mode);
> }
>
> static int sw43408_backlight_update_status(struct backlight_device *bl)
> @@ -214,7 +214,9 @@ static const struct drm_panel_funcs sw43408_funcs = {
> };
>
> static const struct of_device_id sw43408_of_match[] = {
> + /* legacy */
Nit: I'd read this comment in a way that both entries are legacy. Would
it be possible to adjust this somehow (e.g. put legacy on the same line
or extend it, explaining that only lg,sw43408 is legacy).
> { .compatible = "lg,sw43408", },
> + { .compatible = "lg,sw43408-lh546wf1-ed01", },
> { /* sentinel */ }
> };
> MODULE_DEVICE_TABLE(of, sw43408_of_match);
>
> --
> 2.51.0
>
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v3 3/8] drm/panel: sw43408: Introduce LH546WF1-ED01 panel compatible
2025-11-19 7:36 ` Dmitry Baryshkov
@ 2025-11-19 10:20 ` David Heidelberg
0 siblings, 0 replies; 23+ messages in thread
From: David Heidelberg @ 2025-11-19 10:20 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Sumit Semwal, Casey Connolly, Neil Armstrong,
Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, phodina,
linux-arm-msm, devicetree, linux-kernel, phone-devel, dri-devel
On 19/11/2025 08:36, Dmitry Baryshkov wrote:
> On Tue, Nov 18, 2025 at 12:30:38PM +0100, David Heidelberg via B4 Relay wrote:
>> From: David Heidelberg <david@ixit.cz>
>>
>> The supported panel is LH546WF1-ED01, add compatible and adjust the
>> struct name to reflect that.
>>
>> The standalone compatible lg,sw43408 will continue to work, even thou
>> there are no users yet.
>
> .. no users _left_ ?
The compatible users wasn't introduced in the first place (the driver is
written for Pixel 3, but the device-tree didn't got in back then).
[...]
>> static int sw43408_backlight_update_status(struct backlight_device *bl)
>> @@ -214,7 +214,9 @@ static const struct drm_panel_funcs sw43408_funcs = {
>> };
>>
>> static const struct of_device_id sw43408_of_match[] = {
>> + /* legacy */
>
> Nit: I'd read this comment in a way that both entries are legacy. Would
> it be possible to adjust this somehow (e.g. put legacy on the same line
> or extend it, explaining that only lg,sw43408 is legacy).
Sure, I'll inline it.
Thanks
David
>
>> { .compatible = "lg,sw43408", },
>> + { .compatible = "lg,sw43408-lh546wf1-ed01", },
>
>> { /* sentinel */ }
>> };
>> MODULE_DEVICE_TABLE(of, sw43408_of_match);
>>
>> --
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH v3 8/8] arm64: dts: qcom: Add support for Pixel 3 and Pixel 3 XL
2025-11-18 13:41 ` Konrad Dybcio
@ 2025-11-20 1:04 ` Doug Anderson
0 siblings, 0 replies; 23+ messages in thread
From: Doug Anderson @ 2025-11-20 1:04 UTC (permalink / raw)
To: Konrad Dybcio
Cc: David Heidelberg, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Sumit Semwal, Casey Connolly,
Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, phodina,
linux-arm-msm, devicetree, linux-kernel, phone-devel, dri-devel,
Amit Pundir, Casey Connolly, Joel Selvaraj, Vinod Koul
Hi,
On Tue, Nov 18, 2025 at 5:41 AM Konrad Dybcio
<konrad.dybcio@oss.qualcomm.com> wrote:
>
> > Yes, there is only one firmware, which crosshatch has different, but all listed in the initial bringup are used for both.
> >
> > To add, crosshatch was somehow not that popular device, so as I've been suggested in u-boot discussion, I would love to keep blueline everywhere.
> >
> > One exception is LineageOS kernels, where they go by name crosshatch, but again for the both phones.
>
> Google seems to suggest crosshatch is the 'base'
>
> https://android.googlesource.com/device/google/crosshatch/+/refs/heads/main
>
> Ultimately if none of the Googlers (hello +Doug) care that much, it's up
> to you to choose
I haven't dug into this patch series and don't personally know a lot
of the history of older Pixel code names before ~Pixel 6, but in
general I wouldn't expect Google to have much of an opinion about
Pixel 3 support upstream. I'd say leaving it up to the people doing
the work sounds good to me. :-)
-Doug
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2025-11-20 1:04 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-11-18 11:30 [PATCH v3 0/8] Add support for Pixel 3 and Pixel 3 XL David Heidelberg via B4 Relay
2025-11-18 11:30 ` [PATCH v3 1/8] dt-bindings: arm: qcom: Add Pixel 3 and " David Heidelberg via B4 Relay
2025-11-19 7:16 ` Krzysztof Kozlowski
2025-11-18 11:30 ` [PATCH v3 2/8] dt-bindings: panel: sw43408: adjust to reflect the DDIC and panel used David Heidelberg via B4 Relay
2025-11-18 12:29 ` Rob Herring (Arm)
2025-11-18 12:33 ` Konrad Dybcio
2025-11-18 12:34 ` David Heidelberg
2025-11-18 11:30 ` [PATCH v3 3/8] drm/panel: sw43408: Introduce LH546WF1-ED01 panel compatible David Heidelberg via B4 Relay
2025-11-19 7:36 ` Dmitry Baryshkov
2025-11-19 10:20 ` David Heidelberg
2025-11-18 11:30 ` [PATCH v3 4/8] drm/panel: sw43408: Introduce disable/enable functions David Heidelberg via B4 Relay
2025-11-19 7:28 ` Dmitry Baryshkov
2025-11-18 11:30 ` [PATCH v3 5/8] drm/panel: sw43408: Remove manual invocation of unprepare at remove David Heidelberg via B4 Relay
2025-11-19 7:29 ` Dmitry Baryshkov
2025-11-18 11:30 ` [PATCH v3 6/8] drm/panel: sw43408: Switch to devm_regulator_bulk_get_const David Heidelberg via B4 Relay
2025-11-19 7:29 ` Dmitry Baryshkov
2025-11-18 11:30 ` [PATCH v3 7/8] drm/panel: sw43408: Improve wording when reset-gpios aren't available David Heidelberg via B4 Relay
2025-11-19 7:30 ` Dmitry Baryshkov
2025-11-18 11:30 ` [PATCH v3 8/8] arm64: dts: qcom: Add support for Pixel 3 and Pixel 3 XL David Heidelberg via B4 Relay
2025-11-18 12:32 ` Konrad Dybcio
2025-11-18 13:31 ` David Heidelberg
2025-11-18 13:41 ` Konrad Dybcio
2025-11-20 1:04 ` Doug Anderson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®