Commit b16702be authored by Dave Airlie's avatar Dave Airlie

Merge tag 'exynos-drm-fixes-for-v6.8-rc2' of...

Merge tag 'exynos-drm-fixes-for-v6.8-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos into drm-fixes

Several fixups
   - Minor fix in `drm/exynos: gsc: gsc_runtime_resume`
     . The patch ensures `clk_disable_unprepare()` is called on the first
       element of `ctx->clocks` array.
       This issue was identified by the Linux Verification Center.

   - Fix excessive stack usage in `fimd_win_set_pixfmt()` in `drm/exynos`
     . The issue, highlighted by gcc, involved an unnecessary on-stack copy of
       the large `exynos_drm_plane` structure, now replaced with a pointer.

   - Fix an incorrect type issue in `exynos_drm_fimd.c` module
     . Addresses an incorrect type issue in `fimd_commit()` within the
       `exynos_drm_fimd.c` The problem was reported by the kernel test robot[1].

     [1] https://lore.kernel.org/oe-kbuild-all/202312140930.Me9yWf8F-lkp@intel.com/

   - Fix a typo in the dt-bindings for `samsung,exynos-mixer`
     . Changes 'regs' to the correct property name 'reg' in the dt-bindings
       documentation for `samsung,exynos-mixer`
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Inki Dae <inki.dae@samsung.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240122072407.39546-1-inki.dae@samsung.com
parents e5767a95 4050957c
...@@ -85,7 +85,7 @@ allOf: ...@@ -85,7 +85,7 @@ allOf:
clocks: clocks:
minItems: 6 minItems: 6
maxItems: 6 maxItems: 6
regs: reg:
minItems: 2 minItems: 2
maxItems: 2 maxItems: 2
...@@ -99,7 +99,7 @@ allOf: ...@@ -99,7 +99,7 @@ allOf:
clocks: clocks:
minItems: 4 minItems: 4
maxItems: 4 maxItems: 4
regs: reg:
minItems: 2 minItems: 2
maxItems: 2 maxItems: 2
...@@ -116,7 +116,7 @@ allOf: ...@@ -116,7 +116,7 @@ allOf:
clocks: clocks:
minItems: 3 minItems: 3
maxItems: 3 maxItems: 3
regs: reg:
minItems: 1 minItems: 1
maxItems: 1 maxItems: 1
......
...@@ -319,9 +319,9 @@ static void decon_win_set_bldmod(struct decon_context *ctx, unsigned int win, ...@@ -319,9 +319,9 @@ static void decon_win_set_bldmod(struct decon_context *ctx, unsigned int win,
static void decon_win_set_pixfmt(struct decon_context *ctx, unsigned int win, static void decon_win_set_pixfmt(struct decon_context *ctx, unsigned int win,
struct drm_framebuffer *fb) struct drm_framebuffer *fb)
{ {
struct exynos_drm_plane plane = ctx->planes[win]; struct exynos_drm_plane *plane = &ctx->planes[win];
struct exynos_drm_plane_state *state = struct exynos_drm_plane_state *state =
to_exynos_plane_state(plane.base.state); to_exynos_plane_state(plane->base.state);
unsigned int alpha = state->base.alpha; unsigned int alpha = state->base.alpha;
unsigned int pixel_alpha; unsigned int pixel_alpha;
unsigned long val; unsigned long val;
......
...@@ -480,7 +480,7 @@ static void fimd_commit(struct exynos_drm_crtc *crtc) ...@@ -480,7 +480,7 @@ static void fimd_commit(struct exynos_drm_crtc *crtc)
struct fimd_context *ctx = crtc->ctx; struct fimd_context *ctx = crtc->ctx;
struct drm_display_mode *mode = &crtc->base.state->adjusted_mode; struct drm_display_mode *mode = &crtc->base.state->adjusted_mode;
const struct fimd_driver_data *driver_data = ctx->driver_data; const struct fimd_driver_data *driver_data = ctx->driver_data;
void *timing_base = ctx->regs + driver_data->timing_base; void __iomem *timing_base = ctx->regs + driver_data->timing_base;
u32 val; u32 val;
if (ctx->suspended) if (ctx->suspended)
...@@ -661,9 +661,9 @@ static void fimd_win_set_bldmod(struct fimd_context *ctx, unsigned int win, ...@@ -661,9 +661,9 @@ static void fimd_win_set_bldmod(struct fimd_context *ctx, unsigned int win,
static void fimd_win_set_pixfmt(struct fimd_context *ctx, unsigned int win, static void fimd_win_set_pixfmt(struct fimd_context *ctx, unsigned int win,
struct drm_framebuffer *fb, int width) struct drm_framebuffer *fb, int width)
{ {
struct exynos_drm_plane plane = ctx->planes[win]; struct exynos_drm_plane *plane = &ctx->planes[win];
struct exynos_drm_plane_state *state = struct exynos_drm_plane_state *state =
to_exynos_plane_state(plane.base.state); to_exynos_plane_state(plane->base.state);
uint32_t pixel_format = fb->format->format; uint32_t pixel_format = fb->format->format;
unsigned int alpha = state->base.alpha; unsigned int alpha = state->base.alpha;
u32 val = WINCONx_ENWIN; u32 val = WINCONx_ENWIN;
......
...@@ -1341,7 +1341,7 @@ static int __maybe_unused gsc_runtime_resume(struct device *dev) ...@@ -1341,7 +1341,7 @@ static int __maybe_unused gsc_runtime_resume(struct device *dev)
for (i = 0; i < ctx->num_clocks; i++) { for (i = 0; i < ctx->num_clocks; i++) {
ret = clk_prepare_enable(ctx->clocks[i]); ret = clk_prepare_enable(ctx->clocks[i]);
if (ret) { if (ret) {
while (--i > 0) while (--i >= 0)
clk_disable_unprepare(ctx->clocks[i]); clk_disable_unprepare(ctx->clocks[i]);
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment