Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dma-mapping: split dma_unmap_page() from dma_unmap_single()

We will need to treat dma_unmap_page() differently from dma_unmap_single()

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Tested-By: Jamie Iles <jamie@jamieiles.com>

+23 -6
+18 -3
arch/arm/common/dmabounce.c
··· 342 342 } 343 343 EXPORT_SYMBOL(dma_map_single); 344 344 345 + /* 346 + * see if a mapped address was really a "safe" buffer and if so, copy 347 + * the data from the safe buffer back to the unsafe buffer and free up 348 + * the safe buffer. (basically return things back to the way they 349 + * should be) 350 + */ 351 + void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, 352 + enum dma_data_direction dir) 353 + { 354 + dev_dbg(dev, "%s(ptr=%p,size=%d,dir=%x)\n", 355 + __func__, (void *) dma_addr, size, dir); 356 + 357 + unmap_single(dev, dma_addr, size, dir); 358 + } 359 + EXPORT_SYMBOL(dma_unmap_single); 360 + 345 361 dma_addr_t dma_map_page(struct device *dev, struct page *page, 346 362 unsigned long offset, size_t size, enum dma_data_direction dir) 347 363 { ··· 382 366 * the safe buffer. (basically return things back to the way they 383 367 * should be) 384 368 */ 385 - 386 - void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, 369 + void dma_unmap_page(struct device *dev, dma_addr_t dma_addr, size_t size, 387 370 enum dma_data_direction dir) 388 371 { 389 372 dev_dbg(dev, "%s(ptr=%p,size=%d,dir=%x)\n", ··· 390 375 391 376 unmap_single(dev, dma_addr, size, dir); 392 377 } 393 - EXPORT_SYMBOL(dma_unmap_single); 378 + EXPORT_SYMBOL(dma_unmap_page); 394 379 395 380 int dmabounce_sync_for_cpu(struct device *dev, dma_addr_t addr, 396 381 unsigned long off, size_t sz, enum dma_data_direction dir)
+5 -3
arch/arm/include/asm/dma-mapping.h
··· 257 257 */ 258 258 extern dma_addr_t dma_map_single(struct device *, void *, size_t, 259 259 enum dma_data_direction); 260 + extern void dma_unmap_single(struct device *, dma_addr_t, size_t, 261 + enum dma_data_direction); 260 262 extern dma_addr_t dma_map_page(struct device *, struct page *, 261 263 unsigned long, size_t, enum dma_data_direction); 262 - extern void dma_unmap_single(struct device *, dma_addr_t, size_t, 264 + extern void dma_unmap_page(struct device *, dma_addr_t, size_t, 263 265 enum dma_data_direction); 264 266 265 267 /* ··· 354 352 { 355 353 /* nothing to do */ 356 354 } 357 - #endif /* CONFIG_DMABOUNCE */ 358 355 359 356 /** 360 357 * dma_unmap_page - unmap a buffer previously mapped through dma_map_page() ··· 372 371 static inline void dma_unmap_page(struct device *dev, dma_addr_t handle, 373 372 size_t size, enum dma_data_direction dir) 374 373 { 375 - dma_unmap_single(dev, handle, size, dir); 374 + /* nothing to do */ 376 375 } 376 + #endif /* CONFIG_DMABOUNCE */ 377 377 378 378 /** 379 379 * dma_sync_single_range_for_cpu