diff mbox

[v2] mt9m111: move lastpage to struct mt9m111 for multi instances

Message ID 1311081995-25409-1-git-send-email-m.grzeschik@pengutronix.de (mailing list archive)
State New, archived
Headers show

Commit Message

Michael Grzeschik July 19, 2011, 1:26 p.m. UTC
Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
---
v1 -> v2: added initial value -1 for lastpage

 drivers/media/video/mt9m111.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

Comments

Guennadi Liakhovetski July 19, 2011, 2:10 p.m. UTC | #1
Hi Michael

Looks good now, thanks. Unfortunately, we've already missed the 3.1 merge 
window, unless Linus decides to release one more 3.0-rcX kernel. But 
still, I think, this can qualify as a fix, so, it should be ok even after 
-rc1.

Thanks
Guennadi

On Tue, 19 Jul 2011, Michael Grzeschik wrote:

> Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
> ---
> v1 -> v2: added initial value -1 for lastpage
> 
>  drivers/media/video/mt9m111.c |    9 ++++++---
>  1 files changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/media/video/mt9m111.c b/drivers/media/video/mt9m111.c
> index a357aa8..07af26e 100644
> --- a/drivers/media/video/mt9m111.c
> +++ b/drivers/media/video/mt9m111.c
> @@ -184,6 +184,7 @@ struct mt9m111 {
>  	struct mutex power_lock; /* lock to protect power_count */
>  	int power_count;
>  	const struct mt9m111_datafmt *fmt;
> +	int lastpage;	/* PageMap cache value */
>  	unsigned int gain;
>  	unsigned char autoexposure;
>  	unsigned char datawidth;
> @@ -202,17 +203,17 @@ static int reg_page_map_set(struct i2c_client *client, const u16 reg)
>  {
>  	int ret;
>  	u16 page;
> -	static int lastpage = -1;	/* PageMap cache value */
> +	struct mt9m111 *mt9m111 = to_mt9m111(client);
>  
>  	page = (reg >> 8);
> -	if (page == lastpage)
> +	if (page == mt9m111->lastpage)
>  		return 0;
>  	if (page > 2)
>  		return -EINVAL;
>  
>  	ret = i2c_smbus_write_word_data(client, MT9M111_PAGE_MAP, swab16(page));
>  	if (!ret)
> -		lastpage = page;
> +		mt9m111->lastpage = page;
>  	return ret;
>  }
>  
> @@ -932,6 +933,8 @@ static int mt9m111_video_probe(struct soc_camera_device *icd,
>  	BUG_ON(!icd->parent ||
>  	       to_soc_camera_host(icd->parent)->nr != icd->iface);
>  
> +	mt9m111->lastpage = -1;
> +
>  	mt9m111->autoexposure = 1;
>  	mt9m111->autowhitebalance = 1;
>  
> -- 
> 1.7.5.4
> 

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
--
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
diff mbox

Patch

diff --git a/drivers/media/video/mt9m111.c b/drivers/media/video/mt9m111.c
index a357aa8..07af26e 100644
--- a/drivers/media/video/mt9m111.c
+++ b/drivers/media/video/mt9m111.c
@@ -184,6 +184,7 @@  struct mt9m111 {
 	struct mutex power_lock; /* lock to protect power_count */
 	int power_count;
 	const struct mt9m111_datafmt *fmt;
+	int lastpage;	/* PageMap cache value */
 	unsigned int gain;
 	unsigned char autoexposure;
 	unsigned char datawidth;
@@ -202,17 +203,17 @@  static int reg_page_map_set(struct i2c_client *client, const u16 reg)
 {
 	int ret;
 	u16 page;
-	static int lastpage = -1;	/* PageMap cache value */
+	struct mt9m111 *mt9m111 = to_mt9m111(client);
 
 	page = (reg >> 8);
-	if (page == lastpage)
+	if (page == mt9m111->lastpage)
 		return 0;
 	if (page > 2)
 		return -EINVAL;
 
 	ret = i2c_smbus_write_word_data(client, MT9M111_PAGE_MAP, swab16(page));
 	if (!ret)
-		lastpage = page;
+		mt9m111->lastpage = page;
 	return ret;
 }
 
@@ -932,6 +933,8 @@  static int mt9m111_video_probe(struct soc_camera_device *icd,
 	BUG_ON(!icd->parent ||
 	       to_soc_camera_host(icd->parent)->nr != icd->iface);
 
+	mt9m111->lastpage = -1;
+
 	mt9m111->autoexposure = 1;
 	mt9m111->autowhitebalance = 1;