Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Sep 2010 23:00:21 +0000 (UTC)
From:      Weongyo Jeong <weongyo@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r212936 - user/weongyo/usb/sys/dev/usb
Message-ID:  <201009202300.o8KN0LSK070581@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: weongyo
Date: Mon Sep 20 23:00:21 2010
New Revision: 212936
URL: http://svn.freebsd.org/changeset/base/212936

Log:
  If the number of DMA segments are over 1 we needs to store the physical
  address for further use though usb_pc_common_mem_cb() only supports 1
  segment now.

Modified:
  user/weongyo/usb/sys/dev/usb/usb_busdma.c

Modified: user/weongyo/usb/sys/dev/usb/usb_busdma.c
==============================================================================
--- user/weongyo/usb/sys/dev/usb/usb_busdma.c	Mon Sep 20 22:57:42 2010	(r212935)
+++ user/weongyo/usb/sys/dev/usb/usb_busdma.c	Mon Sep 20 23:00:21 2010	(r212936)
@@ -418,6 +418,7 @@ usb_pc_common_mem_cb(void *arg, bus_dma_
 	struct usb_page_cache *pc;
 	struct usb_page *pg;
 	usb_size_t rem;
+	int i;
 
 	pc = arg;
 	uptag = pc->tag_parent;
@@ -444,6 +445,8 @@ usb_pc_common_mem_cb(void *arg, bus_dma_
 		goto done;
 	}
 #endif
+	for (i = 1; i < nseg; i++)
+		pg[i].physaddr = segs[i].ds_addr & ~(USB_PAGE_SIZE - 1);
 done:
 	uptag->dma_error = (error ? 1 : 0);
 	if (isload)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201009202300.o8KN0LSK070581>