#include <linux/device.h>
#include <linux/errno.h>
#include <linux/firewire.h>
#include <linux/firewire-constants.h>
#include <linux/kernel.h>
#include <linux/list.h>
#include <linux/mm.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/slab.h>
#include <linux/spinlock.h>
#include <linux/string.h>
#include <linux/types.h>
#include <linux/wait.h>
#include <linux/workqueue.h>
#include <asm/page.h>
#include <media/dvb_demux.h>
#include "firedtv.h"
static LIST_HEAD(node_list);
static DEFINE_SPINLOCK(node_list_lock);
static inline struct fw_device *device_of(struct firedtv *fdtv)
{ … }
static int node_req(struct firedtv *fdtv, u64 addr, void *data, size_t len,
int tcode)
{ … }
int fdtv_lock(struct firedtv *fdtv, u64 addr, void *data)
{ … }
int fdtv_read(struct firedtv *fdtv, u64 addr, void *data)
{ … }
int fdtv_write(struct firedtv *fdtv, u64 addr, void *data, size_t len)
{ … }
#define ISO_HEADER_SIZE …
#define CIP_HEADER_SIZE …
#define MPEG2_TS_HEADER_SIZE …
#define MPEG2_TS_SOURCE_PACKET_SIZE …
#define MAX_PACKET_SIZE …
#define PACKETS_PER_PAGE …
#define N_PACKETS …
#define N_PAGES …
#define IRQ_INTERVAL …
struct fdtv_ir_context { … };
static int queue_iso(struct fdtv_ir_context *ctx, int index)
{ … }
static void handle_iso(struct fw_iso_context *context, u32 cycle,
size_t header_length, void *header, void *data)
{ … }
int fdtv_start_iso(struct firedtv *fdtv)
{ … }
void fdtv_stop_iso(struct firedtv *fdtv)
{ … }
static void handle_fcp(struct fw_card *card, struct fw_request *request,
int tcode, int destination, int source, int generation,
unsigned long long offset, void *payload, size_t length,
void *callback_data)
{ … }
static struct fw_address_handler fcp_handler = …;
static const struct fw_address_region fcp_region = …;
static const char * const model_names[] = …;
#define MAX_MODEL_NAME_LEN …
static int node_probe(struct fw_unit *unit, const struct ieee1394_device_id *id)
{ … }
static void node_remove(struct fw_unit *unit)
{ … }
static void node_update(struct fw_unit *unit)
{ … }
#define MATCH_FLAGS …
#define DIGITAL_EVERYWHERE_OUI …
#define AVC_UNIT_SPEC_ID_ENTRY …
#define AVC_SW_VERSION_ENTRY …
static const struct ieee1394_device_id fdtv_id_table[] = …;
MODULE_DEVICE_TABLE(ieee1394, fdtv_id_table);
static struct fw_driver fdtv_driver = …;
static int __init fdtv_init(void)
{ … }
static void __exit fdtv_exit(void)
{ … }
module_init(…) …;
module_exit(fdtv_exit);
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;