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

Commit ea5b213a authored by Chris Wilson's avatar Chris Wilson Committed by Eric Anholt
Browse files

drm/i915: Subclass intel_encoder.



Subclass intel_encoder to reduce the pointer dance through
intel_encoder->dev_priv.

10 files changed, 896 insertions(+), 997 deletions(-)

Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarEric Anholt <eric@anholt.net>
parent 94113cec
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -30,20 +30,17 @@
#include "intel_drv.h"

struct intel_dvo_device {
	char *name;
	const char *name;
	int type;
	/* DVOA/B/C output register */
	u32 dvo_reg;
	/* GPIO register used for i2c bus to control this device */
	u32 gpio;
	int slave_addr;
	struct i2c_adapter *i2c_bus;

	const struct intel_dvo_dev_ops *dev_ops;
	void *dev_priv;

	struct drm_display_mode *panel_fixed_mode;
	bool panel_wants_dither;
	struct i2c_adapter *i2c_bus;
};

struct intel_dvo_dev_ops {
+1 −10
Original line number Diff line number Diff line
@@ -508,17 +508,8 @@ static const struct drm_connector_helper_funcs intel_crt_connector_helper_funcs
	.best_encoder = intel_attached_encoder,
};

static void intel_crt_enc_destroy(struct drm_encoder *encoder)
{
	struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder);

	intel_i2c_destroy(intel_encoder->ddc_bus);
	drm_encoder_cleanup(encoder);
	kfree(intel_encoder);
}

static const struct drm_encoder_funcs intel_crt_enc_funcs = {
	.destroy = intel_crt_enc_destroy,
	.destroy = intel_encoder_destroy,
};

void intel_crt_init(struct drm_device *dev)
+14 −0
Original line number Diff line number Diff line
@@ -2537,6 +2537,20 @@ void intel_encoder_commit (struct drm_encoder *encoder)
	encoder_funcs->dpms(encoder, DRM_MODE_DPMS_ON);
}

void intel_encoder_destroy(struct drm_encoder *encoder)
{
	struct intel_encoder *intel_encoder = enc_to_intel_encoder(encoder);

	if (intel_encoder->ddc_bus)
		intel_i2c_destroy(intel_encoder->ddc_bus);

	if (intel_encoder->i2c_bus)
		intel_i2c_destroy(intel_encoder->i2c_bus);

	drm_encoder_cleanup(encoder);
	kfree(intel_encoder);
}

static bool intel_crtc_mode_fixup(struct drm_crtc *crtc,
				  struct drm_display_mode *mode,
				  struct drm_display_mode *adjusted_mode)
+213 −249

File changed.

Preview size limit exceeded, changes collapsed.

+1 −1
Original line number Diff line number Diff line
@@ -102,7 +102,6 @@ struct intel_encoder {
	struct i2c_adapter *ddc_bus;
	bool load_detect_temp;
	bool needs_tv_clock;
	void *dev_priv;
	void (*hot_plug)(struct intel_encoder *);
	int crtc_mask;
	int clone_mask;
@@ -192,6 +191,7 @@ extern int intel_panel_fitter_pipe (struct drm_device *dev);
extern void intel_crtc_load_lut(struct drm_crtc *crtc);
extern void intel_encoder_prepare (struct drm_encoder *encoder);
extern void intel_encoder_commit (struct drm_encoder *encoder);
extern void intel_encoder_destroy(struct drm_encoder *encoder);

extern struct drm_encoder *intel_attached_encoder(struct drm_connector *connector);

Loading