public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* mt9m111/mt9m131: kernel 3.8 issues.
@ 2013-03-07  9:43 javier Martin
  2013-03-07 12:13 ` Benoît Thébaudeau
  2013-03-08 18:03 ` Guennadi Liakhovetski
  0 siblings, 2 replies; 10+ messages in thread
From: javier Martin @ 2013-03-07  9:43 UTC (permalink / raw)
  To: linux-media; +Cc: Sascha Hauer, Guennadi Liakhovetski, benoit.thebaudeau

Hi,
I am testing mt9m131 sensor (which is supported in mt9m111.c) in
mainline kernel 3.8 with my Visstrim M10, which is an i.MX27 board.

Since both mx2_camera.c and mt9m111.c are soc_camera drivers making it
work was quite straightforward. However, I've found several issues
regarding mt9m111.c:

1. mt9m111 probe is broken. It will give an oops since it tries to use
a context before it's been assigned.
2. mt9m111 auto exposure control is broken too (see the patch below).
3. After I've fixed 1 and 2 the colours in the pictures I grab are
dull and not vibrant, green is very dark and red seems like pink, blue
and yellow look fine though. I have both auto exposure and auto white
balance enabled.

I can see in the list that you have tried this sensor before. Have you
also noticed these problems (specially 3)?

This patch is just to provide a quick fix for points 1 and 2 just in
case you feel like testing this in kernel 3.8. If you consider these
fix are valid I'll send a proper patch later:

diff --git a/drivers/media/i2c/soc_camera/mt9m111.c
b/drivers/media/i2c/soc_camera/mt9m111.c
index 62fd94a..7d99655 100644
--- a/drivers/media/i2c/soc_camera/mt9m111.c
+++ b/drivers/media/i2c/soc_camera/mt9m111.c
@@ -704,7 +704,7 @@ static int mt9m111_set_autoexposure(struct mt9m111
*mt9m111, int on)
 {
        struct i2c_client *client = v4l2_get_subdevdata(&mt9m111->subdev);

-       if (on)
+       if (on == V4L2_EXPOSURE_AUTO)
                return reg_set(OPER_MODE_CTRL, MT9M111_OPMODE_AUTOEXPO_EN);
        return reg_clear(OPER_MODE_CTRL, MT9M111_OPMODE_AUTOEXPO_EN);
 }
@@ -916,6 +916,9 @@ static int mt9m111_video_probe(struct i2c_client *client)
        s32 data;
        int ret;

+       /* Assign context to avoid oops */
+       mt9m111->ctx = &context_a;
+
        ret = mt9m111_s_power(&mt9m111->subdev, 1);
        if (ret < 0)
                return ret;


Regards.

-- 
Javier Martin
Vista Silicon S.L.
CDTUC - FASE C - Oficina S-345
Avda de los Castros s/n
39005- Santander. Cantabria. Spain
+34 942 25 32 60
www.vista-silicon.com

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2013-03-11 11:42 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-07  9:43 mt9m111/mt9m131: kernel 3.8 issues javier Martin
2013-03-07 12:13 ` Benoît Thébaudeau
2013-03-08  7:55   ` javier Martin
2013-03-08 11:53     ` Benoît Thébaudeau
2013-03-08 12:37       ` javier Martin
2013-03-08 13:17         ` Benoît Thébaudeau
2013-03-08 18:09           ` Guennadi Liakhovetski
2013-03-11 11:12             ` Guennadi Liakhovetski
2013-03-11 11:42               ` javier Martin
2013-03-08 18:03 ` Guennadi Liakhovetski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox