Linux Framebuffer Layer development
 help / color / mirror / Atom feed
* [PATCH 0/3] Reorder drivers/video directory
From: Tomi Valkeinen @ 2014-02-27 11:54 UTC (permalink / raw)
  To: linux-fbdev, dri-devel, linux-kernel
  Cc: Laurent Pinchart, Geert Uytterhoeven,
	Jean-Christophe Plagniol-Villard, David Airlie, Andrew Morton,
	Linus Torvalds, Greg Kroah-Hartman, Tomi Valkeinen

Hi,

This is a re-send of the series, with RFC removed from the subject, and a bunch
of acks added.

I'm cc'ing more people, to make sure this doesn't come as a surprise, and to
make sure this is not a bad idea, doomed to fail horribly.

So this series creates a new directory, drivers/video/fbdev/, to which all
fbdev related files are moved. Also, a new directory, drivers/video/fbdev/core/
is created, to which the core fbdev framework files are moved. This makes the
drivers/video hierarchy much more clear.

Presuming no one has objections to this as such, I wonder what's the least
painful way to merge this? Normally, like any other fbdev change? As a separate
pull request, maybe at -rc2 time frame, based on -rc1? Something else?

 Tomi

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

 drivers/Makefile                                   |    4 +-
 drivers/video/Kconfig                              | 2487 +-------------------
 drivers/video/Makefile                             |  168 +-
 drivers/video/{ => fbdev}/68328fb.c                |    0
 drivers/video/fbdev/Kconfig                        | 2481 +++++++++++++++++++
 drivers/video/fbdev/Makefile                       |  153 ++
 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      |    0
 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_dp_core.c  |    0
 drivers/video/{ => fbdev}/exynos/exynos_dp_core.h  |    0
 drivers/video/{ => fbdev}/exynos/exynos_dp_reg.c   |    0
 drivers/video/{ => fbdev}/exynos/exynos_dp_reg.h   |    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.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}/sgivwfb.c                |    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 -
 480 files changed, 2679 insertions(+), 2662 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 (100%)
 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_dp_core.c (100%)
 rename drivers/video/{ => fbdev}/exynos/exynos_dp_core.h (100%)
 rename drivers/video/{ => fbdev}/exynos/exynos_dp_reg.c (100%)
 rename drivers/video/{ => fbdev}/exynos/exynos_dp_reg.h (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.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}/sgivwfb.c (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

-- 
1.8.3.2


^ permalink raw reply

* RE: [PATCH v5 1/2] hyperv-fb: add support for generation 2 virtual machines.
From: Haiyang Zhang @ 2014-02-26 15:46 UTC (permalink / raw)
  To: Gerd Hoffmann, linux-fbdev@vger.kernel.org
  Cc: linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org,
	KY Srinivasan, Abhishek Gupta (LIS), jasowang@redhat.com,
	tomi.valkeinen@ti.com, devel@linuxdriverproject.org,
	Jean-Christophe Plagniol-Villard
In-Reply-To: <1393411885-14895-2-git-send-email-kraxel@redhat.com>



> -----Original Message-----
> From: linux-fbdev-owner@vger.kernel.org [mailto:linux-fbdev-
> owner@vger.kernel.org] On Behalf Of Gerd Hoffmann
> Sent: Wednesday, February 26, 2014 5:51 AM
> To: linux-fbdev@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org; gregkh@linuxfoundation.org; KY Srinivasan;
> Abhishek Gupta (LIS); Haiyang Zhang; jasowang@redhat.com;
> tomi.valkeinen@ti.com; devel@linuxdriverproject.org; Gerd Hoffmann; Jean-
> Christophe Plagniol-Villard
> Subject: [PATCH v5 1/2] hyperv-fb: add support for generation 2 virtual
> machines.
> 
> UEFI-based generation 2 virtual machines support vmbus devices only.
> There is no pci bus.  Thus they use a different mechanism for the
> graphics framebuffer:  Instead of using the vga pci bar a chunk of
> memory muct be allocated from the hyperv mmio region declared using
> APCI.  This patch implements support for it.
> 
> Based on a patch by Haiyang Zhang <haiyangz@microsoft.com>
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>

Thank you!

Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>


^ permalink raw reply

* RE: [PATCH v5 2/2] hyperv-fb: kick off efifb early
From: Haiyang Zhang @ 2014-02-26 15:43 UTC (permalink / raw)
  To: Gerd Hoffmann, linux-fbdev@vger.kernel.org
  Cc: linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org,
	KY Srinivasan, Abhishek Gupta (LIS), jasowang@redhat.com,
	tomi.valkeinen@ti.com, devel@linuxdriverproject.org,
	Jean-Christophe Plagniol-Villard
In-Reply-To: <1393411885-14895-3-git-send-email-kraxel@redhat.com>



> -----Original Message-----
> From: Gerd Hoffmann [mailto:kraxel@redhat.com]
> Sent: Wednesday, February 26, 2014 5:51 AM
> To: linux-fbdev@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org; gregkh@linuxfoundation.org; KY Srinivasan;
> Abhishek Gupta (LIS); Haiyang Zhang; jasowang@redhat.com;
> tomi.valkeinen@ti.com; devel@linuxdriverproject.org; Gerd Hoffmann; Jean-
> Christophe Plagniol-Villard
> Subject: [PATCH v5 2/2] hyperv-fb: kick off efifb early
> 
> Remove firmware framebuffer before initializing hyperv-fb.  Needed
> on gen2 virtual machines.   Letting register_framebuffer handle the
> switchover results in efifb still being active while hyperv graphics
> are initialized, which in turn can make the linux kernel hang.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>

Thank you!

Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>


^ permalink raw reply

* Re: [PATCHv6][ 3/5] video: mx3fb: Introduce regulator support.
From: Denis Carikli @ 2014-02-26 11:40 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1393410030.488354633@f216.i.mail.ru>

On 02/26/2014 11:20 AM, Alexander Shiyan wrote:

 > Why you want to use an excess "regulator-name" property?
I'll fix that.

>> +	/* In dt mode,
>> +	 * using devm_regulator_get would require that the proprety referencing
>> +	 * the regulator phandle has to be inside the mx3fb node.
>
> What???
[...]
 > Just use devm_regulator_get(dev, "lcd") for both dt/non-dt case.

About the use of devm_regulator_get instead of regulator_get:

There is a "dma ipu driver" for the mx3* at drivers/dma/ipu/ipu_idmac.c
This framebuffer driver (mx3fb) uses that "dma ipu driver".

In non-dt mode("board files"), this framebuffer driver requires some 
platform data which has resource informations about the ipu.

So to get device tree bindings support for the mx3fb driver, at first I 
exported the "dma ipu driver" as DMA bindings, to be used in the dts, 
and then made the mx3fb driver use that.

The comment[1] to that patchset was to instead have similar bindings 
that looks like the IPUv3 ones(IPUv3 is a staging drm driver), and not 
to export the "dma ipu driver" bindings to the dts.

So I made the bindings look like that:

display0: display@di0 {
   [...]
   display-timings {
     [...]
   };
};

ipu: ipu@53fc0000 {
   compatible = "fsl,imx35-ipu";
   reg = <0x53fc0000 0x4000>;
   clocks = <&clks 55>;
   display = <&display0>;
};

So that is very similar to the imx-drm binding[2].

To achieve that, I've set the .compatible property of the mx3fb driver 
to "fsl,<chip>-ipu", so it would look like the IPUv3 bindings, and then 
I handled the "dma ipu driver" registration in a way that doesn't export 
it to the dts.

The difference is that the imx-drm driver has separate drivers for 
handling each display type(parallel display, tve, lvds and HDMI) while 
the mx3fb doesn't.

using devm_regulator_get(NULL, "lcd") would result in a crash, because 
of devres_add.

using devm_regulator_get(dev, "lcd") would be better but it would 
instead mean that the regulator handle will have to be a child of the 
mx3fb's ipu node (ipu@53fc0000).

That's because devm_regulator_get will end calling of_get_regulator 
(trough _regulator_get, and regulator_dev_lookup), which will in turn 
lookup that regulator in the childs of dev->of_node.

That's why I want to pass it a NULL instead of a device struct, and I 
can't do it in devm_regulator_get because of devres_add, so I ended up 
using regulator_get directly.

References.
-----------
[1]http://lists.infradead.org/pipermail/linux-arm-kernel/2013-October/205846.html
[2]Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt

Denis.

^ permalink raw reply

* [PATCH] video: pwm backlight: power off when necessary
From: Liu Ying @ 2014-02-26 11:39 UTC (permalink / raw)
  To: thierry.reding, jg1.han
  Cc: plagnioj, tomi.valkeinen, linux-pwm, linux-fbdev, linux-kernel

The pwm backlight should be powered off only in two cases:
1) pwm polarity is normal and brightness is zero.
2) pwm polarity is inversed and brightness is maximal,
   that is, 100% duty.

This patch implements this logic in the pwm backlight driver
and actually fixes the issue that backlight is on when we
intend to set the brightness to be zero for an inversed pwm
signal.  The root cause of the issue is that power is off
in that case.

Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Jingoo Han <jg1.han@samsung.com>
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Liu Ying <Ying.Liu@freescale.com>
---
 drivers/video/backlight/pwm_bl.c |   10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c
index b75201f..e61e66a 100644
--- a/drivers/video/backlight/pwm_bl.c
+++ b/drivers/video/backlight/pwm_bl.c
@@ -100,6 +100,8 @@ static int compute_duty_cycle(struct pwm_bl_data *pb, int brightness)
 static int pwm_backlight_update_status(struct backlight_device *bl)
 {
 	struct pwm_bl_data *pb = bl_get_data(bl);
+	enum pwm_polarity polarity = pb->pwm->polarity;
+	int max = bl->props.max_brightness;
 	int brightness = bl->props.brightness;
 	int duty_cycle;
 
@@ -111,12 +113,14 @@ static int pwm_backlight_update_status(struct backlight_device *bl)
 	if (pb->notify)
 		brightness = pb->notify(pb->dev, brightness);
 
-	if (brightness > 0) {
+	if ((polarity = PWM_POLARITY_NORMAL && brightness = 0) ||
+	    (polarity = PWM_POLARITY_INVERSED && brightness = max)) {
+		pwm_backlight_power_off(pb);
+	} else {
 		duty_cycle = compute_duty_cycle(pb, brightness);
 		pwm_config(pb->pwm, duty_cycle, pb->period);
 		pwm_backlight_power_on(pb, brightness);
-	} else
-		pwm_backlight_power_off(pb);
+	}
 
 	if (pb->notify_after)
 		pb->notify_after(pb->dev, brightness);
-- 
1.7.9.5



^ permalink raw reply related

* [PATCH v5 2/2] hyperv-fb: kick off efifb early
From: Gerd Hoffmann @ 2014-02-26 10:51 UTC (permalink / raw)
  To: linux-fbdev
  Cc: linux-kernel, gregkh, kys, abgupta, haiyangz, jasowang,
	tomi.valkeinen, devel, Gerd Hoffmann,
	Jean-Christophe Plagniol-Villard
In-Reply-To: <1393411885-14895-1-git-send-email-kraxel@redhat.com>

Remove firmware framebuffer before initializing hyperv-fb.  Needed
on gen2 virtual machines.   Letting register_framebuffer handle the
switchover results in efifb still being active while hyperv graphics
are initialized, which in turn can make the linux kernel hang.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 drivers/video/hyperv_fb.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/video/hyperv_fb.c b/drivers/video/hyperv_fb.c
index b7b3dd0..e23392e 100644
--- a/drivers/video/hyperv_fb.c
+++ b/drivers/video/hyperv_fb.c
@@ -679,6 +679,8 @@ static int hvfb_getmem(struct fb_info *info)
 	if (gen2vm) {
 		info->apertures->ranges[0].base = screen_info.lfb_base;
 		info->apertures->ranges[0].size = screen_info.lfb_size;
+		remove_conflicting_framebuffers(info->apertures,
+						KBUILD_MODNAME, false);
 	} else {
 		info->apertures->ranges[0].base = pci_resource_start(pdev, 0);
 		info->apertures->ranges[0].size = pci_resource_len(pdev, 0);
-- 
1.8.3.1


^ permalink raw reply related

* [PATCH v5 1/2] hyperv-fb: add support for generation 2 virtual machines.
From: Gerd Hoffmann @ 2014-02-26 10:51 UTC (permalink / raw)
  To: linux-fbdev
  Cc: linux-kernel, gregkh, kys, abgupta, haiyangz, jasowang,
	tomi.valkeinen, devel, Gerd Hoffmann,
	Jean-Christophe Plagniol-Villard
In-Reply-To: <1393411885-14895-1-git-send-email-kraxel@redhat.com>

UEFI-based generation 2 virtual machines support vmbus devices only.
There is no pci bus.  Thus they use a different mechanism for the
graphics framebuffer:  Instead of using the vga pci bar a chunk of
memory muct be allocated from the hyperv mmio region declared using
APCI.  This patch implements support for it.

Based on a patch by Haiyang Zhang <haiyangz@microsoft.com>

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 drivers/video/hyperv_fb.c | 86 +++++++++++++++++++++++++++++++++--------------
 1 file changed, 60 insertions(+), 26 deletions(-)

diff --git a/drivers/video/hyperv_fb.c b/drivers/video/hyperv_fb.c
index 130708f..b7b3dd0 100644
--- a/drivers/video/hyperv_fb.c
+++ b/drivers/video/hyperv_fb.c
@@ -42,6 +42,7 @@
 #include <linux/completion.h>
 #include <linux/fb.h>
 #include <linux/pci.h>
+#include <linux/efi.h>
 
 #include <linux/hyperv.h>
 
@@ -212,6 +213,7 @@ struct synthvid_msg {
 
 struct hvfb_par {
 	struct fb_info *info;
+	struct resource mem;
 	bool fb_ready; /* fb device is ready */
 	struct completion wait;
 	u32 synthvid_version;
@@ -460,13 +462,13 @@ static int synthvid_connect_vsp(struct hv_device *hdev)
 		goto error;
 	}
 
-	if (par->synthvid_version = SYNTHVID_VERSION_WIN7) {
+	if (par->synthvid_version = SYNTHVID_VERSION_WIN7)
 		screen_depth = SYNTHVID_DEPTH_WIN7;
-		screen_fb_size = SYNTHVID_FB_SIZE_WIN7;
-	} else {
+	else
 		screen_depth = SYNTHVID_DEPTH_WIN8;
-		screen_fb_size = SYNTHVID_FB_SIZE_WIN8;
-	}
+
+	screen_fb_size = hdev->channel->offermsg.offer.
+				mmio_megabytes * 1024 * 1024;
 
 	return 0;
 
@@ -627,26 +629,46 @@ static void hvfb_get_option(struct fb_info *info)
 /* Get framebuffer memory from Hyper-V video pci space */
 static int hvfb_getmem(struct fb_info *info)
 {
-	struct pci_dev *pdev;
-	ulong fb_phys;
+	struct hvfb_par *par = info->par;
+	struct pci_dev *pdev  = NULL;
 	void __iomem *fb_virt;
+	int gen2vm = efi_enabled(EFI_BOOT);
+	int ret;
 
-	pdev = pci_get_device(PCI_VENDOR_ID_MICROSOFT,
+	par->mem.name = KBUILD_MODNAME;
+	par->mem.flags = IORESOURCE_MEM | IORESOURCE_BUSY;
+	if (gen2vm) {
+		ret = allocate_resource(&hyperv_mmio, &par->mem,
+					screen_fb_size,
+					0, -1,
+					screen_fb_size,
+					NULL, NULL);
+		if (ret != 0) {
+			pr_err("Unable to allocate framebuffer memory\n");
+			return -ENODEV;
+		}
+	} else {
+		pdev = pci_get_device(PCI_VENDOR_ID_MICROSOFT,
 			      PCI_DEVICE_ID_HYPERV_VIDEO, NULL);
-	if (!pdev) {
-		pr_err("Unable to find PCI Hyper-V video\n");
-		return -ENODEV;
-	}
+		if (!pdev) {
+			pr_err("Unable to find PCI Hyper-V video\n");
+			return -ENODEV;
+		}
 
-	if (!(pci_resource_flags(pdev, 0) & IORESOURCE_MEM) ||
-	    pci_resource_len(pdev, 0) < screen_fb_size)
-		goto err1;
+		if (!(pci_resource_flags(pdev, 0) & IORESOURCE_MEM) ||
+		    pci_resource_len(pdev, 0) < screen_fb_size)
+			goto err1;
 
-	fb_phys = pci_resource_end(pdev, 0) - screen_fb_size + 1;
-	if (!request_mem_region(fb_phys, screen_fb_size, KBUILD_MODNAME))
-		goto err1;
+		par->mem.end = pci_resource_end(pdev, 0);
+		par->mem.start = par->mem.end - screen_fb_size + 1;
+		ret = request_resource(&pdev->resource[0], &par->mem);
+		if (ret != 0) {
+			pr_err("Unable to request framebuffer memory\n");
+			goto err1;
+		}
+	}
 
-	fb_virt = ioremap(fb_phys, screen_fb_size);
+	fb_virt = ioremap(par->mem.start, screen_fb_size);
 	if (!fb_virt)
 		goto err2;
 
@@ -654,30 +676,42 @@ static int hvfb_getmem(struct fb_info *info)
 	if (!info->apertures)
 		goto err3;
 
-	info->apertures->ranges[0].base = pci_resource_start(pdev, 0);
-	info->apertures->ranges[0].size = pci_resource_len(pdev, 0);
-	info->fix.smem_start = fb_phys;
+	if (gen2vm) {
+		info->apertures->ranges[0].base = screen_info.lfb_base;
+		info->apertures->ranges[0].size = screen_info.lfb_size;
+	} else {
+		info->apertures->ranges[0].base = pci_resource_start(pdev, 0);
+		info->apertures->ranges[0].size = pci_resource_len(pdev, 0);
+	}
+
+	info->fix.smem_start = par->mem.start;
 	info->fix.smem_len = screen_fb_size;
 	info->screen_base = fb_virt;
 	info->screen_size = screen_fb_size;
 
-	pci_dev_put(pdev);
+	if (!gen2vm)
+		pci_dev_put(pdev);
+
 	return 0;
 
 err3:
 	iounmap(fb_virt);
 err2:
-	release_mem_region(fb_phys, screen_fb_size);
+	release_resource(&par->mem);
 err1:
-	pci_dev_put(pdev);
+	if (!gen2vm)
+		pci_dev_put(pdev);
+
 	return -ENOMEM;
 }
 
 /* Release the framebuffer */
 static void hvfb_putmem(struct fb_info *info)
 {
+	struct hvfb_par *par = info->par;
+
 	iounmap(info->screen_base);
-	release_mem_region(info->fix.smem_start, screen_fb_size);
+	release_resource(&par->mem);
 }
 
 
-- 
1.8.3.1


^ permalink raw reply related

* [PATCH v5 0/2] hyperv-fb: add support for generation 2 virtual machines
From: Gerd Hoffmann @ 2014-02-26 10:51 UTC (permalink / raw)
  To: linux-fbdev
  Cc: linux-kernel, gregkh, kys, abgupta, haiyangz, jasowang,
	tomi.valkeinen, devel, Gerd Hoffmann

  Hi,

This patch series adds support for uefi-based gen2 virtual machines
to the hyperv-fb driver.  It depends on a few vmbus changes which are
staged in Greg's char-misc tree (and linux-next).

Patch #1 implements gen2 vm support for hyperv-fb.

Patch #2 unregisters efifb early to make sure the framebuffer isn't used
any more while hyperv-fb initialization is in progress.

v5 changes:
 - call remove_conflicting_framebuffers() only on gen2
   virtual machines.

v4 changes:
 - use KBUILD_MODNAME everywhere for consistent naming.
 - drop the two patches which Greg has staged in char-misc.

please apply,
  Gerd

Gerd Hoffmann (2):
  hyperv-fb: add support for generation 2 virtual machines.
  hyperv-fb: kick off efifb early

 drivers/video/hyperv_fb.c | 88 +++++++++++++++++++++++++++++++++--------------
 1 file changed, 62 insertions(+), 26 deletions(-)

-- 
1.8.3.1


^ permalink raw reply

* Re: [PATCHv6][ 3/5] video: mx3fb: Introduce r =?UTF-8?B?ZWd1bGF0b3Igc3Vwc
From: Alexander Shiyan @ 2014-02-26 10:20 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1393408800-8946-3-git-send-email-denis@eukrea.com>

0KHRgNC10LTQsCwgMjYg0YTQtdCy0YDQsNC70Y8gMjAxNCwgMTA6NTkgKzAxOjAwINC+0YIgRGVu
aXMgQ2FyaWtsaSA8ZGVuaXNAZXVrcmVhLmNvbT46Cj4gVGhpcyBjb21taXQgaXMgYmFzZWQgb24g
dGhlIGZvbGxvd2luZyBjb21taXQgYnkgRmFiaW8gRXN0ZXZhbToKPiAgIDQzNDQ0MjkgdmlkZW86
IG14c2ZiOiBJbnRyb2R1Y2UgcmVndWxhdG9yIHN1cHBvcnQKLi4uCj4gKysrIGIvZHJpdmVycy92
aWRlby9teDNmYi5jCi4uLgo+IEBAIC0xNDA5LDYgKzE0MzUsOSBAQCBzdGF0aWMgaW50IGluaXRf
ZmJfY2hhbihzdHJ1Y3QgbXgzZmJfZGF0YSAqbXgzZmIsIHN0cnVjdCBpZG1hY19jaGFubmVsICpp
Y2hhbikKPiAgCQkJcmV0dXJuIC1FSU5WQUw7Cj4gIAkJfQo+ICAKPiArCQlvZl9wcm9wZXJ0eV9y
ZWFkX3N0cmluZyhkaXNwbGF5X25wLCAicmVndWxhdG9yLW5hbWUiLAo+ICsJCQkJCSZyZWd1bGF0
b3JfbmFtZSk7Cj4gKwo+ICAJCW9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKGRpc3BsYXlfbnAsICJp
bnRlcmZhY2UtcGl4LWZtdCIsCj4gIAkJCQkJJmlwdV9kaXNwX2Zvcm1hdCk7Cj4gIAkJaWYgKCFp
cHVfZGlzcF9mb3JtYXQpIHsKPiBAQCAtMTUyNiw2ICsxNTU1LDIxIEBAIHN0YXRpYyBpbnQgaW5p
dF9mYl9jaGFuKHN0cnVjdCBteDNmYl9kYXRhICpteDNmYiwgc3RydWN0IGlkbWFjX2NoYW5uZWwg
KmljaGFuKQo+ICAJaWYgKHJldCA8IDApCj4gIAkJZ290byBlc2V0cGFyOwo+ICAKPiArCS8qIElu
IGR0IG1vZGUsCj4gKwkgKiB1c2luZyBkZXZtX3JlZ3VsYXRvcl9nZXQgd291bGQgcmVxdWlyZSB0
aGF0IHRoZSBwcm9wcmV0eSByZWZlcmVuY2luZwo+ICsJICogdGhlIHJlZ3VsYXRvciBwaGFuZGxl
IGhhcyB0byBiZSBpbnNpZGUgdGhlIG14M2ZiIG5vZGUuCgpXaGF0Pz8/Cgo+ICsJICovCj4gKwlp
ZiAobnApIHsKPiArCQlpZiAocmVndWxhdG9yX25hbWUpCj4gKwkJCW14M2ZiaS0+cmVnX2xjZCA9
IHJlZ3VsYXRvcl9nZXQoTlVMTCwgcmVndWxhdG9yX25hbWUpOwo+ICsKPiArCQlpZiAoSVNfRVJS
KG14M2ZiaS0+cmVnX2xjZCkpCj4gKwkJCXJldHVybiBQVFJfRVJSKG14M2ZiaS0+cmVnX2xjZCk7
Cj4gKwl9IGVsc2Ugewo+ICsJCS8qIFBlcm1pdCB0aGF0IGRyaXZlciB3aXRob3V0IGEgcmVndWxh
dG9yIGluIG5vbi1kdCBtb2RlICovCj4gKwkJbXgzZmJpLT5yZWdfbGNkID0gcmVndWxhdG9yX2dl
dChkZXYsICJsY2QiKTsKPiArCX0KCldoeSB5b3Ugd2FudCB0byB1c2UgYW4gZXhjZXNzICJyZWd1
bGF0b3ItbmFtZSIgcHJvcGVydHk/Ckp1c3QgdXNlIGRldm1fcmVndWxhdG9yX2dldChkZXYsICJs
Y2QiKSBmb3IgYm90aCBkdC9ub24tZHQgY2FzZS4K

^ permalink raw reply

* Re: [RFC PATCH 0/5] Move IPUv3 core out of staging, add CSI support
From: Russell King - ARM Linux @ 2014-02-26 10:08 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <1387561966-31758-1-git-send-email-p.zabel@pengutronix.de>

On Wed, Feb 26, 2014 at 11:39:03AM +0300, Dan Carpenter wrote:
> 
> Please fix the following static checker complaints before moving out of
> staging:
> 
> drivers/staging/imx-drm/ipu-v3/ipu-dmfc.c:164 ipu_dmfc_setup_channel() warn: variable dereferenced before check 'dmfc' (see line 157)

Note that what's being talked about being moved out is only the above,
not the files in drivers/staging/imx-drm.  DRM people have not yet
reviewed imx-drm itself, which is a necessary step - but nevertheless,
thanks for running a static checker on this stuff.

-- 
FTTC broadband for 0.8mile line: now at 9.7Mbps down 460kbps up... slowly
improving, and getting towards what was expected from it.

^ permalink raw reply

* [PATCHv6][ 5/5] ARM: dts: mbimxsd35 Add video and displays support.
From: Denis Carikli @ 2014-02-26  9:59 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1393408800-8946-1-git-send-email-denis@eukrea.com>

Cc: Eric Bénard <eric@eukrea.com>
Cc: Shawn Guo <shawn.guo@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org

Signed-off-by: Denis Carikli <denis@eukrea.com>
---
ChangeLog v5->v6:
- Shrinked the Cc list.
- Added the targets in the Makefile
- rebased not to use the now gone pingrp headers.

ChangeLog v4->v5:
- Added Grant Likely and Shawn Guo in the Cc list.
- Adapted to the new non-dma ipu bindings.

ChangeLog v3->v4:
- Shortened the licenses.
- adapted the dts(i) to the new bindings.
ChangeLog v2->v3:
- The dts were adapted to the new DT bindings which looks more like the IPUv3
  ones.
---
 arch/arm/boot/dts/Makefile                         |    3 +
 arch/arm/boot/dts/imx35-eukrea-cpuimx35.dtsi       |   28 ++++++++++
 .../imx35-eukrea-mbimxsd35-baseboard-cmo-qvga.dts  |   58 ++++++++++++++++++++
 .../imx35-eukrea-mbimxsd35-baseboard-dvi-svga.dts  |   47 ++++++++++++++++
 .../imx35-eukrea-mbimxsd35-baseboard-dvi-vga.dts   |   47 ++++++++++++++++
 5 files changed, 183 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard-cmo-qvga.dts
 create mode 100644 arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard-dvi-svga.dts
 create mode 100644 arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard-dvi-vga.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index c98f343..ad0915e 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -167,6 +167,9 @@ dtb-$(CONFIG_ARCH_MXC) += \
 	imx27-phytec-phycard-s-rdk.dtb \
 	imx31-bug.dtb \
 	imx35-eukrea-mbimxsd35-baseboard.dtb \
+	imx35-eukrea-mbimxsd35-baseboard-cmo-qvga.dtb \
+	imx35-eukrea-mbimxsd35-baseboard-dvi-svga.dtb \
+	imx35-eukrea-mbimxsd35-baseboard-dvi-vga.dtb \
 	imx50-evk.dtb \
 	imx51-apf51.dtb \
 	imx51-apf51dev.dtb \
diff --git a/arch/arm/boot/dts/imx35-eukrea-cpuimx35.dtsi b/arch/arm/boot/dts/imx35-eukrea-cpuimx35.dtsi
index 906ae93..6596009 100644
--- a/arch/arm/boot/dts/imx35-eukrea-cpuimx35.dtsi
+++ b/arch/arm/boot/dts/imx35-eukrea-cpuimx35.dtsi
@@ -70,6 +70,34 @@
 				MX35_PAD_I2C1_DAT__I2C1_SDA		0x80000000
 			>;
 		};
+
+		pinctrl_ipu_disp0: ipudisp0grp {
+			fsl,pins = <
+				MX35_PAD_LD0__IPU_DISPB_DAT_0         0x80000000
+				MX35_PAD_LD1__IPU_DISPB_DAT_1         0x80000000
+				MX35_PAD_LD2__IPU_DISPB_DAT_2         0x80000000
+				MX35_PAD_LD3__IPU_DISPB_DAT_3         0x80000000
+				MX35_PAD_LD4__IPU_DISPB_DAT_4         0x80000000
+				MX35_PAD_LD5__IPU_DISPB_DAT_5         0x80000000
+				MX35_PAD_LD6__IPU_DISPB_DAT_6         0x80000000
+				MX35_PAD_LD7__IPU_DISPB_DAT_7         0x80000000
+				MX35_PAD_LD8__IPU_DISPB_DAT_8         0x80000000
+				MX35_PAD_LD9__IPU_DISPB_DAT_9         0x80000000
+				MX35_PAD_LD10__IPU_DISPB_DAT_10       0x80000000
+				MX35_PAD_LD11__IPU_DISPB_DAT_11       0x80000000
+				MX35_PAD_LD12__IPU_DISPB_DAT_12       0x80000000
+				MX35_PAD_LD13__IPU_DISPB_DAT_13       0x80000000
+				MX35_PAD_LD14__IPU_DISPB_DAT_14       0x80000000
+				MX35_PAD_LD15__IPU_DISPB_DAT_15       0x80000000
+				MX35_PAD_LD16__IPU_DISPB_DAT_16       0x80000000
+				MX35_PAD_LD17__IPU_DISPB_DAT_17       0x80000000
+				MX35_PAD_D3_HSYNC__IPU_DISPB_D3_HSYNC 0x80000000
+				MX35_PAD_D3_FPSHIFT__IPU_DISPB_D3_CLK 0x80000000
+				MX35_PAD_D3_DRDY__IPU_DISPB_D3_DRDY   0x80000000
+				MX35_PAD_D3_VSYNC__IPU_DISPB_D3_VSYNC 0x80000000
+				MX35_PAD_CONTRAST__IPU_DISPB_CONTR    0x80000000
+			>;
+		};
 	};
 };
 
diff --git a/arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard-cmo-qvga.dts b/arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard-cmo-qvga.dts
new file mode 100644
index 0000000..345f560
--- /dev/null
+++ b/arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard-cmo-qvga.dts
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2013 Eukréa Electromatique <denis@eukrea.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include "imx35-eukrea-mbimxsd35-baseboard.dts"
+
+/ {
+	model = "Eukrea MBIMXSD35 with the CMO-QVGA Display";
+	compatible = "eukrea,mbimxsd35-baseboard-cmo-qvga", "eukrea,mbimxsd35-baseboard", "eukrea,cpuimx35", "fsl,imx35";
+
+	cmo_qvga: display@di0 {
+		compatible = "fsl,mx3-parallel-display";
+		regulator-name = "lcd";
+		interface-pix-fmt = "rgb666";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_ipu_disp0>;
+		lcd-supply = <&reg_lcd_3v3>;
+		model = "CMO-QVGA";
+		display-timings {
+			qvga_timings: 320x240 {
+				clock-frequency = <6500000>;
+				hactive = <320>;
+				vactive = <240>;
+				hback-porch = <68>;
+				hfront-porch = <20>;
+				vback-porch = <15>;
+				vfront-porch = <4>;
+				hsync-len = <30>;
+				vsync-len = <3>;
+			};
+		};
+	};
+
+	reg_lcd_3v3: lcd-en {
+		compatible = "regulator-fixed";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_reg_lcd_3v3>;
+		regulator-name = "lcd";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		gpio = <&gpio1 4 0>;
+		enable-active-high;
+	};
+};
+
+&ipu {
+	display = <&cmo_qvga>;
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard-dvi-svga.dts b/arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard-dvi-svga.dts
new file mode 100644
index 0000000..1a249d0
--- /dev/null
+++ b/arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard-dvi-svga.dts
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2013 Eukréa Electromatique <denis@eukrea.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include "imx35-eukrea-mbimxsd35-baseboard.dts"
+
+/ {
+	model = "Eukrea MBIMXSD35 with the DVI-SVGA Display";
+	compatible = "eukrea,mbimxsd35-baseboard-dvi-svga", "eukrea,mbimxsd35-baseboard", "eukrea,cpuimx35", "fsl,imx35";
+	dvi_svga: display@di0 {
+		interface-pix-fmt = "rgb666";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_ipu_disp0>;
+		model = "DVI-SVGA";
+		display-timings {
+			svga_timings: 800x600 {
+				clock-frequency = <40000000>;
+				hactive = <800>;
+				vactive = <600>;
+				hback-porch = <75>;
+				hfront-porch = <75>;
+				vback-porch = <7>;
+				vfront-porch = <75>;
+				hsync-len = <7>;
+				vsync-len = <7>;
+				hsync-active = <1>;
+				vsync-active = <1>;
+				de-active = <1>;
+				pixelclk-active = <0>;
+			};
+		};
+	};
+};
+
+&ipu {
+	display = <&dvi_svga>;
+	status = "okay";
+};
diff --git a/arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard-dvi-vga.dts b/arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard-dvi-vga.dts
new file mode 100644
index 0000000..44a7616
--- /dev/null
+++ b/arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard-dvi-vga.dts
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2013 Eukréa Electromatique <denis@eukrea.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include "imx35-eukrea-mbimxsd35-baseboard.dts"
+
+/ {
+	model = "Eukrea MBIMXSD35 with the DVI-VGA Display";
+	compatible = "eukrea,mbimxsd35-baseboard-dvi-vga", "eukrea,mbimxsd35-baseboard", "eukrea,cpuimx35", "fsl,imx35";
+	dvi_vga: display@di0 {
+		interface-pix-fmt = "rgb666";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_ipu_disp0>;
+		model = "DVI-VGA";
+		display-timings {
+			vga_timings: 640x480 {
+				clock-frequency = <31250000>;
+				hactive = <640>;
+				vactive = <480>;
+				hback-porch = <100>;
+				hfront-porch = <100>;
+				vback-porch = <7>;
+				vfront-porch = <100>;
+				hsync-len = <7>;
+				vsync-len = <7>;
+				hsync-active = <1>;
+				vsync-active = <1>;
+				de-active = <1>;
+				pixelclk-active = <0>;
+			};
+		};
+	};
+};
+
+&ipu {
+	display = <&dvi_vga>;
+	status = "okay";
+};
-- 
1.7.9.5


^ permalink raw reply related

* [PATCHv6][ 4/5] ARM: dts: i.MX35: Add display support.
From: Denis Carikli @ 2014-02-26  9:59 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1393408800-8946-1-git-send-email-denis@eukrea.com>

A pinctrl node for the IPU was also added.

Cc: Eric Bénard <eric@eukrea.com>
Cc: Shawn Guo <shawn.guo@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org
Signed-off-by: Denis Carikli <denis@eukrea.com>
---
ChangeLog v5->v6:
- Shrinked the Cc list.

ChangeLog v4->v5:
- Added Grant Likely and Shawn Guo in the Cc list.
- Adapted to the new non-dma ipu bindings.
- Adapted to the use of imx35-pingrp.h
- The pinctrl ipu node addition was moved in this commit.

ChangeLog v3->v4:
- Splitted the imx35.dtsi display support (new patch).
---
 arch/arm/boot/dts/imx35.dtsi |    7 +++++++
 arch/arm/mach-imx/imx35-dt.c |    7 +++++++
 2 files changed, 14 insertions(+)

diff --git a/arch/arm/boot/dts/imx35.dtsi b/arch/arm/boot/dts/imx35.dtsi
index 88b218f..e6ad2a4 100644
--- a/arch/arm/boot/dts/imx35.dtsi
+++ b/arch/arm/boot/dts/imx35.dtsi
@@ -229,6 +229,13 @@
 				status = "disabled";
 			};
 
+			ipu: ipu@53fc0000 {
+				compatible = "fsl,imx35-ipu";
+				reg = <0x53fc0000 0x4000>;
+				clocks = <&clks 55>;
+				status = "disabled";
+			};
+
 			audmux: audmux@53fc4000 {
 				compatible = "fsl,imx35-audmux", "fsl,imx31-audmux";
 				reg = <0x53fc4000 0x4000>;
diff --git a/arch/arm/mach-imx/imx35-dt.c b/arch/arm/mach-imx/imx35-dt.c
index 9d48e00..c2919a8 100644
--- a/arch/arm/mach-imx/imx35-dt.c
+++ b/arch/arm/mach-imx/imx35-dt.c
@@ -18,14 +18,21 @@
 #include <asm/mach/time.h>
 #include <asm/hardware/cache-l2x0.h>
 #include "common.h"
+#include "devices-imx35.h"
 #include "mx35.h"
 
 static void __init imx35_dt_init(void)
 {
+	struct device_node *np;
 	mxc_arch_reset_init_dt();
 
 	of_platform_populate(NULL, of_default_bus_match_table,
 			     NULL, NULL);
+
+	/* We don't want to export the IPU as DT bindings. */
+	np = of_find_compatible_node(NULL, NULL, "fsl,imx35-ipu");
+	if (of_device_is_available(np))
+		imx35_add_ipu_core();
 }
 
 static void __init imx35_irq_init(void)
-- 
1.7.9.5


^ permalink raw reply related

* [PATCHv6][ 3/5] video: mx3fb: Introduce regulator support.
From: Denis Carikli @ 2014-02-26  9:59 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1393408800-8946-1-git-send-email-denis@eukrea.com>

This commit is based on the following commit by Fabio Estevam:
  4344429 video: mxsfb: Introduce regulator support

Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Eric Bénard <eric@eukrea.com>
Cc: linux-fbdev@vger.kernel.org
Signed-off-by: Denis Carikli <denis@eukrea.com>
---
ChangeLog v5->v6:
- Shrinked the Cc list.
- still permit non-dt boards to use that driver without a regulator.

ChangeLog v4->v5:
- Added Shawn Guo in the Cc list.
- Rebased to make it apply.

ChangeLog v3->v4:
- Some code style fixes.
- Improved error handling in eremap.

ChangeLog v2->v3:
- The prints are now replaced with non line wrapped prints.
- The regulator retrival has been adapted to the new DT bindings which looks
  more like the IPUv3 ones.
- The regulator_is_enabled checks were kept, because regulator_disable do not
  do such check.
---
 drivers/video/mx3fb.c |   56 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 55 insertions(+), 1 deletion(-)

diff --git a/drivers/video/mx3fb.c b/drivers/video/mx3fb.c
index 952d2b5..40b47dd 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/regulator/consumer.h>
 
 #include <linux/platform_data/dma-imx.h>
 #include <linux/platform_data/video-mx3fb.h>
@@ -273,6 +274,7 @@ struct mx3fb_info {
 	struct dma_async_tx_descriptor	*txd;
 	dma_cookie_t			cookie;
 	struct scatterlist		sg[2];
+	struct regulator		*reg_lcd;
 
 	struct fb_var_screeninfo	cur_var; /* current var info */
 	uint32_t			flags;
@@ -1042,6 +1044,12 @@ static void __blank(int blank, struct fb_info *fbi)
 	case FB_BLANK_HSYNC_SUSPEND:
 	case FB_BLANK_NORMAL:
 		sdc_set_brightness(mx3fb, 0);
+		if (!IS_ERR(mx3_fbi->reg_lcd)) {
+			if (regulator_disable(mx3_fbi->reg_lcd)) {
+				dev_err(fbi->device,
+					"Failed to disable regulator.\n");
+			}
+		}
 		memset((char *)fbi->screen_base, 0, fbi->fix.smem_len);
 		/* Give LCD time to update - enough for 50 and 60 Hz */
 		msleep(25);
@@ -1049,6 +1057,12 @@ static void __blank(int blank, struct fb_info *fbi)
 		break;
 	case FB_BLANK_UNBLANK:
 		sdc_enable_channel(mx3_fbi);
+		if (!IS_ERR(mx3_fbi->reg_lcd)) {
+			if (regulator_enable(mx3_fbi->reg_lcd)) {
+				dev_err(fbi->device,
+					"Failed to enable regulator.\n");
+			}
+		}
 		sdc_set_brightness(mx3fb, mx3fb->backlight_level);
 		break;
 	}
@@ -1233,7 +1247,12 @@ static int mx3fb_suspend(struct platform_device *pdev, pm_message_t state)
 	if (mx3_fbi->blank = FB_BLANK_UNBLANK) {
 		sdc_disable_channel(mx3_fbi);
 		sdc_set_brightness(mx3fb, 0);
-
+		if (!IS_ERR(mx3_fbi->reg_lcd)) {
+			if (regulator_disable(mx3_fbi->reg_lcd)) {
+				dev_err(&pdev->dev,
+					"Failed to disable regulator.\n");
+			}
+		}
 	}
 	return 0;
 }
@@ -1249,6 +1268,12 @@ static int mx3fb_resume(struct platform_device *pdev)
 	if (mx3_fbi->blank = FB_BLANK_UNBLANK) {
 		sdc_enable_channel(mx3_fbi);
 		sdc_set_brightness(mx3fb, mx3fb->backlight_level);
+		if (!IS_ERR(mx3_fbi->reg_lcd)) {
+			if (regulator_enable(mx3_fbi->reg_lcd)) {
+				dev_err(&pdev->dev,
+					"Failed to enable regulator.\n");
+			}
+		}
 	}
 
 	console_lock();
@@ -1394,6 +1419,7 @@ static int init_fb_chan(struct mx3fb_data *mx3fb, struct idmac_channel *ichan)
 	struct mx3fb_platform_data *mx3fb_pdata = dev_get_platdata(dev);
 	struct device_node *np = dev->of_node;
 	const char *name;
+	const char *regulator_name;
 	const char *ipu_disp_format;
 	unsigned int irq;
 	struct fb_info *fbi;
@@ -1409,6 +1435,9 @@ static int init_fb_chan(struct mx3fb_data *mx3fb, struct idmac_channel *ichan)
 			return -EINVAL;
 		}
 
+		of_property_read_string(display_np, "regulator-name",
+					&regulator_name);
+
 		of_property_read_string(display_np, "interface-pix-fmt",
 					&ipu_disp_format);
 		if (!ipu_disp_format) {
@@ -1526,6 +1555,21 @@ static int init_fb_chan(struct mx3fb_data *mx3fb, struct idmac_channel *ichan)
 	if (ret < 0)
 		goto esetpar;
 
+	/* In dt mode,
+	 * using devm_regulator_get would require that the proprety referencing
+	 * the regulator phandle has to be inside the mx3fb node.
+	 */
+	if (np) {
+		if (regulator_name)
+			mx3fbi->reg_lcd = regulator_get(NULL, regulator_name);
+
+		if (IS_ERR(mx3fbi->reg_lcd))
+			return PTR_ERR(mx3fbi->reg_lcd);
+	} else {
+		/* Permit that driver without a regulator in non-dt mode */
+		mx3fbi->reg_lcd = regulator_get(dev, "lcd");
+	}
+
 	__blank(FB_BLANK_UNBLANK, fbi);
 
 	dev_info(dev, "registered, using mode %s\n", fb_mode);
@@ -1589,6 +1633,7 @@ static int mx3fb_probe(struct platform_device *pdev)
 	dma_cap_mask_t mask;
 	struct dma_chan *chan;
 	struct dma_chan_request rq;
+	struct mx3fb_info *mx3_fbi;
 	struct device_node *np = dev->of_node;
 	struct videomode *vm;
 	struct fb_videomode *fb_vm;
@@ -1673,6 +1718,12 @@ ersdc0:
 	dmaengine_put();
 	iounmap(mx3fb->reg_base);
 eremap:
+	if (mx3fb->fbi) {
+		mx3_fbi = mx3fb->fbi->par;
+
+		if ((!IS_ERR(mx3_fbi->reg_lcd)) && mx3_fbi->reg_lcd)
+			regulator_put(mx3_fbi->reg_lcd);
+	}
 	dev_err(dev, "mx3fb: failed to register fb\n");
 	return ret;
 }
@@ -1684,6 +1735,9 @@ static int mx3fb_remove(struct platform_device *dev)
 	struct mx3fb_info *mx3_fbi = fbi->par;
 	struct dma_chan *chan;
 
+	if ((!IS_ERR(mx3_fbi->reg_lcd)) && mx3_fbi->reg_lcd)
+		regulator_put(mx3_fbi->reg_lcd);
+
 	chan = &mx3_fbi->idmac_channel->dma_chan;
 	release_fbi(fbi);
 
-- 
1.7.9.5


^ permalink raw reply related

* [PATCHv6][ 2/5] video: mx3fb: Add device tree suport.
From: Denis Carikli @ 2014-02-26  9:59 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1393408800-8946-1-git-send-email-denis@eukrea.com>

This patch is based on:
  838bdf7 video: mxsfb: fix broken videomode selection

Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Eric Bénard <eric@eukrea.com>
Cc: linux-fbdev@vger.kernel.org
Signed-off-by: Denis Carikli <denis@eukrea.com>
---
ChangeLog v5->v6:
- Shrinked the Cc list.
- de-active and pixelclk-active dt properties are
  now handled in this patch to get rid of the
  "fbdev: Add the lacking FB_SYNC_* for matching the DISPLAY_FLAGS_*" patch

ChangeLog v4->v5:
- Added some people in the Cc list.
- The full ipu register range is now passed to the driver,
  the code and the documentation were adapted to it.
- Updated the documentation not to mention the lcd controller, the ipu was
  mentioned instead.
- The ipu patch was removed from this patchset, as a consequence the mx3fb code
  has been adapted not to expect the dma ipu driver to be probed trough the device tree.

ChangeLog v3->v4:
- Updated bindings.
- Updated documentation accordinly.
- Updated code accordinly.
- Fixed the lack of "ret =" in
  of_property_read_string(display_np, "model", &name);
- Supressed some compilation warnings.

ChangeLog v2->v3:
- The device tree bindings were reworked in order to make it look more like the
  IPUv3 bindings.
- The interface_pix_fmt property now looks like the IPUv3 one.
---
 .../devicetree/bindings/video/fsl,mx3-fb.txt       |   44 +++++
 drivers/video/Kconfig                              |    2 +
 drivers/video/mx3fb.c                              |  185 +++++++++++++++++---
 3 files changed, 208 insertions(+), 23 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/video/fsl,mx3-fb.txt

diff --git a/Documentation/devicetree/bindings/video/fsl,mx3-fb.txt b/Documentation/devicetree/bindings/video/fsl,mx3-fb.txt
new file mode 100644
index 0000000..c0409a4
--- /dev/null
+++ b/Documentation/devicetree/bindings/video/fsl,mx3-fb.txt
@@ -0,0 +1,44 @@
+Freescale MX3 IPU.
+=========
+
+Required properties:
+- compatible: Should be "fsl,<chip>-ipu". compatible chips include the imx31 and the
+  imx35.
+- reg: should be register base and length as documented in the datasheet.
+- clocks: Handle to the ipu_gate clock.
+- display: Phandle to a "fsl,mx3-parallel-display" compatible display node
+  which is described below.
+
+Example:
+
+ipu: ipu@53fc0000 {
+	compatible = "fsl,imx35-ipu";
+	reg = <0x53fc0000 0x4000>;
+	clocks = <&clks 55>;
+};
+
+Parallel display support
+============
+
+Required properties:
+- compatible: Should be "fsl,mx3-parallel-display".
+- model : The user-visible name of the display.
+
+Optional properties:
+- interface_pix_fmt: How this display is connected to the
+  crtc. Currently supported types: "rgb24", "rgb565", "rgb666".
+
+It can also have an optional timing subnode as described in
+  Documentation/devicetree/bindings/video/display-timing.txt.
+
+Example:
+
+display0: display@di0 {
+	compatible = "fsl,mx3-parallel-display";
+	interface-pix-fmt = "rgb666";
+	model = "CMO-QVGA";
+};
+
+&ipu {
+	display = <&display0>;
+}
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index dade5b7..e98abf7 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -2376,6 +2376,8 @@ config FB_MX3
 	select FB_CFB_FILLRECT
 	select FB_CFB_COPYAREA
 	select FB_CFB_IMAGEBLIT
+	select VIDEOMODE_HELPERS
+	select FB_MODE_HELPERS
 	default y
 	help
 	  This is a framebuffer device for the i.MX31 LCD Controller. So
diff --git a/drivers/video/mx3fb.c b/drivers/video/mx3fb.c
index ee95de8..952d2b5 100644
--- a/drivers/video/mx3fb.c
+++ b/drivers/video/mx3fb.c
@@ -31,6 +31,10 @@
 #include <linux/platform_data/dma-imx.h>
 #include <linux/platform_data/video-mx3fb.h>
 
+#include <video/of_display_timing.h>
+#include <video/of_videomode.h>
+#include <video/videomode.h>
+
 #include <asm/io.h>
 #include <asm/uaccess.h>
 
@@ -237,6 +241,8 @@ static const struct fb_videomode mx3fb_modedb[] = {
 
 struct mx3fb_data {
 	struct fb_info		*fbi;
+	struct videomode	*vm;
+	struct fb_videomode	*fb_vm;
 	int			backlight_level;
 	void __iomem		*reg_base;
 	spinlock_t		lock;
@@ -269,6 +275,7 @@ struct mx3fb_info {
 	struct scatterlist		sg[2];
 
 	struct fb_var_screeninfo	cur_var; /* current var info */
+	uint32_t			flags;
 };
 
 static void mx3fb_dma_done(void *);
@@ -753,16 +760,32 @@ static int __set_par(struct fb_info *fbi, bool lock)
 
 	if (mx3_fbi->ipu_ch = IDMAC_SDC_0) {
 		memset(&sig_cfg, 0, sizeof(sig_cfg));
+
 		if (fbi->var.sync & FB_SYNC_HOR_HIGH_ACT)
 			sig_cfg.Hsync_pol = true;
+
 		if (fbi->var.sync & FB_SYNC_VERT_HIGH_ACT)
 			sig_cfg.Vsync_pol = true;
-		if (fbi->var.sync & FB_SYNC_CLK_INVERT)
-			sig_cfg.clk_pol = true;
+
+		if (fbi->device->of_node) {
+			if (mx3_fbi->flags & FB_SYNC_CLK_INVERT)
+				sig_cfg.clk_pol = true;
+		} else {
+			if (fbi->var.sync & FB_SYNC_CLK_INVERT)
+				sig_cfg.clk_pol = true;
+		}
+
 		if (fbi->var.sync & FB_SYNC_DATA_INVERT)
 			sig_cfg.data_pol = true;
-		if (fbi->var.sync & FB_SYNC_OE_ACT_HIGH)
-			sig_cfg.enable_pol = true;
+
+		if (fbi->device->of_node) {
+			if (mx3_fbi->flags & FB_SYNC_OE_ACT_HIGH)
+				sig_cfg.enable_pol = true;
+		} else {
+			if (fbi->var.sync & FB_SYNC_OE_ACT_HIGH)
+				sig_cfg.enable_pol = true;
+		}
+
 		if (fbi->var.sync & FB_SYNC_CLK_IDLE_EN)
 			sig_cfg.clkidle_en = true;
 		if (fbi->var.sync & FB_SYNC_CLK_SEL_EN)
@@ -1266,7 +1289,8 @@ static int mx3fb_map_video_memory(struct fb_info *fbi, unsigned int mem_len,
 						  &addr, GFP_DMA | GFP_KERNEL);
 
 	if (!fbi->screen_base) {
-		dev_err(fbi->device, "Cannot allocate %u bytes framebuffer memory\n",
+		dev_err(fbi->device,
+			"Cannot allocate %u bytes framebuffer memory\n",
 			mem_len);
 		retval = -EBUSY;
 		goto err0;
@@ -1280,7 +1304,8 @@ static int mx3fb_map_video_memory(struct fb_info *fbi, unsigned int mem_len,
 		mutex_unlock(&fbi->mm_lock);
 
 	dev_dbg(fbi->device, "allocated fb @ p=0x%08x, v=0x%p, size=%d.\n",
-		(uint32_t) fbi->fix.smem_start, fbi->screen_base, fbi->fix.smem_len);
+		(uint32_t) fbi->fix.smem_start,
+		fbi->screen_base, fbi->fix.smem_len);
 
 	fbi->screen_size = fbi->fix.smem_len;
 
@@ -1351,21 +1376,68 @@ static struct fb_info *mx3fb_init_fbinfo(struct device *dev, struct fb_ops *ops)
 	return fbi;
 }
 
+static int match_dt_disp_data(const char *property)
+{
+	if (!strcmp("rgb666", property))
+		return IPU_DISP_DATA_MAPPING_RGB666;
+	else if (!strcmp("rgb565", property))
+		return IPU_DISP_DATA_MAPPING_RGB565;
+	else if (!strcmp("rgb24", property))
+		return IPU_DISP_DATA_MAPPING_RGB888;
+	else
+		return -EINVAL;
+}
+
 static int init_fb_chan(struct mx3fb_data *mx3fb, struct idmac_channel *ichan)
 {
 	struct device *dev = mx3fb->dev;
 	struct mx3fb_platform_data *mx3fb_pdata = dev_get_platdata(dev);
-	const char *name = mx3fb_pdata->name;
+	struct device_node *np = dev->of_node;
+	const char *name;
+	const char *ipu_disp_format;
 	unsigned int irq;
 	struct fb_info *fbi;
 	struct mx3fb_info *mx3fbi;
 	const struct fb_videomode *mode;
 	int ret, num_modes;
+	struct device_node *display_np = NULL;
+
+	if (np) {
+		display_np = of_parse_phandle(np, "display", 0);
+		if (!display_np) {
+			dev_err(dev, "Can't get the display device node.\n");
+			return -EINVAL;
+		}
+
+		of_property_read_string(display_np, "interface-pix-fmt",
+					&ipu_disp_format);
+		if (!ipu_disp_format) {
+			mx3fb->disp_data_fmt = IPU_DISP_DATA_MAPPING_RGB666;
+			dev_warn(dev,
+				"ipu display data mapping was not defined, using the default rgb666.\n");
+		} else {
+			mx3fb->disp_data_fmt +				match_dt_disp_data(ipu_disp_format);
+		}
 
-	if (mx3fb_pdata->disp_data_fmt >= ARRAY_SIZE(di_mappings)) {
-		dev_err(dev, "Illegal display data format %d\n",
+		if (mx3fb->disp_data_fmt = -EINVAL) {
+			dev_err(dev, "Illegal display data format \"%s\"\n",
+				ipu_disp_format);
+			return -EINVAL;
+		}
+
+		ret = of_property_read_string(display_np, "model", &name);
+		if (ret) {
+			dev_err(dev, "Missing display model name\n");
+			return -EINVAL;
+		}
+	} else {
+		name = mx3fb_pdata->name;
+		if (mx3fb_pdata->disp_data_fmt >= ARRAY_SIZE(di_mappings)) {
+			dev_err(dev, "Illegal display data format %d\n",
 				mx3fb_pdata->disp_data_fmt);
-		return -EINVAL;
+			return -EINVAL;
+		}
 	}
 
 	ichan->client = mx3fb;
@@ -1386,12 +1458,36 @@ static int init_fb_chan(struct mx3fb_data *mx3fb, struct idmac_channel *ichan)
 		goto emode;
 	}
 
-	if (mx3fb_pdata->mode && mx3fb_pdata->num_modes) {
-		mode = mx3fb_pdata->mode;
-		num_modes = mx3fb_pdata->num_modes;
+	mx3fbi = fbi->par;
+
+	if (np) {
+		ret = of_get_videomode(display_np, mx3fb->vm,
+				       OF_USE_NATIVE_MODE);
+		if (ret) {
+			dev_err(dev, "failed to get videomode from DT\n");
+			goto put_display_node;
+		}
+
+		ret = fb_videomode_from_videomode(mx3fb->vm, mx3fb->fb_vm);
+		if (ret < 0)
+			goto put_display_node;
+
+		if (mx3fb->vm->flags & DISPLAY_FLAGS_DE_HIGH)
+			mx3fbi->flags |= FB_SYNC_OE_ACT_HIGH;
+
+		if (mx3fb->vm->flags & DISPLAY_FLAGS_PIXDATA_NEGEDGE)
+			mx3fbi->flags |= FB_SYNC_CLK_INVERT;
+
+		mode = mx3fb->fb_vm;
+		num_modes = 1;
 	} else {
-		mode = mx3fb_modedb;
-		num_modes = ARRAY_SIZE(mx3fb_modedb);
+		if (mx3fb_pdata->mode && mx3fb_pdata->num_modes) {
+			mode = mx3fb_pdata->mode;
+			num_modes = mx3fb_pdata->num_modes;
+		} else {
+			mode = mx3fb_modedb;
+			num_modes = ARRAY_SIZE(mx3fb_modedb);
+		}
 	}
 
 	if (!fb_find_mode(&fbi->var, fbi, fb_mode, mode,
@@ -1415,13 +1511,13 @@ static int init_fb_chan(struct mx3fb_data *mx3fb, struct idmac_channel *ichan)
 	sdc_set_global_alpha(mx3fb, true, 0xFF);
 	sdc_set_color_key(mx3fb, IDMAC_SDC_0, false, 0);
 
-	mx3fbi			= fbi->par;
 	mx3fbi->idmac_channel	= ichan;
 	mx3fbi->ipu_ch		= ichan->dma_chan.chan_id;
 	mx3fbi->mx3fb		= mx3fb;
 	mx3fbi->blank		= FB_BLANK_NORMAL;
 
-	mx3fb->disp_data_fmt	= mx3fb_pdata->disp_data_fmt;
+	if (!np)
+		mx3fb->disp_data_fmt = mx3fb_pdata->disp_data_fmt;
 
 	init_completion(&mx3fbi->flip_cmpl);
 	disable_irq(ichan->eof_irq);
@@ -1440,6 +1536,8 @@ static int init_fb_chan(struct mx3fb_data *mx3fb, struct idmac_channel *ichan)
 
 	return 0;
 
+put_display_node:
+	of_node_put(display_np);
 erfb:
 esetpar:
 emode:
@@ -1455,17 +1553,21 @@ static bool chan_filter(struct dma_chan *chan, void *arg)
 	struct device *dev;
 	struct mx3fb_platform_data *mx3fb_pdata;
 
-	if (!imx_dma_is_ipu(chan))
-		return false;
-
 	if (!rq)
 		return false;
 
 	dev = rq->mx3fb->dev;
 	mx3fb_pdata = dev_get_platdata(dev);
 
-	return rq->id = chan->chan_id &&
-		mx3fb_pdata->dma_dev = chan->device->dev;
+	if (!imx_dma_is_ipu(chan) && mx3fb_pdata)
+		return false;
+
+	/* When using the devicetree, mx3fb_pdata is NULL */
+	if (mx3fb_pdata)
+		return rq->id = chan->chan_id &&
+			mx3fb_pdata->dma_dev = chan->device->dev;
+	else
+		return rq->id = chan->chan_id;
 }
 
 static void release_fbi(struct fb_info *fbi)
@@ -1487,6 +1589,9 @@ static int mx3fb_probe(struct platform_device *pdev)
 	dma_cap_mask_t mask;
 	struct dma_chan *chan;
 	struct dma_chan_request rq;
+	struct device_node *np = dev->of_node;
+	struct videomode *vm;
+	struct fb_videomode *fb_vm;
 
 	/*
 	 * Display Interface (DI) and Synchronous Display Controller (SDC)
@@ -1508,7 +1613,33 @@ static int mx3fb_probe(struct platform_device *pdev)
 		goto eremap;
 	}
 
-	pr_debug("Remapped %pR at %p\n", sdc_reg, mx3fb->reg_base);
+	/* The full IPU registers range is passed by the device tree,
+	 * whereas the platform data only passes the SDC registers range.
+	 */
+	if (np) {
+		vm = devm_kzalloc(&pdev->dev, sizeof(struct videomode),
+				  GFP_KERNEL);
+		if (!vm) {
+			ret = -ENOMEM;
+			goto eremap;
+		}
+
+		fb_vm = devm_kzalloc(&pdev->dev, sizeof(struct fb_videomode),
+				     GFP_KERNEL);
+		if (!fb_vm) {
+			ret = -ENOMEM;
+			goto eremap;
+		}
+
+		mx3fb->vm = vm;
+		mx3fb->fb_vm = fb_vm;
+
+		mx3fb->reg_base += MX3FB_REG_OFFSET;
+		pr_debug("Remapped %pR at %p\n", sdc_reg + MX3FB_REG_OFFSET,
+			 mx3fb->reg_base);
+	} else {
+		pr_debug("Remapped %pR at %p\n", sdc_reg, mx3fb->reg_base);
+	}
 
 	/* IDMAC interface */
 	dmaengine_get();
@@ -1563,9 +1694,17 @@ static int mx3fb_remove(struct platform_device *dev)
 	return 0;
 }
 
+static struct of_device_id mx3fb_of_dev_id[] = {
+	{ .compatible = "fsl,imx31-ipu", },
+	{ .compatible = "fsl,imx35-ipu", },
+	{ /* sentinel */ },
+};
+MODULE_DEVICE_TABLE(of, mx3fb_of_dev_id);
+
 static struct platform_driver mx3fb_driver = {
 	.driver = {
 		.name = MX3FB_NAME,
+		.of_match_table = mx3fb_of_dev_id,
 		.owner = THIS_MODULE,
 	},
 	.probe = mx3fb_probe,
-- 
1.7.9.5


^ permalink raw reply related

* [PATCHv6][ 1/5] video: mx3fb: Use devm_kzalloc
From: Denis Carikli @ 2014-02-26  9:59 UTC (permalink / raw)
  To: linux-arm-kernel

Replace kzalloc by devm_kzalloc and remove the kfree() calls.

Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Eric Bénard <eric@eukrea.com>
Cc: linux-fbdev@vger.kernel.org
Signed-off-by: Denis Carikli <denis@eukrea.com>
---
ChangeLog v5->v6:
 - New patch needed by "video: mx3fb: Add device tree suport."
---
 drivers/video/mx3fb.c |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/video/mx3fb.c b/drivers/video/mx3fb.c
index 142e860..ee95de8 100644
--- a/drivers/video/mx3fb.c
+++ b/drivers/video/mx3fb.c
@@ -1496,7 +1496,7 @@ static int mx3fb_probe(struct platform_device *pdev)
 	if (!sdc_reg)
 		return -EINVAL;
 
-	mx3fb = kzalloc(sizeof(*mx3fb), GFP_KERNEL);
+	mx3fb = devm_kzalloc(&pdev->dev, sizeof(*mx3fb), GFP_KERNEL);
 	if (!mx3fb)
 		return -ENOMEM;
 
@@ -1542,7 +1542,6 @@ ersdc0:
 	dmaengine_put();
 	iounmap(mx3fb->reg_base);
 eremap:
-	kfree(mx3fb);
 	dev_err(dev, "mx3fb: failed to register fb\n");
 	return ret;
 }
@@ -1561,7 +1560,6 @@ static int mx3fb_remove(struct platform_device *dev)
 	dmaengine_put();
 
 	iounmap(mx3fb->reg_base);
-	kfree(mx3fb);
 	return 0;
 }
 
-- 
1.7.9.5


^ permalink raw reply related

* Re: [PATCH v4 2/2] hyperv-fb: kick off efifb early
From: Gerd Hoffmann @ 2014-02-26  9:49 UTC (permalink / raw)
  To: Haiyang Zhang
  Cc: linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	gregkh@linuxfoundation.org, KY Srinivasan, Abhishek Gupta (LIS),
	jasowang@redhat.com, tomi.valkeinen@ti.com,
	devel@linuxdriverproject.org, Jean-Christophe Plagniol-Villard
In-Reply-To: <5414def7813d4bccbcf1b128b6a5ee46@DFM-DB3MBX15-06.exchange.corp.microsoft.com>

  Hi,

> > diff --git a/drivers/video/hyperv_fb.c b/drivers/video/hyperv_fb.c index
> > b7b3dd0..1b11886 100644
> > --- a/drivers/video/hyperv_fb.c
> > +++ b/drivers/video/hyperv_fb.c
> > @@ -683,6 +683,7 @@ static int hvfb_getmem(struct fb_info *info)
> >  		info->apertures->ranges[0].base = pci_resource_start(pdev, 0);
> >  		info->apertures->ranges[0].size = pci_resource_len(pdev, 0);
> >  	}
> > +	remove_conflicting_framebuffers(info->apertures,
> > KBUILD_MODNAME,
> > +false);
> 
> Thanks for the updates. I'm concerned about, after removing efifb, 
> if synthvid_send_config(hdev) fails, then there will be no video driver
> available.

That may happen, yes.

> Is there a way to bring the generic driver back if 
> synthvid_send_config(hdev) fails?

Not that I know of.

> If no way to recover the generic driver, please limit the early
> remove_conflicting_framebuffers() to Gen2 VM only.

I'll send updated patches once they are tested.

cheers,
  Gerd



^ permalink raw reply

* Re: [RFC PATCH 0/5] Move IPUv3 core out of staging, add CSI support
From: Dan Carpenter @ 2014-02-26  8:39 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <1387561966-31758-1-git-send-email-p.zabel@pengutronix.de>


Please fix the following static checker complaints before moving out of
staging:

drivers/staging/imx-drm/ipu-v3/ipu-dmfc.c:164 ipu_dmfc_setup_channel() warn: variable dereferenced before check 'dmfc' (see line 157)
drivers/staging/imx-drm/imx-ldb.c:109 imx_ldb_connector_get_modes() error: potential null dereference 'mode'.  (drm_mode_create returns null)
drivers/staging/imx-drm/imx-ldb.c:340 imx_ldb_get_clk() error: format string overflow. buf_size: 16 length: 18
	probably 18 is theory and not real life, but 16 is based on
	theory as well.
drivers/staging/imx-drm/parallel-display.c:64 imx_pd_connector_get_modes() error: potential null dereference 'mode'.  (drm_mode_create returns null)
drivers/staging/imx-drm/parallel-display.c:73 imx_pd_connector_get_modes() error: potential null dereference 'mode'.  (drm_mode_create returns null)

drivers/staging/imx-drm/ipuv3-plane.c: In function ‘ipu_plane_set_base’:
drivers/staging/imx-drm/ipuv3-plane.c:75:2: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 4 has type ‘dma_addr_t’ [-Wformat]
	cast it to u64 and use %llx
drivers/staging/imx-drm/imx-drm-core.c:89:21: warning: symbol 'imx_drm_find_crtc' was not declared. Should it be static?

regards,
dan carpenter

^ permalink raw reply

* RE: [PATCH v4 2/2] hyperv-fb: kick off efifb early
From: Haiyang Zhang @ 2014-02-25 15:51 UTC (permalink / raw)
  To: Gerd Hoffmann, linux-fbdev@vger.kernel.org
  Cc: linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org,
	KY Srinivasan, Abhishek Gupta (LIS), jasowang@redhat.com,
	tomi.valkeinen@ti.com, devel@linuxdriverproject.org,
	Jean-Christophe Plagniol-Villard
In-Reply-To: <1393331320-18147-3-git-send-email-kraxel@redhat.com>



> -----Original Message-----
> From: Gerd Hoffmann [mailto:kraxel@redhat.com]
> Sent: Tuesday, February 25, 2014 7:29 AM
> To: linux-fbdev@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org; gregkh@linuxfoundation.org; KY Srinivasan;
> Abhishek Gupta (LIS); Haiyang Zhang; jasowang@redhat.com;
> tomi.valkeinen@ti.com; devel@linuxdriverproject.org; Gerd Hoffmann; Jean-
> Christophe Plagniol-Villard
> Subject: [PATCH v4 2/2] hyperv-fb: kick off efifb early
> 
> Remove firmware framebuffer before initializing hyperv-fb.  Needed
> on gen2 virtual machines.   Letting register_framebuffer handle the
> switchover results in efifb still being active while hyperv graphics are
> initialized, which in turn can make the linux kernel hang.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>  drivers/video/hyperv_fb.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/video/hyperv_fb.c b/drivers/video/hyperv_fb.c index
> b7b3dd0..1b11886 100644
> --- a/drivers/video/hyperv_fb.c
> +++ b/drivers/video/hyperv_fb.c
> @@ -683,6 +683,7 @@ static int hvfb_getmem(struct fb_info *info)
>  		info->apertures->ranges[0].base = pci_resource_start(pdev, 0);
>  		info->apertures->ranges[0].size = pci_resource_len(pdev, 0);
>  	}
> +	remove_conflicting_framebuffers(info->apertures,
> KBUILD_MODNAME,
> +false);

Thanks for the updates. I'm concerned about, after removing efifb, 
if synthvid_send_config(hdev) fails, then there will be no video driver
available. Is there a way to bring the generic driver back if 
synthvid_send_config(hdev) fails?

If no way to recover the generic driver, please limit the early
remove_conflicting_framebuffers() to Gen2 VM only.

Thanks,
- Haiyang


^ permalink raw reply

* [PATCH v4 2/2] hyperv-fb: kick off efifb early
From: Gerd Hoffmann @ 2014-02-25 12:28 UTC (permalink / raw)
  To: linux-fbdev
  Cc: linux-kernel, gregkh, kys, abgupta, haiyangz, jasowang,
	tomi.valkeinen, devel, Gerd Hoffmann,
	Jean-Christophe Plagniol-Villard
In-Reply-To: <1393331320-18147-1-git-send-email-kraxel@redhat.com>

Remove firmware framebuffer before initializing hyperv-fb.  Needed
on gen2 virtual machines.   Letting register_framebuffer handle the
switchover results in efifb still being active while hyperv graphics
are initialized, which in turn can make the linux kernel hang.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 drivers/video/hyperv_fb.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/video/hyperv_fb.c b/drivers/video/hyperv_fb.c
index b7b3dd0..1b11886 100644
--- a/drivers/video/hyperv_fb.c
+++ b/drivers/video/hyperv_fb.c
@@ -683,6 +683,7 @@ static int hvfb_getmem(struct fb_info *info)
 		info->apertures->ranges[0].base = pci_resource_start(pdev, 0);
 		info->apertures->ranges[0].size = pci_resource_len(pdev, 0);
 	}
+	remove_conflicting_framebuffers(info->apertures, KBUILD_MODNAME, false);
 
 	info->fix.smem_start = par->mem.start;
 	info->fix.smem_len = screen_fb_size;
-- 
1.8.3.1


^ permalink raw reply related

* [PATCH v4 1/2] hyperv-fb: add support for generation 2 virtual machines.
From: Gerd Hoffmann @ 2014-02-25 12:28 UTC (permalink / raw)
  To: linux-fbdev
  Cc: linux-kernel, gregkh, kys, abgupta, haiyangz, jasowang,
	tomi.valkeinen, devel, Gerd Hoffmann,
	Jean-Christophe Plagniol-Villard
In-Reply-To: <1393331320-18147-1-git-send-email-kraxel@redhat.com>

UEFI-based generation 2 virtual machines support vmbus devices only.
There is no pci bus.  Thus they use a different mechanism for the
graphics framebuffer:  Instead of using the vga pci bar a chunk of
memory muct be allocated from the hyperv mmio region declared using
APCI.  This patch implements support for it.

Based on a patch by Haiyang Zhang <haiyangz@microsoft.com>

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 drivers/video/hyperv_fb.c | 86 +++++++++++++++++++++++++++++++++--------------
 1 file changed, 60 insertions(+), 26 deletions(-)

diff --git a/drivers/video/hyperv_fb.c b/drivers/video/hyperv_fb.c
index 130708f..b7b3dd0 100644
--- a/drivers/video/hyperv_fb.c
+++ b/drivers/video/hyperv_fb.c
@@ -42,6 +42,7 @@
 #include <linux/completion.h>
 #include <linux/fb.h>
 #include <linux/pci.h>
+#include <linux/efi.h>
 
 #include <linux/hyperv.h>
 
@@ -212,6 +213,7 @@ struct synthvid_msg {
 
 struct hvfb_par {
 	struct fb_info *info;
+	struct resource mem;
 	bool fb_ready; /* fb device is ready */
 	struct completion wait;
 	u32 synthvid_version;
@@ -460,13 +462,13 @@ static int synthvid_connect_vsp(struct hv_device *hdev)
 		goto error;
 	}
 
-	if (par->synthvid_version = SYNTHVID_VERSION_WIN7) {
+	if (par->synthvid_version = SYNTHVID_VERSION_WIN7)
 		screen_depth = SYNTHVID_DEPTH_WIN7;
-		screen_fb_size = SYNTHVID_FB_SIZE_WIN7;
-	} else {
+	else
 		screen_depth = SYNTHVID_DEPTH_WIN8;
-		screen_fb_size = SYNTHVID_FB_SIZE_WIN8;
-	}
+
+	screen_fb_size = hdev->channel->offermsg.offer.
+				mmio_megabytes * 1024 * 1024;
 
 	return 0;
 
@@ -627,26 +629,46 @@ static void hvfb_get_option(struct fb_info *info)
 /* Get framebuffer memory from Hyper-V video pci space */
 static int hvfb_getmem(struct fb_info *info)
 {
-	struct pci_dev *pdev;
-	ulong fb_phys;
+	struct hvfb_par *par = info->par;
+	struct pci_dev *pdev  = NULL;
 	void __iomem *fb_virt;
+	int gen2vm = efi_enabled(EFI_BOOT);
+	int ret;
 
-	pdev = pci_get_device(PCI_VENDOR_ID_MICROSOFT,
+	par->mem.name = KBUILD_MODNAME;
+	par->mem.flags = IORESOURCE_MEM | IORESOURCE_BUSY;
+	if (gen2vm) {
+		ret = allocate_resource(&hyperv_mmio, &par->mem,
+					screen_fb_size,
+					0, -1,
+					screen_fb_size,
+					NULL, NULL);
+		if (ret != 0) {
+			pr_err("Unable to allocate framebuffer memory\n");
+			return -ENODEV;
+		}
+	} else {
+		pdev = pci_get_device(PCI_VENDOR_ID_MICROSOFT,
 			      PCI_DEVICE_ID_HYPERV_VIDEO, NULL);
-	if (!pdev) {
-		pr_err("Unable to find PCI Hyper-V video\n");
-		return -ENODEV;
-	}
+		if (!pdev) {
+			pr_err("Unable to find PCI Hyper-V video\n");
+			return -ENODEV;
+		}
 
-	if (!(pci_resource_flags(pdev, 0) & IORESOURCE_MEM) ||
-	    pci_resource_len(pdev, 0) < screen_fb_size)
-		goto err1;
+		if (!(pci_resource_flags(pdev, 0) & IORESOURCE_MEM) ||
+		    pci_resource_len(pdev, 0) < screen_fb_size)
+			goto err1;
 
-	fb_phys = pci_resource_end(pdev, 0) - screen_fb_size + 1;
-	if (!request_mem_region(fb_phys, screen_fb_size, KBUILD_MODNAME))
-		goto err1;
+		par->mem.end = pci_resource_end(pdev, 0);
+		par->mem.start = par->mem.end - screen_fb_size + 1;
+		ret = request_resource(&pdev->resource[0], &par->mem);
+		if (ret != 0) {
+			pr_err("Unable to request framebuffer memory\n");
+			goto err1;
+		}
+	}
 
-	fb_virt = ioremap(fb_phys, screen_fb_size);
+	fb_virt = ioremap(par->mem.start, screen_fb_size);
 	if (!fb_virt)
 		goto err2;
 
@@ -654,30 +676,42 @@ static int hvfb_getmem(struct fb_info *info)
 	if (!info->apertures)
 		goto err3;
 
-	info->apertures->ranges[0].base = pci_resource_start(pdev, 0);
-	info->apertures->ranges[0].size = pci_resource_len(pdev, 0);
-	info->fix.smem_start = fb_phys;
+	if (gen2vm) {
+		info->apertures->ranges[0].base = screen_info.lfb_base;
+		info->apertures->ranges[0].size = screen_info.lfb_size;
+	} else {
+		info->apertures->ranges[0].base = pci_resource_start(pdev, 0);
+		info->apertures->ranges[0].size = pci_resource_len(pdev, 0);
+	}
+
+	info->fix.smem_start = par->mem.start;
 	info->fix.smem_len = screen_fb_size;
 	info->screen_base = fb_virt;
 	info->screen_size = screen_fb_size;
 
-	pci_dev_put(pdev);
+	if (!gen2vm)
+		pci_dev_put(pdev);
+
 	return 0;
 
 err3:
 	iounmap(fb_virt);
 err2:
-	release_mem_region(fb_phys, screen_fb_size);
+	release_resource(&par->mem);
 err1:
-	pci_dev_put(pdev);
+	if (!gen2vm)
+		pci_dev_put(pdev);
+
 	return -ENOMEM;
 }
 
 /* Release the framebuffer */
 static void hvfb_putmem(struct fb_info *info)
 {
+	struct hvfb_par *par = info->par;
+
 	iounmap(info->screen_base);
-	release_mem_region(info->fix.smem_start, screen_fb_size);
+	release_resource(&par->mem);
 }
 
 
-- 
1.8.3.1


^ permalink raw reply related

* [PATCH v4 0/2] hyperv-fb: add support for generation 2 virtual machines.
From: Gerd Hoffmann @ 2014-02-25 12:28 UTC (permalink / raw)
  To: linux-fbdev
  Cc: linux-kernel, gregkh, kys, abgupta, haiyangz, jasowang,
	tomi.valkeinen, devel, Gerd Hoffmann

  Hi,

This patch series adds support for uefi-based gen2 virtual machines
to the hyperv-fb driver.  It depends on a few vmbus changes which are
staged in Greg's char-misc tree (and linux-next).

Patch #1 implements gen2 vm support for hyperv-fb.

Patch #2 unregisters efifb early to make sure the framebuffer isn't used
any more while hyperv-fb initialization is in progress.

v4 changes:
 - use KBUILD_MODNAME everywhere for consistent naming.
 - drop the two patches which Greg has staged in char-misc.

please apply,
  Gerd

Gerd Hoffmann (2):
  hyperv-fb: add support for generation 2 virtual machines.
  hyperv-fb: kick off efifb early

 drivers/video/hyperv_fb.c | 87 +++++++++++++++++++++++++++++++++--------------
 1 file changed, 61 insertions(+), 26 deletions(-)

-- 
1.8.3.1


^ permalink raw reply

* Re: [PATCH 3/3] gpu: ipu-v3: Move i.MX IPUv3 core driver out of staging
From: Philipp Zabel @ 2014-02-25 12:09 UTC (permalink / raw)
  To: linux-fbdev
In-Reply-To: <1393328624-28013-5-git-send-email-p.zabel@pengutronix.de>

Am Dienstag, den 25.02.2014, 12:43 +0100 schrieb Philipp Zabel:
> The i.MX Image Processing Unit (IPU) contains a number of image processing
> blocks that sit right in the middle between DRM and V4L2. Some of the modules,
> such as Display Controller, Processor, and Interface (DC, DP, DI) or CMOS
> Sensor Interface (CSI) and their FIFOs could be assigned to either framework,
> but others, such as the dma controller (IDMAC) and image converter (IC) can
> be used by both.
> The IPUv3 core driver provides an internal API to access the modules, to be
> used by both DRM and V4L2 IPUv3 drivers.
[...]

This one is missing:

diff --git a/drivers/staging/imx-drm/imx-hdmi.c b/drivers/staging/imx-drm/imx-hdmi.c
index cb4eb76..9aeb863 100644
--- a/drivers/staging/imx-drm/imx-hdmi.c
+++ b/drivers/staging/imx-drm/imx-hdmi.c
@@ -28,7 +28,8 @@
 #include <drm/drm_edid.h>
 #include <drm/drm_encoder_slave.h>
 
-#include "ipu-v3/imx-ipu-v3.h"
+#include <video/imx-ipu-v3.h>
+
 #include "imx-hdmi.h"
 #include "imx-drm.h"
 

regards
Philipp


^ permalink raw reply related

* [PATCH 3/3] gpu: ipu-v3: Move i.MX IPUv3 core driver out of staging
From: Philipp Zabel @ 2014-02-25 11:43 UTC (permalink / raw)
  To: linux-fbdev

The i.MX Image Processing Unit (IPU) contains a number of image processing
blocks that sit right in the middle between DRM and V4L2. Some of the modules,
such as Display Controller, Processor, and Interface (DC, DP, DI) or CMOS
Sensor Interface (CSI) and their FIFOs could be assigned to either framework,
but others, such as the dma controller (IDMAC) and image converter (IC) can
be used by both.
The IPUv3 core driver provides an internal API to access the modules, to be
used by both DRM and V4L2 IPUv3 drivers.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
---
 drivers/gpu/Makefile                                          |  1 +
 drivers/gpu/ipu-v3/Kconfig                                    |  7 +++++++
 drivers/{staging/imx-drm => gpu}/ipu-v3/Makefile              |  2 +-
 drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-common.c          |  2 +-
 drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-dc.c              |  3 +--
 drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-di.c              |  2 +-
 drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-dmfc.c            |  2 +-
 drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-dp.c              |  2 +-
 drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-prv.h             |  2 +-
 drivers/staging/imx-drm/Kconfig                               | 11 +----------
 drivers/staging/imx-drm/Makefile                              |  1 -
 drivers/staging/imx-drm/imx-tve.c                             |  2 +-
 drivers/staging/imx-drm/ipuv3-crtc.c                          |  2 +-
 drivers/staging/imx-drm/ipuv3-plane.c                         |  2 +-
 drivers/video/Kconfig                                         |  1 +
 .../staging/imx-drm/ipu-v3 => include/video}/imx-ipu-v3.h     |  0
 16 files changed, 20 insertions(+), 22 deletions(-)
 create mode 100644 drivers/gpu/ipu-v3/Kconfig
 rename drivers/{staging/imx-drm => gpu}/ipu-v3/Makefile (59%)
 rename drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-common.c (99%)
 rename drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-dc.c (99%)
 rename drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-di.c (99%)
 rename drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-dmfc.c (99%)
 rename drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-dp.c (99%)
 rename drivers/{staging/imx-drm => gpu}/ipu-v3/ipu-prv.h (99%)
 rename {drivers/staging/imx-drm/ipu-v3 => include/video}/imx-ipu-v3.h (100%)

diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile
index d8a22c2..70da9eb 100644
--- a/drivers/gpu/Makefile
+++ b/drivers/gpu/Makefile
@@ -1,2 +1,3 @@
 obj-y			+= drm/ vga/
 obj-$(CONFIG_TEGRA_HOST1X)	+= host1x/
+obj-$(CONFIG_IMX_IPUV3_CORE)	+= ipu-v3/
diff --git a/drivers/gpu/ipu-v3/Kconfig b/drivers/gpu/ipu-v3/Kconfig
new file mode 100644
index 0000000..2f228a2
--- /dev/null
+++ b/drivers/gpu/ipu-v3/Kconfig
@@ -0,0 +1,7 @@
+config IMX_IPUV3_CORE
+	tristate "IPUv3 core support"
+	depends on SOC_IMX5 || SOC_IMX6Q || SOC_IMX6SL || ARCH_MULTIPLATFORM
+	depends on RESET_CONTROLLER
+	help
+	  Choose this if you have a i.MX5/6 system and want to use the Image
+	  Processing Unit. This option only enables IPU base support.
diff --git a/drivers/staging/imx-drm/ipu-v3/Makefile b/drivers/gpu/ipu-v3/Makefile
similarity index 59%
rename from drivers/staging/imx-drm/ipu-v3/Makefile
rename to drivers/gpu/ipu-v3/Makefile
index 28ed72e..d21cc37 100644
--- a/drivers/staging/imx-drm/ipu-v3/Makefile
+++ b/drivers/gpu/ipu-v3/Makefile
@@ -1,3 +1,3 @@
-obj-$(CONFIG_DRM_IMX_IPUV3_CORE) += imx-ipu-v3.o
+obj-$(CONFIG_IMX_IPUV3_CORE) += imx-ipu-v3.o
 
 imx-ipu-v3-objs := ipu-common.o ipu-dc.o ipu-di.o ipu-dp.o ipu-dmfc.o
diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-common.c b/drivers/gpu/ipu-v3/ipu-common.c
similarity index 99%
rename from drivers/staging/imx-drm/ipu-v3/ipu-common.c
rename to drivers/gpu/ipu-v3/ipu-common.c
index ca85d3d..7e1f614 100644
--- a/drivers/staging/imx-drm/ipu-v3/ipu-common.c
+++ b/drivers/gpu/ipu-v3/ipu-common.c
@@ -31,7 +31,7 @@
 
 #include <drm/drm_fourcc.h>
 
-#include "imx-ipu-v3.h"
+#include <video/imx-ipu-v3.h>
 #include "ipu-prv.h"
 
 static inline u32 ipu_cm_read(struct ipu_soc *ipu, unsigned offset)
diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-dc.c b/drivers/gpu/ipu-v3/ipu-dc.c
similarity index 99%
rename from drivers/staging/imx-drm/ipu-v3/ipu-dc.c
rename to drivers/gpu/ipu-v3/ipu-dc.c
index d5de8bb..9f1e5ef 100644
--- a/drivers/staging/imx-drm/ipu-v3/ipu-dc.c
+++ b/drivers/gpu/ipu-v3/ipu-dc.c
@@ -20,8 +20,7 @@
 #include <linux/delay.h>
 #include <linux/io.h>
 
-#include "../imx-drm.h"
-#include "imx-ipu-v3.h"
+#include <video/imx-ipu-v3.h>
 #include "ipu-prv.h"
 
 #define DC_MAP_CONF_PTR(n)	(0x108 + ((n) & ~0x1) * 2)
diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-di.c b/drivers/gpu/ipu-v3/ipu-di.c
similarity index 99%
rename from drivers/staging/imx-drm/ipu-v3/ipu-di.c
rename to drivers/gpu/ipu-v3/ipu-di.c
index 82a9eba..42e60b4 100644
--- a/drivers/staging/imx-drm/ipu-v3/ipu-di.c
+++ b/drivers/gpu/ipu-v3/ipu-di.c
@@ -20,7 +20,7 @@
 #include <linux/err.h>
 #include <linux/platform_device.h>
 
-#include "imx-ipu-v3.h"
+#include <video/imx-ipu-v3.h>
 #include "ipu-prv.h"
 
 struct ipu_di {
diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-dmfc.c b/drivers/gpu/ipu-v3/ipu-dmfc.c
similarity index 99%
rename from drivers/staging/imx-drm/ipu-v3/ipu-dmfc.c
rename to drivers/gpu/ipu-v3/ipu-dmfc.c
index 98070dd..d46de73 100644
--- a/drivers/staging/imx-drm/ipu-v3/ipu-dmfc.c
+++ b/drivers/gpu/ipu-v3/ipu-dmfc.c
@@ -17,7 +17,7 @@
 #include <linux/errno.h>
 #include <linux/io.h>
 
-#include "imx-ipu-v3.h"
+#include <video/imx-ipu-v3.h>
 #include "ipu-prv.h"
 
 #define DMFC_RD_CHAN		0x0000
diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-dp.c b/drivers/gpu/ipu-v3/ipu-dp.c
similarity index 99%
rename from drivers/staging/imx-drm/ipu-v3/ipu-dp.c
rename to drivers/gpu/ipu-v3/ipu-dp.c
index 58f87c8..e17fa3f 100644
--- a/drivers/staging/imx-drm/ipu-v3/ipu-dp.c
+++ b/drivers/gpu/ipu-v3/ipu-dp.c
@@ -19,7 +19,7 @@
 #include <linux/io.h>
 #include <linux/err.h>
 
-#include "imx-ipu-v3.h"
+#include <video/imx-ipu-v3.h>
 #include "ipu-prv.h"
 
 #define DP_SYNC 0
diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-prv.h b/drivers/gpu/ipu-v3/ipu-prv.h
similarity index 99%
rename from drivers/staging/imx-drm/ipu-v3/ipu-prv.h
rename to drivers/gpu/ipu-v3/ipu-prv.h
index 4df0050..5cb075f 100644
--- a/drivers/staging/imx-drm/ipu-v3/ipu-prv.h
+++ b/drivers/gpu/ipu-v3/ipu-prv.h
@@ -22,7 +22,7 @@ struct ipu_soc;
 #include <linux/clk.h>
 #include <linux/platform_device.h>
 
-#include "imx-ipu-v3.h"
+#include <video/imx-ipu-v3.h>
 
 #define IPUV3_CHANNEL_CSI0			 0
 #define IPUV3_CHANNEL_CSI1			 1
diff --git a/drivers/staging/imx-drm/Kconfig b/drivers/staging/imx-drm/Kconfig
index 78319ad..c9a0cb0 100644
--- a/drivers/staging/imx-drm/Kconfig
+++ b/drivers/staging/imx-drm/Kconfig
@@ -38,19 +38,10 @@ config DRM_IMX_LDB
 	  Choose this to enable the internal LVDS Display Bridge (LDB)
 	  found on i.MX53 and i.MX6 processors.
 
-config DRM_IMX_IPUV3_CORE
-	tristate "IPUv3 core support"
-	depends on DRM_IMX
-	depends on RESET_CONTROLLER
-	help
-	  Choose this if you have a i.MX5/6 system and want
-	  to use the IPU. This option only enables IPU base
-	  support.
-
 config DRM_IMX_IPUV3
 	tristate "DRM Support for i.MX IPUv3"
 	depends on DRM_IMX
-	depends on DRM_IMX_IPUV3_CORE
+	depends on IMX_IPUV3_CORE
 	help
 	  Choose this if you have a i.MX5 or i.MX6 processor.
 
diff --git a/drivers/staging/imx-drm/Makefile b/drivers/staging/imx-drm/Makefile
index 129e3a3..582c438 100644
--- a/drivers/staging/imx-drm/Makefile
+++ b/drivers/staging/imx-drm/Makefile
@@ -6,7 +6,6 @@ obj-$(CONFIG_DRM_IMX) += imxdrm.o
 obj-$(CONFIG_DRM_IMX_PARALLEL_DISPLAY) += parallel-display.o
 obj-$(CONFIG_DRM_IMX_TVE) += imx-tve.o
 obj-$(CONFIG_DRM_IMX_LDB) += imx-ldb.o
-obj-$(CONFIG_DRM_IMX_IPUV3_CORE) += ipu-v3/
 
 imx-ipuv3-crtc-objs  := ipuv3-crtc.o ipuv3-plane.o
 obj-$(CONFIG_DRM_IMX_IPUV3)	+= imx-ipuv3-crtc.o
diff --git a/drivers/staging/imx-drm/imx-tve.c b/drivers/staging/imx-drm/imx-tve.c
index 50b25f1..b5fa210 100644
--- a/drivers/staging/imx-drm/imx-tve.c
+++ b/drivers/staging/imx-drm/imx-tve.c
@@ -30,8 +30,8 @@
 #include <drm/drmP.h>
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_crtc_helper.h>
+#include <video/imx-ipu-v3.h>
 
-#include "ipu-v3/imx-ipu-v3.h"
 #include "imx-drm.h"
 
 #define TVE_COM_CONF_REG	0x00
diff --git a/drivers/staging/imx-drm/ipuv3-crtc.c b/drivers/staging/imx-drm/ipuv3-crtc.c
index e646017..3e0854a 100644
--- a/drivers/staging/imx-drm/ipuv3-crtc.c
+++ b/drivers/staging/imx-drm/ipuv3-crtc.c
@@ -30,7 +30,7 @@
 #include <drm/drm_gem_cma_helper.h>
 #include <drm/drm_fb_cma_helper.h>
 
-#include "ipu-v3/imx-ipu-v3.h"
+#include <video/imx-ipu-v3.h>
 #include "imx-drm.h"
 #include "ipuv3-plane.h"
 
diff --git a/drivers/staging/imx-drm/ipuv3-plane.c b/drivers/staging/imx-drm/ipuv3-plane.c
index 34b642a..d32ff08 100644
--- a/drivers/staging/imx-drm/ipuv3-plane.c
+++ b/drivers/staging/imx-drm/ipuv3-plane.c
@@ -17,7 +17,7 @@
 #include <drm/drm_fb_cma_helper.h>
 #include <drm/drm_gem_cma_helper.h>
 
-#include "ipu-v3/imx-ipu-v3.h"
+#include "video/imx-ipu-v3.h"
 #include "ipuv3-plane.h"
 
 #define to_ipu_plane(x)	container_of(x, struct ipu_plane, base)
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index dade5b7..2c64a47 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -20,6 +20,7 @@ source "drivers/char/agp/Kconfig"
 source "drivers/gpu/vga/Kconfig"
 
 source "drivers/gpu/host1x/Kconfig"
+source "drivers/gpu/ipu-v3/Kconfig"
 
 source "drivers/gpu/drm/Kconfig"
 
diff --git a/drivers/staging/imx-drm/ipu-v3/imx-ipu-v3.h b/include/video/imx-ipu-v3.h
similarity index 100%
rename from drivers/staging/imx-drm/ipu-v3/imx-ipu-v3.h
rename to include/video/imx-ipu-v3.h
-- 
1.8.5.3


^ permalink raw reply related

* [PATCH 2/3] imx-drm: ipu-dc: Use usleep_range instead of msleep
From: Philipp Zabel @ 2014-02-25 11:43 UTC (permalink / raw)
  To: linux-fbdev

Since msleep(2) can sleep up to 20ms anyway, make this explicit by using
usleep_range(2000, 20000).

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
---
 drivers/staging/imx-drm/ipu-v3/ipu-dc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-dc.c b/drivers/staging/imx-drm/ipu-v3/ipu-dc.c
index d0e3bc3..d5de8bb 100644
--- a/drivers/staging/imx-drm/ipu-v3/ipu-dc.c
+++ b/drivers/staging/imx-drm/ipu-v3/ipu-dc.c
@@ -262,7 +262,7 @@ void ipu_dc_disable_channel(struct ipu_dc *dc)
 
 	/* Wait for DC triple buffer to empty */
 	while ((readl(priv->dc_reg + DC_STAT) & val) != val) {
-		msleep(2);
+		usleep_range(2000, 20000);
 		timeout -= 2;
 		if (timeout <= 0)
 			break;
-- 
1.8.5.3


^ permalink raw reply related

* [PATCH 1/3] imx-drm: Move IPU_PIX_FMT_GBR24 definition into imx-ipu-v3.h
From: Philipp Zabel @ 2014-02-25 11:43 UTC (permalink / raw)
  To: linux-fbdev

The IPU display controller supports a non-standard green-red-blue ordered
format that is used on the connection between IPU display interface 1 and
the TV encoder on i.MX53.
In preparation for the move of IPU core code out of staging, place the
IPU_PIX_FMT_GBR24 definition in imx-ipu-v3.h, so that both the IPU
display interface driver and the TVE encoder driver can access it.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
---
 drivers/staging/imx-drm/imx-drm.h           | 4 ----
 drivers/staging/imx-drm/imx-tve.c           | 1 +
 drivers/staging/imx-drm/ipu-v3/imx-ipu-v3.h | 2 ++
 3 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/imx-drm/imx-drm.h b/drivers/staging/imx-drm/imx-drm.h
index aa21028..035ab62 100644
--- a/drivers/staging/imx-drm/imx-drm.h
+++ b/drivers/staging/imx-drm/imx-drm.h
@@ -1,10 +1,6 @@
 #ifndef _IMX_DRM_H_
 #define _IMX_DRM_H_
 
-#include <linux/videodev2.h>
-
-#define IPU_PIX_FMT_GBR24	v4l2_fourcc('G', 'B', 'R', '3')
-
 struct device_node;
 struct drm_crtc;
 struct drm_connector;
diff --git a/drivers/staging/imx-drm/imx-tve.c b/drivers/staging/imx-drm/imx-tve.c
index 702c0c3..50b25f1 100644
--- a/drivers/staging/imx-drm/imx-tve.c
+++ b/drivers/staging/imx-drm/imx-tve.c
@@ -31,6 +31,7 @@
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_crtc_helper.h>
 
+#include "ipu-v3/imx-ipu-v3.h"
 #include "imx-drm.h"
 
 #define TVE_COM_CONF_REG	0x00
diff --git a/drivers/staging/imx-drm/ipu-v3/imx-ipu-v3.h b/drivers/staging/imx-drm/ipu-v3/imx-ipu-v3.h
index 4826b5c..c4d14ea 100644
--- a/drivers/staging/imx-drm/ipu-v3/imx-ipu-v3.h
+++ b/drivers/staging/imx-drm/ipu-v3/imx-ipu-v3.h
@@ -25,6 +25,8 @@ enum ipuv3_type {
 	IPUV3H,
 };
 
+#define IPU_PIX_FMT_GBR24	v4l2_fourcc('G', 'B', 'R', '3')
+
 /*
  * Bitfield of Display Interface signal polarities.
  */
-- 
1.8.5.3


^ permalink raw reply related


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