[PATCH v2 9/9] media: platform: mtk-mdp3: extend shared memory structure to 4-byte aligned

From: Moudy Ho
Date: Thu Oct 20 2022 - 03:39:34 EST


The common header "mtk-img-ipi.h" defines the input frame parameters used to
pass to SCP for components config calculations.

However, there is a 4-byte read limit in further SCP hardware, so the
data structure should be aligned.

Signed-off-by: Moudy Ho <moudy.ho@xxxxxxxxxxxx>
---
.../platform/mediatek/mdp3/mtk-img-ipi.h | 50 +++++++++----------
1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/drivers/media/platform/mediatek/mdp3/mtk-img-ipi.h b/drivers/media/platform/mediatek/mdp3/mtk-img-ipi.h
index fcd6f7dd39fc..5b99d3505f9b 100644
--- a/drivers/media/platform/mediatek/mdp3/mtk-img-ipi.h
+++ b/drivers/media/platform/mediatek/mdp3/mtk-img-ipi.h
@@ -47,14 +47,14 @@ struct img_sw_addr {

struct img_plane_format {
u32 size;
- u16 stride;
+ u32 stride;
} __packed;

struct img_pix_format {
- u16 width;
- u16 height;
+ u32 width;
+ u32 height;
u32 colorformat; /* enum mdp_color */
- u16 ycbcr_prof; /* enum mdp_ycbcr_profile */
+ u32 ycbcr_prof; /* enum mdp_ycbcr_profile */
struct img_plane_format plane_fmt[IMG_MAX_PLANES];
} __packed;

@@ -68,10 +68,10 @@ struct img_image_buffer {
#define IMG_SUBPIXEL_SHIFT 20

struct img_crop {
- s16 left;
- s16 top;
- u16 width;
- u16 height;
+ s32 left;
+ s32 top;
+ u32 width;
+ u32 height;
u32 left_subpix;
u32 top_subpix;
u32 width_subpix;
@@ -86,24 +86,24 @@ struct img_crop {

struct img_input {
struct img_image_buffer buffer;
- u16 flags; /* HDR, DRE, dither */
+ u32 flags; /* HDR, DRE, dither */
} __packed;

struct img_output {
struct img_image_buffer buffer;
struct img_crop crop;
- s16 rotation;
- u16 flags; /* H-flip, sharpness, dither */
+ s32 rotation;
+ u32 flags; /* H-flip, sharpness, dither */
} __packed;

struct img_ipi_frameparam {
u32 index;
u32 frame_no;
struct img_timeval timestamp;
- u8 type; /* enum mdp_stream_type */
- u8 state;
- u8 num_inputs;
- u8 num_outputs;
+ u32 type; /* enum mdp_stream_type */
+ u32 state;
+ u32 num_inputs;
+ u32 num_outputs;
u64 drv_data;
struct img_input inputs[IMG_MAX_HW_INPUTS];
struct img_output outputs[IMG_MAX_HW_OUTPUTS];
@@ -119,25 +119,25 @@ struct img_sw_buffer {
} __packed;

struct img_ipi_param {
- u8 usage;
+ u32 usage;
struct img_sw_buffer frm_param;
} __packed;

struct img_frameparam {
struct list_head list_entry;
struct img_ipi_frameparam frameparam;
-};
+} __packed;

struct img_region {
- s16 left;
- s16 right;
- s16 top;
- s16 bottom;
+ s32 left;
+ s32 right;
+ s32 top;
+ s32 bottom;
} __packed;

struct img_offset {
- s16 left;
- s16 top;
+ s32 left;
+ s32 top;
u32 left_subpix;
u32 top_subpix;
} __packed;
@@ -148,11 +148,11 @@ struct img_mux {
u32 reg;
u32 value;
u32 subsys_id;
-};
+} __packed;

struct img_mmsys_ctrl {
struct img_mux sets[IMG_MAX_COMPONENTS * 2];
u32 num_sets;
-};
+} __packed;

#endif /* __MTK_IMG_IPI_H__ */
--
2.18.0