#include <linux/backlight.h>
#include <linux/workqueue.h>
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_state_helper.h>
#include <drm/drm_connector.h>
#include <drm/drm_drv.h>
#include <drm/drm_edid.h>
#include <drm/drm_encoder.h>
#include <drm/drm_file.h>
#include <drm/drm_modeset_helper_vtables.h>
#include <drm/drm_print.h>
#include <drm/drm_probe_helper.h>
#include <drm/drm_simple_kms_helper.h>
#include <drm/gud.h>
#include "gud_internal.h"
struct gud_connector { … };
static inline struct gud_connector *to_gud_connector(struct drm_connector *connector)
{ … }
static void gud_conn_err(struct drm_connector *connector, const char *msg, int ret)
{ … }
static void gud_connector_backlight_update_status_work(struct work_struct *work)
{ … }
static int gud_connector_backlight_update_status(struct backlight_device *bd)
{ … }
static const struct backlight_ops gud_connector_backlight_ops = …;
static int gud_connector_backlight_register(struct gud_connector *gconn)
{ … }
static int gud_connector_detect(struct drm_connector *connector,
struct drm_modeset_acquire_ctx *ctx, bool force)
{ … }
struct gud_connector_get_edid_ctx { … };
static int gud_connector_get_edid_block(void *data, u8 *buf, unsigned int block, size_t len)
{ … }
static int gud_connector_get_modes(struct drm_connector *connector)
{ … }
static int gud_connector_atomic_check(struct drm_connector *connector,
struct drm_atomic_state *state)
{ … }
static const struct drm_connector_helper_funcs gud_connector_helper_funcs = …;
static int gud_connector_late_register(struct drm_connector *connector)
{ … }
static void gud_connector_early_unregister(struct drm_connector *connector)
{ … }
static void gud_connector_destroy(struct drm_connector *connector)
{ … }
static void gud_connector_reset(struct drm_connector *connector)
{ … }
static const struct drm_connector_funcs gud_connector_funcs = …;
static int gud_connector_add_tv_mode(struct gud_device *gdrm, struct drm_connector *connector)
{ … }
static struct drm_property *
gud_connector_property_lookup(struct drm_connector *connector, u16 prop)
{ … }
static unsigned int *gud_connector_tv_state_val(u16 prop, struct drm_tv_connector_state *state)
{ … }
static int gud_connector_add_properties(struct gud_device *gdrm, struct gud_connector *gconn)
{ … }
int gud_connector_fill_properties(struct drm_connector_state *connector_state,
struct gud_property_req *properties)
{ … }
static int gud_connector_create(struct gud_device *gdrm, unsigned int index,
struct gud_connector_descriptor_req *desc)
{ … }
int gud_get_connectors(struct gud_device *gdrm)
{ … }