linux/drivers/media/pci/solo6x10/solo6x10-i2c.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (C) 2010-2013 Bluecherry, LLC <https://www.bluecherrydvr.com>
 *
 * Original author:
 * Ben Collins <[email protected]>
 *
 * Additional work by:
 * John Brooks <[email protected]>
 */

/* XXX: The SOLO6x10 i2c does not have separate interrupts for each i2c
 * channel. The bus can only handle one i2c event at a time. The below handles
 * this all wrong. We should be using the status registers to see if the bus
 * is in use, and have a global lock to check the status register. Also,
 * the bulk of the work should be handled out-of-interrupt. The ugly loops
 * that occur during interrupt scare me. The ISR should merely signal
 * thread context, ACK the interrupt, and move on. -- BenC */

#include <linux/kernel.h>
#include <linux/sched/signal.h>

#include "solo6x10.h"

u8 solo_i2c_readbyte(struct solo_dev *solo_dev, int id, u8 addr, u8 off)
{}

void solo_i2c_writebyte(struct solo_dev *solo_dev, int id, u8 addr,
			u8 off, u8 data)
{}

static void solo_i2c_flush(struct solo_dev *solo_dev, int wr)
{}

static void solo_i2c_start(struct solo_dev *solo_dev)
{}

static void solo_i2c_stop(struct solo_dev *solo_dev)
{}

static int solo_i2c_handle_read(struct solo_dev *solo_dev)
{}

static int solo_i2c_handle_write(struct solo_dev *solo_dev)
{}

int solo_i2c_isr(struct solo_dev *solo_dev)
{}

static int solo_i2c_master_xfer(struct i2c_adapter *adap,
				struct i2c_msg msgs[], int num)
{}

static u32 solo_i2c_functionality(struct i2c_adapter *adap)
{}

static const struct i2c_algorithm solo_i2c_algo =;

int solo_i2c_init(struct solo_dev *solo_dev)
{}

void solo_i2c_exit(struct solo_dev *solo_dev)
{}