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

Commit b3c8a40c authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-misc-next-fixes-2019-07-11' of...

Merge tag 'drm-misc-next-fixes-2019-07-11' of git://anongit.freedesktop.org/drm/drm-misc

 into drm-next

Pull request for drm-misc-fixes-next for v5.3:
- Revert properties exposed in komeda that need improvement before they become ABI.
- Only add modes from the cmdline if they are valid.
- Add orientation quirk for GPD MicroPC.
- Reduce stack usage in drm selftests.
- Fix bochs framebuffer setup.

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/e6b84ce4-2728-fb02-87c1-6a6b87703c0b@linux.intel.com
parents 3729fe2b 7f3bbc0b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1203,7 +1203,7 @@ M: James (Qian) Wang <james.qian.wang@arm.com>
M:	Liviu Dudau <liviu.dudau@arm.com>
L:	Mali DP Maintainers <malidp@foss.arm.com>
S:	Supported
T:	git git://linux-arm.org/linux-ld.git for-upstream/mali-dp
T:	git git://anongit.freedesktop.org/drm/drm-misc
F:	drivers/gpu/drm/arm/display/include/
F:	drivers/gpu/drm/arm/display/komeda/
F:	Documentation/devicetree/bindings/display/arm,komeda.txt
@@ -1214,7 +1214,7 @@ M: Liviu Dudau <liviu.dudau@arm.com>
M:	Brian Starkey <brian.starkey@arm.com>
L:	Mali DP Maintainers <malidp@foss.arm.com>
S:	Supported
T:	git git://linux-arm.org/linux-ld.git for-upstream/mali-dp
T:	git git://anongit.freedesktop.org/drm/drm-misc
F:	drivers/gpu/drm/arm/
F:	Documentation/devicetree/bindings/display/arm,malidp.txt
F:	Documentation/gpu/afbc.rst
+0 −63
Original line number Diff line number Diff line
@@ -454,24 +454,6 @@ static void komeda_crtc_vblank_disable(struct drm_crtc *crtc)
	mdev->funcs->on_off_vblank(mdev, kcrtc->master->id, false);
}

static int
komeda_crtc_atomic_get_property(struct drm_crtc *crtc,
				const struct drm_crtc_state *state,
				struct drm_property *property, uint64_t *val)
{
	struct komeda_crtc *kcrtc = to_kcrtc(crtc);
	struct komeda_crtc_state *kcrtc_st = to_kcrtc_st(state);

	if (property == kcrtc->clock_ratio_property) {
		*val = kcrtc_st->clock_ratio;
	} else {
		DRM_DEBUG_DRIVER("Unknown property %s\n", property->name);
		return -EINVAL;
	}

	return 0;
}

static const struct drm_crtc_funcs komeda_crtc_funcs = {
	.gamma_set		= drm_atomic_helper_legacy_gamma_set,
	.destroy		= drm_crtc_cleanup,
@@ -482,7 +464,6 @@ static const struct drm_crtc_funcs komeda_crtc_funcs = {
	.atomic_destroy_state	= komeda_crtc_atomic_destroy_state,
	.enable_vblank		= komeda_crtc_vblank_enable,
	.disable_vblank		= komeda_crtc_vblank_disable,
	.atomic_get_property	= komeda_crtc_atomic_get_property,
};

int komeda_kms_setup_crtcs(struct komeda_kms_dev *kms,
@@ -518,42 +499,6 @@ int komeda_kms_setup_crtcs(struct komeda_kms_dev *kms,
	return 0;
}

static int komeda_crtc_create_clock_ratio_property(struct komeda_crtc *kcrtc)
{
	struct drm_crtc *crtc = &kcrtc->base;
	struct drm_property *prop;

	prop = drm_property_create_range(crtc->dev, DRM_MODE_PROP_ATOMIC,
					 "CLOCK_RATIO", 0, U64_MAX);
	if (!prop)
		return -ENOMEM;

	drm_object_attach_property(&crtc->base, prop, 0);
	kcrtc->clock_ratio_property = prop;

	return 0;
}

static int komeda_crtc_create_slave_planes_property(struct komeda_crtc *kcrtc)
{
	struct drm_crtc *crtc = &kcrtc->base;
	struct drm_property *prop;

	if (kcrtc->slave_planes == 0)
		return 0;

	prop = drm_property_create_range(crtc->dev, DRM_MODE_PROP_IMMUTABLE,
					 "slave_planes", 0, U32_MAX);
	if (!prop)
		return -ENOMEM;

	drm_object_attach_property(&crtc->base, prop, kcrtc->slave_planes);

	kcrtc->slave_planes_property = prop;

	return 0;
}

static struct drm_plane *
get_crtc_primary(struct komeda_kms_dev *kms, struct komeda_crtc *crtc)
{
@@ -590,14 +535,6 @@ static int komeda_crtc_add(struct komeda_kms_dev *kms,

	crtc->port = kcrtc->master->of_output_port;

	err = komeda_crtc_create_clock_ratio_property(kcrtc);
	if (err)
		return err;

	err = komeda_crtc_create_slave_planes_property(kcrtc);
	if (err)
		return err;

	return err;
}

+2 −16
Original line number Diff line number Diff line
@@ -33,11 +33,6 @@ struct komeda_plane {
	 * Layers with same capabilities.
	 */
	struct komeda_layer *layer;

	/** @prop_img_enhancement: for on/off image enhancement */
	struct drm_property *prop_img_enhancement;
	/** @prop_layer_split: for on/off layer_split */
	struct drm_property *prop_layer_split;
};

/**
@@ -52,11 +47,8 @@ struct komeda_plane_state {
	/** @zlist_node: zorder list node */
	struct list_head zlist_node;

	/* @img_enhancement: on/off image enhancement
	 * @layer_split: on/off layer_split
	 */
	u8 img_enhancement : 1,
	   layer_split : 1;
	/** @layer_split: on/off layer_split */
	u8 layer_split : 1;
};

/**
@@ -94,12 +86,6 @@ struct komeda_crtc {

	/** @disable_done: this flip_done is for tracing the disable */
	struct completion *disable_done;

	/** @clock_ratio_property: property for ratio of (aclk << 32)/pxlclk */
	struct drm_property *clock_ratio_property;

	/** @slave_planes_property: property for slaves of the planes */
	struct drm_property *slave_planes_property;
};

/**
+2 −1
Original line number Diff line number Diff line
@@ -537,7 +537,8 @@ void komeda_pipeline_disable(struct komeda_pipeline *pipe,
void komeda_pipeline_update(struct komeda_pipeline *pipe,
			    struct drm_atomic_state *old_state);

void komeda_complete_data_flow_cfg(struct komeda_data_flow_cfg *dflow,
void komeda_complete_data_flow_cfg(struct komeda_layer *layer,
				   struct komeda_data_flow_cfg *dflow,
				   struct drm_framebuffer *fb);

#endif /* _KOMEDA_PIPELINE_H_*/
+14 −1
Original line number Diff line number Diff line
@@ -784,9 +784,11 @@ komeda_timing_ctrlr_validate(struct komeda_timing_ctrlr *ctrlr,
	return 0;
}

void komeda_complete_data_flow_cfg(struct komeda_data_flow_cfg *dflow,
void komeda_complete_data_flow_cfg(struct komeda_layer *layer,
				   struct komeda_data_flow_cfg *dflow,
				   struct drm_framebuffer *fb)
{
	struct komeda_scaler *scaler = layer->base.pipeline->scalers[0];
	u32 w = dflow->in_w;
	u32 h = dflow->in_h;

@@ -803,6 +805,17 @@ void komeda_complete_data_flow_cfg(struct komeda_data_flow_cfg *dflow,

	dflow->en_scaling = (w != dflow->out_w) || (h != dflow->out_h);
	dflow->is_yuv = fb->format->is_yuv;

	/* try to enable image enhancer if data flow is a 2x+ upscaling */
	dflow->en_img_enhancement = dflow->out_w >= 2 * w ||
				    dflow->out_h >= 2 * h;

	/* try to enable split if scaling exceed the scaler's acceptable
	 * input/output range.
	 */
	if (dflow->en_scaling && scaler)
		dflow->en_split = !in_range(&scaler->hsize, dflow->in_w) ||
				  !in_range(&scaler->hsize, dflow->out_w);
}

static bool merger_is_available(struct komeda_pipeline *pipe,
Loading