linux/drivers/gpu/drm/gud/gud_connector.c

// SPDX-License-Identifier: MIT
/*
 * Copyright 2020 Noralf Trønnes
 */

#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)
{}

/*
 * Use a worker to avoid taking kms locks inside the backlight lock.
 * Other display drivers use backlight within their kms locks.
 * This avoids inconsistent locking rules, which would upset lockdep.
 */
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 =;

/*
 * The tv.mode property is shared among the connectors and its enum names are
 * driver specific. This means that if more than one connector uses tv.mode,
 * the enum names has to be the same.
 */
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)
{}