| From b3cb53721890879d7bde31f5f9eefd4edf41ab64 Mon Sep 17 00:00:00 2001 |
| From: Alberto Panizzo <maramaopercheseimorto@gmail.com> |
| Date: Tue, 2 Feb 2010 13:43:59 -0800 |
| Subject: mx3fb: some debug and initialisation fixes |
| |
| From: Alberto Panizzo <maramaopercheseimorto@gmail.com> |
| |
| commit b3cb53721890879d7bde31f5f9eefd4edf41ab64 upstream. |
| |
| Fix the kernel oops when dev_dbg is called with mx3_fbi->txd == NULL |
| |
| Fix the late initialisation of mx3fb->backlight_level. If not, in the |
| chain of function started by init_fb_chan(), in __blank() call |
| sdc_set_brightness(mx3fb, mx3fb->backlight_level) that will shut down the |
| CONTRAST PWM output. |
| |
| Signed-off-by: Alberto Panizzo <maramaopercheseimorto@gmail.com> |
| Acked-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> |
| Cc: Sascha Hauer <s.hauer@pengutronix.de> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/video/mx3fb.c | 12 ++++++++---- |
| 1 file changed, 8 insertions(+), 4 deletions(-) |
| |
| --- a/drivers/video/mx3fb.c |
| +++ b/drivers/video/mx3fb.c |
| @@ -324,8 +324,11 @@ static void sdc_enable_channel(struct mx |
| unsigned long flags; |
| dma_cookie_t cookie; |
| |
| - dev_dbg(mx3fb->dev, "mx3fbi %p, desc %p, sg %p\n", mx3_fbi, |
| - to_tx_desc(mx3_fbi->txd), to_tx_desc(mx3_fbi->txd)->sg); |
| + if (mx3_fbi->txd) |
| + dev_dbg(mx3fb->dev, "mx3fbi %p, desc %p, sg %p\n", mx3_fbi, |
| + to_tx_desc(mx3_fbi->txd), to_tx_desc(mx3_fbi->txd)->sg); |
| + else |
| + dev_dbg(mx3fb->dev, "mx3fbi %p, txd = NULL\n", mx3_fbi); |
| |
| /* This enables the channel */ |
| if (mx3_fbi->cookie < 0) { |
| @@ -646,6 +649,7 @@ static int sdc_set_global_alpha(struct m |
| |
| static void sdc_set_brightness(struct mx3fb_data *mx3fb, uint8_t value) |
| { |
| + dev_dbg(mx3fb->dev, "%s: value = %d\n", __func__, value); |
| /* This might be board-specific */ |
| mx3fb_write_reg(mx3fb, 0x03000000UL | value << 16, SDC_PWM_CTRL); |
| return; |
| @@ -1486,12 +1490,12 @@ static int mx3fb_probe(struct platform_d |
| goto ersdc0; |
| } |
| |
| + mx3fb->backlight_level = 255; |
| + |
| ret = init_fb_chan(mx3fb, to_idmac_chan(chan)); |
| if (ret < 0) |
| goto eisdc0; |
| |
| - mx3fb->backlight_level = 255; |
| - |
| return 0; |
| |
| eisdc0: |