rpms/kernel/F-8 kernel.spec, 1.286, 1.287 linux-2.6-firewire-ohci-1.0-iso-receive.patch, 1.3, 1.4
Jarod Wilson (jwilson)
fedora-extras-commits at redhat.com
Mon Dec 3 18:07:25 UTC 2007
Author: jwilson
Update of /cvs/pkgs/rpms/kernel/F-8
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv25269
Modified Files:
kernel.spec linux-2.6-firewire-ohci-1.0-iso-receive.patch
Log Message:
* Mon Dec 03 2007 Jarod Wilson <jwilson at redhat.com>
- Fix FireWire OHCI 1.1 regression introduced by 1.0 support
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/kernel.spec,v
retrieving revision 1.286
retrieving revision 1.287
diff -u -r1.286 -r1.287
--- kernel.spec 1 Dec 2007 19:44:21 -0000 1.286
+++ kernel.spec 3 Dec 2007 18:06:50 -0000 1.287
@@ -1989,6 +1989,9 @@
%changelog
+* Mon Dec 03 2007 Jarod Wilson <jwilson at redhat.com>
+- Fix FireWire OHCI 1.1 regression introduced by 1.0 support
+
* Sat Dec 01 2007 John W. Linville <linville at redhat.com>
- Some wireless bits headed for 2.6.25
- Make ath5k use software WEP
linux-2.6-firewire-ohci-1.0-iso-receive.patch:
Index: linux-2.6-firewire-ohci-1.0-iso-receive.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/linux-2.6-firewire-ohci-1.0-iso-receive.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6-firewire-ohci-1.0-iso-receive.patch 30 Nov 2007 18:56:53 -0000 1.3
+++ linux-2.6-firewire-ohci-1.0-iso-receive.patch 3 Dec 2007 18:06:50 -0000 1.4
@@ -1,23 +1,29 @@
+diff -Naurp linux-2.6.23.noarch/drivers/firewire/fw-ohci.c linux-2.6.23.noarch.fw/drivers/firewire/fw-ohci.c
--- linux-2.6.23.noarch/drivers/firewire/fw-ohci.c 2007-10-09 16:31:38.000000000 -0400
-+++ linux-2.6.23.noarch.fw/drivers/firewire/fw-ohci.c 2007-11-30 13:56:02.000000000 -0500
-@@ -435,6 +435,16 @@ static void ar_context_run(struct ar_con
++++ linux-2.6.23.noarch.fw/drivers/firewire/fw-ohci.c 2007-12-03 09:40:47.000000000 -0500
+@@ -435,6 +435,21 @@ static void ar_context_run(struct ar_con
flush_writes(ctx->ohci);
}
+static struct descriptor *
+find_branch_descriptor(struct descriptor *d, int z)
+{
-+ if (z == 2 && (le16_to_cpu(d->control) & DESCRIPTOR_KEY_IMMEDIATE))
++ int b, key;
++
++ b = (le16_to_cpu(d->control) & DESCRIPTOR_BRANCH_ALWAYS) >> 2;
++ key = (le16_to_cpu(d->control) & DESCRIPTOR_KEY_IMMEDIATE) >> 8;
++
++ /* figure out which descriptor the branch address goes in */
++ if (z == 2 && (b == 3 || key == 2))
+ return d;
+ else
+ return d + z - 1;
-+
+}
+
static void context_tasklet(unsigned long data)
{
struct context *ctx = (struct context *) data;
-@@ -453,7 +463,7 @@ static void context_tasklet(unsigned lon
+@@ -453,7 +468,7 @@ static void context_tasklet(unsigned lon
address = le32_to_cpu(last->branch_address);
z = address & 0xf;
d = ctx->buffer + (address - ctx->buffer_bus) / sizeof(*d);
@@ -26,7 +32,7 @@
if (!ctx->callback(ctx, d, last))
break;
-@@ -564,7 +574,7 @@ static void context_append(struct contex
+@@ -564,7 +579,7 @@ static void context_append(struct contex
ctx->head_descriptor = d + z + extra;
ctx->prev_descriptor->branch_address = cpu_to_le32(d_bus | z);
@@ -35,7 +41,7 @@
dma_sync_single_for_device(ctx->ohci->card.device, ctx->buffer_bus,
ctx->buffer_size, DMA_TO_DEVICE);
-@@ -653,7 +663,7 @@ at_context_queue_packet(struct context *
+@@ -653,7 +668,7 @@ at_context_queue_packet(struct context *
driver_data = (struct driver_data *) &d[3];
driver_data->packet = packet;
packet->driver_data = driver_data;
@@ -44,7 +50,7 @@
if (packet->payload_length > 0) {
payload_bus =
dma_map_single(ohci->card.device, packet->payload,
-@@ -898,7 +908,7 @@ at_context_transmit(struct context *ctx,
+@@ -898,7 +913,7 @@ at_context_transmit(struct context *ctx,
if (retval < 0)
packet->callback(packet, &ctx->ohci->card, packet->ack);
@@ -53,7 +59,7 @@
}
static void bus_reset_tasklet(unsigned long data)
-@@ -1403,6 +1413,57 @@ static int handle_ir_dualbuffer_packet(s
+@@ -1403,6 +1418,57 @@ static int handle_ir_dualbuffer_packet(s
return 1;
}
@@ -111,7 +117,7 @@
static int handle_it_packet(struct context *context,
struct descriptor *d,
struct descriptor *last)
-@@ -1438,14 +1499,12 @@ ohci_allocate_iso_context(struct fw_card
+@@ -1438,14 +1504,12 @@ ohci_allocate_iso_context(struct fw_card
} else {
mask = &ohci->ir_context_mask;
list = ohci->ir_context_list;
@@ -130,7 +136,7 @@
spin_lock_irqsave(&ohci->lock, flags);
index = ffs(*mask) - 1;
if (index >= 0)
-@@ -1504,7 +1563,9 @@ static int ohci_start_iso(struct fw_iso_
+@@ -1504,7 +1568,9 @@ static int ohci_start_iso(struct fw_iso_
context_run(&ctx->context, match);
} else {
index = ctx - ohci->ir_context_list;
@@ -141,7 +147,7 @@
match = (tags << 28) | (sync << 8) | ctx->base.channel;
if (cycle >= 0) {
match |= (cycle & 0x07fff) << 12;
-@@ -1710,7 +1771,6 @@ ohci_queue_iso_receive_dualbuffer(struct
+@@ -1710,7 +1776,6 @@ ohci_queue_iso_receive_dualbuffer(struct
offset = payload & ~PAGE_MASK;
rest = p->payload_length;
@@ -149,7 +155,7 @@
/* FIXME: make packet-per-buffer/dual-buffer a context option */
while (rest > 0) {
d = context_get_descriptors(&ctx->context,
-@@ -1749,6 +1809,81 @@ ohci_queue_iso_receive_dualbuffer(struct
+@@ -1749,6 +1814,81 @@ ohci_queue_iso_receive_dualbuffer(struct
}
static int
@@ -231,7 +237,7 @@
ohci_queue_iso(struct fw_iso_context *base,
struct fw_iso_packet *packet,
struct fw_iso_buffer *buffer,
-@@ -1762,8 +1897,9 @@ ohci_queue_iso(struct fw_iso_context *ba
+@@ -1762,8 +1902,9 @@ ohci_queue_iso(struct fw_iso_context *ba
return ohci_queue_iso_receive_dualbuffer(base, packet,
buffer, payload);
else
More information about the fedora-extras-commits
mailing list