summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/armada/armada_output.h
blob: 4126d43b5057a0a8b7d17a9eeb97f46b820bc63e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/*
 * Copyright (C) 2012 Russell King
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
#ifndef ARMADA_CONNETOR_H
#define ARMADA_CONNETOR_H

#define encoder_helper_funcs(encoder) \
	((struct drm_encoder_helper_funcs *)encoder->helper_private)

struct armada_output_type {
	int connector_type;
	enum drm_connector_status (*detect)(struct drm_connector *, bool);
	int (*create)(struct drm_connector *, const void *);
	int (*set_property)(struct drm_connector *, struct drm_property *,
			    uint64_t);
};

struct drm_encoder *armada_drm_connector_encoder(struct drm_connector *conn);

void armada_drm_encoder_prepare(struct drm_encoder *encoder);
void armada_drm_encoder_commit(struct drm_encoder *encoder);

bool armada_drm_encoder_mode_fixup(struct drm_encoder *encoder,
	const struct drm_display_mode *mode, struct drm_display_mode *adj);

int armada_drm_slave_encoder_mode_valid(struct drm_connector *conn,
	struct drm_display_mode *mode);

int armada_drm_slave_encoder_set_property(struct drm_connector *conn,
	struct drm_property *property, uint64_t value);

int armada_output_create(struct drm_device *dev,
	const struct armada_output_type *type, const void *data);

#endif