Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6397f093 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: mdss: add support for 10 bit RGB/YUV formats"

parents 1de9b622 6b64b853
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -171,6 +171,7 @@ enum mdss_hw_capabilities {
	MDSS_CAPS_MIXER_1_FOR_WB,
	MDSS_CAPS_QSEED3,
	MDSS_CAPS_DEST_SCALER,
	MDSS_CAPS_10_BIT_SUPPORTED,
	MDSS_CAPS_MAX,
};

+3 −2
Original line number Diff line number Diff line
@@ -1487,6 +1487,7 @@ static void mdss_mdp_hw_rev_caps_init(struct mdss_data_type *mdata)
		mdss_set_quirk(mdata, MDSS_QUIRK_DSC_RIGHT_ONLY_PU);
		mdss_set_quirk(mdata, MDSS_QUIRK_DSC_2SLICE_PU_THRPUT);
		mdata->has_wb_ubwc = true;
		set_bit(MDSS_CAPS_10_BIT_SUPPORTED, mdata->mdss_caps_map);
		break;
	default:
		mdata->max_target_zorder = 4; /* excluding base layer */
@@ -1843,7 +1844,7 @@ static void __update_sspp_info(struct mdss_mdp_pipe *pipe,
	int i;
	int j;
	size_t len = PAGE_SIZE;
	int num_bytes = BITS_TO_BYTES(MDP_IMGTYPE_LIMIT);
	int num_bytes = BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1);

#define SPRINT(fmt, ...) \
		(*cnt += scnprintf(buf + *cnt, len - *cnt, fmt, ##__VA_ARGS__))
@@ -1881,7 +1882,7 @@ static void mdss_mdp_update_wb_info(struct mdss_data_type *mdata,
		(*cnt += scnprintf(buf + *cnt, len - *cnt, fmt, ##__VA_ARGS__))
	size_t len = PAGE_SIZE;
	int i;
	int num_bytes = BITS_TO_BYTES(MDP_IMGTYPE_LIMIT);
	int num_bytes = BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1);

	SPRINT("rot_input_fmts=");
	for (i = 0; i < num_bytes && mdata->wb; i++)
+4 −3
Original line number Diff line number Diff line
@@ -245,8 +245,8 @@ struct mdss_mdp_writeback {
	char __iomem *base;
	u32 caps;
	struct kref kref;
	u8 supported_input_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT)];
	u8 supported_output_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT)];
	u8 supported_input_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1)];
	u8 supported_output_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1)];
};

struct mdss_mdp_ctl_intfs_ops {
@@ -432,6 +432,7 @@ struct mdss_mdp_format_params {
	u8 fetch_mode;
	u8 bits[MAX_PLANES];
	u8 element[MAX_PLANES];
	u8 unpack_dx_format;	/*1 for 10 bit format otherwise 0 */
};

struct mdss_mdp_format_ubwc_tile_info {
@@ -646,7 +647,7 @@ struct mdss_mdp_pipe {
	wait_queue_head_t free_waitq;
	u32 frame_rate;
	u8 csc_coeff_set;
	u8 supported_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT)];
	u8 supported_formats[BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1)];
};

struct mdss_mdp_writeback_arg {
+1 −1
Original line number Diff line number Diff line
@@ -1066,7 +1066,7 @@ static void __dump_pipe(struct seq_file *s, struct mdss_mdp_pipe *pipe)
			smps[0], smps[1], smps[2], smps[3]);

	seq_puts(s, "\tSupported formats = ");
	for (i = 0; i < BITS_TO_BYTES(MDP_IMGTYPE_LIMIT); i++)
	for (i = 0; i < BITS_TO_BYTES(MDP_IMGTYPE_LIMIT1); i++)
		seq_printf(s, "0x%02X ", pipe->supported_formats[i]);
	seq_puts(s, "\n");

+93 −0
Original line number Diff line number Diff line
@@ -171,6 +171,44 @@ enum {
		},						\
	}

#define FMT_RGB_2101010(fmt, fetch_type, flag_arg,	\
		alpha_en, e0, e1, e2, e3)	\
	{							\
		.format = (fmt),				\
		.flag = flag_arg,					\
		.fetch_planes = MDSS_MDP_PLANE_INTERLEAVED,	\
		.unpack_tight = 1,				\
		.unpack_align_msb = 0,				\
		.alpha_enable = (alpha_en),			\
		.unpack_count = 4,				\
		.bpp = 4,					\
		.fetch_mode = (fetch_type),			\
		.element = { (e0), (e1), (e2), (e3) },		\
		.bits = {					\
			[C3_ALPHA] = COLOR_8BIT,		\
			[C2_R_Cr] = COLOR_8BIT,			\
			[C0_G_Y] = COLOR_8BIT,			\
			[C1_B_Cb] = COLOR_8BIT,			\
		},						\
		.unpack_dx_format = 1,	\
	}

#define FMT_YUV_PSEUDO_10(fmt, fetch_type, samp, \
		flag_arg, e0, e1, unpack_type, unpack_align)		\
	{							\
		FMT_YUV_COMMON(fmt),				\
		.flag = flag_arg,					\
		.fetch_planes = MDSS_MDP_PLANE_PSEUDO_PLANAR,	\
		.chroma_sample = samp,				\
		.unpack_count = 2,				\
		.bpp = 2,					\
		.fetch_mode = (fetch_type),			\
		.element = { (e0), (e1) },			\
		.unpack_dx_format = 1,	\
		.unpack_tight = unpack_type,	\
		.unpack_align_msb = unpack_align,	\
	}

/*
 * UBWC formats table:
 * This table holds the UBWC formats supported.
@@ -218,6 +256,36 @@ static struct mdss_mdp_format_params_ubwc mdss_mdp_format_ubwc_map[] = {
			.tile_width = 32,
		},
	},
	{
		.mdp_format = FMT_RGB_2101010(MDP_RGBA_1010102_UBWC,
			MDSS_MDP_FETCH_UBWC,
			VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT,
			1, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA),
		.micro = {
			.tile_height = 4,
			.tile_width = 16,
		},
	},
	{
		.mdp_format = FMT_RGB_2101010(MDP_RGBX_1010102_UBWC,
			MDSS_MDP_FETCH_UBWC,
			VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT,
			0, C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA),
		.micro = {
			.tile_height = 4,
			.tile_width = 16,
		},
	},
	{
		.mdp_format = FMT_YUV_PSEUDO_10(MDP_Y_CBCR_H2V2_TP10_UBWC,
			MDSS_MDP_FETCH_UBWC, MDSS_MDP_CHROMA_420,
			VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT,
			C1_B_Cb, C2_R_Cr, 1, 0),
		.micro = {
			.tile_height = 4,
			.tile_width = 48,
		},
	},
};

static struct mdss_mdp_format_params mdss_mdp_format_map[] = {
@@ -346,5 +414,30 @@ static struct mdss_mdp_format_params mdss_mdp_format_map[] = {
	FMT_RGB_4444(MDP_ARGB_4444, 1, VALID_ROT_WB_FORMAT |
		VALID_MDP_CURSOR_FORMAT, C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA),

	FMT_RGB_2101010(MDP_RGBA_1010102, MDSS_MDP_FETCH_LINEAR,
		VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, 1,
		C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA),
	FMT_RGB_2101010(MDP_ARGB_2101010, MDSS_MDP_FETCH_LINEAR, 0, 1,
		C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb),
	FMT_RGB_2101010(MDP_RGBX_1010102, MDSS_MDP_FETCH_LINEAR,
		VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, 0,
		C2_R_Cr, C0_G_Y, C1_B_Cb, C3_ALPHA),
	FMT_RGB_2101010(MDP_XRGB_2101010, MDSS_MDP_FETCH_LINEAR, 0, 0,
		C3_ALPHA, C2_R_Cr, C0_G_Y, C1_B_Cb),
	FMT_RGB_2101010(MDP_BGRA_1010102, MDSS_MDP_FETCH_LINEAR,
		VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, 1,
		C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA),
	FMT_RGB_2101010(MDP_ABGR_2101010, MDSS_MDP_FETCH_LINEAR, 0, 1,
		C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr),
	FMT_RGB_2101010(MDP_BGRX_1010102, MDSS_MDP_FETCH_LINEAR,
		VALID_ROT_WB_FORMAT | VALID_MDP_WB_INTF_FORMAT, 0,
		C1_B_Cb, C0_G_Y, C2_R_Cr, C3_ALPHA),
	FMT_RGB_2101010(MDP_XBGR_2101010, MDSS_MDP_FETCH_LINEAR, 0, 0,
		C3_ALPHA, C1_B_Cb, C0_G_Y, C2_R_Cr),

	FMT_YUV_PSEUDO_10(MDP_Y_CBCR_H2V2_P010, MDSS_MDP_FETCH_LINEAR,
		MDSS_MDP_CHROMA_420, VALID_ROT_WB_FORMAT,
		C1_B_Cb, C2_R_Cr, 0, 1),

};
#endif
Loading