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