19a602711878714d71209e89ea3510929a5de6ee5Larry Finger/****************************************************************************** 29a602711878714d71209e89ea3510929a5de6ee5Larry Finger * 39a602711878714d71209e89ea3510929a5de6ee5Larry Finger * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. 49a602711878714d71209e89ea3510929a5de6ee5Larry Finger * 59a602711878714d71209e89ea3510929a5de6ee5Larry Finger * This program is free software; you can redistribute it and/or modify it 69a602711878714d71209e89ea3510929a5de6ee5Larry Finger * under the terms of version 2 of the GNU General Public License as 79a602711878714d71209e89ea3510929a5de6ee5Larry Finger * published by the Free Software Foundation. 89a602711878714d71209e89ea3510929a5de6ee5Larry Finger * 99a602711878714d71209e89ea3510929a5de6ee5Larry Finger * This program is distributed in the hope that it will be useful, but WITHOUT 109a602711878714d71209e89ea3510929a5de6ee5Larry Finger * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 119a602711878714d71209e89ea3510929a5de6ee5Larry Finger * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 129a602711878714d71209e89ea3510929a5de6ee5Larry Finger * more details. 139a602711878714d71209e89ea3510929a5de6ee5Larry Finger * 149a602711878714d71209e89ea3510929a5de6ee5Larry Finger * You should have received a copy of the GNU General Public License along with 159a602711878714d71209e89ea3510929a5de6ee5Larry Finger * this program; if not, write to the Free Software Foundation, Inc., 169a602711878714d71209e89ea3510929a5de6ee5Larry Finger * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA 179a602711878714d71209e89ea3510929a5de6ee5Larry Finger * 189a602711878714d71209e89ea3510929a5de6ee5Larry Finger * 199a602711878714d71209e89ea3510929a5de6ee5Larry Finger ******************************************************************************/ 209a602711878714d71209e89ea3510929a5de6ee5Larry Finger#ifndef __USB_OPS_LINUX_H__ 219a602711878714d71209e89ea3510929a5de6ee5Larry Finger#define __USB_OPS_LINUX_H__ 229a602711878714d71209e89ea3510929a5de6ee5Larry Finger 239a602711878714d71209e89ea3510929a5de6ee5Larry Finger#define VENDOR_CMD_MAX_DATA_LEN 254 249a602711878714d71209e89ea3510929a5de6ee5Larry Finger 259a602711878714d71209e89ea3510929a5de6ee5Larry Finger#define RTW_USB_CONTROL_MSG_TIMEOUT_TEST 10/* ms */ 269a602711878714d71209e89ea3510929a5de6ee5Larry Finger#define RTW_USB_CONTROL_MSG_TIMEOUT 500/* ms */ 279a602711878714d71209e89ea3510929a5de6ee5Larry Finger 289a602711878714d71209e89ea3510929a5de6ee5Larry Finger#define MAX_USBCTRL_VENDORREQ_TIMES 10 299a602711878714d71209e89ea3510929a5de6ee5Larry Finger 309a602711878714d71209e89ea3510929a5de6ee5Larry Finger#define RTW_USB_BULKOUT_TIME 5000/* ms */ 319a602711878714d71209e89ea3510929a5de6ee5Larry Finger 3217452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar#define REALTEK_USB_VENQT_READ 0xC0 3317452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar#define REALTEK_USB_VENQT_WRITE 0x40 3417452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar 3517452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar#define ALIGNMENT_UNIT 16 3617452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar#define MAX_VENDOR_REQ_CMD_SIZE 254 /* 8188cu SIE Support */ 3717452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar#define MAX_USB_IO_CTL_SIZE (MAX_VENDOR_REQ_CMD_SIZE + ALIGNMENT_UNIT) 3817452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar 3917452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar#define USB_HIGH_SPEED_BULK_SIZE 512 4017452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar#define USB_FULL_SPEED_BULK_SIZE 64 4117452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar 429a602711878714d71209e89ea3510929a5de6ee5Larry Finger#define _usbctrl_vendorreq_async_callback(urb, regs) \ 439a602711878714d71209e89ea3510929a5de6ee5Larry Finger _usbctrl_vendorreq_async_callback(urb) 449a602711878714d71209e89ea3510929a5de6ee5Larry Finger#define usb_bulkout_zero_complete(purb, regs) \ 459a602711878714d71209e89ea3510929a5de6ee5Larry Finger usb_bulkout_zero_complete(purb) 469a602711878714d71209e89ea3510929a5de6ee5Larry Finger#define usb_write_mem_complete(purb, regs) \ 479a602711878714d71209e89ea3510929a5de6ee5Larry Finger usb_write_mem_complete(purb) 489a602711878714d71209e89ea3510929a5de6ee5Larry Finger#define usb_write_port_complete(purb, regs) \ 499a602711878714d71209e89ea3510929a5de6ee5Larry Finger usb_write_port_complete(purb) 509a602711878714d71209e89ea3510929a5de6ee5Larry Finger#define usb_read_port_complete(purb, regs) \ 519a602711878714d71209e89ea3510929a5de6ee5Larry Finger usb_read_port_complete(purb) 529a602711878714d71209e89ea3510929a5de6ee5Larry Finger#define usb_read_interrupt_complete(purb, regs) \ 539a602711878714d71209e89ea3510929a5de6ee5Larry Finger usb_read_interrupt_complete(purb) 549a602711878714d71209e89ea3510929a5de6ee5Larry Finger 5517452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidarstatic inline u8 rtw_usb_bulk_size_boundary(struct adapter *padapter, 5617452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar int buf_len) 5717452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar{ 5817452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar u8 rst = true; 5917452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); 6017452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar 6117452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar if (pdvobjpriv->ishighspeed) 6217452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar rst = (0 == (buf_len) % USB_HIGH_SPEED_BULK_SIZE) ? 6317452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar true : false; 6417452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar else 6517452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar rst = (0 == (buf_len) % USB_FULL_SPEED_BULK_SIZE) ? 6617452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar true : false; 6717452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar return rst; 6817452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar} 6917452ee9d3e3c20eb009423fc3dd02d67882e4bbnavin patidar 709a602711878714d71209e89ea3510929a5de6ee5Larry Fingerunsigned int ffaddr2pipehdl(struct dvobj_priv *pdvobj, u32 addr); 719a602711878714d71209e89ea3510929a5de6ee5Larry Finger 72e73fd15ea84a8b2411a70b62473a7bfcba74c207navin patidaru8 usb_read8(struct adapter *adapter, u32 addr); 73e73fd15ea84a8b2411a70b62473a7bfcba74c207navin patidaru16 usb_read16(struct adapter *adapter, u32 addr); 74e73fd15ea84a8b2411a70b62473a7bfcba74c207navin patidaru32 usb_read32(struct adapter *adapter, u32 addr); 759a602711878714d71209e89ea3510929a5de6ee5Larry Finger 76e73fd15ea84a8b2411a70b62473a7bfcba74c207navin patidaru32 usb_read_port(struct adapter *adapter, u32 addr, u32 cnt, u8 *pmem); 77e73fd15ea84a8b2411a70b62473a7bfcba74c207navin patidarvoid usb_read_port_cancel(struct adapter *adapter); 78e73fd15ea84a8b2411a70b62473a7bfcba74c207navin patidar 79e73fd15ea84a8b2411a70b62473a7bfcba74c207navin patidarint usb_write8(struct adapter *adapter, u32 addr, u8 val); 80e73fd15ea84a8b2411a70b62473a7bfcba74c207navin patidarint usb_write16(struct adapter *adapter, u32 addr, u16 val); 81e73fd15ea84a8b2411a70b62473a7bfcba74c207navin patidarint usb_write32(struct adapter *adapter, u32 addr, u32 val); 82e73fd15ea84a8b2411a70b62473a7bfcba74c207navin patidarint usb_writeN(struct adapter *adapter, u32 addr, u32 length, u8 *pdata); 83e73fd15ea84a8b2411a70b62473a7bfcba74c207navin patidar 84e73fd15ea84a8b2411a70b62473a7bfcba74c207navin patidaru32 usb_write_port(struct adapter *adapter, u32 addr, u32 cnt, u8 *pmem); 85e73fd15ea84a8b2411a70b62473a7bfcba74c207navin patidarvoid usb_write_port_cancel(struct adapter *adapter); 869a602711878714d71209e89ea3510929a5de6ee5Larry Finger 879a602711878714d71209e89ea3510929a5de6ee5Larry Finger#endif 88