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