Skip to content

Commit 4e99669

Browse files
committed
Merge tag 'drm-misc-next-2024-08-09' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-next
drm-misc-next for v6.12: UAPI Changes: - remove Power Saving Policy property Core Changes: - update connector documentation CI: - add tests for mediatek, meson, rockchip Driver Changes: amdgpu: - revert support for Power Saving Policy property bridge: - lt9611uxc: require DRM_BRIDGE_ATTACH_NO_CONNECTOR mgag200: - transparently support BMC outputs omapdrm: - use common helper for_each_endpoint_of_node() panel: - panel-edp: fix name for HKC MB116AN01 vkms: - clean up endianess warnings Signed-off-by: Daniel Vetter <[email protected]> From: Thomas Zimmermann <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents 91dae75 + 219b45d commit 4e99669

File tree

66 files changed

+630
-521
lines changed

Some content is hidden

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

66 files changed

+630
-521
lines changed

MAINTAINERS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1761,6 +1761,7 @@ L: [email protected]
17611761
S: Supported
17621762
T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
17631763
F: Documentation/gpu/panfrost.rst
1764+
F: drivers/gpu/drm/ci/xfails/panfrost*
17641765
F: drivers/gpu/drm/panfrost/
17651766
F: include/uapi/drm/panfrost_drm.h
17661767

@@ -10971,6 +10972,7 @@ T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
1097110972
F: Documentation/devicetree/bindings/gpu/img,powervr-rogue.yaml
1097210973
F: Documentation/devicetree/bindings/gpu/img,powervr-sgx.yaml
1097310974
F: Documentation/gpu/imagination/
10975+
F: drivers/gpu/drm/ci/xfails/powervr*
1097410976
F: drivers/gpu/drm/imagination/
1097510977
F: include/uapi/drm/pvr_drm.h
1097610978

drivers/gpu/drm/amd/amdgpu/amdgpu_display.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1407,10 +1407,6 @@ int amdgpu_display_modeset_create_props(struct amdgpu_device *adev)
14071407
"dither",
14081408
amdgpu_dither_enum_list, sz);
14091409

1410-
if (adev->dc_enabled)
1411-
drm_mode_create_power_saving_policy_property(adev_to_drm(adev),
1412-
DRM_MODE_POWER_SAVING_POLICY_ALL);
1413-
14141410
return 0;
14151411
}
14161412

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

Lines changed: 5 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -6725,14 +6725,6 @@ int amdgpu_dm_connector_atomic_set_property(struct drm_connector *connector,
67256725
} else if (property == adev->mode_info.underscan_property) {
67266726
dm_new_state->underscan_enable = val;
67276727
ret = 0;
6728-
} else if (property == dev->mode_config.power_saving_policy) {
6729-
dm_new_state->abm_forbidden = val & DRM_MODE_REQUIRE_COLOR_ACCURACY;
6730-
dm_new_state->abm_level = (dm_new_state->abm_forbidden ||
6731-
!dm_old_state->abm_level) ?
6732-
ABM_LEVEL_IMMEDIATE_DISABLE :
6733-
dm_old_state->abm_level;
6734-
dm_new_state->psr_forbidden = val & DRM_MODE_REQUIRE_LOW_LATENCY;
6735-
ret = 0;
67366728
}
67376729

67386730
return ret;
@@ -6775,13 +6767,6 @@ int amdgpu_dm_connector_atomic_get_property(struct drm_connector *connector,
67756767
} else if (property == adev->mode_info.underscan_property) {
67766768
*val = dm_state->underscan_enable;
67776769
ret = 0;
6778-
} else if (property == dev->mode_config.power_saving_policy) {
6779-
*val = 0;
6780-
if (dm_state->psr_forbidden)
6781-
*val |= DRM_MODE_REQUIRE_LOW_LATENCY;
6782-
if (dm_state->abm_forbidden)
6783-
*val |= DRM_MODE_REQUIRE_COLOR_ACCURACY;
6784-
ret = 0;
67856770
}
67866771

67876772
return ret;
@@ -6808,12 +6793,9 @@ static ssize_t panel_power_savings_show(struct device *device,
68086793
u8 val;
68096794

68106795
drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
6811-
if (to_dm_connector_state(connector->state)->abm_forbidden)
6812-
val = 0;
6813-
else
6814-
val = to_dm_connector_state(connector->state)->abm_level ==
6815-
ABM_LEVEL_IMMEDIATE_DISABLE ? 0 :
6816-
to_dm_connector_state(connector->state)->abm_level;
6796+
val = to_dm_connector_state(connector->state)->abm_level ==
6797+
ABM_LEVEL_IMMEDIATE_DISABLE ? 0 :
6798+
to_dm_connector_state(connector->state)->abm_level;
68176799
drm_modeset_unlock(&dev->mode_config.connection_mutex);
68186800

68196801
return sysfs_emit(buf, "%u\n", val);
@@ -6837,16 +6819,10 @@ static ssize_t panel_power_savings_store(struct device *device,
68376819
return -EINVAL;
68386820

68396821
drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
6840-
if (to_dm_connector_state(connector->state)->abm_forbidden)
6841-
ret = -EBUSY;
6842-
else
6843-
to_dm_connector_state(connector->state)->abm_level = val ?:
6844-
ABM_LEVEL_IMMEDIATE_DISABLE;
6822+
to_dm_connector_state(connector->state)->abm_level = val ?:
6823+
ABM_LEVEL_IMMEDIATE_DISABLE;
68456824
drm_modeset_unlock(&dev->mode_config.connection_mutex);
68466825

6847-
if (ret)
6848-
return ret;
6849-
68506826
drm_kms_helper_hotplug_event(dev);
68516827

68526828
return count;
@@ -8040,14 +8016,6 @@ void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm,
80408016
aconnector->base.state->max_bpc = 16;
80418017
aconnector->base.state->max_requested_bpc = aconnector->base.state->max_bpc;
80428018

8043-
if (connector_type == DRM_MODE_CONNECTOR_eDP &&
8044-
(dc_is_dmcu_initialized(adev->dm.dc) ||
8045-
adev->dm.dc->ctx->dmub_srv)) {
8046-
drm_object_attach_property(&aconnector->base.base,
8047-
dm->ddev->mode_config.power_saving_policy,
8048-
0);
8049-
}
8050-
80518019
if (connector_type == DRM_MODE_CONNECTOR_HDMIA) {
80528020
/* Content Type is currently only implemented for HDMI. */
80538021
drm_connector_attach_content_type_property(&aconnector->base);
@@ -9748,7 +9716,6 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
97489716
for_each_oldnew_connector_in_state(state, connector, old_con_state, new_con_state, i) {
97499717
struct dm_connector_state *dm_new_con_state = to_dm_connector_state(new_con_state);
97509718
struct dm_connector_state *dm_old_con_state = to_dm_connector_state(old_con_state);
9751-
struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
97529719
struct amdgpu_crtc *acrtc = to_amdgpu_crtc(dm_new_con_state->base.crtc);
97539720
struct dc_surface_update *dummy_updates;
97549721
struct dc_stream_update stream_update;
@@ -9802,15 +9769,6 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
98029769
stream_update.hdr_static_metadata = &hdr_packet;
98039770
}
98049771

9805-
aconnector->disallow_edp_enter_psr = dm_new_con_state->psr_forbidden;
9806-
9807-
/* immediately disable PSR if disallowed */
9808-
if (aconnector->disallow_edp_enter_psr) {
9809-
mutex_lock(&dm->dc_lock);
9810-
amdgpu_dm_psr_disable(dm_new_crtc_state->stream);
9811-
mutex_unlock(&dm->dc_lock);
9812-
}
9813-
98149772
status = dc_stream_get_status(dm_new_crtc_state->stream);
98159773

98169774
if (WARN_ON(!status))

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -915,8 +915,6 @@ struct dm_connector_state {
915915
bool underscan_enable;
916916
bool freesync_capable;
917917
bool update_hdcp;
918-
bool abm_forbidden;
919-
bool psr_forbidden;
920918
uint8_t abm_level;
921919
int vcpi_slots;
922920
uint64_t pbn;

drivers/gpu/drm/bridge/lontium-lt9611uxc.c

Lines changed: 12 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include <drm/drm_bridge.h>
2424
#include <drm/drm_edid.h>
2525
#include <drm/drm_mipi_dsi.h>
26+
#include <drm/drm_of.h>
2627
#include <drm/drm_print.h>
2728
#include <drm/drm_probe_helper.h>
2829

@@ -34,7 +35,7 @@
3435
struct lt9611uxc {
3536
struct device *dev;
3637
struct drm_bridge bridge;
37-
struct drm_connector connector;
38+
struct drm_bridge *next_bridge;
3839

3940
struct regmap *regmap;
4041
/* Protects all accesses to registers by stopping the on-chip MCU */
@@ -120,11 +121,6 @@ static struct lt9611uxc *bridge_to_lt9611uxc(struct drm_bridge *bridge)
120121
return container_of(bridge, struct lt9611uxc, bridge);
121122
}
122123

123-
static struct lt9611uxc *connector_to_lt9611uxc(struct drm_connector *connector)
124-
{
125-
return container_of(connector, struct lt9611uxc, connector);
126-
}
127-
128124
static void lt9611uxc_lock(struct lt9611uxc *lt9611uxc)
129125
{
130126
mutex_lock(&lt9611uxc->ocm_lock);
@@ -171,20 +167,14 @@ static void lt9611uxc_hpd_work(struct work_struct *work)
171167
struct lt9611uxc *lt9611uxc = container_of(work, struct lt9611uxc, work);
172168
bool connected;
173169

174-
if (lt9611uxc->connector.dev) {
175-
if (lt9611uxc->connector.dev->mode_config.funcs)
176-
drm_kms_helper_hotplug_event(lt9611uxc->connector.dev);
177-
} else {
178-
179-
mutex_lock(&lt9611uxc->ocm_lock);
180-
connected = lt9611uxc->hdmi_connected;
181-
mutex_unlock(&lt9611uxc->ocm_lock);
170+
mutex_lock(&lt9611uxc->ocm_lock);
171+
connected = lt9611uxc->hdmi_connected;
172+
mutex_unlock(&lt9611uxc->ocm_lock);
182173

183-
drm_bridge_hpd_notify(&lt9611uxc->bridge,
184-
connected ?
185-
connector_status_connected :
186-
connector_status_disconnected);
187-
}
174+
drm_bridge_hpd_notify(&lt9611uxc->bridge,
175+
connected ?
176+
connector_status_connected :
177+
connector_status_disconnected);
188178
}
189179

190180
static void lt9611uxc_reset(struct lt9611uxc *lt9611uxc)
@@ -289,82 +279,13 @@ static struct mipi_dsi_device *lt9611uxc_attach_dsi(struct lt9611uxc *lt9611uxc,
289279
return dsi;
290280
}
291281

292-
static int lt9611uxc_connector_get_modes(struct drm_connector *connector)
293-
{
294-
struct lt9611uxc *lt9611uxc = connector_to_lt9611uxc(connector);
295-
const struct drm_edid *drm_edid;
296-
int count;
297-
298-
drm_edid = drm_bridge_edid_read(&lt9611uxc->bridge, connector);
299-
drm_edid_connector_update(connector, drm_edid);
300-
count = drm_edid_connector_add_modes(connector);
301-
drm_edid_free(drm_edid);
302-
303-
return count;
304-
}
305-
306-
static enum drm_connector_status lt9611uxc_connector_detect(struct drm_connector *connector,
307-
bool force)
308-
{
309-
struct lt9611uxc *lt9611uxc = connector_to_lt9611uxc(connector);
310-
311-
return lt9611uxc->bridge.funcs->detect(&lt9611uxc->bridge);
312-
}
313-
314-
static enum drm_mode_status lt9611uxc_connector_mode_valid(struct drm_connector *connector,
315-
struct drm_display_mode *mode)
316-
{
317-
struct lt9611uxc_mode *lt9611uxc_mode = lt9611uxc_find_mode(mode);
318-
319-
return lt9611uxc_mode ? MODE_OK : MODE_BAD;
320-
}
321-
322-
static const struct drm_connector_helper_funcs lt9611uxc_bridge_connector_helper_funcs = {
323-
.get_modes = lt9611uxc_connector_get_modes,
324-
.mode_valid = lt9611uxc_connector_mode_valid,
325-
};
326-
327-
static const struct drm_connector_funcs lt9611uxc_bridge_connector_funcs = {
328-
.fill_modes = drm_helper_probe_single_connector_modes,
329-
.detect = lt9611uxc_connector_detect,
330-
.destroy = drm_connector_cleanup,
331-
.reset = drm_atomic_helper_connector_reset,
332-
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
333-
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
334-
};
335-
336-
static int lt9611uxc_connector_init(struct drm_bridge *bridge, struct lt9611uxc *lt9611uxc)
337-
{
338-
int ret;
339-
340-
lt9611uxc->connector.polled = DRM_CONNECTOR_POLL_HPD;
341-
342-
drm_connector_helper_add(&lt9611uxc->connector,
343-
&lt9611uxc_bridge_connector_helper_funcs);
344-
ret = drm_connector_init(bridge->dev, &lt9611uxc->connector,
345-
&lt9611uxc_bridge_connector_funcs,
346-
DRM_MODE_CONNECTOR_HDMIA);
347-
if (ret) {
348-
DRM_ERROR("Failed to initialize connector with drm\n");
349-
return ret;
350-
}
351-
352-
return drm_connector_attach_encoder(&lt9611uxc->connector, bridge->encoder);
353-
}
354-
355282
static int lt9611uxc_bridge_attach(struct drm_bridge *bridge,
356283
enum drm_bridge_attach_flags flags)
357284
{
358285
struct lt9611uxc *lt9611uxc = bridge_to_lt9611uxc(bridge);
359-
int ret;
360-
361-
if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) {
362-
ret = lt9611uxc_connector_init(bridge, lt9611uxc);
363-
if (ret < 0)
364-
return ret;
365-
}
366286

367-
return 0;
287+
return drm_bridge_attach(bridge->encoder, lt9611uxc->next_bridge,
288+
bridge, flags);
368289
}
369290

370291
static enum drm_mode_status
@@ -525,7 +446,7 @@ static int lt9611uxc_parse_dt(struct device *dev,
525446

526447
lt9611uxc->dsi1_node = of_graph_get_remote_node(dev->of_node, 1, -1);
527448

528-
return 0;
449+
return drm_of_find_panel_or_bridge(dev->of_node, 2, -1, NULL, &lt9611uxc->next_bridge);
529450
}
530451

531452
static int lt9611uxc_gpio_init(struct lt9611uxc *lt9611uxc)

drivers/gpu/drm/ci/arm64.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ CONFIG_MTK_DEVAPC=y
187187
CONFIG_PWM_MTK_DISP=y
188188
CONFIG_MTK_CMDQ=y
189189
CONFIG_REGULATOR_DA9211=y
190+
CONFIG_DRM_ANALOGIX_ANX7625=y
190191

191192
# For nouveau. Note that DRM must be a module so that it's loaded after NFS is up to provide the firmware.
192193
CONFIG_ARCH_TEGRA=y

drivers/gpu/drm/ci/gitlab-ci.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,9 @@ stages:
121121
- mediatek
122122
- meson
123123
- msm
124+
- panfrost
125+
- powervr
124126
- rockchip
125-
- virtio-gpu
126127
- software-driver
127128

128129
# YAML anchors for rule conditions

drivers/gpu/drm/ci/igt_runner.sh

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,6 @@ cat /sys/kernel/debug/dri/*/state
2020
set -e
2121

2222
case "$DRIVER_NAME" in
23-
rockchip|meson)
24-
export IGT_FORCE_DRIVER="panfrost"
25-
;;
26-
mediatek)
27-
if [ "$GPU_VERSION" = "mt8173" ]; then
28-
export IGT_FORCE_DRIVER=${DRIVER_NAME}
29-
elif [ "$GPU_VERSION" = "mt8183" ]; then
30-
export IGT_FORCE_DRIVER="panfrost"
31-
fi
32-
;;
3323
amdgpu|vkms)
3424
# Cannot use HWCI_KERNEL_MODULES as at that point we don't have the module in /lib
3525
mv /install/modules/lib/modules/* /lib/modules/. || true

0 commit comments

Comments
 (0)