Skip to content

Commit

Permalink
[media] af9035: various small changes for af9035_ctrl_msg()
Browse files Browse the repository at this point in the history
Fix USB buffer len to maximum possible.
Various log writing fixes, remove extra new lines and excessive
type casts. Rename and type change some variables.

Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Antti Palosaari authored and Mauro Carvalho Chehab committed May 14, 2012
1 parent 4b25524 commit 6fb39c5
Showing 1 changed file with 15 additions and 16 deletions.
31 changes: 15 additions & 16 deletions drivers/media/dvb/dvb-usb/af9035.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,16 @@ static u16 af9035_checksum(const u8 *buf, size_t len)

static int af9035_ctrl_msg(struct usb_device *udev, struct usb_req *req)
{
#define BUF_LEN 63
#define BUF_LEN 64
#define REQ_HDR_LEN 4 /* send header size */
#define ACK_HDR_LEN 3 /* rece header size */
#define CHECKSUM_LEN 2
#define USB_TIMEOUT 2000

int ret, act_len;
int ret, msg_len, act_len;
u8 buf[BUF_LEN];
u32 msg_len;
static u8 seq; /* packet sequence number */
u16 checksum, tmpsum;
u16 checksum, tmp_checksum;

/* buffer overflow check */
if (req->wlen > (BUF_LEN - REQ_HDR_LEN - CHECKSUM_LEN) ||
Expand All @@ -89,14 +88,14 @@ static int af9035_ctrl_msg(struct usb_device *udev, struct usb_req *req)

/* calc and add checksum */
checksum = af9035_checksum(buf, buf[0] - 1);
buf[buf[0]-1] = (checksum >> 8);
buf[buf[0]-0] = (checksum & 0xff);
buf[buf[0] - 1] = (checksum >> 8);
buf[buf[0] - 0] = (checksum & 0xff);

msg_len = REQ_HDR_LEN + req->wlen + CHECKSUM_LEN ;

/* send req */
ret = usb_bulk_msg(udev, usb_sndbulkpipe(udev, 0x02), buf, msg_len,
&act_len, USB_TIMEOUT);
&act_len, USB_TIMEOUT);
if (ret < 0)
err("bulk message failed=%d (%d/%d)", ret, msg_len, act_len);
else
Expand All @@ -112,29 +111,29 @@ static int af9035_ctrl_msg(struct usb_device *udev, struct usb_req *req)
/* receive ack and data if read req */
msg_len = ACK_HDR_LEN + req->rlen + CHECKSUM_LEN;
ret = usb_bulk_msg(udev, usb_rcvbulkpipe(udev, 0x81), buf, msg_len,
&act_len, USB_TIMEOUT);
&act_len, USB_TIMEOUT);
if (ret < 0) {
err("recv bulk message failed=%d", ret);
ret = -EIO;
goto err_mutex_unlock;
}

if (act_len != msg_len) {
err("recv bulk message truncated (%d != %u)\n",
act_len, (unsigned int)msg_len);
err("recv bulk message truncated (%d != %d)", act_len, msg_len);
ret = -EIO;
goto err_mutex_unlock;
}

/* verify checksum */
checksum = af9035_checksum(buf, act_len - 2);
tmpsum = (buf[act_len - 2] << 8) | buf[act_len - 1];
if (tmpsum != checksum) {
err("%s: command=%02X checksum mismatch (%04X != %04X)\n",
__func__, req->cmd,
(unsigned int)tmpsum, (unsigned int)checksum);
tmp_checksum = (buf[act_len - 2] << 8) | buf[act_len - 1];
if (tmp_checksum != checksum) {
err("%s: command=%02x checksum mismatch (%04x != %04x)",
__func__, req->cmd, tmp_checksum, checksum);
ret = -EIO;
goto err_mutex_unlock;
}

/* check status */
if (buf[2]) {
pr_debug("%s: command=%02x failed fw error=%d\n", __func__,
Expand Down Expand Up @@ -400,7 +399,7 @@ static int af9035_download_firmware(struct usb_device *udev,
struct usb_req req_fw_ver = { CMD_FW_QUERYINFO, 0, 1, wbuf, 4, rbuf } ;
u8 hdr_core;
u16 hdr_addr, hdr_data_len, hdr_checksum;
#define MAX_DATA 57
#define MAX_DATA 58
#define HDR_SIZE 7

/*
Expand Down

0 comments on commit 6fb39c5

Please sign in to comment.