linux/drivers/gpu/drm/i2c/tda9950.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 *  TDA9950 Consumer Electronics Control driver
 *
 * The NXP TDA9950 implements the HDMI Consumer Electronics Control
 * interface.  The host interface is similar to a mailbox: the data
 * registers starting at REG_CDR0 are written to send a command to the
 * internal CPU, and replies are read from these registers.
 *
 * As the data registers represent a mailbox, they must be accessed
 * as a single I2C transaction.  See the TDA9950 data sheet for details.
 */
#include <linux/delay.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/platform_data/tda9950.h>
#include <linux/slab.h>
#include <drm/drm_edid.h>
#include <media/cec.h>
#include <media/cec-notifier.h>

enum {};

struct tda9950_priv {};

static int tda9950_write_range(struct i2c_client *client, u8 addr, u8 *p, int cnt)
{}

static void tda9950_write(struct i2c_client *client, u8 addr, u8 val)
{}

static int tda9950_read_range(struct i2c_client *client, u8 addr, u8 *p, int cnt)
{}

static u8 tda9950_read(struct i2c_client *client, u8 addr)
{}

static irqreturn_t tda9950_irq(int irq, void *data)
{}

static int tda9950_cec_transmit(struct cec_adapter *adap, u8 attempts,
				u32 signal_free_time, struct cec_msg *msg)
{}

static int tda9950_cec_adap_log_addr(struct cec_adapter *adap, u8 addr)
{}

/*
 * When operating as part of the TDA998x, we need additional handling
 * to initialise and shut down the TDA9950 part of the device.  These
 * two hooks are provided to allow the TDA998x code to perform those
 * activities.
 */
static int tda9950_glue_open(struct tda9950_priv *priv)
{}

static void tda9950_glue_release(struct tda9950_priv *priv)
{}

static int tda9950_open(struct tda9950_priv *priv)
{}

static void tda9950_release(struct tda9950_priv *priv)
{}

static int tda9950_cec_adap_enable(struct cec_adapter *adap, bool enable)
{}

static const struct cec_adap_ops tda9950_cec_ops =;

/*
 * When operating as part of the TDA998x, we need to claim additional
 * resources.  These two hooks permit the management of those resources.
 */
static void tda9950_devm_glue_exit(void *data)
{}

static int tda9950_devm_glue_init(struct device *dev, struct tda9950_glue *glue)
{}

static void tda9950_cec_del(void *data)
{}

static int tda9950_probe(struct i2c_client *client)
{}

static void tda9950_remove(struct i2c_client *client)
{}

static struct i2c_device_id tda9950_ids[] =;
MODULE_DEVICE_TABLE(i2c, tda9950_ids);

static struct i2c_driver tda9950_driver =;

module_i2c_driver();

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();