#define pr_fmt(fmt) …
#include <linux/spi/spi.h>
#include <linux/regulator/consumer.h>
#include <linux/ktime.h>
#include <media/dvb_demux.h>
#include <media/dmxdev.h>
#include <media/dvb_frontend.h>
#include "cxd2880.h"
#define CXD2880_MAX_FILTER_SIZE …
#define BURST_WRITE_MAX …
#define MAX_TRANS_PKT …
struct cxd2880_ts_buf_info { … };
struct cxd2880_pid_config { … };
struct cxd2880_pid_filter_config { … };
struct cxd2880_dvb_spi { … };
DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
static int cxd2880_write_spi(struct spi_device *spi, u8 *data, u32 size)
{ … }
static int cxd2880_write_reg(struct spi_device *spi,
u8 sub_address, const u8 *data, u32 size)
{ … }
static int cxd2880_spi_read_ts(struct spi_device *spi,
u8 *read_data,
u32 packet_num)
{ … }
static int cxd2880_spi_read_ts_buffer_info(struct spi_device *spi,
struct cxd2880_ts_buf_info *info)
{ … }
static int cxd2880_spi_clear_ts_buffer(struct spi_device *spi)
{ … }
static int cxd2880_set_pid_filter(struct spi_device *spi,
struct cxd2880_pid_filter_config *cfg)
{ … }
static int cxd2880_update_pid_filter(struct cxd2880_dvb_spi *dvb_spi,
struct cxd2880_pid_filter_config *cfg,
bool is_all_pid_filter)
{ … }
static int cxd2880_ts_read(void *arg)
{ … }
static int cxd2880_start_feed(struct dvb_demux_feed *feed)
{ … }
static int cxd2880_stop_feed(struct dvb_demux_feed *feed)
{ … }
static const struct of_device_id cxd2880_spi_of_match[] = …;
MODULE_DEVICE_TABLE(of, cxd2880_spi_of_match);
static int
cxd2880_spi_probe(struct spi_device *spi)
{ … }
static void
cxd2880_spi_remove(struct spi_device *spi)
{ … }
static const struct spi_device_id cxd2880_spi_id[] = …;
MODULE_DEVICE_TABLE(spi, cxd2880_spi_id);
static struct spi_driver cxd2880_spi_driver = …;
module_spi_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;