Commit a87fef08 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-misc-next-2026-01-08' of...

Merge tag 'drm-misc-next-2026-01-08' of https://gitlab.freedesktop.org/drm/misc/kernel

 into drm-next

drm-misc-next for 6.20:

UAPI Changes:

Cross-subsystem Changes:

Core Changes:
  - draw: Add API to check if a format conversion can be done
  - panic: Rename draw_panic_static_* to draw_panic_screen_*, Add kunit
    tests
  - shmem: Improve tests

Driver Changes:
  - ast: Big endian fixes
  - etnaviv: Add PPU flop reset support
  - panfrost: Add GPU_PM_RT support for RZ/G3E SoC
  - panthor: multiple fixes around VM termination, huge page support
  - pl111: Fix build regression
  - v3d: Fix DMA segment size

  - bridge:
    - Add connector argument to .hpd_notify
    - Plenty of patches to convert existing drivers to refcounting
    - Convert Rockchip's inno hdmi support to a proper bridge
    - lontium-lt9611uxc: Switch to HDMI audio helpers

  - panel:
    - New panel: BOE NV140WUM-T08

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Maxime Ripard <mripard@redhat.com>
Link: https://patch.msgid.link/20260108-literate-nyala-of-courtesy-de501a@houat
parents 59260fe5 6a0b99e9
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -506,6 +506,22 @@ Contact: Maxime Ripard <mripard@kernel.org>,

Level: Intermediate

Convert users of of_drm_find_bridge() to of_drm_find_and_get_bridge()
---------------------------------------------------------------------

Taking a struct drm_bridge pointer requires getting a reference and putting
it after disposing of the pointer. Most functions returning a struct
drm_bridge pointer already call drm_bridge_get() to increment the refcount
and their users have been updated to call drm_bridge_put() when
appropriate. of_drm_find_bridge() does not get a reference and it has been
deprecated in favor of of_drm_find_and_get_bridge() which does, but some
users still need to be converted.

Contact: Maxime Ripard <mripard@kernel.org>,
         Luca Ceresoli <luca.ceresoli@bootlin.com>

Level: Intermediate

Core refactorings
=================

+9 −0
Original line number Diff line number Diff line
@@ -8749,6 +8749,7 @@ T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
F:	drivers/gpu/drm/drm_draw.c
F:	drivers/gpu/drm/drm_draw_internal.h
F:	drivers/gpu/drm/drm_panic*.c
F:	drivers/gpu/drm/tests/drm_panic_test.c
F:	include/drm/drm_panic*
DRM PANIC QR CODE
@@ -12457,6 +12458,14 @@ M: Samuel Holland <samuel@sholland.org>
S:	Maintained
F:	drivers/power/supply/ip5xxx_power.c
INNOSILICON HDMI BRIDGE DRIVER
M:	Andy Yan <andy.yan@rock-chips.com>
L:	dri-devel@lists.freedesktop.org
S:	Maintained
T:	git https://gitlab.freedesktop.org/drm/misc/kernel.git
F:	drivers/gpu/drm/bridge/inno-hdmi.c
F:	include/drm/bridge/inno_hdmi.h
INOTIFY
M:	Jan Kara <jack@suse.cz>
R:	Amir Goldstein <amir73il@gmail.com>
+3 −0
Original line number Diff line number Diff line
@@ -23,6 +23,9 @@
 * Authors: AMD
 *
 */

#include <drm/drm_colorop.h>

#include "amdgpu.h"
#include "amdgpu_mode.h"
#include "amdgpu_dm.h"
+8 −3
Original line number Diff line number Diff line
@@ -93,12 +93,17 @@ static void ast_set_cursor_image(struct ast_device *ast, const u8 *src,
				 unsigned int width, unsigned int height)
{
	u8 __iomem *dst = ast_plane_vaddr(&ast->cursor_plane.base);
	u32 csum;

	csum = ast_cursor_calculate_checksum(src, width, height);
	u32 csum = ast_cursor_calculate_checksum(src, width, height);

	/* write pixel data */
#if defined(__BIG_ENDIAN)
	unsigned int i;

	for (i = 0; i < AST_HWC_SIZE; i += 2)
		writew(swab16(*(const __u16 *)&src[i]), &dst[i]);
#else
	memcpy_toio(dst, src, AST_HWC_SIZE);
#endif

	/* write checksum + signature */
	dst += AST_HWC_SIZE;
+9 −2
Original line number Diff line number Diff line
@@ -526,12 +526,18 @@ static int ast_primary_plane_helper_atomic_check(struct drm_plane *plane,

static void ast_handle_damage(struct ast_plane *ast_plane, struct iosys_map *src,
			      struct drm_framebuffer *fb,
			      const struct drm_rect *clip)
			      const struct drm_rect *clip,
			      struct drm_format_conv_state *fmtcnv_state)
{
	struct iosys_map dst = IOSYS_MAP_INIT_VADDR_IOMEM(ast_plane_vaddr(ast_plane));

	iosys_map_incr(&dst, drm_fb_clip_offset(fb->pitches[0], fb->format, clip));

#if defined(__BIG_ENDIAN)
	drm_fb_swab(&dst, fb->pitches, src, fb, clip, !src[0].is_iomem, fmtcnv_state);
#else
	drm_fb_memcpy(&dst, fb->pitches, src, fb, clip);
#endif
}

static void ast_primary_plane_helper_atomic_update(struct drm_plane *plane,
@@ -561,7 +567,8 @@ static void ast_primary_plane_helper_atomic_update(struct drm_plane *plane,
	if (drm_gem_fb_begin_cpu_access(fb, DMA_FROM_DEVICE) == 0) {
		drm_atomic_helper_damage_iter_init(&iter, old_plane_state, plane_state);
		drm_atomic_for_each_plane_damage(&iter, &damage) {
			ast_handle_damage(ast_plane, shadow_plane_state->data, fb, &damage);
			ast_handle_damage(ast_plane, shadow_plane_state->data, fb, &damage,
					  &shadow_plane_state->fmtcnv_state);
		}

		drm_gem_fb_end_cpu_access(fb, DMA_FROM_DEVICE);
Loading