1 /* 2 * Copyright (C) 2012 Russell King 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2 as 6 * published by the Free Software Foundation. 7 */ 8 #ifndef ARMADA_CONNETOR_H 9 #define ARMADA_CONNETOR_H 10 11 #define encoder_helper_funcs(encoder) \ 12 ((struct drm_encoder_helper_funcs *)encoder->helper_private) 13 14 struct armada_output_type { 15 int connector_type; 16 enum drm_connector_status (*detect)(struct drm_connector *, bool); 17 int (*create)(struct drm_connector *, const void *); 18 int (*set_property)(struct drm_connector *, struct drm_property *, 19 uint64_t); 20 }; 21 22 struct drm_encoder *armada_drm_connector_encoder(struct drm_connector *conn); 23 24 void armada_drm_encoder_prepare(struct drm_encoder *encoder); 25 void armada_drm_encoder_commit(struct drm_encoder *encoder); 26 27 bool armada_drm_encoder_mode_fixup(struct drm_encoder *encoder, 28 const struct drm_display_mode *mode, struct drm_display_mode *adj); 29 30 int armada_drm_slave_encoder_mode_valid(struct drm_connector *conn, 31 struct drm_display_mode *mode); 32 33 int armada_drm_slave_encoder_set_property(struct drm_connector *conn, 34 struct drm_property *property, uint64_t value); 35 36 int armada_output_create(struct drm_device *dev, 37 const struct armada_output_type *type, const void *data); 38 39 #endif 40