Commit fe4c63c1 authored by Moudy Ho's avatar Moudy Ho Committed by Hans Verkuil
Browse files

media: platform: mtk-mdp3: extend shared memory structure to 4-byte aligned



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: default avatarMoudy Ho <moudy.ho@mediatek.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
parent de547896
Loading
Loading
Loading
Loading
+38 −38
Original line number Diff line number Diff line
@@ -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];