OSDN Git Service

drm: mali-dp: Add pitch alignment check function
authorBrian Starkey <brian.starkey@arm.com>
Tue, 11 Oct 2016 14:26:04 +0000 (15:26 +0100)
committerLiviu Dudau <Liviu.Dudau@arm.com>
Fri, 4 Nov 2016 17:08:06 +0000 (17:08 +0000)
Different hardware versions have different requirements when it comes to
pitch alignment. Add a function which can be used to check pitch
alignment for a device.

Signed-off-by: Brian Starkey <brian.starkey@arm.com>
Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
drivers/gpu/drm/arm/malidp_hw.c
drivers/gpu/drm/arm/malidp_hw.h

index be815d0..18c4766 100644 (file)
@@ -436,6 +436,7 @@ const struct malidp_hw_device malidp_device[MALIDP_MAX_DEVICES] = {
                        },
                        .input_formats = malidp500_de_formats,
                        .n_input_formats = ARRAY_SIZE(malidp500_de_formats),
+                       .bus_align_bytes = 8,
                },
                .query_hw = malidp500_query_hw,
                .enter_config_mode = malidp500_enter_config_mode,
@@ -468,6 +469,7 @@ const struct malidp_hw_device malidp_device[MALIDP_MAX_DEVICES] = {
                        },
                        .input_formats = malidp550_de_formats,
                        .n_input_formats = ARRAY_SIZE(malidp550_de_formats),
+                       .bus_align_bytes = 8,
                },
                .query_hw = malidp550_query_hw,
                .enter_config_mode = malidp550_enter_config_mode,
@@ -501,6 +503,7 @@ const struct malidp_hw_device malidp_device[MALIDP_MAX_DEVICES] = {
                        },
                        .input_formats = malidp550_de_formats,
                        .n_input_formats = ARRAY_SIZE(malidp550_de_formats),
+                       .bus_align_bytes = 16,
                },
                .query_hw = malidp650_query_hw,
                .enter_config_mode = malidp550_enter_config_mode,
index 141743e..087e120 100644 (file)
@@ -88,6 +88,9 @@ struct malidp_hw_regmap {
        /* list of supported input formats for each layer */
        const struct malidp_input_format *input_formats;
        const u8 n_input_formats;
+
+       /* pitch alignment requirement in bytes */
+       const u8 bus_align_bytes;
 };
 
 struct malidp_hw_device {
@@ -229,6 +232,12 @@ void malidp_se_irq_fini(struct drm_device *drm);
 u8 malidp_hw_get_format_id(const struct malidp_hw_regmap *map,
                           u8 layer_id, u32 format);
 
+static inline bool malidp_hw_pitch_valid(struct malidp_hw_device *hwdev,
+                                        unsigned int pitch)
+{
+       return !(pitch & (hwdev->map.bus_align_bytes - 1));
+}
+
 /*
  * background color components are defined as 12bits values,
  * they will be shifted right when stored on hardware that