]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
drm/sun4i: de2: Don't return de2_fmt_info struct
authorJernej Skrabec <jernej.skrabec@siol.net>
Mon, 24 Feb 2020 17:39:00 +0000 (18:39 +0100)
committerJernej Skrabec <jernej.skrabec@siol.net>
Tue, 24 Mar 2020 20:13:24 +0000 (21:13 +0100)
Now that de2_fmt_info contains only DRM <-> HW format mapping, it
doesn't make sense to return pointer to structure when searching by DRM
format. Rework that to return only HW format instead.

This doesn't make any functional change.

Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20200224173901.174016-7-jernej.skrabec@siol.net
drivers/gpu/drm/sun4i/sun8i_mixer.c
drivers/gpu/drm/sun4i/sun8i_mixer.h
drivers/gpu/drm/sun4i/sun8i_ui_layer.c
drivers/gpu/drm/sun4i/sun8i_vi_layer.c

index e078ec96de2d581b717d1182d0638b700f5be791..56cc037fd31288e1fb2364e3b1ff001106eec2c4 100644 (file)
 #include "sun8i_vi_layer.h"
 #include "sunxi_engine.h"
 
+struct de2_fmt_info {
+       u32     drm_fmt;
+       u32     de2_fmt;
+};
+
 static const struct de2_fmt_info de2_formats[] = {
        {
                .drm_fmt = DRM_FORMAT_ARGB8888,
@@ -230,15 +235,17 @@ static const struct de2_fmt_info de2_formats[] = {
        },
 };
 
-const struct de2_fmt_info *sun8i_mixer_format_info(u32 format)
+int sun8i_mixer_drm_format_to_hw(u32 format, u32 *hw_format)
 {
        unsigned int i;
 
        for (i = 0; i < ARRAY_SIZE(de2_formats); ++i)
-               if (de2_formats[i].drm_fmt == format)
-                       return &de2_formats[i];
+               if (de2_formats[i].drm_fmt == format) {
+                       *hw_format = de2_formats[i].de2_fmt;
+                       return 0;
+               }
 
-       return NULL;
+       return -EINVAL;
 }
 
 static void sun8i_mixer_commit(struct sunxi_engine *engine)
index 0dd4a347fa06018f6d9615c8157401f608137935..7576b523fdbb1409c720ca5874425a71be9cc411 100644 (file)
 #define SUN50I_MIXER_CDC0_EN                   0xd0000
 #define SUN50I_MIXER_CDC1_EN                   0xd8000
 
-struct de2_fmt_info {
-       u32     drm_fmt;
-       u32     de2_fmt;
-};
-
 /**
  * struct sun8i_mixer_cfg - mixer HW configuration
  * @vi_num: number of VI channels
@@ -207,5 +202,5 @@ sun8i_channel_base(struct sun8i_mixer *mixer, int channel)
                return DE2_CH_BASE + channel * DE2_CH_SIZE;
 }
 
-const struct de2_fmt_info *sun8i_mixer_format_info(u32 format);
+int sun8i_mixer_drm_format_to_hw(u32 format, u32 *hw_format);
 #endif /* _SUN8I_MIXER_H_ */
index 99ee19a0041599aa861a986d2f24697ca3f484ca..a64aaea1ba7428846848d031e984a75845ffb8b7 100644 (file)
@@ -174,20 +174,20 @@ static int sun8i_ui_layer_update_formats(struct sun8i_mixer *mixer, int channel,
                                         int overlay, struct drm_plane *plane)
 {
        struct drm_plane_state *state = plane->state;
-       const struct de2_fmt_info *fmt_info;
        const struct drm_format_info *fmt;
-       u32 val, ch_base;
+       u32 val, ch_base, hw_fmt;
+       int ret;
 
        ch_base = sun8i_channel_base(mixer, channel);
 
        fmt = state->fb->format;
-       fmt_info = sun8i_mixer_format_info(fmt->format);
-       if (!fmt_info || fmt->is_yuv) {
+       ret = sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt);
+       if (ret || fmt->is_yuv) {
                DRM_DEBUG_DRIVER("Invalid format\n");
                return -EINVAL;
        }
 
-       val = fmt_info->de2_fmt << SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_OFFSET;
+       val = hw_fmt << SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_OFFSET;
        regmap_update_bits(mixer->engine.regs,
                           SUN8I_MIXER_CHAN_UI_LAYER_ATTR(ch_base, overlay),
                           SUN8I_MIXER_CHAN_UI_LAYER_ATTR_FBFMT_MASK, val);
index d783c2bfc77e0344cc4b95929000684864219c5b..b1e1ba2da663f0c5c03dc47edf93adb5964477b9 100644 (file)
@@ -231,20 +231,20 @@ static int sun8i_vi_layer_update_formats(struct sun8i_mixer *mixer, int channel,
                                         int overlay, struct drm_plane *plane)
 {
        struct drm_plane_state *state = plane->state;
-       const struct de2_fmt_info *fmt_info;
+       u32 val, ch_base, csc_mode, hw_fmt;
        const struct drm_format_info *fmt;
-       u32 val, ch_base, csc_mode;
+       int ret;
 
        ch_base = sun8i_channel_base(mixer, channel);
 
        fmt = state->fb->format;
-       fmt_info = sun8i_mixer_format_info(fmt->format);
-       if (!fmt_info) {
+       ret = sun8i_mixer_drm_format_to_hw(fmt->format, &hw_fmt);
+       if (ret) {
                DRM_DEBUG_DRIVER("Invalid format\n");
-               return -EINVAL;
+               return ret;
        }
 
-       val = fmt_info->de2_fmt << SUN8I_MIXER_CHAN_VI_LAYER_ATTR_FBFMT_OFFSET;
+       val = hw_fmt << SUN8I_MIXER_CHAN_VI_LAYER_ATTR_FBFMT_OFFSET;
        regmap_update_bits(mixer->engine.regs,
                           SUN8I_MIXER_CHAN_VI_LAYER_ATTR(ch_base, overlay),
                           SUN8I_MIXER_CHAN_VI_LAYER_ATTR_FBFMT_MASK, val);