Skip to content

Commit f83493f

Browse files
committed
Merge tag 'drm-msm-next-2022-05-09' of https://gitlab.freedesktop.org/drm/msm into drm-next
- Fourcc modifier for tiled but not compressed layouts - Support for userspace allocated IOVA (GPU virtual address) - Devfreq clamp_to_idle fix - DPU: DSC (Display Stream Compression) support - DPU: inline rotation support on SC7280 - DPU: update DP timings to follow vendor recommendations - DP, DPU: add support for wide bus (on newer chipsets) - DP: eDP support - Merge DPU1 and MDP5 MDSS driver, make dpu/mdp device the master component - MDSS: optionally reset the IP block at the bootup to drop bootloader state - Properly register and unregister internal bridges in the DRM framework - Complete DPU IRQ cleanup - DP: conversion to use drm_bridge and drm_bridge_connector - eDP: drop old eDP parts again - DPU: writeback support - Misc small fixes Signed-off-by: Dave Airlie <airlied@redhat.com> From: Rob Clark <robdclark@gmail.com> Link: https://patchwork.freedesktop.org/patch/msgid/CAF6AEGvJCr_1D8d0dgmyQC5HD4gmXeZw=bFV_CNCfceZbpMxRw@mail.gmail.com
2 parents d53b8e1 + 24df120 commit f83493f

120 files changed

Lines changed: 5692 additions & 3817 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Documentation/devicetree/bindings/display/msm/dpu-qcm2290.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ properties:
6666
interconnect-names:
6767
const: mdp0-mem
6868

69+
resets:
70+
items:
71+
- description: MDSS_CORE reset
72+
6973
patternProperties:
7074
"^display-controller@[0-9a-f]+$":
7175
type: object

Documentation/devicetree/bindings/display/msm/dpu-sc7180.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ properties:
6565
interconnect-names:
6666
const: mdp0-mem
6767

68+
resets:
69+
items:
70+
- description: MDSS_CORE reset
71+
6872
patternProperties:
6973
"^display-controller@[0-9a-f]+$":
7074
type: object

Documentation/devicetree/bindings/display/msm/dpu-sc7280.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ properties:
6464
interconnect-names:
6565
const: mdp0-mem
6666

67+
resets:
68+
items:
69+
- description: MDSS_CORE reset
70+
6771
patternProperties:
6872
"^display-controller@[0-9a-f]+$":
6973
type: object

Documentation/devicetree/bindings/display/msm/dpu-sdm845.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ properties:
5757

5858
ranges: true
5959

60+
resets:
61+
items:
62+
- description: MDSS_CORE reset
63+
6064
patternProperties:
6165
"^display-controller@[0-9a-f]+$":
6266
type: object

MAINTAINERS

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6258,8 +6258,9 @@ F: drivers/gpu/drm/tiny/panel-mipi-dbi.c
62586258

62596259
DRM DRIVER FOR MSM ADRENO GPU
62606260
M: Rob Clark <robdclark@gmail.com>
6261-
M: Sean Paul <sean@poorly.run>
6262-
R: Abhinav Kumar <quic_abhinavk@quicinc.com>
6261+
M: Abhinav Kumar <quic_abhinavk@quicinc.com>
6262+
M: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
6263+
R: Sean Paul <sean@poorly.run>
62636264
L: linux-arm-msm@vger.kernel.org
62646265
L: dri-devel@lists.freedesktop.org
62656266
L: freedreno@lists.freedesktop.org

drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,6 @@ static int komeda_wb_connector_add(struct komeda_kms_dev *kms,
155155
kwb_conn->wb_layer = kcrtc->master->wb_layer;
156156

157157
wb_conn = &kwb_conn->base;
158-
wb_conn->encoder.possible_crtcs = BIT(drm_crtc_index(&kcrtc->base));
159158

160159
formats = komeda_get_layer_fourcc_list(&mdev->fmt_tbl,
161160
kwb_conn->wb_layer->layer_type,
@@ -164,7 +163,8 @@ static int komeda_wb_connector_add(struct komeda_kms_dev *kms,
164163
err = drm_writeback_connector_init(&kms->base, wb_conn,
165164
&komeda_wb_connector_funcs,
166165
&komeda_wb_encoder_helper_funcs,
167-
formats, n_formats);
166+
formats, n_formats,
167+
BIT(drm_crtc_index(&kcrtc->base)));
168168
komeda_put_fourcc_list(formats);
169169
if (err) {
170170
kfree(kwb_conn);

drivers/gpu/drm/arm/malidp_mw.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,6 @@ int malidp_mw_connector_init(struct drm_device *drm)
212212
if (!malidp->dev->hw->enable_memwrite)
213213
return 0;
214214

215-
malidp->mw_connector.encoder.possible_crtcs = 1 << drm_crtc_index(&malidp->crtc);
216215
drm_connector_helper_add(&malidp->mw_connector.base,
217216
&malidp_mw_connector_helper_funcs);
218217

@@ -223,7 +222,8 @@ int malidp_mw_connector_init(struct drm_device *drm)
223222
ret = drm_writeback_connector_init(drm, &malidp->mw_connector,
224223
&malidp_mw_connector_funcs,
225224
&malidp_mw_encoder_helper_funcs,
226-
formats, n_formats);
225+
formats, n_formats,
226+
1 << drm_crtc_index(&malidp->crtc));
227227
kfree(formats);
228228
if (ret)
229229
return ret;

drivers/gpu/drm/drm_writeback.c

Lines changed: 61 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ static const struct drm_encoder_funcs drm_writeback_encoder_funcs = {
157157
* @enc_helper_funcs: Encoder helper funcs vtable to be used by the internal encoder
158158
* @formats: Array of supported pixel formats for the writeback engine
159159
* @n_formats: Length of the formats array
160+
* @possible_crtcs: possible crtcs for the internal writeback encoder
160161
*
161162
* This function creates the writeback-connector-specific properties if they
162163
* have not been already created, initializes the connector as
@@ -174,7 +175,64 @@ int drm_writeback_connector_init(struct drm_device *dev,
174175
struct drm_writeback_connector *wb_connector,
175176
const struct drm_connector_funcs *con_funcs,
176177
const struct drm_encoder_helper_funcs *enc_helper_funcs,
177-
const u32 *formats, int n_formats)
178+
const u32 *formats, int n_formats,
179+
u32 possible_crtcs)
180+
{
181+
int ret = 0;
182+
183+
drm_encoder_helper_add(&wb_connector->encoder, enc_helper_funcs);
184+
185+
wb_connector->encoder.possible_crtcs = possible_crtcs;
186+
187+
ret = drm_encoder_init(dev, &wb_connector->encoder,
188+
&drm_writeback_encoder_funcs,
189+
DRM_MODE_ENCODER_VIRTUAL, NULL);
190+
if (ret)
191+
return ret;
192+
193+
ret = drm_writeback_connector_init_with_encoder(dev, wb_connector, &wb_connector->encoder,
194+
con_funcs, formats, n_formats);
195+
196+
if (ret)
197+
drm_encoder_cleanup(&wb_connector->encoder);
198+
199+
return ret;
200+
}
201+
EXPORT_SYMBOL(drm_writeback_connector_init);
202+
203+
/**
204+
* drm_writeback_connector_init_with_encoder - Initialize a writeback connector with
205+
* a custom encoder
206+
*
207+
* @dev: DRM device
208+
* @wb_connector: Writeback connector to initialize
209+
* @enc: handle to the already initialized drm encoder
210+
* @con_funcs: Connector funcs vtable
211+
* @formats: Array of supported pixel formats for the writeback engine
212+
* @n_formats: Length of the formats array
213+
*
214+
* This function creates the writeback-connector-specific properties if they
215+
* have not been already created, initializes the connector as
216+
* type DRM_MODE_CONNECTOR_WRITEBACK, and correctly initializes the property
217+
* values.
218+
*
219+
* This function assumes that the drm_writeback_connector's encoder has already been
220+
* created and initialized before invoking this function.
221+
*
222+
* In addition, this function also assumes that callers of this API will manage
223+
* assigning the encoder helper functions, possible_crtcs and any other encoder
224+
* specific operation.
225+
*
226+
* Drivers should always use this function instead of drm_connector_init() to
227+
* set up writeback connectors if they want to manage themselves the lifetime of the
228+
* associated encoder.
229+
*
230+
* Returns: 0 on success, or a negative error code
231+
*/
232+
int drm_writeback_connector_init_with_encoder(struct drm_device *dev,
233+
struct drm_writeback_connector *wb_connector, struct drm_encoder *enc,
234+
const struct drm_connector_funcs *con_funcs, const u32 *formats,
235+
int n_formats)
178236
{
179237
struct drm_property_blob *blob;
180238
struct drm_connector *connector = &wb_connector->base;
@@ -189,12 +247,6 @@ int drm_writeback_connector_init(struct drm_device *dev,
189247
if (IS_ERR(blob))
190248
return PTR_ERR(blob);
191249

192-
drm_encoder_helper_add(&wb_connector->encoder, enc_helper_funcs);
193-
ret = drm_encoder_init(dev, &wb_connector->encoder,
194-
&drm_writeback_encoder_funcs,
195-
DRM_MODE_ENCODER_VIRTUAL, NULL);
196-
if (ret)
197-
goto fail;
198250

199251
connector->interlace_allowed = 0;
200252

@@ -203,8 +255,7 @@ int drm_writeback_connector_init(struct drm_device *dev,
203255
if (ret)
204256
goto connector_fail;
205257

206-
ret = drm_connector_attach_encoder(connector,
207-
&wb_connector->encoder);
258+
ret = drm_connector_attach_encoder(connector, enc);
208259
if (ret)
209260
goto attach_fail;
210261

@@ -233,12 +284,10 @@ int drm_writeback_connector_init(struct drm_device *dev,
233284
attach_fail:
234285
drm_connector_cleanup(connector);
235286
connector_fail:
236-
drm_encoder_cleanup(&wb_connector->encoder);
237-
fail:
238287
drm_property_blob_put(blob);
239288
return ret;
240289
}
241-
EXPORT_SYMBOL(drm_writeback_connector_init);
290+
EXPORT_SYMBOL(drm_writeback_connector_init_with_encoder);
242291

243292
int drm_writeback_set_fb(struct drm_connector_state *conn_state,
244293
struct drm_framebuffer *fb)

drivers/gpu/drm/msm/Kconfig

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ config DRM_MSM
1212
select IOMMU_IO_PGTABLE
1313
select QCOM_MDT_LOADER if ARCH_QCOM
1414
select REGULATOR
15+
select DRM_DP_AUX_BUS
1516
select DRM_DISPLAY_DP_HELPER
1617
select DRM_DISPLAY_HELPER
1718
select DRM_KMS_HELPER
@@ -48,12 +49,39 @@ config DRM_MSM_GPU_SUDO
4849
Only use this if you are a driver developer. This should *not*
4950
be enabled for production kernels. If unsure, say N.
5051

51-
config DRM_MSM_HDMI_HDCP
52-
bool "Enable HDMI HDCP support in MSM DRM driver"
52+
config DRM_MSM_MDSS
53+
bool
54+
depends on DRM_MSM
55+
default n
56+
57+
config DRM_MSM_MDP4
58+
bool "Enable MDP4 support in MSM DRM driver"
5359
depends on DRM_MSM
5460
default y
5561
help
56-
Choose this option to enable HDCP state machine
62+
Compile in support for the Mobile Display Processor v4 (MDP4) in
63+
the MSM DRM driver. It is the older display controller found in
64+
devices using APQ8064/MSM8960/MSM8x60 platforms.
65+
66+
config DRM_MSM_MDP5
67+
bool "Enable MDP5 support in MSM DRM driver"
68+
depends on DRM_MSM
69+
select DRM_MSM_MDSS
70+
default y
71+
help
72+
Compile in support for the Mobile Display Processor v5 (MDP5) in
73+
the MSM DRM driver. It is the display controller found in devices
74+
using e.g. APQ8016/MSM8916/APQ8096/MSM8996/MSM8974/SDM6x0 platforms.
75+
76+
config DRM_MSM_DPU
77+
bool "Enable DPU support in MSM DRM driver"
78+
depends on DRM_MSM
79+
select DRM_MSM_MDSS
80+
default y
81+
help
82+
Compile in support for the Display Processing Unit in
83+
the MSM DRM driver. It is the display controller found in devices
84+
using e.g. SDM845 and newer platforms.
5785

5886
config DRM_MSM_DP
5987
bool "Enable DisplayPort support in MSM DRM driver"
@@ -118,3 +146,20 @@ config DRM_MSM_DSI_7NM_PHY
118146
help
119147
Choose this option if DSI PHY on SM8150/SM8250/SC7280 is used on
120148
the platform.
149+
150+
config DRM_MSM_HDMI
151+
bool "Enable HDMI support in MSM DRM driver"
152+
depends on DRM_MSM
153+
default y
154+
help
155+
Compile in support for the HDMI output MSM DRM driver. It can
156+
be a primary or a secondary display on device. Note that this is used
157+
only for the direct HDMI output. If the device outputs HDMI data
158+
throught some kind of DSI-to-HDMI bridge, this option can be disabled.
159+
160+
config DRM_MSM_HDMI_HDCP
161+
bool "Enable HDMI HDCP support in MSM DRM driver"
162+
depends on DRM_MSM && DRM_MSM_HDMI
163+
default y
164+
help
165+
Choose this option to enable HDCP state machine

drivers/gpu/drm/msm/Makefile

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ msm-y := \
1616
adreno/a6xx_gpu.o \
1717
adreno/a6xx_gmu.o \
1818
adreno/a6xx_hfi.o \
19+
20+
msm-$(CONFIG_DRM_MSM_HDMI) += \
1921
hdmi/hdmi.o \
2022
hdmi/hdmi_audio.o \
2123
hdmi/hdmi_bridge.o \
@@ -27,35 +29,42 @@ msm-y := \
2729
hdmi/hdmi_phy_8x60.o \
2830
hdmi/hdmi_phy_8x74.o \
2931
hdmi/hdmi_pll_8960.o \
30-
disp/mdp_format.o \
31-
disp/mdp_kms.o \
32+
33+
msm-$(CONFIG_DRM_MSM_MDP4) += \
3234
disp/mdp4/mdp4_crtc.o \
35+
disp/mdp4/mdp4_dsi_encoder.o \
3336
disp/mdp4/mdp4_dtv_encoder.o \
3437
disp/mdp4/mdp4_lcdc_encoder.o \
3538
disp/mdp4/mdp4_lvds_connector.o \
3639
disp/mdp4/mdp4_lvds_pll.o \
3740
disp/mdp4/mdp4_irq.o \
3841
disp/mdp4/mdp4_kms.o \
3942
disp/mdp4/mdp4_plane.o \
43+
44+
msm-$(CONFIG_DRM_MSM_MDP5) += \
4045
disp/mdp5/mdp5_cfg.o \
46+
disp/mdp5/mdp5_cmd_encoder.o \
4147
disp/mdp5/mdp5_ctl.o \
4248
disp/mdp5/mdp5_crtc.o \
4349
disp/mdp5/mdp5_encoder.o \
4450
disp/mdp5/mdp5_irq.o \
45-
disp/mdp5/mdp5_mdss.o \
4651
disp/mdp5/mdp5_kms.o \
4752
disp/mdp5/mdp5_pipe.o \
4853
disp/mdp5/mdp5_mixer.o \
4954
disp/mdp5/mdp5_plane.o \
5055
disp/mdp5/mdp5_smp.o \
56+
57+
msm-$(CONFIG_DRM_MSM_DPU) += \
5158
disp/dpu1/dpu_core_perf.o \
5259
disp/dpu1/dpu_crtc.o \
5360
disp/dpu1/dpu_encoder.o \
5461
disp/dpu1/dpu_encoder_phys_cmd.o \
5562
disp/dpu1/dpu_encoder_phys_vid.o \
63+
disp/dpu1/dpu_encoder_phys_wb.o \
5664
disp/dpu1/dpu_formats.o \
5765
disp/dpu1/dpu_hw_catalog.o \
5866
disp/dpu1/dpu_hw_ctl.o \
67+
disp/dpu1/dpu_hw_dsc.o \
5968
disp/dpu1/dpu_hw_interrupts.o \
6069
disp/dpu1/dpu_hw_intf.o \
6170
disp/dpu1/dpu_hw_lm.o \
@@ -66,11 +75,19 @@ msm-y := \
6675
disp/dpu1/dpu_hw_top.o \
6776
disp/dpu1/dpu_hw_util.o \
6877
disp/dpu1/dpu_hw_vbif.o \
78+
disp/dpu1/dpu_hw_wb.o \
6979
disp/dpu1/dpu_kms.o \
70-
disp/dpu1/dpu_mdss.o \
7180
disp/dpu1/dpu_plane.o \
7281
disp/dpu1/dpu_rm.o \
7382
disp/dpu1/dpu_vbif.o \
83+
disp/dpu1/dpu_writeback.o
84+
85+
msm-$(CONFIG_DRM_MSM_MDSS) += \
86+
msm_mdss.o \
87+
88+
msm-y += \
89+
disp/mdp_format.o \
90+
disp/mdp_kms.o \
7491
disp/msm_disp_snapshot.o \
7592
disp/msm_disp_snapshot_util.o \
7693
msm_atomic.o \
@@ -118,12 +135,10 @@ msm-$(CONFIG_DRM_FBDEV_EMULATION) += msm_fbdev.o
118135
msm-$(CONFIG_DRM_MSM_HDMI_HDCP) += hdmi/hdmi_hdcp.o
119136

120137
msm-$(CONFIG_DRM_MSM_DSI) += dsi/dsi.o \
121-
disp/mdp4/mdp4_dsi_encoder.o \
122138
dsi/dsi_cfg.o \
123139
dsi/dsi_host.o \
124140
dsi/dsi_manager.o \
125-
dsi/phy/dsi_phy.o \
126-
disp/mdp5/mdp5_cmd_encoder.o
141+
dsi/phy/dsi_phy.o
127142

128143
msm-$(CONFIG_DRM_MSM_DSI_28NM_PHY) += dsi/phy/dsi_phy_28nm.o
129144
msm-$(CONFIG_DRM_MSM_DSI_20NM_PHY) += dsi/phy/dsi_phy_20nm.o

0 commit comments

Comments
 (0)