linux/arch/frv/include/asm/scatterlist.h
<<
>>
Prefs
   1#ifndef _ASM_SCATTERLIST_H
   2#define _ASM_SCATTERLIST_H
   3
   4#include <asm/types.h>
   5
   6/*
   7 * Drivers must set either ->address or (preferred) page and ->offset
   8 * to indicate where data must be transferred to/from.
   9 *
  10 * Using page is recommended since it handles highmem data as well as
  11 * low mem. ->address is restricted to data which has a virtual mapping, and
  12 * it will go away in the future. Updating to page can be automated very
  13 * easily -- something like
  14 *
  15 * sg->address = some_ptr;
  16 *
  17 * can be rewritten as
  18 *
  19 * sg_set_buf(sg, some_ptr, length);
  20 *
  21 * and that's it. There's no excuse for not highmem enabling YOUR driver. /jens
  22 */
  23struct scatterlist {
  24#ifdef CONFIG_DEBUG_SG
  25        unsigned long   sg_magic;
  26#endif
  27        unsigned long   page_link;
  28        unsigned int    offset;         /* for highmem, page offset */
  29
  30        dma_addr_t      dma_address;
  31        unsigned int    length;
  32};
  33
  34/*
  35 * These macros should be used after a pci_map_sg call has been done
  36 * to get bus addresses of each of the SG entries and their lengths.
  37 * You should only work with the number of sg entries pci_map_sg
  38 * returns, or alternatively stop on the first sg_dma_len(sg) which
  39 * is 0.
  40 */
  41#define sg_dma_address(sg)      ((sg)->dma_address)
  42#define sg_dma_len(sg)          ((sg)->length)
  43
  44#define ISA_DMA_THRESHOLD (0xffffffffUL)
  45
  46#endif /* !_ASM_SCATTERLIST_H */
  47