1 /*
2  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
3  * Use is subject to license terms.
4  */
5 
6 #ifndef	_SYS_DDI_OBSOLETE_H
7 #define	_SYS_DDI_OBSOLETE_H
8 
9 /*
10  * Obsoleted DDI Interfaces
11  */
12 
13 #include <sys/types.h>
14 #include <sys/dditypes.h>
15 #include <sys/sunldi.h>
16 
17 
18 #ifdef	__cplusplus
19 extern "C" {
20 #endif
21 
22 
23 /*
24  * The following are intentionally outside of _DDI_STRICT, they are obsolete
25  * and shouldn't be used by drivers, but are still used in the consolidation.
26  * e.g. DDI implementation.
27  */
28 int ddi_iomin(dev_info_t *dip, int initial, int streaming);
29 
30 
31 #ifndef	_DDI_STRICT
32 
33 extern long strtol(const char *, char **, int);
34 extern unsigned long strtoul(const char *, char **, int);
35 
36 int ddi_dma_setup(dev_info_t *dip, struct ddi_dma_req *dmareqp,
37     ddi_dma_handle_t *handlep);
38 int ddi_dma_addr_setup(dev_info_t *dip, struct as *as, caddr_t addr, size_t len,
39     uint_t flags, int (*waitfp)(), caddr_t arg, ddi_dma_lim_t *limits,
40     ddi_dma_handle_t *handlep);
41 int ddi_dma_buf_setup(dev_info_t *dip, struct buf *bp, uint_t flags,
42     int (*waitfp)(), caddr_t arg, ddi_dma_lim_t *limits,
43     ddi_dma_handle_t *handlep);
44 int ddi_dma_kvaddrp(ddi_dma_handle_t, off_t, size_t, caddr_t *);
45 int ddi_dma_htoc(ddi_dma_handle_t handle, off_t off, ddi_dma_cookie_t *cookiep);
46 int ddi_dma_coff(ddi_dma_handle_t handle, ddi_dma_cookie_t *cookiep,
47     off_t *offp);
48 int ddi_dma_curwin(ddi_dma_handle_t handle, off_t *offp, size_t *lenp);
49 int ddi_dma_nextwin(ddi_dma_handle_t, ddi_dma_win_t, ddi_dma_win_t *);
50 int ddi_dma_nextseg(ddi_dma_win_t, ddi_dma_seg_t, ddi_dma_seg_t *);
51 int ddi_dma_segtocookie(ddi_dma_seg_t, off_t *, off_t *, ddi_dma_cookie_t *);
52 int ddi_dma_free(ddi_dma_handle_t handle);
53 int ddi_iopb_alloc(dev_info_t *dip, ddi_dma_lim_t *limits, uint_t length,
54     caddr_t *iopbp);
55 void ddi_iopb_free(caddr_t iopb);
56 int ddi_mem_alloc(dev_info_t *dip, ddi_dma_lim_t *limits, uint_t length,
57     uint_t flags, caddr_t *kaddrp, uint_t *real_length);
58 void ddi_mem_free(caddr_t kaddr);
59 int ddi_dma_get_attr(ddi_dma_handle_t handle, ddi_dma_attr_t *attrp);
60 int ddi_dma_devalign(ddi_dma_handle_t handle, uint_t *alignment,
61     uint_t *mineffect);
62 void ddi_dmalim_merge(ddi_dma_lim_t *limit, ddi_dma_lim_t *modifier);
63 
64 #if defined(__sparc)
65 int ddi_dma_movwin(ddi_dma_handle_t, off_t *offp, size_t *lenp,
66     ddi_dma_cookie_t *);
67 #endif
68 
69 uint8_t ddi_mem_get8(ddi_acc_handle_t handle, uint8_t *host_addr);
70 uint16_t ddi_mem_get16(ddi_acc_handle_t handle, uint16_t *host_addr);
71 uint32_t ddi_mem_get32(ddi_acc_handle_t handle, uint32_t *host_addr);
72 uint64_t ddi_mem_get64(ddi_acc_handle_t handle, uint64_t *host_addr);
73 void ddi_mem_put8(ddi_acc_handle_t handle, uint8_t *dev_addr, uint8_t value);
74 void ddi_mem_put16(ddi_acc_handle_t handle, uint16_t *dev_addr, uint16_t value);
75 void ddi_mem_put32(ddi_acc_handle_t handle, uint32_t *dev_addr, uint32_t value);
76 void ddi_mem_put64(ddi_acc_handle_t handle, uint64_t *dev_addr, uint64_t value);
77 
78 void ddi_mem_rep_get8(ddi_acc_handle_t handle, uint8_t *host_addr,
79     uint8_t *dev_addr, size_t repcount, uint_t flags);
80 void ddi_mem_rep_get16(ddi_acc_handle_t handle, uint16_t *host_addr,
81     uint16_t *dev_addr, size_t repcount, uint_t flags);
82 void ddi_mem_rep_get32(ddi_acc_handle_t handle, uint32_t *host_addr,
83     uint32_t *dev_addr, size_t repcount, uint_t flags);
84 void ddi_mem_rep_get64(ddi_acc_handle_t handle, uint64_t *host_addr,
85     uint64_t *dev_addr, size_t repcount, uint_t flags);
86 void ddi_mem_rep_put8(ddi_acc_handle_t handle, uint8_t *host_addr,
87     uint8_t *dev_addr, size_t repcount, uint_t flags);
88 void ddi_mem_rep_put16(ddi_acc_handle_t handle, uint16_t *host_addr,
89     uint16_t *dev_addr, size_t repcount, uint_t flags);
90 void ddi_mem_rep_put32(ddi_acc_handle_t handle, uint32_t *host_addr,
91     uint32_t *dev_addr, size_t repcount, uint_t flags);
92 void ddi_mem_rep_put64(ddi_acc_handle_t handle, uint64_t *host_addr,
93     uint64_t *dev_addr, size_t repcount, uint_t flags);
94 
95 uint8_t ddi_io_get8(ddi_acc_handle_t handle, uint8_t *dev_addr);
96 uint16_t ddi_io_get16(ddi_acc_handle_t handle, uint16_t *dev_addr);
97 uint32_t ddi_io_get32(ddi_acc_handle_t handle, uint32_t *dev_addr);
98 void ddi_io_put8(ddi_acc_handle_t handle, uint8_t *dev_addr, uint8_t value);
99 void ddi_io_put16(ddi_acc_handle_t handle, uint16_t *dev_addr, uint16_t value);
100 void ddi_io_put32(ddi_acc_handle_t handle, uint32_t *dev_addr, uint32_t value);
101 
102 void ddi_io_rep_get8(ddi_acc_handle_t handle,
103     uint8_t *host_addr, uint8_t *dev_addr, size_t repcount);
104 void ddi_io_rep_get16(ddi_acc_handle_t handle,
105     uint16_t *host_addr, uint16_t *dev_addr, size_t repcount);
106 void ddi_io_rep_get32(ddi_acc_handle_t handle,
107     uint32_t *host_addr, uint32_t *dev_addr, size_t repcount);
108 void ddi_io_rep_put8(ddi_acc_handle_t handle,
109     uint8_t *host_addr, uint8_t *dev_addr, size_t repcount);
110 void ddi_io_rep_put16(ddi_acc_handle_t handle,
111     uint16_t *host_addr, uint16_t *dev_addr, size_t repcount);
112 void ddi_io_rep_put32(ddi_acc_handle_t handle,
113     uint32_t *host_addr, uint32_t *dev_addr, size_t repcount);
114 
115 /* only support older interfaces on 32-bit systems */
116 #ifdef _ILP32
117 #define	ddi_mem_getb		ddi_mem_get8
118 #define	ddi_mem_getw		ddi_mem_get16
119 #define	ddi_mem_getl		ddi_mem_get32
120 #define	ddi_mem_getll		ddi_mem_get64
121 #define	ddi_mem_rep_getb	ddi_mem_rep_get8
122 #define	ddi_mem_rep_getw	ddi_mem_rep_get16
123 #define	ddi_mem_rep_getl	ddi_mem_rep_get32
124 #define	ddi_mem_rep_getll	ddi_mem_rep_get64
125 #define	ddi_mem_putb		ddi_mem_put8
126 #define	ddi_mem_putw		ddi_mem_put16
127 #define	ddi_mem_putl		ddi_mem_put32
128 #define	ddi_mem_putll		ddi_mem_put64
129 #define	ddi_mem_rep_putb	ddi_mem_rep_put8
130 #define	ddi_mem_rep_putw	ddi_mem_rep_put16
131 #define	ddi_mem_rep_putl	ddi_mem_rep_put32
132 #define	ddi_mem_rep_putll	ddi_mem_rep_put64
133 #define	ddi_io_getb		ddi_io_get8
134 #define	ddi_io_getw		ddi_io_get16
135 #define	ddi_io_getl		ddi_io_get32
136 #define	ddi_io_putb		ddi_io_put8
137 #define	ddi_io_putw		ddi_io_put16
138 #define	ddi_io_putl		ddi_io_put32
139 #define	ddi_getb		ddi_get8
140 #define	ddi_getw		ddi_get16
141 #define	ddi_getl		ddi_get32
142 #define	ddi_getll		ddi_get64
143 #define	ddi_rep_getb		ddi_rep_get8
144 #define	ddi_rep_getw		ddi_rep_get16
145 #define	ddi_rep_getl		ddi_rep_get32
146 #define	ddi_rep_getll		ddi_rep_get64
147 #define	ddi_putb		ddi_put8
148 #define	ddi_putw		ddi_put16
149 #define	ddi_putl		ddi_put32
150 #define	ddi_putll		ddi_put64
151 #define	ddi_rep_putb		ddi_rep_put8
152 #define	ddi_rep_putw		ddi_rep_put16
153 #define	ddi_rep_putl		ddi_rep_put32
154 #define	ddi_rep_putll		ddi_rep_put64
155 
156 /* These can't be define's since they're not asm routines */
157 void ddi_io_rep_getb(ddi_acc_handle_t handle, uint8_t *host_addr,
158     uint8_t *dev_addr, size_t repcount);
159 void ddi_io_rep_getw(ddi_acc_handle_t handle, uint16_t *host_addr,
160     uint16_t *dev_addr, size_t repcount);
161 void ddi_io_rep_getl(ddi_acc_handle_t handle, uint32_t *host_addr,
162     uint32_t *dev_addr, size_t repcount);
163 void ddi_io_rep_putb(ddi_acc_handle_t handle, uint8_t *host_addr,
164     uint8_t *dev_addr, size_t repcount);
165 void ddi_io_rep_putw(ddi_acc_handle_t handle, uint16_t *host_addr,
166     uint16_t *dev_addr, size_t repcount);
167 void ddi_io_rep_putl(ddi_acc_handle_t handle, uint32_t *host_addr,
168     uint32_t *dev_addr, size_t repcount);
169 
170 int ddi_peekc(dev_info_t *dip, int8_t *addr, int8_t *val_p);
171 int ddi_peeks(dev_info_t *dip, int16_t *addr, int16_t *val_p);
172 int ddi_peekl(dev_info_t *dip, int32_t *addr, int32_t *val_p);
173 int ddi_peekd(dev_info_t *dip, int64_t *addr, int64_t *val_p);
174 int ddi_pokec(dev_info_t *dip, int8_t *addr, int8_t val);
175 int ddi_pokes(dev_info_t *dip, int16_t *addr, int16_t val);
176 int ddi_pokel(dev_info_t *dip, int32_t *addr, int32_t val);
177 int ddi_poked(dev_info_t *dip, int64_t *addr, int64_t val);
178 
179 uint8_t pci_config_getb(ddi_acc_handle_t handle, off_t offset);
180 uint16_t pci_config_getw(ddi_acc_handle_t handle, off_t offset);
181 uint32_t pci_config_getl(ddi_acc_handle_t handle, off_t offset);
182 uint64_t pci_config_getll(ddi_acc_handle_t handle, off_t offset);
183 void pci_config_putb(ddi_acc_handle_t handle, off_t offset, uint8_t value);
184 void pci_config_putw(ddi_acc_handle_t handle, off_t offset, uint16_t value);
185 void pci_config_putl(ddi_acc_handle_t handle, off_t offset, uint32_t value);
186 void pci_config_putll(ddi_acc_handle_t handle, off_t offset, uint64_t value);
187 
188 extern void repinsb(int port, uint8_t *addr, int count);
189 extern void repinsw(int port, uint16_t *addr, int count);
190 extern void repinsd(int port, uint32_t *addr, int count);
191 extern void repoutsb(int port, uint8_t *addr, int count);
192 extern void repoutsw(int port, uint16_t *addr, int count);
193 extern void repoutsd(int port, uint32_t *addr, int count);
194 #endif
195 
196 /* Obsolete LDI event interfaces */
197 extern int ldi_get_eventcookie(ldi_handle_t, char *,
198     ddi_eventcookie_t *);
199 extern int ldi_add_event_handler(ldi_handle_t, ddi_eventcookie_t,
200     void (*handler)(ldi_handle_t, ddi_eventcookie_t, void *, void *),
201     void *, ldi_callback_id_t *);
202 extern int ldi_remove_event_handler(ldi_handle_t, ldi_callback_id_t);
203 
204 
205 #endif /* not _DDI_STRICT */
206 
207 #ifdef	__cplusplus
208 }
209 #endif
210 
211 #endif	/* _SYS_DDI_OBSOLETE_H */
212