5 #include <linux/device.h>
6 #include <linux/errno.h>
9 #include <linux/kernel.h>
10 #include <linux/list.h>
13 #include <linux/module.h>
15 #include <linux/slab.h>
17 #include <linux/string.h>
18 #include <linux/types.h>
19 #include <linux/wait.h>
45 generation, device->
max_speed, addr, data, len);
65 #define ISO_HEADER_SIZE 4
66 #define CIP_HEADER_SIZE 8
67 #define MPEG2_TS_HEADER_SIZE 4
68 #define MPEG2_TS_SOURCE_PACKET_SIZE (4 + 188)
70 #define MAX_PACKET_SIZE 1024
71 #define PACKETS_PER_PAGE (PAGE_SIZE / MAX_PACKET_SIZE)
73 #define N_PAGES DIV_ROUND_UP(N_PACKETS, PACKETS_PER_PAGE)
74 #define IRQ_INTERVAL 16
106 for (h = header, h_end = h + header_length / 4; h < h_end; h++) {
121 err = queue_iso(ctx, i);
152 goto fail_context_destroy;
161 err = queue_iso(ctx, i);
176 fail_context_destroy:
204 if (length < 2 || (((
u8 *)payload)[0] & 0xf0) != 0)
207 su = ((
u8 *)payload)[1] & 0x7;
211 device = device_of(f);
217 if (device->
card == card &&
224 spin_unlock_irqrestore(&node_list_lock, flags);
232 .address_callback = handle_fcp,
240 static const char *
const model_names[] = {
249 #define MAX_MODEL_NAME_LEN sizeof("FireDTV ????")
251 static int node_probe(
struct device *
dev)
275 if (
strlen(model_names[i]) <= name_len &&
276 strncmp(name, model_names[i], name_len) == 0)
284 spin_lock_irq(&node_list_lock);
286 spin_unlock_irq(&node_list_lock);
300 spin_lock_irq(&node_list_lock);
302 spin_unlock_irq(&node_list_lock);
310 static int node_remove(
struct device *
dev)
316 spin_lock_irq(&node_list_lock);
318 spin_unlock_irq(&node_list_lock);
335 #define MATCH_FLAGS (IEEE1394_MATCH_VENDOR_ID | IEEE1394_MATCH_MODEL_ID | \
336 IEEE1394_MATCH_SPECIFIER_ID | IEEE1394_MATCH_VERSION)
338 #define DIGITAL_EVERYWHERE_OUI 0x001287
339 #define AVC_UNIT_SPEC_ID_ENTRY 0x00a02d
340 #define AVC_SW_VERSION_ENTRY 0x010001
347 .model_id = 0x000024,
354 .model_id = 0x000025,
361 .model_id = 0x000026,
368 .model_id = 0x000034,
375 .model_id = 0x000035,
382 .model_id = 0x000036,
395 .remove = node_remove,
397 .update = node_update,
398 .id_table = fdtv_id_table,
401 static int __init fdtv_init(
void)
416 static void __exit fdtv_exit(
void)