[OPW,kernel,v4] Staging: btmtk_usb: Fix Sparse Warning of incorrect type in assignment
diff mbox

Message ID 1381856448-30335-1-git-send-email-rashika.kheria@gmail.com
State Changes Requested
Headers show

Commit Message

Rashika Oct. 15, 2013, 5 p.m. UTC
This patch fixes the following Sparse Warnings in btmtk_usb.c:

drivers/staging/btmtk_usb/btmtk_usb.c:676:39: warning: incorrect type in assignment (different base types)
drivers/staging/btmtk_usb/btmtk_usb.c:676:39:    expected unsigned int [unsigned] [usertype] packet_header
drivers/staging/btmtk_usb/btmtk_usb.c:676:39:    got restricted __le32 [usertype] <noident>

drivers/staging/btmtk_usb/btmtk_usb.c:736:31: warning: incorrect type in assignment (different base types)
drivers/staging/btmtk_usb/btmtk_usb.c:736:31:    expected unsigned int [unsigned] [addressable] [usertype] packet_header
drivers/staging/btmtk_usb/btmtk_usb.c:736:31:    got restricted __le32 [usertype] <noident>

Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com>
---

This revision fixes the following issues from the previous revision-
Incorrect Variable Name

 drivers/staging/btmtk_usb/btmtk_usb.c |   15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

Comments

Greg Kroah-Hartman Oct. 15, 2013, 7:30 p.m. UTC | #1
On Tue, Oct 15, 2013 at 10:30:48PM +0530, Rashika Kheria wrote:
> This patch fixes the following Sparse Warnings in btmtk_usb.c:
> 
> drivers/staging/btmtk_usb/btmtk_usb.c:676:39: warning: incorrect type in assignment (different base types)
> drivers/staging/btmtk_usb/btmtk_usb.c:676:39:    expected unsigned int [unsigned] [usertype] packet_header
> drivers/staging/btmtk_usb/btmtk_usb.c:676:39:    got restricted __le32 [usertype] <noident>
> 
> drivers/staging/btmtk_usb/btmtk_usb.c:736:31: warning: incorrect type in assignment (different base types)
> drivers/staging/btmtk_usb/btmtk_usb.c:736:31:    expected unsigned int [unsigned] [addressable] [usertype] packet_header
> drivers/staging/btmtk_usb/btmtk_usb.c:736:31:    got restricted __le32 [usertype] <noident>
> 
> Signed-off-by: Rashika Kheria <rashika.kheria@gmail.com>
> ---
> 
> This revision fixes the following issues from the previous revision-
> Incorrect Variable Name
> 
>  drivers/staging/btmtk_usb/btmtk_usb.c |   15 ++++++++-------
>  1 file changed, 8 insertions(+), 7 deletions(-)

Ok, now we are getting really trivial, but I think this can be cleaned
up with less overall lines changed, and in a way that makes more sense.

How about this:

> 
> diff --git a/drivers/staging/btmtk_usb/btmtk_usb.c b/drivers/staging/btmtk_usb/btmtk_usb.c
> index cb315b5..7245ee7 100644
> --- a/drivers/staging/btmtk_usb/btmtk_usb.c
> +++ b/drivers/staging/btmtk_usb/btmtk_usb.c
> @@ -565,7 +565,8 @@ static int btmtk_usb_load_fw(struct btmtk_usb_data *data)
>  	struct urb *urb;
>  	void *buf;
>  	u32 cur_len = 0;
> -	u32 packet_header = 0;
> +	__le32 packet_header = 0;
> +	u32 packet_header_temp = le32_to_cpu(packet_header);

Leave packet_header alone, and add:
	le32 package_header_le;

>  	u32 value;
>  	u32 ilm_len = 0, dlm_len = 0;
>  	u16 fw_ver, build_ver;
> @@ -677,9 +678,9 @@ loadfw_protect:
>  		sent_len = min_t(s32, (ilm_len - cur_len), 14336);
>  
>  		if (sent_len > 0) {
> -			packet_header &= ~(0xffffffff);
> -			packet_header |= (sent_len << 16);

Leave these lines alone, but:

> -			packet_header = cpu_to_le32(packet_header);

Change this line to:
			packet_header_le = cpu_to_le32(packet_header);

And then change the line after that to use packet_header_le instead of
packet_header.

Then do the same thing below this.

That should make the patch smaller, and more like your previous patch to
this driver for endian issues, right?

thanks,

greg k-h

Patch
diff mbox

diff --git a/drivers/staging/btmtk_usb/btmtk_usb.c b/drivers/staging/btmtk_usb/btmtk_usb.c
index cb315b5..7245ee7 100644
--- a/drivers/staging/btmtk_usb/btmtk_usb.c
+++ b/drivers/staging/btmtk_usb/btmtk_usb.c
@@ -565,7 +565,8 @@  static int btmtk_usb_load_fw(struct btmtk_usb_data *data)
 	struct urb *urb;
 	void *buf;
 	u32 cur_len = 0;
-	u32 packet_header = 0;
+	__le32 packet_header = 0;
+	u32 packet_header_temp = le32_to_cpu(packet_header);
 	u32 value;
 	u32 ilm_len = 0, dlm_len = 0;
 	u16 fw_ver, build_ver;
@@ -677,9 +678,9 @@  loadfw_protect:
 		sent_len = min_t(s32, (ilm_len - cur_len), 14336);
 
 		if (sent_len > 0) {
-			packet_header &= ~(0xffffffff);
-			packet_header |= (sent_len << 16);
-			packet_header = cpu_to_le32(packet_header);
+			packet_header_temp &= ~(0xffffffff);
+			packet_header_temp |= (sent_len << 16);
+			packet_header = cpu_to_le32(packet_header_temp);
 
 			memmove(buf, &packet_header, 4);
 			memmove(buf + 4, data->firmware->data + 32 + cur_len,
@@ -737,9 +738,9 @@  loadfw_protect:
 		if (sent_len <= 0)
 			break;
 
-		packet_header &= ~(0xffffffff);
-		packet_header |= (sent_len << 16);
-		packet_header = cpu_to_le32(packet_header);
+		packet_header_temp &= ~(0xffffffff);
+		packet_header_temp |= (sent_len << 16);
+		packet_header = cpu_to_le32(packet_header_temp);
 
 		memmove(buf, &packet_header, 4);
 		memmove(buf + 4,