home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-sparc64 / ebus.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.7 KB  |  99 lines

  1. /* $Id: ebus.h,v 1.10 2001/03/14 05:00:55 davem Exp $
  2.  * ebus.h: PCI to Ebus pseudo driver software state.
  3.  *
  4.  * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be)
  5.  * Copyright (C) 1999 David S. Miller (davem@redhat.com)
  6.  */
  7.  
  8. #ifndef __SPARC64_EBUS_H
  9. #define __SPARC64_EBUS_H
  10.  
  11. #include <asm/pbm.h>
  12. #include <asm/oplib.h>
  13.  
  14. struct linux_ebus_child {
  15.     struct linux_ebus_child        *next;
  16.     struct linux_ebus_device    *parent;
  17.     struct linux_ebus        *bus;
  18.     int                 prom_node;
  19.     char                 prom_name[64];
  20.     struct resource             resource[PROMREG_MAX];
  21.     int                 num_addrs;
  22.     unsigned int             irqs[PROMINTR_MAX];
  23.     int                 num_irqs;
  24. };
  25.  
  26. struct linux_ebus_device {
  27.     struct linux_ebus_device    *next;
  28.     struct linux_ebus_child        *children;
  29.     struct linux_ebus        *bus;
  30.     int                 prom_node;
  31.     char                 prom_name[64];
  32.     struct resource             resource[PROMREG_MAX];
  33.     int                 num_addrs;
  34.     unsigned int             irqs[PROMINTR_MAX];
  35.     int                 num_irqs;
  36. };
  37.  
  38. struct linux_ebus {
  39.     struct linux_ebus        *next;
  40.     struct linux_ebus_device    *devices;
  41.     struct pci_pbm_info        *parent;
  42.     struct pci_dev            *self;
  43.     int                 index;
  44.     int                 is_rio;
  45.     int                 prom_node;
  46.     char                 prom_name[64];
  47.     struct linux_prom_ebus_ranges     ebus_ranges[PROMREG_MAX];
  48.     int                 num_ebus_ranges;
  49.     struct linux_prom_ebus_intmap     ebus_intmap[PROMREG_MAX];
  50.     int                 num_ebus_intmap;
  51.     struct linux_prom_ebus_intmask     ebus_intmask;
  52. };
  53.  
  54. struct ebus_dma_info {
  55.     spinlock_t    lock;
  56.     void __iomem    *regs;
  57.  
  58.     unsigned int    flags;
  59. #define EBUS_DMA_FLAG_USE_EBDMA_HANDLER        0x00000001
  60. #define EBUS_DMA_FLAG_TCI_DISABLE        0x00000002
  61.  
  62.     /* These are only valid is EBUS_DMA_FLAG_USE_EBDMA_HANDLER is
  63.      * set.
  64.      */
  65.     void (*callback)(struct ebus_dma_info *p, int event, void *cookie);
  66.     void *client_cookie;
  67.     unsigned int    irq;
  68. #define EBUS_DMA_EVENT_ERROR    1
  69. #define EBUS_DMA_EVENT_DMA    2
  70. #define EBUS_DMA_EVENT_DEVICE    4
  71.  
  72.     unsigned char    name[64];
  73. };
  74.  
  75. extern int ebus_dma_register(struct ebus_dma_info *p);
  76. extern int ebus_dma_irq_enable(struct ebus_dma_info *p, int on);
  77. extern void ebus_dma_unregister(struct ebus_dma_info *p);
  78. extern int ebus_dma_request(struct ebus_dma_info *p, dma_addr_t bus_addr,
  79.                 size_t len);
  80. extern void ebus_dma_prepare(struct ebus_dma_info *p, int write);
  81. extern unsigned int ebus_dma_residue(struct ebus_dma_info *p);
  82. extern unsigned int ebus_dma_addr(struct ebus_dma_info *p);
  83. extern void ebus_dma_enable(struct ebus_dma_info *p, int on);
  84.  
  85. extern struct linux_ebus        *ebus_chain;
  86.  
  87. extern void ebus_init(void);
  88.  
  89. #define for_each_ebus(bus)                        \
  90.         for((bus) = ebus_chain; (bus); (bus) = (bus)->next)
  91.  
  92. #define for_each_ebusdev(dev, bus)                    \
  93.         for((dev) = (bus)->devices; (dev); (dev) = (dev)->next)
  94.  
  95. #define for_each_edevchild(dev, child)                    \
  96.         for((child) = (dev)->children; (child); (child) = (child)->next)
  97.  
  98. #endif /* !(__SPARC64_EBUS_H) */
  99.