1 /****************************************************************************** 2 * 3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms of version 2 of the GNU General Public License as 7 * published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 * 14 * You should have received a copy of the GNU General Public License along with 15 * this program; if not, write to the Free Software Foundation, Inc., 16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA 17 * 18 * 19 ******************************************************************************/ 20 21 #ifndef _RTW_IO_H_ 22 #define _RTW_IO_H_ 23 24 #define NUM_IOREQ 8 25 26 #ifdef PLATFORM_WINDOWS 27 #define MAX_PROT_SZ 64 28 #endif 29 #ifdef PLATFORM_LINUX 30 #define MAX_PROT_SZ (64-16) 31 #endif 32 33 #define _IOREADY 0 34 #define _IO_WAIT_COMPLETE 1 35 #define _IO_WAIT_RSP 2 36 37 /* IO COMMAND TYPE */ 38 #define _IOSZ_MASK_ (0x7F) 39 #define _IO_WRITE_ BIT(7) 40 #define _IO_FIXED_ BIT(8) 41 #define _IO_BURST_ BIT(9) 42 #define _IO_BYTE_ BIT(10) 43 #define _IO_HW_ BIT(11) 44 #define _IO_WORD_ BIT(12) 45 #define _IO_SYNC_ BIT(13) 46 #define _IO_CMDMASK_ (0x1F80) 47 48 49 /* 50 For prompt mode accessing, caller shall free io_req 51 Otherwise, io_handler will free io_req 52 */ 53 54 55 56 /* IO STATUS TYPE */ 57 #define _IO_ERR_ BIT(2) 58 #define _IO_SUCCESS_ BIT(1) 59 #define _IO_DONE_ BIT(0) 60 61 62 #define IO_RD32 (_IO_SYNC_ | _IO_WORD_) 63 #define IO_RD16 (_IO_SYNC_ | _IO_HW_) 64 #define IO_RD8 (_IO_SYNC_ | _IO_BYTE_) 65 66 #define IO_RD32_ASYNC (_IO_WORD_) 67 #define IO_RD16_ASYNC (_IO_HW_) 68 #define IO_RD8_ASYNC (_IO_BYTE_) 69 70 #define IO_WR32 (_IO_WRITE_ | _IO_SYNC_ | _IO_WORD_) 71 #define IO_WR16 (_IO_WRITE_ | _IO_SYNC_ | _IO_HW_) 72 #define IO_WR8 (_IO_WRITE_ | _IO_SYNC_ | _IO_BYTE_) 73 74 #define IO_WR32_ASYNC (_IO_WRITE_ | _IO_WORD_) 75 #define IO_WR16_ASYNC (_IO_WRITE_ | _IO_HW_) 76 #define IO_WR8_ASYNC (_IO_WRITE_ | _IO_BYTE_) 77 78 /* 79 80 Only Sync. burst accessing is provided. 81 82 */ 83 84 #define IO_WR_BURST(x) (_IO_WRITE_ | _IO_SYNC_ | _IO_BURST_ | ((x) & _IOSZ_MASK_)) 85 #define IO_RD_BURST(x) (_IO_SYNC_ | _IO_BURST_ | ((x) & _IOSZ_MASK_)) 86 87 88 89 /* below is for the intf_option bit defition... */ 90 91 #define _INTF_ASYNC_ BIT(0) /* support async io */ 92 93 struct intf_priv; 94 struct intf_hdl; 95 struct io_queue; 96 97 struct _io_ops { 98 u8(*_read8)(struct intf_hdl *pintfhdl, u32 addr); 99 u16(*_read16)(struct intf_hdl *pintfhdl, u32 addr); 100 u32(*_read32)(struct intf_hdl *pintfhdl, u32 addr); 101 102 int (*_write8)(struct intf_hdl *pintfhdl, u32 addr, u8 val); 103 int (*_write16)(struct intf_hdl *pintfhdl, u32 addr, u16 val); 104 int (*_write32)(struct intf_hdl *pintfhdl, u32 addr, u32 val); 105 int (*_writeN)(struct intf_hdl *pintfhdl, u32 addr, u32 length, u8 *pdata); 106 107 int (*_write8_async)(struct intf_hdl *pintfhdl, u32 addr, u8 val); 108 int (*_write16_async)(struct intf_hdl *pintfhdl, u32 addr, u16 val); 109 int (*_write32_async)(struct intf_hdl *pintfhdl, u32 addr, u32 val); 110 111 void (*_read_mem)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); 112 void (*_write_mem)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); 113 114 void (*_sync_irp_protocol_rw)(struct io_queue *pio_q); 115 116 u32(*_read_interrupt)(struct intf_hdl *pintfhdl, u32 addr); 117 118 u32(*_read_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); 119 u32(*_write_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); 120 121 u32(*_write_scsi)(struct intf_hdl *pintfhdl, u32 cnt, u8 *pmem); 122 123 void (*_read_port_cancel)(struct intf_hdl *pintfhdl); 124 void (*_write_port_cancel)(struct intf_hdl *pintfhdl); 125 126 #ifdef CONFIG_SDIO_HCI 127 u8(*_sd_f0_read8)(struct intf_hdl *pintfhdl, u32 addr); 128 #ifdef CONFIG_SDIO_INDIRECT_ACCESS 129 u8(*_sd_iread8)(struct intf_hdl *pintfhdl, u32 addr); 130 u16(*_sd_iread16)(struct intf_hdl *pintfhdl, u32 addr); 131 u32(*_sd_iread32)(struct intf_hdl *pintfhdl, u32 addr); 132 int (*_sd_iwrite8)(struct intf_hdl *pintfhdl, u32 addr, u8 val); 133 int (*_sd_iwrite16)(struct intf_hdl *pintfhdl, u32 addr, u16 val); 134 int (*_sd_iwrite32)(struct intf_hdl *pintfhdl, u32 addr, u32 val); 135 #endif /* CONFIG_SDIO_INDIRECT_ACCESS */ 136 #endif 137 138 }; 139 140 struct io_req { 141 _list list; 142 u32 addr; 143 volatile u32 val; 144 u32 command; 145 u32 status; 146 u8 *pbuf; 147 _sema sema; 148 149 #ifdef PLATFORM_OS_CE 150 #ifdef CONFIG_USB_HCI 151 /* URB handler for rtw_write_mem */ 152 USB_TRANSFER usb_transfer_write_mem; 153 #endif 154 #endif 155 156 void (*_async_io_callback)(_adapter *padater, struct io_req *pio_req, u8 *cnxt); 157 u8 *cnxt; 158 159 #ifdef PLATFORM_OS_XP 160 PMDL pmdl; 161 PIRP pirp; 162 163 #ifdef CONFIG_SDIO_HCI 164 PSDBUS_REQUEST_PACKET sdrp; 165 #endif 166 167 #endif 168 169 170 }; 171 172 struct intf_hdl { 173 174 #if 0 175 u32 intf_option; 176 u32 bus_status; 177 u32 do_flush; 178 u8 *adapter; 179 u8 *intf_dev; 180 struct intf_priv *pintfpriv; 181 u8 cnt; 182 void (*intf_hdl_init)(u8 *priv); 183 void (*intf_hdl_unload)(u8 *priv); 184 void (*intf_hdl_open)(u8 *priv); 185 void (*intf_hdl_close)(u8 *priv); 186 struct _io_ops io_ops; 187 /* u8 intf_status;//moved to struct intf_priv */ 188 u16 len; 189 u16 done_len; 190 #endif 191 _adapter *padapter; 192 struct dvobj_priv *pintf_dev;/* pointer to &(padapter->dvobjpriv); */ 193 194 struct _io_ops io_ops; 195 196 }; 197 198 struct reg_protocol_rd { 199 200 #ifdef CONFIG_LITTLE_ENDIAN 201 202 /* DW1 */ 203 u32 NumOfTrans:4; 204 u32 Reserved1:4; 205 u32 Reserved2:24; 206 /* DW2 */ 207 u32 ByteCount:7; 208 u32 WriteEnable:1; /* 0:read, 1:write */ 209 u32 FixOrContinuous:1; /* 0:continuous, 1: Fix */ 210 u32 BurstMode:1; 211 u32 Byte1Access:1; 212 u32 Byte2Access:1; 213 u32 Byte4Access:1; 214 u32 Reserved3:3; 215 u32 Reserved4:16; 216 /* DW3 */ 217 u32 BusAddress; 218 /* DW4 */ 219 /* u32 Value; */ 220 #else 221 222 223 /* DW1 */ 224 u32 Reserved1:4; 225 u32 NumOfTrans:4; 226 227 u32 Reserved2:24; 228 229 /* DW2 */ 230 u32 WriteEnable:1; 231 u32 ByteCount:7; 232 233 234 u32 Reserved3:3; 235 u32 Byte4Access:1; 236 237 u32 Byte2Access:1; 238 u32 Byte1Access:1; 239 u32 BurstMode:1; 240 u32 FixOrContinuous:1; 241 242 u32 Reserved4:16; 243 244 /* DW3 */ 245 u32 BusAddress; 246 247 /* DW4 */ 248 /* u32 Value; */ 249 250 #endif 251 252 }; 253 254 255 struct reg_protocol_wt { 256 257 258 #ifdef CONFIG_LITTLE_ENDIAN 259 260 /* DW1 */ 261 u32 NumOfTrans:4; 262 u32 Reserved1:4; 263 u32 Reserved2:24; 264 /* DW2 */ 265 u32 ByteCount:7; 266 u32 WriteEnable:1; /* 0:read, 1:write */ 267 u32 FixOrContinuous:1; /* 0:continuous, 1: Fix */ 268 u32 BurstMode:1; 269 u32 Byte1Access:1; 270 u32 Byte2Access:1; 271 u32 Byte4Access:1; 272 u32 Reserved3:3; 273 u32 Reserved4:16; 274 /* DW3 */ 275 u32 BusAddress; 276 /* DW4 */ 277 u32 Value; 278 279 #else 280 /* DW1 */ 281 u32 Reserved1:4; 282 u32 NumOfTrans:4; 283 284 u32 Reserved2:24; 285 286 /* DW2 */ 287 u32 WriteEnable:1; 288 u32 ByteCount:7; 289 290 u32 Reserved3:3; 291 u32 Byte4Access:1; 292 293 u32 Byte2Access:1; 294 u32 Byte1Access:1; 295 u32 BurstMode:1; 296 u32 FixOrContinuous:1; 297 298 u32 Reserved4:16; 299 300 /* DW3 */ 301 u32 BusAddress; 302 303 /* DW4 */ 304 u32 Value; 305 306 #endif 307 308 }; 309 #ifdef CONFIG_PCI_HCI 310 #define MAX_CONTINUAL_IO_ERR 4 311 #endif 312 313 #ifdef CONFIG_USB_HCI 314 #define MAX_CONTINUAL_IO_ERR 4 315 #endif 316 317 #ifdef CONFIG_SDIO_HCI 318 #define SD_IO_TRY_CNT (8) 319 #define MAX_CONTINUAL_IO_ERR SD_IO_TRY_CNT 320 #endif 321 322 #ifdef CONFIG_GSPI_HCI 323 #define SD_IO_TRY_CNT (8) 324 #define MAX_CONTINUAL_IO_ERR SD_IO_TRY_CNT 325 #endif 326 327 328 int rtw_inc_and_chk_continual_io_error(struct dvobj_priv *dvobj); 329 void rtw_reset_continual_io_error(struct dvobj_priv *dvobj); 330 331 /* 332 Below is the data structure used by _io_handler 333 334 */ 335 336 struct io_queue { 337 _lock lock; 338 _list free_ioreqs; 339 _list pending; /* The io_req list that will be served in the single protocol read/write. */ 340 _list processing; 341 u8 *free_ioreqs_buf; /* 4-byte aligned */ 342 u8 *pallocated_free_ioreqs_buf; 343 struct intf_hdl intf; 344 }; 345 346 struct io_priv { 347 348 _adapter *padapter; 349 350 struct intf_hdl intf; 351 352 }; 353 354 extern uint ioreq_flush(_adapter *adapter, struct io_queue *ioqueue); 355 extern void sync_ioreq_enqueue(struct io_req *preq, struct io_queue *ioqueue); 356 extern uint sync_ioreq_flush(_adapter *adapter, struct io_queue *ioqueue); 357 358 359 extern uint free_ioreq(struct io_req *preq, struct io_queue *pio_queue); 360 extern struct io_req *alloc_ioreq(struct io_queue *pio_q); 361 362 extern uint register_intf_hdl(u8 *dev, struct intf_hdl *pintfhdl); 363 extern void unregister_intf_hdl(struct intf_hdl *pintfhdl); 364 365 extern void _rtw_attrib_read(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); 366 extern void _rtw_attrib_write(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); 367 368 extern u8 _rtw_read8(_adapter *adapter, u32 addr); 369 extern u16 _rtw_read16(_adapter *adapter, u32 addr); 370 extern u32 _rtw_read32(_adapter *adapter, u32 addr); 371 extern void _rtw_read_mem(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); 372 extern void _rtw_read_port(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); 373 extern void _rtw_read_port_cancel(_adapter *adapter); 374 375 376 extern int _rtw_write8(_adapter *adapter, u32 addr, u8 val); 377 extern int _rtw_write16(_adapter *adapter, u32 addr, u16 val); 378 extern int _rtw_write32(_adapter *adapter, u32 addr, u32 val); 379 extern int _rtw_writeN(_adapter *adapter, u32 addr, u32 length, u8 *pdata); 380 381 #ifdef CONFIG_SDIO_HCI 382 u8 _rtw_sd_f0_read8(_adapter *adapter, u32 addr); 383 #ifdef CONFIG_SDIO_INDIRECT_ACCESS 384 u8 _rtw_sd_iread8(_adapter *adapter, u32 addr); 385 u16 _rtw_sd_iread16(_adapter *adapter, u32 addr); 386 u32 _rtw_sd_iread32(_adapter *adapter, u32 addr); 387 int _rtw_sd_iwrite8(_adapter *adapter, u32 addr, u8 val); 388 int _rtw_sd_iwrite16(_adapter *adapter, u32 addr, u16 val); 389 int _rtw_sd_iwrite32(_adapter *adapter, u32 addr, u32 val); 390 #endif /* CONFIG_SDIO_INDIRECT_ACCESS */ 391 #endif /* CONFIG_SDIO_HCI */ 392 393 extern int _rtw_write8_async(_adapter *adapter, u32 addr, u8 val); 394 extern int _rtw_write16_async(_adapter *adapter, u32 addr, u16 val); 395 extern int _rtw_write32_async(_adapter *adapter, u32 addr, u32 val); 396 397 extern void _rtw_write_mem(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); 398 extern u32 _rtw_write_port(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); 399 u32 _rtw_write_port_and_wait(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem, int timeout_ms); 400 extern void _rtw_write_port_cancel(_adapter *adapter); 401 402 #ifdef DBG_IO 403 bool match_read_sniff_ranges(u32 addr, u16 len); 404 bool match_write_sniff_ranges(u32 addr, u16 len); 405 bool match_rf_read_sniff_ranges(u8 path, u32 addr, u32 mask); 406 bool match_rf_write_sniff_ranges(u8 path, u32 addr, u32 mask); 407 408 extern u8 dbg_rtw_read8(_adapter *adapter, u32 addr, const char *caller, const int line); 409 extern u16 dbg_rtw_read16(_adapter *adapter, u32 addr, const char *caller, const int line); 410 extern u32 dbg_rtw_read32(_adapter *adapter, u32 addr, const char *caller, const int line); 411 412 extern int dbg_rtw_write8(_adapter *adapter, u32 addr, u8 val, const char *caller, const int line); 413 extern int dbg_rtw_write16(_adapter *adapter, u32 addr, u16 val, const char *caller, const int line); 414 extern int dbg_rtw_write32(_adapter *adapter, u32 addr, u32 val, const char *caller, const int line); 415 extern int dbg_rtw_writeN(_adapter *adapter, u32 addr , u32 length , u8 *data, const char *caller, const int line); 416 417 #ifdef CONFIG_SDIO_HCI 418 u8 dbg_rtw_sd_f0_read8(_adapter *adapter, u32 addr, const char *caller, const int line); 419 #ifdef CONFIG_SDIO_INDIRECT_ACCESS 420 u8 dbg_rtw_sd_iread8(_adapter *adapter, u32 addr, const char *caller, const int line); 421 u16 dbg_rtw_sd_iread16(_adapter *adapter, u32 addr, const char *caller, const int line); 422 u32 dbg_rtw_sd_iread32(_adapter *adapter, u32 addr, const char *caller, const int line); 423 int dbg_rtw_sd_iwrite8(_adapter *adapter, u32 addr, u8 val, const char *caller, const int line); 424 int dbg_rtw_sd_iwrite16(_adapter *adapter, u32 addr, u16 val, const char *caller, const int line); 425 int dbg_rtw_sd_iwrite32(_adapter *adapter, u32 addr, u32 val, const char *caller, const int line); 426 #endif /* CONFIG_SDIO_INDIRECT_ACCESS */ 427 #endif /* CONFIG_SDIO_HCI */ 428 429 #define rtw_read8(adapter, addr) dbg_rtw_read8((adapter), (addr), __FUNCTION__, __LINE__) 430 #define rtw_read16(adapter, addr) dbg_rtw_read16((adapter), (addr), __FUNCTION__, __LINE__) 431 #define rtw_read32(adapter, addr) dbg_rtw_read32((adapter), (addr), __FUNCTION__, __LINE__) 432 #define rtw_read_mem(adapter, addr, cnt, mem) _rtw_read_mem((adapter), (addr), (cnt), (mem)) 433 #define rtw_read_port(adapter, addr, cnt, mem) _rtw_read_port((adapter), (addr), (cnt), (mem)) 434 #define rtw_read_port_cancel(adapter) _rtw_read_port_cancel((adapter)) 435 436 #define rtw_write8(adapter, addr, val) dbg_rtw_write8((adapter), (addr), (val), __FUNCTION__, __LINE__) 437 #define rtw_write16(adapter, addr, val) dbg_rtw_write16((adapter), (addr), (val), __FUNCTION__, __LINE__) 438 #define rtw_write32(adapter, addr, val) dbg_rtw_write32((adapter), (addr), (val), __FUNCTION__, __LINE__) 439 #define rtw_writeN(adapter, addr, length, data) dbg_rtw_writeN((adapter), (addr), (length), (data), __FUNCTION__, __LINE__) 440 441 #define rtw_write8_async(adapter, addr, val) _rtw_write8_async((adapter), (addr), (val)) 442 #define rtw_write16_async(adapter, addr, val) _rtw_write16_async((adapter), (addr), (val)) 443 #define rtw_write32_async(adapter, addr, val) _rtw_write32_async((adapter), (addr), (val)) 444 445 #define rtw_write_mem(adapter, addr, cnt, mem) _rtw_write_mem((adapter), addr, cnt, mem) 446 #define rtw_write_port(adapter, addr, cnt, mem) _rtw_write_port(adapter, addr, cnt, mem) 447 #define rtw_write_port_and_wait(adapter, addr, cnt, mem, timeout_ms) _rtw_write_port_and_wait((adapter), (addr), (cnt), (mem), (timeout_ms)) 448 #define rtw_write_port_cancel(adapter) _rtw_write_port_cancel(adapter) 449 450 #ifdef CONFIG_SDIO_HCI 451 #define rtw_sd_f0_read8(adapter, addr) dbg_rtw_sd_f0_read8((adapter), (addr), __func__, __LINE__) 452 #ifdef CONFIG_SDIO_INDIRECT_ACCESS 453 #define rtw_sd_iread8(adapter, addr) dbg_rtw_sd_iread8((adapter), (addr), __func__, __LINE__) 454 #define rtw_sd_iread16(adapter, addr) dbg_rtw_sd_iread16((adapter), (addr), __func__, __LINE__) 455 #define rtw_sd_iread32(adapter, addr) dbg_rtw_sd_iread32((adapter), (addr), __func__, __LINE__) 456 #define rtw_sd_iwrite8(adapter, addr, val) dbg_rtw_sd_iwrite8((adapter), (addr), (val), __func__, __LINE__) 457 #define rtw_sd_iwrite16(adapter, addr, val) dbg_rtw_sd_iwrite16((adapter), (addr), (val), __func__, __LINE__) 458 #define rtw_sd_iwrite32(adapter, addr, val) dbg_rtw_sd_iwrite32((adapter), (addr), (val), __func__, __LINE__) 459 #endif /* CONFIG_SDIO_INDIRECT_ACCESS */ 460 #endif /* CONFIG_SDIO_HCI */ 461 462 #else /* DBG_IO */ 463 #define match_read_sniff_ranges(addr, len) _FALSE 464 #define match_write_sniff_ranges(addr, len) _FALSE 465 #define match_rf_read_sniff_ranges(path, addr, mask) _FALSE 466 #define match_rf_write_sniff_ranges(path, addr, mask) _FALSE 467 #define rtw_read8(adapter, addr) _rtw_read8((adapter), (addr)) 468 #define rtw_read16(adapter, addr) _rtw_read16((adapter), (addr)) 469 #define rtw_read32(adapter, addr) _rtw_read32((adapter), (addr)) 470 #define rtw_read_mem(adapter, addr, cnt, mem) _rtw_read_mem((adapter), (addr), (cnt), (mem)) 471 #define rtw_read_port(adapter, addr, cnt, mem) _rtw_read_port((adapter), (addr), (cnt), (mem)) 472 #define rtw_read_port_cancel(adapter) _rtw_read_port_cancel((adapter)) 473 474 #define rtw_write8(adapter, addr, val) _rtw_write8((adapter), (addr), (val)) 475 #define rtw_write16(adapter, addr, val) _rtw_write16((adapter), (addr), (val)) 476 #define rtw_write32(adapter, addr, val) _rtw_write32((adapter), (addr), (val)) 477 #define rtw_writeN(adapter, addr, length, data) _rtw_writeN((adapter), (addr), (length), (data)) 478 479 #define rtw_write8_async(adapter, addr, val) _rtw_write8_async((adapter), (addr), (val)) 480 #define rtw_write16_async(adapter, addr, val) _rtw_write16_async((adapter), (addr), (val)) 481 #define rtw_write32_async(adapter, addr, val) _rtw_write32_async((adapter), (addr), (val)) 482 483 #define rtw_write_mem(adapter, addr, cnt, mem) _rtw_write_mem((adapter), (addr), (cnt), (mem)) 484 #define rtw_write_port(adapter, addr, cnt, mem) _rtw_write_port((adapter), (addr), (cnt), (mem)) 485 #define rtw_write_port_and_wait(adapter, addr, cnt, mem, timeout_ms) _rtw_write_port_and_wait((adapter), (addr), (cnt), (mem), (timeout_ms)) 486 #define rtw_write_port_cancel(adapter) _rtw_write_port_cancel((adapter)) 487 488 #ifdef CONFIG_SDIO_HCI 489 #define rtw_sd_f0_read8(adapter, addr) _rtw_sd_f0_read8((adapter), (addr)) 490 #ifdef CONFIG_SDIO_INDIRECT_ACCESS 491 #define rtw_sd_iread8(adapter, addr) _rtw_sd_iread8((adapter), (addr)) 492 #define rtw_sd_iread16(adapter, addr) _rtw_sd_iread16((adapter), (addr)) 493 #define rtw_sd_iread32(adapter, addr) _rtw_sd_iread32((adapter), (addr)) 494 #define rtw_sd_iwrite8(adapter, addr, val) _rtw_sd_iwrite8((adapter), (addr), (val)) 495 #define rtw_sd_iwrite16(adapter, addr, val) _rtw_sd_iwrite16((adapter), (addr), (val)) 496 #define rtw_sd_iwrite32(adapter, addr, val) _rtw_sd_iwrite32((adapter), (addr), (val)) 497 #endif /* CONFIG_SDIO_INDIRECT_ACCESS */ 498 #endif /* CONFIG_SDIO_HCI */ 499 500 #endif /* DBG_IO */ 501 502 extern void rtw_write_scsi(_adapter *adapter, u32 cnt, u8 *pmem); 503 504 /* ioreq */ 505 extern void ioreq_read8(_adapter *adapter, u32 addr, u8 *pval); 506 extern void ioreq_read16(_adapter *adapter, u32 addr, u16 *pval); 507 extern void ioreq_read32(_adapter *adapter, u32 addr, u32 *pval); 508 extern void ioreq_write8(_adapter *adapter, u32 addr, u8 val); 509 extern void ioreq_write16(_adapter *adapter, u32 addr, u16 val); 510 extern void ioreq_write32(_adapter *adapter, u32 addr, u32 val); 511 512 513 extern uint async_read8(_adapter *adapter, u32 addr, u8 *pbuff, 514 void (*_async_io_callback)(_adapter *padater, struct io_req *pio_req, u8 *cnxt), u8 *cnxt); 515 extern uint async_read16(_adapter *adapter, u32 addr, u8 *pbuff, 516 void (*_async_io_callback)(_adapter *padater, struct io_req *pio_req, u8 *cnxt), u8 *cnxt); 517 extern uint async_read32(_adapter *adapter, u32 addr, u8 *pbuff, 518 void (*_async_io_callback)(_adapter *padater, struct io_req *pio_req, u8 *cnxt), u8 *cnxt); 519 520 extern void async_read_mem(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); 521 extern void async_read_port(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); 522 523 extern void async_write8(_adapter *adapter, u32 addr, u8 val, 524 void (*_async_io_callback)(_adapter *padater, struct io_req *pio_req, u8 *cnxt), u8 *cnxt); 525 extern void async_write16(_adapter *adapter, u32 addr, u16 val, 526 void (*_async_io_callback)(_adapter *padater, struct io_req *pio_req, u8 *cnxt), u8 *cnxt); 527 extern void async_write32(_adapter *adapter, u32 addr, u32 val, 528 void (*_async_io_callback)(_adapter *padater, struct io_req *pio_req, u8 *cnxt), u8 *cnxt); 529 530 extern void async_write_mem(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); 531 extern void async_write_port(_adapter *adapter, u32 addr, u32 cnt, u8 *pmem); 532 533 534 int rtw_init_io_priv(_adapter *padapter, void (*set_intf_ops)(_adapter *padapter, struct _io_ops *pops)); 535 536 537 extern uint alloc_io_queue(_adapter *adapter); 538 extern void free_io_queue(_adapter *adapter); 539 extern void async_bus_io(struct io_queue *pio_q); 540 extern void bus_sync_io(struct io_queue *pio_q); 541 extern u32 _ioreq2rwmem(struct io_queue *pio_q); 542 extern void dev_power_down(_adapter *Adapter, u8 bpwrup); 543 544 /* 545 #define RTL_R8(reg) rtw_read8(padapter, reg) 546 #define RTL_R16(reg) rtw_read16(padapter, reg) 547 #define RTL_R32(reg) rtw_read32(padapter, reg) 548 #define RTL_W8(reg, val8) rtw_write8(padapter, reg, val8) 549 #define RTL_W16(reg, val16) rtw_write16(padapter, reg, val16) 550 #define RTL_W32(reg, val32) rtw_write32(padapter, reg, val32) 551 */ 552 553 /* 554 #define RTL_W8_ASYNC(reg, val8) rtw_write32_async(padapter, reg, val8) 555 #define RTL_W16_ASYNC(reg, val16) rtw_write32_async(padapter, reg, val16) 556 #define RTL_W32_ASYNC(reg, val32) rtw_write32_async(padapter, reg, val32) 557 558 #define RTL_WRITE_BB(reg, val32) phy_SetUsbBBReg(padapter, reg, val32) 559 #define RTL_READ_BB(reg) phy_QueryUsbBBReg(padapter, reg) 560 */ 561 562 #define PlatformEFIOWrite1Byte(_a, _b, _c) \ 563 rtw_write8(_a, _b, _c) 564 #define PlatformEFIOWrite2Byte(_a, _b, _c) \ 565 rtw_write16(_a, _b, _c) 566 #define PlatformEFIOWrite4Byte(_a, _b, _c) \ 567 rtw_write32(_a, _b, _c) 568 569 #define PlatformEFIORead1Byte(_a, _b) \ 570 rtw_read8(_a, _b) 571 #define PlatformEFIORead2Byte(_a, _b) \ 572 rtw_read16(_a, _b) 573 #define PlatformEFIORead4Byte(_a, _b) \ 574 rtw_read32(_a, _b) 575 576 #endif /* _RTL8711_IO_H_ */ 577