Blame view

include/asm-sparc/ebus.h 2.77 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  /* $Id: ebus.h,v 1.2 1999/09/11 23:05:55 zaitcev Exp $
   * ebus.h: PCI to Ebus pseudo driver software state.
   *
   * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) 
   *
   * Adopted for sparc by V. Roganov and G. Raiko.
   */
  
  #ifndef __SPARC_EBUS_H
  #define __SPARC_EBUS_H
  
  #ifndef _LINUX_IOPORT_H
  #include <linux/ioport.h>
  #endif
  #include <asm/oplib.h>
942a6bdd1   David S. Miller   [SPARC]: Port spa...
16
  #include <asm/prom.h>
fd5314311   David S. Miller   [SPARC]: Port of_...
17
  #include <asm/of_device.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
18
19
20
21
22
  
  struct linux_ebus_child {
  	struct linux_ebus_child		*next;
  	struct linux_ebus_device	*parent;
  	struct linux_ebus		*bus;
942a6bdd1   David S. Miller   [SPARC]: Port spa...
23
  	struct device_node		*prom_node;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
24
25
26
27
28
29
30
  	struct resource			 resource[PROMREG_MAX];
  	int				 num_addrs;
  	unsigned int			 irqs[PROMINTR_MAX];
  	int				 num_irqs;
  };
  
  struct linux_ebus_device {
fd5314311   David S. Miller   [SPARC]: Port of_...
31
  	struct of_device		ofdev;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
32
33
34
  	struct linux_ebus_device	*next;
  	struct linux_ebus_child		*children;
  	struct linux_ebus		*bus;
942a6bdd1   David S. Miller   [SPARC]: Port spa...
35
  	struct device_node		*prom_node;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
36
37
38
39
40
  	struct resource			 resource[PROMREG_MAX];
  	int				 num_addrs;
  	unsigned int			 irqs[PROMINTR_MAX];
  	int				 num_irqs;
  };
fd5314311   David S. Miller   [SPARC]: Port of_...
41
  #define to_ebus_device(d) container_of(d, struct linux_ebus_device, ofdev.dev)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
42
43
  
  struct linux_ebus {
fd5314311   David S. Miller   [SPARC]: Port of_...
44
  	struct of_device		ofdev;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
45
46
47
48
  	struct linux_ebus		*next;
  	struct linux_ebus_device	*devices;
  	struct linux_pbm_info		*parent;
  	struct pci_dev			*self;
942a6bdd1   David S. Miller   [SPARC]: Port spa...
49
  	struct device_node		*prom_node;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
50
  };
fd5314311   David S. Miller   [SPARC]: Port of_...
51
  #define to_ebus(d) container_of(d, struct linux_ebus, ofdev.dev)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
  
  struct linux_ebus_dma {
  	unsigned int dcsr;
  	unsigned int dacr;
  	unsigned int dbcr;
  };
  
  #define EBUS_DCSR_INT_PEND	0x00000001
  #define EBUS_DCSR_ERR_PEND	0x00000002
  #define EBUS_DCSR_DRAIN		0x00000004
  #define EBUS_DCSR_INT_EN	0x00000010
  #define EBUS_DCSR_RESET		0x00000080
  #define EBUS_DCSR_WRITE		0x00000100
  #define EBUS_DCSR_EN_DMA	0x00000200
  #define EBUS_DCSR_CYC_PEND	0x00000400
  #define EBUS_DCSR_DIAG_RD_DONE	0x00000800
  #define EBUS_DCSR_DIAG_WR_DONE	0x00001000
  #define EBUS_DCSR_EN_CNT	0x00002000
  #define EBUS_DCSR_TC		0x00004000
  #define EBUS_DCSR_DIS_CSR_DRN	0x00010000
  #define EBUS_DCSR_BURST_SZ_MASK	0x000c0000
  #define EBUS_DCSR_BURST_SZ_1	0x00080000
  #define EBUS_DCSR_BURST_SZ_4	0x00000000
  #define EBUS_DCSR_BURST_SZ_8	0x00040000
  #define EBUS_DCSR_BURST_SZ_16	0x000c0000
  #define EBUS_DCSR_DIAG_EN	0x00100000
  #define EBUS_DCSR_DIS_ERR_PEND	0x00400000
  #define EBUS_DCSR_TCI_DIS	0x00800000
  #define EBUS_DCSR_EN_NEXT	0x01000000
  #define EBUS_DCSR_DMA_ON	0x02000000
  #define EBUS_DCSR_A_LOADED	0x04000000
  #define EBUS_DCSR_NA_LOADED	0x08000000
  #define EBUS_DCSR_DEV_ID_MASK	0xf0000000
  
  extern struct linux_ebus		*ebus_chain;
  
  extern void ebus_init(void);
  
  #define for_each_ebus(bus)						\
          for((bus) = ebus_chain; (bus); (bus) = (bus)->next)
  
  #define for_each_ebusdev(dev, bus)					\
          for((dev) = (bus)->devices; (dev); (dev) = (dev)->next)
  
  #define for_each_edevchild(dev, child)					\
          for((child) = (dev)->children; (child); (child) = (child)->next)
  
  #endif /* !(__SPARC_EBUS_H) */