Linux Framebuffer Layer development
 help / color / mirror / Atom feed
* Re: [PATCH] fbdev: fix possible NULL pointer derefernce
From: Jean-Christophe PLAGNIOL-VILLARD @ 2014-04-16 12:38 UTC (permalink / raw)
  To: Daeseok Youn
  Cc: Jean-Christophe PLAGNIOL-VILLARD, tomi.valkeinen, jg1.han,
	laurent.pinchart, robdclark, linux-fbdev, linux-kernel
In-Reply-To: <20140416094034.GA18082@devel>


On Apr 16, 2014, at 5:40 PM, Daeseok Youn <daeseok.youn@gmail.com> wrote:

> 
> The spec->modedb can be NULL by fb_create_modedb().
> 
> And also smatch says:
> drivers/video/fbdev/core/fbmon.c:975 fb_edid_to_monspecs() error:
> potential null dereference 'specs->modedb'.
> (fb_create_modedb returns null)
> 
> Signed-off-by: Daeseok Youn <daeseok.youn@gmail.com>
> ---
> drivers/video/fbdev/core/fbmon.c |    3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/video/fbdev/core/fbmon.c b/drivers/video/fbdev/core/fbmon.c
> index c204ebe..db274ca 100644
> --- a/drivers/video/fbdev/core/fbmon.c
> +++ b/drivers/video/fbdev/core/fbmon.c
> @@ -966,6 +966,9 @@ void fb_edid_to_monspecs(unsigned char *edid, struct fb_monspecs *specs)
> 
> 	specs->modedb = fb_create_modedb(edid, &specs->modedb_len);
> 
> +	if (!specs->modedb)
> +		return;
> +

we need to return an error and trace it

Best Regards,
J.
> 	/*
> 	 * Workaround for buggy EDIDs that sets that the first
> 	 * detailed timing is preferred but has not detailed
> -- 
> 1.7.4.4
> 


^ permalink raw reply

* Re: [GIT PULL] fbdev fixes for 3.15
From: Linus Torvalds @ 2014-04-16 23:04 UTC (permalink / raw)
  To: Tomi Valkeinen; +Cc: linux-kernel, linux-fbdev
In-Reply-To: <534E4775.8010009@ti.com>

On Wed, Apr 16, 2014 at 2:03 AM, Tomi Valkeinen <tomi.valkeinen@ti.com> wrote:
>
> The drivers/video/Kconfig change in this pull request will conflict with the
> fbdev reorder series, which is not yet in your tree. If that's an issue, I can
> resend this without the Kconfig change.

I was actually hoping/expecting you to just resend the renaming
rebased on top of 3.15-rc1. Or maybe you could do it on top of this.

            Linus

^ permalink raw reply

* Re: [PATCH] fbdev: fix possible NULL pointer derefernce
From: DaeSeok Youn @ 2014-04-17  0:00 UTC (permalink / raw)
  To: Jean-Christophe PLAGNIOL-VILLARD
  Cc: tomi.valkeinen, jg1.han, laurent.pinchart, Rob Clark, linux-fbdev,
	linux-kernel
In-Reply-To: <6A3BE65E-93FD-4E22-A55E-49E54E435558@jcrosoft.com>

Hello,

2014-04-16 21:38 GMT+09:00 Jean-Christophe PLAGNIOL-VILLARD
<plagnioj@jcrosoft.com>:
>
> On Apr 16, 2014, at 5:40 PM, Daeseok Youn <daeseok.youn@gmail.com> wrote:
>
>>
>> The spec->modedb can be NULL by fb_create_modedb().
>>
>> And also smatch says:
>> drivers/video/fbdev/core/fbmon.c:975 fb_edid_to_monspecs() error:
>> potential null dereference 'specs->modedb'.
>> (fb_create_modedb returns null)
>>
>> Signed-off-by: Daeseok Youn <daeseok.youn@gmail.com>
>> ---
>> drivers/video/fbdev/core/fbmon.c |    3 +++
>> 1 files changed, 3 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/video/fbdev/core/fbmon.c b/drivers/video/fbdev/core/fbmon.c
>> index c204ebe..db274ca 100644
>> --- a/drivers/video/fbdev/core/fbmon.c
>> +++ b/drivers/video/fbdev/core/fbmon.c
>> @@ -966,6 +966,9 @@ void fb_edid_to_monspecs(unsigned char *edid, struct fb_monspecs *specs)
>>
>>       specs->modedb = fb_create_modedb(edid, &specs->modedb_len);
>>
>> +     if (!specs->modedb)
>> +             return;
>> +
>
> we need to return an error and trace it
Yes, you're right. I will change return type from void to int and add
to handle an error when this function(fb_edid_to_monspecs) is called.

I will send this patch as your comment.

Thanks for review.

Daeseok Youn.
>
> Best Regards,
> J.
>>       /*
>>        * Workaround for buggy EDIDs that sets that the first
>>        * detailed timing is preferred but has not detailed
>> --
>> 1.7.4.4
>>
>

^ permalink raw reply

* Re: [GIT PULL] fbdev fixes for 3.15
From: Stephen Rothwell @ 2014-04-17  3:24 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Tomi Valkeinen, linux-kernel, linux-fbdev
In-Reply-To: <CA+55aFz7Hgjc9wmiriqGT8VXNF-7b0aUKf96r=TCP+1NOTSVeQ@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 715 bytes --]

On Wed, 16 Apr 2014 16:04:39 -0700 Linus Torvalds <torvalds@linux-foundation.org> wrote:
>
> On Wed, Apr 16, 2014 at 2:03 AM, Tomi Valkeinen <tomi.valkeinen@ti.com> wrote:
> >
> > The drivers/video/Kconfig change in this pull request will conflict with the
> > fbdev reorder series, which is not yet in your tree. If that's an issue, I can
> > resend this without the Kconfig change.
> 
> I was actually hoping/expecting you to just resend the renaming
> rebased on top of 3.15-rc1. Or maybe you could do it on top of this.

Yeah, I was kind of hoping that this movement of files would be done with
sooner rather than later ...

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply

* Re: [PATCH] video: mx3fb: Add backlight support
From: Alexander Stein @ 2014-04-17  6:05 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <1396510675-14969-1-git-send-email-alexander.stein@systec-electronic.com>

Any feedback on this?

Alexander

On Thursday 03 April 2014 09:37:55, Alexander Stein wrote:
> Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com>
> ---
>  drivers/video/mx3fb.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 98 insertions(+)
> 
> diff --git a/drivers/video/mx3fb.c b/drivers/video/mx3fb.c
> index 142e860..10a7244 100644
> --- a/drivers/video/mx3fb.c
> +++ b/drivers/video/mx3fb.c
> @@ -27,6 +27,7 @@
>  #include <linux/clk.h>
>  #include <linux/mutex.h>
>  #include <linux/dma/ipu-dma.h>
> +#include <linux/backlight.h>
>  
>  #include <linux/platform_data/dma-imx.h>
>  #include <linux/platform_data/video-mx3fb.h>
> @@ -34,6 +35,12 @@
>  #include <asm/io.h>
>  #include <asm/uaccess.h>
>  
> +#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || \
> +	(defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE) && \
> +		defined(CONFIG_MX3FB_MODULE))
> +#define PWM_BACKLIGHT_AVAILABLE
> +#endif
> +
>  #define MX3FB_NAME		"mx3_sdc_fb"
>  
>  #define MX3FB_REG_OFFSET	0xB4
> @@ -242,6 +249,10 @@ struct mx3fb_data {
>  	spinlock_t		lock;
>  	struct device		*dev;
>  
> +#ifdef PWM_BACKLIGHT_AVAILABLE
> +	struct backlight_device	*bl;
> +#endif
> +
>  	uint32_t		h_start_width;
>  	uint32_t		v_start_width;
>  	enum disp_data_mapping	disp_data_fmt;
> @@ -271,6 +282,74 @@ struct mx3fb_info {
>  	struct fb_var_screeninfo	cur_var; /* current var info */
>  };
>  
> +static void sdc_set_brightness(struct mx3fb_data *mx3fb, uint8_t value);
> +
> +#ifdef PWM_BACKLIGHT_AVAILABLE
> +static u32 sdc_get_brightness(struct mx3fb_data *mx3fb);
> +
> +static int mx3fb_bl_get_brightness(struct backlight_device *bl)
> +{
> +	struct mx3fb_data *fbd = bl_get_data(bl);
> +
> +	return sdc_get_brightness(fbd);
> +}
> +
> +static int mx3fb_bl_update_status(struct backlight_device *bl)
> +{
> +	struct mx3fb_data *fbd = bl_get_data(bl);
> +	int brightness = bl->props.brightness;
> +
> +	if (bl->props.power != FB_BLANK_UNBLANK)
> +		brightness = 0;
> +	if (bl->props.fb_blank != FB_BLANK_UNBLANK)
> +		brightness = 0;
> +
> +	fbd->backlight_level = (fbd->backlight_level & ~0xFF) | brightness;
> +
> +	sdc_set_brightness(fbd, fbd->backlight_level);
> +
> +	return 0;
> +}
> +
> +static const struct backlight_ops mx3fb_lcdc_bl_ops = {
> +	.update_status = mx3fb_bl_update_status,
> +	.get_brightness = mx3fb_bl_get_brightness,
> +};
> +
> +static void mx3fb_init_backlight(struct mx3fb_data *fbd)
> +{
> +	struct backlight_properties props;
> +	struct backlight_device	*bl;
> +
> +	if (fbd->bl)
> +		return;
> +
> +	memset(&props, 0, sizeof(struct backlight_properties));
> +	props.max_brightness = 0xff;
> +	props.type = BACKLIGHT_RAW;
> +	sdc_set_brightness(fbd, fbd->backlight_level);
> +
> +	bl = backlight_device_register("mx3fb-bl", fbd->dev, fbd,
> +				       &mx3fb_lcdc_bl_ops, &props);
> +	if (IS_ERR(bl)) {
> +		dev_err(fbd->dev, "error %ld on backlight register\n",
> +				PTR_ERR(bl));
> +		return;
> +	}
> +
> +	fbd->bl = bl;
> +	bl->props.power = FB_BLANK_UNBLANK;
> +	bl->props.fb_blank = FB_BLANK_UNBLANK;
> +	bl->props.brightness = mx3fb_bl_get_brightness(bl);
> +}
> +
> +static void mx3fb_exit_backlight(struct mx3fb_data *fbd)
> +{
> +	if (fbd->bl)
> +		backlight_device_unregister(fbd->bl);
> +}
> +#endif
> +
>  static void mx3fb_dma_done(void *);
>  
>  /* Used fb-mode and bpp. Can be set on kernel command line, therefore file-static. */
> @@ -628,6 +707,18 @@ static int sdc_set_global_alpha(struct mx3fb_data *mx3fb, bool enable, uint8_t a
>  	return 0;
>  }
>  
> +#ifdef PWM_BACKLIGHT_AVAILABLE
> +static u32 sdc_get_brightness(struct mx3fb_data *mx3fb)
> +{
> +	u32 brightness;
> +
> +	brightness = mx3fb_read_reg(mx3fb, SDC_PWM_CTRL);
> +	brightness = (brightness >> 16) & 0xFF;
> +
> +	return brightness;
> +}
> +#endif
> +
>  static void sdc_set_brightness(struct mx3fb_data *mx3fb, uint8_t value)
>  {
>  	dev_dbg(mx3fb->dev, "%s: value = %d\n", __func__, value);
> @@ -1534,6 +1625,9 @@ static int mx3fb_probe(struct platform_device *pdev)
>  	if (ret < 0)
>  		goto eisdc0;
>  
> +#ifdef PWM_BACKLIGHT_AVAILABLE
> +	mx3fb_init_backlight(mx3fb);
> +#endif
>  	return 0;
>  
>  eisdc0:
> @@ -1557,6 +1651,10 @@ static int mx3fb_remove(struct platform_device *dev)
>  	chan = &mx3_fbi->idmac_channel->dma_chan;
>  	release_fbi(fbi);
>  
> +#ifdef PWM_BACKLIGHT_AVAILABLE
> +	mx3fb_exit_backlight(mx3fb);
> +#endif
> +
>  	dma_release_channel(chan);
>  	dmaengine_put();
>  
> 

-- 
Dipl.-Inf. Alexander Stein

SYS TEC electronic GmbH
Am Windrad 2
08468 Heinsdorfergrund
Tel.: 03765 38600-1156
Fax: 03765 38600-4100
Email: alexander.stein@systec-electronic.com
Website: www.systec-electronic.com
 
Managing Director: Dipl.-Phys. Siegmar Schmidt
Commercial registry: Amtsgericht Chemnitz, HRB 28082


^ permalink raw reply

* Re: [GIT PULL] fbdev fixes for 3.15
From: Tomi Valkeinen @ 2014-04-17  7:08 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-fbdev, Stephen Rothwell
In-Reply-To: <CA+55aFz7Hgjc9wmiriqGT8VXNF-7b0aUKf96r=TCP+1NOTSVeQ@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 698 bytes --]

On 17/04/14 02:04, Linus Torvalds wrote:
> On Wed, Apr 16, 2014 at 2:03 AM, Tomi Valkeinen <tomi.valkeinen@ti.com> wrote:
>>
>> The drivers/video/Kconfig change in this pull request will conflict with the
>> fbdev reorder series, which is not yet in your tree. If that's an issue, I can
>> resend this without the Kconfig change.
> 
> I was actually hoping/expecting you to just resend the renaming
> rebased on top of 3.15-rc1. Or maybe you could do it on top of this.

Oh, sorry. I somehow got the impression that you were fine with what I
had sent, and you'll just merge it after -rc1.

I'll send a rebased version, based on fbdev-fixes-3.15. So pull this one
first.

 Tomi



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply

* [GIT PULL] fbdev reorder for 3.15 (rebased)
From: Tomi Valkeinen @ 2014-04-17  7:08 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, linux-fbdev, Stephen Rothwell

[-- Attachment #1: Type: text/plain, Size: 57714 bytes --]

Hi Linus,

The following changes since commit c26ef3eb3c11274bad1b64498d0a134f85755250:

  video: bf54x-lq043fb: fix build error (2014-04-15 12:44:16 +0300)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux.git tags/fbdev-reorder-3.15

for you to fetch changes up to 776bbb97e0a37fe67bd0870e5aa4845af856b872:

  video: Kconfig: move drm and fb into separate menus (2014-04-17 08:10:20 +0300)

----------------------------------------------------------------
Reorder drivers/video/ directory so that all fbdev drivers are now located in
drivers/video/fbdev/ and the fbdev framework core files are located in
drivers/video/fbdev/core/

The drivers/video/Kconfig is modified so that the DRM and the fbdev menu
options are in separate submenus, instead of both being mixed in the same
'Graphics support' menu level.

----------------------------------------------------------------
Tomi Valkeinen (3):
      video: move fbdev to drivers/video/fbdev
      fbdev: move fbdev core files to separate directory
      video: Kconfig: move drm and fb into separate menus

 Documentation/DocBook/device-drivers.tmpl          |   10 +-
 drivers/Makefile                                   |    4 +-
 drivers/staging/xgifb/vb_def.h                     |    2 +-
 drivers/staging/xgifb/vb_struct.h                  |    2 +-
 drivers/staging/xgifb/vgatypes.h                   |    4 +-
 drivers/video/Kconfig                              | 2480 +-------------------
 drivers/video/Makefile                             |  166 +-
 drivers/video/console/sticon.c                     |    2 +-
 drivers/video/console/sticore.c                    |    2 +-
 drivers/video/{ => fbdev}/68328fb.c                |    0
 drivers/video/fbdev/Kconfig                        | 2474 +++++++++++++++++++
 drivers/video/fbdev/Makefile                       |  152 ++
 drivers/video/{ => fbdev}/acornfb.c                |    0
 drivers/video/{ => fbdev}/acornfb.h                |    0
 drivers/video/{ => fbdev}/amba-clcd.c              |    0
 drivers/video/{ => fbdev}/amifb.c                  |    0
 drivers/video/{ => fbdev}/arcfb.c                  |    0
 drivers/video/{ => fbdev}/arkfb.c                  |    0
 drivers/video/{ => fbdev}/asiliantfb.c             |    0
 drivers/video/{ => fbdev}/atafb.c                  |    0
 drivers/video/{ => fbdev}/atafb.h                  |    0
 drivers/video/{ => fbdev}/atafb_iplan2p2.c         |    0
 drivers/video/{ => fbdev}/atafb_iplan2p4.c         |    0
 drivers/video/{ => fbdev}/atafb_iplan2p8.c         |    0
 drivers/video/{ => fbdev}/atafb_mfb.c              |    0
 drivers/video/{ => fbdev}/atafb_utils.h            |    0
 drivers/video/{ => fbdev}/atmel_lcdfb.c            |    0
 drivers/video/{ => fbdev}/aty/Makefile             |    0
 drivers/video/{ => fbdev}/aty/ati_ids.h            |    0
 drivers/video/{ => fbdev}/aty/aty128fb.c           |    0
 drivers/video/{ => fbdev}/aty/atyfb.h              |    0
 drivers/video/{ => fbdev}/aty/atyfb_base.c         |    0
 drivers/video/{ => fbdev}/aty/mach64_accel.c       |    0
 drivers/video/{ => fbdev}/aty/mach64_ct.c          |    0
 drivers/video/{ => fbdev}/aty/mach64_cursor.c      |    2 +-
 drivers/video/{ => fbdev}/aty/mach64_gx.c          |    0
 drivers/video/{ => fbdev}/aty/radeon_accel.c       |    0
 drivers/video/{ => fbdev}/aty/radeon_backlight.c   |    0
 drivers/video/{ => fbdev}/aty/radeon_base.c        |    0
 drivers/video/{ => fbdev}/aty/radeon_i2c.c         |    0
 drivers/video/{ => fbdev}/aty/radeon_monitor.c     |    0
 drivers/video/{ => fbdev}/aty/radeon_pm.c          |    0
 drivers/video/{ => fbdev}/aty/radeonfb.h           |    0
 drivers/video/{ => fbdev}/au1100fb.c               |    0
 drivers/video/{ => fbdev}/au1100fb.h               |    0
 drivers/video/{ => fbdev}/au1200fb.c               |    0
 drivers/video/{ => fbdev}/au1200fb.h               |    0
 drivers/video/{ => fbdev}/auo_k1900fb.c            |    0
 drivers/video/{ => fbdev}/auo_k1901fb.c            |    0
 drivers/video/{ => fbdev}/auo_k190x.c              |    0
 drivers/video/{ => fbdev}/auo_k190x.h              |    0
 drivers/video/{ => fbdev}/bf537-lq035.c            |    0
 drivers/video/{ => fbdev}/bf54x-lq043fb.c          |    0
 drivers/video/{ => fbdev}/bfin-lq035q1-fb.c        |    0
 drivers/video/{ => fbdev}/bfin-t350mcqb-fb.c       |    0
 drivers/video/{ => fbdev}/bfin_adv7393fb.c         |    0
 drivers/video/{ => fbdev}/bfin_adv7393fb.h         |    0
 drivers/video/{ => fbdev}/broadsheetfb.c           |    0
 drivers/video/{ => fbdev}/bt431.h                  |    0
 drivers/video/{ => fbdev}/bt455.h                  |    0
 drivers/video/{ => fbdev}/bw2.c                    |    0
 drivers/video/{ => fbdev}/c2p.h                    |    0
 drivers/video/{ => fbdev}/c2p_core.h               |    0
 drivers/video/{ => fbdev}/c2p_iplan2.c             |    0
 drivers/video/{ => fbdev}/c2p_planar.c             |    0
 drivers/video/{ => fbdev}/carminefb.c              |    0
 drivers/video/{ => fbdev}/carminefb.h              |    0
 drivers/video/{ => fbdev}/carminefb_regs.h         |    0
 drivers/video/{ => fbdev}/cg14.c                   |    0
 drivers/video/{ => fbdev}/cg3.c                    |    0
 drivers/video/{ => fbdev}/cg6.c                    |    0
 drivers/video/{ => fbdev}/chipsfb.c                |    0
 drivers/video/{ => fbdev}/cirrusfb.c               |    0
 drivers/video/{ => fbdev}/clps711xfb.c             |    0
 drivers/video/{ => fbdev}/cobalt_lcdfb.c           |    0
 drivers/video/{ => fbdev}/controlfb.c              |    0
 drivers/video/{ => fbdev}/controlfb.h              |    0
 drivers/video/fbdev/core/Makefile                  |   16 +
 drivers/video/{ => fbdev/core}/cfbcopyarea.c       |    0
 drivers/video/{ => fbdev/core}/cfbfillrect.c       |    0
 drivers/video/{ => fbdev/core}/cfbimgblt.c         |    0
 drivers/video/{ => fbdev/core}/fb_ddc.c            |    2 +-
 drivers/video/{ => fbdev/core}/fb_defio.c          |    0
 drivers/video/{ => fbdev/core}/fb_draw.h           |    0
 drivers/video/{ => fbdev/core}/fb_notify.c         |    0
 drivers/video/{ => fbdev/core}/fb_sys_fops.c       |    0
 drivers/video/{ => fbdev/core}/fbcmap.c            |    0
 drivers/video/{ => fbdev/core}/fbcvt.c             |    0
 drivers/video/{ => fbdev/core}/fbmem.c             |    0
 drivers/video/{ => fbdev/core}/fbmon.c             |    2 +-
 drivers/video/{ => fbdev/core}/fbsysfs.c           |    0
 drivers/video/{ => fbdev/core}/modedb.c            |    0
 drivers/video/{ => fbdev/core}/svgalib.c           |    0
 drivers/video/{ => fbdev/core}/syscopyarea.c       |    0
 drivers/video/{ => fbdev/core}/sysfillrect.c       |    0
 drivers/video/{ => fbdev/core}/sysimgblt.c         |    0
 drivers/video/{ => fbdev}/cyber2000fb.c            |    0
 drivers/video/{ => fbdev}/cyber2000fb.h            |    0
 drivers/video/{ => fbdev}/da8xx-fb.c               |    0
 drivers/video/{ => fbdev}/dnfb.c                   |    0
 drivers/video/{ => fbdev}/edid.h                   |    0
 drivers/video/{ => fbdev}/efifb.c                  |    0
 drivers/video/{ => fbdev}/ep93xx-fb.c              |    0
 drivers/video/{ => fbdev}/exynos/Kconfig           |    0
 drivers/video/{ => fbdev}/exynos/Makefile          |    0
 drivers/video/{ => fbdev}/exynos/exynos_mipi_dsi.c |    0
 .../{ => fbdev}/exynos/exynos_mipi_dsi_common.c    |    0
 .../{ => fbdev}/exynos/exynos_mipi_dsi_common.h    |    0
 .../{ => fbdev}/exynos/exynos_mipi_dsi_lowlevel.c  |    0
 .../{ => fbdev}/exynos/exynos_mipi_dsi_lowlevel.h  |    0
 .../{ => fbdev}/exynos/exynos_mipi_dsi_regs.h      |    0
 drivers/video/{ => fbdev}/exynos/s6e8ax0.c         |    0
 drivers/video/{ => fbdev}/fb-puv3.c                |    0
 drivers/video/{ => fbdev}/ffb.c                    |    0
 drivers/video/{ => fbdev}/fm2fb.c                  |    0
 drivers/video/{ => fbdev}/fsl-diu-fb.c             |    0
 drivers/video/{ => fbdev}/g364fb.c                 |    0
 drivers/video/{ => fbdev}/gbefb.c                  |    0
 drivers/video/{ => fbdev}/geode/Kconfig            |    0
 drivers/video/{ => fbdev}/geode/Makefile           |    0
 drivers/video/{ => fbdev}/geode/display_gx.c       |    0
 drivers/video/{ => fbdev}/geode/display_gx1.c      |    0
 drivers/video/{ => fbdev}/geode/display_gx1.h      |    0
 drivers/video/{ => fbdev}/geode/geodefb.h          |    0
 drivers/video/{ => fbdev}/geode/gx1fb_core.c       |    0
 drivers/video/{ => fbdev}/geode/gxfb.h             |    0
 drivers/video/{ => fbdev}/geode/gxfb_core.c        |    0
 drivers/video/{ => fbdev}/geode/lxfb.h             |    0
 drivers/video/{ => fbdev}/geode/lxfb_core.c        |    0
 drivers/video/{ => fbdev}/geode/lxfb_ops.c         |    0
 drivers/video/{ => fbdev}/geode/suspend_gx.c       |    0
 drivers/video/{ => fbdev}/geode/video_cs5530.c     |    0
 drivers/video/{ => fbdev}/geode/video_cs5530.h     |    0
 drivers/video/{ => fbdev}/geode/video_gx.c         |    0
 drivers/video/{ => fbdev}/goldfishfb.c             |    0
 drivers/video/{ => fbdev}/grvga.c                  |    0
 drivers/video/{ => fbdev}/gxt4500.c                |    0
 drivers/video/{ => fbdev}/hecubafb.c               |    0
 drivers/video/{ => fbdev}/hgafb.c                  |    0
 drivers/video/{ => fbdev}/hitfb.c                  |    0
 drivers/video/{ => fbdev}/hpfb.c                   |    0
 drivers/video/{ => fbdev}/hyperv_fb.c              |    0
 drivers/video/{ => fbdev}/i740_reg.h               |    0
 drivers/video/{ => fbdev}/i740fb.c                 |    0
 drivers/video/{ => fbdev}/i810/Makefile            |    0
 drivers/video/{ => fbdev}/i810/i810-i2c.c          |    0
 drivers/video/{ => fbdev}/i810/i810.h              |    0
 drivers/video/{ => fbdev}/i810/i810_accel.c        |    0
 drivers/video/{ => fbdev}/i810/i810_dvt.c          |    0
 drivers/video/{ => fbdev}/i810/i810_gtf.c          |    0
 drivers/video/{ => fbdev}/i810/i810_main.c         |    0
 drivers/video/{ => fbdev}/i810/i810_main.h         |    0
 drivers/video/{ => fbdev}/i810/i810_regs.h         |    0
 drivers/video/{ => fbdev}/igafb.c                  |    0
 drivers/video/{ => fbdev}/imsttfb.c                |    0
 drivers/video/{ => fbdev}/imxfb.c                  |    0
 drivers/video/{ => fbdev}/intelfb/Makefile         |    0
 drivers/video/{ => fbdev}/intelfb/intelfb.h        |    0
 drivers/video/{ => fbdev}/intelfb/intelfb_i2c.c    |    0
 drivers/video/{ => fbdev}/intelfb/intelfbdrv.c     |    0
 drivers/video/{ => fbdev}/intelfb/intelfbhw.c      |    0
 drivers/video/{ => fbdev}/intelfb/intelfbhw.h      |    0
 drivers/video/{ => fbdev}/jz4740_fb.c              |    0
 drivers/video/{ => fbdev}/kyro/Makefile            |    0
 drivers/video/{ => fbdev}/kyro/STG4000InitDevice.c |    0
 drivers/video/{ => fbdev}/kyro/STG4000Interface.h  |    0
 .../video/{ => fbdev}/kyro/STG4000OverlayDevice.c  |    0
 drivers/video/{ => fbdev}/kyro/STG4000Ramdac.c     |    0
 drivers/video/{ => fbdev}/kyro/STG4000Reg.h        |    0
 drivers/video/{ => fbdev}/kyro/STG4000VTG.c        |    0
 drivers/video/{ => fbdev}/kyro/fbdev.c             |    0
 drivers/video/{ => fbdev}/leo.c                    |    0
 drivers/video/{ => fbdev}/macfb.c                  |    0
 drivers/video/{ => fbdev}/macmodes.c               |    0
 drivers/video/{ => fbdev}/macmodes.h               |    0
 drivers/video/{ => fbdev}/matrox/Makefile          |    0
 drivers/video/{ => fbdev}/matrox/g450_pll.c        |    0
 drivers/video/{ => fbdev}/matrox/g450_pll.h        |    0
 drivers/video/{ => fbdev}/matrox/i2c-matroxfb.c    |    0
 .../video/{ => fbdev}/matrox/matroxfb_DAC1064.c    |    0
 .../video/{ => fbdev}/matrox/matroxfb_DAC1064.h    |    0
 drivers/video/{ => fbdev}/matrox/matroxfb_Ti3026.c |    0
 drivers/video/{ => fbdev}/matrox/matroxfb_Ti3026.h |    0
 drivers/video/{ => fbdev}/matrox/matroxfb_accel.c  |    0
 drivers/video/{ => fbdev}/matrox/matroxfb_accel.h  |    0
 drivers/video/{ => fbdev}/matrox/matroxfb_base.c   |    0
 drivers/video/{ => fbdev}/matrox/matroxfb_base.h   |    0
 drivers/video/{ => fbdev}/matrox/matroxfb_crtc2.c  |    0
 drivers/video/{ => fbdev}/matrox/matroxfb_crtc2.h  |    0
 drivers/video/{ => fbdev}/matrox/matroxfb_g450.c   |    0
 drivers/video/{ => fbdev}/matrox/matroxfb_g450.h   |    0
 drivers/video/{ => fbdev}/matrox/matroxfb_maven.c  |    0
 drivers/video/{ => fbdev}/matrox/matroxfb_maven.h  |    0
 drivers/video/{ => fbdev}/matrox/matroxfb_misc.c   |    0
 drivers/video/{ => fbdev}/matrox/matroxfb_misc.h   |    0
 drivers/video/{ => fbdev}/maxinefb.c               |    0
 drivers/video/{ => fbdev}/mb862xx/Makefile         |    0
 drivers/video/{ => fbdev}/mb862xx/mb862xx-i2c.c    |    0
 drivers/video/{ => fbdev}/mb862xx/mb862xx_reg.h    |    0
 drivers/video/{ => fbdev}/mb862xx/mb862xxfb.h      |    0
 .../video/{ => fbdev}/mb862xx/mb862xxfb_accel.c    |    0
 .../video/{ => fbdev}/mb862xx/mb862xxfb_accel.h    |    0
 drivers/video/{ => fbdev}/mb862xx/mb862xxfbdrv.c   |    0
 drivers/video/{ => fbdev}/mbx/Makefile             |    0
 drivers/video/{ => fbdev}/mbx/mbxdebugfs.c         |    0
 drivers/video/{ => fbdev}/mbx/mbxfb.c              |    0
 drivers/video/{ => fbdev}/mbx/reg_bits.h           |    0
 drivers/video/{ => fbdev}/mbx/regs.h               |    0
 drivers/video/{ => fbdev}/metronomefb.c            |    0
 drivers/video/{ => fbdev}/mmp/Kconfig              |    6 +-
 drivers/video/{ => fbdev}/mmp/Makefile             |    0
 drivers/video/{ => fbdev}/mmp/core.c               |    0
 drivers/video/{ => fbdev}/mmp/fb/Kconfig           |    0
 drivers/video/{ => fbdev}/mmp/fb/Makefile          |    0
 drivers/video/{ => fbdev}/mmp/fb/mmpfb.c           |    0
 drivers/video/{ => fbdev}/mmp/fb/mmpfb.h           |    0
 drivers/video/{ => fbdev}/mmp/hw/Kconfig           |    0
 drivers/video/{ => fbdev}/mmp/hw/Makefile          |    0
 drivers/video/{ => fbdev}/mmp/hw/mmp_ctrl.c        |    0
 drivers/video/{ => fbdev}/mmp/hw/mmp_ctrl.h        |    0
 drivers/video/{ => fbdev}/mmp/hw/mmp_spi.c         |    0
 drivers/video/{ => fbdev}/mmp/panel/Kconfig        |    0
 drivers/video/{ => fbdev}/mmp/panel/Makefile       |    0
 .../video/{ => fbdev}/mmp/panel/tpo_tj032md01bw.c  |    0
 drivers/video/{ => fbdev}/msm/Makefile             |    0
 drivers/video/{ => fbdev}/msm/mddi.c               |    0
 drivers/video/{ => fbdev}/msm/mddi_client_dummy.c  |    0
 .../video/{ => fbdev}/msm/mddi_client_nt35399.c    |    0
 .../video/{ => fbdev}/msm/mddi_client_toshiba.c    |    0
 drivers/video/{ => fbdev}/msm/mddi_hw.h            |    0
 drivers/video/{ => fbdev}/msm/mdp.c                |    0
 drivers/video/{ => fbdev}/msm/mdp_csc_table.h      |    0
 drivers/video/{ => fbdev}/msm/mdp_hw.h             |    0
 drivers/video/{ => fbdev}/msm/mdp_ppp.c            |    0
 drivers/video/{ => fbdev}/msm/mdp_scale_tables.c   |    0
 drivers/video/{ => fbdev}/msm/mdp_scale_tables.h   |    0
 drivers/video/{ => fbdev}/msm/msm_fb.c             |    0
 drivers/video/{ => fbdev}/mx3fb.c                  |    0
 drivers/video/{ => fbdev}/mxsfb.c                  |    0
 drivers/video/{ => fbdev}/n411.c                   |    0
 drivers/video/{ => fbdev}/neofb.c                  |    0
 drivers/video/{ => fbdev}/nuc900fb.c               |    0
 drivers/video/{ => fbdev}/nuc900fb.h               |    0
 drivers/video/{ => fbdev}/nvidia/Makefile          |    0
 drivers/video/{ => fbdev}/nvidia/nv_accel.c        |    0
 drivers/video/{ => fbdev}/nvidia/nv_backlight.c    |    0
 drivers/video/{ => fbdev}/nvidia/nv_dma.h          |    0
 drivers/video/{ => fbdev}/nvidia/nv_hw.c           |    0
 drivers/video/{ => fbdev}/nvidia/nv_i2c.c          |    0
 drivers/video/{ => fbdev}/nvidia/nv_local.h        |    0
 drivers/video/{ => fbdev}/nvidia/nv_of.c           |    0
 drivers/video/{ => fbdev}/nvidia/nv_proto.h        |    0
 drivers/video/{ => fbdev}/nvidia/nv_setup.c        |    0
 drivers/video/{ => fbdev}/nvidia/nv_type.h         |    0
 drivers/video/{ => fbdev}/nvidia/nvidia.c          |    0
 drivers/video/{ => fbdev}/ocfb.c                   |    0
 drivers/video/{ => fbdev}/offb.c                   |    0
 drivers/video/{ => fbdev}/omap/Kconfig             |    0
 drivers/video/{ => fbdev}/omap/Makefile            |    0
 drivers/video/{ => fbdev}/omap/hwa742.c            |    0
 drivers/video/{ => fbdev}/omap/lcd_ams_delta.c     |    0
 drivers/video/{ => fbdev}/omap/lcd_h3.c            |    0
 drivers/video/{ => fbdev}/omap/lcd_htcherald.c     |    0
 drivers/video/{ => fbdev}/omap/lcd_inn1510.c       |    0
 drivers/video/{ => fbdev}/omap/lcd_inn1610.c       |    0
 drivers/video/{ => fbdev}/omap/lcd_mipid.c         |    0
 drivers/video/{ => fbdev}/omap/lcd_osk.c           |    0
 drivers/video/{ => fbdev}/omap/lcd_palmte.c        |    0
 drivers/video/{ => fbdev}/omap/lcd_palmtt.c        |    0
 drivers/video/{ => fbdev}/omap/lcd_palmz71.c       |    0
 drivers/video/{ => fbdev}/omap/lcdc.c              |    0
 drivers/video/{ => fbdev}/omap/lcdc.h              |    0
 drivers/video/{ => fbdev}/omap/omapfb.h            |    0
 drivers/video/{ => fbdev}/omap/omapfb_main.c       |    0
 drivers/video/{ => fbdev}/omap/sossi.c             |    0
 drivers/video/fbdev/omap2/Kconfig                  |   10 +
 drivers/video/{ => fbdev}/omap2/Makefile           |    0
 .../video/{ => fbdev}/omap2/displays-new/Kconfig   |    0
 .../video/{ => fbdev}/omap2/displays-new/Makefile  |    0
 .../omap2/displays-new/connector-analog-tv.c       |    0
 .../{ => fbdev}/omap2/displays-new/connector-dvi.c |    0
 .../omap2/displays-new/connector-hdmi.c            |    0
 .../omap2/displays-new/encoder-tfp410.c            |    0
 .../omap2/displays-new/encoder-tpd12s015.c         |    0
 .../{ => fbdev}/omap2/displays-new/panel-dpi.c     |    0
 .../{ => fbdev}/omap2/displays-new/panel-dsi-cm.c  |    0
 .../omap2/displays-new/panel-lgphilips-lb035q02.c  |    0
 .../omap2/displays-new/panel-nec-nl8048hl11.c      |    0
 .../omap2/displays-new/panel-sharp-ls037v7dw01.c   |    0
 .../omap2/displays-new/panel-sony-acx565akm.c      |    0
 .../omap2/displays-new/panel-tpo-td028ttec1.c      |    0
 .../omap2/displays-new/panel-tpo-td043mtea1.c      |    0
 drivers/video/{ => fbdev}/omap2/dss/Kconfig        |    0
 drivers/video/{ => fbdev}/omap2/dss/Makefile       |    0
 drivers/video/{ => fbdev}/omap2/dss/apply.c        |    0
 drivers/video/{ => fbdev}/omap2/dss/core.c         |    0
 drivers/video/{ => fbdev}/omap2/dss/dispc-compat.c |    0
 drivers/video/{ => fbdev}/omap2/dss/dispc-compat.h |    0
 drivers/video/{ => fbdev}/omap2/dss/dispc.c        |    0
 drivers/video/{ => fbdev}/omap2/dss/dispc.h        |    0
 drivers/video/{ => fbdev}/omap2/dss/dispc_coefs.c  |    0
 .../video/{ => fbdev}/omap2/dss/display-sysfs.c    |    0
 drivers/video/{ => fbdev}/omap2/dss/display.c      |    0
 drivers/video/{ => fbdev}/omap2/dss/dpi.c          |    0
 drivers/video/{ => fbdev}/omap2/dss/dsi.c          |    0
 drivers/video/{ => fbdev}/omap2/dss/dss-of.c       |    0
 drivers/video/{ => fbdev}/omap2/dss/dss.c          |    0
 drivers/video/{ => fbdev}/omap2/dss/dss.h          |    0
 drivers/video/{ => fbdev}/omap2/dss/dss_features.c |    0
 drivers/video/{ => fbdev}/omap2/dss/dss_features.h |    0
 drivers/video/{ => fbdev}/omap2/dss/hdmi.h         |    0
 drivers/video/{ => fbdev}/omap2/dss/hdmi4.c        |    0
 drivers/video/{ => fbdev}/omap2/dss/hdmi4_core.c   |    0
 drivers/video/{ => fbdev}/omap2/dss/hdmi4_core.h   |    0
 drivers/video/{ => fbdev}/omap2/dss/hdmi_common.c  |    0
 drivers/video/{ => fbdev}/omap2/dss/hdmi_phy.c     |    0
 drivers/video/{ => fbdev}/omap2/dss/hdmi_pll.c     |    0
 drivers/video/{ => fbdev}/omap2/dss/hdmi_wp.c      |    0
 .../video/{ => fbdev}/omap2/dss/manager-sysfs.c    |    0
 drivers/video/{ => fbdev}/omap2/dss/manager.c      |    0
 drivers/video/{ => fbdev}/omap2/dss/output.c       |    0
 .../video/{ => fbdev}/omap2/dss/overlay-sysfs.c    |    0
 drivers/video/{ => fbdev}/omap2/dss/overlay.c      |    0
 drivers/video/{ => fbdev}/omap2/dss/rfbi.c         |    0
 drivers/video/{ => fbdev}/omap2/dss/sdi.c          |    0
 drivers/video/{ => fbdev}/omap2/dss/venc.c         |    0
 drivers/video/{ => fbdev}/omap2/dss/venc_panel.c   |    0
 drivers/video/{ => fbdev}/omap2/omapfb/Kconfig     |    0
 drivers/video/{ => fbdev}/omap2/omapfb/Makefile    |    0
 .../video/{ => fbdev}/omap2/omapfb/omapfb-ioctl.c  |    0
 .../video/{ => fbdev}/omap2/omapfb/omapfb-main.c   |    0
 .../video/{ => fbdev}/omap2/omapfb/omapfb-sysfs.c  |    0
 drivers/video/{ => fbdev}/omap2/omapfb/omapfb.h    |    0
 drivers/video/{ => fbdev}/omap2/vrfb.c             |    0
 drivers/video/{ => fbdev}/p9100.c                  |    0
 drivers/video/{ => fbdev}/platinumfb.c             |    0
 drivers/video/{ => fbdev}/platinumfb.h             |    0
 drivers/video/{ => fbdev}/pm2fb.c                  |    0
 drivers/video/{ => fbdev}/pm3fb.c                  |    0
 drivers/video/{ => fbdev}/pmag-aa-fb.c             |    0
 drivers/video/{ => fbdev}/pmag-ba-fb.c             |    0
 drivers/video/{ => fbdev}/pmagb-b-fb.c             |    0
 drivers/video/{ => fbdev}/ps3fb.c                  |    0
 drivers/video/{ => fbdev}/pvr2fb.c                 |    0
 drivers/video/{ => fbdev}/pxa168fb.c               |    0
 drivers/video/{ => fbdev}/pxa168fb.h               |    0
 drivers/video/{ => fbdev}/pxa3xx-gcu.c             |    0
 drivers/video/{ => fbdev}/pxa3xx-gcu.h             |    0
 drivers/video/{ => fbdev}/pxafb.c                  |    0
 drivers/video/{ => fbdev}/pxafb.h                  |    0
 drivers/video/{ => fbdev}/q40fb.c                  |    0
 drivers/video/{ => fbdev}/riva/Makefile            |    0
 drivers/video/{ => fbdev}/riva/fbdev.c             |    0
 drivers/video/{ => fbdev}/riva/nv_driver.c         |    0
 drivers/video/{ => fbdev}/riva/nv_type.h           |    0
 drivers/video/{ => fbdev}/riva/nvreg.h             |    0
 drivers/video/{ => fbdev}/riva/riva_hw.c           |    0
 drivers/video/{ => fbdev}/riva/riva_hw.h           |    0
 drivers/video/{ => fbdev}/riva/riva_tbl.h          |    0
 drivers/video/{ => fbdev}/riva/rivafb-i2c.c        |    0
 drivers/video/{ => fbdev}/riva/rivafb.h            |    0
 drivers/video/{ => fbdev}/s1d13xxxfb.c             |    0
 drivers/video/{ => fbdev}/s3c-fb.c                 |    0
 drivers/video/{ => fbdev}/s3c2410fb.c              |    0
 drivers/video/{ => fbdev}/s3c2410fb.h              |    0
 drivers/video/{ => fbdev}/s3fb.c                   |    0
 drivers/video/{ => fbdev}/sa1100fb.c               |    0
 drivers/video/{ => fbdev}/sa1100fb.h               |    0
 drivers/video/{ => fbdev}/savage/Makefile          |    0
 drivers/video/{ => fbdev}/savage/savagefb-i2c.c    |    0
 drivers/video/{ => fbdev}/savage/savagefb.h        |    0
 drivers/video/{ => fbdev}/savage/savagefb_accel.c  |    0
 drivers/video/{ => fbdev}/savage/savagefb_driver.c |    0
 drivers/video/{ => fbdev}/sbuslib.c                |    0
 drivers/video/{ => fbdev}/sbuslib.h                |    0
 drivers/video/{ => fbdev}/sh7760fb.c               |    0
 drivers/video/{ => fbdev}/sh_mipi_dsi.c            |    0
 drivers/video/{ => fbdev}/sh_mobile_hdmi.c         |    0
 drivers/video/{ => fbdev}/sh_mobile_lcdcfb.c       |    0
 drivers/video/{ => fbdev}/sh_mobile_lcdcfb.h       |    0
 drivers/video/{ => fbdev}/sh_mobile_meram.c        |    0
 drivers/video/{ => fbdev}/simplefb.c               |    0
 drivers/video/{ => fbdev}/sis/300vtbl.h            |    0
 drivers/video/{ => fbdev}/sis/310vtbl.h            |    0
 drivers/video/{ => fbdev}/sis/Makefile             |    0
 drivers/video/{ => fbdev}/sis/init.c               |    0
 drivers/video/{ => fbdev}/sis/init.h               |    0
 drivers/video/{ => fbdev}/sis/init301.c            |    0
 drivers/video/{ => fbdev}/sis/init301.h            |    0
 drivers/video/{ => fbdev}/sis/initdef.h            |    0
 drivers/video/{ => fbdev}/sis/initextlfb.c         |    0
 drivers/video/{ => fbdev}/sis/oem300.h             |    0
 drivers/video/{ => fbdev}/sis/oem310.h             |    0
 drivers/video/{ => fbdev}/sis/sis.h                |    0
 drivers/video/{ => fbdev}/sis/sis_accel.c          |    0
 drivers/video/{ => fbdev}/sis/sis_accel.h          |    0
 drivers/video/{ => fbdev}/sis/sis_main.c           |    0
 drivers/video/{ => fbdev}/sis/sis_main.h           |    0
 drivers/video/{ => fbdev}/sis/vgatypes.h           |    0
 drivers/video/{ => fbdev}/sis/vstruct.h            |    0
 drivers/video/{ => fbdev}/skeletonfb.c             |    0
 drivers/video/{ => fbdev}/sm501fb.c                |    0
 drivers/video/{ => fbdev}/smscufx.c                |    0
 drivers/video/{ => fbdev}/ssd1307fb.c              |    0
 drivers/video/{ => fbdev}/sstfb.c                  |    0
 drivers/video/{ => fbdev}/sticore.h                |    0
 drivers/video/{ => fbdev}/stifb.c                  |    0
 drivers/video/{ => fbdev}/sunxvr1000.c             |    0
 drivers/video/{ => fbdev}/sunxvr2500.c             |    0
 drivers/video/{ => fbdev}/sunxvr500.c              |    0
 drivers/video/{ => fbdev}/tcx.c                    |    0
 drivers/video/{ => fbdev}/tdfxfb.c                 |    0
 drivers/video/{ => fbdev}/tgafb.c                  |    0
 drivers/video/{ => fbdev}/tmiofb.c                 |    0
 drivers/video/{ => fbdev}/tridentfb.c              |    0
 drivers/video/{ => fbdev}/udlfb.c                  |    0
 drivers/video/{ => fbdev}/uvesafb.c                |    0
 drivers/video/{ => fbdev}/valkyriefb.c             |    0
 drivers/video/{ => fbdev}/valkyriefb.h             |    0
 drivers/video/{ => fbdev}/vermilion/Makefile       |    0
 drivers/video/{ => fbdev}/vermilion/cr_pll.c       |    0
 drivers/video/{ => fbdev}/vermilion/vermilion.c    |    0
 drivers/video/{ => fbdev}/vermilion/vermilion.h    |    0
 drivers/video/{ => fbdev}/vesafb.c                 |    0
 drivers/video/{ => fbdev}/vfb.c                    |    0
 drivers/video/{ => fbdev}/vga16fb.c                |    0
 drivers/video/{ => fbdev}/via/Makefile             |    0
 drivers/video/{ => fbdev}/via/accel.c              |    0
 drivers/video/{ => fbdev}/via/accel.h              |    0
 drivers/video/{ => fbdev}/via/chip.h               |    0
 drivers/video/{ => fbdev}/via/debug.h              |    0
 drivers/video/{ => fbdev}/via/dvi.c                |    0
 drivers/video/{ => fbdev}/via/dvi.h                |    0
 drivers/video/{ => fbdev}/via/global.c             |    0
 drivers/video/{ => fbdev}/via/global.h             |    0
 drivers/video/{ => fbdev}/via/hw.c                 |    0
 drivers/video/{ => fbdev}/via/hw.h                 |    0
 drivers/video/{ => fbdev}/via/ioctl.c              |    0
 drivers/video/{ => fbdev}/via/ioctl.h              |    0
 drivers/video/{ => fbdev}/via/lcd.c                |    0
 drivers/video/{ => fbdev}/via/lcd.h                |    0
 drivers/video/{ => fbdev}/via/share.h              |    0
 drivers/video/{ => fbdev}/via/tblDPASetting.c      |    0
 drivers/video/{ => fbdev}/via/tblDPASetting.h      |    0
 drivers/video/{ => fbdev}/via/via-core.c           |    0
 drivers/video/{ => fbdev}/via/via-gpio.c           |    0
 drivers/video/{ => fbdev}/via/via_aux.c            |    0
 drivers/video/{ => fbdev}/via/via_aux.h            |    0
 drivers/video/{ => fbdev}/via/via_aux_ch7301.c     |    0
 drivers/video/{ => fbdev}/via/via_aux_edid.c       |    0
 drivers/video/{ => fbdev}/via/via_aux_sii164.c     |    0
 drivers/video/{ => fbdev}/via/via_aux_vt1621.c     |    0
 drivers/video/{ => fbdev}/via/via_aux_vt1622.c     |    0
 drivers/video/{ => fbdev}/via/via_aux_vt1625.c     |    0
 drivers/video/{ => fbdev}/via/via_aux_vt1631.c     |    0
 drivers/video/{ => fbdev}/via/via_aux_vt1632.c     |    0
 drivers/video/{ => fbdev}/via/via_aux_vt1636.c     |    0
 drivers/video/{ => fbdev}/via/via_clock.c          |    0
 drivers/video/{ => fbdev}/via/via_clock.h          |    0
 drivers/video/{ => fbdev}/via/via_i2c.c            |    0
 drivers/video/{ => fbdev}/via/via_modesetting.c    |    0
 drivers/video/{ => fbdev}/via/via_modesetting.h    |    0
 drivers/video/{ => fbdev}/via/via_utility.c        |    0
 drivers/video/{ => fbdev}/via/via_utility.h        |    0
 drivers/video/{ => fbdev}/via/viafbdev.c           |    0
 drivers/video/{ => fbdev}/via/viafbdev.h           |    0
 drivers/video/{ => fbdev}/via/viamode.c            |    0
 drivers/video/{ => fbdev}/via/viamode.h            |    0
 drivers/video/{ => fbdev}/via/vt1636.c             |    0
 drivers/video/{ => fbdev}/via/vt1636.h             |    0
 drivers/video/{ => fbdev}/vt8500lcdfb.c            |    0
 drivers/video/{ => fbdev}/vt8500lcdfb.h            |    0
 drivers/video/{ => fbdev}/vt8623fb.c               |    0
 drivers/video/{ => fbdev}/w100fb.c                 |    0
 drivers/video/{ => fbdev}/w100fb.h                 |    0
 drivers/video/{ => fbdev}/wm8505fb.c               |    0
 drivers/video/{ => fbdev}/wm8505fb_regs.h          |    0
 drivers/video/{ => fbdev}/wmt_ge_rops.c            |    2 +-
 drivers/video/{ => fbdev}/wmt_ge_rops.h            |    0
 drivers/video/{ => fbdev}/xen-fbfront.c            |    0
 drivers/video/{ => fbdev}/xilinxfb.c               |    0
 drivers/video/omap2/Kconfig                        |   10 -
 482 files changed, 2682 insertions(+), 2666 deletions(-)
 rename drivers/video/{ => fbdev}/68328fb.c (100%)
 create mode 100644 drivers/video/fbdev/Kconfig
 create mode 100644 drivers/video/fbdev/Makefile
 rename drivers/video/{ => fbdev}/acornfb.c (100%)
 rename drivers/video/{ => fbdev}/acornfb.h (100%)
 rename drivers/video/{ => fbdev}/amba-clcd.c (100%)
 rename drivers/video/{ => fbdev}/amifb.c (100%)
 rename drivers/video/{ => fbdev}/arcfb.c (100%)
 rename drivers/video/{ => fbdev}/arkfb.c (100%)
 rename drivers/video/{ => fbdev}/asiliantfb.c (100%)
 rename drivers/video/{ => fbdev}/atafb.c (100%)
 rename drivers/video/{ => fbdev}/atafb.h (100%)
 rename drivers/video/{ => fbdev}/atafb_iplan2p2.c (100%)
 rename drivers/video/{ => fbdev}/atafb_iplan2p4.c (100%)
 rename drivers/video/{ => fbdev}/atafb_iplan2p8.c (100%)
 rename drivers/video/{ => fbdev}/atafb_mfb.c (100%)
 rename drivers/video/{ => fbdev}/atafb_utils.h (100%)
 rename drivers/video/{ => fbdev}/atmel_lcdfb.c (100%)
 rename drivers/video/{ => fbdev}/aty/Makefile (100%)
 rename drivers/video/{ => fbdev}/aty/ati_ids.h (100%)
 rename drivers/video/{ => fbdev}/aty/aty128fb.c (100%)
 rename drivers/video/{ => fbdev}/aty/atyfb.h (100%)
 rename drivers/video/{ => fbdev}/aty/atyfb_base.c (100%)
 rename drivers/video/{ => fbdev}/aty/mach64_accel.c (100%)
 rename drivers/video/{ => fbdev}/aty/mach64_ct.c (100%)
 rename drivers/video/{ => fbdev}/aty/mach64_cursor.c (99%)
 rename drivers/video/{ => fbdev}/aty/mach64_gx.c (100%)
 rename drivers/video/{ => fbdev}/aty/radeon_accel.c (100%)
 rename drivers/video/{ => fbdev}/aty/radeon_backlight.c (100%)
 rename drivers/video/{ => fbdev}/aty/radeon_base.c (100%)
 rename drivers/video/{ => fbdev}/aty/radeon_i2c.c (100%)
 rename drivers/video/{ => fbdev}/aty/radeon_monitor.c (100%)
 rename drivers/video/{ => fbdev}/aty/radeon_pm.c (100%)
 rename drivers/video/{ => fbdev}/aty/radeonfb.h (100%)
 rename drivers/video/{ => fbdev}/au1100fb.c (100%)
 rename drivers/video/{ => fbdev}/au1100fb.h (100%)
 rename drivers/video/{ => fbdev}/au1200fb.c (100%)
 rename drivers/video/{ => fbdev}/au1200fb.h (100%)
 rename drivers/video/{ => fbdev}/auo_k1900fb.c (100%)
 rename drivers/video/{ => fbdev}/auo_k1901fb.c (100%)
 rename drivers/video/{ => fbdev}/auo_k190x.c (100%)
 rename drivers/video/{ => fbdev}/auo_k190x.h (100%)
 rename drivers/video/{ => fbdev}/bf537-lq035.c (100%)
 rename drivers/video/{ => fbdev}/bf54x-lq043fb.c (100%)
 rename drivers/video/{ => fbdev}/bfin-lq035q1-fb.c (100%)
 rename drivers/video/{ => fbdev}/bfin-t350mcqb-fb.c (100%)
 rename drivers/video/{ => fbdev}/bfin_adv7393fb.c (100%)
 rename drivers/video/{ => fbdev}/bfin_adv7393fb.h (100%)
 rename drivers/video/{ => fbdev}/broadsheetfb.c (100%)
 rename drivers/video/{ => fbdev}/bt431.h (100%)
 rename drivers/video/{ => fbdev}/bt455.h (100%)
 rename drivers/video/{ => fbdev}/bw2.c (100%)
 rename drivers/video/{ => fbdev}/c2p.h (100%)
 rename drivers/video/{ => fbdev}/c2p_core.h (100%)
 rename drivers/video/{ => fbdev}/c2p_iplan2.c (100%)
 rename drivers/video/{ => fbdev}/c2p_planar.c (100%)
 rename drivers/video/{ => fbdev}/carminefb.c (100%)
 rename drivers/video/{ => fbdev}/carminefb.h (100%)
 rename drivers/video/{ => fbdev}/carminefb_regs.h (100%)
 rename drivers/video/{ => fbdev}/cg14.c (100%)
 rename drivers/video/{ => fbdev}/cg3.c (100%)
 rename drivers/video/{ => fbdev}/cg6.c (100%)
 rename drivers/video/{ => fbdev}/chipsfb.c (100%)
 rename drivers/video/{ => fbdev}/cirrusfb.c (100%)
 rename drivers/video/{ => fbdev}/clps711xfb.c (100%)
 rename drivers/video/{ => fbdev}/cobalt_lcdfb.c (100%)
 rename drivers/video/{ => fbdev}/controlfb.c (100%)
 rename drivers/video/{ => fbdev}/controlfb.h (100%)
 create mode 100644 drivers/video/fbdev/core/Makefile
 rename drivers/video/{ => fbdev/core}/cfbcopyarea.c (100%)
 rename drivers/video/{ => fbdev/core}/cfbfillrect.c (100%)
 rename drivers/video/{ => fbdev/core}/cfbimgblt.c (100%)
 rename drivers/video/{ => fbdev/core}/fb_ddc.c (99%)
 rename drivers/video/{ => fbdev/core}/fb_defio.c (100%)
 rename drivers/video/{ => fbdev/core}/fb_draw.h (100%)
 rename drivers/video/{ => fbdev/core}/fb_notify.c (100%)
 rename drivers/video/{ => fbdev/core}/fb_sys_fops.c (100%)
 rename drivers/video/{ => fbdev/core}/fbcmap.c (100%)
 rename drivers/video/{ => fbdev/core}/fbcvt.c (100%)
 rename drivers/video/{ => fbdev/core}/fbmem.c (100%)
 rename drivers/video/{ => fbdev/core}/fbmon.c (99%)
 rename drivers/video/{ => fbdev/core}/fbsysfs.c (100%)
 rename drivers/video/{ => fbdev/core}/modedb.c (100%)
 rename drivers/video/{ => fbdev/core}/svgalib.c (100%)
 rename drivers/video/{ => fbdev/core}/syscopyarea.c (100%)
 rename drivers/video/{ => fbdev/core}/sysfillrect.c (100%)
 rename drivers/video/{ => fbdev/core}/sysimgblt.c (100%)
 rename drivers/video/{ => fbdev}/cyber2000fb.c (100%)
 rename drivers/video/{ => fbdev}/cyber2000fb.h (100%)
 rename drivers/video/{ => fbdev}/da8xx-fb.c (100%)
 rename drivers/video/{ => fbdev}/dnfb.c (100%)
 rename drivers/video/{ => fbdev}/edid.h (100%)
 rename drivers/video/{ => fbdev}/efifb.c (100%)
 rename drivers/video/{ => fbdev}/ep93xx-fb.c (100%)
 rename drivers/video/{ => fbdev}/exynos/Kconfig (100%)
 rename drivers/video/{ => fbdev}/exynos/Makefile (100%)
 rename drivers/video/{ => fbdev}/exynos/exynos_mipi_dsi.c (100%)
 rename drivers/video/{ => fbdev}/exynos/exynos_mipi_dsi_common.c (100%)
 rename drivers/video/{ => fbdev}/exynos/exynos_mipi_dsi_common.h (100%)
 rename drivers/video/{ => fbdev}/exynos/exynos_mipi_dsi_lowlevel.c (100%)
 rename drivers/video/{ => fbdev}/exynos/exynos_mipi_dsi_lowlevel.h (100%)
 rename drivers/video/{ => fbdev}/exynos/exynos_mipi_dsi_regs.h (100%)
 rename drivers/video/{ => fbdev}/exynos/s6e8ax0.c (100%)
 rename drivers/video/{ => fbdev}/fb-puv3.c (100%)
 rename drivers/video/{ => fbdev}/ffb.c (100%)
 rename drivers/video/{ => fbdev}/fm2fb.c (100%)
 rename drivers/video/{ => fbdev}/fsl-diu-fb.c (100%)
 rename drivers/video/{ => fbdev}/g364fb.c (100%)
 rename drivers/video/{ => fbdev}/gbefb.c (100%)
 rename drivers/video/{ => fbdev}/geode/Kconfig (100%)
 rename drivers/video/{ => fbdev}/geode/Makefile (100%)
 rename drivers/video/{ => fbdev}/geode/display_gx.c (100%)
 rename drivers/video/{ => fbdev}/geode/display_gx1.c (100%)
 rename drivers/video/{ => fbdev}/geode/display_gx1.h (100%)
 rename drivers/video/{ => fbdev}/geode/geodefb.h (100%)
 rename drivers/video/{ => fbdev}/geode/gx1fb_core.c (100%)
 rename drivers/video/{ => fbdev}/geode/gxfb.h (100%)
 rename drivers/video/{ => fbdev}/geode/gxfb_core.c (100%)
 rename drivers/video/{ => fbdev}/geode/lxfb.h (100%)
 rename drivers/video/{ => fbdev}/geode/lxfb_core.c (100%)
 rename drivers/video/{ => fbdev}/geode/lxfb_ops.c (100%)
 rename drivers/video/{ => fbdev}/geode/suspend_gx.c (100%)
 rename drivers/video/{ => fbdev}/geode/video_cs5530.c (100%)
 rename drivers/video/{ => fbdev}/geode/video_cs5530.h (100%)
 rename drivers/video/{ => fbdev}/geode/video_gx.c (100%)
 rename drivers/video/{ => fbdev}/goldfishfb.c (100%)
 rename drivers/video/{ => fbdev}/grvga.c (100%)
 rename drivers/video/{ => fbdev}/gxt4500.c (100%)
 rename drivers/video/{ => fbdev}/hecubafb.c (100%)
 rename drivers/video/{ => fbdev}/hgafb.c (100%)
 rename drivers/video/{ => fbdev}/hitfb.c (100%)
 rename drivers/video/{ => fbdev}/hpfb.c (100%)
 rename drivers/video/{ => fbdev}/hyperv_fb.c (100%)
 rename drivers/video/{ => fbdev}/i740_reg.h (100%)
 rename drivers/video/{ => fbdev}/i740fb.c (100%)
 rename drivers/video/{ => fbdev}/i810/Makefile (100%)
 rename drivers/video/{ => fbdev}/i810/i810-i2c.c (100%)
 rename drivers/video/{ => fbdev}/i810/i810.h (100%)
 rename drivers/video/{ => fbdev}/i810/i810_accel.c (100%)
 rename drivers/video/{ => fbdev}/i810/i810_dvt.c (100%)
 rename drivers/video/{ => fbdev}/i810/i810_gtf.c (100%)
 rename drivers/video/{ => fbdev}/i810/i810_main.c (100%)
 rename drivers/video/{ => fbdev}/i810/i810_main.h (100%)
 rename drivers/video/{ => fbdev}/i810/i810_regs.h (100%)
 rename drivers/video/{ => fbdev}/igafb.c (100%)
 rename drivers/video/{ => fbdev}/imsttfb.c (100%)
 rename drivers/video/{ => fbdev}/imxfb.c (100%)
 rename drivers/video/{ => fbdev}/intelfb/Makefile (100%)
 rename drivers/video/{ => fbdev}/intelfb/intelfb.h (100%)
 rename drivers/video/{ => fbdev}/intelfb/intelfb_i2c.c (100%)
 rename drivers/video/{ => fbdev}/intelfb/intelfbdrv.c (100%)
 rename drivers/video/{ => fbdev}/intelfb/intelfbhw.c (100%)
 rename drivers/video/{ => fbdev}/intelfb/intelfbhw.h (100%)
 rename drivers/video/{ => fbdev}/jz4740_fb.c (100%)
 rename drivers/video/{ => fbdev}/kyro/Makefile (100%)
 rename drivers/video/{ => fbdev}/kyro/STG4000InitDevice.c (100%)
 rename drivers/video/{ => fbdev}/kyro/STG4000Interface.h (100%)
 rename drivers/video/{ => fbdev}/kyro/STG4000OverlayDevice.c (100%)
 rename drivers/video/{ => fbdev}/kyro/STG4000Ramdac.c (100%)
 rename drivers/video/{ => fbdev}/kyro/STG4000Reg.h (100%)
 rename drivers/video/{ => fbdev}/kyro/STG4000VTG.c (100%)
 rename drivers/video/{ => fbdev}/kyro/fbdev.c (100%)
 rename drivers/video/{ => fbdev}/leo.c (100%)
 rename drivers/video/{ => fbdev}/macfb.c (100%)
 rename drivers/video/{ => fbdev}/macmodes.c (100%)
 rename drivers/video/{ => fbdev}/macmodes.h (100%)
 rename drivers/video/{ => fbdev}/matrox/Makefile (100%)
 rename drivers/video/{ => fbdev}/matrox/g450_pll.c (100%)
 rename drivers/video/{ => fbdev}/matrox/g450_pll.h (100%)
 rename drivers/video/{ => fbdev}/matrox/i2c-matroxfb.c (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_DAC1064.c (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_DAC1064.h (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_Ti3026.c (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_Ti3026.h (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_accel.c (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_accel.h (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_base.c (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_base.h (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_crtc2.c (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_crtc2.h (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_g450.c (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_g450.h (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_maven.c (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_maven.h (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_misc.c (100%)
 rename drivers/video/{ => fbdev}/matrox/matroxfb_misc.h (100%)
 rename drivers/video/{ => fbdev}/maxinefb.c (100%)
 rename drivers/video/{ => fbdev}/mb862xx/Makefile (100%)
 rename drivers/video/{ => fbdev}/mb862xx/mb862xx-i2c.c (100%)
 rename drivers/video/{ => fbdev}/mb862xx/mb862xx_reg.h (100%)
 rename drivers/video/{ => fbdev}/mb862xx/mb862xxfb.h (100%)
 rename drivers/video/{ => fbdev}/mb862xx/mb862xxfb_accel.c (100%)
 rename drivers/video/{ => fbdev}/mb862xx/mb862xxfb_accel.h (100%)
 rename drivers/video/{ => fbdev}/mb862xx/mb862xxfbdrv.c (100%)
 rename drivers/video/{ => fbdev}/mbx/Makefile (100%)
 rename drivers/video/{ => fbdev}/mbx/mbxdebugfs.c (100%)
 rename drivers/video/{ => fbdev}/mbx/mbxfb.c (100%)
 rename drivers/video/{ => fbdev}/mbx/reg_bits.h (100%)
 rename drivers/video/{ => fbdev}/mbx/regs.h (100%)
 rename drivers/video/{ => fbdev}/metronomefb.c (100%)
 rename drivers/video/{ => fbdev}/mmp/Kconfig (61%)
 rename drivers/video/{ => fbdev}/mmp/Makefile (100%)
 rename drivers/video/{ => fbdev}/mmp/core.c (100%)
 rename drivers/video/{ => fbdev}/mmp/fb/Kconfig (100%)
 rename drivers/video/{ => fbdev}/mmp/fb/Makefile (100%)
 rename drivers/video/{ => fbdev}/mmp/fb/mmpfb.c (100%)
 rename drivers/video/{ => fbdev}/mmp/fb/mmpfb.h (100%)
 rename drivers/video/{ => fbdev}/mmp/hw/Kconfig (100%)
 rename drivers/video/{ => fbdev}/mmp/hw/Makefile (100%)
 rename drivers/video/{ => fbdev}/mmp/hw/mmp_ctrl.c (100%)
 rename drivers/video/{ => fbdev}/mmp/hw/mmp_ctrl.h (100%)
 rename drivers/video/{ => fbdev}/mmp/hw/mmp_spi.c (100%)
 rename drivers/video/{ => fbdev}/mmp/panel/Kconfig (100%)
 rename drivers/video/{ => fbdev}/mmp/panel/Makefile (100%)
 rename drivers/video/{ => fbdev}/mmp/panel/tpo_tj032md01bw.c (100%)
 rename drivers/video/{ => fbdev}/msm/Makefile (100%)
 rename drivers/video/{ => fbdev}/msm/mddi.c (100%)
 rename drivers/video/{ => fbdev}/msm/mddi_client_dummy.c (100%)
 rename drivers/video/{ => fbdev}/msm/mddi_client_nt35399.c (100%)
 rename drivers/video/{ => fbdev}/msm/mddi_client_toshiba.c (100%)
 rename drivers/video/{ => fbdev}/msm/mddi_hw.h (100%)
 rename drivers/video/{ => fbdev}/msm/mdp.c (100%)
 rename drivers/video/{ => fbdev}/msm/mdp_csc_table.h (100%)
 rename drivers/video/{ => fbdev}/msm/mdp_hw.h (100%)
 rename drivers/video/{ => fbdev}/msm/mdp_ppp.c (100%)
 rename drivers/video/{ => fbdev}/msm/mdp_scale_tables.c (100%)
 rename drivers/video/{ => fbdev}/msm/mdp_scale_tables.h (100%)
 rename drivers/video/{ => fbdev}/msm/msm_fb.c (100%)
 rename drivers/video/{ => fbdev}/mx3fb.c (100%)
 rename drivers/video/{ => fbdev}/mxsfb.c (100%)
 rename drivers/video/{ => fbdev}/n411.c (100%)
 rename drivers/video/{ => fbdev}/neofb.c (100%)
 rename drivers/video/{ => fbdev}/nuc900fb.c (100%)
 rename drivers/video/{ => fbdev}/nuc900fb.h (100%)
 rename drivers/video/{ => fbdev}/nvidia/Makefile (100%)
 rename drivers/video/{ => fbdev}/nvidia/nv_accel.c (100%)
 rename drivers/video/{ => fbdev}/nvidia/nv_backlight.c (100%)
 rename drivers/video/{ => fbdev}/nvidia/nv_dma.h (100%)
 rename drivers/video/{ => fbdev}/nvidia/nv_hw.c (100%)
 rename drivers/video/{ => fbdev}/nvidia/nv_i2c.c (100%)
 rename drivers/video/{ => fbdev}/nvidia/nv_local.h (100%)
 rename drivers/video/{ => fbdev}/nvidia/nv_of.c (100%)
 rename drivers/video/{ => fbdev}/nvidia/nv_proto.h (100%)
 rename drivers/video/{ => fbdev}/nvidia/nv_setup.c (100%)
 rename drivers/video/{ => fbdev}/nvidia/nv_type.h (100%)
 rename drivers/video/{ => fbdev}/nvidia/nvidia.c (100%)
 rename drivers/video/{ => fbdev}/ocfb.c (100%)
 rename drivers/video/{ => fbdev}/offb.c (100%)
 rename drivers/video/{ => fbdev}/omap/Kconfig (100%)
 rename drivers/video/{ => fbdev}/omap/Makefile (100%)
 rename drivers/video/{ => fbdev}/omap/hwa742.c (100%)
 rename drivers/video/{ => fbdev}/omap/lcd_ams_delta.c (100%)
 rename drivers/video/{ => fbdev}/omap/lcd_h3.c (100%)
 rename drivers/video/{ => fbdev}/omap/lcd_htcherald.c (100%)
 rename drivers/video/{ => fbdev}/omap/lcd_inn1510.c (100%)
 rename drivers/video/{ => fbdev}/omap/lcd_inn1610.c (100%)
 rename drivers/video/{ => fbdev}/omap/lcd_mipid.c (100%)
 rename drivers/video/{ => fbdev}/omap/lcd_osk.c (100%)
 rename drivers/video/{ => fbdev}/omap/lcd_palmte.c (100%)
 rename drivers/video/{ => fbdev}/omap/lcd_palmtt.c (100%)
 rename drivers/video/{ => fbdev}/omap/lcd_palmz71.c (100%)
 rename drivers/video/{ => fbdev}/omap/lcdc.c (100%)
 rename drivers/video/{ => fbdev}/omap/lcdc.h (100%)
 rename drivers/video/{ => fbdev}/omap/omapfb.h (100%)
 rename drivers/video/{ => fbdev}/omap/omapfb_main.c (100%)
 rename drivers/video/{ => fbdev}/omap/sossi.c (100%)
 create mode 100644 drivers/video/fbdev/omap2/Kconfig
 rename drivers/video/{ => fbdev}/omap2/Makefile (100%)
 rename drivers/video/{ => fbdev}/omap2/displays-new/Kconfig (100%)
 rename drivers/video/{ => fbdev}/omap2/displays-new/Makefile (100%)
 rename drivers/video/{ => fbdev}/omap2/displays-new/connector-analog-tv.c (100%)
 rename drivers/video/{ => fbdev}/omap2/displays-new/connector-dvi.c (100%)
 rename drivers/video/{ => fbdev}/omap2/displays-new/connector-hdmi.c (100%)
 rename drivers/video/{ => fbdev}/omap2/displays-new/encoder-tfp410.c (100%)
 rename drivers/video/{ => fbdev}/omap2/displays-new/encoder-tpd12s015.c (100%)
 rename drivers/video/{ => fbdev}/omap2/displays-new/panel-dpi.c (100%)
 rename drivers/video/{ => fbdev}/omap2/displays-new/panel-dsi-cm.c (100%)
 rename drivers/video/{ => fbdev}/omap2/displays-new/panel-lgphilips-lb035q02.c (100%)
 rename drivers/video/{ => fbdev}/omap2/displays-new/panel-nec-nl8048hl11.c (100%)
 rename drivers/video/{ => fbdev}/omap2/displays-new/panel-sharp-ls037v7dw01.c (100%)
 rename drivers/video/{ => fbdev}/omap2/displays-new/panel-sony-acx565akm.c (100%)
 rename drivers/video/{ => fbdev}/omap2/displays-new/panel-tpo-td028ttec1.c (100%)
 rename drivers/video/{ => fbdev}/omap2/displays-new/panel-tpo-td043mtea1.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/Kconfig (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/Makefile (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/apply.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/core.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/dispc-compat.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/dispc-compat.h (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/dispc.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/dispc.h (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/dispc_coefs.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/display-sysfs.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/display.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/dpi.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/dsi.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/dss-of.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/dss.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/dss.h (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/dss_features.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/dss_features.h (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/hdmi.h (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/hdmi4.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/hdmi4_core.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/hdmi4_core.h (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/hdmi_common.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/hdmi_phy.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/hdmi_pll.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/hdmi_wp.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/manager-sysfs.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/manager.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/output.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/overlay-sysfs.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/overlay.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/rfbi.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/sdi.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/venc.c (100%)
 rename drivers/video/{ => fbdev}/omap2/dss/venc_panel.c (100%)
 rename drivers/video/{ => fbdev}/omap2/omapfb/Kconfig (100%)
 rename drivers/video/{ => fbdev}/omap2/omapfb/Makefile (100%)
 rename drivers/video/{ => fbdev}/omap2/omapfb/omapfb-ioctl.c (100%)
 rename drivers/video/{ => fbdev}/omap2/omapfb/omapfb-main.c (100%)
 rename drivers/video/{ => fbdev}/omap2/omapfb/omapfb-sysfs.c (100%)
 rename drivers/video/{ => fbdev}/omap2/omapfb/omapfb.h (100%)
 rename drivers/video/{ => fbdev}/omap2/vrfb.c (100%)
 rename drivers/video/{ => fbdev}/p9100.c (100%)
 rename drivers/video/{ => fbdev}/platinumfb.c (100%)
 rename drivers/video/{ => fbdev}/platinumfb.h (100%)
 rename drivers/video/{ => fbdev}/pm2fb.c (100%)
 rename drivers/video/{ => fbdev}/pm3fb.c (100%)
 rename drivers/video/{ => fbdev}/pmag-aa-fb.c (100%)
 rename drivers/video/{ => fbdev}/pmag-ba-fb.c (100%)
 rename drivers/video/{ => fbdev}/pmagb-b-fb.c (100%)
 rename drivers/video/{ => fbdev}/ps3fb.c (100%)
 rename drivers/video/{ => fbdev}/pvr2fb.c (100%)
 rename drivers/video/{ => fbdev}/pxa168fb.c (100%)
 rename drivers/video/{ => fbdev}/pxa168fb.h (100%)
 rename drivers/video/{ => fbdev}/pxa3xx-gcu.c (100%)
 rename drivers/video/{ => fbdev}/pxa3xx-gcu.h (100%)
 rename drivers/video/{ => fbdev}/pxafb.c (100%)
 rename drivers/video/{ => fbdev}/pxafb.h (100%)
 rename drivers/video/{ => fbdev}/q40fb.c (100%)
 rename drivers/video/{ => fbdev}/riva/Makefile (100%)
 rename drivers/video/{ => fbdev}/riva/fbdev.c (100%)
 rename drivers/video/{ => fbdev}/riva/nv_driver.c (100%)
 rename drivers/video/{ => fbdev}/riva/nv_type.h (100%)
 rename drivers/video/{ => fbdev}/riva/nvreg.h (100%)
 rename drivers/video/{ => fbdev}/riva/riva_hw.c (100%)
 rename drivers/video/{ => fbdev}/riva/riva_hw.h (100%)
 rename drivers/video/{ => fbdev}/riva/riva_tbl.h (100%)
 rename drivers/video/{ => fbdev}/riva/rivafb-i2c.c (100%)
 rename drivers/video/{ => fbdev}/riva/rivafb.h (100%)
 rename drivers/video/{ => fbdev}/s1d13xxxfb.c (100%)
 rename drivers/video/{ => fbdev}/s3c-fb.c (100%)
 rename drivers/video/{ => fbdev}/s3c2410fb.c (100%)
 rename drivers/video/{ => fbdev}/s3c2410fb.h (100%)
 rename drivers/video/{ => fbdev}/s3fb.c (100%)
 rename drivers/video/{ => fbdev}/sa1100fb.c (100%)
 rename drivers/video/{ => fbdev}/sa1100fb.h (100%)
 rename drivers/video/{ => fbdev}/savage/Makefile (100%)
 rename drivers/video/{ => fbdev}/savage/savagefb-i2c.c (100%)
 rename drivers/video/{ => fbdev}/savage/savagefb.h (100%)
 rename drivers/video/{ => fbdev}/savage/savagefb_accel.c (100%)
 rename drivers/video/{ => fbdev}/savage/savagefb_driver.c (100%)
 rename drivers/video/{ => fbdev}/sbuslib.c (100%)
 rename drivers/video/{ => fbdev}/sbuslib.h (100%)
 rename drivers/video/{ => fbdev}/sh7760fb.c (100%)
 rename drivers/video/{ => fbdev}/sh_mipi_dsi.c (100%)
 rename drivers/video/{ => fbdev}/sh_mobile_hdmi.c (100%)
 rename drivers/video/{ => fbdev}/sh_mobile_lcdcfb.c (100%)
 rename drivers/video/{ => fbdev}/sh_mobile_lcdcfb.h (100%)
 rename drivers/video/{ => fbdev}/sh_mobile_meram.c (100%)
 rename drivers/video/{ => fbdev}/simplefb.c (100%)
 rename drivers/video/{ => fbdev}/sis/300vtbl.h (100%)
 rename drivers/video/{ => fbdev}/sis/310vtbl.h (100%)
 rename drivers/video/{ => fbdev}/sis/Makefile (100%)
 rename drivers/video/{ => fbdev}/sis/init.c (100%)
 rename drivers/video/{ => fbdev}/sis/init.h (100%)
 rename drivers/video/{ => fbdev}/sis/init301.c (100%)
 rename drivers/video/{ => fbdev}/sis/init301.h (100%)
 rename drivers/video/{ => fbdev}/sis/initdef.h (100%)
 rename drivers/video/{ => fbdev}/sis/initextlfb.c (100%)
 rename drivers/video/{ => fbdev}/sis/oem300.h (100%)
 rename drivers/video/{ => fbdev}/sis/oem310.h (100%)
 rename drivers/video/{ => fbdev}/sis/sis.h (100%)
 rename drivers/video/{ => fbdev}/sis/sis_accel.c (100%)
 rename drivers/video/{ => fbdev}/sis/sis_accel.h (100%)
 rename drivers/video/{ => fbdev}/sis/sis_main.c (100%)
 rename drivers/video/{ => fbdev}/sis/sis_main.h (100%)
 rename drivers/video/{ => fbdev}/sis/vgatypes.h (100%)
 rename drivers/video/{ => fbdev}/sis/vstruct.h (100%)
 rename drivers/video/{ => fbdev}/skeletonfb.c (100%)
 rename drivers/video/{ => fbdev}/sm501fb.c (100%)
 rename drivers/video/{ => fbdev}/smscufx.c (100%)
 rename drivers/video/{ => fbdev}/ssd1307fb.c (100%)
 rename drivers/video/{ => fbdev}/sstfb.c (100%)
 rename drivers/video/{ => fbdev}/sticore.h (100%)
 rename drivers/video/{ => fbdev}/stifb.c (100%)
 rename drivers/video/{ => fbdev}/sunxvr1000.c (100%)
 rename drivers/video/{ => fbdev}/sunxvr2500.c (100%)
 rename drivers/video/{ => fbdev}/sunxvr500.c (100%)
 rename drivers/video/{ => fbdev}/tcx.c (100%)
 rename drivers/video/{ => fbdev}/tdfxfb.c (100%)
 rename drivers/video/{ => fbdev}/tgafb.c (100%)
 rename drivers/video/{ => fbdev}/tmiofb.c (100%)
 rename drivers/video/{ => fbdev}/tridentfb.c (100%)
 rename drivers/video/{ => fbdev}/udlfb.c (100%)
 rename drivers/video/{ => fbdev}/uvesafb.c (100%)
 rename drivers/video/{ => fbdev}/valkyriefb.c (100%)
 rename drivers/video/{ => fbdev}/valkyriefb.h (100%)
 rename drivers/video/{ => fbdev}/vermilion/Makefile (100%)
 rename drivers/video/{ => fbdev}/vermilion/cr_pll.c (100%)
 rename drivers/video/{ => fbdev}/vermilion/vermilion.c (100%)
 rename drivers/video/{ => fbdev}/vermilion/vermilion.h (100%)
 rename drivers/video/{ => fbdev}/vesafb.c (100%)
 rename drivers/video/{ => fbdev}/vfb.c (100%)
 rename drivers/video/{ => fbdev}/vga16fb.c (100%)
 rename drivers/video/{ => fbdev}/via/Makefile (100%)
 rename drivers/video/{ => fbdev}/via/accel.c (100%)
 rename drivers/video/{ => fbdev}/via/accel.h (100%)
 rename drivers/video/{ => fbdev}/via/chip.h (100%)
 rename drivers/video/{ => fbdev}/via/debug.h (100%)
 rename drivers/video/{ => fbdev}/via/dvi.c (100%)
 rename drivers/video/{ => fbdev}/via/dvi.h (100%)
 rename drivers/video/{ => fbdev}/via/global.c (100%)
 rename drivers/video/{ => fbdev}/via/global.h (100%)
 rename drivers/video/{ => fbdev}/via/hw.c (100%)
 rename drivers/video/{ => fbdev}/via/hw.h (100%)
 rename drivers/video/{ => fbdev}/via/ioctl.c (100%)
 rename drivers/video/{ => fbdev}/via/ioctl.h (100%)
 rename drivers/video/{ => fbdev}/via/lcd.c (100%)
 rename drivers/video/{ => fbdev}/via/lcd.h (100%)
 rename drivers/video/{ => fbdev}/via/share.h (100%)
 rename drivers/video/{ => fbdev}/via/tblDPASetting.c (100%)
 rename drivers/video/{ => fbdev}/via/tblDPASetting.h (100%)
 rename drivers/video/{ => fbdev}/via/via-core.c (100%)
 rename drivers/video/{ => fbdev}/via/via-gpio.c (100%)
 rename drivers/video/{ => fbdev}/via/via_aux.c (100%)
 rename drivers/video/{ => fbdev}/via/via_aux.h (100%)
 rename drivers/video/{ => fbdev}/via/via_aux_ch7301.c (100%)
 rename drivers/video/{ => fbdev}/via/via_aux_edid.c (100%)
 rename drivers/video/{ => fbdev}/via/via_aux_sii164.c (100%)
 rename drivers/video/{ => fbdev}/via/via_aux_vt1621.c (100%)
 rename drivers/video/{ => fbdev}/via/via_aux_vt1622.c (100%)
 rename drivers/video/{ => fbdev}/via/via_aux_vt1625.c (100%)
 rename drivers/video/{ => fbdev}/via/via_aux_vt1631.c (100%)
 rename drivers/video/{ => fbdev}/via/via_aux_vt1632.c (100%)
 rename drivers/video/{ => fbdev}/via/via_aux_vt1636.c (100%)
 rename drivers/video/{ => fbdev}/via/via_clock.c (100%)
 rename drivers/video/{ => fbdev}/via/via_clock.h (100%)
 rename drivers/video/{ => fbdev}/via/via_i2c.c (100%)
 rename drivers/video/{ => fbdev}/via/via_modesetting.c (100%)
 rename drivers/video/{ => fbdev}/via/via_modesetting.h (100%)
 rename drivers/video/{ => fbdev}/via/via_utility.c (100%)
 rename drivers/video/{ => fbdev}/via/via_utility.h (100%)
 rename drivers/video/{ => fbdev}/via/viafbdev.c (100%)
 rename drivers/video/{ => fbdev}/via/viafbdev.h (100%)
 rename drivers/video/{ => fbdev}/via/viamode.c (100%)
 rename drivers/video/{ => fbdev}/via/viamode.h (100%)
 rename drivers/video/{ => fbdev}/via/vt1636.c (100%)
 rename drivers/video/{ => fbdev}/via/vt1636.h (100%)
 rename drivers/video/{ => fbdev}/vt8500lcdfb.c (100%)
 rename drivers/video/{ => fbdev}/vt8500lcdfb.h (100%)
 rename drivers/video/{ => fbdev}/vt8623fb.c (100%)
 rename drivers/video/{ => fbdev}/w100fb.c (100%)
 rename drivers/video/{ => fbdev}/w100fb.h (100%)
 rename drivers/video/{ => fbdev}/wm8505fb.c (100%)
 rename drivers/video/{ => fbdev}/wm8505fb_regs.h (100%)
 rename drivers/video/{ => fbdev}/wmt_ge_rops.c (99%)
 rename drivers/video/{ => fbdev}/wmt_ge_rops.h (100%)
 rename drivers/video/{ => fbdev}/xen-fbfront.c (100%)
 rename drivers/video/{ => fbdev}/xilinxfb.c (100%)
 delete mode 100644 drivers/video/omap2/Kconfig


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply

* [patch added to the 3.12 stable tree] video/fb: Propagate error code from failing to unregister conf
From: Jiri Slaby @ 2014-04-18  9:07 UTC (permalink / raw)
  To: stable
  Cc: Chris Wilson, Jean-Christophe Plagniol-Villard, Tomi Valkeinen,
	linux-fbdev, dri-devel, Dave Airlie, Jiri Slaby
In-Reply-To: <1397812087-13168-1-git-send-email-jslaby@suse.cz>

From: Chris Wilson <chris@chris-wilson.co.uk>

This patch has been added to the 3.12 stable tree. If you have any
objections, please let us know.

=======
commit 46eeb2c144956e88197439b5ee5cf221a91b0a81 upstream.

If we fail to remove a conflicting fb driver, we need to abort the
loading of the second driver to avoid likely kernel panics.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/video/fbmem.c | 31 +++++++++++++++++++++----------
 include/linux/fb.h    |  4 ++--
 2 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index cde461932760..7309ac704e26 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -1577,10 +1577,10 @@ static bool fb_do_apertures_overlap(struct apertures_struct *gena,
 static int do_unregister_framebuffer(struct fb_info *fb_info);
 
 #define VGA_FB_PHYS 0xA0000
-static void do_remove_conflicting_framebuffers(struct apertures_struct *a,
-				     const char *name, bool primary)
+static int do_remove_conflicting_framebuffers(struct apertures_struct *a,
+					      const char *name, bool primary)
 {
-	int i;
+	int i, ret;
 
 	/* check all firmware fbs and kick off if the base addr overlaps */
 	for (i = 0 ; i < FB_MAX; i++) {
@@ -1599,22 +1599,29 @@ static void do_remove_conflicting_framebuffers(struct apertures_struct *a,
 			printk(KERN_INFO "fb: conflicting fb hw usage "
 			       "%s vs %s - removing generic driver\n",
 			       name, registered_fb[i]->fix.id);
-			do_unregister_framebuffer(registered_fb[i]);
+			ret = do_unregister_framebuffer(registered_fb[i]);
+			if (ret)
+				return ret;
 		}
 	}
+
+	return 0;
 }
 
 static int do_register_framebuffer(struct fb_info *fb_info)
 {
-	int i;
+	int i, ret;
 	struct fb_event event;
 	struct fb_videomode mode;
 
 	if (fb_check_foreignness(fb_info))
 		return -ENOSYS;
 
-	do_remove_conflicting_framebuffers(fb_info->apertures, fb_info->fix.id,
-					 fb_is_primary_device(fb_info));
+	ret = do_remove_conflicting_framebuffers(fb_info->apertures,
+						 fb_info->fix.id,
+						 fb_is_primary_device(fb_info));
+	if (ret)
+		return ret;
 
 	if (num_registered_fb = FB_MAX)
 		return -ENXIO;
@@ -1739,12 +1746,16 @@ int unlink_framebuffer(struct fb_info *fb_info)
 }
 EXPORT_SYMBOL(unlink_framebuffer);
 
-void remove_conflicting_framebuffers(struct apertures_struct *a,
-				     const char *name, bool primary)
+int remove_conflicting_framebuffers(struct apertures_struct *a,
+				    const char *name, bool primary)
 {
+	int ret;
+
 	mutex_lock(&registration_lock);
-	do_remove_conflicting_framebuffers(a, name, primary);
+	ret = do_remove_conflicting_framebuffers(a, name, primary);
 	mutex_unlock(&registration_lock);
+
+	return ret;
 }
 EXPORT_SYMBOL(remove_conflicting_framebuffers);
 
diff --git a/include/linux/fb.h b/include/linux/fb.h
index ffac70aab3e9..8439a1600c1a 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -613,8 +613,8 @@ extern ssize_t fb_sys_write(struct fb_info *info, const char __user *buf,
 extern int register_framebuffer(struct fb_info *fb_info);
 extern int unregister_framebuffer(struct fb_info *fb_info);
 extern int unlink_framebuffer(struct fb_info *fb_info);
-extern void remove_conflicting_framebuffers(struct apertures_struct *a,
-				const char *name, bool primary);
+extern int remove_conflicting_framebuffers(struct apertures_struct *a,
+					   const char *name, bool primary);
 extern int fb_prepare_logo(struct fb_info *fb_info, int rotate);
 extern int fb_show_logo(struct fb_info *fb_info, int rotate);
 extern char* fb_get_buffer_offset(struct fb_info *info, struct fb_pixmap *buf, u32 size);
-- 
1.9.2


^ permalink raw reply related

* [PATCH 3.12 20/72] video/fb: Propagate error code from failing to unregister conflicting fb
From: Jiri Slaby @ 2014-04-18  9:21 UTC (permalink / raw)
  To: stable
  Cc: linux-fbdev, Jiri Slaby, linux-kernel, dri-devel, Tomi Valkeinen,
	Dave Airlie, Jean-Christophe Plagniol-Villard
In-Reply-To: <3389f243c528afc7c7300c83b8f296290cd3656d.1397812482.git.jslaby@suse.cz>

From: Chris Wilson <chris@chris-wilson.co.uk>

3.12-stable review patch.  If anyone has any objections, please let me know.

=======
commit 46eeb2c144956e88197439b5ee5cf221a91b0a81 upstream.

If we fail to remove a conflicting fb driver, we need to abort the
loading of the second driver to avoid likely kernel panics.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: linux-fbdev@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 drivers/video/fbmem.c | 31 +++++++++++++++++++++----------
 include/linux/fb.h    |  4 ++--
 2 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index cde461932760..7309ac704e26 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -1577,10 +1577,10 @@ static bool fb_do_apertures_overlap(struct apertures_struct *gena,
 static int do_unregister_framebuffer(struct fb_info *fb_info);
 
 #define VGA_FB_PHYS 0xA0000
-static void do_remove_conflicting_framebuffers(struct apertures_struct *a,
-				     const char *name, bool primary)
+static int do_remove_conflicting_framebuffers(struct apertures_struct *a,
+					      const char *name, bool primary)
 {
-	int i;
+	int i, ret;
 
 	/* check all firmware fbs and kick off if the base addr overlaps */
 	for (i = 0 ; i < FB_MAX; i++) {
@@ -1599,22 +1599,29 @@ static void do_remove_conflicting_framebuffers(struct apertures_struct *a,
 			printk(KERN_INFO "fb: conflicting fb hw usage "
 			       "%s vs %s - removing generic driver\n",
 			       name, registered_fb[i]->fix.id);
-			do_unregister_framebuffer(registered_fb[i]);
+			ret = do_unregister_framebuffer(registered_fb[i]);
+			if (ret)
+				return ret;
 		}
 	}
+
+	return 0;
 }
 
 static int do_register_framebuffer(struct fb_info *fb_info)
 {
-	int i;
+	int i, ret;
 	struct fb_event event;
 	struct fb_videomode mode;
 
 	if (fb_check_foreignness(fb_info))
 		return -ENOSYS;
 
-	do_remove_conflicting_framebuffers(fb_info->apertures, fb_info->fix.id,
-					 fb_is_primary_device(fb_info));
+	ret = do_remove_conflicting_framebuffers(fb_info->apertures,
+						 fb_info->fix.id,
+						 fb_is_primary_device(fb_info));
+	if (ret)
+		return ret;
 
 	if (num_registered_fb = FB_MAX)
 		return -ENXIO;
@@ -1739,12 +1746,16 @@ int unlink_framebuffer(struct fb_info *fb_info)
 }
 EXPORT_SYMBOL(unlink_framebuffer);
 
-void remove_conflicting_framebuffers(struct apertures_struct *a,
-				     const char *name, bool primary)
+int remove_conflicting_framebuffers(struct apertures_struct *a,
+				    const char *name, bool primary)
 {
+	int ret;
+
 	mutex_lock(&registration_lock);
-	do_remove_conflicting_framebuffers(a, name, primary);
+	ret = do_remove_conflicting_framebuffers(a, name, primary);
 	mutex_unlock(&registration_lock);
+
+	return ret;
 }
 EXPORT_SYMBOL(remove_conflicting_framebuffers);
 
diff --git a/include/linux/fb.h b/include/linux/fb.h
index ffac70aab3e9..8439a1600c1a 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -613,8 +613,8 @@ extern ssize_t fb_sys_write(struct fb_info *info, const char __user *buf,
 extern int register_framebuffer(struct fb_info *fb_info);
 extern int unregister_framebuffer(struct fb_info *fb_info);
 extern int unlink_framebuffer(struct fb_info *fb_info);
-extern void remove_conflicting_framebuffers(struct apertures_struct *a,
-				const char *name, bool primary);
+extern int remove_conflicting_framebuffers(struct apertures_struct *a,
+					   const char *name, bool primary);
 extern int fb_prepare_logo(struct fb_info *fb_info, int rotate);
 extern int fb_show_logo(struct fb_info *fb_info, int rotate);
 extern char* fb_get_buffer_offset(struct fb_info *info, struct fb_pixmap *buf, u32 size);
-- 
1.9.2


^ permalink raw reply related

* Re: [PATCH] fbdev: fix possible NULL pointer derefernce
From: DaeSeok Youn @ 2014-04-18 10:31 UTC (permalink / raw)
  To: Jean-Christophe PLAGNIOL-VILLARD
  Cc: tomi.valkeinen, jg1.han, laurent.pinchart, Rob Clark, linux-fbdev,
	linux-kernel
In-Reply-To: <CAHb8M2BdDUJBOsFdDXOKSo2p+=_Gb4Ha92UMa5K6wMyg3KKdmw@mail.gmail.com>

Hello,

2014-04-17 9:00 GMT+09:00 DaeSeok Youn <daeseok.youn@gmail.com>:
> Hello,
>
> 2014-04-16 21:38 GMT+09:00 Jean-Christophe PLAGNIOL-VILLARD
> <plagnioj@jcrosoft.com>:
>>
>> On Apr 16, 2014, at 5:40 PM, Daeseok Youn <daeseok.youn@gmail.com> wrote:
>>
>>>
>>> The spec->modedb can be NULL by fb_create_modedb().
>>>
>>> And also smatch says:
>>> drivers/video/fbdev/core/fbmon.c:975 fb_edid_to_monspecs() error:
>>> potential null dereference 'specs->modedb'.
>>> (fb_create_modedb returns null)
>>>
>>> Signed-off-by: Daeseok Youn <daeseok.youn@gmail.com>
>>> ---
>>> drivers/video/fbdev/core/fbmon.c |    3 +++
>>> 1 files changed, 3 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/drivers/video/fbdev/core/fbmon.c b/drivers/video/fbdev/core/fbmon.c
>>> index c204ebe..db274ca 100644
>>> --- a/drivers/video/fbdev/core/fbmon.c
>>> +++ b/drivers/video/fbdev/core/fbmon.c
>>> @@ -966,6 +966,9 @@ void fb_edid_to_monspecs(unsigned char *edid, struct fb_monspecs *specs)
>>>
>>>       specs->modedb = fb_create_modedb(edid, &specs->modedb_len);
>>>
>>> +     if (!specs->modedb)
>>> +             return;
>>> +
>>
>> we need to return an error and trace it
> Yes, you're right. I will change return type from void to int and add
> to handle an error when this function(fb_edid_to_monspecs) is called.
>
I try to look at the fbdev code related with fb_edid_to_monspecs().
And the result, I think it doesn't need to return an error and trace it.
My patch is also useless because modedb_len is zero when
fb_create_modedb() returns NULL so It cannot be dereferenced.

And callers of this function seem to need a log but I think they don't need to
handling an error. Some functions are handling error with checking
NULL of modedb variable,
they are just printing an error message.

If I am wrong or you have reasons for handling an error on that
function, please let me know.

Regards,
Daeseok Youn.

> I will send this patch as your comment.
>
> Thanks for review.
>
> Daeseok Youn.
>>
>> Best Regards,
>> J.
>>>       /*
>>>        * Workaround for buggy EDIDs that sets that the first
>>>        * detailed timing is preferred but has not detailed
>>> --
>>> 1.7.4.4
>>>
>>

^ permalink raw reply

* Re: [PATCHv3 19/41] OMAPDSS: panel-dpi: Add DT support
From: Tony Lindgren @ 2014-04-18 15:51 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1390301833-24944-20-git-send-email-tomi.valkeinen@ti.com>

Hi,

Just trying to summarize what has been discussed so far in
various threads regarding changes needed to this patch.

* Tomi Valkeinen <tomi.valkeinen@ti.com> [140121 03:01]:
> --- a/drivers/video/omap2/displays-new/panel-dpi.c
> +++ b/drivers/video/omap2/displays-new/panel-dpi.c
> @@ -182,6 +186,52 @@ static int panel_dpi_probe_pdata(struct platform_device *pdev)
>  	return 0;
>  }
>  
> +static int panel_dpi_probe_of(struct platform_device *pdev)
> +{
> +	struct panel_drv_data *ddata = platform_get_drvdata(pdev);
> +	struct device_node *node = pdev->dev.of_node;
> +	struct omap_dss_device *in;
> +	int r;
> +	struct display_timing timing;
> +	struct videomode vm;
> +	int gpio;
> +
> +	gpio = of_get_gpio(node, 0);
> +	if (gpio_is_valid(gpio) || gpio = -ENOENT) {
> +		ddata->enable_gpio = gpio;
> +	} else {
> +		dev_err(&pdev->dev, "failed to parse enable gpio\n");
> +		return gpio;
> +	}

We should set the GPIO polarity based on the OF_GPIO_ACTIVE_LOW like
gpio_backlight_probe_dt is doing. 

Then do we really want to do the dev_err for each -EPROBE_DEFER here?

> +	gpio = of_get_gpio(node, 1);
> +	if (gpio_is_valid(gpio) || gpio = -ENOENT) {
> +		ddata->backlight_gpio = gpio;
> +	} else {
> +		dev_err(&pdev->dev, "failed to parse backlight gpio\n");
> +		return gpio;
> +	}

How about let's drop the backlight_gpio as discussed since it
can be handled with gpio-backlight?

Instead, let's add the panel specific reset_gpio as suggested by
Joachim. That seems common to some dpi using panels.

Then support for the other panel specific GPIOs can then be added
as a follow-up patch when we know how we want to handle them.

Oh, and this patch needs the related binding documentation too in
Documentation/devicetree/bindings.

Regards,

Tony

^ permalink raw reply

* [PATCH 0/2] Add display support for gta04 device
From: Marek Belisko @ 2014-04-22 21:12 UTC (permalink / raw)
  To: linux-arm-kernel

This 2 patches adding display support for openmoko gta04 device.
First patch add DT bindings for topolly td028 panel and second add description for
dss + panel.

Marek Belisko (2):
  omapdss: panel-tpo-td028ec1: Add DT support.
  ARM: dts: oma3-gta04: Add display support

 .../bindings/video/toppoly,td028ttec1.txt          | 30 ++++++++
 arch/arm/boot/dts/omap3-gta04.dts                  | 86 ++++++++++++++++++++++
 .../omap2/displays-new/panel-tpo-td028ttec1.c      | 32 +++++++-
 3 files changed, 147 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/video/toppoly,td028ttec1.txt

-- 
1.8.3.2


^ permalink raw reply

* [PATCH 1/2] omapdss: panel-tpo-td028ec1: Add DT support.
From: Marek Belisko @ 2014-04-22 21:12 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1398201168-25275-1-git-send-email-marek@goldelico.com>

Signed-off-by: Marek Belisko <marek@goldelico.com>
---
 .../bindings/video/toppoly,td028ttec1.txt          | 30 ++++++++++++++++++++
 .../omap2/displays-new/panel-tpo-td028ttec1.c      | 32 +++++++++++++++++++++-
 2 files changed, 61 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/video/toppoly,td028ttec1.txt

diff --git a/Documentation/devicetree/bindings/video/toppoly,td028ttec1.txt b/Documentation/devicetree/bindings/video/toppoly,td028ttec1.txt
new file mode 100644
index 0000000..7175dc3
--- /dev/null
+++ b/Documentation/devicetree/bindings/video/toppoly,td028ttec1.txt
@@ -0,0 +1,30 @@
+Toppoly TD028TTEC1 Panel
+============
+
+Required properties:
+- compatible: "toppoly,td028ttec1"
+
+Optional properties:
+- label: a symbolic name for the panel
+
+Required nodes:
+- Video port for DPI input
+
+Example
+-------
+
+lcd-panel: td028ttec1@0 {
+	compatible = "toppoly,td028ttec1";
+	reg = <0>;
+	spi-max-frequency = <100000>;
+	spi-cpol;
+	spi-cpha;
+
+	label = "lcd";
+	port {
+		lcd_in: endpoint {
+			remote-endpoint = <&dpi_out>;
+		};
+	};
+};
+
diff --git a/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c b/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c
index fae6adc..70a56ff 100644
--- a/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c
+++ b/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c
@@ -206,7 +206,8 @@ static int td028ttec1_panel_enable(struct omap_dss_device *dssdev)
 	if (omapdss_device_is_enabled(dssdev))
 		return 0;
 
-	in->ops.dpi->set_data_lines(in, ddata->data_lines);
+	if (ddata->data_lines)
+		in->ops.dpi->set_data_lines(in, ddata->data_lines);
 	in->ops.dpi->set_timings(in, &ddata->videomode);
 
 	r = in->ops.dpi->enable(in);
@@ -389,6 +390,23 @@ static int td028ttec1_panel_probe_pdata(struct spi_device *spi)
 	return 0;
 }
 
+static int td028ttec1_probe_of(struct spi_device *spi)
+{
+	struct device_node *node = spi->dev.of_node;
+	struct panel_drv_data *ddata = dev_get_drvdata(&spi->dev);
+	struct omap_dss_device *in;
+
+	in = omapdss_of_find_source_for_first_ep(node);
+	if (IS_ERR(in)) {
+		dev_err(&spi->dev, "failed to find video source\n");
+		return PTR_ERR(in);
+	}
+
+	ddata->in = in;
+
+	return 0;
+}
+
 static int td028ttec1_panel_probe(struct spi_device *spi)
 {
 	struct panel_drv_data *ddata;
@@ -418,6 +436,10 @@ static int td028ttec1_panel_probe(struct spi_device *spi)
 		r = td028ttec1_panel_probe_pdata(spi);
 		if (r)
 			return r;
+	} else if (spi->dev.of_node) {
+		r = td028ttec1_probe_of(spi);
+		if (r)
+			return r;
 	} else {
 		return -ENODEV;
 	}
@@ -463,6 +485,13 @@ static int td028ttec1_panel_remove(struct spi_device *spi)
 	return 0;
 }
 
+static const struct of_device_id td028ttec1_of_match[] = {
+	{ .compatible = "toppoly,td028ttec1", },
+	{},
+};
+
+MODULE_DEVICE_TABLE(of, td028ttec1_of_match);
+
 static struct spi_driver td028ttec1_spi_driver = {
 	.probe		= td028ttec1_panel_probe,
 	.remove		= td028ttec1_panel_remove,
@@ -470,6 +499,7 @@ static struct spi_driver td028ttec1_spi_driver = {
 	.driver         = {
 		.name   = "panel-tpo-td028ttec1",
 		.owner  = THIS_MODULE,
+		.of_match_table = td028ttec1_of_match,
 	},
 };
 
-- 
1.8.3.2


^ permalink raw reply related

* [PATCH 2/2] ARM: dts: oma3-gta04: Add display support
From: Marek Belisko @ 2014-04-22 21:12 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1398201168-25275-1-git-send-email-marek@goldelico.com>

This patch add support for lcd display on gta04 board. Display control
is connected on spi (used spi bitbang driver).

Signed-off-by: Marek Belisko <marek@goldelico.com>
---
 arch/arm/boot/dts/omap3-gta04.dts | 86 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 86 insertions(+)

diff --git a/arch/arm/boot/dts/omap3-gta04.dts b/arch/arm/boot/dts/omap3-gta04.dts
index f8ad125..db56e67 100644
--- a/arch/arm/boot/dts/omap3-gta04.dts
+++ b/arch/arm/boot/dts/omap3-gta04.dts
@@ -44,6 +44,36 @@
 		ti,mcbsp = <&mcbsp2>;
 		ti,codec = <&twl_audio>;
 	};
+
+	spi_lcd {
+		compatible = "spi-gpio";
+		#address-cells = <0x1>;
+		#size-cells = <0x0>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&spi_gpio_pins>;
+
+		gpio-sck = <&gpio1 12 0>;
+		gpio-miso = <&gpio1 18 0>;
+		gpio-mosi = <&gpio1 20 0>;
+		cs-gpios = <&gpio1 19 0>;
+		num-chipselects = <1>;
+
+		/* lcd panel */
+		lcd: td028ttec1@0 {
+			compatible = "toppoly,td028ttec1";
+			reg = <0>;
+			spi-max-frequency = <100000>;
+			spi-cpol;
+			spi-cpha;
+
+			label = "lcd";
+			port {
+				lcd_in: endpoint {
+					remote-endpoint = <&dpi_out>;
+				};
+			};
+		};
+	};
 };
 
 &omap3_pmx_core {
@@ -78,6 +108,47 @@
 			0x11e (PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc1_dat3.sdmmc1_dat3 */
 		>;
 	};
+
+	dss_dpi_pins: pinmux_dss_dpi_pins {
+               pinctrl-single,pins = <
+                       0x0a4 (PIN_OUTPUT | MUX_MODE0)   /* dss_pclk.dss_pclk */
+                       0x0a6 (PIN_OUTPUT | MUX_MODE0)   /* dss_hsync.dss_hsync */
+                       0x0a8 (PIN_OUTPUT | MUX_MODE0)   /* dss_vsync.dss_vsync */
+                       0x0aa (PIN_OUTPUT | MUX_MODE0)   /* dss_acbias.dss_acbias */
+                       0x0ac (PIN_OUTPUT | MUX_MODE0)   /* dss_data0.dss_data0 */
+                       0x0ae (PIN_OUTPUT | MUX_MODE0)   /* dss_data1.dss_data1 */
+                       0x0b0 (PIN_OUTPUT | MUX_MODE0)   /* dss_data2.dss_data2 */
+                       0x0b2 (PIN_OUTPUT | MUX_MODE0)   /* dss_data3.dss_data3 */
+                       0x0b4 (PIN_OUTPUT | MUX_MODE0)   /* dss_data4.dss_data4 */
+                       0x0b6 (PIN_OUTPUT | MUX_MODE0)   /* dss_data5.dss_data5 */
+                       0x0b8 (PIN_OUTPUT | MUX_MODE0)   /* dss_data6.dss_data6 */
+                       0x0ba (PIN_OUTPUT | MUX_MODE0)   /* dss_data7.dss_data7 */
+                       0x0bc (PIN_OUTPUT | MUX_MODE0)   /* dss_data8.dss_data8 */
+                       0x0be (PIN_OUTPUT | MUX_MODE0)   /* dss_data9.dss_data9 */
+                       0x0c0 (PIN_OUTPUT | MUX_MODE0)   /* dss_data10.dss_data10 */
+                       0x0c2 (PIN_OUTPUT | MUX_MODE0)   /* dss_data11.dss_data11 */
+                       0x0c4 (PIN_OUTPUT | MUX_MODE0)   /* dss_data12.dss_data12 */
+                       0x0c6 (PIN_OUTPUT | MUX_MODE0)   /* dss_data13.dss_data13 */
+                       0x0c8 (PIN_OUTPUT | MUX_MODE0)   /* dss_data14.dss_data14 */
+                       0x0ca (PIN_OUTPUT | MUX_MODE0)   /* dss_data15.dss_data15 */
+                       0x0cc (PIN_OUTPUT | MUX_MODE0)   /* dss_data16.dss_data16 */
+                       0x0ce (PIN_OUTPUT | MUX_MODE0)   /* dss_data17.dss_data17 */
+                       0x0d0 (PIN_OUTPUT | MUX_MODE0)   /* dss_data18.dss_data18 */
+                       0x0d2 (PIN_OUTPUT | MUX_MODE0)   /* dss_data19.dss_data19 */
+                       0x0d4 (PIN_OUTPUT | MUX_MODE0)   /* dss_data20.dss_data20 */
+                       0x0d6 (PIN_OUTPUT | MUX_MODE0)   /* dss_data21.dss_data21 */
+                       0x0d8 (PIN_OUTPUT | MUX_MODE0)   /* dss_data22.dss_data22 */
+                       0x0da (PIN_OUTPUT | MUX_MODE0)   /* dss_data23.dss_data23 */
+               >;
+       };
+
+	spi_gpio_pins: spi_gpio_pinmux {
+		pinctrl-single,pins = <0x5a8 (PIN_OUTPUT | MUX_MODE4) /* clk */
+			0x5b6 (PIN_OUTPUT | MUX_MODE4) /* cs */
+			0x5b8 (PIN_OUTPUT | MUX_MODE4) /* tx */
+			0x5b4 (PIN_INPUT | MUX_MODE4) /* rx */
+		>;
+	};
 };
 
 &i2c1 {
@@ -219,3 +290,18 @@
 	regulator-min-microvolt = <2800000>;
 	regulator-max-microvolt = <3150000>;
 };
+
+&dss {
+	pinctrl-names = "default";
+	pinctrl-0 = < &dss_dpi_pins >;
+
+	status = "okay";
+
+	vdds_dsi-supply = <&vpll2>;
+
+	dpi_out: endpoint {
+               remote-endpoint = <&lcd_in>;
+               data-lines = <24>;
+       };
+
+};
-- 
1.8.3.2


^ permalink raw reply related

* [PATCH] video: Kconfig: Add a dependency to the Goldfish framebuffer driver
From: Jean Delvare @ 2014-04-23 10:42 UTC (permalink / raw)
  To: linux-fbdev

All other Goldfish drivers depend on GOLDFISH, I see no reason why the
framebuffer driver would be an exception.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
 drivers/video/fbdev/Kconfig |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-3.15-rc2.orig/drivers/video/fbdev/Kconfig	2014-04-22 14:20:30.949107522 +0200
+++ linux-3.15-rc2/drivers/video/fbdev/Kconfig	2014-04-23 11:51:17.163933232 +0200
@@ -2169,7 +2169,7 @@ config FB_XILINX
 
 config FB_GOLDFISH
 	tristate "Goldfish Framebuffer"
-	depends on FB && HAS_DMA
+	depends on FB && HAS_DMA && (GOLDFISH || COMPILE_TEST)
 	select FB_CFB_FILLRECT
 	select FB_CFB_COPYAREA
 	select FB_CFB_IMAGEBLIT


-- 
Jean Delvare
SUSE L3 Support

^ permalink raw reply

* Re: [PATCH 1/2] omapdss: panel-tpo-td028ec1: Add DT support.
From: Tomi Valkeinen @ 2014-04-23 10:44 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1398201168-25275-2-git-send-email-marek@goldelico.com>

[-- Attachment #1: Type: text/plain, Size: 1020 bytes --]

On 23/04/14 00:12, Marek Belisko wrote:

>  static int td028ttec1_panel_probe(struct spi_device *spi)
>  {
>  	struct panel_drv_data *ddata;
> @@ -418,6 +436,10 @@ static int td028ttec1_panel_probe(struct spi_device *spi)
>  		r = td028ttec1_panel_probe_pdata(spi);
>  		if (r)
>  			return r;
> +	} else if (spi->dev.of_node) {
> +		r = td028ttec1_probe_of(spi);
> +		if (r)
> +			return r;
>  	} else {
>  		return -ENODEV;
>  	}
> @@ -463,6 +485,13 @@ static int td028ttec1_panel_remove(struct spi_device *spi)
>  	return 0;
>  }
>  
> +static const struct of_device_id td028ttec1_of_match[] = {
> +	{ .compatible = "toppoly,td028ttec1", },

We need to hack a bit here for the time being. You need to have
"omapdss," prefix for the compatible string in the driver, and add the
panel's compatible string to arch/arm/mach-omap2/display.c:
dss_compat_conv_list.

The reason for this is that the drivers are omap specific, but the DT
data is not.

Otherwise looks good to me.

 Tomi



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply

* [PATCH] fbdev: Fix tmiofb driver dependencies
From: Jean Delvare @ 2014-04-23 11:51 UTC (permalink / raw)
  To: linux-fbdev

The tmiofb driver should not depend on MFD_CORE but on MFD_TMIO.
Without the tmio_core driver, tmiofb has no platform device to bind
to and is thus useless.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
I suspect that MFD_TMIO was originally intended and MFD_CORE was a
typo.

 drivers/video/fbdev/Kconfig |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-3.15-rc2.orig/drivers/video/fbdev/Kconfig	2014-04-23 11:51:17.163933232 +0200
+++ linux-3.15-rc2/drivers/video/fbdev/Kconfig	2014-04-23 13:40:01.170774059 +0200
@@ -1993,7 +1993,7 @@ config FB_SH_MOBILE_HDMI
 
 config FB_TMIO
 	tristate "Toshiba Mobile IO FrameBuffer support"
-	depends on FB && MFD_CORE
+	depends on FB && MFD_TMIO
 	select FB_CFB_FILLRECT
 	select FB_CFB_COPYAREA
 	select FB_CFB_IMAGEBLIT

-- 
Jean Delvare
SUSE L3 Support

^ permalink raw reply

* [PATCH] fbcon: Fix memory leak in con2fb_release_oldinfo()
From: Masami Ichikawa @ 2014-04-23 14:35 UTC (permalink / raw)
  To: masami256, plagnioj, tomi.valkeinen, udknight, gregkh, keithp,
	mika.kuoppala, viresh.kumar, linux-kernel, linux-fbdev

kmemleak reported a memory leak as below.

unreferenced object 0xffff8800dab6d8d8 (size 96):
  comm "swapper/0", pid 1, jiffies 4294877598 (age 38.483s)
  hex dump (first 32 bytes):
    00 00 00 00 00 01 00 00 08 00 00 00 10 00 00 00  ................
    07 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................
  backtrace:
    [<ffffffff814e8f2e>] kmemleak_alloc+0x4e/0xb0
    [<ffffffff811a0600>] __kmalloc+0x280/0x320
    [<ffffffff81309b61>] soft_cursor+0x231/0x290
    [<ffffffff81309393>] bit_cursor+0x613/0x650
    [<ffffffff8130556b>] fbcon_cursor+0x13b/0x1c0
    [<ffffffff813755f8>] hide_cursor+0x28/0xa0
    [<ffffffff81376e98>] redraw_screen+0x168/0x240
    [<ffffffff81303891>] fbcon_prepare_logo+0x381/0x420
    [<ffffffff81303c7e>] fbcon_init+0x34e/0x590
    [<ffffffff81375828>] visual_init+0xb8/0x120
    [<ffffffff81377c93>] do_bind_con_driver+0x163/0x380
    [<ffffffff81378494>] do_take_over_console+0x114/0x1c0
    [<ffffffff81303f23>] do_fbcon_takeover+0x63/0xd0
    [<ffffffff813086dd>] fbcon_event_notify+0x68d/0x7e0
    [<ffffffff814ff7ac>] notifier_call_chain+0x4c/0x70
    [<ffffffff8108c85d>] __blocking_notifier_call_chain+0x4d/0x70

This memory leak cause is, fbcon_ops's cursor_src is allocated in
soft_cursor() but not released in con2fb_release_oldinfo().
so, cursor_src is needed to be released when oldinfo is going to be
released.

Signed-off-by: Masami Ichikawa <masami256@gmail.com>
---
 drivers/video/console/fbcon.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
index f447734..57b1d44 100644
--- a/drivers/video/console/fbcon.c
+++ b/drivers/video/console/fbcon.c
@@ -748,6 +748,7 @@ static int con2fb_release_oldinfo(struct vc_data *vc, struct fb_info *oldinfo,
 		fbcon_del_cursor_timer(oldinfo);
 		kfree(ops->cursor_state.mask);
 		kfree(ops->cursor_data);
+		kfree(ops->cursor_src);
 		kfree(ops->fontbuffer);
 		kfree(oldinfo->fbcon_par);
 		oldinfo->fbcon_par = NULL;
-- 
1.9.1


^ permalink raw reply related

* Re: [PATCH] fbdev: Fix tmiofb driver dependencies
From: Geert Uytterhoeven @ 2014-04-23 19:45 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <20140423135104.2974008f@endymion.delvare>

Hi Jean,

On Wed, Apr 23, 2014 at 1:51 PM, Jean Delvare <jdelvare@suse.de> wrote:
> The tmiofb driver should not depend on MFD_CORE but on MFD_TMIO.
> Without the tmio_core driver, tmiofb has no platform device to bind
> to and is thus useless.

What about COMPILE_TEST?

> Signed-off-by: Jean Delvare <jdelvare@suse.de>
> Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
> ---
> I suspect that MFD_TMIO was originally intended and MFD_CORE was a
> typo.

Does it compile with MFD_CORE=n?
If no: depends on FB && MDF_CORE && (MFD_TMIO || COMPILE_TEST)
If yes: depends on FB && (MFD_TMIO || COMPILE_TEST)

>  drivers/video/fbdev/Kconfig |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- linux-3.15-rc2.orig/drivers/video/fbdev/Kconfig     2014-04-23 11:51:17.163933232 +0200
> +++ linux-3.15-rc2/drivers/video/fbdev/Kconfig  2014-04-23 13:40:01.170774059 +0200
> @@ -1993,7 +1993,7 @@ config FB_SH_MOBILE_HDMI
>
>  config FB_TMIO
>         tristate "Toshiba Mobile IO FrameBuffer support"
> -       depends on FB && MFD_CORE
> +       depends on FB && MFD_TMIO

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply

* [PATCH v2 0/3] Add display support for gta04 device
From: Marek Belisko @ 2014-04-23 20:15 UTC (permalink / raw)
  To: linux-arm-kernel

This 3 patches adding display support for openmoko gta04 device.
First patch add DT bindings for topolly td028 panel. Second add description for
dss + panel and third fix panel probing when panel is compiled as module.

Changes from v1:
- extend panel compatible string by 'omapdss'
- add tpo-td028 panel to dss_compat_conv_list
- add MODULE_ALIAS macro to properly probe panel when is compiled as module

Marek Belisko (3):
  omapdss: panel-tpo-td028ec1: Add DT support.
  ARM: dts: oma3-gta04: Add display support
  omapdss: panel-tpo-td028ec1: Add module alias

 .../bindings/video/toppoly,td028ttec1.txt          | 30 ++++++++
 arch/arm/boot/dts/omap3-gta04.dts                  | 86 ++++++++++++++++++++++
 arch/arm/mach-omap2/display.c                      |  1 +
 .../omap2/displays-new/panel-tpo-td028ttec1.c      | 33 ++++++++-
 4 files changed, 149 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/video/toppoly,td028ttec1.txt

-- 
1.8.3.2


^ permalink raw reply

* [PATCH v2 1/3] omapdss: panel-tpo-td028ec1: Add DT support.
From: Marek Belisko @ 2014-04-23 20:15 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1398284120-4986-1-git-send-email-marek@goldelico.com>

Signed-off-by: Marek Belisko <marek@goldelico.com>
---
 .../bindings/video/toppoly,td028ttec1.txt          | 30 ++++++++++++++++++++
 arch/arm/mach-omap2/display.c                      |  1 +
 .../omap2/displays-new/panel-tpo-td028ttec1.c      | 32 +++++++++++++++++++++-
 3 files changed, 62 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/video/toppoly,td028ttec1.txt

diff --git a/Documentation/devicetree/bindings/video/toppoly,td028ttec1.txt b/Documentation/devicetree/bindings/video/toppoly,td028ttec1.txt
new file mode 100644
index 0000000..7175dc3
--- /dev/null
+++ b/Documentation/devicetree/bindings/video/toppoly,td028ttec1.txt
@@ -0,0 +1,30 @@
+Toppoly TD028TTEC1 Panel
+============
+
+Required properties:
+- compatible: "toppoly,td028ttec1"
+
+Optional properties:
+- label: a symbolic name for the panel
+
+Required nodes:
+- Video port for DPI input
+
+Example
+-------
+
+lcd-panel: td028ttec1@0 {
+	compatible = "toppoly,td028ttec1";
+	reg = <0>;
+	spi-max-frequency = <100000>;
+	spi-cpol;
+	spi-cpha;
+
+	label = "lcd";
+	port {
+		lcd_in: endpoint {
+			remote-endpoint = <&dpi_out>;
+		};
+	};
+};
+
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
index 16d33d8..66a2ee0 100644
--- a/arch/arm/mach-omap2/display.c
+++ b/arch/arm/mach-omap2/display.c
@@ -566,6 +566,7 @@ static const char * const dss_compat_conv_list[] __initconst = {
 	"svideo-connector",
 	"ti,tfp410",
 	"ti,tpd12s015",
+	"toppoly,td028ttec1",
 };
 
 /* prepend compatible string with "omapdss," */
diff --git a/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c b/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c
index fae6adc..5b3466e 100644
--- a/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c
+++ b/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c
@@ -206,7 +206,8 @@ static int td028ttec1_panel_enable(struct omap_dss_device *dssdev)
 	if (omapdss_device_is_enabled(dssdev))
 		return 0;
 
-	in->ops.dpi->set_data_lines(in, ddata->data_lines);
+	if (ddata->data_lines)
+		in->ops.dpi->set_data_lines(in, ddata->data_lines);
 	in->ops.dpi->set_timings(in, &ddata->videomode);
 
 	r = in->ops.dpi->enable(in);
@@ -389,6 +390,23 @@ static int td028ttec1_panel_probe_pdata(struct spi_device *spi)
 	return 0;
 }
 
+static int td028ttec1_probe_of(struct spi_device *spi)
+{
+	struct device_node *node = spi->dev.of_node;
+	struct panel_drv_data *ddata = dev_get_drvdata(&spi->dev);
+	struct omap_dss_device *in;
+
+	in = omapdss_of_find_source_for_first_ep(node);
+	if (IS_ERR(in)) {
+		dev_err(&spi->dev, "failed to find video source\n");
+		return PTR_ERR(in);
+	}
+
+	ddata->in = in;
+
+	return 0;
+}
+
 static int td028ttec1_panel_probe(struct spi_device *spi)
 {
 	struct panel_drv_data *ddata;
@@ -418,6 +436,10 @@ static int td028ttec1_panel_probe(struct spi_device *spi)
 		r = td028ttec1_panel_probe_pdata(spi);
 		if (r)
 			return r;
+	} else if (spi->dev.of_node) {
+		r = td028ttec1_probe_of(spi);
+		if (r)
+			return r;
 	} else {
 		return -ENODEV;
 	}
@@ -463,6 +485,13 @@ static int td028ttec1_panel_remove(struct spi_device *spi)
 	return 0;
 }
 
+static const struct of_device_id td028ttec1_of_match[] = {
+	{ .compatible = "omapdss,toppoly,td028ttec1", },
+	{},
+};
+
+MODULE_DEVICE_TABLE(of, td028ttec1_of_match);
+
 static struct spi_driver td028ttec1_spi_driver = {
 	.probe		= td028ttec1_panel_probe,
 	.remove		= td028ttec1_panel_remove,
@@ -470,6 +499,7 @@ static struct spi_driver td028ttec1_spi_driver = {
 	.driver         = {
 		.name   = "panel-tpo-td028ttec1",
 		.owner  = THIS_MODULE,
+		.of_match_table = td028ttec1_of_match,
 	},
 };
 
-- 
1.8.3.2


^ permalink raw reply related

* [PATCH v2 2/3] ARM: dts: oma3-gta04: Add display support
From: Marek Belisko @ 2014-04-23 20:15 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1398284120-4986-1-git-send-email-marek@goldelico.com>

This patch add support for lcd display on gta04 board. Display control
is connected on spi (used spi bitbang driver).

Signed-off-by: Marek Belisko <marek@goldelico.com>
---
 arch/arm/boot/dts/omap3-gta04.dts | 86 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 86 insertions(+)

diff --git a/arch/arm/boot/dts/omap3-gta04.dts b/arch/arm/boot/dts/omap3-gta04.dts
index f8ad125..db56e67 100644
--- a/arch/arm/boot/dts/omap3-gta04.dts
+++ b/arch/arm/boot/dts/omap3-gta04.dts
@@ -44,6 +44,36 @@
 		ti,mcbsp = <&mcbsp2>;
 		ti,codec = <&twl_audio>;
 	};
+
+	spi_lcd {
+		compatible = "spi-gpio";
+		#address-cells = <0x1>;
+		#size-cells = <0x0>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&spi_gpio_pins>;
+
+		gpio-sck = <&gpio1 12 0>;
+		gpio-miso = <&gpio1 18 0>;
+		gpio-mosi = <&gpio1 20 0>;
+		cs-gpios = <&gpio1 19 0>;
+		num-chipselects = <1>;
+
+		/* lcd panel */
+		lcd: td028ttec1@0 {
+			compatible = "toppoly,td028ttec1";
+			reg = <0>;
+			spi-max-frequency = <100000>;
+			spi-cpol;
+			spi-cpha;
+
+			label = "lcd";
+			port {
+				lcd_in: endpoint {
+					remote-endpoint = <&dpi_out>;
+				};
+			};
+		};
+	};
 };
 
 &omap3_pmx_core {
@@ -78,6 +108,47 @@
 			0x11e (PIN_INPUT_PULLUP | MUX_MODE0)	/* sdmmc1_dat3.sdmmc1_dat3 */
 		>;
 	};
+
+	dss_dpi_pins: pinmux_dss_dpi_pins {
+               pinctrl-single,pins = <
+                       0x0a4 (PIN_OUTPUT | MUX_MODE0)   /* dss_pclk.dss_pclk */
+                       0x0a6 (PIN_OUTPUT | MUX_MODE0)   /* dss_hsync.dss_hsync */
+                       0x0a8 (PIN_OUTPUT | MUX_MODE0)   /* dss_vsync.dss_vsync */
+                       0x0aa (PIN_OUTPUT | MUX_MODE0)   /* dss_acbias.dss_acbias */
+                       0x0ac (PIN_OUTPUT | MUX_MODE0)   /* dss_data0.dss_data0 */
+                       0x0ae (PIN_OUTPUT | MUX_MODE0)   /* dss_data1.dss_data1 */
+                       0x0b0 (PIN_OUTPUT | MUX_MODE0)   /* dss_data2.dss_data2 */
+                       0x0b2 (PIN_OUTPUT | MUX_MODE0)   /* dss_data3.dss_data3 */
+                       0x0b4 (PIN_OUTPUT | MUX_MODE0)   /* dss_data4.dss_data4 */
+                       0x0b6 (PIN_OUTPUT | MUX_MODE0)   /* dss_data5.dss_data5 */
+                       0x0b8 (PIN_OUTPUT | MUX_MODE0)   /* dss_data6.dss_data6 */
+                       0x0ba (PIN_OUTPUT | MUX_MODE0)   /* dss_data7.dss_data7 */
+                       0x0bc (PIN_OUTPUT | MUX_MODE0)   /* dss_data8.dss_data8 */
+                       0x0be (PIN_OUTPUT | MUX_MODE0)   /* dss_data9.dss_data9 */
+                       0x0c0 (PIN_OUTPUT | MUX_MODE0)   /* dss_data10.dss_data10 */
+                       0x0c2 (PIN_OUTPUT | MUX_MODE0)   /* dss_data11.dss_data11 */
+                       0x0c4 (PIN_OUTPUT | MUX_MODE0)   /* dss_data12.dss_data12 */
+                       0x0c6 (PIN_OUTPUT | MUX_MODE0)   /* dss_data13.dss_data13 */
+                       0x0c8 (PIN_OUTPUT | MUX_MODE0)   /* dss_data14.dss_data14 */
+                       0x0ca (PIN_OUTPUT | MUX_MODE0)   /* dss_data15.dss_data15 */
+                       0x0cc (PIN_OUTPUT | MUX_MODE0)   /* dss_data16.dss_data16 */
+                       0x0ce (PIN_OUTPUT | MUX_MODE0)   /* dss_data17.dss_data17 */
+                       0x0d0 (PIN_OUTPUT | MUX_MODE0)   /* dss_data18.dss_data18 */
+                       0x0d2 (PIN_OUTPUT | MUX_MODE0)   /* dss_data19.dss_data19 */
+                       0x0d4 (PIN_OUTPUT | MUX_MODE0)   /* dss_data20.dss_data20 */
+                       0x0d6 (PIN_OUTPUT | MUX_MODE0)   /* dss_data21.dss_data21 */
+                       0x0d8 (PIN_OUTPUT | MUX_MODE0)   /* dss_data22.dss_data22 */
+                       0x0da (PIN_OUTPUT | MUX_MODE0)   /* dss_data23.dss_data23 */
+               >;
+       };
+
+	spi_gpio_pins: spi_gpio_pinmux {
+		pinctrl-single,pins = <0x5a8 (PIN_OUTPUT | MUX_MODE4) /* clk */
+			0x5b6 (PIN_OUTPUT | MUX_MODE4) /* cs */
+			0x5b8 (PIN_OUTPUT | MUX_MODE4) /* tx */
+			0x5b4 (PIN_INPUT | MUX_MODE4) /* rx */
+		>;
+	};
 };
 
 &i2c1 {
@@ -219,3 +290,18 @@
 	regulator-min-microvolt = <2800000>;
 	regulator-max-microvolt = <3150000>;
 };
+
+&dss {
+	pinctrl-names = "default";
+	pinctrl-0 = < &dss_dpi_pins >;
+
+	status = "okay";
+
+	vdds_dsi-supply = <&vpll2>;
+
+	dpi_out: endpoint {
+               remote-endpoint = <&lcd_in>;
+               data-lines = <24>;
+       };
+
+};
-- 
1.8.3.2


^ permalink raw reply related

* [PATCH v2 3/3] omapdss: panel-tpo-td028ec1: Add module alias
From: Marek Belisko @ 2014-04-23 20:15 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1398284120-4986-1-git-send-email-marek@goldelico.com>

Add module alias string to make it working when panel is compiled as module.
Without this change panel module is not probed thus display is not working.

Signed-off-by: Marek Belisko <marek@goldelico.com>
---
 drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c b/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c
index 5b3466e..728808b 100644
--- a/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c
+++ b/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c
@@ -505,6 +505,7 @@ static struct spi_driver td028ttec1_spi_driver = {
 
 module_spi_driver(td028ttec1_spi_driver);
 
+MODULE_ALIAS("spi:toppoly,td028ttec1");
 MODULE_AUTHOR("H. Nikolaus Schaller <hns@goldelico.com>");
 MODULE_DESCRIPTION("Toppoly TD028TTEC1 panel driver");
 MODULE_LICENSE("GPL");
-- 
1.8.3.2


^ permalink raw reply related

* Re: [PATCH v2 1/3] video: clps711x: Add new Cirrus Logic CLPS711X framebuffer driver
From: Alexander Shiyan @ 2014-04-24  5:03 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <1397285583-15187-1-git-send-email-shc_work@mail.ru>

On Sat, 12 Apr 2014 10:53:02 +0400
Alexander Shiyan <shc_work@mail.ru> wrote:

Ping.

> This adds support for the framebuffer available in the Cirrus
> Logic CLPS711X CPUs.
> FB features:
> - 1-2-4 bits per pixel.
> - Programmable panel size to a maximum of 1024x256 at 4 bps.
> - Relocatible Frame Buffer (SRAM or SDRAM).
> - Programmable refresh rates.
> - 16 gray scale values.
> This new driver supports usage with devicetree and as a general
> change it removes last user of <mach/hardware.h> for CLPS711X targets,
> so this subarch will fully prepared to switch to multiplatform.
> The driver have been tested with custom board equipped Cirrus Logic
> EP7312 in DT and non-DT mode.
> 
> Signed-off-by: Alexander Shiyan <shc_work@mail.ru>

...

-- 
Alexander Shiyan <shc_work@mail.ru>

^ permalink raw reply

* Re: [PATCH v2 1/3] video: clps711x: Add new Cirrus Logic CLPS711X framebuffer driver
From: Tomi Valkeinen @ 2014-04-24  7:57 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <1397285583-15187-1-git-send-email-shc_work@mail.ru>

[-- Attachment #1: Type: text/plain, Size: 918 bytes --]

Hi,

On 12/04/14 09:53, Alexander Shiyan wrote:
> This adds support for the framebuffer available in the Cirrus
> Logic CLPS711X CPUs.
> FB features:
> - 1-2-4 bits per pixel.
> - Programmable panel size to a maximum of 1024x256 at 4 bps.
> - Relocatible Frame Buffer (SRAM or SDRAM).
> - Programmable refresh rates.
> - 16 gray scale values.
> This new driver supports usage with devicetree and as a general
> change it removes last user of <mach/hardware.h> for CLPS711X targets,
> so this subarch will fully prepared to switch to multiplatform.
> The driver have been tested with custom board equipped Cirrus Logic
> EP7312 in DT and non-DT mode.

My original comment about this is still unanswered: why a totally new
driver? The proper way would be to gradually change the old driver with
a patch series. Then it's possible to review the patches and see what is
actually changed.

 Tomi



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply


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