sm8250-current: Bump to v6.9
This commit is contained in:
parent
c14e1664b6
commit
8365343dd9
@ -15,9 +15,8 @@ enable_extension "image-output-abl"
|
||||
case $BRANCH in
|
||||
|
||||
current)
|
||||
declare -g KERNEL_MAJOR_MINOR="6.7" # Major and minor versions of this kernel.
|
||||
declare -g KERNELBRANCH='tag:v6.7.5'
|
||||
declare -g KERNELPATCHDIR='archive/sm8250-6.7'
|
||||
declare -g KERNEL_MAJOR_MINOR="6.9" # Major and minor versions of this kernel.
|
||||
declare -g KERNELBRANCH='branch:linux-6.9.y'
|
||||
declare -g -i KERNEL_GIT_CACHE_TTL=120 # 2 minutes; this is a high-traffic repo
|
||||
;;
|
||||
|
||||
|
||||
@ -1,83 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
Date: Sun, 14 Mar 2021 04:52:34 +0300
|
||||
Subject: drm/msm/dpu1: improve support for active CTLs
|
||||
|
||||
- Support setting master interface if several INTFs are to be handled by
|
||||
a single CTL
|
||||
|
||||
- Support setting handling several MERGE_3D instances using a single
|
||||
CTL.
|
||||
|
||||
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
---
|
||||
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c | 15 ++++++++++
|
||||
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h | 2 ++
|
||||
2 files changed, 17 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c
|
||||
index 86182c734606..4ecffbcdba20 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c
|
||||
@@ -510,6 +510,7 @@ static void dpu_hw_ctl_intf_cfg_v1(struct dpu_hw_ctl *ctx,
|
||||
u32 intf_active = 0;
|
||||
u32 wb_active = 0;
|
||||
u32 mode_sel = 0;
|
||||
+ u32 merge_3d_active = 0;
|
||||
|
||||
/* CTL_TOP[31:28] carries group_id to collate CTL paths
|
||||
* per VM. Explicitly disable it until VM support is
|
||||
@@ -530,16 +531,30 @@ static void dpu_hw_ctl_intf_cfg_v1(struct dpu_hw_ctl *ctx,
|
||||
if (cfg->wb)
|
||||
wb_active |= BIT(cfg->wb - WB_0);
|
||||
|
||||
+ merge_3d_active = DPU_REG_READ(c, CTL_MERGE_3D_ACTIVE);
|
||||
+ if (cfg->merge_3d)
|
||||
+ merge_3d_active |= BIT(cfg->merge_3d - MERGE_3D_0);
|
||||
+
|
||||
DPU_REG_WRITE(c, CTL_TOP, mode_sel);
|
||||
DPU_REG_WRITE(c, CTL_INTF_ACTIVE, intf_active);
|
||||
DPU_REG_WRITE(c, CTL_WB_ACTIVE, wb_active);
|
||||
|
||||
+ if (cfg->intf_master)
|
||||
+ DPU_REG_WRITE(c, CTL_INTF_MASTER, BIT(cfg->intf_master - INTF_0));
|
||||
+
|
||||
if (cfg->merge_3d)
|
||||
DPU_REG_WRITE(c, CTL_MERGE_3D_ACTIVE,
|
||||
BIT(cfg->merge_3d - MERGE_3D_0));
|
||||
|
||||
if (cfg->dsc)
|
||||
DPU_REG_WRITE(c, CTL_DSC_ACTIVE, cfg->dsc);
|
||||
+ if (cfg->merge_3d)
|
||||
+ DPU_REG_WRITE(c, CTL_MERGE_3D_ACTIVE, merge_3d_active);
|
||||
+
|
||||
+ if (cfg->intf_master)
|
||||
+ DPU_DEBUG_DRIVER("ACTIVE: %x %x %lx\n", intf_active, merge_3d_active, BIT(cfg->intf_master - INTF_0));
|
||||
+ else
|
||||
+ DPU_DEBUG_DRIVER("ACTIVE: %x %x\n", intf_active, merge_3d_active);
|
||||
}
|
||||
|
||||
static void dpu_hw_ctl_intf_cfg(struct dpu_hw_ctl *ctx,
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h
|
||||
index 1c242298ff2e..36dd4e91a0b4 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h
|
||||
@@ -36,6 +36,7 @@ struct dpu_hw_stage_cfg {
|
||||
/**
|
||||
* struct dpu_hw_intf_cfg :Describes how the DPU writes data to output interface
|
||||
* @intf : Interface id
|
||||
+ * @intf_master: Master interface id in the dual pipe topology
|
||||
* @mode_3d: 3d mux configuration
|
||||
* @merge_3d: 3d merge block used
|
||||
* @intf_mode_sel: Interface mode, cmd / vid
|
||||
@@ -44,6 +45,7 @@ struct dpu_hw_stage_cfg {
|
||||
*/
|
||||
struct dpu_hw_intf_cfg {
|
||||
enum dpu_intf intf;
|
||||
+ enum dpu_intf intf_master;
|
||||
enum dpu_wb wb;
|
||||
enum dpu_3d_blend_mode mode_3d;
|
||||
enum dpu_merge_3d merge_3d;
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: amazingfate <liujianfeng1994@gmail.com>
|
||||
Date: Mon, 16 Oct 2023 13:28:48 +0800
|
||||
Subject: drm/panel: nt36523: Fix for kernel 6.5
|
||||
|
||||
---
|
||||
drivers/gpu/drm/panel/panel-novatek-nt36523.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/panel/panel-novatek-nt36523.c b/drivers/gpu/drm/panel/panel-novatek-nt36523.c
|
||||
index a189ce236328..c8c6f0b3f613 100644
|
||||
--- a/drivers/gpu/drm/panel/panel-novatek-nt36523.c
|
||||
+++ b/drivers/gpu/drm/panel/panel-novatek-nt36523.c
|
||||
@@ -1262,6 +1262,7 @@ static int nt36523_probe(struct mipi_dsi_device *dsi)
|
||||
|
||||
pinfo->dsi[0] = dsi;
|
||||
mipi_dsi_set_drvdata(dsi, pinfo);
|
||||
+ pinfo->panel.prepare_prev_first = true;
|
||||
drm_panel_init(&pinfo->panel, dev, &nt36523_panel_funcs, DRM_MODE_CONNECTOR_DSI);
|
||||
|
||||
ret = of_drm_get_panel_orientation(dev->of_node, &pinfo->orientation);
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -1,24 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: amazingfate <liujianfeng1994@gmail.com>
|
||||
Date: Fri, 3 Nov 2023 11:20:40 +0800
|
||||
Subject: Enable non-coherent dst bufs for Venus V4L2 driver
|
||||
|
||||
---
|
||||
drivers/media/platform/qcom/venus/vdec.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c
|
||||
index dbf305cec120..14b5d2ebbdf2 100644
|
||||
--- a/drivers/media/platform/qcom/venus/vdec.c
|
||||
+++ b/drivers/media/platform/qcom/venus/vdec.c
|
||||
@@ -1659,6 +1659,7 @@ static int m2m_queue_init(void *priv, struct vb2_queue *src_vq,
|
||||
dst_vq->min_buffers_needed = 0;
|
||||
dst_vq->dev = inst->core->dev;
|
||||
dst_vq->lock = &inst->ctx_q_lock;
|
||||
+ dst_vq->allow_cache_hints = 1;
|
||||
return vb2_queue_init(dst_vq);
|
||||
}
|
||||
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -1,40 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jianhua Lu <lujianhua000@gmail.com>
|
||||
Date: Sun, 26 Nov 2023 10:28:48 +0800
|
||||
Subject: arm64: dts: qcom: sm8250-xiaomi-elish: Fix typos
|
||||
|
||||
There are two typos in this dtsi, so fix it.
|
||||
classis -> chassis.
|
||||
80700000 -> 80600000
|
||||
|
||||
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
|
||||
Signed-off-by: Jianhua Lu <lujianhua000@gmail.com>
|
||||
---
|
||||
arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
index 45775428cb92..69fab5a917f2 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
@@ -25,7 +25,7 @@
|
||||
/delete-node/ &xbl_aop_mem;
|
||||
|
||||
/ {
|
||||
- classis-type = "tablet";
|
||||
+ chassis-type = "tablet";
|
||||
|
||||
/* required for bootloader to select correct board */
|
||||
qcom,msm-id = <QCOM_ID_SM8250 0x20001>; /* SM8250 v2.1 */
|
||||
@@ -139,7 +139,7 @@ qca639x: qca639x {
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
- xbl_aop_mem: xbl-aop@80700000 {
|
||||
+ xbl_aop_mem: xbl-aop@80600000 {
|
||||
reg = <0x0 0x80600000 0x0 0x260000>;
|
||||
no-map;
|
||||
};
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -1,97 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jianhua Lu <lujianhua000@gmail.com>
|
||||
Date: Sun, 26 Nov 2023 10:28:49 +0800
|
||||
Subject: arm64: dts: qcom: sm8250-xiaomi-elish: Add pm8150b type-c node and
|
||||
enable usb otg
|
||||
|
||||
Add type-c node to feature otg function and set usb-role-switch property
|
||||
for usb_1_dwc3 to enable usb otg.
|
||||
|
||||
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
|
||||
Signed-off-by: Jianhua Lu <lujianhua000@gmail.com>
|
||||
---
|
||||
arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi | 43 +++++++++-
|
||||
1 file changed, 42 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
index 69fab5a917f2..b55bcdbcbe2c 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
|
||||
#include <dt-bindings/sound/qcom,q6afe.h>
|
||||
#include <dt-bindings/sound/qcom,q6asm.h>
|
||||
+#include <dt-bindings/usb/pd.h>
|
||||
#include "sm8250.dtsi"
|
||||
#include "pm8150.dtsi"
|
||||
#include "pm8150b.dtsi"
|
||||
@@ -801,6 +802,41 @@ vol_up_n: vol-up-n-state {
|
||||
};
|
||||
};
|
||||
|
||||
+&pm8150b_typec {
|
||||
+ vdd-pdphy-supply = <&vreg_l2a_3p1>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ connector {
|
||||
+ compatible = "usb-c-connector";
|
||||
+
|
||||
+ power-role = "source";
|
||||
+ data-role = "dual";
|
||||
+ self-powered;
|
||||
+
|
||||
+ source-pdos = <PDO_FIXED(5000, 3000,
|
||||
+ PDO_FIXED_DUAL_ROLE |
|
||||
+ PDO_FIXED_USB_COMM |
|
||||
+ PDO_FIXED_DATA_SWAP)>;
|
||||
+
|
||||
+ ports {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <0>;
|
||||
+
|
||||
+ port@0 {
|
||||
+ reg = <0>;
|
||||
+
|
||||
+ pm8150b_role_switch_in: endpoint {
|
||||
+ remote-endpoint = <&usb_1_role_switch_out>;
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&pm8150b_vbus {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
&pon_pwrkey {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -989,11 +1025,12 @@ &usb_1 {
|
||||
};
|
||||
|
||||
&usb_1_dwc3 {
|
||||
- dr_mode = "peripheral";
|
||||
+ dr_mode = "otg";
|
||||
maximum-speed = "high-speed";
|
||||
/* Remove USB3 phy */
|
||||
phys = <&usb_1_hsphy>;
|
||||
phy-names = "usb2-phy";
|
||||
+ usb-role-switch;
|
||||
};
|
||||
|
||||
&usb_1_hsphy {
|
||||
@@ -1003,6 +1040,10 @@ &usb_1_hsphy {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&usb_1_role_switch_out {
|
||||
+ remote-endpoint = <&pm8150b_role_switch_in>;
|
||||
+};
|
||||
+
|
||||
&ufs_mem_hc {
|
||||
vcc-supply = <&vreg_l17a_3p0>;
|
||||
vcc-max-microamp = <800000>;
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -1,62 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Abhinav Kumar <quic_abhinavk@quicinc.com>
|
||||
Date: Mon, 11 Sep 2023 15:16:27 -0700
|
||||
Subject: drm/msm/dpu: try multirect based on mdp clock limits
|
||||
|
||||
It's certainly possible that for large resolutions a single DPU SSPP
|
||||
cannot process the image without exceeding the MDP clock limits but
|
||||
it can still process it in multirect mode because the source rectangles
|
||||
will get divided and can fall within the MDP clock limits.
|
||||
|
||||
If the SSPP cannot process the image even in multirect mode, then it
|
||||
will be rejected in dpu_plane_atomic_check_pipe().
|
||||
|
||||
Hence try using multirect for resolutions which cannot be processed
|
||||
by a single SSPP without exceeding the MDP clock limits.
|
||||
|
||||
changes in v2:
|
||||
- use crtc_state's adjusted_mode instead of mode
|
||||
- fix the UBWC condition to check maxlinewidth
|
||||
|
||||
Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
|
||||
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
Tested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
---
|
||||
drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
|
||||
index 3eef5e025e12..1e0da38c6f2a 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
|
||||
@@ -824,6 +824,8 @@ static int dpu_plane_atomic_check(struct drm_plane *plane,
|
||||
plane);
|
||||
int ret = 0, min_scale;
|
||||
struct dpu_plane *pdpu = to_dpu_plane(plane);
|
||||
+ struct dpu_kms *kms = _dpu_plane_get_kms(&pdpu->base);
|
||||
+ u64 max_mdp_clk_rate = kms->perf.max_core_clk_rate;
|
||||
struct dpu_plane_state *pstate = to_dpu_plane_state(new_plane_state);
|
||||
struct dpu_sw_pipe *pipe = &pstate->pipe;
|
||||
struct dpu_sw_pipe *r_pipe = &pstate->r_pipe;
|
||||
@@ -892,14 +894,16 @@ static int dpu_plane_atomic_check(struct drm_plane *plane,
|
||||
|
||||
max_linewidth = pdpu->catalog->caps->max_linewidth;
|
||||
|
||||
- if (drm_rect_width(&pipe_cfg->src_rect) > max_linewidth) {
|
||||
+ if ((drm_rect_width(&pipe_cfg->src_rect) > max_linewidth) ||
|
||||
+ _dpu_plane_calc_clk(&crtc_state->adjusted_mode, pipe_cfg) > max_mdp_clk_rate) {
|
||||
/*
|
||||
* In parallel multirect case only the half of the usual width
|
||||
* is supported for tiled formats. If we are here, we know that
|
||||
* full width is more than max_linewidth, thus each rect is
|
||||
* wider than allowed.
|
||||
*/
|
||||
- if (DPU_FORMAT_IS_UBWC(fmt)) {
|
||||
+ if (DPU_FORMAT_IS_UBWC(fmt) &&
|
||||
+ drm_rect_width(&pipe_cfg->src_rect) > max_linewidth) {
|
||||
DPU_DEBUG_PLANE(pdpu, "invalid src " DRM_RECT_FMT " line:%u, tiled format\n",
|
||||
DRM_RECT_ARG(&pipe_cfg->src_rect), max_linewidth);
|
||||
return -E2BIG;
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -1,40 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jianhua Lu <lujianhua000@gmail.com>
|
||||
Date: Mon, 8 Jan 2024 21:44:44 +0800
|
||||
Subject: drm/panel: nt36523: switch to 120Hz for xiaomi,elish panel
|
||||
|
||||
After commit e6c0de5f4450 ("drm/msm/dpu: try multirect based on mdp clock limits") merged,
|
||||
120Hz is working on xiaomi,elish panel, so enable it.
|
||||
|
||||
Signed-off-by: Jianhua Lu <lujianhua000@gmail.com>
|
||||
---
|
||||
drivers/gpu/drm/panel/panel-novatek-nt36523.c | 6 ++----
|
||||
1 file changed, 2 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/panel/panel-novatek-nt36523.c b/drivers/gpu/drm/panel/panel-novatek-nt36523.c
|
||||
index c8c6f0b3f613..d3954b1ca944 100644
|
||||
--- a/drivers/gpu/drm/panel/panel-novatek-nt36523.c
|
||||
+++ b/drivers/gpu/drm/panel/panel-novatek-nt36523.c
|
||||
@@ -933,8 +933,7 @@ static int j606f_boe_init_sequence(struct panel_info *pinfo)
|
||||
|
||||
static const struct drm_display_mode elish_boe_modes[] = {
|
||||
{
|
||||
- /* There is only one 120 Hz timing, but it doesn't work perfectly, 104 Hz preferred */
|
||||
- .clock = (1600 + 60 + 8 + 60) * (2560 + 26 + 4 + 168) * 104 / 1000,
|
||||
+ .clock = (1600 + 60 + 8 + 60) * (2560 + 26 + 4 + 168) * 120 / 1000,
|
||||
.hdisplay = 1600,
|
||||
.hsync_start = 1600 + 60,
|
||||
.hsync_end = 1600 + 60 + 8,
|
||||
@@ -948,8 +947,7 @@ static const struct drm_display_mode elish_boe_modes[] = {
|
||||
|
||||
static const struct drm_display_mode elish_csot_modes[] = {
|
||||
{
|
||||
- /* There is only one 120 Hz timing, but it doesn't work perfectly, 104 Hz preferred */
|
||||
- .clock = (1600 + 200 + 40 + 52) * (2560 + 26 + 4 + 168) * 104 / 1000,
|
||||
+ .clock = (1600 + 200 + 40 + 52) * (2560 + 26 + 4 + 168) * 120 / 1000,
|
||||
.hdisplay = 1600,
|
||||
.hsync_start = 1600 + 200,
|
||||
.hsync_end = 1600 + 200 + 40,
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -1,467 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: FantasyGmm <16450052+FantasyGmm@users.noreply.github.com>
|
||||
Date: Mon, 29 Jan 2024 19:05:12 +0800
|
||||
Subject: Patching kernel arm64 files drivers/gpu/drm/panel/Kconfig
|
||||
drivers/gpu/drm/panel/Makefile drivers/gpu/drm/panel/panel-xiaomi-umi-csot.c
|
||||
|
||||
Signed-off-by: FantasyGmm <16450052+FantasyGmm@users.noreply.github.com>
|
||||
---
|
||||
drivers/gpu/drm/panel/Kconfig | 9 +
|
||||
drivers/gpu/drm/panel/Makefile | 1 +
|
||||
drivers/gpu/drm/panel/panel-xiaomi-umi-csot.c | 416 ++++++++++
|
||||
3 files changed, 426 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
|
||||
index 99e14dc212ec..2ab846e5cfaf 100644
|
||||
--- a/drivers/gpu/drm/panel/Kconfig
|
||||
+++ b/drivers/gpu/drm/panel/Kconfig
|
||||
@@ -8,6 +8,15 @@ config DRM_PANEL
|
||||
menu "Display Panels"
|
||||
depends on DRM && DRM_PANEL
|
||||
|
||||
+config DRM_PANEL_XIAOMI_UMI_CSOT
|
||||
+ tristate "Xiaomi Mi 10 (umi) 1080x2340 CSOT AMOLED panel"
|
||||
+ depends on OF
|
||||
+ depends on DRM_MIPI_DSI
|
||||
+ depends on BACKLIGHT_CLASS_DEVICE
|
||||
+ help
|
||||
+ Say Y here if you want to enable support for the CSOT 1080x2340
|
||||
+ dsc cmd mode panel as found in Xiaomi Mi 10 devices.
|
||||
+
|
||||
config DRM_PANEL_ABT_Y030XX067A
|
||||
tristate "ABT Y030XX067A 320x480 LCD panel"
|
||||
depends on OF && SPI
|
||||
diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
|
||||
index d10c3de51c6d..687a239df8b1 100644
|
||||
--- a/drivers/gpu/drm/panel/Makefile
|
||||
+++ b/drivers/gpu/drm/panel/Makefile
|
||||
@@ -88,3 +88,4 @@ obj-$(CONFIG_DRM_PANEL_VISIONOX_VTDR6130) += panel-visionox-vtdr6130.o
|
||||
obj-$(CONFIG_DRM_PANEL_VISIONOX_R66451) += panel-visionox-r66451.o
|
||||
obj-$(CONFIG_DRM_PANEL_WIDECHIPS_WS2401) += panel-widechips-ws2401.o
|
||||
obj-$(CONFIG_DRM_PANEL_XINPENG_XPP055C272) += panel-xinpeng-xpp055c272.o
|
||||
+obj-$(CONFIG_DRM_PANEL_XIAOMI_UMI_CSOT) += panel-xiaomi-umi-csot.o
|
||||
diff --git a/drivers/gpu/drm/panel/panel-xiaomi-umi-csot.c b/drivers/gpu/drm/panel/panel-xiaomi-umi-csot.c
|
||||
new file mode 100644
|
||||
index 000000000000..5e1d3ec9c08d
|
||||
--- /dev/null
|
||||
+++ b/drivers/gpu/drm/panel/panel-xiaomi-umi-csot.c
|
||||
@@ -0,0 +1,416 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0-only
|
||||
+// Copyright (c) 2024 FIXME
|
||||
+// Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree:
|
||||
+// Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME)
|
||||
+
|
||||
+#include <linux/backlight.h>
|
||||
+#include <linux/delay.h>
|
||||
+#include <linux/gpio/consumer.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/of.h>
|
||||
+
|
||||
+#include <video/mipi_display.h>
|
||||
+
|
||||
+#include <drm/display/drm_dsc.h>
|
||||
+#include <drm/display/drm_dsc_helper.h>
|
||||
+#include <drm/drm_mipi_dsi.h>
|
||||
+#include <drm/drm_modes.h>
|
||||
+#include <drm/drm_panel.h>
|
||||
+
|
||||
+struct xiaomi_umi_csot {
|
||||
+ struct drm_panel panel;
|
||||
+ struct mipi_dsi_device *dsi;
|
||||
+ struct drm_dsc_config dsc;
|
||||
+ struct gpio_desc *reset_gpio;
|
||||
+ bool prepared;
|
||||
+};
|
||||
+
|
||||
+static inline
|
||||
+struct xiaomi_umi_csot *to_xiaomi_umi_csot(struct drm_panel *panel)
|
||||
+{
|
||||
+ return container_of(panel, struct xiaomi_umi_csot, panel);
|
||||
+}
|
||||
+
|
||||
+static void xiaomi_umi_csot_reset(struct xiaomi_umi_csot *ctx)
|
||||
+{
|
||||
+ gpiod_set_value_cansleep(ctx->reset_gpio, 0);
|
||||
+ usleep_range(1000, 2000);
|
||||
+ gpiod_set_value_cansleep(ctx->reset_gpio, 1);
|
||||
+ usleep_range(1000, 2000);
|
||||
+ gpiod_set_value_cansleep(ctx->reset_gpio, 0);
|
||||
+ usleep_range(10000, 11000);
|
||||
+}
|
||||
+
|
||||
+static int xiaomi_umi_csot_on(struct xiaomi_umi_csot *ctx)
|
||||
+{
|
||||
+ struct mipi_dsi_device *dsi = ctx->dsi;
|
||||
+ struct device *dev = &dsi->dev;
|
||||
+ int ret;
|
||||
+
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x08, 0x07);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xc0, 0x10);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x08, 0x03);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xd4, 0x00);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x08, 0x00);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x6f, 0x01);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xb5, 0x00);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x6f, 0x01);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xc0, 0x33);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xb2, 0x58, 0x00, 0x08, 0x08);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x6f, 0x01);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xca, 0x30);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xb5, 0x80);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x6f, 0x01);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xc6, 0x13);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x08, 0x01);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x6f, 0x01);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xd2, 0x00, 0x12, 0x61, 0x25, 0x43, 0x07);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xb7, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xb8, 0x48, 0x48, 0x48, 0x48);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x6f, 0x01);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xb3, 0x13);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x6f, 0x01);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xb4, 0x13);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xcd, 0x05, 0x61);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x08, 0x05);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xb3, 0x88, 0x80);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xb5, 0x04, 0x01);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xb7, 0x04, 0x00, 0x00, 0x01);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xb8, 0x04, 0x00, 0x00, 0x01);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xff, 0xaa, 0x55, 0xa5, 0x81);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x6f, 0x0d);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xf3, 0xab);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x6f, 0x05);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xfd, 0x00, 0xda);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xff, 0xaa, 0x55, 0xa5, 0x80);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x6f, 0x0a);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xfc, 0x02);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x6f, 0x36);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xf6, 0x42);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x00, 0x00);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x3b, 0x00, 0x0c, 0x00, 0x04);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x90, 0x01);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x93,
|
||||
+ 0x89, 0x28, 0x00, 0x0c, 0x02, 0x00, 0x02, 0x0e,
|
||||
+ 0x01, 0x1f, 0x00, 0x07, 0x08, 0xbb, 0x08, 0x7a,
|
||||
+ 0x10, 0xf0);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x03, 0x11);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_WRITE_MEMORY_START);
|
||||
+
|
||||
+ ret = mipi_dsi_dcs_set_tear_on(dsi, MIPI_DSI_DCS_TEAR_MODE_VBLANK);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "Failed to set tear on: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_WRITE_CONTROL_DISPLAY, 0x20);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x51, 0x00, 0x00, 0x00, 0x00);
|
||||
+
|
||||
+ ret = mipi_dsi_dcs_set_column_address(dsi, 0x0000, 0x0437);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "Failed to set column address: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ ret = mipi_dsi_dcs_set_page_address(dsi, 0x0000, 0x0923);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "Failed to set page address: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x08, 0x00);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xb4,
|
||||
+ 0xcb, 0xbb, 0xbb, 0xaa, 0x99, 0x77, 0x66, 0x00,
|
||||
+ 0x00, 0x00, 0xb4, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
|
||||
+ 0x86, 0x86, 0x3c, 0x3c, 0xf2, 0xf2, 0xa8, 0xa8,
|
||||
+ 0x36, 0x36, 0x36, 0x36, 0x0a);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0x2f, 0x01);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, MIPI_DCS_SET_GAMMA_CURVE, 0x01);
|
||||
+
|
||||
+ ret = mipi_dsi_dcs_exit_sleep_mode(dsi);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "Failed to exit sleep mode: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+ msleep(100);
|
||||
+
|
||||
+ ret = mipi_dsi_dcs_set_display_on(dsi);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "Failed to set display on: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xf0, 0x55, 0xaa, 0x52, 0x08, 0x00);
|
||||
+ mipi_dsi_dcs_write_seq(dsi, 0xb5, 0x84);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int xiaomi_umi_csot_off(struct xiaomi_umi_csot *ctx)
|
||||
+{
|
||||
+ struct mipi_dsi_device *dsi = ctx->dsi;
|
||||
+ struct device *dev = &dsi->dev;
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = mipi_dsi_dcs_set_display_off(dsi);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "Failed to set display off: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ ret = mipi_dsi_dcs_enter_sleep_mode(dsi);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "Failed to enter sleep mode: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+ msleep(120);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int xiaomi_umi_csot_prepare(struct drm_panel *panel)
|
||||
+{
|
||||
+ struct xiaomi_umi_csot *ctx = to_xiaomi_umi_csot(panel);
|
||||
+ struct device *dev = &ctx->dsi->dev;
|
||||
+ struct drm_dsc_picture_parameter_set pps;
|
||||
+ int ret;
|
||||
+
|
||||
+ if (ctx->prepared)
|
||||
+ return 0;
|
||||
+
|
||||
+ xiaomi_umi_csot_reset(ctx);
|
||||
+
|
||||
+ ret = xiaomi_umi_csot_on(ctx);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "Failed to initialize panel: %d\n", ret);
|
||||
+ gpiod_set_value_cansleep(ctx->reset_gpio, 1);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ drm_dsc_pps_payload_pack(&pps, &ctx->dsc);
|
||||
+
|
||||
+ ret = mipi_dsi_picture_parameter_set(ctx->dsi, &pps);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(panel->dev, "failed to transmit PPS: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ ret = mipi_dsi_compression_mode(ctx->dsi, true);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "failed to enable compression mode: %d\n", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ msleep(28); /* TODO: Is this panel-dependent? */
|
||||
+
|
||||
+ ctx->prepared = true;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int xiaomi_umi_csot_unprepare(struct drm_panel *panel)
|
||||
+{
|
||||
+ struct xiaomi_umi_csot *ctx = to_xiaomi_umi_csot(panel);
|
||||
+ struct device *dev = &ctx->dsi->dev;
|
||||
+ int ret;
|
||||
+
|
||||
+ if (!ctx->prepared)
|
||||
+ return 0;
|
||||
+
|
||||
+ ret = xiaomi_umi_csot_off(ctx);
|
||||
+ if (ret < 0)
|
||||
+ dev_err(dev, "Failed to un-initialize panel: %d\n", ret);
|
||||
+
|
||||
+ gpiod_set_value_cansleep(ctx->reset_gpio, 1);
|
||||
+
|
||||
+ ctx->prepared = false;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static const struct drm_display_mode xiaomi_umi_csot_mode = {
|
||||
+ .clock = (1080 + 16 + 8 + 8) * (2340 + 600 + 32 + 560) * 60 / 1000,
|
||||
+ .hdisplay = 1080,
|
||||
+ .hsync_start = 1080 + 16,
|
||||
+ .hsync_end = 1080 + 16 + 8,
|
||||
+ .htotal = 1080 + 16 + 8 + 8,
|
||||
+ .vdisplay = 2340,
|
||||
+ .vsync_start = 2340 + 600,
|
||||
+ .vsync_end = 2340 + 600 + 32,
|
||||
+ .vtotal = 2340 + 600 + 32 + 560,
|
||||
+ .width_mm = 710,
|
||||
+ .height_mm = 1537,
|
||||
+};
|
||||
+
|
||||
+static int xiaomi_umi_csot_get_modes(struct drm_panel *panel,
|
||||
+ struct drm_connector *connector)
|
||||
+{
|
||||
+ struct drm_display_mode *mode;
|
||||
+
|
||||
+ mode = drm_mode_duplicate(connector->dev, &xiaomi_umi_csot_mode);
|
||||
+ if (!mode)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ drm_mode_set_name(mode);
|
||||
+
|
||||
+ mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
|
||||
+ connector->display_info.width_mm = mode->width_mm;
|
||||
+ connector->display_info.height_mm = mode->height_mm;
|
||||
+ drm_mode_probed_add(connector, mode);
|
||||
+
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+static const struct drm_panel_funcs xiaomi_umi_csot_panel_funcs = {
|
||||
+ .prepare = xiaomi_umi_csot_prepare,
|
||||
+ .unprepare = xiaomi_umi_csot_unprepare,
|
||||
+ .get_modes = xiaomi_umi_csot_get_modes,
|
||||
+};
|
||||
+
|
||||
+static int xiaomi_umi_csot_bl_update_status(struct backlight_device *bl)
|
||||
+{
|
||||
+ struct mipi_dsi_device *dsi = bl_get_data(bl);
|
||||
+ u16 brightness = backlight_get_brightness(bl);
|
||||
+ int ret;
|
||||
+
|
||||
+ dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
|
||||
+
|
||||
+ ret = mipi_dsi_dcs_set_display_brightness_large(dsi, brightness);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ dsi->mode_flags |= MIPI_DSI_MODE_LPM;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+// TODO: Check if /sys/class/backlight/.../actual_brightness actually returns
|
||||
+// correct values. If not, remove this function.
|
||||
+static int xiaomi_umi_csot_bl_get_brightness(struct backlight_device *bl)
|
||||
+{
|
||||
+ struct mipi_dsi_device *dsi = bl_get_data(bl);
|
||||
+ u16 brightness;
|
||||
+ int ret;
|
||||
+
|
||||
+ dsi->mode_flags &= ~MIPI_DSI_MODE_LPM;
|
||||
+
|
||||
+ ret = mipi_dsi_dcs_get_display_brightness_large(dsi, &brightness);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ dsi->mode_flags |= MIPI_DSI_MODE_LPM;
|
||||
+
|
||||
+ return brightness;
|
||||
+}
|
||||
+
|
||||
+static const struct backlight_ops xiaomi_umi_csot_bl_ops = {
|
||||
+ .update_status = xiaomi_umi_csot_bl_update_status,
|
||||
+ .get_brightness = xiaomi_umi_csot_bl_get_brightness,
|
||||
+};
|
||||
+
|
||||
+static struct backlight_device *
|
||||
+xiaomi_umi_csot_create_backlight(struct mipi_dsi_device *dsi)
|
||||
+{
|
||||
+ struct device *dev = &dsi->dev;
|
||||
+ const struct backlight_properties props = {
|
||||
+ .type = BACKLIGHT_RAW,
|
||||
+ .brightness = 2047,
|
||||
+ .max_brightness = 2047,
|
||||
+ };
|
||||
+
|
||||
+ return devm_backlight_device_register(dev, dev_name(dev), dev, dsi,
|
||||
+ &xiaomi_umi_csot_bl_ops, &props);
|
||||
+}
|
||||
+
|
||||
+static int xiaomi_umi_csot_probe(struct mipi_dsi_device *dsi)
|
||||
+{
|
||||
+ struct device *dev = &dsi->dev;
|
||||
+ struct xiaomi_umi_csot *ctx;
|
||||
+ int ret;
|
||||
+
|
||||
+ ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);
|
||||
+ if (!ctx)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
|
||||
+ if (IS_ERR(ctx->reset_gpio))
|
||||
+ return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio),
|
||||
+ "Failed to get reset-gpios\n");
|
||||
+
|
||||
+ ctx->dsi = dsi;
|
||||
+ mipi_dsi_set_drvdata(dsi, ctx);
|
||||
+
|
||||
+ dsi->lanes = 4;
|
||||
+ dsi->format = MIPI_DSI_FMT_RGB888;
|
||||
+ dsi->mode_flags = MIPI_DSI_MODE_VIDEO_BURST |
|
||||
+ MIPI_DSI_CLOCK_NON_CONTINUOUS | MIPI_DSI_MODE_LPM;
|
||||
+
|
||||
+ drm_panel_init(&ctx->panel, dev, &xiaomi_umi_csot_panel_funcs,
|
||||
+ DRM_MODE_CONNECTOR_DSI);
|
||||
+ ctx->panel.prepare_prev_first = true;
|
||||
+
|
||||
+ ctx->panel.backlight = xiaomi_umi_csot_create_backlight(dsi);
|
||||
+ if (IS_ERR(ctx->panel.backlight))
|
||||
+ return dev_err_probe(dev, PTR_ERR(ctx->panel.backlight),
|
||||
+ "Failed to create backlight\n");
|
||||
+
|
||||
+ drm_panel_add(&ctx->panel);
|
||||
+
|
||||
+ /* This panel only supports DSC; unconditionally enable it */
|
||||
+ dsi->dsc = &ctx->dsc;
|
||||
+
|
||||
+ ctx->dsc.dsc_version_major = 1;
|
||||
+ ctx->dsc.dsc_version_minor = 1;
|
||||
+
|
||||
+ /* TODO: Pass slice_per_pkt = 2 */
|
||||
+ ctx->dsc.slice_height = 12;
|
||||
+ ctx->dsc.slice_width = 540;
|
||||
+ /*
|
||||
+ * TODO: hdisplay should be read from the selected mode once
|
||||
+ * it is passed back to drm_panel (in prepare?)
|
||||
+ */
|
||||
+ WARN_ON(1080 % ctx->dsc.slice_width);
|
||||
+ ctx->dsc.slice_count = 1080 / ctx->dsc.slice_width;
|
||||
+ ctx->dsc.bits_per_component = 8;
|
||||
+ ctx->dsc.bits_per_pixel = 8 << 4; /* 4 fractional bits */
|
||||
+ ctx->dsc.block_pred_enable = true;
|
||||
+
|
||||
+ ret = mipi_dsi_attach(dsi);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(dev, "Failed to attach to DSI host: %d\n", ret);
|
||||
+ drm_panel_remove(&ctx->panel);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void xiaomi_umi_csot_remove(struct mipi_dsi_device *dsi)
|
||||
+{
|
||||
+ struct xiaomi_umi_csot *ctx = mipi_dsi_get_drvdata(dsi);
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = mipi_dsi_detach(dsi);
|
||||
+ if (ret < 0)
|
||||
+ dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret);
|
||||
+
|
||||
+ drm_panel_remove(&ctx->panel);
|
||||
+}
|
||||
+
|
||||
+static const struct of_device_id xiaomi_umi_csot_of_match[] = {
|
||||
+ { .compatible = "mdss,xiaomi-umi-csot" },
|
||||
+ { /* sentinel */ }
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, xiaomi_umi_csot_of_match);
|
||||
+
|
||||
+static struct mipi_dsi_driver xiaomi_umi_csot_driver = {
|
||||
+ .probe = xiaomi_umi_csot_probe,
|
||||
+ .remove = xiaomi_umi_csot_remove,
|
||||
+ .driver = {
|
||||
+ .name = "panel-xiaomi-umi-csot",
|
||||
+ .of_match_table = xiaomi_umi_csot_of_match,
|
||||
+ },
|
||||
+};
|
||||
+module_mipi_dsi_driver(xiaomi_umi_csot_driver);
|
||||
+
|
||||
+MODULE_AUTHOR("linux-mdss-dsi-panel-driver-generator <fix@me>"); // FIXME
|
||||
+MODULE_DESCRIPTION("DRM driver for xiaomi 42 02 0b cmd mode dsc dsi panel");
|
||||
+MODULE_LICENSE("GPL");
|
||||
--
|
||||
Armbian
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,11 @@
|
||||
config: # This is file 'patch/kernel/archive/sm8250-6.7/0000.patching_config.yaml'
|
||||
config: # This is file 'patch/kernel/archive/sm8250-6.9/0000.patching_config.yaml'
|
||||
|
||||
# Just some info stuff; not used by the patching scripts
|
||||
name: sm8250-6.7
|
||||
name: sm8250-6.9
|
||||
kind: kernel
|
||||
type: mainline # or: vendor
|
||||
branch: linux-6.7.y
|
||||
last-known-good-tag: v6.7.0
|
||||
branch: linux-6.9.y
|
||||
last-known-good-tag: v6.9.3
|
||||
maintainers:
|
||||
- { github: rpardini, name: Ricardo Pardini, email: ricardo@pardini.net, armbian-forum: rpardini }
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
|
||||
diff --git a/Documentation/devicetree/bindings/mfd/qcom,qca639x.yaml b/Documentation/devicetree/bindings/mfd/qcom,qca639x.yaml
|
||||
new file mode 100644
|
||||
index 000000000000..d43c75da136f
|
||||
index 000000000000..111111111111
|
||||
--- /dev/null
|
||||
+++ b/Documentation/devicetree/bindings/mfd/qcom,qca639x.yaml
|
||||
@@ -0,0 +1,84 @@
|
||||
@ -16,7 +16,7 @@ Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
3 files changed, 175 insertions(+)
|
||||
|
||||
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
|
||||
index 90ce58fd629e..2dd393ff2cf5 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/mfd/Kconfig
|
||||
+++ b/drivers/mfd/Kconfig
|
||||
@@ -1123,6 +1123,18 @@ config MFD_PM8XXX
|
||||
@ -39,7 +39,7 @@ index 90ce58fd629e..2dd393ff2cf5 100644
|
||||
tristate "Qualcomm Resource Power Manager (RPM)"
|
||||
depends on ARCH_QCOM && OF
|
||||
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
|
||||
index c66f07edcd0e..3e1b32dd0d8a 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/mfd/Makefile
|
||||
+++ b/drivers/mfd/Makefile
|
||||
@@ -204,6 +204,7 @@ obj-$(CONFIG_MFD_SI476X_CORE) += si476x-core.o
|
||||
@ -52,7 +52,7 @@ index c66f07edcd0e..3e1b32dd0d8a 100644
|
||||
obj-$(CONFIG_TPS65911_COMPARATOR) += tps65911-comparator.o
|
||||
diff --git a/drivers/mfd/qcom-qca639x.c b/drivers/mfd/qcom-qca639x.c
|
||||
new file mode 100644
|
||||
index 000000000000..b31e4b65bec5
|
||||
index 000000000000..111111111111
|
||||
--- /dev/null
|
||||
+++ b/drivers/mfd/qcom-qca639x.c
|
||||
@@ -0,0 +1,162 @@
|
||||
@ -12,7 +12,7 @@ Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
1 file changed, 46 insertions(+), 28 deletions(-)
|
||||
|
||||
diff --git a/drivers/mfd/qcom-qca639x.c b/drivers/mfd/qcom-qca639x.c
|
||||
index b31e4b65bec5..22792561dbad 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/mfd/qcom-qca639x.c
|
||||
+++ b/drivers/mfd/qcom-qca639x.c
|
||||
@@ -1,4 +1,5 @@
|
||||
@ -11,7 +11,7 @@ Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
1 file changed, 19 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/drivers/mfd/qcom-qca639x.c b/drivers/mfd/qcom-qca639x.c
|
||||
index 22792561dbad..4de860e9bbd0 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/mfd/qcom-qca639x.c
|
||||
+++ b/drivers/mfd/qcom-qca639x.c
|
||||
@@ -47,8 +47,9 @@ static const struct qca_cfg_data qca6390_cfg_data = {
|
||||
@ -12,10 +12,10 @@ Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
|
||||
index 067e248e3599..2d77e6272c72 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/bluetooth/hci_qca.c
|
||||
+++ b/drivers/bluetooth/hci_qca.c
|
||||
@@ -1797,6 +1797,8 @@ static int qca_power_on(struct hci_dev *hdev)
|
||||
@@ -1801,6 +1801,8 @@ static int qca_power_on(struct hci_dev *hdev)
|
||||
gpiod_set_value_cansleep(qcadev->bt_en, 1);
|
||||
/* Controller needs time to bootup. */
|
||||
msleep(150);
|
||||
@ -1,17 +1,17 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: amazingfate <liujianfeng1994@gmail.com>
|
||||
Date: Mon, 16 Oct 2023 13:32:58 +0800
|
||||
Subject: tty: serial: qcom-geni: fix zero dma-rx-len-in
|
||||
From: Jianhua Lu <lujianhua000@gmail.com>
|
||||
Date: Fri, 27 Oct 2023 21:18:00 +0800
|
||||
Subject: tty: serial: qcom-geni: Hack up for qca6390-bt
|
||||
|
||||
---
|
||||
drivers/tty/serial/qcom_geni_serial.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c
|
||||
index 7e78f97e8f43..6ea1a4f8ba65 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/tty/serial/qcom_geni_serial.c
|
||||
+++ b/drivers/tty/serial/qcom_geni_serial.c
|
||||
@@ -820,7 +820,7 @@ static void qcom_geni_serial_handle_rx_dma(struct uart_port *uport, bool drop)
|
||||
@@ -819,7 +819,7 @@ static void qcom_geni_serial_handle_rx_dma(struct uart_port *uport, bool drop)
|
||||
rx_in = readl(uport->membase + SE_DMA_RX_LEN_IN);
|
||||
if (!rx_in) {
|
||||
dev_warn(uport->dev, "serial engine reports 0 RX bytes in!\n");
|
||||
@ -5,30 +5,30 @@ Subject: drm: Add drm notifier support
|
||||
|
||||
---
|
||||
drivers/gpu/drm/Makefile | 3 +-
|
||||
drivers/gpu/drm/drm_notifier.c | 57 ++++++++++
|
||||
drivers/gpu/drm/drm_notifier.c | 58 ++++++++++
|
||||
include/drm/drm_notifier.h | 37 ++++++
|
||||
3 files changed, 96 insertions(+), 1 deletion(-)
|
||||
3 files changed, 97 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
|
||||
index 8e1bde059170..3095874a2e6d 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/Makefile
|
||||
+++ b/drivers/gpu/drm/Makefile
|
||||
@@ -45,7 +45,8 @@ drm-y := \
|
||||
@@ -46,7 +46,8 @@ drm-y := \
|
||||
drm_vblank.o \
|
||||
drm_vblank_work.o \
|
||||
drm_vma_manager.o \
|
||||
- drm_writeback.o
|
||||
+ drm_writeback.o \
|
||||
+ drm_notifier.o
|
||||
drm-$(CONFIG_DRM_LEGACY) += \
|
||||
drm_agpsupport.o \
|
||||
drm_bufs.o \
|
||||
drm-$(CONFIG_DRM_LIB_RANDOM) += lib/drm_random.o
|
||||
drm-$(CONFIG_COMPAT) += drm_ioc32.o
|
||||
drm-$(CONFIG_DRM_PANEL) += drm_panel.o
|
||||
diff --git a/drivers/gpu/drm/drm_notifier.c b/drivers/gpu/drm/drm_notifier.c
|
||||
new file mode 100644
|
||||
index 000000000000..792069640ea7
|
||||
index 000000000000..111111111111
|
||||
--- /dev/null
|
||||
+++ b/drivers/gpu/drm/drm_notifier.c
|
||||
@@ -0,0 +1,57 @@
|
||||
@@ -0,0 +1,58 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2019, The Linux Foundation. All rights reserved.
|
||||
+ * Copyright (C) 2021 XiaoMi, Inc.
|
||||
@ -45,6 +45,7 @@ index 000000000000..792069640ea7
|
||||
+ */
|
||||
+
|
||||
+#include <linux/notifier.h>
|
||||
+#include <drm/drm_notifier.h>
|
||||
+
|
||||
+static BLOCKING_NOTIFIER_HEAD(mi_drm_notifier_list);
|
||||
+
|
||||
@ -86,10 +87,9 @@ index 000000000000..792069640ea7
|
||||
+ return blocking_notifier_call_chain(&mi_drm_notifier_list, val, v);
|
||||
+}
|
||||
+EXPORT_SYMBOL(mi_drm_notifier_call_chain);
|
||||
\ No newline at end of file
|
||||
diff --git a/include/drm/drm_notifier.h b/include/drm/drm_notifier.h
|
||||
new file mode 100644
|
||||
index 000000000000..fd0e976559b8
|
||||
index 000000000000..111111111111
|
||||
--- /dev/null
|
||||
+++ b/include/drm/drm_notifier.h
|
||||
@@ -0,0 +1,37 @@
|
||||
@ -8,7 +8,7 @@ Subject: drm: dsi: emit panel turn on/off signal to touchscreen
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c b/drivers/gpu/drm/msm/dsi/dsi_manager.c
|
||||
index 896f369fdd53..50d788138192 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/dsi/dsi_manager.c
|
||||
+++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c
|
||||
@@ -7,6 +7,7 @@
|
||||
@ -19,15 +19,15 @@ index 896f369fdd53..50d788138192 100644
|
||||
|
||||
#define DSI_CLOCK_MASTER DSI_0
|
||||
#define DSI_CLOCK_SLAVE DSI_1
|
||||
@@ -303,6 +304,7 @@ static void dsi_mgr_bridge_pre_enable(struct drm_bridge *bridge)
|
||||
@@ -273,6 +274,7 @@ static void dsi_mgr_bridge_pre_enable(struct drm_bridge *bridge)
|
||||
struct mipi_dsi_host *host = msm_dsi->host;
|
||||
bool is_bonded_dsi = IS_BONDED_DSI();
|
||||
int ret;
|
||||
+ enum drm_notifier_data notifier_data;
|
||||
|
||||
DBG("id=%d", id);
|
||||
if (!msm_dsi_device_connected(msm_dsi))
|
||||
@@ -318,6 +320,9 @@ static void dsi_mgr_bridge_pre_enable(struct drm_bridge *bridge)
|
||||
|
||||
@@ -286,6 +288,9 @@ static void dsi_mgr_bridge_pre_enable(struct drm_bridge *bridge)
|
||||
return;
|
||||
}
|
||||
|
||||
@ -37,7 +37,7 @@ index 896f369fdd53..50d788138192 100644
|
||||
ret = msm_dsi_host_enable(host);
|
||||
if (ret) {
|
||||
pr_err("%s: enable host %d failed, %d\n", __func__, id, ret);
|
||||
@@ -361,12 +366,16 @@ static void dsi_mgr_bridge_post_disable(struct drm_bridge *bridge)
|
||||
@@ -329,9 +334,13 @@ static void dsi_mgr_bridge_post_disable(struct drm_bridge *bridge)
|
||||
struct mipi_dsi_host *host = msm_dsi->host;
|
||||
bool is_bonded_dsi = IS_BONDED_DSI();
|
||||
int ret;
|
||||
@ -45,9 +45,6 @@ index 896f369fdd53..50d788138192 100644
|
||||
|
||||
DBG("id=%d", id);
|
||||
|
||||
if (!msm_dsi_device_connected(msm_dsi))
|
||||
return;
|
||||
|
||||
+ notifier_data = MI_DRM_BLANK_POWERDOWN;
|
||||
+ mi_drm_notifier_call_chain(MI_DRM_EARLY_EVENT_BLANK, ¬ifier_data);
|
||||
+
|
||||
@ -8,14 +8,14 @@ Subject: Input: Add nt36523 touchscreen driver
|
||||
drivers/input/touchscreen/Makefile | 1 +
|
||||
drivers/input/touchscreen/nt36523/Kconfig | 11 +
|
||||
drivers/input/touchscreen/nt36523/Makefile | 8 +
|
||||
drivers/input/touchscreen/nt36523/nt36xxx.c | 1908 ++++++++++
|
||||
drivers/input/touchscreen/nt36523/nt36xxx.h | 240 ++
|
||||
drivers/input/touchscreen/nt36523/nt36xxx.c | 1910 ++++++++++
|
||||
drivers/input/touchscreen/nt36523/nt36xxx.h | 242 ++
|
||||
drivers/input/touchscreen/nt36523/nt36xxx_fw_update.c | 857 +++++
|
||||
drivers/input/touchscreen/nt36523/nt36xxx_mem_map.h | 390 ++
|
||||
8 files changed, 3417 insertions(+)
|
||||
8 files changed, 3421 insertions(+)
|
||||
|
||||
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
|
||||
index e3e2324547b9..1f8b33c2b03d 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/input/touchscreen/Kconfig
|
||||
+++ b/drivers/input/touchscreen/Kconfig
|
||||
@@ -12,6 +12,8 @@ menuconfig INPUT_TOUCHSCREEN
|
||||
@ -28,17 +28,17 @@ index e3e2324547b9..1f8b33c2b03d 100644
|
||||
tristate "Marvell 88PM860x touchscreen"
|
||||
depends on MFD_88PM860X
|
||||
diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
|
||||
index 62bd24f3ac8e..7d52592f4290 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/input/touchscreen/Makefile
|
||||
+++ b/drivers/input/touchscreen/Makefile
|
||||
@@ -118,3 +118,4 @@ obj-$(CONFIG_TOUCHSCREEN_IQS5XX) += iqs5xx.o
|
||||
@@ -121,3 +121,4 @@ obj-$(CONFIG_TOUCHSCREEN_IQS5XX) += iqs5xx.o
|
||||
obj-$(CONFIG_TOUCHSCREEN_IQS7211) += iqs7211.o
|
||||
obj-$(CONFIG_TOUCHSCREEN_ZINITIX) += zinitix.o
|
||||
obj-$(CONFIG_TOUCHSCREEN_HIMAX_HX83112B) += himax_hx83112b.o
|
||||
+obj-$(CONFIG_TOUCHSCREEN_NT36523_SPI) += nt36523/
|
||||
diff --git a/drivers/input/touchscreen/nt36523/Kconfig b/drivers/input/touchscreen/nt36523/Kconfig
|
||||
new file mode 100644
|
||||
index 000000000000..5f4ef5abfd6a
|
||||
index 000000000000..111111111111
|
||||
--- /dev/null
|
||||
+++ b/drivers/input/touchscreen/nt36523/Kconfig
|
||||
@@ -0,0 +1,11 @@
|
||||
@ -55,7 +55,7 @@ index 000000000000..5f4ef5abfd6a
|
||||
+ If unsure, say N.
|
||||
diff --git a/drivers/input/touchscreen/nt36523/Makefile b/drivers/input/touchscreen/nt36523/Makefile
|
||||
new file mode 100644
|
||||
index 000000000000..d16afc8f127f
|
||||
index 000000000000..111111111111
|
||||
--- /dev/null
|
||||
+++ b/drivers/input/touchscreen/nt36523/Makefile
|
||||
@@ -0,0 +1,8 @@
|
||||
@ -69,10 +69,10 @@ index 000000000000..d16afc8f127f
|
||||
+ nt36xxx_fw_update.o
|
||||
diff --git a/drivers/input/touchscreen/nt36523/nt36xxx.c b/drivers/input/touchscreen/nt36523/nt36xxx.c
|
||||
new file mode 100644
|
||||
index 000000000000..45500ad5cd91
|
||||
index 000000000000..111111111111
|
||||
--- /dev/null
|
||||
+++ b/drivers/input/touchscreen/nt36523/nt36xxx.c
|
||||
@@ -0,0 +1,1908 @@
|
||||
@@ -0,0 +1,1910 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2010 - 2018 Novatek, Inc.
|
||||
+ * Copyright (C) 2021 XiaoMi, Inc.
|
||||
@ -1300,7 +1300,7 @@ index 000000000000..45500ad5cd91
|
||||
+ spi_set_drvdata(client, ts);
|
||||
+
|
||||
+ //---prepare for spi parameter---
|
||||
+ if (ts->client->master->flags & SPI_MASTER_HALF_DUPLEX) {
|
||||
+ if (ts->client->controller->flags & SPI_CONTROLLER_HALF_DUPLEX) {
|
||||
+ NVT_ERR("Full duplex not supported by master\n");
|
||||
+ ret = -EIO;
|
||||
+ goto err_ckeck_full_duplex;
|
||||
@ -1952,12 +1952,14 @@ index 000000000000..45500ad5cd91
|
||||
+ { NVT_SPI_NAME, 0 },
|
||||
+ { }
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(spi, nvt_ts_id);
|
||||
+
|
||||
+#ifdef CONFIG_OF
|
||||
+static struct of_device_id nvt_match_table[] = {
|
||||
+ { .compatible = "novatek,NVT-ts-spi",},
|
||||
+ { },
|
||||
+};
|
||||
+MODULE_DEVICE_TABLE(of, nvt_match_table);
|
||||
+#endif
|
||||
+
|
||||
+static struct spi_driver nvt_spi_driver = {
|
||||
@ -1983,10 +1985,10 @@ index 000000000000..45500ad5cd91
|
||||
+MODULE_LICENSE("GPL");
|
||||
diff --git a/drivers/input/touchscreen/nt36523/nt36xxx.h b/drivers/input/touchscreen/nt36523/nt36xxx.h
|
||||
new file mode 100644
|
||||
index 000000000000..2ec9ccb3b522
|
||||
index 000000000000..111111111111
|
||||
--- /dev/null
|
||||
+++ b/drivers/input/touchscreen/nt36523/nt36xxx.h
|
||||
@@ -0,0 +1,240 @@
|
||||
@@ -0,0 +1,242 @@
|
||||
+/*
|
||||
+ * Copyright (C) 2010 - 2018 Novatek, Inc.
|
||||
+ * Copyright (C) 2021 XiaoMi, Inc.
|
||||
@ -2032,7 +2034,7 @@ index 000000000000..2ec9ccb3b522
|
||||
+
|
||||
+
|
||||
+//---SPI driver info.---
|
||||
+#define NVT_SPI_NAME "NVT-ts"
|
||||
+#define NVT_SPI_NAME "NVT-ts-spi"
|
||||
+
|
||||
+#if NVT_DEBUG
|
||||
+#define NVT_LOG(fmt, args...) pr_err("[%s] %s %d: " fmt, NVT_SPI_NAME, __func__, __LINE__, ##args)
|
||||
@ -2220,8 +2222,10 @@ index 000000000000..2ec9ccb3b522
|
||||
+int32_t nvt_check_spi_dma_tx_info(void);
|
||||
+int32_t nvt_set_page(uint32_t addr);
|
||||
+int32_t nvt_write_addr(uint32_t addr, uint8_t data);
|
||||
+int32_t nvt_read_pid(void);
|
||||
+bool nvt_get_dbgfw_status(void);
|
||||
+int32_t nvt_set_pocket_palm_switch(uint8_t pocket_palm_switch);
|
||||
+void Boot_Update_Firmware(struct work_struct *work);
|
||||
+#if NVT_TOUCH_ESD_PROTECT
|
||||
+extern void nvt_esd_check_enable(uint8_t enable);
|
||||
+#endif /* #if NVT_TOUCH_ESD_PROTECT */
|
||||
@ -2229,7 +2233,7 @@ index 000000000000..2ec9ccb3b522
|
||||
+#endif /* _LINUX_NVT_TOUCH_H */
|
||||
diff --git a/drivers/input/touchscreen/nt36523/nt36xxx_fw_update.c b/drivers/input/touchscreen/nt36523/nt36xxx_fw_update.c
|
||||
new file mode 100644
|
||||
index 000000000000..4f383dac2c3c
|
||||
index 000000000000..111111111111
|
||||
--- /dev/null
|
||||
+++ b/drivers/input/touchscreen/nt36523/nt36xxx_fw_update.c
|
||||
@@ -0,0 +1,857 @@
|
||||
@ -3092,7 +3096,7 @@ index 000000000000..4f383dac2c3c
|
||||
+#endif /* BOOT_UPDATE_FIRMWARE */
|
||||
diff --git a/drivers/input/touchscreen/nt36523/nt36xxx_mem_map.h b/drivers/input/touchscreen/nt36523/nt36xxx_mem_map.h
|
||||
new file mode 100644
|
||||
index 000000000000..3f4195d636a0
|
||||
index 000000000000..111111111111
|
||||
--- /dev/null
|
||||
+++ b/drivers/input/touchscreen/nt36523/nt36xxx_mem_map.h
|
||||
@@ -0,0 +1,390 @@
|
||||
@ -9,10 +9,10 @@ Signed-off-by: Jianhua Lu <lujianhua000@gmail.com>
|
||||
1 file changed, 61 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
index 85e5cf3dc91e..d7ec6bdd1c88 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
@@ -29,6 +29,10 @@ / {
|
||||
@@ -30,6 +30,10 @@ / {
|
||||
qcom,msm-id = <QCOM_ID_SM8250 0x20001>; /* SM8250 v2.1 */
|
||||
qcom,board-id = <0x10008 0>;
|
||||
|
||||
@ -23,7 +23,7 @@ index 85e5cf3dc91e..d7ec6bdd1c88 100644
|
||||
chosen {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
@@ -113,6 +117,25 @@ vreg_s6c_0p88: smpc6-regulator {
|
||||
@@ -114,6 +118,25 @@ vreg_s6c_0p88: smpc6-regulator {
|
||||
vin-supply = <&vph_pwr>;
|
||||
};
|
||||
|
||||
@ -47,9 +47,9 @@ index 85e5cf3dc91e..d7ec6bdd1c88 100644
|
||||
+ };
|
||||
+
|
||||
reserved-memory {
|
||||
xbl_aop_mem: xbl-aop@80700000 {
|
||||
xbl_aop_mem: xbl-aop@80600000 {
|
||||
reg = <0x0 0x80600000 0x0 0x260000>;
|
||||
@@ -615,6 +638,9 @@ &pcie0_phy {
|
||||
@@ -617,6 +640,9 @@ &pcie0_phy {
|
||||
vdda-phy-supply = <&vreg_l5a_0p88>;
|
||||
vdda-pll-supply = <&vreg_l9a_1p2>;
|
||||
status = "okay";
|
||||
@ -59,7 +59,7 @@ index 85e5cf3dc91e..d7ec6bdd1c88 100644
|
||||
};
|
||||
|
||||
&pm8150_gpios {
|
||||
@@ -655,6 +681,41 @@ &slpi {
|
||||
@@ -692,6 +718,41 @@ &slpi {
|
||||
|
||||
&tlmm {
|
||||
gpio-reserved-ranges = <40 4>;
|
||||
@ -11,7 +11,7 @@ Signed-off-by: Jianhua Lu <lujianhua000@gmail.com>
|
||||
3 files changed, 42 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-boe.dts b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-boe.dts
|
||||
index de6101ddebe7..b8d9e9406440 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-boe.dts
|
||||
+++ b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-boe.dts
|
||||
@@ -16,3 +16,8 @@ &display_panel {
|
||||
@ -24,10 +24,10 @@ index de6101ddebe7..b8d9e9406440 100644
|
||||
+ status = "okay";
|
||||
+};
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
index d7ec6bdd1c88..b0fe139f8d86 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
@@ -662,6 +662,16 @@ &pon_resin {
|
||||
@@ -699,6 +699,16 @@ &pon_resin {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -44,7 +44,7 @@ index d7ec6bdd1c88..b0fe139f8d86 100644
|
||||
&qupv3_id_0 {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -679,6 +689,28 @@ &slpi {
|
||||
@@ -716,6 +726,28 @@ &slpi {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -74,7 +74,7 @@ index d7ec6bdd1c88..b0fe139f8d86 100644
|
||||
gpio-reserved-ranges = <40 4>;
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-csot.dts b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-csot.dts
|
||||
index 4cffe9c703df..5953f652e812 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-csot.dts
|
||||
+++ b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-csot.dts
|
||||
@@ -16,3 +16,8 @@ &display_panel {
|
||||
@ -8,10 +8,10 @@ Subject: arm64: dts: qcom: sm8250-xiaomi-elish: Disable slpi
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
index b0fe139f8d86..2da3820ddbda 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
@@ -686,7 +686,7 @@ &qupv3_id_2 {
|
||||
@@ -723,7 +723,7 @@ &qupv3_id_2 {
|
||||
|
||||
&slpi {
|
||||
firmware-name = "qcom/sm8250/xiaomi/elish/slpi.mbn";
|
||||
@ -1,56 +1,46 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jianhua Lu <lujianhua000@gmail.com>
|
||||
Date: Fri, 17 Feb 2023 21:31:38 +0800
|
||||
Subject: sound: soc: qcom: sm8250: Add tdm support
|
||||
Date: Mon, 11 Dec 2023 09:23:28 +0800
|
||||
Subject: ASoC: qcom: sm8250: Add tdm support
|
||||
|
||||
---
|
||||
sound/soc/qcom/sdw.c | 65 ++++++++++
|
||||
sound/soc/qcom/sm8250.c | 17 +++
|
||||
2 files changed, 82 insertions(+)
|
||||
sound/soc/qcom/sm8250.c | 75 ++++++++++
|
||||
1 file changed, 75 insertions(+)
|
||||
|
||||
diff --git a/sound/soc/qcom/sdw.c b/sound/soc/qcom/sdw.c
|
||||
index dd275123d31d..f9370432c736 100644
|
||||
--- a/sound/soc/qcom/sdw.c
|
||||
+++ b/sound/soc/qcom/sdw.c
|
||||
@@ -5,8 +5,11 @@
|
||||
#include <dt-bindings/sound/qcom,q6afe.h>
|
||||
#include <linux/module.h>
|
||||
#include <sound/soc.h>
|
||||
+#include <sound/pcm_params.h>
|
||||
#include "sdw.h"
|
||||
diff --git a/sound/soc/qcom/sm8250.c b/sound/soc/qcom/sm8250.c
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/sound/soc/qcom/sm8250.c
|
||||
+++ b/sound/soc/qcom/sm8250.c
|
||||
@@ -16,6 +16,9 @@
|
||||
|
||||
+static unsigned int tdm_slot_offset[8] = {0, 4, 8, 12, 16, 20, 24, 28};
|
||||
#define DRIVER_NAME "sm8250"
|
||||
#define MI2S_BCLK_RATE 1536000
|
||||
+#define TDM_BCLK_RATE 12288000
|
||||
+
|
||||
int qcom_snd_sdw_prepare(struct snd_pcm_substream *substream,
|
||||
struct sdw_stream_runtime *sruntime,
|
||||
bool *stream_prepared)
|
||||
@@ -58,6 +61,64 @@ int qcom_snd_sdw_prepare(struct snd_pcm_substream *substream,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(qcom_snd_sdw_prepare);
|
||||
+static unsigned int tdm_slot_offset[8] = {0, 4, 8, 12, 16, 20, 24, 28};
|
||||
|
||||
+static int qcom_tdm_snd_hw_params(struct snd_pcm_substream *substream,
|
||||
struct sm8250_snd_data {
|
||||
bool stream_prepared[AFE_PORT_MAX];
|
||||
@@ -32,6 +35,57 @@ static int sm8250_snd_init(struct snd_soc_pcm_runtime *rtd)
|
||||
return qcom_snd_wcd_jack_setup(rtd, &data->jack, &data->jack_setup);
|
||||
}
|
||||
|
||||
+static int sm8250_tdm_snd_hw_params(struct snd_pcm_substream *substream,
|
||||
+ struct snd_pcm_hw_params *params)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
|
||||
+ struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
|
||||
+
|
||||
+ int ret = 0;
|
||||
+ int channels, slot_width;
|
||||
+
|
||||
+ switch (params_format(params)) {
|
||||
+ case SNDRV_PCM_FORMAT_S16_LE:
|
||||
+ slot_width = 32;
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_err(rtd->dev, "%s: invalid param format 0x%x\n",
|
||||
+ __func__, params_format(params));
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ int channels, slots, slot_width;
|
||||
+
|
||||
+ channels = params_channels(params);
|
||||
+ slots = 8;
|
||||
+ slot_width = 32;
|
||||
+
|
||||
+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
||||
+ ret = snd_soc_dai_set_tdm_slot(cpu_dai, 0, 0x03,
|
||||
+ 8, slot_width);
|
||||
+ slots, slot_width);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(rtd->dev, "%s: failed to set tdm slot, err:%d\n",
|
||||
+ __func__, ret);
|
||||
@ -66,7 +56,7 @@ index dd275123d31d..f9370432c736 100644
|
||||
+ }
|
||||
+ } else {
|
||||
+ ret = snd_soc_dai_set_tdm_slot(cpu_dai, 0xf, 0,
|
||||
+ 8, slot_width);
|
||||
+ slots, slot_width);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(rtd->dev, "%s: failed to set tdm slot, err:%d\n",
|
||||
+ __func__, ret);
|
||||
@ -86,33 +76,10 @@ index dd275123d31d..f9370432c736 100644
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
int qcom_snd_sdw_hw_params(struct snd_pcm_substream *substream,
|
||||
struct snd_pcm_hw_params *params,
|
||||
struct sdw_stream_runtime **psruntime)
|
||||
@@ -82,6 +143,10 @@ int qcom_snd_sdw_hw_params(struct snd_pcm_substream *substream,
|
||||
*psruntime = sruntime;
|
||||
}
|
||||
break;
|
||||
+ case TERTIARY_TDM_RX_0:
|
||||
+ case TERTIARY_TDM_TX_0:
|
||||
+ qcom_tdm_snd_hw_params(substream, params);
|
||||
+ break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
diff --git a/sound/soc/qcom/sm8250.c b/sound/soc/qcom/sm8250.c
|
||||
index 9cc869fd70ac..2007940572fc 100644
|
||||
--- a/sound/soc/qcom/sm8250.c
|
||||
+++ b/sound/soc/qcom/sm8250.c
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
#define DRIVER_NAME "sm8250"
|
||||
#define MI2S_BCLK_RATE 1536000
|
||||
+#define TDM_BCLK_RATE 12288000
|
||||
|
||||
struct sm8250_snd_data {
|
||||
bool stream_prepared[AFE_PORT_MAX];
|
||||
@@ -53,6 +54,7 @@ static int sm8250_snd_startup(struct snd_pcm_substream *substream)
|
||||
static int sm8250_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd,
|
||||
struct snd_pcm_hw_params *params)
|
||||
{
|
||||
@@ -53,6 +107,7 @@ static int sm8250_snd_startup(struct snd_pcm_substream *substream)
|
||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
|
||||
struct snd_soc_dai *codec_dai = snd_soc_rtd_to_codec(rtd, 0);
|
||||
@ -120,7 +87,7 @@ index 9cc869fd70ac..2007940572fc 100644
|
||||
|
||||
switch (cpu_dai->id) {
|
||||
case TERTIARY_MI2S_RX:
|
||||
@@ -63,6 +65,21 @@ static int sm8250_snd_startup(struct snd_pcm_substream *substream)
|
||||
@@ -63,6 +118,21 @@ static int sm8250_snd_startup(struct snd_pcm_substream *substream)
|
||||
snd_soc_dai_set_fmt(cpu_dai, fmt);
|
||||
snd_soc_dai_set_fmt(codec_dai, codec_dai_fmt);
|
||||
break;
|
||||
@ -142,6 +109,18 @@ index 9cc869fd70ac..2007940572fc 100644
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -88,6 +158,11 @@ static int sm8250_snd_hw_params(struct snd_pcm_substream *substream,
|
||||
struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
|
||||
struct sm8250_snd_data *pdata = snd_soc_card_get_drvdata(rtd->card);
|
||||
|
||||
+ switch (cpu_dai->id) {
|
||||
+ case PRIMARY_TDM_RX_0 ... QUINARY_TDM_TX_7:
|
||||
+ return sm8250_tdm_snd_hw_params(substream, params);
|
||||
+ }
|
||||
+
|
||||
return qcom_snd_sdw_hw_params(substream, params, &pdata->sruntime[cpu_dai->id]);
|
||||
}
|
||||
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -8,7 +8,7 @@ Subject: arm64: dts: qcom: sm8250-xiaomi-elish: Add sound support
|
||||
1 file changed, 232 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
index 2da3820ddbda..45775428cb92 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
@@ -6,6 +6,8 @@
|
||||
@ -17,10 +17,10 @@ index 2da3820ddbda..45775428cb92 100644
|
||||
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
|
||||
+#include <dt-bindings/sound/qcom,q6afe.h>
|
||||
+#include <dt-bindings/sound/qcom,q6asm.h>
|
||||
#include <dt-bindings/usb/pd.h>
|
||||
#include "sm8250.dtsi"
|
||||
#include "pm8150.dtsi"
|
||||
#include "pm8150b.dtsi"
|
||||
@@ -529,6 +531,152 @@ fuel-gauge@55 {
|
||||
@@ -530,6 +532,152 @@ fuel-gauge@55 {
|
||||
};
|
||||
};
|
||||
|
||||
@ -173,7 +173,7 @@ index 2da3820ddbda..45775428cb92 100644
|
||||
&i2c11 {
|
||||
clock-frequency = <400000>;
|
||||
status = "okay";
|
||||
@@ -684,11 +832,63 @@ &qupv3_id_2 {
|
||||
@@ -721,11 +869,63 @@ &qupv3_id_2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
@ -237,7 +237,7 @@ index 2da3820ddbda..45775428cb92 100644
|
||||
&spi4 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
@@ -735,6 +935,38 @@ wlan-en-pins {
|
||||
@@ -772,6 +972,38 @@ wlan-en-pins {
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
@ -8,21 +8,21 @@ Subject: Asoc: wm_adsp: Add prefix support
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c
|
||||
index c01e31175015..588f28bdc72a 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/sound/soc/codecs/wm_adsp.c
|
||||
+++ b/sound/soc/codecs/wm_adsp.c
|
||||
@@ -750,6 +750,10 @@ static int wm_adsp_request_firmware_file(struct wm_adsp *dsp,
|
||||
@@ -757,6 +757,10 @@ static int wm_adsp_request_firmware_file(struct wm_adsp *dsp,
|
||||
*filename = kasprintf(GFP_KERNEL, "%s%s-%s-%s-%s.%s", dir, dsp->part,
|
||||
dsp->fwf_name, wm_adsp_fw[dsp->fw].file, system_name,
|
||||
fwf, wm_adsp_fw[dsp->fw].file, system_name,
|
||||
filetype);
|
||||
+ else if (asoc_component_prefix)
|
||||
+ *filename = kasprintf(GFP_KERNEL, "%s%s-%s-%s-%s.%s", dir, dsp->part,
|
||||
+ dsp->fwf_name, wm_adsp_fw[dsp->fw].file, asoc_component_prefix,
|
||||
+ filetype);
|
||||
else
|
||||
*filename = kasprintf(GFP_KERNEL, "%s%s-%s-%s.%s", dir, dsp->part, dsp->fwf_name,
|
||||
*filename = kasprintf(GFP_KERNEL, "%s%s-%s-%s.%s", dir, dsp->part, fwf,
|
||||
wm_adsp_fw[dsp->fw].file, filetype);
|
||||
@@ -821,6 +825,16 @@ static int wm_adsp_request_firmware_files(struct wm_adsp *dsp,
|
||||
@@ -828,6 +832,16 @@ static int wm_adsp_request_firmware_files(struct wm_adsp *dsp,
|
||||
NULL, "bin");
|
||||
return 0;
|
||||
}
|
||||
@ -38,7 +38,7 @@ index c01e31175015..588f28bdc72a 100644
|
||||
+ }
|
||||
}
|
||||
|
||||
if (!wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename,
|
||||
/* Check system-specific bin without wmfw before falling back to generic */
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -0,0 +1,851 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Pangwalla <pangwalla@protonmail.com>
|
||||
Date: Fri, 10 Mar 2023 19:09:42 -0500
|
||||
Subject: arm64: dts: qcom: sm8250-oneplus-instantnoodlep: Add device tree for
|
||||
Oneplus 8 Pro
|
||||
|
||||
---
|
||||
arch/arm64/boot/dts/qcom/sm8250-oneplus-instantnoodlep.dts | 832 ++++++++++
|
||||
1 file changed, 832 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sm8250-oneplus-instantnoodlep.dts b/arch/arm64/boot/dts/qcom/sm8250-oneplus-instantnoodlep.dts
|
||||
new file mode 100644
|
||||
index 000000000000..111111111111
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/qcom/sm8250-oneplus-instantnoodlep.dts
|
||||
@@ -0,0 +1,832 @@
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+#include <dt-bindings/arm/qcom,ids.h>
|
||||
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
|
||||
+#include <dt-bindings/phy/phy.h>
|
||||
+#include "sm8250.dtsi"
|
||||
+#include "pm8150.dtsi"
|
||||
+#include "pm8150b.dtsi"
|
||||
+#include "pm8150l.dtsi"
|
||||
+#include "pm8009.dtsi"
|
||||
+
|
||||
+/*
|
||||
+ * Delete following upstream (sm8250.dtsi) reserved
|
||||
+ * memory mappings which are different in this device.
|
||||
+ */
|
||||
+/delete-node/ &removed_mem;
|
||||
+/delete-node/ &camera_mem;
|
||||
+/delete-node/ &wlan_mem;
|
||||
+/delete-node/ &ipa_fw_mem;
|
||||
+/delete-node/ &ipa_gsi_mem;
|
||||
+/delete-node/ &gpu_mem;
|
||||
+/delete-node/ &npu_mem;
|
||||
+/delete-node/ &video_mem;
|
||||
+/delete-node/ &cvp_mem;
|
||||
+/delete-node/ &cdsp_mem;
|
||||
+/delete-node/ &slpi_mem;
|
||||
+/delete-node/ &adsp_mem;
|
||||
+/delete-node/ &spss_mem;
|
||||
+/delete-node/ &cdsp_secure_heap;
|
||||
+
|
||||
+/ {
|
||||
+ model = "OnePlus 8 Pro (instantnoodlep)";
|
||||
+ compatible = "oneplus,instantnoodlep", "qcom,kona", "qcom,sm8250";
|
||||
+ chassis-type = "handset";
|
||||
+
|
||||
+ qcom,msm-id = <0x164 0x10000>, <0x164 0x20001>;
|
||||
+ qcom,board-id = <0x08 0x00>, <0x00 0x00>;
|
||||
+
|
||||
+ aliases {
|
||||
+ hsuart0 = &uart6;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ #address-cells = <2>;
|
||||
+ #size-cells = <2>;
|
||||
+ ranges;
|
||||
+ stdout-path = "framebuffer0";
|
||||
+
|
||||
+ framebuffer0: framebuffer@9c000000 {
|
||||
+ compatible = "simple-framebuffer";
|
||||
+ reg = <0x0 0x9c000000 0x0 (1080 * 2376 * 4)>;
|
||||
+ width = <1080>;
|
||||
+ height = <2376>;
|
||||
+ stride = <(1080 * 4)>;
|
||||
+ format = "a8r8g8b8";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ gpio_keys: gpio-keys {
|
||||
+ compatible = "gpio-keys";
|
||||
+
|
||||
+ vol-up {
|
||||
+ label = "Volume Up";
|
||||
+ gpios = <&pm8150_gpios 6 GPIO_ACTIVE_LOW>;
|
||||
+ linux,code = <KEY_VOLUMEUP>;
|
||||
+ debounce-interval = <15>;
|
||||
+ linux,can-disable;
|
||||
+ gpio-key,wakeup;
|
||||
+ };
|
||||
+
|
||||
+ vol-down {
|
||||
+ label = "Volume Down";
|
||||
+ linux,code = <KEY_VOLUMEDOWN>;
|
||||
+ gpios = <&pm8150_gpios 7 GPIO_ACTIVE_LOW>;
|
||||
+ debounce-interval = <15>;
|
||||
+ linux,can-disable;
|
||||
+ gpio-key,wakeup;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ reserved-memory {
|
||||
+ removed_mem: memory@80b00000 {
|
||||
+ reg = <0x0 0x80b00000 0x0 0xcd00000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ camera_mem: memory@8dc00000 {
|
||||
+ reg = <0x0 0x8dc00000 0x0 0x500000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ wlan_mem: memory@8e100000 {
|
||||
+ reg = <0x0 0x8e100000 0x0 0x100000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ ipa_fw_mem: memory@8e200000 {
|
||||
+ reg = <0x0 0x8e200000 0x0 0x10000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ ipa_gsi_mem: memory@8e210000 {
|
||||
+ reg = <0x0 0x8e210000 0x0 0xa000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ gpu_mem: memory@8e21a000 {
|
||||
+ reg = <0x0 0x8e21a000 0x0 0x2000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ npu_mem: memory@8e300000 {
|
||||
+ reg = <0x0 0x8e300000 0x0 0x500000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ video_mem: memory@8e800000 {
|
||||
+ reg = <0x0 0x8e800000 0x0 0x500000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ cvp_mem: memory@8ed00000 {
|
||||
+ reg = <0x0 0x8ed00000 0x0 0x500000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ cdsp_mem: memory@8f200000 {
|
||||
+ reg = <0x0 0x8f200000 0x0 0x1400000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ slpi_mem: memory@90600000 {
|
||||
+ reg = <0x0 0x90600000 0x0 0x1500000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ adsp_mem: memory@91b00000 {
|
||||
+ reg = <0x00 0x91b00000 0x00 0x2500000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ spss_mem: memory@94000000 {
|
||||
+ reg = <0x0 0x94000000 0x0 0x100000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ cdsp_secure_heap: memory@94100000 {
|
||||
+ reg = <0x0 0x94100000 0x0 0x4600000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ cont_splash_mem: memory@9c000000 {
|
||||
+ reg = <0x0 0x9c000000 0x0 0x2300000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ ramoops@b0000000 {
|
||||
+ compatible = "ramoops";
|
||||
+ reg = <0x00 0xb0000000 0x00 0x400000>;
|
||||
+ record-size = <0x40000>;
|
||||
+ console-size = <0x40000>;
|
||||
+ ecc-size = <0x00>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vph_pwr: vph-pwr-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vph_pwr";
|
||||
+ regulator-min-microvolt = <3700000>;
|
||||
+ regulator-max-microvolt = <3700000>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_s6c_0p88: smpc6-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vreg_s6c_0p88";
|
||||
+ regulator-min-microvolt = <880000>;
|
||||
+ regulator-max-microvolt = <880000>;
|
||||
+ regulator-always-on;
|
||||
+ vin-supply = <&vph_pwr>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_s4a_1p8: vreg-s4a-1p8 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vreg_s4a_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-always-on;
|
||||
+ };
|
||||
+
|
||||
+ qca639x: qca639x {
|
||||
+ compatible = "qcom,qca6390";
|
||||
+ #power-domain-cells = <0>;
|
||||
+
|
||||
+ vddaon-supply = <&vreg_s6a_0p95>;
|
||||
+ vddpmu-supply = <&vreg_s2f_0p95>;
|
||||
+ vddrfa1-supply = <&vreg_s2f_0p95>;
|
||||
+ vddrfa2-supply = <&vreg_s8c_1p3>;
|
||||
+ vddrfa3-supply = <&vreg_s5a_1p9>;
|
||||
+ vddpcie1-supply = <&vreg_s8c_1p3>;
|
||||
+ vddpcie2-supply = <&vreg_s5a_1p9>;
|
||||
+ vddio-supply = <&vreg_s4a_1p8>;
|
||||
+
|
||||
+ pinctrl-names = "default", "sleep";
|
||||
+ pinctrl-0 = <&wlan_en_active>;
|
||||
+ pinctrl-1 = <&wlan_en_sleep>;
|
||||
+
|
||||
+ wlan-en-gpios = <&tlmm 20 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
+ battery: battery {
|
||||
+ compatible = "simple-battery";
|
||||
+
|
||||
+ charge-full-design-microamp-hours = <4410000>;
|
||||
+ energy-full-design-microwatt-hours = <17060000>;
|
||||
+ voltage-max-design-microvolt = <4350000>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&apps_rsc {
|
||||
+ regulators-0 {
|
||||
+ compatible = "qcom,pm8009-1-rpmh-regulators";
|
||||
+ qcom,pmic-id = "f";
|
||||
+
|
||||
+ vdd-s1-supply = <&vph_pwr>;
|
||||
+ vdd-s2-supply = <&vph_pwr>;
|
||||
+ vdd-l2-supply = <&vreg_s8c_1p3>;
|
||||
+ vdd-l5-l6-supply = <&vreg_bob>;
|
||||
+ vdd-l7-supply = <&vreg_s4a_1p8>;
|
||||
+
|
||||
+ vreg_s2f_0p95: smps2 {
|
||||
+ regulator-name = "vreg_s2f_0p95";
|
||||
+ regulator-min-microvolt = <900000>;
|
||||
+ regulator-max-microvolt = <952000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l1f_1p1: ldo1 {
|
||||
+ regulator-name = "vreg_l1f_1p1";
|
||||
+ regulator-min-microvolt = <1104000>;
|
||||
+ regulator-max-microvolt = <1104000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l2f_1p2: ldo2 {
|
||||
+ regulator-name = "vreg_l2f_1p2";
|
||||
+ regulator-min-microvolt = <1200000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l6f_2p8: ldo6 {
|
||||
+ regulator-name = "vreg_l6f_2p8";
|
||||
+ regulator-min-microvolt = <2800000>;
|
||||
+ regulator-max-microvolt = <2800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l7f_1p8: ldo7 {
|
||||
+ regulator-name = "vreg_l7f_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ regulators-1 {
|
||||
+ compatible = "qcom,pm8150-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-l2-l10-supply = <&vreg_bob>;
|
||||
+ vdd-l3-l4-l5-l18-supply = <&vreg_s6a_0p95>;
|
||||
+ vdd-l6-l9-supply = <&vreg_s8c_1p3>;
|
||||
+ vdd-l7-l12-l14-l15-supply = <&vreg_s5a_1p9>;
|
||||
+ vdd-l13-l16-l17-supply = <&vreg_bob>;
|
||||
+
|
||||
+ vreg_l2a_3p1: ldo2 {
|
||||
+ regulator-name = "vreg_l2a_3p1";
|
||||
+ regulator-min-microvolt = <3072000>;
|
||||
+ regulator-max-microvolt = <3072000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l3a_0p9: ldo3 {
|
||||
+ regulator-name = "vreg_l3a_0p9";
|
||||
+ regulator-min-microvolt = <928000>;
|
||||
+ regulator-max-microvolt = <932000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l5a_0p88: ldo5 {
|
||||
+ regulator-name = "vreg_l5a_0p88";
|
||||
+ regulator-min-microvolt = <880000>;
|
||||
+ regulator-max-microvolt = <880000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l6a_1p2: ldo6 {
|
||||
+ regulator-name = "vreg_l6a_1p2";
|
||||
+ regulator-min-microvolt = <1200000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l7a_1p7: ldo7 {
|
||||
+ regulator-name = "vreg_l7a_1p7";
|
||||
+ regulator-min-microvolt = <1704000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l9a_1p2: ldo9 {
|
||||
+ regulator-name = "vreg_l9a_1p2";
|
||||
+ regulator-min-microvolt = <1200000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l10a_1p8: ldo10 {
|
||||
+ regulator-name = "vreg_l10a_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l12a_1p8: ldo12 {
|
||||
+ regulator-name = "vreg_l12a_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l13a_ts_3p0: ldo13 {
|
||||
+ regulator-name = "vreg_l13a_ts_3p0";
|
||||
+ regulator-min-microvolt = <3008000>;
|
||||
+ regulator-max-microvolt = <3008000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l14a_1p8: ldo14 {
|
||||
+ regulator-name = "vreg_l14a_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1880000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l15a_1p8: ldo15 {
|
||||
+ regulator-name = "vreg_l15a_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l16a_2p7: ldo16 {
|
||||
+ regulator-name = "vreg_l16a_2p7";
|
||||
+ regulator-min-microvolt = <2704000>;
|
||||
+ regulator-max-microvolt = <2960000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l17a_3p0: ldo17 {
|
||||
+ regulator-name = "vreg_l17a_3p0";
|
||||
+ regulator-min-microvolt = <2856000>;
|
||||
+ regulator-max-microvolt = <3008000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l18a_0p92: ldo18 {
|
||||
+ regulator-name = "vreg_l18a_0p92";
|
||||
+ regulator-min-microvolt = <800000>;
|
||||
+ regulator-max-microvolt = <912000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_s5a_1p9: smps5 {
|
||||
+ regulator-name = "vreg_s5a_1p9";
|
||||
+ regulator-min-microvolt = <1904000>;
|
||||
+ regulator-max-microvolt = <2000000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_s6a_0p95: smps6 {
|
||||
+ regulator-name = "vreg_s6a_0p95";
|
||||
+ regulator-min-microvolt = <920000>;
|
||||
+ regulator-max-microvolt = <1128000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ regulators-2 {
|
||||
+ compatible = "qcom,pm8150l-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>;
|
||||
+ vdd-s5-supply = <&vph_pwr>;
|
||||
+ vdd-s6-supply = <&vph_pwr>;
|
||||
+ vdd-s7-supply = <&vph_pwr>;
|
||||
+ vdd-s8-supply = <&vph_pwr>;
|
||||
+ vdd-l1-l8-supply = <&vreg_s4a_1p8>;
|
||||
+ vdd-l2-l3-supply = <&vreg_s8c_1p3>;
|
||||
+ vdd-l4-l5-l6-supply = <&vreg_bob>;
|
||||
+ vdd-l7-l11-supply = <&vreg_bob>;
|
||||
+ vdd-l9-l10-supply = <&vreg_bob>;
|
||||
+ vdd-bob-supply = <&vph_pwr>;
|
||||
+
|
||||
+ vreg_bob: bob {
|
||||
+ regulator-name = "vreg_bob";
|
||||
+ regulator-min-microvolt = <3008000>;
|
||||
+ regulator-max-microvolt = <4000000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l1c_1p8: ldo1 {
|
||||
+ regulator-name = "vreg_l1c_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l2c_1p2: ldo2 {
|
||||
+ regulator-name = "vreg_l2c_1p2";
|
||||
+ regulator-min-microvolt = <1200000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l3c_0p8: ldo3 {
|
||||
+ regulator-name = "vreg_l3c_0p8";
|
||||
+ regulator-min-microvolt = <800000>;
|
||||
+ regulator-max-microvolt = <800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l4c_1p7: ldo4 {
|
||||
+ regulator-name = "vreg_l4c_1p7";
|
||||
+ regulator-min-microvolt = <1704000>;
|
||||
+ regulator-max-microvolt = <2928000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l5c_1p8: ldo5 {
|
||||
+ regulator-name = "vreg_l5c_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <2928000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l6c_2p96: ldo6 {
|
||||
+ regulator-name = "vreg_l6c_2p96";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <2960000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l7c_cam_vcm0_2p85: ldo7 {
|
||||
+ regulator-name = "vreg_l7c_cam_vcm0_2p85";
|
||||
+ regulator-min-microvolt = <2856000>;
|
||||
+ regulator-max-microvolt = <3104000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l8c_1p8: ldo8 {
|
||||
+ regulator-name = "vreg_l8c_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l9c_2p96: ldo9 {
|
||||
+ regulator-name = "vreg_l9c_2p96";
|
||||
+ regulator-min-microvolt = <2704000>;
|
||||
+ regulator-max-microvolt = <2960000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l10c_3p0: ldo10 {
|
||||
+ regulator-name = "vreg_l10c_3p0";
|
||||
+ regulator-min-microvolt = <3000000>;
|
||||
+ regulator-max-microvolt = <3000000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l11c_3p3: ldo11 {
|
||||
+ regulator-name = "vreg_l11c_3p3";
|
||||
+ regulator-min-microvolt = <3296000>;
|
||||
+ regulator-max-microvolt = <3296000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ regulator-always-on;
|
||||
+ };
|
||||
+
|
||||
+ vreg_s8c_1p3: smps8 {
|
||||
+ regulator-name = "vreg_s8c_1p3";
|
||||
+ regulator-min-microvolt = <1352000>;
|
||||
+ regulator-max-microvolt = <1352000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&adsp {
|
||||
+ firmware-name = "postmarketos/adsp.mbn";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&cdsp {
|
||||
+ firmware-name = "postmarketos/cdsp.mbn";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&dispcc {
|
||||
+ status = "disabled";
|
||||
+};
|
||||
+
|
||||
+&gmu {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpi_dma0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpi_dma1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpi_dma2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpu {
|
||||
+ status = "disabled";
|
||||
+};
|
||||
+
|
||||
+&i2c1 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ nfc@28 {
|
||||
+ compatible = "nxp,nxp-nci-i2c";
|
||||
+ reg = <0x28>;
|
||||
+
|
||||
+ interrupt-parent = <&tlmm>;
|
||||
+ interrupts = <0x6f IRQ_TYPE_LEVEL_HIGH>;
|
||||
+
|
||||
+ enable-gpios = <&tlmm 83 GPIO_ACTIVE_HIGH>,
|
||||
+ <&tlmm 110 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&i2c5 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ charger@66 {
|
||||
+ compatible = "ti,bq25980";
|
||||
+ status = "ok";
|
||||
+ reg = <0x66>;
|
||||
+ interrupt-parent = <&tlmm>;
|
||||
+ interrupts = <0x0f 0x00>;
|
||||
+ monitored-battery = <&battery>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&i2c16 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ smart_battery: fuel-gauge@55 {
|
||||
+ compatible = "ti,bq27541";
|
||||
+ reg = <0x55>;
|
||||
+ monitored-battery = <&battery>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&i2c13 {
|
||||
+ clock-frequency = <400000>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ touchscreen@48 {
|
||||
+ compatible = "samsung,s6sy761";
|
||||
+ reg = <0x48>;
|
||||
+ interrupt-parent = <&tlmm>;
|
||||
+ interrupts = <0x27 0x2008>;
|
||||
+
|
||||
+ vdd-supply = <&vreg_l13a_ts_3p0>;
|
||||
+ avdd-supply = <&vreg_l1c_1p8>;
|
||||
+
|
||||
+ touchscreen-size-x = <1440>;
|
||||
+ touchscreen-size-y = <3168>;
|
||||
+
|
||||
+ pinctrl-names = "default", "suspend";
|
||||
+ pinctrl-0 = <&ts_int_active>;
|
||||
+ pinctrl-1 = <&ts_rst_suspend>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&mdss {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&slpi {
|
||||
+ firmware-name = "postmarketos/slpi.mbn";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pcie0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pcie0_phy {
|
||||
+ vdda-phy-supply = <&vreg_l5a_0p88>;
|
||||
+ vdda-pll-supply = <&vreg_l9a_1p2>;
|
||||
+ status = "okay";
|
||||
+ power-domains = <&qca639x>;
|
||||
+};
|
||||
+
|
||||
+&pcie1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pcie1_phy {
|
||||
+ vdda-phy-supply = <&vreg_l5a_0p88>;
|
||||
+ vdda-pll-supply = <&vreg_l9a_1p2>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pcie2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pcie2_phy {
|
||||
+ vdda-phy-supply = <&vreg_l5a_0p88>;
|
||||
+ vdda-pll-supply = <&vreg_l9a_1p2>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pm8150_gpios {
|
||||
+ vol_up_n: vol-up-n-state {
|
||||
+ pins = "gpio6";
|
||||
+ function = "normal";
|
||||
+ power-source = <1>;
|
||||
+ input-enable;
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+
|
||||
+ vol_down_n: vol-down-n-state {
|
||||
+ pins = "gpio7";
|
||||
+ function = "normal";
|
||||
+ power-source = <1>;
|
||||
+ input-enable;
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&pon_pwrkey {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pon_resin {
|
||||
+ linux,code = <KEY_VOLUMEDOWN>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&qup_spi4_cs_gpio {
|
||||
+ drive-strength = <6>;
|
||||
+ bias-disable;
|
||||
+};
|
||||
+
|
||||
+&qup_spi4_data_clk {
|
||||
+ drive-strength = <6>;
|
||||
+ bias-disable;
|
||||
+};
|
||||
+
|
||||
+&qupv3_id_0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&qupv3_id_1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&qupv3_id_2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&tlmm {
|
||||
+ gpio-reserved-ranges = <28 4>, <40 4>;
|
||||
+
|
||||
+ bt_en_active: bt-default-state {
|
||||
+ bt-en {
|
||||
+ pins = "gpio21";
|
||||
+ function = "gpio";
|
||||
+
|
||||
+ drive-strength = <16>;
|
||||
+ output-low;
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ bt_en_sleep: bt-sleep-state {
|
||||
+ pins = "gpio21";
|
||||
+ function = "gpio";
|
||||
+
|
||||
+ drive-strength = <0x02>;
|
||||
+ output-low;
|
||||
+ bias-pull-down;
|
||||
+ };
|
||||
+
|
||||
+ wlan_en_active: wlan-default-state {
|
||||
+ wlan-en {
|
||||
+ pins = "gpio20";
|
||||
+ function = "gpio";
|
||||
+
|
||||
+ drive-strength = <16>;
|
||||
+ output-low;
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ wlan_en_sleep: wlan-sleep-state {
|
||||
+ pins = "gpio20";
|
||||
+ function = "gpio";
|
||||
+
|
||||
+ drive-strength = <16>;
|
||||
+ output-low;
|
||||
+ bias-pull-down;
|
||||
+ };
|
||||
+
|
||||
+ ts_int_active: ts-int-active-state {
|
||||
+ pins = "gpio38", "gpio39";
|
||||
+ function = "gpio";
|
||||
+ drive-strength = <2>;
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+
|
||||
+ ts_rst_suspend: ts-rst-suspend {
|
||||
+ pins = "gpio38";
|
||||
+ function = "gpio";
|
||||
+ drive-strength = <0x02>;
|
||||
+ bias-pull-down;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&uart6 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ bluetooth {
|
||||
+ compatible = "qcom,qca6390-bt";
|
||||
+ pinctrl-names = "default", "sleep";
|
||||
+ pinctrl-0 = <&bt_en_active>;
|
||||
+ pinctrl-1 = <&bt_en_sleep>;
|
||||
+
|
||||
+ power-domains = <&qca639x>;
|
||||
+ enable-gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&ufs_mem_hc {
|
||||
+ vcc-supply = <&vreg_l17a_3p0>;
|
||||
+ vcc-max-microamp = <800000>;
|
||||
+ vccq-supply = <&vreg_l6a_1p2>;
|
||||
+ vccq-max-microamp = <800000>;
|
||||
+ vccq2-supply = <&vreg_s4a_1p8>;
|
||||
+ vccq2-max-microamp = <800000>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ufs_mem_phy {
|
||||
+ vdda-phy-supply = <&vreg_l5a_0p88>;
|
||||
+ vdda-pll-supply = <&vreg_l9a_1p2>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_1 {
|
||||
+ /* USB 2.0 only */
|
||||
+ qcom,select-utmi-as-pipe-clk;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_1_dwc3 {
|
||||
+ dr_mode = "peripheral";
|
||||
+ maximum-speed = "high-speed";
|
||||
+ /* Remove USB3 phy */
|
||||
+ phys = <&usb_1_hsphy>;
|
||||
+ phy-names = "usb2-phy";
|
||||
+};
|
||||
+
|
||||
+&usb_1_hsphy {
|
||||
+ vdda-pll-supply = <&vreg_l5a_0p88>;
|
||||
+ vdda18-supply = <&vreg_l12a_1p8>;
|
||||
+ vdda33-supply = <&vreg_l2a_3p1>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_2_dwc3 {
|
||||
+ dr_mode = "host";
|
||||
+};
|
||||
+
|
||||
+&usb_2_hsphy {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ vdda-pll-supply = <&vreg_l5a_0p88>;
|
||||
+ vdda33-supply = <&vreg_l2a_3p1>;
|
||||
+ vdda18-supply = <&vreg_l12a_1p8>;
|
||||
+};
|
||||
+
|
||||
+&usb_2_qmpphy {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ vdda-phy-supply = <&vreg_l9a_1p2>;
|
||||
+ vdda-pll-supply = <&vreg_l18a_0p92>;
|
||||
+};
|
||||
+
|
||||
+&venus {
|
||||
+ firmware-name = "postmarketos/venus.mbn";
|
||||
+ status = "okay";
|
||||
+};
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -11,10 +11,10 @@ Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
1 file changed, 12 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c b/drivers/gpu/drm/msm/dsi/dsi_manager.c
|
||||
index 50d788138192..500b201c54cb 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/dsi/dsi_manager.c
|
||||
+++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c
|
||||
@@ -564,7 +564,7 @@ int msm_dsi_manager_ext_bridge_init(u8 id)
|
||||
@@ -519,7 +519,7 @@ int msm_dsi_manager_ext_bridge_init(u8 id, struct drm_bridge *int_bridge)
|
||||
int msm_dsi_manager_cmd_xfer(int id, const struct mipi_dsi_msg *msg)
|
||||
{
|
||||
struct msm_dsi *msm_dsi = dsi_mgr_get_dsi(id);
|
||||
@ -23,7 +23,7 @@ index 50d788138192..500b201c54cb 100644
|
||||
struct mipi_dsi_host *host = msm_dsi->host;
|
||||
bool is_read = (msg->rx_buf && msg->rx_len);
|
||||
bool need_sync = (IS_SYNC_NEEDED() && !is_read);
|
||||
@@ -575,14 +575,14 @@ int msm_dsi_manager_cmd_xfer(int id, const struct mipi_dsi_msg *msg)
|
||||
@@ -530,14 +530,14 @@ int msm_dsi_manager_cmd_xfer(int id, const struct mipi_dsi_msg *msg)
|
||||
|
||||
/* In bonded master case, panel requires the same commands sent to
|
||||
* both DSI links. Host issues the command trigger to both links
|
||||
@ -43,7 +43,7 @@ index 50d788138192..500b201c54cb 100644
|
||||
if (ret) {
|
||||
pr_err("%s: failed to prepare non-trigger host, %d\n",
|
||||
__func__, ret);
|
||||
@@ -601,8 +601,8 @@ int msm_dsi_manager_cmd_xfer(int id, const struct mipi_dsi_msg *msg)
|
||||
@@ -556,8 +556,8 @@ int msm_dsi_manager_cmd_xfer(int id, const struct mipi_dsi_msg *msg)
|
||||
msm_dsi_host_xfer_restore(host, msg);
|
||||
|
||||
restore_host0:
|
||||
@ -54,7 +54,7 @@ index 50d788138192..500b201c54cb 100644
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -610,14 +610,14 @@ int msm_dsi_manager_cmd_xfer(int id, const struct mipi_dsi_msg *msg)
|
||||
@@ -565,14 +565,14 @@ int msm_dsi_manager_cmd_xfer(int id, const struct mipi_dsi_msg *msg)
|
||||
bool msm_dsi_manager_cmd_xfer_trigger(int id, u32 dma_base, u32 len)
|
||||
{
|
||||
struct msm_dsi *msm_dsi = dsi_mgr_get_dsi(id);
|
||||
@ -0,0 +1,130 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
Date: Sun, 14 Mar 2021 04:52:34 +0300
|
||||
Subject: drm/msm/dpu1: improve support for active CTLs
|
||||
|
||||
- Support setting master interface if several INTFs are to be handled by
|
||||
a single CTL
|
||||
|
||||
- Support setting handling several MERGE_3D instances using a single
|
||||
CTL.
|
||||
|
||||
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
[Marijn: Rebase patch on -next, fix conflicting implementation with
|
||||
recent MERGE_3D patch, implement proper active support for DSC]
|
||||
Signed-off-by: Marijn Suijten <marijn.suijten@somainline.org>
|
||||
---
|
||||
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c | 38 ++++++++--
|
||||
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h | 2 +
|
||||
2 files changed, 32 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c
|
||||
@@ -544,10 +544,12 @@ static void dpu_hw_ctl_intf_cfg_v1(struct dpu_hw_ctl *ctx,
|
||||
struct dpu_hw_intf_cfg *cfg)
|
||||
{
|
||||
struct dpu_hw_blk_reg_map *c = &ctx->hw;
|
||||
- u32 intf_active = 0;
|
||||
- u32 dsc_active = 0;
|
||||
- u32 wb_active = 0;
|
||||
u32 mode_sel = 0;
|
||||
+ u32 cdm_active;
|
||||
+ u32 intf_active;
|
||||
+ u32 wb_active;
|
||||
+ u32 dsc_active;
|
||||
+ u32 merge_3d_active;
|
||||
|
||||
/* CTL_TOP[31:28] carries group_id to collate CTL paths
|
||||
* per VM. Explicitly disable it until VM support is
|
||||
@@ -559,9 +561,14 @@ static void dpu_hw_ctl_intf_cfg_v1(struct dpu_hw_ctl *ctx,
|
||||
if (cfg->intf_mode_sel == DPU_CTL_MODE_SEL_CMD)
|
||||
mode_sel |= BIT(17);
|
||||
|
||||
+ cdm_active = DPU_REG_READ(c, CTL_CDM_ACTIVE);
|
||||
intf_active = DPU_REG_READ(c, CTL_INTF_ACTIVE);
|
||||
wb_active = DPU_REG_READ(c, CTL_WB_ACTIVE);
|
||||
dsc_active = DPU_REG_READ(c, CTL_DSC_ACTIVE);
|
||||
+ merge_3d_active = DPU_REG_READ(c, CTL_MERGE_3D_ACTIVE);
|
||||
+
|
||||
+ if (cfg->cdm)
|
||||
+ cdm_active |= cfg->cdm;
|
||||
|
||||
if (cfg->intf)
|
||||
intf_active |= BIT(cfg->intf - INTF_0);
|
||||
@@ -572,17 +579,23 @@ static void dpu_hw_ctl_intf_cfg_v1(struct dpu_hw_ctl *ctx,
|
||||
if (cfg->dsc)
|
||||
dsc_active |= cfg->dsc;
|
||||
|
||||
+ if (cfg->merge_3d)
|
||||
+ merge_3d_active |= BIT(cfg->merge_3d - MERGE_3D_0);
|
||||
+
|
||||
DPU_REG_WRITE(c, CTL_TOP, mode_sel);
|
||||
+ DPU_REG_WRITE(c, CTL_CDM_ACTIVE, cdm_active);
|
||||
DPU_REG_WRITE(c, CTL_INTF_ACTIVE, intf_active);
|
||||
DPU_REG_WRITE(c, CTL_WB_ACTIVE, wb_active);
|
||||
DPU_REG_WRITE(c, CTL_DSC_ACTIVE, dsc_active);
|
||||
+ DPU_REG_WRITE(c, CTL_MERGE_3D_ACTIVE, merge_3d_active);
|
||||
|
||||
- if (cfg->merge_3d)
|
||||
- DPU_REG_WRITE(c, CTL_MERGE_3D_ACTIVE,
|
||||
- BIT(cfg->merge_3d - MERGE_3D_0));
|
||||
+ if (cfg->intf_master)
|
||||
+ DPU_REG_WRITE(c, CTL_INTF_MASTER, BIT(cfg->intf_master - INTF_0));
|
||||
|
||||
- if (cfg->cdm)
|
||||
- DPU_REG_WRITE(c, CTL_CDM_ACTIVE, cfg->cdm);
|
||||
+ if (cfg->intf_master)
|
||||
+ DPU_DEBUG_DRIVER("ACTIVE: intf:%#x merge_3d:%#x dsc:%#x master_intf:%d\n", intf_active, merge_3d_active, dsc_active, cfg->intf_master - INTF_0);
|
||||
+ else
|
||||
+ DPU_DEBUG_DRIVER("ACTIVE: intf:%#x merge_3d:%#x dsc:%#x\n", intf_active, merge_3d_active, dsc_active);
|
||||
}
|
||||
|
||||
static void dpu_hw_ctl_intf_cfg(struct dpu_hw_ctl *ctx,
|
||||
@@ -623,6 +636,7 @@ static void dpu_hw_ctl_reset_intf_cfg_v1(struct dpu_hw_ctl *ctx,
|
||||
{
|
||||
struct dpu_hw_blk_reg_map *c = &ctx->hw;
|
||||
u32 intf_active = 0;
|
||||
+ u32 intf_master = 0;
|
||||
u32 wb_active = 0;
|
||||
u32 merge3d_active = 0;
|
||||
u32 dsc_active;
|
||||
@@ -649,6 +663,14 @@ static void dpu_hw_ctl_reset_intf_cfg_v1(struct dpu_hw_ctl *ctx,
|
||||
intf_active = DPU_REG_READ(c, CTL_INTF_ACTIVE);
|
||||
intf_active &= ~BIT(cfg->intf - INTF_0);
|
||||
DPU_REG_WRITE(c, CTL_INTF_ACTIVE, intf_active);
|
||||
+
|
||||
+ /* Unset this intf as master, if it is the current master */
|
||||
+ /* TODO: Marijn: does this make any sense? */
|
||||
+ intf_master = DPU_REG_READ(c, CTL_INTF_MASTER);
|
||||
+ if (intf_master == BIT(cfg->intf - INTF_0)) {
|
||||
+ DPU_DEBUG_DRIVER("Unsetting intf:%d master\n", cfg->intf - INTF_0);
|
||||
+ DPU_REG_WRITE(c, CTL_INTF_MASTER, 0);
|
||||
+ }
|
||||
}
|
||||
|
||||
if (cfg->wb) {
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.h
|
||||
@@ -36,6 +36,7 @@ struct dpu_hw_stage_cfg {
|
||||
/**
|
||||
* struct dpu_hw_intf_cfg :Describes how the DPU writes data to output interface
|
||||
* @intf : Interface id
|
||||
+ * @intf_master: Master interface id in the dual pipe topology
|
||||
* @mode_3d: 3d mux configuration
|
||||
* @merge_3d: 3d merge block used
|
||||
* @intf_mode_sel: Interface mode, cmd / vid
|
||||
@@ -45,6 +46,7 @@ struct dpu_hw_stage_cfg {
|
||||
*/
|
||||
struct dpu_hw_intf_cfg {
|
||||
enum dpu_intf intf;
|
||||
+ enum dpu_intf intf_master;
|
||||
enum dpu_wb wb;
|
||||
enum dpu_3d_blend_mode mode_3d;
|
||||
enum dpu_merge_3d merge_3d;
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -10,43 +10,17 @@ available.
|
||||
|
||||
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
---
|
||||
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h | 1 +
|
||||
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h | 1 +
|
||||
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 8 ++++--
|
||||
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h | 1 +
|
||||
drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c | 14 +++++++---
|
||||
drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h | 1 +
|
||||
6 files changed, 20 insertions(+), 6 deletions(-)
|
||||
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 8 ++++--
|
||||
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h | 1 +
|
||||
drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c | 14 +++++++---
|
||||
drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h | 1 +
|
||||
4 files changed, 18 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h
|
||||
index 9392ad2b4d3f..35b3856f9df0 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h
|
||||
@@ -15,6 +15,7 @@ static const struct dpu_caps sm8150_dpu_caps = {
|
||||
.has_dim_layer = true,
|
||||
.has_idle_pc = true,
|
||||
.has_3d_merge = true,
|
||||
+ .has_active_ctls = true,
|
||||
.max_linewidth = 4096,
|
||||
.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
|
||||
.max_hdeci_exp = MAX_HORZ_DECIMATION,
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h
|
||||
index 94278a3e3483..be95a27c45ea 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h
|
||||
@@ -15,6 +15,7 @@ static const struct dpu_caps sm8250_dpu_caps = {
|
||||
.has_dim_layer = true,
|
||||
.has_idle_pc = true,
|
||||
.has_3d_merge = true,
|
||||
+ .has_active_ctls = true,
|
||||
.max_linewidth = 4096,
|
||||
.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
|
||||
};
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
|
||||
index 1cf7ff6caff4..98f46cc989af 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c
|
||||
@@ -1117,14 +1117,18 @@ static void dpu_encoder_virt_atomic_mode_set(struct drm_encoder *drm_enc,
|
||||
@@ -1190,14 +1190,18 @@ static void dpu_encoder_virt_atomic_mode_set(struct drm_encoder *drm_enc,
|
||||
return;
|
||||
}
|
||||
|
||||
@ -66,12 +40,12 @@ index 1cf7ff6caff4..98f46cc989af 100644
|
||||
- phys->hw_ctl = to_dpu_hw_ctl(hw_ctl[i]);
|
||||
|
||||
phys->cached_mode = crtc_state->adjusted_mode;
|
||||
if (phys->ops.atomic_mode_set)
|
||||
}
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h
|
||||
index df024e10d3a3..4e9533c7e86f 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_hw_catalog.h
|
||||
@@ -359,6 +359,7 @@ struct dpu_caps {
|
||||
@@ -354,6 +354,7 @@ struct dpu_caps {
|
||||
bool has_dim_layer;
|
||||
bool has_idle_pc;
|
||||
bool has_3d_merge;
|
||||
@ -80,10 +54,10 @@ index df024e10d3a3..4e9533c7e86f 100644
|
||||
u32 max_linewidth;
|
||||
u32 pixel_ram_size;
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
|
||||
index 8759466e2f37..ba55b4381733 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.c
|
||||
@@ -196,6 +196,7 @@ int dpu_rm_init(struct dpu_rm *rm,
|
||||
@@ -132,6 +132,7 @@ int dpu_rm_init(struct drm_device *dev,
|
||||
}
|
||||
rm->ctl_blks[ctl->id - CTL_0] = &hw->base;
|
||||
}
|
||||
@ -91,7 +65,7 @@ index 8759466e2f37..ba55b4381733 100644
|
||||
|
||||
for (i = 0; i < cat->dspp_count; i++) {
|
||||
struct dpu_hw_dspp *hw;
|
||||
@@ -418,10 +419,15 @@ static int _dpu_rm_reserve_ctls(
|
||||
@@ -366,10 +367,15 @@ static int _dpu_rm_reserve_ctls(
|
||||
int i = 0, j, num_ctls;
|
||||
bool needs_split_display;
|
||||
|
||||
@ -110,7 +84,7 @@ index 8759466e2f37..ba55b4381733 100644
|
||||
|
||||
for (j = 0; j < ARRAY_SIZE(rm->ctl_blks); j++) {
|
||||
const struct dpu_hw_ctl *ctl;
|
||||
@@ -439,7 +445,7 @@ static int _dpu_rm_reserve_ctls(
|
||||
@@ -387,7 +393,7 @@ static int _dpu_rm_reserve_ctls(
|
||||
|
||||
DPU_DEBUG("ctl %d caps 0x%lX\n", j + CTL_0, features);
|
||||
|
||||
@ -120,13 +94,13 @@ index 8759466e2f37..ba55b4381733 100644
|
||||
|
||||
ctl_idx[i] = j;
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h
|
||||
index 2b551566cbf4..6e4777f57e23 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_rm.h
|
||||
@@ -33,6 +33,7 @@ struct dpu_rm {
|
||||
struct dpu_hw_blk *merge_3d_blks[MERGE_3D_MAX - MERGE_3D_0];
|
||||
@@ -35,6 +35,7 @@ struct dpu_rm {
|
||||
struct dpu_hw_blk *dsc_blks[DSC_MAX - DSC_0];
|
||||
struct dpu_hw_sspp *hw_sspp[SSPP_MAX - SSPP_NONE];
|
||||
struct dpu_hw_blk *cdm_blk;
|
||||
+ bool has_active_ctls;
|
||||
};
|
||||
|
||||
@ -0,0 +1,157 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
Date: Thu, 11 May 2023 18:44:50 +0300
|
||||
Subject: drm/msm/dpu: populate has_active_ctls in the catalog
|
||||
|
||||
Set the has_active_ctls for all the platforms which need this bit.
|
||||
|
||||
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
---
|
||||
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h | 1 +
|
||||
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h | 1 +
|
||||
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h | 1 +
|
||||
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h | 1 +
|
||||
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h | 1 +
|
||||
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h | 1 +
|
||||
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h | 1 +
|
||||
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h | 1 +
|
||||
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 1 +
|
||||
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h | 1 +
|
||||
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h | 1 +
|
||||
11 files changed, 11 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_0_sm8150.h
|
||||
@@ -14,6 +14,7 @@ static const struct dpu_caps sm8150_dpu_caps = {
|
||||
.has_dim_layer = true,
|
||||
.has_idle_pc = true,
|
||||
.has_3d_merge = true,
|
||||
+ .has_active_ctls = true,
|
||||
.max_linewidth = 4096,
|
||||
.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
|
||||
.max_hdeci_exp = MAX_HORZ_DECIMATION,
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_5_1_sc8180x.h
|
||||
@@ -14,6 +14,7 @@ static const struct dpu_caps sc8180x_dpu_caps = {
|
||||
.has_dim_layer = true,
|
||||
.has_idle_pc = true,
|
||||
.has_3d_merge = true,
|
||||
+ .has_active_ctls = true,
|
||||
.max_linewidth = 4096,
|
||||
.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
|
||||
.max_hdeci_exp = MAX_HORZ_DECIMATION,
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_0_sm8250.h
|
||||
@@ -14,6 +14,7 @@ static const struct dpu_caps sm8250_dpu_caps = {
|
||||
.has_dim_layer = true,
|
||||
.has_idle_pc = true,
|
||||
.has_3d_merge = true,
|
||||
+ .has_active_ctls = true,
|
||||
.max_linewidth = 4096,
|
||||
.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
|
||||
};
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_2_sc7180.h
|
||||
@@ -12,6 +12,7 @@ static const struct dpu_caps sc7180_dpu_caps = {
|
||||
.max_mixer_blendstages = 0x9,
|
||||
.has_dim_layer = true,
|
||||
.has_idle_pc = true,
|
||||
+ .has_active_ctls = true,
|
||||
.max_linewidth = DEFAULT_DPU_OUTPUT_LINE_WIDTH,
|
||||
.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
|
||||
};
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_3_sm6115.h
|
||||
@@ -12,6 +12,7 @@ static const struct dpu_caps sm6115_dpu_caps = {
|
||||
.max_mixer_blendstages = 0x4,
|
||||
.has_dim_layer = true,
|
||||
.has_idle_pc = true,
|
||||
+ .has_active_ctls = true,
|
||||
.max_linewidth = 2160,
|
||||
.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
|
||||
};
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_6_5_qcm2290.h
|
||||
@@ -12,6 +12,7 @@ static const struct dpu_caps qcm2290_dpu_caps = {
|
||||
.max_mixer_blendstages = 0x4,
|
||||
.has_dim_layer = true,
|
||||
.has_idle_pc = true,
|
||||
+ .has_active_ctls = true,
|
||||
.max_linewidth = 2160,
|
||||
.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
|
||||
};
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_0_sm8350.h
|
||||
@@ -14,6 +14,7 @@ static const struct dpu_caps sm8350_dpu_caps = {
|
||||
.has_dim_layer = true,
|
||||
.has_idle_pc = true,
|
||||
.has_3d_merge = true,
|
||||
+ .has_active_ctls = true,
|
||||
.max_linewidth = 4096,
|
||||
.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
|
||||
};
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_7_2_sc7280.h
|
||||
@@ -12,6 +12,7 @@ static const struct dpu_caps sc7280_dpu_caps = {
|
||||
.max_mixer_blendstages = 0x7,
|
||||
.has_dim_layer = true,
|
||||
.has_idle_pc = true,
|
||||
+ .has_active_ctls = true,
|
||||
.max_linewidth = 2400,
|
||||
.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
|
||||
};
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h
|
||||
@@ -14,6 +14,7 @@ static const struct dpu_caps sc8280xp_dpu_caps = {
|
||||
.has_dim_layer = true,
|
||||
.has_idle_pc = true,
|
||||
.has_3d_merge = true,
|
||||
+ .has_active_ctls = true,
|
||||
.max_linewidth = 5120,
|
||||
.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
|
||||
};
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h
|
||||
@@ -14,6 +14,7 @@ static const struct dpu_caps sm8450_dpu_caps = {
|
||||
.has_dim_layer = true,
|
||||
.has_idle_pc = true,
|
||||
.has_3d_merge = true,
|
||||
+ .has_active_ctls = true,
|
||||
.max_linewidth = 5120,
|
||||
.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
|
||||
};
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h
|
||||
@@ -14,6 +14,7 @@ static const struct dpu_caps sm8550_dpu_caps = {
|
||||
.has_dim_layer = true,
|
||||
.has_idle_pc = true,
|
||||
.has_3d_merge = true,
|
||||
+ .has_active_ctls = true,
|
||||
.max_linewidth = 5120,
|
||||
.pixel_ram_size = DEFAULT_PIXEL_RAM_SIZE,
|
||||
};
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -1,22 +1,23 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
Date: Sun, 14 Mar 2021 05:03:35 +0300
|
||||
Subject: drm/msm/dpu1: dpu_encoder_phys_*: proper suppor for active CTLs
|
||||
Subject: drm/msm/dpu1: dpu_encoder_phys_*: proper support for active CTLs
|
||||
|
||||
Adapt dpu_encoder_phys_* to properly support active CTLs and their
|
||||
features.
|
||||
|
||||
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
|
||||
[Marijn: title typo]
|
||||
---
|
||||
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c | 2 ++
|
||||
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c | 5 ++++-
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c
|
||||
index be185fe69793..4eb2cc1e2993 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c
|
||||
@@ -57,6 +57,8 @@ static void _dpu_encoder_phys_cmd_update_intf_cfg(
|
||||
@@ -59,6 +59,8 @@ static void _dpu_encoder_phys_cmd_update_intf_cfg(
|
||||
return;
|
||||
|
||||
intf_cfg.intf = phys_enc->hw_intf->idx;
|
||||
@ -26,19 +27,19 @@ index be185fe69793..4eb2cc1e2993 100644
|
||||
intf_cfg.stream_sel = cmd_enc->stream_sel;
|
||||
intf_cfg.mode_3d = dpu_encoder_helper_get_3d_blend_mode(phys_enc);
|
||||
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c
|
||||
index a01fda711883..1293b0ea3782 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c
|
||||
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c
|
||||
@@ -271,6 +271,8 @@ static void dpu_encoder_phys_vid_setup_timing_engine(
|
||||
DPU_DEBUG_VIDENC(phys_enc, "fmt_fourcc 0x%X\n", fmt_fourcc);
|
||||
|
||||
@@ -280,6 +280,8 @@ static void dpu_encoder_phys_vid_setup_timing_engine(
|
||||
if (phys_enc->hw_cdm)
|
||||
intf_cfg.cdm = phys_enc->hw_cdm->idx;
|
||||
intf_cfg.intf = phys_enc->hw_intf->idx;
|
||||
+ if (phys_enc->split_role == ENC_ROLE_MASTER)
|
||||
+ intf_cfg.intf_master = phys_enc->hw_intf->idx;
|
||||
intf_cfg.intf_mode_sel = DPU_CTL_MODE_SEL_VID;
|
||||
intf_cfg.stream_sel = 0; /* Don't care value for video mode */
|
||||
intf_cfg.mode_3d = dpu_encoder_helper_get_3d_blend_mode(phys_enc);
|
||||
@@ -344,7 +346,8 @@ static void dpu_encoder_phys_vid_underrun_irq(void *arg)
|
||||
@@ -353,7 +355,8 @@ static void dpu_encoder_phys_vid_underrun_irq(void *arg)
|
||||
static bool dpu_encoder_phys_vid_needs_single_flush(
|
||||
struct dpu_encoder_phys *phys_enc)
|
||||
{
|
||||
@ -47,7 +48,7 @@ index a01fda711883..1293b0ea3782 100644
|
||||
+ phys_enc->split_role != ENC_ROLE_SOLO;
|
||||
}
|
||||
|
||||
static void dpu_encoder_phys_vid_atomic_mode_set(
|
||||
static int dpu_encoder_phys_vid_control_vblank_irq(
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -8,10 +8,10 @@ Subject: arm64: dts: qcom: sm8250-xiaomi-elish: add pd negotiation support
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
index b55bcdbcbe2c..9029fe5fda30 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
@@ -809,7 +809,8 @@ &pm8150b_typec {
|
||||
@@ -810,7 +810,8 @@ &pm8150b_typec {
|
||||
connector {
|
||||
compatible = "usb-c-connector";
|
||||
|
||||
@ -21,7 +21,7 @@ index b55bcdbcbe2c..9029fe5fda30 100644
|
||||
data-role = "dual";
|
||||
self-powered;
|
||||
|
||||
@@ -818,6 +819,12 @@ PDO_FIXED_DUAL_ROLE |
|
||||
@@ -819,6 +820,12 @@ PDO_FIXED_DUAL_ROLE |
|
||||
PDO_FIXED_USB_COMM |
|
||||
PDO_FIXED_DATA_SWAP)>;
|
||||
|
||||
@ -8,10 +8,10 @@ Subject: arm64: dts: qcom: sm8250-xiaomi-elish: add keyboard support
|
||||
1 file changed, 40 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
index 726d886ecce8..4dda3b7b59e9 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
@@ -1007,6 +1007,23 @@ dout-pins {
|
||||
@@ -1011,6 +1011,23 @@ dout-pins {
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
@ -35,7 +35,7 @@ index 726d886ecce8..4dda3b7b59e9 100644
|
||||
};
|
||||
|
||||
&uart6 {
|
||||
@@ -1048,6 +1065,29 @@ &usb_1_role_switch_out {
|
||||
@@ -1052,6 +1069,29 @@ &usb_1_role_switch_out {
|
||||
remote-endpoint = <&pm8150b_role_switch_in>;
|
||||
};
|
||||
|
||||
@ -0,0 +1,851 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: d4n1 <d4n1.551@gmail.com>
|
||||
Date: Fri, 19 Jan 2024 15:17:45 +0500
|
||||
Subject: arm64: dts: qcom: sm8250-oneplus-kebab: Add device tree for OnePlus
|
||||
8t
|
||||
|
||||
---
|
||||
arch/arm64/boot/dts/qcom/sm8250-oneplus-kebab.dts | 832 ++++++++++
|
||||
1 file changed, 832 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sm8250-oneplus-kebab.dts b/arch/arm64/boot/dts/qcom/sm8250-oneplus-kebab.dts
|
||||
new file mode 100644
|
||||
index 000000000000..111111111111
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/qcom/sm8250-oneplus-kebab.dts
|
||||
@@ -0,0 +1,832 @@
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+#include <dt-bindings/arm/qcom,ids.h>
|
||||
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
|
||||
+#include <dt-bindings/phy/phy.h>
|
||||
+#include "sm8250.dtsi"
|
||||
+#include "pm8150.dtsi"
|
||||
+#include "pm8150b.dtsi"
|
||||
+#include "pm8150l.dtsi"
|
||||
+#include "pm8009.dtsi"
|
||||
+
|
||||
+/*
|
||||
+ * Delete following upstream (sm8250.dtsi) reserved
|
||||
+ * memory mappings which are different in this device.
|
||||
+ */
|
||||
+/delete-node/ &removed_mem;
|
||||
+/delete-node/ &camera_mem;
|
||||
+/delete-node/ &wlan_mem;
|
||||
+/delete-node/ &ipa_fw_mem;
|
||||
+/delete-node/ &ipa_gsi_mem;
|
||||
+/delete-node/ &gpu_mem;
|
||||
+/delete-node/ &npu_mem;
|
||||
+/delete-node/ &video_mem;
|
||||
+/delete-node/ &cvp_mem;
|
||||
+/delete-node/ &cdsp_mem;
|
||||
+/delete-node/ &slpi_mem;
|
||||
+/delete-node/ &adsp_mem;
|
||||
+/delete-node/ &spss_mem;
|
||||
+/delete-node/ &cdsp_secure_heap;
|
||||
+
|
||||
+/ {
|
||||
+ model = "OnePlus 8T (kebab)";
|
||||
+ compatible = "oneplus,kebab", "qcom,kona", "qcom,sm8250";
|
||||
+ chassis-type = "handset";
|
||||
+
|
||||
+ qcom,msm-id = <0x164 0x10000>, <0x164 0x20001>;
|
||||
+ qcom,board-id = <0x08 0x00>, <0x00 0x00>;
|
||||
+
|
||||
+ aliases {
|
||||
+ hsuart0 = &uart6;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ #address-cells = <2>;
|
||||
+ #size-cells = <2>;
|
||||
+ ranges;
|
||||
+ stdout-path = "framebuffer0";
|
||||
+
|
||||
+ framebuffer0: framebuffer@9c000000 {
|
||||
+ compatible = "simple-framebuffer";
|
||||
+ reg = <0x0 0x9c000000 0x0 (1080 * 2376 * 4)>;
|
||||
+ width = <1080>;
|
||||
+ height = <2376>;
|
||||
+ stride = <(1080 * 4)>;
|
||||
+ format = "a8r8g8b8";
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ gpio_keys: gpio-keys {
|
||||
+ compatible = "gpio-keys";
|
||||
+
|
||||
+ vol-up {
|
||||
+ label = "Volume Up";
|
||||
+ gpios = <&pm8150_gpios 6 GPIO_ACTIVE_LOW>;
|
||||
+ linux,code = <KEY_VOLUMEUP>;
|
||||
+ debounce-interval = <15>;
|
||||
+ linux,can-disable;
|
||||
+ gpio-key,wakeup;
|
||||
+ };
|
||||
+
|
||||
+ vol-down {
|
||||
+ label = "Volume Down";
|
||||
+ linux,code = <KEY_VOLUMEDOWN>;
|
||||
+ gpios = <&pm8150_gpios 7 GPIO_ACTIVE_LOW>;
|
||||
+ debounce-interval = <15>;
|
||||
+ linux,can-disable;
|
||||
+ gpio-key,wakeup;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ reserved-memory {
|
||||
+ // removed_mem: memory@80b00000 {
|
||||
+ // reg = <0x0 0x80b00000 0x0 0xcd00000>;
|
||||
+ // no-map;
|
||||
+ // };
|
||||
+
|
||||
+ camera_mem: memory@8dc00000 {
|
||||
+ reg = <0x0 0x8dc00000 0x0 0x500000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ wlan_mem: memory@8e100000 {
|
||||
+ reg = <0x0 0x8e100000 0x0 0x100000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ ipa_fw_mem: memory@8e200000 {
|
||||
+ reg = <0x0 0x8e200000 0x0 0x10000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ ipa_gsi_mem: memory@8e210000 {
|
||||
+ reg = <0x0 0x8e210000 0x0 0xa000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ gpu_mem: memory@8e21a000 {
|
||||
+ reg = <0x0 0x8e21a000 0x0 0x2000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ npu_mem: memory@8e300000 {
|
||||
+ reg = <0x0 0x8e300000 0x0 0x500000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ video_mem: memory@8e800000 {
|
||||
+ reg = <0x0 0x8e800000 0x0 0x500000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ cvp_mem: memory@8ed00000 {
|
||||
+ reg = <0x0 0x8ed00000 0x0 0x500000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ cdsp_mem: memory@8f200000 {
|
||||
+ reg = <0x0 0x8f200000 0x0 0x1400000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ slpi_mem: memory@90600000 {
|
||||
+ reg = <0x0 0x90600000 0x0 0x1500000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ adsp_mem: memory@91b00000 {
|
||||
+ reg = <0x00 0x91b00000 0x00 0x2500000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ spss_mem: memory@94000000 {
|
||||
+ reg = <0x0 0x94000000 0x0 0x100000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ cdsp_secure_heap: memory@94100000 {
|
||||
+ reg = <0x0 0x94100000 0x0 0x4600000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ cont_splash_mem: memory@9c000000 {
|
||||
+ reg = <0x0 0x9c000000 0x0 0x2300000>;
|
||||
+ no-map;
|
||||
+ };
|
||||
+
|
||||
+ // ramoops@b0000000 {
|
||||
+ // compatible = "ramoops";
|
||||
+ // reg = <0x00 0xb0000000 0x00 0x400000>;
|
||||
+ // record-size = <0x40000>;
|
||||
+ // console-size = <0x40000>;
|
||||
+ // ecc-size = <0x00>;
|
||||
+ // no-map;
|
||||
+ // };
|
||||
+ };
|
||||
+
|
||||
+ vph_pwr: vph-pwr-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vph_pwr";
|
||||
+ regulator-min-microvolt = <3700000>;
|
||||
+ regulator-max-microvolt = <3700000>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_s6c_0p88: smpc6-regulator {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vreg_s6c_0p88";
|
||||
+ regulator-min-microvolt = <880000>;
|
||||
+ regulator-max-microvolt = <880000>;
|
||||
+ regulator-always-on;
|
||||
+ vin-supply = <&vph_pwr>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_s4a_1p8: vreg-s4a-1p8 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vreg_s4a_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-always-on;
|
||||
+ };
|
||||
+
|
||||
+ qca639x: qca639x {
|
||||
+ compatible = "qcom,qca6390";
|
||||
+ #power-domain-cells = <0>;
|
||||
+
|
||||
+ vddaon-supply = <&vreg_s6a_0p95>;
|
||||
+ vddpmu-supply = <&vreg_s2f_0p95>;
|
||||
+ vddrfa1-supply = <&vreg_s2f_0p95>;
|
||||
+ vddrfa2-supply = <&vreg_s8c_1p3>;
|
||||
+ vddrfa3-supply = <&vreg_s5a_1p9>;
|
||||
+ vddpcie1-supply = <&vreg_s8c_1p3>;
|
||||
+ vddpcie2-supply = <&vreg_s5a_1p9>;
|
||||
+ vddio-supply = <&vreg_s4a_1p8>;
|
||||
+
|
||||
+ pinctrl-names = "default", "sleep";
|
||||
+ pinctrl-0 = <&wlan_en_active>;
|
||||
+ pinctrl-1 = <&wlan_en_sleep>;
|
||||
+
|
||||
+ wlan-en-gpios = <&tlmm 20 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
+ battery: battery {
|
||||
+ compatible = "simple-battery";
|
||||
+
|
||||
+ charge-full-design-microamp-hours = <4410000>;
|
||||
+ energy-full-design-microwatt-hours = <17060000>;
|
||||
+ voltage-max-design-microvolt = <4350000>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&apps_rsc {
|
||||
+ regulators-0 {
|
||||
+ compatible = "qcom,pm8009-1-rpmh-regulators";
|
||||
+ qcom,pmic-id = "f";
|
||||
+
|
||||
+ vdd-s1-supply = <&vph_pwr>;
|
||||
+ vdd-s2-supply = <&vph_pwr>;
|
||||
+ vdd-l2-supply = <&vreg_s8c_1p3>;
|
||||
+ vdd-l5-l6-supply = <&vreg_bob>;
|
||||
+ vdd-l7-supply = <&vreg_s4a_1p8>;
|
||||
+
|
||||
+ vreg_s2f_0p95: smps2 {
|
||||
+ regulator-name = "vreg_s2f_0p95";
|
||||
+ regulator-min-microvolt = <900000>;
|
||||
+ regulator-max-microvolt = <952000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l1f_1p1: ldo1 {
|
||||
+ regulator-name = "vreg_l1f_1p1";
|
||||
+ regulator-min-microvolt = <1104000>;
|
||||
+ regulator-max-microvolt = <1104000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l2f_1p2: ldo2 {
|
||||
+ regulator-name = "vreg_l2f_1p2";
|
||||
+ regulator-min-microvolt = <1200000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l6f_2p8: ldo6 {
|
||||
+ regulator-name = "vreg_l6f_2p8";
|
||||
+ regulator-min-microvolt = <2800000>;
|
||||
+ regulator-max-microvolt = <2800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l7f_1p8: ldo7 {
|
||||
+ regulator-name = "vreg_l7f_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ regulators-1 {
|
||||
+ compatible = "qcom,pm8150-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-l2-l10-supply = <&vreg_bob>;
|
||||
+ vdd-l3-l4-l5-l18-supply = <&vreg_s6a_0p95>;
|
||||
+ vdd-l6-l9-supply = <&vreg_s8c_1p3>;
|
||||
+ vdd-l7-l12-l14-l15-supply = <&vreg_s5a_1p9>;
|
||||
+ vdd-l13-l16-l17-supply = <&vreg_bob>;
|
||||
+
|
||||
+ vreg_l2a_3p1: ldo2 {
|
||||
+ regulator-name = "vreg_l2a_3p1";
|
||||
+ regulator-min-microvolt = <3072000>;
|
||||
+ regulator-max-microvolt = <3072000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l3a_0p9: ldo3 {
|
||||
+ regulator-name = "vreg_l3a_0p9";
|
||||
+ regulator-min-microvolt = <928000>;
|
||||
+ regulator-max-microvolt = <932000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l5a_0p88: ldo5 {
|
||||
+ regulator-name = "vreg_l5a_0p88";
|
||||
+ regulator-min-microvolt = <880000>;
|
||||
+ regulator-max-microvolt = <880000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l6a_1p2: ldo6 {
|
||||
+ regulator-name = "vreg_l6a_1p2";
|
||||
+ regulator-min-microvolt = <1200000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l7a_1p7: ldo7 {
|
||||
+ regulator-name = "vreg_l7a_1p7";
|
||||
+ regulator-min-microvolt = <1704000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l9a_1p2: ldo9 {
|
||||
+ regulator-name = "vreg_l9a_1p2";
|
||||
+ regulator-min-microvolt = <1200000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l10a_1p8: ldo10 {
|
||||
+ regulator-name = "vreg_l10a_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l12a_1p8: ldo12 {
|
||||
+ regulator-name = "vreg_l12a_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l13a_ts_3p0: ldo13 {
|
||||
+ regulator-name = "vreg_l13a_ts_3p0";
|
||||
+ regulator-min-microvolt = <3008000>;
|
||||
+ regulator-max-microvolt = <3008000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l14a_1p8: ldo14 {
|
||||
+ regulator-name = "vreg_l14a_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1880000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l15a_1p8: ldo15 {
|
||||
+ regulator-name = "vreg_l15a_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l16a_2p7: ldo16 {
|
||||
+ regulator-name = "vreg_l16a_2p7";
|
||||
+ regulator-min-microvolt = <2704000>;
|
||||
+ regulator-max-microvolt = <2960000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l17a_3p0: ldo17 {
|
||||
+ regulator-name = "vreg_l17a_3p0";
|
||||
+ regulator-min-microvolt = <2856000>;
|
||||
+ regulator-max-microvolt = <3008000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l18a_0p92: ldo18 {
|
||||
+ regulator-name = "vreg_l18a_0p92";
|
||||
+ regulator-min-microvolt = <800000>;
|
||||
+ regulator-max-microvolt = <912000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_s5a_1p9: smps5 {
|
||||
+ regulator-name = "vreg_s5a_1p9";
|
||||
+ regulator-min-microvolt = <1904000>;
|
||||
+ regulator-max-microvolt = <2000000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_s6a_0p95: smps6 {
|
||||
+ regulator-name = "vreg_s6a_0p95";
|
||||
+ regulator-min-microvolt = <920000>;
|
||||
+ regulator-max-microvolt = <1128000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ regulators-2 {
|
||||
+ compatible = "qcom,pm8150l-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>;
|
||||
+ vdd-s5-supply = <&vph_pwr>;
|
||||
+ vdd-s6-supply = <&vph_pwr>;
|
||||
+ vdd-s7-supply = <&vph_pwr>;
|
||||
+ vdd-s8-supply = <&vph_pwr>;
|
||||
+ vdd-l1-l8-supply = <&vreg_s4a_1p8>;
|
||||
+ vdd-l2-l3-supply = <&vreg_s8c_1p3>;
|
||||
+ vdd-l4-l5-l6-supply = <&vreg_bob>;
|
||||
+ vdd-l7-l11-supply = <&vreg_bob>;
|
||||
+ vdd-l9-l10-supply = <&vreg_bob>;
|
||||
+ vdd-bob-supply = <&vph_pwr>;
|
||||
+
|
||||
+ vreg_bob: bob {
|
||||
+ regulator-name = "vreg_bob";
|
||||
+ regulator-min-microvolt = <3008000>;
|
||||
+ regulator-max-microvolt = <4000000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l1c_1p8: ldo1 {
|
||||
+ regulator-name = "vreg_l1c_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l2c_1p2: ldo2 {
|
||||
+ regulator-name = "vreg_l2c_1p2";
|
||||
+ regulator-min-microvolt = <1200000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l3c_0p8: ldo3 {
|
||||
+ regulator-name = "vreg_l3c_0p8";
|
||||
+ regulator-min-microvolt = <800000>;
|
||||
+ regulator-max-microvolt = <800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l4c_1p7: ldo4 {
|
||||
+ regulator-name = "vreg_l4c_1p7";
|
||||
+ regulator-min-microvolt = <1704000>;
|
||||
+ regulator-max-microvolt = <2928000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l5c_1p8: ldo5 {
|
||||
+ regulator-name = "vreg_l5c_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <2928000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l6c_2p96: ldo6 {
|
||||
+ regulator-name = "vreg_l6c_2p96";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <2960000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l7c_cam_vcm0_2p85: ldo7 {
|
||||
+ regulator-name = "vreg_l7c_cam_vcm0_2p85";
|
||||
+ regulator-min-microvolt = <2856000>;
|
||||
+ regulator-max-microvolt = <3104000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l8c_1p8: ldo8 {
|
||||
+ regulator-name = "vreg_l8c_1p8";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l9c_2p96: ldo9 {
|
||||
+ regulator-name = "vreg_l9c_2p96";
|
||||
+ regulator-min-microvolt = <2704000>;
|
||||
+ regulator-max-microvolt = <2960000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l10c_3p0: ldo10 {
|
||||
+ regulator-name = "vreg_l10c_3p0";
|
||||
+ regulator-min-microvolt = <3000000>;
|
||||
+ regulator-max-microvolt = <3000000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+
|
||||
+ vreg_l11c_3p3: ldo11 {
|
||||
+ regulator-name = "vreg_l11c_3p3";
|
||||
+ regulator-min-microvolt = <3296000>;
|
||||
+ regulator-max-microvolt = <3296000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ regulator-always-on;
|
||||
+ };
|
||||
+
|
||||
+ vreg_s8c_1p3: smps8 {
|
||||
+ regulator-name = "vreg_s8c_1p3";
|
||||
+ regulator-min-microvolt = <1352000>;
|
||||
+ regulator-max-microvolt = <1352000>;
|
||||
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&adsp {
|
||||
+ firmware-name = "postmarketos/adsp.mbn";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&cdsp {
|
||||
+ firmware-name = "postmarketos/cdsp.mbn";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&dispcc {
|
||||
+ status = "disabled";
|
||||
+};
|
||||
+
|
||||
+&gmu {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpi_dma0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpi_dma1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpi_dma2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&gpu {
|
||||
+ status = "disabled";
|
||||
+};
|
||||
+
|
||||
+&i2c1 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ nfc@28 {
|
||||
+ compatible = "nxp,nxp-nci-i2c";
|
||||
+ reg = <0x28>;
|
||||
+
|
||||
+ interrupt-parent = <&tlmm>;
|
||||
+ interrupts = <0x6f IRQ_TYPE_LEVEL_HIGH>;
|
||||
+
|
||||
+ enable-gpios = <&tlmm 83 GPIO_ACTIVE_HIGH>,
|
||||
+ <&tlmm 110 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&i2c5 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ charger@66 {
|
||||
+ compatible = "ti,bq25980";
|
||||
+ status = "ok";
|
||||
+ reg = <0x66>;
|
||||
+ interrupt-parent = <&tlmm>;
|
||||
+ interrupts = <0x0f 0x00>;
|
||||
+ monitored-battery = <&battery>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&i2c16 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ smart_battery: fuel-gauge@55 {
|
||||
+ compatible = "ti,bq27541";
|
||||
+ reg = <0x55>;
|
||||
+ monitored-battery = <&battery>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&i2c13 {
|
||||
+ clock-frequency = <400000>;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ touchscreen@48 {
|
||||
+ compatible = "samsung,s6sy761";
|
||||
+ reg = <0x48>;
|
||||
+ interrupt-parent = <&tlmm>;
|
||||
+ interrupts = <0x27 0x2008>;
|
||||
+
|
||||
+ vdd-supply = <&vreg_l13a_ts_3p0>;
|
||||
+ avdd-supply = <&vreg_l1c_1p8>;
|
||||
+
|
||||
+ touchscreen-size-x = <1440>;
|
||||
+ touchscreen-size-y = <3168>;
|
||||
+
|
||||
+ pinctrl-names = "default", "suspend";
|
||||
+ pinctrl-0 = <&ts_int_active>;
|
||||
+ pinctrl-1 = <&ts_rst_suspend>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&mdss {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&slpi {
|
||||
+ firmware-name = "postmarketos/slpi.mbn";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pcie0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pcie0_phy {
|
||||
+ vdda-phy-supply = <&vreg_l5a_0p88>;
|
||||
+ vdda-pll-supply = <&vreg_l9a_1p2>;
|
||||
+ status = "okay";
|
||||
+ power-domains = <&qca639x>;
|
||||
+};
|
||||
+
|
||||
+&pcie1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pcie1_phy {
|
||||
+ vdda-phy-supply = <&vreg_l5a_0p88>;
|
||||
+ vdda-pll-supply = <&vreg_l9a_1p2>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pcie2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pcie2_phy {
|
||||
+ vdda-phy-supply = <&vreg_l5a_0p88>;
|
||||
+ vdda-pll-supply = <&vreg_l9a_1p2>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pm8150_gpios {
|
||||
+ vol_up_n: vol-up-n-state {
|
||||
+ pins = "gpio6";
|
||||
+ function = "normal";
|
||||
+ power-source = <1>;
|
||||
+ input-enable;
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+
|
||||
+ vol_down_n: vol-down-n-state {
|
||||
+ pins = "gpio7";
|
||||
+ function = "normal";
|
||||
+ power-source = <1>;
|
||||
+ input-enable;
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&pon_pwrkey {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pon_resin {
|
||||
+ linux,code = <KEY_VOLUMEDOWN>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&qup_spi4_cs_gpio {
|
||||
+ drive-strength = <6>;
|
||||
+ bias-disable;
|
||||
+};
|
||||
+
|
||||
+&qup_spi4_data_clk {
|
||||
+ drive-strength = <6>;
|
||||
+ bias-disable;
|
||||
+};
|
||||
+
|
||||
+&qupv3_id_0 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&qupv3_id_1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&qupv3_id_2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&tlmm {
|
||||
+ gpio-reserved-ranges = <28 4>, <40 4>;
|
||||
+
|
||||
+ bt_en_active: bt-default-state {
|
||||
+ bt-en {
|
||||
+ pins = "gpio21";
|
||||
+ function = "gpio";
|
||||
+
|
||||
+ drive-strength = <16>;
|
||||
+ output-low;
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ bt_en_sleep: bt-sleep-state {
|
||||
+ pins = "gpio21";
|
||||
+ function = "gpio";
|
||||
+
|
||||
+ drive-strength = <0x02>;
|
||||
+ output-low;
|
||||
+ bias-pull-down;
|
||||
+ };
|
||||
+
|
||||
+ wlan_en_active: wlan-default-state {
|
||||
+ wlan-en {
|
||||
+ pins = "gpio20";
|
||||
+ function = "gpio";
|
||||
+
|
||||
+ drive-strength = <16>;
|
||||
+ output-low;
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ wlan_en_sleep: wlan-sleep-state {
|
||||
+ pins = "gpio20";
|
||||
+ function = "gpio";
|
||||
+
|
||||
+ drive-strength = <16>;
|
||||
+ output-low;
|
||||
+ bias-pull-down;
|
||||
+ };
|
||||
+
|
||||
+ ts_int_active: ts-int-active-state {
|
||||
+ pins = "gpio38", "gpio39";
|
||||
+ function = "gpio";
|
||||
+ drive-strength = <2>;
|
||||
+ bias-pull-up;
|
||||
+ };
|
||||
+
|
||||
+ ts_rst_suspend: ts-rst-suspend {
|
||||
+ pins = "gpio38";
|
||||
+ function = "gpio";
|
||||
+ drive-strength = <0x02>;
|
||||
+ bias-pull-down;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&uart6 {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ bluetooth {
|
||||
+ compatible = "qcom,qca6390-bt";
|
||||
+ pinctrl-names = "default", "sleep";
|
||||
+ pinctrl-0 = <&bt_en_active>;
|
||||
+ pinctrl-1 = <&bt_en_sleep>;
|
||||
+
|
||||
+ power-domains = <&qca639x>;
|
||||
+ enable-gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&ufs_mem_hc {
|
||||
+ vcc-supply = <&vreg_l17a_3p0>;
|
||||
+ vcc-max-microamp = <800000>;
|
||||
+ vccq-supply = <&vreg_l6a_1p2>;
|
||||
+ vccq-max-microamp = <800000>;
|
||||
+ vccq2-supply = <&vreg_s4a_1p8>;
|
||||
+ vccq2-max-microamp = <800000>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ufs_mem_phy {
|
||||
+ vdda-phy-supply = <&vreg_l5a_0p88>;
|
||||
+ vdda-pll-supply = <&vreg_l9a_1p2>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_1 {
|
||||
+ /* USB 2.0 only */
|
||||
+ qcom,select-utmi-as-pipe-clk;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_1_dwc3 {
|
||||
+ dr_mode = "peripheral";
|
||||
+ maximum-speed = "high-speed";
|
||||
+ /* Remove USB3 phy */
|
||||
+ phys = <&usb_1_hsphy>;
|
||||
+ phy-names = "usb2-phy";
|
||||
+};
|
||||
+
|
||||
+&usb_1_hsphy {
|
||||
+ vdda-pll-supply = <&vreg_l5a_0p88>;
|
||||
+ vdda18-supply = <&vreg_l12a_1p8>;
|
||||
+ vdda33-supply = <&vreg_l2a_3p1>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_2 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_2_dwc3 {
|
||||
+ dr_mode = "host";
|
||||
+};
|
||||
+
|
||||
+&usb_2_hsphy {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ vdda-pll-supply = <&vreg_l5a_0p88>;
|
||||
+ vdda33-supply = <&vreg_l2a_3p1>;
|
||||
+ vdda18-supply = <&vreg_l12a_1p8>;
|
||||
+};
|
||||
+
|
||||
+&usb_2_qmpphy {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ vdda-phy-supply = <&vreg_l9a_1p2>;
|
||||
+ vdda-pll-supply = <&vreg_l18a_0p92>;
|
||||
+};
|
||||
+
|
||||
+&venus {
|
||||
+ firmware-name = "postmarketos/venus.mbn";
|
||||
+ status = "okay";
|
||||
+};
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -0,0 +1,51 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jianhua Lu <lujianhua000@gmail.com>
|
||||
Date: Mon, 11 Mar 2024 23:27:42 +0800
|
||||
Subject: arm64: dts: qcom: sm8250-xiaomi-elish: remove framebuffer initialized
|
||||
by xbl
|
||||
|
||||
---
|
||||
arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi | 20 ----------
|
||||
1 file changed, 20 deletions(-)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
+++ b/arch/arm64/boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi
|
||||
@@ -36,21 +36,6 @@ aliases {
|
||||
hsuart0 = &uart6;
|
||||
};
|
||||
|
||||
- chosen {
|
||||
- #address-cells = <2>;
|
||||
- #size-cells = <2>;
|
||||
- ranges;
|
||||
-
|
||||
- framebuffer: framebuffer@9c000000 {
|
||||
- compatible = "simple-framebuffer";
|
||||
- reg = <0x0 0x9c000000 0x0 0x2300000>;
|
||||
- width = <1600>;
|
||||
- height = <2560>;
|
||||
- stride = <(1600 * 4)>;
|
||||
- format = "a8r8g8b8";
|
||||
- };
|
||||
- };
|
||||
-
|
||||
battery_l: battery-l {
|
||||
compatible = "simple-battery";
|
||||
voltage-min-design-microvolt = <3870000>;
|
||||
@@ -165,11 +150,6 @@ cdsp_secure_heap: cdsp-secure-heap@8e100000 {
|
||||
no-map;
|
||||
};
|
||||
|
||||
- cont_splash_mem: cont-splash@9c000000 {
|
||||
- reg = <0x0 0x9c000000 0x0 0x2300000>;
|
||||
- no-map;
|
||||
- };
|
||||
-
|
||||
ramoops@b0000000 {
|
||||
compatible = "ramoops";
|
||||
reg = <0x0 0xb0000000 0x0 0x400000>;
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -0,0 +1,25 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jianhua Lu <lujianhua000@gmail.com>
|
||||
Date: Wed, 3 Apr 2024 23:03:35 +0800
|
||||
Subject: of: property: fix remote-endpoint parse
|
||||
|
||||
---
|
||||
drivers/of/property.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/of/property.c b/drivers/of/property.c
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/of/property.c
|
||||
+++ b/drivers/of/property.c
|
||||
@@ -1319,7 +1319,7 @@ static struct device_node *parse_remote_endpoint(struct device_node *np,
|
||||
if (index > 0 || strcmp(prop_name, "remote-endpoint"))
|
||||
return NULL;
|
||||
|
||||
- return of_graph_get_remote_port_parent(np);
|
||||
+ return of_graph_get_remote_port(np);
|
||||
}
|
||||
|
||||
static const struct supplier_bindings of_supplier_bindings[] = {
|
||||
--
|
||||
Armbian
|
||||
|
||||
@ -8,7 +8,7 @@ Subject: drivers/spmi/spmi-pmic-arb.c: remove warnings
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/spmi/spmi-pmic-arb.c b/drivers/spmi/spmi-pmic-arb.c
|
||||
index dcb675d980d4..2688ac2a7e55 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/spmi/spmi-pmic-arb.c
|
||||
+++ b/drivers/spmi/spmi-pmic-arb.c
|
||||
@@ -289,7 +289,6 @@ static int pmic_arb_wait_for_done(struct spmi_controller *ctrl,
|
||||
@ -8,10 +8,10 @@ Subject: Asoc: wm_adsp: Use xiaomi-elish firmware name
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c
|
||||
index 588f28bdc72a..39c27a42093e 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/sound/soc/codecs/wm_adsp.c
|
||||
+++ b/sound/soc/codecs/wm_adsp.c
|
||||
@@ -827,7 +827,7 @@ static int wm_adsp_request_firmware_files(struct wm_adsp *dsp,
|
||||
@@ -834,7 +834,7 @@ static int wm_adsp_request_firmware_files(struct wm_adsp *dsp,
|
||||
}
|
||||
} else if (asoc_component_prefix) {
|
||||
if (!wm_adsp_request_firmware_file(dsp, wmfw_firmware, wmfw_filename,
|
||||
@ -8,7 +8,7 @@ Subject: input: nt36523: short the firmware download delay from 14s to 4s
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/input/touchscreen/nt36523/nt36xxx.c b/drivers/input/touchscreen/nt36523/nt36xxx.c
|
||||
index 45500ad5cd91..27f93e531290 100644
|
||||
index 111111111111..222222222222 100644
|
||||
--- a/drivers/input/touchscreen/nt36523/nt36xxx.c
|
||||
+++ b/drivers/input/touchscreen/nt36523/nt36xxx.c
|
||||
@@ -1452,7 +1452,7 @@ static int32_t nvt_ts_probe(struct spi_device *client)
|
||||
Loading…
Reference in New Issue
Block a user