mirror of
https://github.com/adulau/aha.git
synced 2024-12-27 19:26:25 +00:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6: firewire: new stack is no longer experimental firewire: net: better FIFO address range check and rcodes firewire: net: fix card driver reloading firewire: core: fix iso context shutdown on card removal firewire: core: fix DMA unmapping in iso buffer removal firewire: net: adjust net_device ops firewire: net: remove unused code firewire: net: allow for unordered unit discovery firewire: net: style changes firewire: net: add Kconfig item, rename driver firewire: add IPv4 support
This commit is contained in:
commit
1053414068
8 changed files with 1807 additions and 136 deletions
|
@ -1,28 +1,29 @@
|
|||
comment "A new alternative FireWire stack is available with EXPERIMENTAL=y"
|
||||
depends on EXPERIMENTAL=n
|
||||
|
||||
comment "Enable only one of the two stacks, unless you know what you are doing"
|
||||
depends on EXPERIMENTAL
|
||||
comment "You can enable one or both FireWire driver stacks."
|
||||
comment "See the help texts for more information."
|
||||
|
||||
config FIREWIRE
|
||||
tristate "New FireWire stack, EXPERIMENTAL"
|
||||
depends on EXPERIMENTAL
|
||||
tristate "FireWire driver stack"
|
||||
select CRC_ITU_T
|
||||
help
|
||||
This is the "Juju" FireWire stack, a new alternative implementation
|
||||
designed for robustness and simplicity. You can build either this
|
||||
stack, or the old stack (the ieee1394 driver, ohci1394 etc.) or both.
|
||||
Please read http://ieee1394.wiki.kernel.org/index.php/Juju_Migration
|
||||
before you enable the new stack.
|
||||
This is the new-generation IEEE 1394 (FireWire) driver stack
|
||||
a.k.a. Juju, a new implementation designed for robustness and
|
||||
simplicity.
|
||||
See http://ieee1394.wiki.kernel.org/index.php/Juju_Migration
|
||||
for information about migration from the older Linux 1394 stack
|
||||
to the new driver stack.
|
||||
|
||||
To compile this driver as a module, say M here: the module will be
|
||||
called firewire-core.
|
||||
|
||||
This module functionally replaces ieee1394, raw1394, and video1394.
|
||||
To access it from application programs, you generally need at least
|
||||
libraw1394 version 2. IIDC/DCAM applications also need libdc1394
|
||||
version 2. No libraries are required to access storage devices
|
||||
through the firewire-sbp2 driver.
|
||||
libraw1394 v2. IIDC/DCAM applications need libdc1394 v2.
|
||||
No libraries are required to access storage devices through the
|
||||
firewire-sbp2 driver.
|
||||
|
||||
NOTE:
|
||||
FireWire audio devices currently require the old drivers (ieee1394,
|
||||
ohci1394, raw1394).
|
||||
|
||||
config FIREWIRE_OHCI
|
||||
tristate "OHCI-1394 controllers"
|
||||
|
@ -37,11 +38,9 @@ config FIREWIRE_OHCI
|
|||
stack.
|
||||
|
||||
NOTE:
|
||||
|
||||
You should only build either firewire-ohci or the old ohci1394 driver,
|
||||
but not both. If you nevertheless want to install both, you should
|
||||
configure them only as modules and blacklist the driver(s) which you
|
||||
don't want to have auto-loaded. Add either
|
||||
If you want to install firewire-ohci and ohci1394 together, you
|
||||
should configure them only as modules and blacklist the driver(s)
|
||||
which you don't want to have auto-loaded. Add either
|
||||
|
||||
blacklist firewire-ohci
|
||||
or
|
||||
|
@ -50,12 +49,7 @@ config FIREWIRE_OHCI
|
|||
blacklist dv1394
|
||||
|
||||
to /etc/modprobe.conf or /etc/modprobe.d/* and update modprobe.conf
|
||||
depending on your distribution. The latter two modules should be
|
||||
blacklisted together with ohci1394 because they depend on ohci1394.
|
||||
|
||||
If you have an old modprobe which doesn't implement the blacklist
|
||||
directive, use "install modulename /bin/true" for the modules to be
|
||||
blacklisted.
|
||||
depending on your distribution.
|
||||
|
||||
config FIREWIRE_OHCI_DEBUG
|
||||
bool
|
||||
|
@ -77,3 +71,17 @@ config FIREWIRE_SBP2
|
|||
|
||||
You should also enable support for disks, CD-ROMs, etc. in the SCSI
|
||||
configuration section.
|
||||
|
||||
config FIREWIRE_NET
|
||||
tristate "IP networking over 1394 (EXPERIMENTAL)"
|
||||
depends on FIREWIRE && INET && EXPERIMENTAL
|
||||
help
|
||||
This enables IPv4 over IEEE 1394, providing IP connectivity with
|
||||
other implementations of RFC 2734 as found on several operating
|
||||
systems. Multicast support is currently limited.
|
||||
|
||||
NOTE, this driver is not stable yet!
|
||||
|
||||
To compile this driver as a module, say M here: The module will be
|
||||
called firewire-net. It replaces eth1394 of the classic IEEE 1394
|
||||
stack.
|
||||
|
|
|
@ -6,7 +6,9 @@ firewire-core-y += core-card.o core-cdev.o core-device.o \
|
|||
core-iso.o core-topology.o core-transaction.o
|
||||
firewire-ohci-y += ohci.o
|
||||
firewire-sbp2-y += sbp2.o
|
||||
firewire-net-y += net.o
|
||||
|
||||
obj-$(CONFIG_FIREWIRE) += firewire-core.o
|
||||
obj-$(CONFIG_FIREWIRE) += firewire-core.o
|
||||
obj-$(CONFIG_FIREWIRE_OHCI) += firewire-ohci.o
|
||||
obj-$(CONFIG_FIREWIRE_SBP2) += firewire-sbp2.o
|
||||
obj-$(CONFIG_FIREWIRE_NET) += firewire-net.o
|
||||
|
|
|
@ -176,6 +176,7 @@ int fw_core_add_descriptor(struct fw_descriptor *desc)
|
|||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(fw_core_add_descriptor);
|
||||
|
||||
void fw_core_remove_descriptor(struct fw_descriptor *desc)
|
||||
{
|
||||
|
@ -189,6 +190,7 @@ void fw_core_remove_descriptor(struct fw_descriptor *desc)
|
|||
|
||||
mutex_unlock(&card_mutex);
|
||||
}
|
||||
EXPORT_SYMBOL(fw_core_remove_descriptor);
|
||||
|
||||
static void allocate_broadcast_channel(struct fw_card *card, int generation)
|
||||
{
|
||||
|
@ -459,11 +461,11 @@ EXPORT_SYMBOL(fw_card_add);
|
|||
|
||||
|
||||
/*
|
||||
* The next few functions implements a dummy driver that use once a
|
||||
* card driver shuts down an fw_card. This allows the driver to
|
||||
* cleanly unload, as all IO to the card will be handled by the dummy
|
||||
* driver instead of calling into the (possibly) unloaded module. The
|
||||
* dummy driver just fails all IO.
|
||||
* The next few functions implement a dummy driver that is used once a card
|
||||
* driver shuts down an fw_card. This allows the driver to cleanly unload,
|
||||
* as all IO to the card will be handled (and failed) by the dummy driver
|
||||
* instead of calling into the module. Only functions for iso context
|
||||
* shutdown still need to be provided by the card driver.
|
||||
*/
|
||||
|
||||
static int dummy_enable(struct fw_card *card, u32 *config_rom, size_t length)
|
||||
|
@ -510,7 +512,7 @@ static int dummy_enable_phys_dma(struct fw_card *card,
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
static struct fw_card_driver dummy_driver = {
|
||||
static const struct fw_card_driver dummy_driver_template = {
|
||||
.enable = dummy_enable,
|
||||
.update_phy_reg = dummy_update_phy_reg,
|
||||
.set_config_rom = dummy_set_config_rom,
|
||||
|
@ -529,6 +531,8 @@ void fw_card_release(struct kref *kref)
|
|||
|
||||
void fw_core_remove_card(struct fw_card *card)
|
||||
{
|
||||
struct fw_card_driver dummy_driver = dummy_driver_template;
|
||||
|
||||
card->driver->update_phy_reg(card, 4,
|
||||
PHY_LINK_ACTIVE | PHY_CONTENDER, 0);
|
||||
fw_core_initiate_bus_reset(card, 1);
|
||||
|
@ -537,7 +541,9 @@ void fw_core_remove_card(struct fw_card *card)
|
|||
list_del_init(&card->link);
|
||||
mutex_unlock(&card_mutex);
|
||||
|
||||
/* Set up the dummy driver. */
|
||||
/* Switch off most of the card driver interface. */
|
||||
dummy_driver.free_iso_context = card->driver->free_iso_context;
|
||||
dummy_driver.stop_iso = card->driver->stop_iso;
|
||||
card->driver = &dummy_driver;
|
||||
|
||||
fw_destroy_nodes(card);
|
||||
|
|
|
@ -71,7 +71,7 @@ int fw_iso_buffer_init(struct fw_iso_buffer *buffer, struct fw_card *card,
|
|||
for (j = 0; j < i; j++) {
|
||||
address = page_private(buffer->pages[j]);
|
||||
dma_unmap_page(card->device, address,
|
||||
PAGE_SIZE, DMA_TO_DEVICE);
|
||||
PAGE_SIZE, direction);
|
||||
__free_page(buffer->pages[j]);
|
||||
}
|
||||
kfree(buffer->pages);
|
||||
|
@ -80,6 +80,7 @@ int fw_iso_buffer_init(struct fw_iso_buffer *buffer, struct fw_card *card,
|
|||
|
||||
return -ENOMEM;
|
||||
}
|
||||
EXPORT_SYMBOL(fw_iso_buffer_init);
|
||||
|
||||
int fw_iso_buffer_map(struct fw_iso_buffer *buffer, struct vm_area_struct *vma)
|
||||
{
|
||||
|
@ -107,13 +108,14 @@ void fw_iso_buffer_destroy(struct fw_iso_buffer *buffer,
|
|||
for (i = 0; i < buffer->page_count; i++) {
|
||||
address = page_private(buffer->pages[i]);
|
||||
dma_unmap_page(card->device, address,
|
||||
PAGE_SIZE, DMA_TO_DEVICE);
|
||||
PAGE_SIZE, buffer->direction);
|
||||
__free_page(buffer->pages[i]);
|
||||
}
|
||||
|
||||
kfree(buffer->pages);
|
||||
buffer->pages = NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(fw_iso_buffer_destroy);
|
||||
|
||||
struct fw_iso_context *fw_iso_context_create(struct fw_card *card,
|
||||
int type, int channel, int speed, size_t header_size,
|
||||
|
@ -136,6 +138,7 @@ struct fw_iso_context *fw_iso_context_create(struct fw_card *card,
|
|||
|
||||
return ctx;
|
||||
}
|
||||
EXPORT_SYMBOL(fw_iso_context_create);
|
||||
|
||||
void fw_iso_context_destroy(struct fw_iso_context *ctx)
|
||||
{
|
||||
|
@ -143,12 +146,14 @@ void fw_iso_context_destroy(struct fw_iso_context *ctx)
|
|||
|
||||
card->driver->free_iso_context(ctx);
|
||||
}
|
||||
EXPORT_SYMBOL(fw_iso_context_destroy);
|
||||
|
||||
int fw_iso_context_start(struct fw_iso_context *ctx,
|
||||
int cycle, int sync, int tags)
|
||||
{
|
||||
return ctx->card->driver->start_iso(ctx, cycle, sync, tags);
|
||||
}
|
||||
EXPORT_SYMBOL(fw_iso_context_start);
|
||||
|
||||
int fw_iso_context_queue(struct fw_iso_context *ctx,
|
||||
struct fw_iso_packet *packet,
|
||||
|
@ -159,11 +164,13 @@ int fw_iso_context_queue(struct fw_iso_context *ctx,
|
|||
|
||||
return card->driver->queue_iso(ctx, packet, buffer, payload);
|
||||
}
|
||||
EXPORT_SYMBOL(fw_iso_context_queue);
|
||||
|
||||
int fw_iso_context_stop(struct fw_iso_context *ctx)
|
||||
{
|
||||
return ctx->card->driver->stop_iso(ctx);
|
||||
}
|
||||
EXPORT_SYMBOL(fw_iso_context_stop);
|
||||
|
||||
/*
|
||||
* Isochronous bus resource management (channels, bandwidth), client side
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#ifndef _FIREWIRE_CORE_H
|
||||
#define _FIREWIRE_CORE_H
|
||||
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/idr.h>
|
||||
|
@ -97,17 +96,6 @@ int fw_core_initiate_bus_reset(struct fw_card *card, int short_reset);
|
|||
int fw_compute_block_crc(u32 *block);
|
||||
void fw_schedule_bm_work(struct fw_card *card, unsigned long delay);
|
||||
|
||||
struct fw_descriptor {
|
||||
struct list_head link;
|
||||
size_t length;
|
||||
u32 immediate;
|
||||
u32 key;
|
||||
const u32 *data;
|
||||
};
|
||||
|
||||
int fw_core_add_descriptor(struct fw_descriptor *desc);
|
||||
void fw_core_remove_descriptor(struct fw_descriptor *desc);
|
||||
|
||||
|
||||
/* -cdev */
|
||||
|
||||
|
@ -130,77 +118,7 @@ void fw_node_event(struct fw_card *card, struct fw_node *node, int event);
|
|||
|
||||
/* -iso */
|
||||
|
||||
/*
|
||||
* The iso packet format allows for an immediate header/payload part
|
||||
* stored in 'header' immediately after the packet info plus an
|
||||
* indirect payload part that is pointer to by the 'payload' field.
|
||||
* Applications can use one or the other or both to implement simple
|
||||
* low-bandwidth streaming (e.g. audio) or more advanced
|
||||
* scatter-gather streaming (e.g. assembling video frame automatically).
|
||||
*/
|
||||
struct fw_iso_packet {
|
||||
u16 payload_length; /* Length of indirect payload. */
|
||||
u32 interrupt:1; /* Generate interrupt on this packet */
|
||||
u32 skip:1; /* Set to not send packet at all. */
|
||||
u32 tag:2;
|
||||
u32 sy:4;
|
||||
u32 header_length:8; /* Length of immediate header. */
|
||||
u32 header[0];
|
||||
};
|
||||
|
||||
#define FW_ISO_CONTEXT_TRANSMIT 0
|
||||
#define FW_ISO_CONTEXT_RECEIVE 1
|
||||
|
||||
#define FW_ISO_CONTEXT_MATCH_TAG0 1
|
||||
#define FW_ISO_CONTEXT_MATCH_TAG1 2
|
||||
#define FW_ISO_CONTEXT_MATCH_TAG2 4
|
||||
#define FW_ISO_CONTEXT_MATCH_TAG3 8
|
||||
#define FW_ISO_CONTEXT_MATCH_ALL_TAGS 15
|
||||
|
||||
/*
|
||||
* An iso buffer is just a set of pages mapped for DMA in the
|
||||
* specified direction. Since the pages are to be used for DMA, they
|
||||
* are not mapped into the kernel virtual address space. We store the
|
||||
* DMA address in the page private. The helper function
|
||||
* fw_iso_buffer_map() will map the pages into a given vma.
|
||||
*/
|
||||
struct fw_iso_buffer {
|
||||
enum dma_data_direction direction;
|
||||
struct page **pages;
|
||||
int page_count;
|
||||
};
|
||||
|
||||
typedef void (*fw_iso_callback_t)(struct fw_iso_context *context,
|
||||
u32 cycle, size_t header_length,
|
||||
void *header, void *data);
|
||||
|
||||
struct fw_iso_context {
|
||||
struct fw_card *card;
|
||||
int type;
|
||||
int channel;
|
||||
int speed;
|
||||
size_t header_size;
|
||||
fw_iso_callback_t callback;
|
||||
void *callback_data;
|
||||
};
|
||||
|
||||
int fw_iso_buffer_init(struct fw_iso_buffer *buffer, struct fw_card *card,
|
||||
int page_count, enum dma_data_direction direction);
|
||||
int fw_iso_buffer_map(struct fw_iso_buffer *buffer, struct vm_area_struct *vma);
|
||||
void fw_iso_buffer_destroy(struct fw_iso_buffer *buffer, struct fw_card *card);
|
||||
|
||||
struct fw_iso_context *fw_iso_context_create(struct fw_card *card,
|
||||
int type, int channel, int speed, size_t header_size,
|
||||
fw_iso_callback_t callback, void *callback_data);
|
||||
int fw_iso_context_queue(struct fw_iso_context *ctx,
|
||||
struct fw_iso_packet *packet,
|
||||
struct fw_iso_buffer *buffer,
|
||||
unsigned long payload);
|
||||
int fw_iso_context_start(struct fw_iso_context *ctx,
|
||||
int cycle, int sync, int tags);
|
||||
int fw_iso_context_stop(struct fw_iso_context *ctx);
|
||||
void fw_iso_context_destroy(struct fw_iso_context *ctx);
|
||||
|
||||
void fw_iso_resource_manage(struct fw_card *card, int generation,
|
||||
u64 channels_mask, int *channel, int *bandwidth, bool allocate);
|
||||
|
||||
|
@ -285,9 +203,4 @@ void fw_flush_transactions(struct fw_card *card);
|
|||
void fw_send_phy_config(struct fw_card *card,
|
||||
int node_id, int generation, int gap_count);
|
||||
|
||||
static inline int fw_stream_packet_destination_id(int tag, int channel, int sy)
|
||||
{
|
||||
return tag << 14 | channel << 8 | sy;
|
||||
}
|
||||
|
||||
#endif /* _FIREWIRE_CORE_H */
|
||||
|
|
1655
drivers/firewire/net.c
Normal file
1655
drivers/firewire/net.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -4,7 +4,7 @@ menu "IEEE 1394 (FireWire) support"
|
|||
source "drivers/firewire/Kconfig"
|
||||
|
||||
config IEEE1394
|
||||
tristate "Stable FireWire stack"
|
||||
tristate "Legacy alternative FireWire driver stack"
|
||||
depends on PCI || BROKEN
|
||||
help
|
||||
IEEE 1394 describes a high performance serial bus, which is also
|
||||
|
@ -33,11 +33,9 @@ config IEEE1394_OHCI1394
|
|||
module will be called ohci1394.
|
||||
|
||||
NOTE:
|
||||
|
||||
You should only build either ohci1394 or the new firewire-ohci driver,
|
||||
but not both. If you nevertheless want to install both, you should
|
||||
configure them only as modules and blacklist the driver(s) which you
|
||||
don't want to have auto-loaded. Add either
|
||||
If you want to install firewire-ohci and ohci1394 together, you
|
||||
should configure them only as modules and blacklist the driver(s)
|
||||
which you don't want to have auto-loaded. Add either
|
||||
|
||||
blacklist firewire-ohci
|
||||
or
|
||||
|
@ -46,12 +44,7 @@ config IEEE1394_OHCI1394
|
|||
blacklist dv1394
|
||||
|
||||
to /etc/modprobe.conf or /etc/modprobe.d/* and update modprobe.conf
|
||||
depending on your distribution. The latter two modules should be
|
||||
blacklisted together with ohci1394 because they depend on ohci1394.
|
||||
|
||||
If you have an old modprobe which doesn't implement the blacklist
|
||||
directive, use "install modulename /bin/true" for the modules to be
|
||||
blacklisted.
|
||||
depending on your distribution.
|
||||
|
||||
comment "PCILynx controller requires I2C"
|
||||
depends on IEEE1394 && I2C=n
|
||||
|
@ -105,7 +98,7 @@ config IEEE1394_ETH1394_ROM_ENTRY
|
|||
default n
|
||||
|
||||
config IEEE1394_ETH1394
|
||||
tristate "IP over 1394"
|
||||
tristate "IP networking over 1394 (experimental)"
|
||||
depends on IEEE1394 && EXPERIMENTAL && INET
|
||||
select IEEE1394_ETH1394_ROM_ENTRY
|
||||
help
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include <linux/completion.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/kref.h>
|
||||
#include <linux/list.h>
|
||||
|
@ -355,4 +356,90 @@ int fw_run_transaction(struct fw_card *card, int tcode, int destination_id,
|
|||
int generation, int speed, unsigned long long offset,
|
||||
void *payload, size_t length);
|
||||
|
||||
static inline int fw_stream_packet_destination_id(int tag, int channel, int sy)
|
||||
{
|
||||
return tag << 14 | channel << 8 | sy;
|
||||
}
|
||||
|
||||
struct fw_descriptor {
|
||||
struct list_head link;
|
||||
size_t length;
|
||||
u32 immediate;
|
||||
u32 key;
|
||||
const u32 *data;
|
||||
};
|
||||
|
||||
int fw_core_add_descriptor(struct fw_descriptor *desc);
|
||||
void fw_core_remove_descriptor(struct fw_descriptor *desc);
|
||||
|
||||
/*
|
||||
* The iso packet format allows for an immediate header/payload part
|
||||
* stored in 'header' immediately after the packet info plus an
|
||||
* indirect payload part that is pointer to by the 'payload' field.
|
||||
* Applications can use one or the other or both to implement simple
|
||||
* low-bandwidth streaming (e.g. audio) or more advanced
|
||||
* scatter-gather streaming (e.g. assembling video frame automatically).
|
||||
*/
|
||||
struct fw_iso_packet {
|
||||
u16 payload_length; /* Length of indirect payload. */
|
||||
u32 interrupt:1; /* Generate interrupt on this packet */
|
||||
u32 skip:1; /* Set to not send packet at all. */
|
||||
u32 tag:2;
|
||||
u32 sy:4;
|
||||
u32 header_length:8; /* Length of immediate header. */
|
||||
u32 header[0];
|
||||
};
|
||||
|
||||
#define FW_ISO_CONTEXT_TRANSMIT 0
|
||||
#define FW_ISO_CONTEXT_RECEIVE 1
|
||||
|
||||
#define FW_ISO_CONTEXT_MATCH_TAG0 1
|
||||
#define FW_ISO_CONTEXT_MATCH_TAG1 2
|
||||
#define FW_ISO_CONTEXT_MATCH_TAG2 4
|
||||
#define FW_ISO_CONTEXT_MATCH_TAG3 8
|
||||
#define FW_ISO_CONTEXT_MATCH_ALL_TAGS 15
|
||||
|
||||
/*
|
||||
* An iso buffer is just a set of pages mapped for DMA in the
|
||||
* specified direction. Since the pages are to be used for DMA, they
|
||||
* are not mapped into the kernel virtual address space. We store the
|
||||
* DMA address in the page private. The helper function
|
||||
* fw_iso_buffer_map() will map the pages into a given vma.
|
||||
*/
|
||||
struct fw_iso_buffer {
|
||||
enum dma_data_direction direction;
|
||||
struct page **pages;
|
||||
int page_count;
|
||||
};
|
||||
|
||||
int fw_iso_buffer_init(struct fw_iso_buffer *buffer, struct fw_card *card,
|
||||
int page_count, enum dma_data_direction direction);
|
||||
void fw_iso_buffer_destroy(struct fw_iso_buffer *buffer, struct fw_card *card);
|
||||
|
||||
struct fw_iso_context;
|
||||
typedef void (*fw_iso_callback_t)(struct fw_iso_context *context,
|
||||
u32 cycle, size_t header_length,
|
||||
void *header, void *data);
|
||||
struct fw_iso_context {
|
||||
struct fw_card *card;
|
||||
int type;
|
||||
int channel;
|
||||
int speed;
|
||||
size_t header_size;
|
||||
fw_iso_callback_t callback;
|
||||
void *callback_data;
|
||||
};
|
||||
|
||||
struct fw_iso_context *fw_iso_context_create(struct fw_card *card,
|
||||
int type, int channel, int speed, size_t header_size,
|
||||
fw_iso_callback_t callback, void *callback_data);
|
||||
int fw_iso_context_queue(struct fw_iso_context *ctx,
|
||||
struct fw_iso_packet *packet,
|
||||
struct fw_iso_buffer *buffer,
|
||||
unsigned long payload);
|
||||
int fw_iso_context_start(struct fw_iso_context *ctx,
|
||||
int cycle, int sync, int tags);
|
||||
int fw_iso_context_stop(struct fw_iso_context *ctx);
|
||||
void fw_iso_context_destroy(struct fw_iso_context *ctx);
|
||||
|
||||
#endif /* _LINUX_FIREWIRE_H */
|
||||
|
|
Loading…
Reference in a new issue