* Re: [PATCH 0/3] Reorder drivers/video directory
From: Daniel Vetter @ 2014-03-04 9:50 UTC (permalink / raw)
To: Tomi Valkeinen
Cc: linux-fbdev, Greg Kroah-Hartman, Jean-Christophe Plagniol-Villard,
linux-kernel, dri-devel, Geert Uytterhoeven, Laurent Pinchart,
Andrew Morton, Linus Torvalds
In-Reply-To: <1393502086-9433-1-git-send-email-tomi.valkeinen@ti.com>
On Thu, Feb 27, 2014 at 01:54:43PM +0200, Tomi Valkeinen wrote:
> 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?
I like this. Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>
> 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
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
^ permalink raw reply
* Re: [PATCH v2 4/4] video: mmp: add device tree support
From: Zhou Zhu @ 2014-03-04 11:28 UTC (permalink / raw)
To: Mark Rutland, Tomi Valkeinen
Cc: Zhou Zhu, linux-fbdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Jean-Christophe Plagniol-Villard, Haojian Zhuang, Sascha Hauer,
Jingoo Han, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Chao Xie, Guoqing Li, Lisa Du, huangyh-eYqpPyKDWXRBDgjK7y7TUQ
In-Reply-To: <20140217143736.GC19308-NuALmloUBlrZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
Hi, Tomi and Mark,
On Mon, Feb 17, 2014 at 10:37 PM, Mark Rutland <mark.rutland@arm.com> wrote:
>
> On Tue, Jan 14, 2014 at 11:16:24AM +0000, Zhou Zhu wrote:
> > add device tree support for mmp fb/controller
> > the description of DT config is at
> > Documentation/devicetree/bindings/fb/mmp-disp.txt
> >
> > Signed-off-by: Zhou Zhu <zzhu3@marvell.com>
> > ---
> > Documentation/devicetree/bindings/fb/mmp-disp.txt | 60 ++++++++
> > drivers/video/mmp/fb/mmpfb.c | 73 ++++++----
> > drivers/video/mmp/hw/mmp_ctrl.c | 160 ++++++++++++++++-----
> > 3 files changed, 235 insertions(+), 58 deletions(-)
> > create mode 100644 Documentation/devicetree/bindings/fb/mmp-disp.txt
Thank you very much for your review! I am trying to update the code
according to your comments.
We have reviewed the dts and removed many software settings and
not-used settings - for example, we unpacked path-config/link-config
and removed some configures that we will never change.
Also we removed fb settings which is considered as software.
Would you please give us some feedbacks if we adjust our dts into follow style?
As there might be big changes on the code structures, I would update
the code after this dts layout is considered as "right".
mmp-disp@d420b000 {
compatible = "marvell,mmp-disp";
reg = <0xd420b000 0x1fc>;
interrupts = <0 41 0x4>;
internal-connections {
pipe1: pn-path {
input = "panel-graphic"; //panel-graphic is the overlay name in spec.
output = ∥
}
}
ports{
parallel: parallel {
marvell,rbswap;
marvell,spi;
}
}
status = "okay";
}
panel-xxx {
properties;
connection = ∥
}
--
Thanks,
-Zhou
^ permalink raw reply
* Re: [PATCH 3/9] Doc/DT: Add DT binding documentation for DVI Connector
From: Daniel Vetter @ 2014-03-04 12:54 UTC (permalink / raw)
To: Russell King - ARM Linux
Cc: devicetree, linux-fbdev, dri-devel, Andrzej Hajda, Tomi Valkeinen,
Laurent Pinchart, linux-arm-kernel, Sebastian Hesselbarth
In-Reply-To: <20140228162327.GT21483@n2100.arm.linux.org.uk>
On Fri, Feb 28, 2014 at 04:23:27PM +0000, Russell King - ARM Linux wrote:
> On Fri, Feb 28, 2014 at 06:12:23PM +0200, Tomi Valkeinen wrote:
> > On 28/02/14 17:59, Russell King - ARM Linux wrote:
> >
> > >> +dvi0: connector@0 {
> > >> + compatible = "dvi-connector";
> > >> + label = "dvi";
> > >> +
> > >> + i2c-bus = <&i2c3>;
> > >> +
> > >> + dvi_connector_in: endpoint {
> > >> + remote-endpoint = <&tfp410_out>;
> > >> + };
> > >> +};
> > >
> > > This looks far too simplistic. There are different classes of DVI
> > > connector - there is:
> > >
> > > DVI A - analogue only
> > > DVI D - digital only (single and dual link)
> > > DVI I - both (single and dual digital link)
> > >
> > > DRM at least makes a distinction between these three classes, and this
> > > disctinction is part of the user API. How would a display system know
> > > which kind of DVI connector is wired up on the board from this DT
> > > description?
> >
> > Yes, I think that's a valid change. But do we also need to specify
> > single/dual link, in addition to the three types?
>
> I would argue that as it's a difference in physical hardware, then it
> should be described in DT, even if we don't use it. The reasoning is
> that although we may not use it today, we may need to use it in the
> future, and as we're describing what the hardware actually is - and
> even in this case what pins may be present or missing on the connector,
> it's unlikely to be problematical (the only problem is when someone
> omits it...)
If you plug a dual-link dvi screen into a soc which can do dual-link but
the actual connector is cheap and doesn't have this wired up
(differentiate wtf) then the kernel needs to know. Otherwise it can't
correctly filter out the modes with dotclocks high enough to require dual
link and the user will look at a black screen.
3.14 has a regression in drm/i915 where we've screwed this up ;-)
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
^ permalink raw reply
* Re: [PATCH 4/9] Doc/DT: Add DT binding documentation for HDMI Connector
From: Daniel Vetter @ 2014-03-04 12:59 UTC (permalink / raw)
To: Russell King - ARM Linux
Cc: devicetree, linux-fbdev, dri-devel, Andrzej Hajda, Tomi Valkeinen,
Laurent Pinchart, linux-arm-kernel, Sebastian Hesselbarth
In-Reply-To: <20140228160612.GR21483@n2100.arm.linux.org.uk>
On Fri, Feb 28, 2014 at 04:06:12PM +0000, Russell King - ARM Linux wrote:
> On Fri, Feb 28, 2014 at 02:20:11PM +0200, Tomi Valkeinen wrote:
> > Add DT binding documentation for HDMI Connector.
> >
> > Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> > Reviewed-by: Archit Taneja <archit@ti.com>
> > ---
> > .../devicetree/bindings/video/hdmi-connector.txt | 23 ++++++++++++++++++++++
> > 1 file changed, 23 insertions(+)
> > create mode 100644 Documentation/devicetree/bindings/video/hdmi-connector.txt
> >
> > diff --git a/Documentation/devicetree/bindings/video/hdmi-connector.txt b/Documentation/devicetree/bindings/video/hdmi-connector.txt
> > new file mode 100644
> > index 000000000000..5d25f6a432bb
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/video/hdmi-connector.txt
> > @@ -0,0 +1,23 @@
> > +HDMI Connector
> > +=======
> > +
> > +Required properties:
> > +- compatible: "hdmi-connector"
> > +
> > +Optional properties:
> > +- label: a symbolic name for the connector
> > +
> > +Required nodes:
> > +- Video port for HDMI input
> > +
> > +Example
> > +-------
> > +
> > +hdmi0: connector@1 {
> > + compatible = "hdmi-connector";
> > + label = "hdmi";
> > +
> > + hdmi_connector_in: endpoint {
> > + remote-endpoint = <&tpd12s015_out>;
> > + };
> > +};
>
> It seems rather weird to have DVI connectors having an optional I2C
> property, but HDMI (which augments DVI) not having that as at least an
> optional property.
>
> I can quite well see the iMX HDMI support needing an i2c bus here.
>
> Also, HDMI has two connector standards - type A and type B, much like
> the single vs dual link of DVI. Again, DRM exposes this to userspace.
Yeah, there's a dual-link hdmi standard somewhere. I've never seen it in
the wild anywhere though, and newer hdmi all just increase the max link
clock to push higher res modes over the wire. Imo can't hurt to just
enumerate all type of physical connectors standardized.
HDMI revisions themselves are only relevant for the sink (as advertised
capabilities in the EDID) and for your hdmi encoder chip (where pretty
much just the max dotclock is interesting really). So I don't think we
need a hdmi revision in dt for the physical connector.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
^ permalink raw reply
* Re: [PATCH 0/3] Reorder drivers/video directory
From: Randy Dunlap @ 2014-03-04 19:21 UTC (permalink / raw)
To: Tomi Valkeinen, linux-fbdev, dri-devel, linux-kernel
Cc: Laurent Pinchart, Geert Uytterhoeven,
Jean-Christophe Plagniol-Villard, David Airlie, Andrew Morton,
Linus Torvalds, Greg Kroah-Hartman
In-Reply-To: <5314412B.6060502@ti.com>
On 03/03/2014 12:45 AM, Tomi Valkeinen wrote:
> On 27/02/14 13:54, Tomi Valkeinen wrote:
>> 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
>
> I have pushed this to my for-next branch. Let's see what happens... At
> least I'm able to merge the current linux-next without any conflicts.
Thanks, I'm looking at this change in linux-next now.
EXYNOS_VIDEO seems to be a little bit odd. Can you clarify that for me?
(This is not a change that you introduced.)
In particular, under Graphics support, select Framebuffer Devices.
This lists:
Support for frame buffer devices -->
Exynos Video driver support
It appears to me that Exynos either is a Framebuffer Device and should depend
on FB like the other drivers here do OR (actually XOR) it is not a frame buffer
device and it should not be listed here.
Then once that is cleared up :), we don't need 2 levels of menu to get to the
list of FB drivers -- i.e., one of those levels can be removed.
Oh, and if you keep the new menu item "Framebuffer Devices", please spell it
like the other entry (Frame Buffer).
Other than those nits, I like this change very much. Thanks.
--
~Randy
^ permalink raw reply
* Re: [PATCH 0/3] Reorder drivers/video directory
From: Tomi Valkeinen @ 2014-03-05 6:32 UTC (permalink / raw)
To: Randy Dunlap, linux-fbdev, dri-devel, linux-kernel
Cc: Laurent Pinchart, Geert Uytterhoeven,
Jean-Christophe Plagniol-Villard, David Airlie, Andrew Morton,
Linus Torvalds, Greg Kroah-Hartman
In-Reply-To: <531627D6.6060007@infradead.org>
[-- Attachment #1: Type: text/plain, Size: 1907 bytes --]
On 04/03/14 21:21, Randy Dunlap wrote:
>> I have pushed this to my for-next branch. Let's see what happens... At
>> least I'm able to merge the current linux-next without any conflicts.
>
> Thanks, I'm looking at this change in linux-next now.
>
> EXYNOS_VIDEO seems to be a little bit odd. Can you clarify that for me?
> (This is not a change that you introduced.)
>
>
> In particular, under Graphics support, select Framebuffer Devices.
> This lists:
> Support for frame buffer devices -->
> Exynos Video driver support
>
> It appears to me that Exynos either is a Framebuffer Device and should depend
> on FB like the other drivers here do OR (actually XOR) it is not a frame buffer
> device and it should not be listed here.
>
> Then once that is cleared up :), we don't need 2 levels of menu to get to the
> list of FB drivers -- i.e., one of those levels can be removed.
There are others. For my config, I have:
{*} Support for frame buffer devices --->
<M> OMAP2+ Display Subsystem support --->
[ ] Exynos Video driver support ----
< > Solomon SSD1307 framebuffer support
I didn't want to start fixing those at the moment, as I have no idea
about exynos or solomon, and I wanted to just try to do the reorder,
without any other changes.
I agree that there's something wrong with the items. For the OMAP DSS,
there are non-fbdev related items under that menu, used also by omapdrm.
So it should probably be split into different components.
> Oh, and if you keep the new menu item "Framebuffer Devices", please spell it
> like the other entry (Frame Buffer).
Ok, fixed.
> Other than those nits, I like this change very much. Thanks.
Thanks. After pushing this to for-next, I'm getting compile error
reports from Fengguang and Stephen. Let's see if I manage to avoid
those... This is not the easiest change to manage.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]
^ permalink raw reply
* [PATCH] video: da8xx-fb: Fix casting of info->pseudo_palette
From: jon @ 2014-03-05 8:19 UTC (permalink / raw)
To: linux-fbdev, linux-kernel; +Cc: Jon Ringle
In-Reply-To: <1393836183-26555-1-git-send-email-jringle@gridpoint.com>
From: Jon Ringle <jringle@gridpoint.com>
(Resending without corporate disclaimer in email footer)
The casting to (u16 *) on info->pseudo_palette is wrong and causes the
display to show a blue (garbage) vertical line on every other pixel column
Signed-off-by: Jon Ringle <jringle@gridpoint.com>
---
drivers/video/da8xx-fb.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index d042624..83c43b2 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -678,15 +678,7 @@ static int fb_setcolreg(unsigned regno, unsigned red, unsigned green,
(green << info->var.green.offset) |
(blue << info->var.blue.offset);
- switch (info->var.bits_per_pixel) {
- case 16:
- ((u16 *) (info->pseudo_palette))[regno] = v;
- break;
- case 24:
- case 32:
- ((u32 *) (info->pseudo_palette))[regno] = v;
- break;
- }
+ ((u32 *) (info->pseudo_palette))[regno] = v;
if (palette[0] != 0x4000) {
update_hw = 1;
palette[0] = 0x4000;
--
1.8.5.4
^ permalink raw reply related
* Re: [PATCH 3/9] Doc/DT: Add DT binding documentation for DVI Connector
From: Tomi Valkeinen @ 2014-03-05 8:41 UTC (permalink / raw)
To: Russell King - ARM Linux
Cc: linux-fbdev-u79uwXL29TY76Z2rM5mHXA,
dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW,
devicetree-u79uwXL29TY76Z2rM5mHXA,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Philipp Zabel,
Laurent Pinchart, Sascha Hauer, Sebastian Hesselbarth, Rob Clark,
Inki Dae, Andrzej Hajda, Tomasz Figa, Thierry Reding,
Daniel Vetter
In-Reply-To: <20140228162327.GT21483-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 1184 bytes --]
On 28/02/14 18:23, Russell King - ARM Linux wrote:
> That's rather a lot of compatible strings. Another possibility is:
>
> compatible = "dvi-connector";
> analog;
> digital;
> single-link;
> dual-link;
I made the following changes compared to the posted version. I decided
to leave the "single-link" out, as it's implied if "digital" is set.
Tomi
@@ -6,11 +6,16 @@ Required properties:
Optional properties:
- label: a symbolic name for the connector
-- i2c-bus: phandle to the i2c bus that is connected to DVI DDC
+- ddc-i2c-bus: phandle to the i2c bus that is connected to DVI DDC
+- analog: the connector has DVI analog pins
+- digital: the connector has DVI digital pins
+- dual-link: the connector has pins for DVI dual-link
Required nodes:
- Video port for DVI input
+Note: One (or both) of 'analog' or 'digital' must be set.
+
Example
-------
@@ -18,7 +23,9 @@ dvi0: connector@0 {
compatible = "dvi-connector";
label = "dvi";
- i2c-bus = <&i2c3>;
+ digital;
+
+ ddc-i2c-bus = <&i2c3>;
dvi_connector_in: endpoint {
remote-endpoint = <&tfp410_out>;
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]
^ permalink raw reply
* Re: [PATCH 4/9] Doc/DT: Add DT binding documentation for HDMI Connector
From: Tomi Valkeinen @ 2014-03-05 8:42 UTC (permalink / raw)
To: Geert Uytterhoeven, Russell King - ARM Linux
Cc: devicetree@vger.kernel.org, Linux Fbdev development list,
Daniel Vetter, Sascha Hauer, Tomasz Figa, DRI Development,
Inki Dae, Andrzej Hajda, Rob Clark, Thierry Reding,
Laurent Pinchart, Philipp Zabel,
linux-arm-kernel@lists.infradead.org, Sebastian Hesselbarth
In-Reply-To: <CAMuHMdVpT2Y-KQO46o=zbRSgqgx2mbBsPjGgoTDDwwfCOxUCmw@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1316 bytes --]
On 01/03/14 20:58, Geert Uytterhoeven wrote:
> On Fri, Feb 28, 2014 at 5:34 PM, Russell King - ARM Linux
> <linux@arm.linux.org.uk> wrote:
>> There's actually three HDMI connectors:
>>
>> All three connectors carry all required HDMI signals, including a TMDS
>> link. The Type B connector is slightly larger and carries a second TMDS
>> link, which is necessary to support very high resolution displays using
>> dual link. The Type C connector carries the same signals as the Type A
>> but is more compact and intended for mobile applications.
>>
>> So, Type C and Type A are electrically the same.
>
> There's also D (e.g. on BeagleBone Black) and E:
>
> http://en.wikipedia.org/wiki/HDMI#Connectors
>
> Electrically they seem to be the same as A/C.
I made the following change compared to the posted version.
Tomi
@@ -3,6 +3,7 @@ HDMI Connector
Required properties:
- compatible: "hdmi-connector"
+- type: the HDMI connector type: "a", "b", "c", "d" or "e"
Optional properties:
- label: a symbolic name for the connector
@@ -17,6 +18,8 @@ hdmi0: connector@1 {
compatible = "hdmi-connector";
label = "hdmi";
+ type = "a";
+
hdmi_connector_in: endpoint {
remote-endpoint = <&tpd12s015_out>;
};
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]
^ permalink raw reply
* [PATCH v2] gpu: ipu-v3: Move i.MX IPUv3 core driver out of staging
From: Philipp Zabel @ 2014-03-05 9:30 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>
---
This is the same as the previous patch, exported with format-patch -M.
Changes since v1:
- Added missing #include changes imx-hdmi.c
---
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-hdmi.c | 2 +-
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
17 files changed, 21 insertions(+), 23 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 4521301..e1493ab3 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 c6e8ba7..82fb758 100644
--- a/drivers/staging/imx-drm/Kconfig
+++ b/drivers/staging/imx-drm/Kconfig
@@ -39,19 +39,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-hdmi.c b/drivers/staging/imx-drm/imx-hdmi.c
index 8384cea..8539e91 100644
--- a/drivers/staging/imx-drm/imx-hdmi.c
+++ b/drivers/staging/imx-drm/imx-hdmi.c
@@ -27,8 +27,8 @@
#include <drm/drm_crtc_helper.h>
#include <drm/drm_edid.h>
#include <drm/drm_encoder_slave.h>
+#include <video/imx-ipu-v3.h>
-#include "ipu-v3/imx-ipu-v3.h"
#include "imx-hdmi.h"
#include "imx-drm.h"
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 b0c9b6c..889532b9 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.9.0.rc3
^ permalink raw reply related
* Re: [PATCH v2 4/4] video: mmp: add device tree support
From: Tomi Valkeinen @ 2014-03-05 9:33 UTC (permalink / raw)
To: Zhou Zhu
Cc: Mark Rutland, Zhou Zhu,
linux-fbdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Jean-Christophe Plagniol-Villard, Haojian Zhuang, Sascha Hauer,
Jingoo Han, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Chao Xie, Guoqing Li, Lisa Du, huangyh-eYqpPyKDWXRBDgjK7y7TUQ
In-Reply-To: <CAJATT-5sQc7vsUhoFKdDnstqjj2R_yQ+Wk1NRf20UTM4-ndMSA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 3258 bytes --]
On 04/03/14 13:28, Zhou Zhu wrote:
> Hi, Tomi and Mark,
>
> On Mon, Feb 17, 2014 at 10:37 PM, Mark Rutland <mark.rutland@arm.com> wrote:
>>
>> On Tue, Jan 14, 2014 at 11:16:24AM +0000, Zhou Zhu wrote:
>>> add device tree support for mmp fb/controller
>>> the description of DT config is at
>>> Documentation/devicetree/bindings/fb/mmp-disp.txt
>>>
>>> Signed-off-by: Zhou Zhu <zzhu3@marvell.com>
>>> ---
>>> Documentation/devicetree/bindings/fb/mmp-disp.txt | 60 ++++++++
>>> drivers/video/mmp/fb/mmpfb.c | 73 ++++++----
>>> drivers/video/mmp/hw/mmp_ctrl.c | 160 ++++++++++++++++-----
>>> 3 files changed, 235 insertions(+), 58 deletions(-)
>>> create mode 100644 Documentation/devicetree/bindings/fb/mmp-disp.txt
>
>
> Thank you very much for your review! I am trying to update the code
> according to your comments.
>
> We have reviewed the dts and removed many software settings and
> not-used settings - for example, we unpacked path-config/link-config
> and removed some configures that we will never change.
> Also we removed fb settings which is considered as software.
>
> Would you please give us some feedbacks if we adjust our dts into follow style?
> As there might be big changes on the code structures, I would update
> the code after this dts layout is considered as "right".
>
> mmp-disp@d420b000 {
> compatible = "marvell,mmp-disp";
> reg = <0xd420b000 0x1fc>;
> interrupts = <0 41 0x4>;
>
> internal-connections {
> pipe1: pn-path {
> input = "panel-graphic"; //panel-graphic is the overlay name in spec.
> output = ∥
> }
> }
> ports{
> parallel: parallel {
> marvell,rbswap;
> marvell,spi;
> }
> }
> status = "okay";
> }
>
> panel-xxx {
> properties;
> connection = ∥
> }
I would recommend using the same style that is used in the OMAP DSS, imx
drm and exynos patches that are introducing DT support. They use ports
and endpoints as defined in:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/media/video-interfaces.txt
with the addition of a simplified endpoint format, where the 'port' node
is not required.
To give an idea what it could look like, I've modified your example
above. It's just a rough example, you should study and think how it best
fits for mmp.
You could use the same format for the internal connections also, but I
didn't touch that. I think internal connections can as well be
configured separately, in a custom format, because there's no need for
external components to connect to the internal links.
mmp-disp@d420b000 {
compatible = "marvell,mmp-disp";
reg = <0xd420b000 0x1fc>;
interrupts = <0 41 0x4>;
internal-connections {
pipe1: pn-path {
input = "panel-graphic";
output = &disp_out;
}
}
disp_out: endpoint {
remote-endpoint = <&panel_in>;
marvell,rbswap;
marvell,spi;
};
status = "okay";
}
panel-xxx {
properties;
panel_in: endpoint {
remote-endpoint = <&disp_out>;
};
};
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]
^ permalink raw reply
* Re: [PATCH] fbdev: FB_OPENCORES should depend on HAS_DMA
From: Stefan Kristiansson @ 2014-03-05 10:01 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Jean-Christophe Plagniol-Villard, Tomi Valkeinen, linux-fbdev,
linux-kernel
In-Reply-To: <1393012569-22560-1-git-send-email-geert@linux-m68k.org>
On Fri, Feb 21, 2014 at 08:56:09PM +0100, Geert Uytterhoeven wrote:
> If NO_DMA=y:
>
> drivers/built-in.o: In function `ocfb_remove':
> ocfb.c:(.text+0x27fee): undefined reference to `dma_free_coherent'
> drivers/built-in.o: In function `ocfb_probe':
> ocfb.c:(.text+0x28418): undefined reference to `dma_alloc_coherent'
> ocfb.c:(.text+0x284d2): undefined reference to `dma_free_coherent'
>
I obviously had neglected compiling against that configuration,
thanks for the catch.
Acked-by: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---
> drivers/video/Kconfig | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
> index 0192900dd183..fb8d31e717bc 100644
> --- a/drivers/video/Kconfig
> +++ b/drivers/video/Kconfig
> @@ -982,7 +982,7 @@ config FB_PVR2
>
> config FB_OPENCORES
> tristate "OpenCores VGA/LCD core 2.0 framebuffer support"
> - depends on FB
> + depends on FB && HAS_DMA
> select FB_CFB_FILLRECT
> select FB_CFB_COPYAREA
> select FB_CFB_IMAGEBLIT
> --
> 1.7.9.5
>
^ permalink raw reply
* Re: [PATCH] fbdev: FB_OPENCORES should depend on HAS_DMA
From: Tomi Valkeinen @ 2014-03-05 12:44 UTC (permalink / raw)
To: Geert Uytterhoeven, Stefan Kristiansson
Cc: Jean-Christophe Plagniol-Villard, linux-fbdev, linux-kernel
In-Reply-To: <1393012569-22560-1-git-send-email-geert@linux-m68k.org>
[-- Attachment #1: Type: text/plain, Size: 449 bytes --]
On 21/02/14 21:56, Geert Uytterhoeven wrote:
> If NO_DMA=y:
>
> drivers/built-in.o: In function `ocfb_remove':
> ocfb.c:(.text+0x27fee): undefined reference to `dma_free_coherent'
> drivers/built-in.o: In function `ocfb_probe':
> ocfb.c:(.text+0x28418): undefined reference to `dma_alloc_coherent'
> ocfb.c:(.text+0x284d2): undefined reference to `dma_free_coherent'
>
Thanks, applied to fbdev branch.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 901 bytes --]
^ permalink raw reply
* [PATCH] video: fbdev: uvesafb: Remove redundant NULL check in uvesafb_remove
From: Wang YanQing @ 2014-03-05 15:54 UTC (permalink / raw)
To: tomi.valkeinen; +Cc: plagnioj, linux-fbdev, linux-kernel, fengguang.wu
Because uvesafb_par is allocated as part of fb_info in uvesafb_probe,
so we don't need to do NULL check for both fb_info and uvesafb_par in
uvesafb_remove.
[ This patch also fix a warning report by fengguang.wu@intel.com
"drivers/video/fbdev/uvesafb.c:1815 uvesafb_remove()
warn: variable dereferenced before check 'par'" ]
Signed-off-by: Wang YanQing <udknight@gmail.com>
---
drivers/video/fbdev/uvesafb.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/drivers/video/fbdev/uvesafb.c b/drivers/video/fbdev/uvesafb.c
index 1f38445..18352b2 100644
--- a/drivers/video/fbdev/uvesafb.c
+++ b/drivers/video/fbdev/uvesafb.c
@@ -1812,11 +1812,9 @@ static int uvesafb_remove(struct platform_device *dev)
fb_destroy_modedb(info->monspecs.modedb);
fb_dealloc_cmap(&info->cmap);
- if (par) {
- kfree(par->vbe_modes);
- kfree(par->vbe_state_orig);
- kfree(par->vbe_state_saved);
- }
+ kfree(par->vbe_modes);
+ kfree(par->vbe_state_orig);
+ kfree(par->vbe_state_saved);
framebuffer_release(info);
}
--
1.8.3.4.8.g69490f3.dirty
^ permalink raw reply related
* [PATCH] video: fbdev: uvesafb: Remove impossible code path in uvesafb_init_info
From: Wang YanQing @ 2014-03-05 15:56 UTC (permalink / raw)
To: tomi.valkeinen; +Cc: plagnioj, fengguang.wu, linux-fbdev, linux-kernel
Because uvesafb_vbe_init will fail when get zero avaiable modes,
and we have checked the return value of uvesafb_vbe_init_mode,
so it is impossible to pass NULL as mode into uvesafb_init_info.
[ This patch fix warning report by fengguang.wu@intel.com
"drivers/video/fbdev/uvesafb.c:1509 uvesafb_init_info()
error: we previously assumed 'mode' could be null" ]
Signed-off-by: Wang YanQing <udknight@gmail.com>
---
drivers/video/fbdev/uvesafb.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/drivers/video/fbdev/uvesafb.c b/drivers/video/fbdev/uvesafb.c
index 18352b2..509d452 100644
--- a/drivers/video/fbdev/uvesafb.c
+++ b/drivers/video/fbdev/uvesafb.c
@@ -1474,12 +1474,7 @@ static void uvesafb_init_info(struct fb_info *info, struct vbe_mode_ib *mode)
* used video mode, i.e. the minimum amount of
* memory we need.
*/
- if (mode != NULL) {
- size_vmode = info->var.yres * mode->bytes_per_scan_line;
- } else {
- size_vmode = info->var.yres * info->var.xres *
- ((info->var.bits_per_pixel + 7) >> 3);
- }
+ size_vmode = info->var.yres * mode->bytes_per_scan_line;
/*
* size_total -- all video memory we have. Used for mtrr
--
1.8.3.4.8.g69490f3.dirty
^ permalink raw reply related
* [PATCH 0/4] Cleanups and fix for video/pxa3xx-gcu
From: Daniel Mack @ 2014-03-05 16:12 UTC (permalink / raw)
To: linux-fbdev
Here are some cleanups for the pxa3xx-gcu driver. Patch 3/4 is actually
a real bugfix that is needed since the misc code doesn't set
file->private_data for us implicitly anymore.
The rest are just straight-forward cleanups.
Thanks,
Daniel
Daniel Mack (4):
video: pxa3xx-gcu: rename some symbols
video: pxa3xx-gcu: pass around struct device *
video: pxa3xx-gcu: provide an empty .open call
video: pxa3xx-gcu: switch to devres functions
drivers/video/pxa3xx-gcu.c | 191 +++++++++++++++++++--------------------------
1 file changed, 81 insertions(+), 110 deletions(-)
--
1.8.5.3
^ permalink raw reply
* [PATCH 1/4] video: pxa3xx-gcu: rename some symbols
From: Daniel Mack @ 2014-03-05 16:12 UTC (permalink / raw)
To: linux-fbdev
Prefix some functions with more specific names. While at it, kill some
stray newlines and other coding style related minor things.
Signed-off-by: Daniel Mack <zonque@gmail.com>
---
drivers/video/pxa3xx-gcu.c | 48 ++++++++++++++++++++--------------------------
1 file changed, 21 insertions(+), 27 deletions(-)
diff --git a/drivers/video/pxa3xx-gcu.c b/drivers/video/pxa3xx-gcu.c
index ad382b3..9cd48ab 100644
--- a/drivers/video/pxa3xx-gcu.c
+++ b/drivers/video/pxa3xx-gcu.c
@@ -107,7 +107,6 @@ struct pxa3xx_gcu_priv {
struct timeval base_time;
struct pxa3xx_gcu_batch *free;
-
struct pxa3xx_gcu_batch *ready;
struct pxa3xx_gcu_batch *ready_last;
struct pxa3xx_gcu_batch *running;
@@ -368,27 +367,26 @@ pxa3xx_gcu_wait_free(struct pxa3xx_gcu_priv *priv)
/* Misc device layer */
-static inline struct pxa3xx_gcu_priv *file_dev(struct file *file)
+static inline struct pxa3xx_gcu_priv *to_pxa3xx_gcu_priv(struct file *file)
{
struct miscdevice *dev = file->private_data;
return container_of(dev, struct pxa3xx_gcu_priv, misc_dev);
}
static ssize_t
-pxa3xx_gcu_misc_write(struct file *file, const char *buff,
- size_t count, loff_t *offp)
+pxa3xx_gcu_write(struct file *file, const char *buff,
+ size_t count, loff_t *offp)
{
int ret;
unsigned long flags;
struct pxa3xx_gcu_batch *buffer;
- struct pxa3xx_gcu_priv *priv = file_dev(file);
+ struct pxa3xx_gcu_priv *priv = to_pxa3xx_gcu_priv(file);
int words = count / 4;
/* Does not need to be atomic. There's a lock in user space,
* but anyhow, this is just for statistics. */
priv->shared->num_writes++;
-
priv->shared->num_words += words;
/* Last word reserved for batch buffer end command */
@@ -406,10 +404,8 @@ pxa3xx_gcu_misc_write(struct file *file, const char *buff,
* Get buffer from free list
*/
spin_lock_irqsave(&priv->spinlock, flags);
-
buffer = priv->free;
priv->free = buffer->next;
-
spin_unlock_irqrestore(&priv->spinlock, flags);
@@ -454,10 +450,10 @@ pxa3xx_gcu_misc_write(struct file *file, const char *buff,
static long
-pxa3xx_gcu_misc_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+pxa3xx_gcu_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
unsigned long flags;
- struct pxa3xx_gcu_priv *priv = file_dev(file);
+ struct pxa3xx_gcu_priv *priv = to_pxa3xx_gcu_priv(file);
switch (cmd) {
case PXA3XX_GCU_IOCTL_RESET:
@@ -474,10 +470,10 @@ pxa3xx_gcu_misc_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
}
static int
-pxa3xx_gcu_misc_mmap(struct file *file, struct vm_area_struct *vma)
+pxa3xx_gcu_mmap(struct file *file, struct vm_area_struct *vma)
{
unsigned int size = vma->vm_end - vma->vm_start;
- struct pxa3xx_gcu_priv *priv = file_dev(file);
+ struct pxa3xx_gcu_priv *priv = to_pxa3xx_gcu_priv(file);
switch (vma->vm_pgoff) {
case 0:
@@ -532,8 +528,8 @@ static inline void pxa3xx_gcu_init_debug_timer(void) {}
#endif
static int
-add_buffer(struct platform_device *dev,
- struct pxa3xx_gcu_priv *priv)
+pxa3xx_gcu_add_buffer(struct platform_device *dev,
+ struct pxa3xx_gcu_priv *priv)
{
struct pxa3xx_gcu_batch *buffer;
@@ -549,15 +545,14 @@ add_buffer(struct platform_device *dev,
}
buffer->next = priv->free;
-
priv->free = buffer;
return 0;
}
static void
-free_buffers(struct platform_device *dev,
- struct pxa3xx_gcu_priv *priv)
+pxa3xx_gcu_free_buffers(struct platform_device *dev,
+ struct pxa3xx_gcu_priv *priv)
{
struct pxa3xx_gcu_batch *next, *buffer = priv->free;
@@ -568,18 +563,17 @@ free_buffers(struct platform_device *dev,
buffer->ptr, buffer->phys);
kfree(buffer);
-
buffer = next;
}
priv->free = NULL;
}
-static const struct file_operations misc_fops = {
- .owner = THIS_MODULE,
- .write = pxa3xx_gcu_misc_write,
- .unlocked_ioctl = pxa3xx_gcu_misc_ioctl,
- .mmap = pxa3xx_gcu_misc_mmap
+static const struct file_operations pxa3xx_gcu_miscdev_fops = {
+ .owner = THIS_MODULE,
+ .write = pxa3xx_gcu_write,
+ .unlocked_ioctl = pxa3xx_gcu_ioctl,
+ .mmap = pxa3xx_gcu_mmap,
};
static int pxa3xx_gcu_probe(struct platform_device *dev)
@@ -593,7 +587,7 @@ static int pxa3xx_gcu_probe(struct platform_device *dev)
return -ENOMEM;
for (i = 0; i < 8; i++) {
- ret = add_buffer(dev, priv);
+ ret = pxa3xx_gcu_add_buffer(dev, priv);
if (ret) {
dev_err(&dev->dev, "failed to allocate DMA memory\n");
goto err_free_priv;
@@ -611,7 +605,7 @@ static int pxa3xx_gcu_probe(struct platform_device *dev)
priv->misc_dev.minor = MISCDEV_MINOR,
priv->misc_dev.name = DRV_NAME,
- priv->misc_dev.fops = &misc_fops,
+ priv->misc_dev.fops = &pxa3xx_gcu_miscdev_fops;
/* register misc device */
ret = misc_register(&priv->misc_dev);
@@ -710,7 +704,7 @@ err_misc_deregister:
misc_deregister(&priv->misc_dev);
err_free_priv:
- free_buffers(dev, priv);
+ pxa3xx_gcu_free_buffers(dev, priv);
kfree(priv);
return ret;
}
@@ -728,7 +722,7 @@ static int pxa3xx_gcu_remove(struct platform_device *dev)
iounmap(priv->mmio_base);
release_mem_region(r->start, resource_size(r));
clk_disable(priv->clk);
- free_buffers(dev, priv);
+ pxa3xx_gcu_free_buffers(dev, priv);
kfree(priv);
return 0;
--
1.8.5.3
^ permalink raw reply related
* [PATCH 2/4] video: pxa3xx-gcu: pass around struct device *
From: Daniel Mack @ 2014-03-05 16:12 UTC (permalink / raw)
To: linux-fbdev
Instead of passing around struct platform_device, use struct device.
That saves one level of dereference. Also, call platform devices pdev,
and provide a shortcut for &pdev->dev.
Signed-off-by: Daniel Mack <zonque@gmail.com>
---
drivers/video/pxa3xx-gcu.c | 56 ++++++++++++++++++++++++----------------------
1 file changed, 29 insertions(+), 27 deletions(-)
diff --git a/drivers/video/pxa3xx-gcu.c b/drivers/video/pxa3xx-gcu.c
index 9cd48ab..f9961ba 100644
--- a/drivers/video/pxa3xx-gcu.c
+++ b/drivers/video/pxa3xx-gcu.c
@@ -528,7 +528,7 @@ static inline void pxa3xx_gcu_init_debug_timer(void) {}
#endif
static int
-pxa3xx_gcu_add_buffer(struct platform_device *dev,
+pxa3xx_gcu_add_buffer(struct device *dev,
struct pxa3xx_gcu_priv *priv)
{
struct pxa3xx_gcu_batch *buffer;
@@ -537,7 +537,7 @@ pxa3xx_gcu_add_buffer(struct platform_device *dev,
if (!buffer)
return -ENOMEM;
- buffer->ptr = dma_alloc_coherent(&dev->dev, PXA3XX_GCU_BATCH_WORDS * 4,
+ buffer->ptr = dma_alloc_coherent(dev, PXA3XX_GCU_BATCH_WORDS * 4,
&buffer->phys, GFP_KERNEL);
if (!buffer->ptr) {
kfree(buffer);
@@ -551,7 +551,7 @@ pxa3xx_gcu_add_buffer(struct platform_device *dev,
}
static void
-pxa3xx_gcu_free_buffers(struct platform_device *dev,
+pxa3xx_gcu_free_buffers(struct device *dev,
struct pxa3xx_gcu_priv *priv)
{
struct pxa3xx_gcu_batch *next, *buffer = priv->free;
@@ -559,7 +559,7 @@ pxa3xx_gcu_free_buffers(struct platform_device *dev,
while (buffer) {
next = buffer->next;
- dma_free_coherent(&dev->dev, PXA3XX_GCU_BATCH_WORDS * 4,
+ dma_free_coherent(dev, PXA3XX_GCU_BATCH_WORDS * 4,
buffer->ptr, buffer->phys);
kfree(buffer);
@@ -576,11 +576,12 @@ static const struct file_operations pxa3xx_gcu_miscdev_fops = {
.mmap = pxa3xx_gcu_mmap,
};
-static int pxa3xx_gcu_probe(struct platform_device *dev)
+static int pxa3xx_gcu_probe(struct platform_device *pdev)
{
int i, ret, irq;
struct resource *r;
struct pxa3xx_gcu_priv *priv;
+ struct device *dev = &pdev->dev;
priv = kzalloc(sizeof(struct pxa3xx_gcu_priv), GFP_KERNEL);
if (!priv)
@@ -589,7 +590,7 @@ static int pxa3xx_gcu_probe(struct platform_device *dev)
for (i = 0; i < 8; i++) {
ret = pxa3xx_gcu_add_buffer(dev, priv);
if (ret) {
- dev_err(&dev->dev, "failed to allocate DMA memory\n");
+ dev_err(dev, "failed to allocate DMA memory\n");
goto err_free_priv;
}
}
@@ -610,60 +611,60 @@ static int pxa3xx_gcu_probe(struct platform_device *dev)
/* register misc device */
ret = misc_register(&priv->misc_dev);
if (ret < 0) {
- dev_err(&dev->dev, "misc_register() for minor %d failed\n",
+ dev_err(dev, "misc_register() for minor %d failed\n",
MISCDEV_MINOR);
goto err_free_priv;
}
/* handle IO resources */
- r = platform_get_resource(dev, IORESOURCE_MEM, 0);
+ r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (r = NULL) {
- dev_err(&dev->dev, "no I/O memory resource defined\n");
+ dev_err(dev, "no I/O memory resource defined\n");
ret = -ENODEV;
goto err_misc_deregister;
}
- if (!request_mem_region(r->start, resource_size(r), dev->name)) {
- dev_err(&dev->dev, "failed to request I/O memory\n");
+ if (!request_mem_region(r->start, resource_size(r), pdev->name)) {
+ dev_err(dev, "failed to request I/O memory\n");
ret = -EBUSY;
goto err_misc_deregister;
}
priv->mmio_base = ioremap_nocache(r->start, resource_size(r));
if (!priv->mmio_base) {
- dev_err(&dev->dev, "failed to map I/O memory\n");
+ dev_err(dev, "failed to map I/O memory\n");
ret = -EBUSY;
goto err_free_mem_region;
}
/* allocate dma memory */
- priv->shared = dma_alloc_coherent(&dev->dev, SHARED_SIZE,
+ priv->shared = dma_alloc_coherent(dev, SHARED_SIZE,
&priv->shared_phys, GFP_KERNEL);
if (!priv->shared) {
- dev_err(&dev->dev, "failed to allocate DMA memory\n");
+ dev_err(dev, "failed to allocate DMA memory\n");
ret = -ENOMEM;
goto err_free_io;
}
/* enable the clock */
- priv->clk = clk_get(&dev->dev, NULL);
+ priv->clk = clk_get(dev, NULL);
if (IS_ERR(priv->clk)) {
- dev_err(&dev->dev, "failed to get clock\n");
+ dev_err(dev, "failed to get clock\n");
ret = -ENODEV;
goto err_free_dma;
}
ret = clk_enable(priv->clk);
if (ret < 0) {
- dev_err(&dev->dev, "failed to enable clock\n");
+ dev_err(dev, "failed to enable clock\n");
goto err_put_clk;
}
/* request the IRQ */
- irq = platform_get_irq(dev, 0);
+ irq = platform_get_irq(pdev, 0);
if (irq < 0) {
- dev_err(&dev->dev, "no IRQ defined\n");
+ dev_err(dev, "no IRQ defined\n");
ret = -ENODEV;
goto err_put_clk;
}
@@ -671,17 +672,17 @@ static int pxa3xx_gcu_probe(struct platform_device *dev)
ret = request_irq(irq, pxa3xx_gcu_handle_irq,
0, DRV_NAME, priv);
if (ret) {
- dev_err(&dev->dev, "request_irq failed\n");
+ dev_err(dev, "request_irq failed\n");
ret = -EBUSY;
goto err_put_clk;
}
- platform_set_drvdata(dev, priv);
+ platform_set_drvdata(pdev, priv);
priv->resource_mem = r;
pxa3xx_gcu_reset(priv);
pxa3xx_gcu_init_debug_timer();
- dev_info(&dev->dev, "registered @0x%p, DMA 0x%p (%d bytes), IRQ %d\n",
+ dev_info(dev, "registered @0x%p, DMA 0x%p (%d bytes), IRQ %d\n",
(void *) r->start, (void *) priv->shared_phys,
SHARED_SIZE, irq);
return 0;
@@ -691,7 +692,7 @@ err_put_clk:
clk_put(priv->clk);
err_free_dma:
- dma_free_coherent(&dev->dev, SHARED_SIZE,
+ dma_free_coherent(dev, SHARED_SIZE,
priv->shared, priv->shared_phys);
err_free_io:
@@ -709,16 +710,17 @@ err_free_priv:
return ret;
}
-static int pxa3xx_gcu_remove(struct platform_device *dev)
+static int pxa3xx_gcu_remove(struct platform_device *pdev)
{
- struct pxa3xx_gcu_priv *priv = platform_get_drvdata(dev);
+ struct pxa3xx_gcu_priv *priv = platform_get_drvdata(pdev);
struct resource *r = priv->resource_mem;
+ struct device *dev = &pdev->dev;
pxa3xx_gcu_wait_idle(priv);
misc_deregister(&priv->misc_dev);
- dma_free_coherent(&dev->dev, SHARED_SIZE,
- priv->shared, priv->shared_phys);
+ dma_free_coherent(dev, SHARED_SIZE,
+ priv->shared, priv->shared_phys);
iounmap(priv->mmio_base);
release_mem_region(r->start, resource_size(r));
clk_disable(priv->clk);
--
1.8.5.3
^ permalink raw reply related
* [PATCH 3/4] video: pxa3xx-gcu: provide an empty .open call
From: Daniel Mack @ 2014-03-05 16:12 UTC (permalink / raw)
To: linux-fbdev
This is necessary in order to make the core set file->private_data to
miscdev in use. We need that information later to dereference the
container of the device, so we can get access to our private struct from
other callbacks.
Signed-off-by: Daniel Mack <zonque@gmail.com>
---
drivers/video/pxa3xx-gcu.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/video/pxa3xx-gcu.c b/drivers/video/pxa3xx-gcu.c
index f9961ba..73c29ec 100644
--- a/drivers/video/pxa3xx-gcu.c
+++ b/drivers/video/pxa3xx-gcu.c
@@ -373,6 +373,15 @@ static inline struct pxa3xx_gcu_priv *to_pxa3xx_gcu_priv(struct file *file)
return container_of(dev, struct pxa3xx_gcu_priv, misc_dev);
}
+/*
+ * provide an empty .open callback, so the core sets file->private_data
+ * for us.
+ */
+static int pxa3xx_gcu_open(struct inode *inode, struct file *file)
+{
+ return 0;
+}
+
static ssize_t
pxa3xx_gcu_write(struct file *file, const char *buff,
size_t count, loff_t *offp)
@@ -571,6 +580,7 @@ pxa3xx_gcu_free_buffers(struct device *dev,
static const struct file_operations pxa3xx_gcu_miscdev_fops = {
.owner = THIS_MODULE,
+ .open = pxa3xx_gcu_open,
.write = pxa3xx_gcu_write,
.unlocked_ioctl = pxa3xx_gcu_ioctl,
.mmap = pxa3xx_gcu_mmap,
--
1.8.5.3
^ permalink raw reply related
* [PATCH 4/4] video: pxa3xx-gcu: switch to devres functions
From: Daniel Mack @ 2014-03-05 16:12 UTC (permalink / raw)
To: linux-fbdev
Switch to devres allocators to clean up the error unwinding paths.
Signed-off-by: Daniel Mack <zonque@gmail.com>
---
drivers/video/pxa3xx-gcu.c | 113 ++++++++++++++++-----------------------------
1 file changed, 39 insertions(+), 74 deletions(-)
diff --git a/drivers/video/pxa3xx-gcu.c b/drivers/video/pxa3xx-gcu.c
index 73c29ec..417f9a2 100644
--- a/drivers/video/pxa3xx-gcu.c
+++ b/drivers/video/pxa3xx-gcu.c
@@ -593,18 +593,10 @@ static int pxa3xx_gcu_probe(struct platform_device *pdev)
struct pxa3xx_gcu_priv *priv;
struct device *dev = &pdev->dev;
- priv = kzalloc(sizeof(struct pxa3xx_gcu_priv), GFP_KERNEL);
+ priv = devm_kzalloc(dev, sizeof(struct pxa3xx_gcu_priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
- for (i = 0; i < 8; i++) {
- ret = pxa3xx_gcu_add_buffer(dev, priv);
- if (ret) {
- dev_err(dev, "failed to allocate DMA memory\n");
- goto err_free_priv;
- }
- }
-
init_waitqueue_head(&priv->wait_idle);
init_waitqueue_head(&priv->wait_free);
spin_lock_init(&priv->spinlock);
@@ -618,73 +610,63 @@ static int pxa3xx_gcu_probe(struct platform_device *pdev)
priv->misc_dev.name = DRV_NAME,
priv->misc_dev.fops = &pxa3xx_gcu_miscdev_fops;
- /* register misc device */
- ret = misc_register(&priv->misc_dev);
- if (ret < 0) {
- dev_err(dev, "misc_register() for minor %d failed\n",
- MISCDEV_MINOR);
- goto err_free_priv;
- }
-
/* handle IO resources */
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (r = NULL) {
- dev_err(dev, "no I/O memory resource defined\n");
- ret = -ENODEV;
- goto err_misc_deregister;
+ priv->mmio_base = devm_request_and_ioremap(dev, r);
+ if (IS_ERR(priv->mmio_base)) {
+ dev_err(dev, "failed to map I/O memory\n");
+ return PTR_ERR(priv->mmio_base);
}
- if (!request_mem_region(r->start, resource_size(r), pdev->name)) {
- dev_err(dev, "failed to request I/O memory\n");
- ret = -EBUSY;
- goto err_misc_deregister;
+ /* enable the clock */
+ priv->clk = devm_clk_get(dev, NULL);
+ if (IS_ERR(priv->clk)) {
+ dev_err(dev, "failed to get clock\n");
+ return PTR_ERR(priv->clk);
}
- priv->mmio_base = ioremap_nocache(r->start, resource_size(r));
- if (!priv->mmio_base) {
- dev_err(dev, "failed to map I/O memory\n");
- ret = -EBUSY;
- goto err_free_mem_region;
+ /* request the IRQ */
+ irq = platform_get_irq(pdev, 0);
+ if (irq < 0) {
+ dev_err(dev, "no IRQ defined\n");
+ return -ENODEV;
+ }
+
+ ret = devm_request_irq(dev, irq, pxa3xx_gcu_handle_irq,
+ 0, DRV_NAME, priv);
+ if (ret < 0) {
+ dev_err(dev, "request_irq failed\n");
+ return ret;
}
/* allocate dma memory */
priv->shared = dma_alloc_coherent(dev, SHARED_SIZE,
&priv->shared_phys, GFP_KERNEL);
-
if (!priv->shared) {
dev_err(dev, "failed to allocate DMA memory\n");
- ret = -ENOMEM;
- goto err_free_io;
+ return -ENOMEM;
}
- /* enable the clock */
- priv->clk = clk_get(dev, NULL);
- if (IS_ERR(priv->clk)) {
- dev_err(dev, "failed to get clock\n");
- ret = -ENODEV;
+ /* register misc device */
+ ret = misc_register(&priv->misc_dev);
+ if (ret < 0) {
+ dev_err(dev, "misc_register() for minor %d failed\n",
+ MISCDEV_MINOR);
goto err_free_dma;
}
ret = clk_enable(priv->clk);
if (ret < 0) {
dev_err(dev, "failed to enable clock\n");
- goto err_put_clk;
- }
-
- /* request the IRQ */
- irq = platform_get_irq(pdev, 0);
- if (irq < 0) {
- dev_err(dev, "no IRQ defined\n");
- ret = -ENODEV;
- goto err_put_clk;
+ goto err_misc_deregister;
}
- ret = request_irq(irq, pxa3xx_gcu_handle_irq,
- 0, DRV_NAME, priv);
- if (ret) {
- dev_err(dev, "request_irq failed\n");
- ret = -EBUSY;
- goto err_put_clk;
+ for (i = 0; i < 8; i++) {
+ ret = pxa3xx_gcu_add_buffer(dev, priv);
+ if (ret) {
+ dev_err(dev, "failed to allocate DMA memory\n");
+ goto err_disable_clk;
+ }
}
platform_set_drvdata(pdev, priv);
@@ -697,45 +679,28 @@ static int pxa3xx_gcu_probe(struct platform_device *pdev)
SHARED_SIZE, irq);
return 0;
-err_put_clk:
- clk_disable(priv->clk);
- clk_put(priv->clk);
-
err_free_dma:
dma_free_coherent(dev, SHARED_SIZE,
priv->shared, priv->shared_phys);
-err_free_io:
- iounmap(priv->mmio_base);
-
-err_free_mem_region:
- release_mem_region(r->start, resource_size(r));
-
err_misc_deregister:
misc_deregister(&priv->misc_dev);
-err_free_priv:
- pxa3xx_gcu_free_buffers(dev, priv);
- kfree(priv);
+err_disable_clk:
+ clk_disable(priv->clk);
+
return ret;
}
static int pxa3xx_gcu_remove(struct platform_device *pdev)
{
struct pxa3xx_gcu_priv *priv = platform_get_drvdata(pdev);
- struct resource *r = priv->resource_mem;
struct device *dev = &pdev->dev;
pxa3xx_gcu_wait_idle(priv);
-
misc_deregister(&priv->misc_dev);
- dma_free_coherent(dev, SHARED_SIZE,
- priv->shared, priv->shared_phys);
- iounmap(priv->mmio_base);
- release_mem_region(r->start, resource_size(r));
- clk_disable(priv->clk);
+ dma_free_coherent(dev, SHARED_SIZE, priv->shared, priv->shared_phys);
pxa3xx_gcu_free_buffers(dev, priv);
- kfree(priv);
return 0;
}
--
1.8.5.3
^ permalink raw reply related
* [PATCH] video: fbdev: uvesafb: use CONFIG_X86_PAE surround _PAGE_NX check code
From: Wang YanQing @ 2014-03-05 16:16 UTC (permalink / raw)
To: tomi.valkeinen; +Cc: plagnioj, fengguang.wu, linux-fbdev, linux-kernel
Because _PAGE_NX check will always false when we don't define
CONFIG_X86_PAE for CONFIG_X86_32, so use CONFIG_X86_PAE surround
the check code.
Although I believe "smart" compile will optimize out and generate
the same code, but use CONFIG_X86_PAE surround check code will
clear it and prohibit warning from static source code analyze tool.
[ This patch fix warning report by fengguang.wu@intel.com
"drivers/video/fbdev/uvesafb.c:816 uvesafb_vbe_init()
warn: bitwise AND condition is false here" ]
Signed-off-by: Wang YanQing <udknight@gmail.com>
---
drivers/video/fbdev/uvesafb.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/video/fbdev/uvesafb.c b/drivers/video/fbdev/uvesafb.c
index 509d452..102858c 100644
--- a/drivers/video/fbdev/uvesafb.c
+++ b/drivers/video/fbdev/uvesafb.c
@@ -813,6 +813,7 @@ static int uvesafb_vbe_init(struct fb_info *info)
par->ypan = ypan;
if (par->pmi_setpal || par->ypan) {
+#ifdef CONFIG_X86_PAE
if (__supported_pte_mask & _PAGE_NX) {
par->pmi_setpal = par->ypan = 0;
printk(KERN_WARNING "uvesafb: NX protection is active, "
@@ -820,6 +821,9 @@ static int uvesafb_vbe_init(struct fb_info *info)
} else {
uvesafb_vbe_getpmi(task, par);
}
+#else
+ uvesafb_vbe_getpmi(task, par);
+#endif
}
#else
/* The protected mode interface is not available on non-x86. */
--
1.8.3.4.8.g69490f3.dirty
^ permalink raw reply related
* [PATCH v5 1/2] video: ARM CLCD: Add DT support
From: Pawel Moll @ 2014-03-05 16:23 UTC (permalink / raw)
To: linux-arm-kernel
This patch adds basic DT bindings for the PL11x CLCD cells
and make their fbdev driver use them.
Signed-off-by: Pawel Moll <pawel.moll@arm.com>
---
Changes since v4:
- simplified the pads description property and made it optional
Changes since v3:
- changed wording and order of interrupt-names and interrupts
properties documentation
- changed wording of arm,pl11x,framebuffer-base property
documentation
- cleaned up binding documentation indentation
Changes since v2:
- replaced video-ram phandle with arm,pl11x,framebuffer-base
- replaced panel-* properties with arm,pl11x,panel-data-pads
- replaced max-framebuffer-size with max-memory-bandwidth
- modified clcdfb_of_init_tft_panel() to use the pads
data and take differences between PL110 and PL110 into
account
Changes since v1:
- minor code cleanups as suggested by Sylwester Nawrocki
.../devicetree/bindings/video/arm,pl11x.txt | 83 ++++++++
drivers/video/Kconfig | 1 +
drivers/video/amba-clcd.c | 219 +++++++++++++++++++++
3 files changed, 303 insertions(+)
create mode 100644 Documentation/devicetree/bindings/video/arm,pl11x.txt
diff --git a/Documentation/devicetree/bindings/video/arm,pl11x.txt b/Documentation/devicetree/bindings/video/arm,pl11x.txt
new file mode 100644
index 0000000..75da7b7
--- /dev/null
+++ b/Documentation/devicetree/bindings/video/arm,pl11x.txt
@@ -0,0 +1,83 @@
+* ARM PrimeCell Color LCD Controller PL110/PL111
+
+See also Documentation/devicetree/bindings/arm/primecell.txt
+
+Required properties:
+
+- compatible: must be one of:
+ "arm,pl110", "arm,primecell"
+ "arm,pl111", "arm,primecell"
+
+- reg: base address and size of the control registers block
+
+- interrupt-names: either the single entry "combined" representing a
+ combined interrupt output (CLCDINTR), or the four entries
+ "mbe", "vcomp", "lnbu", "fuf" representing the individual
+ CLCDMBEINTR, CLCDVCOMPINTR, CLCDLNBUINTR, CLCDFUFINTR interrupts
+
+- interrupts: contains an interrupt specifier for each entry in
+ interrupt-names
+
+- clocks-names: should contain "clcdclk" and "apb_pclk"
+
+- clocks: contains phandle and clock specifier pairs for the entries
+ in the clock-names property. See
+ Documentation/devicetree/binding/clock/clock-bindings.txt
+
+Optional properties:
+
+- arm,pl11x,framebuffer-base: a pair of two 32-bit values, address and size,
+ defining the framebuffer that must be used; if not present, the
+ framebuffer may be located anywhere in the memory
+
+- arm,pl11x,tft-r0g0b0-pads: when connected to a TFT panel, an array of three
+ 32-bit values, defining the way CLD pads are wired up; this implicitly
+ defines available color modes, for example:
+ - PL111 TFT 4:4:4 panel:
+ arm,pl11x,tft-r0g0b0-pads = <4 15 20>;
+ - PL110 TFT (1:)5:5:5 panel:
+ arm,pl11x,tft-r0g0b0-pads = <1 7 13>;
+ - PL111 TFT (1:)5:5:5 panel:
+ arm,pl11x,tft-r0g0b0-pads = <3 11 19>;
+ - PL111 TFT 5:6:5 panel:
+ arm,pl11x,tft-r0g0b0-pads = <3 10 19>;
+ - PL110 and PL111 TFT 8:8:8 panel:
+ arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
+ - PL110 and PL111 TFT 8:8:8 panel, R & B components swapped:
+ arm,pl11x,tft-r0g0b0-pads = <16 8 0>;
+
+- max-memory-bandwidth: maximum bandwidth in bytes per second that the
+ cell's memory interface can handle
+
+- display-timings: standard display timings sub-node, defining possible
+ video modes of a connected panel; for details see
+ Documentation/devicetree/bindings/video/display-timing.txt
+
+Example:
+
+ clcd@1f0000 {
+ compatible = "arm,pl111", "arm,primecell";
+ reg = <0x1f0000 0x1000>;
+ interrupt-names = "combined";
+ interrupts = <14>;
+ clock-names = "clcdclk", "apb_pclk";
+ clocks = <&v2m_oscclk1>, <&smbclk>;
+
+ arm,pl11x,framebuffer-base = <0x18000000 0x00800000>;
+ arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
+ max-memory-bandwidth = <36864000>; /* bps, 640x480@60 16bpp */
+ display-timings {
+ native-mode = <&v2m_clcd_timing0>;
+ v2m_clcd_timing0: vga {
+ clock-frequency = <25175000>;
+ hactive = <640>;
+ hback-porch = <40>;
+ hfront-porch = <24>;
+ hsync-len = <96>;
+ vactive = <480>;
+ vback-porch = <32>;
+ vfront-porch = <11>;
+ vsync-len = <2>;
+ };
+ };
+ };
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index dade5b7..c1d25c9 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -317,6 +317,7 @@ config FB_ARMCLCD
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
+ select VIDEOMODE_HELPERS if OF
help
This framebuffer device driver is for the ARM PrimeCell PL110
Colour LCD controller. ARM PrimeCells provide the building
diff --git a/drivers/video/amba-clcd.c b/drivers/video/amba-clcd.c
index 14d6b37..5a165dd 100644
--- a/drivers/video/amba-clcd.c
+++ b/drivers/video/amba-clcd.c
@@ -26,6 +26,11 @@
#include <linux/amba/clcd.h>
#include <linux/clk.h>
#include <linux/hardirq.h>
+#include <linux/dma-mapping.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <video/of_display_timing.h>
+#include <video/of_videomode.h>
#include <asm/sizes.h>
@@ -543,6 +548,217 @@ static int clcdfb_register(struct clcd_fb *fb)
return ret;
}
+#ifdef CONFIG_OF
+static int clcdfb_of_init_tft_panel(struct clcd_fb *fb, u32 r0, u32 g0, u32 b0)
+{
+ static struct {
+ unsigned int part;
+ u32 r0, g0, b0;
+ u32 caps;
+ } panels[] = {
+ { 0x110, 1, 7, 13, CLCD_CAP_5551 },
+ { 0x110, 0, 8, 16, CLCD_CAP_888 },
+ { 0x111, 4, 14, 20, CLCD_CAP_444 },
+ { 0x111, 3, 11, 19, CLCD_CAP_444 | CLCD_CAP_5551 },
+ { 0x111, 3, 10, 19, CLCD_CAP_444 | CLCD_CAP_5551 |
+ CLCD_CAP_565 },
+ { 0x111, 0, 8, 16, CLCD_CAP_444 | CLCD_CAP_5551 |
+ CLCD_CAP_565 | CLCD_CAP_888 },
+ };
+ int i;
+
+ /* Bypass pixel clock divider, data output on the falling edge */
+ fb->panel->tim2 = TIM2_BCD | TIM2_IPC;
+
+ /* TFT display, vert. comp. interrupt at the start of the back porch */
+ fb->panel->cntl |= CNTL_LCDTFT | CNTL_LCDVCOMP(1);
+
+ fb->panel->caps = 0;
+
+ /* Match the setup with known variants */
+ for (i = 0; i < ARRAY_SIZE(panels) && !fb->panel->caps; i++) {
+ if (amba_part(fb->dev) != panels[i].part)
+ continue;
+ if (g0 != panels[i].g0)
+ continue;
+ if (r0 = panels[i].r0 && b0 = panels[i].b0)
+ fb->panel->caps = panels[i].caps & CLCD_CAP_RGB;
+ if (r0 = panels[i].b0 && b0 = panels[i].r0)
+ fb->panel->caps = panels[i].caps & CLCD_CAP_BGR;
+ }
+
+ return fb->panel->caps ? 0 : -EINVAL;
+}
+
+static int clcdfb_snprintf_mode(char *buf, int size, struct fb_videomode *mode)
+{
+ return snprintf(buf, size, "%ux%u@%u", mode->xres, mode->yres,
+ mode->refresh);
+}
+
+static int clcdfb_of_init_display(struct clcd_fb *fb)
+{
+ struct device_node *node = fb->dev->dev.of_node;
+ int err, len;
+ char *mode_name;
+ u32 max_bandwidth;
+ u32 tft_r0b0g0[3];
+
+ fb->panel = devm_kzalloc(&fb->dev->dev, sizeof(*fb->panel), GFP_KERNEL);
+ if (!fb->panel)
+ return -ENOMEM;
+
+ err = of_get_fb_videomode(node, &fb->panel->mode, OF_USE_NATIVE_MODE);
+ if (err)
+ return err;
+
+ len = clcdfb_snprintf_mode(NULL, 0, &fb->panel->mode);
+ mode_name = devm_kzalloc(&fb->dev->dev, len + 1, GFP_KERNEL);
+ clcdfb_snprintf_mode(mode_name, len + 1, &fb->panel->mode);
+ fb->panel->mode.name = mode_name;
+
+ err = of_property_read_u32(node, "max-memory-bandwidth",
+ &max_bandwidth);
+ if (!err)
+ fb->panel->bpp = 8 * max_bandwidth / (fb->panel->mode.xres *
+ fb->panel->mode.yres * fb->panel->mode.refresh);
+ else
+ fb->panel->bpp = 32;
+
+#ifdef CONFIG_CPU_BIG_ENDIAN
+ fb->panel->cntl |= CNTL_BEBO;
+#endif
+ fb->panel->width = -1;
+ fb->panel->height = -1;
+
+ if (of_property_read_u32_array(node, "arm,pl11x,tft-r0g0b0-pads",
+ tft_r0b0g0, ARRAY_SIZE(tft_r0b0g0)) = 0)
+ return clcdfb_of_init_tft_panel(fb, tft_r0b0g0[0],
+ tft_r0b0g0[1], tft_r0b0g0[2]);
+
+ return -ENOENT;
+}
+
+static int clcdfb_of_vram_setup(struct clcd_fb *fb)
+{
+ int err;
+ u32 values[2];
+ phys_addr_t phys_base;
+ size_t size;
+
+ err = clcdfb_of_init_display(fb);
+ if (err)
+ return err;
+
+ err = of_property_read_u32_array(fb->dev->dev.of_node,
+ "arm,pl11x,framebuffer-base",
+ values, ARRAY_SIZE(values));
+ if (err)
+ return err;
+
+ phys_base = values[0];
+ size = values[1];
+
+ fb->fb.screen_base = ioremap(phys_base, size);
+ if (!fb->fb.screen_base)
+ return -ENOMEM;
+
+ fb->fb.fix.smem_start = phys_base;
+ fb->fb.fix.smem_len = size;
+
+ return 0;
+}
+
+static int clcdfb_of_vram_mmap(struct clcd_fb *fb, struct vm_area_struct *vma)
+{
+ unsigned long off, user_size, kernel_size;
+
+
+ off = vma->vm_pgoff << PAGE_SHIFT;
+ user_size = vma->vm_end - vma->vm_start;
+ kernel_size = fb->fb.fix.smem_len;
+
+ if (off >= kernel_size || user_size > (kernel_size - off))
+ return -ENXIO;
+
+ return remap_pfn_range(vma, vma->vm_start,
+ __phys_to_pfn(fb->fb.fix.smem_start) + vma->vm_pgoff,
+ user_size,
+ pgprot_writecombine(vma->vm_page_prot));
+}
+
+static void clcdfb_of_vram_remove(struct clcd_fb *fb)
+{
+ iounmap(fb->fb.screen_base);
+}
+
+static int clcdfb_of_dma_setup(struct clcd_fb *fb)
+{
+ unsigned long framesize;
+ dma_addr_t dma;
+ int err;
+
+ err = clcdfb_of_init_display(fb);
+ if (err)
+ return err;
+
+ framesize = fb->panel->mode.xres * fb->panel->mode.yres *
+ fb->panel->bpp / 8;
+ fb->fb.screen_base = dma_alloc_writecombine(&fb->dev->dev, framesize,
+ &dma, GFP_KERNEL);
+ if (!fb->fb.screen_base)
+ return -ENOMEM;
+
+ fb->fb.fix.smem_start = dma;
+ fb->fb.fix.smem_len = framesize;
+
+ return 0;
+}
+
+static int clcdfb_of_dma_mmap(struct clcd_fb *fb, struct vm_area_struct *vma)
+{
+ return dma_mmap_writecombine(&fb->dev->dev, vma, fb->fb.screen_base,
+ fb->fb.fix.smem_start, fb->fb.fix.smem_len);
+}
+
+static void clcdfb_of_dma_remove(struct clcd_fb *fb)
+{
+ dma_free_writecombine(&fb->dev->dev, fb->fb.fix.smem_len,
+ fb->fb.screen_base, fb->fb.fix.smem_start);
+}
+
+static struct clcd_board *clcdfb_of_get_board(struct amba_device *dev)
+{
+ struct clcd_board *board = devm_kzalloc(&dev->dev, sizeof(*board),
+ GFP_KERNEL);
+ struct device_node *node = dev->dev.of_node;
+
+ if (!board)
+ return NULL;
+
+ board->name = of_node_full_name(node);
+ board->caps = CLCD_CAP_ALL;
+ board->check = clcdfb_check;
+ board->decode = clcdfb_decode;
+ if (of_find_property(node, "arm,pl11x,framebuffer-base", NULL)) {
+ board->setup = clcdfb_of_vram_setup;
+ board->mmap = clcdfb_of_vram_mmap;
+ board->remove = clcdfb_of_vram_remove;
+ } else {
+ board->setup = clcdfb_of_dma_setup;
+ board->mmap = clcdfb_of_dma_mmap;
+ board->remove = clcdfb_of_dma_remove;
+ }
+
+ return board;
+}
+#else
+static struct clcd_board *clcdfb_of_get_board(struct amba_dev *dev)
+{
+ return NULL;
+}
+#endif
+
static int clcdfb_probe(struct amba_device *dev, const struct amba_id *id)
{
struct clcd_board *board = dev_get_platdata(&dev->dev);
@@ -550,6 +766,9 @@ static int clcdfb_probe(struct amba_device *dev, const struct amba_id *id)
int ret;
if (!board)
+ board = clcdfb_of_get_board(dev);
+
+ if (!board)
return -EINVAL;
ret = dma_set_mask_and_coherent(&dev->dev, DMA_BIT_MASK(32));
--
1.8.3.2
^ permalink raw reply related
* [PATCH v5 2/2] ARM: vexpress: Add CLCD Device Tree properties
From: Pawel Moll @ 2014-03-05 16:23 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1394036606-17784-1-git-send-email-pawel.moll@arm.com>
... for V2M-P1 motherboard CLCD (limited to 640x480 16bpp and using
dedicated video RAM bank) and for V2P-CA9 (up to 1024x768 16bpp).
Signed-off-by: Pawel Moll <pawel.moll@arm.com>
---
arch/arm/boot/dts/vexpress-v2m-rs1.dtsi | 21 ++++++++++++++++++++-
arch/arm/boot/dts/vexpress-v2m.dtsi | 21 ++++++++++++++++++++-
arch/arm/boot/dts/vexpress-v2p-ca9.dts | 18 ++++++++++++++++++
3 files changed, 58 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi b/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi
index ac870fb..c95a4cb 100644
--- a/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi
+++ b/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi
@@ -230,9 +230,28 @@
clcd@1f0000 {
compatible = "arm,pl111", "arm,primecell";
reg = <0x1f0000 0x1000>;
+ interrupt-names = "combined";
interrupts = <14>;
clocks = <&v2m_oscclk1>, <&smbclk>;
clock-names = "clcdclk", "apb_pclk";
+
+ arm,pl11x,framebuffer-base = <0x18000000 0x00800000>;
+ arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
+ max-memory-bandwidth = <36864000>; /* Bps, 640x480@60 16bpp */
+ display-timings {
+ native-mode = <&v2m_clcd_timing0>;
+ v2m_clcd_timing0: vga {
+ clock-frequency = <25175000>;
+ hactive = <640>;
+ hback-porch = <40>;
+ hfront-porch = <24>;
+ hsync-len = <96>;
+ vactive = <480>;
+ vback-porch = <32>;
+ vfront-porch = <11>;
+ vsync-len = <2>;
+ };
+ };
};
};
@@ -282,7 +301,7 @@
/* CLCD clock */
compatible = "arm,vexpress-osc";
arm,vexpress-sysreg,func = <1 1>;
- freq-range = <23750000 63500000>;
+ freq-range = <23750000 65000000>;
#clock-cells = <0>;
clock-output-names = "v2m:oscclk1";
};
diff --git a/arch/arm/boot/dts/vexpress-v2m.dtsi b/arch/arm/boot/dts/vexpress-v2m.dtsi
index f142036..9224834 100644
--- a/arch/arm/boot/dts/vexpress-v2m.dtsi
+++ b/arch/arm/boot/dts/vexpress-v2m.dtsi
@@ -229,9 +229,28 @@
clcd@1f000 {
compatible = "arm,pl111", "arm,primecell";
reg = <0x1f000 0x1000>;
+ interrupt-names = "combined";
interrupts = <14>;
clocks = <&v2m_oscclk1>, <&smbclk>;
clock-names = "clcdclk", "apb_pclk";
+
+ arm,pl11x,framebuffer-base = <0x4c000000 0x00800000>;
+ arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
+ max-memory-bandwidth = <36864000>; /* Bps, 640x480@60 16bpp */
+ display-timings {
+ native-mode = <&v2m_clcd_timing0>;
+ v2m_clcd_timing0: vga {
+ clock-frequency = <25175000>;
+ hactive = <640>;
+ hback-porch = <40>;
+ hfront-porch = <24>;
+ hsync-len = <96>;
+ vactive = <480>;
+ vback-porch = <32>;
+ vfront-porch = <11>;
+ vsync-len = <2>;
+ };
+ };
};
};
@@ -281,7 +300,7 @@
/* CLCD clock */
compatible = "arm,vexpress-osc";
arm,vexpress-sysreg,func = <1 1>;
- freq-range = <23750000 63500000>;
+ freq-range = <23750000 65000000>;
#clock-cells = <0>;
clock-output-names = "v2m:oscclk1";
};
diff --git a/arch/arm/boot/dts/vexpress-v2p-ca9.dts b/arch/arm/boot/dts/vexpress-v2p-ca9.dts
index 62d9b22..ed4f223 100644
--- a/arch/arm/boot/dts/vexpress-v2p-ca9.dts
+++ b/arch/arm/boot/dts/vexpress-v2p-ca9.dts
@@ -70,9 +70,27 @@
clcd@10020000 {
compatible = "arm,pl111", "arm,primecell";
reg = <0x10020000 0x1000>;
+ interrupt-names = "combined";
interrupts = <0 44 4>;
clocks = <&oscclk1>, <&oscclk2>;
clock-names = "clcdclk", "apb_pclk";
+
+ arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
+ max-memory-bandwidth = <94371840>; /* Bps, 1024x768@60 16bpp */
+ display-timings {
+ native-mode = <&clcd_timing0>;
+ clcd_timing0: xga {
+ clock-frequency = <63500127>;
+ hactive = <1024>;
+ hback-porch = <152>;
+ hfront-porch = <48>;
+ hsync-len = <104>;
+ vactive = <768>;
+ vback-porch = <23>;
+ vfront-porch = <3>;
+ vsync-len = <4>;
+ };
+ };
};
memory-controller@100e0000 {
--
1.8.3.2
^ permalink raw reply related
* [PATCH] video: da8xx-fb: Add support for Densitron 84-0023-001T
From: jon @ 2014-03-05 18:05 UTC (permalink / raw)
To: plagnioj, tomi.valkeinen; +Cc: linux-fbdev, linux-kernel, Jon Ringle
From: Jon Ringle <jringle@gridpoint.com>
Signed-off-by: Jon Ringle <jringle@gridpoint.com>
---
drivers/video/da8xx-fb.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index e7f5937..83c43b2 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -243,6 +243,20 @@ static struct fb_videomode known_lcd_panels[] = {
.sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
.flag = 0,
},
+ [3] = {
+ /* Densitron 84-0023-001T */
+ .name = "Densitron_LCD",
+ .xres = 320,
+ .yres = 240,
+ .pixclock = KHZ2PICOS(6400),
+ .left_margin = 0,
+ .right_margin = 0,
+ .upper_margin = 0,
+ .lower_margin = 0,
+ .hsync_len = 30,
+ .vsync_len = 3,
+ .sync = 0,
+ },
};
static bool da8xx_fb_is_raster_enabled(void)
--
1.8.5.4
^ permalink raw reply related
* Re: [PATCH 0/4] Cleanups and fix for video/pxa3xx-gcu
From: Haojian Zhuang @ 2014-03-06 2:09 UTC (permalink / raw)
To: linux-fbdev
In-Reply-To: <1394035969-32420-1-git-send-email-zonque@gmail.com>
On Thu, Mar 6, 2014 at 12:12 AM, Daniel Mack <zonque@gmail.com> wrote:
> Here are some cleanups for the pxa3xx-gcu driver. Patch 3/4 is actually
> a real bugfix that is needed since the misc code doesn't set
> file->private_data for us implicitly anymore.
>
> The rest are just straight-forward cleanups.
>
> Thanks,
> Daniel
>
>
> Daniel Mack (4):
> video: pxa3xx-gcu: rename some symbols
> video: pxa3xx-gcu: pass around struct device *
> video: pxa3xx-gcu: provide an empty .open call
> video: pxa3xx-gcu: switch to devres functions
>
> drivers/video/pxa3xx-gcu.c | 191 +++++++++++++++++++--------------------------
> 1 file changed, 81 insertions(+), 110 deletions(-)
>
> --
> 1.8.5.3
>
Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox