Commit 2fbbe517 authored by Prameela Rani Garnepudi's avatar Prameela Rani Garnepudi Committed by Kalle Valo

rsi: Changes in USB read and write operations

USB read and write registers maximum size is limited 2^16. More than
this size is not used in the driver.
Signed-off-by: default avatarPrameela Rani Garnepudi <prameela.j04cs@gmail.com>
Signed-off-by: default avatarAmitkumar Karwar <amit.karwar@redpinesignals.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 7bdead7a
...@@ -286,11 +286,11 @@ static int rsi_rx_urb_submit(struct rsi_hw *adapter) ...@@ -286,11 +286,11 @@ static int rsi_rx_urb_submit(struct rsi_hw *adapter)
int rsi_usb_write_register_multiple(struct rsi_hw *adapter, int rsi_usb_write_register_multiple(struct rsi_hw *adapter,
u32 addr, u32 addr,
u8 *data, u8 *data,
u32 count) u16 count)
{ {
struct rsi_91x_usbdev *dev = (struct rsi_91x_usbdev *)adapter->rsi_dev; struct rsi_91x_usbdev *dev = (struct rsi_91x_usbdev *)adapter->rsi_dev;
u8 *buf; u8 *buf;
u8 transfer; u16 transfer;
int status = 0; int status = 0;
buf = kzalloc(RSI_USB_BUF_SIZE, GFP_KERNEL); buf = kzalloc(RSI_USB_BUF_SIZE, GFP_KERNEL);
...@@ -298,7 +298,7 @@ int rsi_usb_write_register_multiple(struct rsi_hw *adapter, ...@@ -298,7 +298,7 @@ int rsi_usb_write_register_multiple(struct rsi_hw *adapter,
return -ENOMEM; return -ENOMEM;
while (count) { while (count) {
transfer = (u8)(min_t(u32, count, RSI_USB_BUF_SIZE)); transfer = min_t(u16, count, RSI_USB_BUF_SIZE);
memcpy(buf, data, transfer); memcpy(buf, data, transfer);
status = usb_control_msg(dev->usbdev, status = usb_control_msg(dev->usbdev,
usb_sndctrlpipe(dev->usbdev, 0), usb_sndctrlpipe(dev->usbdev, 0),
......
...@@ -33,12 +33,12 @@ ...@@ -33,12 +33,12 @@
static int rsi_copy_to_card(struct rsi_common *common, static int rsi_copy_to_card(struct rsi_common *common,
const u8 *fw, const u8 *fw,
u32 len, u32 len,
u32 num_blocks) u16 num_blocks)
{ {
struct rsi_hw *adapter = common->priv; struct rsi_hw *adapter = common->priv;
struct rsi_91x_usbdev *dev = (struct rsi_91x_usbdev *)adapter->rsi_dev; struct rsi_91x_usbdev *dev = (struct rsi_91x_usbdev *)adapter->rsi_dev;
u32 indx, ii; u32 indx, ii;
u32 block_size = dev->tx_blk_size; u16 block_size = dev->tx_blk_size;
u32 lsb_address; u32 lsb_address;
u32 base_address; u32 base_address;
...@@ -134,9 +134,10 @@ static int rsi_load_ta_instructions(struct rsi_common *common) ...@@ -134,9 +134,10 @@ static int rsi_load_ta_instructions(struct rsi_common *common)
struct rsi_hw *adapter = common->priv; struct rsi_hw *adapter = common->priv;
struct rsi_91x_usbdev *dev = (struct rsi_91x_usbdev *)adapter->rsi_dev; struct rsi_91x_usbdev *dev = (struct rsi_91x_usbdev *)adapter->rsi_dev;
const struct firmware *fw_entry = NULL; const struct firmware *fw_entry = NULL;
u32 block_size = dev->tx_blk_size; u16 block_size = dev->tx_blk_size;
const u8 *fw; const u8 *fw;
u32 num_blocks, len; u16 num_blocks;
u32 len;
int status = 0; int status = 0;
status = request_firmware(&fw_entry, FIRMWARE_RSI9113, adapter->device); status = request_firmware(&fw_entry, FIRMWARE_RSI9113, adapter->device);
......
...@@ -65,6 +65,6 @@ static inline int rsi_usb_event_timeout(struct rsi_hw *adapter) ...@@ -65,6 +65,6 @@ static inline int rsi_usb_event_timeout(struct rsi_hw *adapter)
int rsi_usb_device_init(struct rsi_common *common); int rsi_usb_device_init(struct rsi_common *common);
int rsi_usb_write_register_multiple(struct rsi_hw *adapter, u32 addr, int rsi_usb_write_register_multiple(struct rsi_hw *adapter, u32 addr,
u8 *data, u32 count); u8 *data, u16 count);
void rsi_usb_rx_thread(struct rsi_common *common); void rsi_usb_rx_thread(struct rsi_common *common);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment