diff --git a/libraw1394-2.0.0-fix-channel_modify.patch b/libraw1394-2.0.0-fix-channel_modify.patch new file mode 100644 index 0000000..be35149 --- /dev/null +++ b/libraw1394-2.0.0-fix-channel_modify.patch @@ -0,0 +1,96 @@ +diff -Naurp libraw1394-2.0.0.orig/src/dispatch.c libraw1394-2.0.0.fix/src/dispatch.c +--- libraw1394-2.0.0.orig/src/dispatch.c 2008-12-05 11:37:36.686557198 -0500 ++++ libraw1394-2.0.0.fix/src/dispatch.c 2008-12-05 11:38:57.117432534 -0500 +@@ -553,10 +553,7 @@ int raw1394_channel_modify (raw1394handl + errno = EINVAL; + return -1; + } +- if (handle->is_fw) +- return fw_channel_modify(handle, channel, mode); +- else +- return ieee1394_channel_modify(handle, channel, mode); ++ return ieee1394_channel_modify(handle, channel, mode); + } + + int raw1394_iso_xmit_init(raw1394handle_t handle, +diff -Naurp libraw1394-2.0.0.orig/src/fw.c libraw1394-2.0.0.fix/src/fw.c +--- libraw1394-2.0.0.orig/src/fw.c 2008-12-05 11:37:36.689432892 -0500 ++++ libraw1394-2.0.0.fix/src/fw.c 2008-12-05 11:39:44.830509943 -0500 +@@ -1342,52 +1342,3 @@ fw_bandwidth_modify (raw1394handle_t han + + return 0; + } +- +-int +-fw_channel_modify (raw1394handle_t handle, +- unsigned int channel, +- enum raw1394_modify_mode mode) +-{ +- quadlet_t buffer, compare, swap, bit; +- nodeaddr_t addr; +- int result; +- +- if (channel >= 64) +- return -1; +- addr = CSR_REGISTER_BASE + +- CSR_CHANNELS_AVAILABLE_HI + 4 * (channel / 32); +- /* Read currently available channels from IRM. */ +- result = raw1394_read(handle, raw1394_get_irm_id (handle), addr, +- sizeof buffer, &buffer); +- if (result < 0) +- return -1; +- +- /* IEEE numbers bits from MSB (0) to LSB (31). */ +- bit = 1 << (31 - (channel & 31)); +- compare = ntohl(buffer); +- switch (mode) { +- case RAW1394_MODIFY_ALLOC: +- if ((compare & bit) == 0) +- return -1; +- swap = buffer & ~bit; +- break; +- +- case RAW1394_MODIFY_FREE: +- if ((buffer & bit) != 0) +- return -1; +- swap = buffer | bit; +- break; +- +- default: +- return -1; +- } +- +- result = raw1394_lock (handle, raw1394_get_irm_id (handle), addr, +- RAW1394_EXTCODE_COMPARE_SWAP, +- htonl(swap), htonl(compare), &buffer); +- +- if (result < 0 || ntohl(buffer) != compare) +- return -1; +- +- return 0; +-} +diff -Naurp libraw1394-2.0.0.orig/src/fw.h libraw1394-2.0.0.fix/src/fw.h +--- libraw1394-2.0.0.orig/src/fw.h 2008-07-05 16:16:30.000000000 -0400 ++++ libraw1394-2.0.0.fix/src/fw.h 2008-12-05 11:40:02.062495475 -0500 +@@ -214,9 +214,6 @@ int fw_get_config_rom(fw_handle_t handle + int fw_bandwidth_modify (raw1394handle_t handle, + unsigned int bandwidth, + enum raw1394_modify_mode mode); +-int fw_channel_modify (raw1394handle_t handle, +- unsigned int channel, +- enum raw1394_modify_mode mode); + + int fw_iso_xmit_start(raw1394handle_t handle, int start_on_cycle, + int prebuffer_packets); +diff -Naurp libraw1394-2.0.0.orig/src/raw1394.h libraw1394-2.0.0.fix/src/raw1394.h +--- libraw1394-2.0.0.orig/src/raw1394.h 2008-07-06 15:03:31.000000000 -0400 ++++ libraw1394-2.0.0.fix/src/raw1394.h 2008-12-05 11:39:23.582432381 -0500 +@@ -1203,7 +1203,7 @@ raw1394_bandwidth_modify (raw1394handle_ + enum raw1394_modify_mode mode); + + /** +- * raw1394_bandwidth_modify - allocate or release isochronous channel ++ * raw1394_channel_modify - allocate or release isochronous channel + * @handle: a libraw1394 handle + * @channel: isochronous channel + * @mode: whether to allocate or free