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

Commit fdf6d678 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: Update the dma stride value on mdp3"

parents f473a4b2 21bf0392
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -839,6 +839,14 @@ static int mdp3_overlay_set(struct msm_fb_data_type *mfd,
{
	int rc = 0;
	struct mdp3_session_data *mdp3_session = mfd->mdp.private1;
	struct fb_var_screeninfo *var;
	struct fb_fix_screeninfo *fix;
	struct fb_info *fbi = mfd->fbi;
	int stride;

	fix = &fbi->fix;
	var = &fbi->var;
	stride = req->src.width * var->bits_per_pixel/8;

	mutex_lock(&mdp3_session->lock);

@@ -847,6 +855,9 @@ static int mdp3_overlay_set(struct msm_fb_data_type *mfd,

	mdp3_session->overlay = *req;
	if (req->id == MSMFB_NEW_REQUEST) {
		if (fix->line_length != stride)
			mdp3_session->dma->config_stride(
						mdp3_session->dma, stride);
		mdp3_session->overlay.id = 1;
		req->id = 1;
	}
@@ -860,10 +871,15 @@ static int mdp3_overlay_unset(struct msm_fb_data_type *mfd, int ndx)
{
	int rc = 0;
	struct mdp3_session_data *mdp3_session = mfd->mdp.private1;
	struct fb_info *fbi = mfd->fbi;
	struct fb_fix_screeninfo *fix;

	fix = &fbi->fix;
	mutex_lock(&mdp3_session->lock);

	if (mdp3_session->overlay.id == ndx && ndx == 1) {
		mdp3_session->dma->config_stride(mdp3_session->dma,
							fix->line_length);
		mdp3_session->overlay.id = MSMFB_NEW_REQUEST;
		mdp3_bufq_deinit(&mdp3_session->bufq_in);
	} else {
+19 −0
Original line number Diff line number Diff line
@@ -268,6 +268,23 @@ static int mdp3_dma_sync_config(struct mdp3_dma *dma,
	return 0;
}

static void mdp3_dma_stride_config(struct mdp3_dma *dma, int stride)
{
	struct mdp3_dma_source *source_config;
	u32 dma_stride_offset;

	if (dma->dma_sel == MDP3_DMA_P)
		dma_stride_offset = MDP3_REG_DMA_P_IBUF_Y_STRIDE;
	else
		dma_stride_offset = MDP3_REG_DMA_S_IBUF_Y_STRIDE;

	source_config = &dma->source_config;
	source_config->stride = stride;
	pr_debug("%s: Update the fb stride for DMA to %d", __func__,
						(u32)source_config->stride);
	MDP3_REG_WRITE(dma_stride_offset, source_config->stride);
}

static int mdp3_dmap_config(struct mdp3_dma *dma,
			struct mdp3_dma_source *source_config,
			struct mdp3_dma_output_config *output_config)
@@ -855,6 +872,7 @@ int mdp3_dma_init(struct mdp3_dma *dma)
		dma->vsync_enable = mdp3_dma_vsync_enable;
		dma->start = mdp3_dma_start;
		dma->stop = mdp3_dma_stop;
		dma->config_stride = mdp3_dma_stride_config;
		break;
	case MDP3_DMA_S:
		dma->dma_config = mdp3_dmas_config;
@@ -869,6 +887,7 @@ int mdp3_dma_init(struct mdp3_dma *dma)
		dma->vsync_enable = mdp3_dma_vsync_enable;
		dma->start = mdp3_dma_start;
		dma->stop = mdp3_dma_stop;
		dma->config_stride = mdp3_dma_stride_config;
		break;
	case MDP3_DMA_E:
	default:
+2 −0
Original line number Diff line number Diff line
@@ -287,6 +287,8 @@ struct mdp3_dma {

	int (*histo_op)(struct mdp3_dma *dma, u32 op);

	void (*config_stride)(struct mdp3_dma *dma, int stride);

	void (*vsync_enable)(struct mdp3_dma *dma,
			struct mdp3_vsync_notification *vsync_client);
};