media: platform: mtk-mdp3: extend shared memory structure to 4-byte aligned
authorMoudy Ho <moudy.ho@mediatek.com>
Fri, 7 Oct 2022 09:22:30 +0000 (17:22 +0800)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Fri, 4 Nov 2022 15:56:28 +0000 (16:56 +0100)
The communication between MDP3 kernel driver and SCP is pass through
a shared memory, and the data structure is defined in the "mtk-img-ipi.h".
However, there is a 4-byte read limit in further SCP hardware, so the
data structure should be in 4-byte aligned.

Signed-off-by: Moudy Ho <moudy.ho@mediatek.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/platform/mediatek/mdp3/mtk-img-ipi.h

index 3e66ebaee2da290397df947f4bb00c13ec964092..c7f231f8ea3e74ff368e05324f0102c356b2504b 100644 (file)
@@ -51,14 +51,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;
 
@@ -72,10 +72,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;
@@ -90,24 +90,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];
@@ -123,51 +123,51 @@ 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;
 
 /* ISP-MDP generic output information */
 
 struct img_comp_frame {
-       u32 output_disable:1;
-       u32 bypass:1;
-       u16 in_width;
-       u16 in_height;
-       u16 out_width;
-       u16 out_height;
+       u32 output_disable;
+       u32 bypass;
+       u32 in_width;
+       u32 in_height;
+       u32 out_width;
+       u32 out_height;
        struct img_crop crop;
-       u16 in_total_width;
-       u16 out_total_width;
+       u32 in_total_width;
+       u32 out_total_width;
 } __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;
 
 struct img_comp_subfrm {
-       u32 tile_disable:1;
+       u32 tile_disable;
        struct img_region in;
        struct img_region out;
        struct img_offset luma;
        struct img_offset chroma;
-       s16 out_vertical; /* Output vertical index */
-       s16 out_horizontal; /* Output horizontal index */
+       s32 out_vertical; /* Output vertical index */
+       s32 out_horizontal; /* Output horizontal index */
 } __packed;
 
 #define IMG_MAX_SUBFRAMES      14
@@ -250,8 +250,8 @@ struct isp_data {
 } __packed;
 
 struct img_compparam {
-       u16 type; /* enum mdp_comp_type */
-       u16 id; /* enum mtk_mdp_comp_id */
+       u32 type; /* enum mdp_comp_id */
+       u32 id; /* engine alias_id */
        u32 input;
        u32 outputs[IMG_MAX_HW_OUTPUTS];
        u32 num_outputs;
@@ -273,12 +273,12 @@ 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;
 
 struct img_config {
        struct img_compparam components[IMG_MAX_COMPONENTS];