[1/2] mn88472: fix firmware downloading

Message ID 1418070667-13349-1-git-send-email-benjamin@southpole.se (mailing list archive)
State Superseded, archived
Headers

Commit Message

Benjamin Larsson Dec. 8, 2014, 8:31 p.m. UTC
  The max amount of payload bytes in each i2c transfer when
loading the demodulator firmware is 16 bytes.

Signed-off-by: Benjamin Larsson <benjamin@southpole.se>
---
 drivers/staging/media/mn88472/mn88472.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
  

Comments

Antti Palosaari Dec. 8, 2014, 8:55 p.m. UTC | #1
Moikka!

But that patch is rather useless :] Only thing needed is to change 
existing value in file drivers/media/usb/dvb-usb-v2/rtl28xxu.c :
mn88472_config.i2c_wr_max = 22,
... and that leaves room for use even smaller values if there is an I2C 
adapter which cannot write even 17 bytes.

2nd thing is to add comment mn88472.h to specify that max limit and 
that's all.

regards
Antti


On 12/08/2014 10:31 PM, Benjamin Larsson wrote:
> The max amount of payload bytes in each i2c transfer when
> loading the demodulator firmware is 16 bytes.
>
> Signed-off-by: Benjamin Larsson <benjamin@southpole.se>
> ---
>   drivers/staging/media/mn88472/mn88472.c | 7 ++++---
>   1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/staging/media/mn88472/mn88472.c b/drivers/staging/media/mn88472/mn88472.c
> index ffee187..df7dbe9 100644
> --- a/drivers/staging/media/mn88472/mn88472.c
> +++ b/drivers/staging/media/mn88472/mn88472.c
> @@ -15,6 +15,7 @@
>    */
>
>   #include "mn88472_priv.h"
> +#define FW_BUF_SIZE 16
>
>   static int mn88472_get_tune_settings(struct dvb_frontend *fe,
>   	struct dvb_frontend_tune_settings *s)
> @@ -331,10 +332,10 @@ static int mn88472_init(struct dvb_frontend *fe)
>   		goto err;
>
>   	for (remaining = fw->size; remaining > 0;
> -			remaining -= (dev->i2c_wr_max - 1)) {
> +			remaining -= FW_BUF_SIZE) {
>   		len = remaining;
> -		if (len > (dev->i2c_wr_max - 1))
> -			len = (dev->i2c_wr_max - 1);
> +		if (len > FW_BUF_SIZE)
> +			len = FW_BUF_SIZE;
>
>   		ret = regmap_bulk_write(dev->regmap[0], 0xf6,
>   				&fw->data[fw->size - remaining], len);
>
  
Benjamin Larsson Dec. 8, 2014, 8:59 p.m. UTC | #2
On 12/08/2014 09:55 PM, Antti Palosaari wrote:
> Moikka!
>
> But that patch is rather useless :] Only thing needed is to change 
> existing value in file drivers/media/usb/dvb-usb-v2/rtl28xxu.c :
> mn88472_config.i2c_wr_max = 22,
> ... and that leaves room for use even smaller values if there is an 
> I2C adapter which cannot write even 17 bytes.
>
> 2nd thing is to add comment mn88472.h to specify that max limit and 
> that's all.
>
> regards
> Antti

Ok, I'll do that.

MvH
Benjamin Larsson
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Patch

diff --git a/drivers/staging/media/mn88472/mn88472.c b/drivers/staging/media/mn88472/mn88472.c
index ffee187..df7dbe9 100644
--- a/drivers/staging/media/mn88472/mn88472.c
+++ b/drivers/staging/media/mn88472/mn88472.c
@@ -15,6 +15,7 @@ 
  */
 
 #include "mn88472_priv.h"
+#define FW_BUF_SIZE 16
 
 static int mn88472_get_tune_settings(struct dvb_frontend *fe,
 	struct dvb_frontend_tune_settings *s)
@@ -331,10 +332,10 @@  static int mn88472_init(struct dvb_frontend *fe)
 		goto err;
 
 	for (remaining = fw->size; remaining > 0;
-			remaining -= (dev->i2c_wr_max - 1)) {
+			remaining -= FW_BUF_SIZE) {
 		len = remaining;
-		if (len > (dev->i2c_wr_max - 1))
-			len = (dev->i2c_wr_max - 1);
+		if (len > FW_BUF_SIZE)
+			len = FW_BUF_SIZE;
 
 		ret = regmap_bulk_write(dev->regmap[0], 0xf6,
 				&fw->data[fw->size - remaining], len);