From 8e4bff4cab0ddac6060645b0715210484d02ff40 Mon Sep 17 00:00:00 2001 From: Yuval Adam <_@yuv.al> Date: Wed, 30 Aug 2017 08:25:59 +0000 Subject: Initial file dump from open source release --- drivers/video/68328fb.c | 504 + drivers/video/Kconfig | 2540 +++++ drivers/video/Makefile | 189 + drivers/video/acornfb.c | 1409 +++ drivers/video/acornfb.h | 198 + drivers/video/adf/Kconfig | 14 + drivers/video/adf/Makefile | 15 + drivers/video/adf/adf.c | 1188 ++ drivers/video/adf/adf.h | 71 + drivers/video/adf/adf_client.c | 811 ++ drivers/video/adf/adf_fbdev.c | 665 ++ drivers/video/adf/adf_fops.c | 957 ++ drivers/video/adf/adf_fops.h | 37 + drivers/video/adf/adf_fops32.c | 217 + drivers/video/adf/adf_fops32.h | 78 + drivers/video/adf/adf_format.c | 280 + drivers/video/adf/adf_memblock.c | 160 + drivers/video/adf/adf_sysfs.c | 296 + drivers/video/adf/adf_sysfs.h | 33 + drivers/video/adf/adf_trace.h | 93 + drivers/video/amba-clcd.c | 939 ++ drivers/video/amifb.c | 3794 +++++++ drivers/video/arcfb.c | 669 ++ drivers/video/arkfb.c | 1232 +++ drivers/video/arm-hdlcd.c | 844 ++ drivers/video/asiliantfb.c | 625 ++ drivers/video/atafb.c | 3269 ++++++ drivers/video/atafb.h | 36 + drivers/video/atafb_iplan2p2.c | 293 + drivers/video/atafb_iplan2p4.c | 308 + drivers/video/atafb_iplan2p8.c | 345 + drivers/video/atafb_mfb.c | 112 + drivers/video/atafb_utils.h | 400 + drivers/video/atmel_lcdfb.c | 1238 +++ drivers/video/aty/Makefile | 15 + drivers/video/aty/ati_ids.h | 214 + drivers/video/aty/aty128fb.c | 2589 +++++ drivers/video/aty/atyfb.h | 369 + drivers/video/aty/atyfb_base.c | 4028 +++++++ drivers/video/aty/mach64_accel.c | 430 + drivers/video/aty/mach64_ct.c | 649 ++ drivers/video/aty/mach64_cursor.c | 225 + drivers/video/aty/mach64_gx.c | 910 ++ drivers/video/aty/radeon_accel.c | 328 + drivers/video/aty/radeon_backlight.c | 221 + drivers/video/aty/radeon_base.c | 2573 +++++ drivers/video/aty/radeon_i2c.c | 167 + drivers/video/aty/radeon_monitor.c | 1052 ++ drivers/video/aty/radeon_pm.c | 2904 +++++ drivers/video/aty/radeonfb.h | 635 ++ drivers/video/au1100fb.c | 655 ++ drivers/video/au1100fb.h | 377 + drivers/video/au1200fb.c | 1873 ++++ drivers/video/au1200fb.h | 572 + drivers/video/auo_k1900fb.c | 205 + drivers/video/auo_k1901fb.c | 258 + drivers/video/auo_k190x.c | 1198 ++ drivers/video/auo_k190x.h | 129 + drivers/video/backlight/88pm860x_bl.c | 290 + drivers/video/backlight/Kconfig | 482 + drivers/video/backlight/Makefile | 59 + drivers/video/backlight/aat2870_bl.c | 245 + drivers/video/backlight/adp5520_bl.c | 390 + drivers/video/backlight/adp8860_bl.c | 824 ++ drivers/video/backlight/adp8870_bl.c | 996 ++ drivers/video/backlight/ams369fg06.c | 585 + drivers/video/backlight/apple_bl.c | 257 + drivers/video/backlight/as3711_bl.c | 496 + drivers/video/backlight/atmel-pwm-bl.c | 235 + drivers/video/backlight/backlight.c | 431 + drivers/video/backlight/corgi_lcd.c | 624 ++ drivers/video/backlight/cr_bllcd.c | 290 + drivers/video/backlight/da903x_bl.c | 184 + drivers/video/backlight/da9052_bl.c | 185 + drivers/video/backlight/ep93xx_bl.c | 152 + drivers/video/backlight/generic_bl.c | 139 + drivers/video/backlight/hp680_bl.c | 177 + drivers/video/backlight/hx8357.c | 497 + drivers/video/backlight/ili922x.c | 555 + drivers/video/backlight/ili9320.c | 312 + drivers/video/backlight/ili9320.h | 80 + drivers/video/backlight/jornada720_bl.c | 163 + drivers/video/backlight/jornada720_lcd.c | 143 + drivers/video/backlight/kb3886_bl.c | 207 + drivers/video/backlight/ktd253b_bl.c | 569 + drivers/video/backlight/ktd2801_bl.c | 432 + drivers/video/backlight/l4f00242t03.c | 275 + drivers/video/backlight/lcd.c | 290 + drivers/video/backlight/lcd_panel_cabc_pwm_bl.c | 329 + drivers/video/backlight/ld9040.c | 827 ++ drivers/video/backlight/ld9040_gamma.h | 200 + drivers/video/backlight/lm3533_bl.c | 417 + drivers/video/backlight/lm3630_bl.c | 475 + drivers/video/backlight/lm3632_bl.c | 395 + drivers/video/backlight/lm3639_bl.c | 434 + drivers/video/backlight/lms283gf05.c | 215 + drivers/video/backlight/lms501kf03.c | 439 + drivers/video/backlight/locomolcd.c | 255 + drivers/video/backlight/lp855x_bl.c | 504 + drivers/video/backlight/lp8788_bl.c | 333 + drivers/video/backlight/ltv350qv.c | 317 + drivers/video/backlight/ltv350qv.h | 95 + drivers/video/backlight/max8925_bl.c | 220 + drivers/video/backlight/omap1_bl.c | 197 + drivers/video/backlight/ot200_bl.c | 169 + drivers/video/backlight/pandora_bl.c | 169 + drivers/video/backlight/pcf50633-backlight.c | 174 + drivers/video/backlight/platform_lcd.c | 178 + drivers/video/backlight/pwm_bl.c | 320 + drivers/video/backlight/rt4502_bl.c | 516 + drivers/video/backlight/s6e63m0.c | 870 ++ drivers/video/backlight/s6e63m0_gamma.h | 266 + drivers/video/backlight/sprd_backlight.c | 740 ++ drivers/video/backlight/sprd_pwm_bl.c | 442 + drivers/video/backlight/tdo24m.c | 457 + drivers/video/backlight/tosa_bl.c | 179 + drivers/video/backlight/tosa_lcd.c | 284 + drivers/video/backlight/tps65217_bl.c | 355 + drivers/video/backlight/vgg2432a4.c | 267 + drivers/video/backlight/wm831x_bl.c | 241 + drivers/video/bf537-lq035.c | 915 ++ drivers/video/bf54x-lq043fb.c | 780 ++ drivers/video/bfin-lq035q1-fb.c | 860 ++ drivers/video/bfin-t350mcqb-fb.c | 684 ++ drivers/video/bfin_adv7393fb.c | 827 ++ drivers/video/bfin_adv7393fb.h | 321 + drivers/video/broadsheetfb.c | 1236 +++ drivers/video/bt431.h | 235 + drivers/video/bt455.h | 94 + drivers/video/bw2.c | 408 + drivers/video/c2p.h | 19 + drivers/video/c2p_core.h | 153 + drivers/video/c2p_iplan2.c | 153 + drivers/video/c2p_planar.c | 156 + drivers/video/carminefb.c | 790 ++ drivers/video/carminefb.h | 64 + drivers/video/carminefb_regs.h | 159 + drivers/video/cfbcopyarea.c | 434 + drivers/video/cfbfillrect.c | 371 + drivers/video/cfbimgblt.c | 313 + drivers/video/cg14.c | 628 ++ drivers/video/cg3.c | 494 + drivers/video/cg6.c | 887 ++ drivers/video/chipsfb.c | 519 + drivers/video/cirrusfb.c | 2958 +++++ drivers/video/clps711xfb.c | 315 + drivers/video/cobalt_lcdfb.c | 414 + drivers/video/console/Kconfig | 242 + drivers/video/console/Makefile | 43 + drivers/video/console/bitblit.c | 422 + drivers/video/console/dummycon.c | 79 + drivers/video/console/fbcon.c | 3659 ++++++ drivers/video/console/fbcon.h | 264 + drivers/video/console/fbcon_ccw.c | 424 + drivers/video/console/fbcon_cw.c | 407 + drivers/video/console/fbcon_rotate.c | 116 + drivers/video/console/fbcon_rotate.h | 96 + drivers/video/console/fbcon_ud.c | 452 + drivers/video/console/font_10x18.c | 5146 +++++++++ drivers/video/console/font_6x11.c | 3352 ++++++ drivers/video/console/font_7x14.c | 4118 +++++++ drivers/video/console/font_8x16.c | 4633 ++++++++ drivers/video/console/font_8x8.c | 2583 +++++ drivers/video/console/font_acorn_8x8.c | 275 + drivers/video/console/font_mini_4x6.c | 2158 ++++ drivers/video/console/font_pearl_8x8.c | 2587 +++++ drivers/video/console/font_sun12x22.c | 6165 +++++++++++ drivers/video/console/font_sun8x16.c | 275 + drivers/video/console/fonts.c | 153 + drivers/video/console/mdacon.c | 603 + drivers/video/console/newport_con.c | 799 ++ drivers/video/console/softcursor.c | 82 + drivers/video/console/sticon.c | 391 + drivers/video/console/sticore.c | 1119 ++ drivers/video/console/tileblit.c | 159 + drivers/video/console/vgacon.c | 1435 +++ drivers/video/controlfb.c | 1084 ++ drivers/video/controlfb.h | 145 + drivers/video/cyber2000fb.c | 1976 ++++ drivers/video/cyber2000fb.h | 497 + drivers/video/da8xx-fb.c | 1607 +++ drivers/video/display_timing.c | 24 + drivers/video/dnfb.c | 303 + drivers/video/edid.h | 138 + drivers/video/efifb.c | 593 + drivers/video/ep93xx-fb.c | 636 ++ drivers/video/exynos/Kconfig | 37 + drivers/video/exynos/Makefile | 8 + drivers/video/exynos/exynos_dp_core.c | 1214 ++ drivers/video/exynos/exynos_dp_core.h | 210 + drivers/video/exynos/exynos_dp_reg.c | 1245 +++ drivers/video/exynos/exynos_dp_reg.h | 366 + drivers/video/exynos/exynos_mipi_dsi.c | 574 + drivers/video/exynos/exynos_mipi_dsi_common.c | 879 ++ drivers/video/exynos/exynos_mipi_dsi_common.h | 46 + drivers/video/exynos/exynos_mipi_dsi_lowlevel.c | 617 ++ drivers/video/exynos/exynos_mipi_dsi_lowlevel.h | 112 + drivers/video/exynos/exynos_mipi_dsi_regs.h | 149 + drivers/video/exynos/s6e8ax0.c | 903 ++ drivers/video/fb-puv3.c | 841 ++ drivers/video/fb_ddc.c | 119 + drivers/video/fb_defio.c | 245 + drivers/video/fb_draw.h | 186 + drivers/video/fb_notify.c | 47 + drivers/video/fb_sys_fops.c | 104 + drivers/video/fbcmap.c | 367 + drivers/video/fbcvt.c | 379 + drivers/video/fbmem.c | 1980 ++++ drivers/video/fbmon.c | 1592 +++ drivers/video/fbsysfs.c | 579 + drivers/video/ffb.c | 1083 ++ drivers/video/fm2fb.c | 323 + drivers/video/fsl-diu-fb.c | 1992 ++++ drivers/video/g364fb.c | 255 + drivers/video/gbefb.c | 1313 +++ drivers/video/geode/Kconfig | 54 + drivers/video/geode/Makefile | 9 + drivers/video/geode/display_gx.c | 184 + drivers/video/geode/display_gx1.c | 214 + drivers/video/geode/display_gx1.h | 154 + drivers/video/geode/geodefb.h | 38 + drivers/video/geode/gx1fb_core.c | 477 + drivers/video/geode/gxfb.h | 358 + drivers/video/geode/gxfb_core.c | 548 + drivers/video/geode/lxfb.h | 452 + drivers/video/geode/lxfb_core.c | 685 ++ drivers/video/geode/lxfb_ops.c | 845 ++ drivers/video/geode/suspend_gx.c | 267 + drivers/video/geode/video_cs5530.c | 193 + drivers/video/geode/video_cs5530.h | 75 + drivers/video/geode/video_gx.c | 349 + drivers/video/goldfishfb.c | 318 + drivers/video/grvga.c | 576 + drivers/video/gxt4500.c | 784 ++ drivers/video/hdmi.c | 323 + drivers/video/hecubafb.c | 324 + drivers/video/hgafb.c | 668 ++ drivers/video/hitfb.c | 501 + drivers/video/hpfb.c | 430 + drivers/video/hyperv_fb.c | 867 ++ drivers/video/i740_reg.h | 309 + drivers/video/i740fb.c | 1336 +++ drivers/video/i810/Makefile | 17 + drivers/video/i810/i810-i2c.c | 175 + drivers/video/i810/i810.h | 299 + drivers/video/i810/i810_accel.c | 456 + drivers/video/i810/i810_dvt.c | 312 + drivers/video/i810/i810_gtf.c | 276 + drivers/video/i810/i810_main.c | 2221 ++++ drivers/video/i810/i810_main.h | 95 + drivers/video/i810/i810_regs.h | 275 + drivers/video/igafb.c | 580 + drivers/video/imsttfb.c | 1626 +++ drivers/video/imxfb.c | 1022 ++ drivers/video/intelfb/Makefile | 7 + drivers/video/intelfb/intelfb.h | 383 + drivers/video/intelfb/intelfb_i2c.c | 209 + drivers/video/intelfb/intelfbdrv.c | 1706 +++ drivers/video/intelfb/intelfbhw.c | 2121 ++++ drivers/video/intelfb/intelfbhw.h | 609 + drivers/video/jz4740_fb.c | 819 ++ drivers/video/kyro/Makefile | 8 + drivers/video/kyro/STG4000InitDevice.c | 326 + drivers/video/kyro/STG4000Interface.h | 61 + drivers/video/kyro/STG4000OverlayDevice.c | 601 + drivers/video/kyro/STG4000Ramdac.c | 163 + drivers/video/kyro/STG4000Reg.h | 283 + drivers/video/kyro/STG4000VTG.c | 170 + drivers/video/kyro/fbdev.c | 810 ++ drivers/video/leo.c | 693 ++ drivers/video/logo/.gitignore | 7 + drivers/video/logo/Kconfig | 85 + drivers/video/logo/Makefile | 61 + drivers/video/logo/clut_vga16.ppm | 20 + drivers/video/logo/logo.c | 106 + drivers/video/logo/logo_blackfin_clut224.ppm | 1127 ++ drivers/video/logo/logo_blackfin_vga16.ppm | 1127 ++ drivers/video/logo/logo_dec_clut224.ppm | 1604 +++ drivers/video/logo/logo_linux_clut224.ppm | 1604 +++ drivers/video/logo/logo_linux_mono.pbm | 203 + drivers/video/logo/logo_linux_vga16.ppm | 1604 +++ drivers/video/logo/logo_m32r_clut224.ppm | 1292 +++ drivers/video/logo/logo_mac_clut224.ppm | 1604 +++ drivers/video/logo/logo_parisc_clut224.ppm | 1604 +++ drivers/video/logo/logo_sgi_clut224.ppm | 1604 +++ drivers/video/logo/logo_spe_clut224.ppm | 283 + drivers/video/logo/logo_sun_clut224.ppm | 1604 +++ drivers/video/logo/logo_superh_clut224.ppm | 1604 +++ drivers/video/logo/logo_superh_mono.pbm | 203 + drivers/video/logo/logo_superh_vga16.ppm | 1604 +++ drivers/video/macfb.c | 930 ++ drivers/video/macmodes.c | 414 + drivers/video/macmodes.h | 71 + drivers/video/matrox/Makefile | 11 + drivers/video/matrox/g450_pll.c | 539 + drivers/video/matrox/g450_pll.h | 12 + drivers/video/matrox/i2c-matroxfb.c | 238 + drivers/video/matrox/matroxfb_DAC1064.c | 1107 ++ drivers/video/matrox/matroxfb_DAC1064.h | 179 + drivers/video/matrox/matroxfb_Ti3026.c | 745 ++ drivers/video/matrox/matroxfb_Ti3026.h | 11 + drivers/video/matrox/matroxfb_accel.c | 519 + drivers/video/matrox/matroxfb_accel.h | 8 + drivers/video/matrox/matroxfb_base.c | 2586 +++++ drivers/video/matrox/matroxfb_base.h | 735 ++ drivers/video/matrox/matroxfb_crtc2.c | 739 ++ drivers/video/matrox/matroxfb_crtc2.h | 34 + drivers/video/matrox/matroxfb_g450.c | 640 ++ drivers/video/matrox/matroxfb_g450.h | 14 + drivers/video/matrox/matroxfb_maven.c | 1313 +++ drivers/video/matrox/matroxfb_maven.h | 20 + drivers/video/matrox/matroxfb_misc.c | 815 ++ drivers/video/matrox/matroxfb_misc.h | 21 + drivers/video/maxinefb.c | 177 + drivers/video/mb862xx/Makefile | 8 + drivers/video/mb862xx/mb862xx-i2c.c | 179 + drivers/video/mb862xx/mb862xx_reg.h | 188 + drivers/video/mb862xx/mb862xxfb.h | 121 + drivers/video/mb862xx/mb862xxfb_accel.c | 335 + drivers/video/mb862xx/mb862xxfb_accel.h | 203 + drivers/video/mb862xx/mb862xxfbdrv.c | 1209 ++ drivers/video/mbx/Makefile | 4 + drivers/video/mbx/mbxdebugfs.c | 251 + drivers/video/mbx/mbxfb.c | 1053 ++ drivers/video/mbx/reg_bits.h | 613 + drivers/video/mbx/regs.h | 195 + drivers/video/metronomefb.c | 791 ++ drivers/video/mmp/Kconfig | 11 + drivers/video/mmp/Makefile | 1 + drivers/video/mmp/core.c | 256 + drivers/video/mmp/fb/Kconfig | 13 + drivers/video/mmp/fb/Makefile | 1 + drivers/video/mmp/fb/mmpfb.c | 685 ++ drivers/video/mmp/fb/mmpfb.h | 54 + drivers/video/mmp/hw/Kconfig | 20 + drivers/video/mmp/hw/Makefile | 2 + drivers/video/mmp/hw/mmp_ctrl.c | 591 + drivers/video/mmp/hw/mmp_ctrl.h | 1497 +++ drivers/video/mmp/hw/mmp_spi.c | 180 + drivers/video/mmp/panel/Kconfig | 6 + drivers/video/mmp/panel/Makefile | 1 + drivers/video/mmp/panel/tpo_tj032md01bw.c | 186 + drivers/video/modedb.c | 1137 ++ drivers/video/msm/Makefile | 19 + drivers/video/msm/mddi.c | 821 ++ drivers/video/msm/mddi_client_dummy.c | 98 + drivers/video/msm/mddi_client_nt35399.c | 252 + drivers/video/msm/mddi_client_toshiba.c | 280 + drivers/video/msm/mddi_hw.h | 305 + drivers/video/msm/mdp.c | 520 + drivers/video/msm/mdp_csc_table.h | 582 + drivers/video/msm/mdp_hw.h | 627 ++ drivers/video/msm/mdp_ppp.c | 731 ++ drivers/video/msm/mdp_scale_tables.c | 766 ++ drivers/video/msm/mdp_scale_tables.h | 38 + drivers/video/msm/msm_fb.c | 639 ++ drivers/video/mx3fb.c | 1630 +++ drivers/video/mxsfb.c | 1021 ++ drivers/video/n411.c | 202 + drivers/video/neofb.c | 2252 ++++ drivers/video/nuc900fb.c | 768 ++ drivers/video/nuc900fb.h | 55 + drivers/video/nvidia/Makefile | 13 + drivers/video/nvidia/nv_accel.c | 416 + drivers/video/nvidia/nv_backlight.c | 148 + drivers/video/nvidia/nv_dma.h | 188 + drivers/video/nvidia/nv_hw.c | 1687 +++ drivers/video/nvidia/nv_i2c.c | 171 + drivers/video/nvidia/nv_local.h | 114 + drivers/video/nvidia/nv_of.c | 82 + drivers/video/nvidia/nv_proto.h | 75 + drivers/video/nvidia/nv_setup.c | 675 ++ drivers/video/nvidia/nv_type.h | 180 + drivers/video/nvidia/nvidia.c | 1608 +++ drivers/video/of_display_timing.c | 238 + drivers/video/of_videomode.c | 54 + drivers/video/offb.c | 675 ++ drivers/video/omap/Kconfig | 52 + drivers/video/omap/Makefile | 26 + drivers/video/omap/hwa742.c | 1059 ++ drivers/video/omap/lcd_ams_delta.c | 225 + drivers/video/omap/lcd_h3.c | 127 + drivers/video/omap/lcd_htcherald.c | 118 + drivers/video/omap/lcd_inn1510.c | 113 + drivers/video/omap/lcd_inn1610.c | 134 + drivers/video/omap/lcd_mipid.c | 615 + drivers/video/omap/lcd_osk.c | 133 + drivers/video/omap/lcd_palmte.c | 110 + drivers/video/omap/lcd_palmtt.c | 116 + drivers/video/omap/lcd_palmz71.c | 112 + drivers/video/omap/lcdc.c | 856 ++ drivers/video/omap/lcdc.h | 9 + drivers/video/omap/omapfb.h | 246 + drivers/video/omap/omapfb_main.c | 1971 ++++ drivers/video/omap/sossi.c | 693 ++ drivers/video/omap2/Kconfig | 10 + drivers/video/omap2/Makefile | 5 + drivers/video/omap2/displays/Kconfig | 75 + drivers/video/omap2/displays/Makefile | 11 + drivers/video/omap2/displays/panel-acx565akm.c | 798 ++ drivers/video/omap2/displays/panel-generic-dpi.c | 744 ++ .../omap2/displays/panel-lgphilips-lb035q02.c | 262 + drivers/video/omap2/displays/panel-n8x0.c | 616 ++ .../omap2/displays/panel-nec-nl8048hl11-01b.c | 290 + drivers/video/omap2/displays/panel-picodlp.c | 561 + drivers/video/omap2/displays/panel-picodlp.h | 288 + .../video/omap2/displays/panel-sharp-ls037v7dw01.c | 198 + drivers/video/omap2/displays/panel-taal.c | 1551 +++ drivers/video/omap2/displays/panel-tfp410.c | 353 + .../video/omap2/displays/panel-tpo-td043mtea1.c | 596 + drivers/video/omap2/dss/Kconfig | 119 + drivers/video/omap2/dss/Makefile | 15 + drivers/video/omap2/dss/apply.c | 1678 +++ drivers/video/omap2/dss/core.c | 664 ++ drivers/video/omap2/dss/dispc-compat.c | 667 ++ drivers/video/omap2/dss/dispc-compat.h | 30 + drivers/video/omap2/dss/dispc.c | 3765 +++++++ drivers/video/omap2/dss/dispc.h | 897 ++ drivers/video/omap2/dss/dispc_coefs.c | 325 + drivers/video/omap2/dss/display-sysfs.c | 321 + drivers/video/omap2/dss/display.c | 221 + drivers/video/omap2/dss/dpi.c | 744 ++ drivers/video/omap2/dss/dsi.c | 5660 ++++++++++ drivers/video/omap2/dss/dss.c | 974 ++ drivers/video/omap2/dss/dss.h | 515 + drivers/video/omap2/dss/dss_features.c | 979 ++ drivers/video/omap2/dss/dss_features.h | 124 + drivers/video/omap2/dss/hdmi.c | 1175 ++ drivers/video/omap2/dss/hdmi_panel.c | 414 + drivers/video/omap2/dss/manager-sysfs.c | 512 + drivers/video/omap2/dss/manager.c | 248 + drivers/video/omap2/dss/output.c | 181 + drivers/video/omap2/dss/overlay-sysfs.c | 456 + drivers/video/omap2/dss/overlay.c | 207 + drivers/video/omap2/dss/rfbi.c | 1162 ++ drivers/video/omap2/dss/sdi.c | 403 + drivers/video/omap2/dss/ti_hdmi.h | 190 + drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c | 1430 +++ drivers/video/omap2/dss/ti_hdmi_4xxx_ip.h | 436 + drivers/video/omap2/dss/venc.c | 950 ++ drivers/video/omap2/dss/venc_panel.c | 232 + drivers/video/omap2/omapfb/Kconfig | 27 + drivers/video/omap2/omapfb/Makefile | 2 + drivers/video/omap2/omapfb/omapfb-ioctl.c | 917 ++ drivers/video/omap2/omapfb/omapfb-main.c | 2603 +++++ drivers/video/omap2/omapfb/omapfb-sysfs.c | 605 + drivers/video/omap2/omapfb/omapfb.h | 208 + drivers/video/omap2/vrfb.c | 399 + drivers/video/output.c | 133 + drivers/video/p9100.c | 384 + drivers/video/platinumfb.c | 715 ++ drivers/video/platinumfb.h | 368 + drivers/video/pm2fb.c | 1859 ++++ drivers/video/pm3fb.c | 1588 +++ drivers/video/pmag-aa-fb.c | 510 + drivers/video/pmag-ba-fb.c | 295 + drivers/video/pmagb-b-fb.c | 414 + drivers/video/ps3fb.c | 1307 +++ drivers/video/pvr2fb.c | 1141 ++ drivers/video/pxa168fb.c | 837 ++ drivers/video/pxa168fb.h | 558 + drivers/video/pxa3xx-gcu.c | 756 ++ drivers/video/pxa3xx-gcu.h | 38 + drivers/video/pxafb.c | 2333 ++++ drivers/video/pxafb.h | 200 + drivers/video/q40fb.c | 156 + drivers/video/riva/Makefile | 11 + drivers/video/riva/fbdev.c | 2236 ++++ drivers/video/riva/nv_driver.c | 422 + drivers/video/riva/nv_type.h | 58 + drivers/video/riva/nvreg.h | 188 + drivers/video/riva/riva_hw.c | 2268 ++++ drivers/video/riva/riva_hw.h | 563 + drivers/video/riva/riva_tbl.h | 1008 ++ drivers/video/riva/rivafb-i2c.c | 166 + drivers/video/riva/rivafb.h | 77 + drivers/video/s1d13xxxfb.c | 1041 ++ drivers/video/s3c-fb.c | 2049 ++++ drivers/video/s3c2410fb.c | 1148 ++ drivers/video/s3c2410fb.h | 48 + drivers/video/s3fb.c | 1603 +++ drivers/video/sa1100fb.c | 1341 +++ drivers/video/sa1100fb.h | 96 + drivers/video/savage/Makefile | 9 + drivers/video/savage/savagefb-i2c.c | 241 + drivers/video/savage/savagefb.h | 415 + drivers/video/savage/savagefb_accel.c | 137 + drivers/video/savage/savagefb_driver.c | 2577 +++++ drivers/video/sbuslib.c | 267 + drivers/video/sbuslib.h | 27 + drivers/video/sgivwfb.c | 889 ++ drivers/video/sh7760fb.c | 592 + drivers/video/sh_mipi_dsi.c | 588 + drivers/video/sh_mobile_hdmi.c | 1452 +++ drivers/video/sh_mobile_lcdcfb.c | 2861 +++++ drivers/video/sh_mobile_lcdcfb.h | 112 + drivers/video/sh_mobile_meram.c | 757 ++ drivers/video/simplefb.c | 234 + drivers/video/sis/300vtbl.h | 1072 ++ drivers/video/sis/310vtbl.h | 1339 +++ drivers/video/sis/Makefile | 7 + drivers/video/sis/init.c | 3655 ++++++ drivers/video/sis/init.h | 1541 +++ drivers/video/sis/init301.c | 11071 +++++++++++++++++++ drivers/video/sis/init301.h | 456 + drivers/video/sis/initdef.h | 708 ++ drivers/video/sis/initextlfb.c | 231 + drivers/video/sis/oem300.h | 840 ++ drivers/video/sis/oem310.h | 430 + drivers/video/sis/sis.h | 586 + drivers/video/sis/sis_accel.c | 423 + drivers/video/sis/sis_accel.h | 400 + drivers/video/sis/sis_main.c | 6848 ++++++++++++ drivers/video/sis/sis_main.h | 781 ++ drivers/video/sis/vgatypes.h | 97 + drivers/video/sis/vstruct.h | 551 + drivers/video/skeletonfb.c | 1038 ++ drivers/video/sm501fb.c | 2240 ++++ drivers/video/smscufx.c | 1980 ++++ drivers/video/sprdfb/Kconfig | 363 + drivers/video/sprdfb/Makefile | 35 + drivers/video/sprdfb/dsi_1_10a/Makefile | 2 + drivers/video/sprdfb/dsi_1_10a/mipi_dsih_api.c | 1216 ++ drivers/video/sprdfb/dsi_1_10a/mipi_dsih_api.h | 113 + drivers/video/sprdfb/dsi_1_10a/mipi_dsih_dphy.c | 1031 ++ drivers/video/sprdfb/dsi_1_10a/mipi_dsih_dphy.h | 55 + drivers/video/sprdfb/dsi_1_10a/mipi_dsih_hal.c | 529 + drivers/video/sprdfb/dsi_1_10a/mipi_dsih_hal.h | 242 + drivers/video/sprdfb/dsi_1_10a/mipi_dsih_local.h | 227 + drivers/video/sprdfb/dsi_1_21a/Makefile | 12 + drivers/video/sprdfb/dsi_1_21a/mipi_dsih_api.c | 1750 +++ drivers/video/sprdfb/dsi_1_21a/mipi_dsih_api.h | 134 + drivers/video/sprdfb/dsi_1_21a/mipi_dsih_dphy.c | 1080 ++ drivers/video/sprdfb/dsi_1_21a/mipi_dsih_dphy.h | 61 + .../sprdfb/dsi_1_21a/mipi_dsih_dphy_megacores.c | 1166 ++ drivers/video/sprdfb/dsi_1_21a/mipi_dsih_hal.c | 1114 ++ drivers/video/sprdfb/dsi_1_21a/mipi_dsih_hal.h | 1807 +++ drivers/video/sprdfb/dsi_1_21a/mipi_dsih_local.h | 361 + drivers/video/sprdfb/lcd/Makefile | 50 + drivers/video/sprdfb/lcd/lcd_dummy.c | 104 + drivers/video/sprdfb/lcd/lcd_fl10802_mipi.c | 364 + drivers/video/sprdfb/lcd/lcd_hx8363_mcu.c | 406 + drivers/video/sprdfb/lcd/lcd_hx8363_rgb_spi.c | 445 + drivers/video/sprdfb/lcd/lcd_hx8363_rgb_spi_viva.c | 442 + drivers/video/sprdfb/lcd/lcd_hx8369.c | 391 + .../video/sprdfb/lcd/lcd_hx8369b_grandneo_mipi.c | 338 + drivers/video/sprdfb/lcd/lcd_hx8369b_mipi.c | 348 + .../sprdfb/lcd/lcd_hx8369b_mipi_coreprimelite.c | 348 + .../lcd/lcd_hx8369b_mipi_coreprimelite_marlin.c | 348 + .../video/sprdfb/lcd/lcd_hx8369b_mipi_kiran3g.c | 384 + .../sprdfb/lcd/lcd_hx8369b_mipi_sharkls_z3lte.c | 348 + .../video/sprdfb/lcd/lcd_hx8369b_mipi_vivaltoVE.c | 283 + .../video/sprdfb/lcd/lcd_hx8369b_tshark2_j3_mipi.c | 290 + drivers/video/sprdfb/lcd/lcd_hx8379a_mipi.c | 312 + drivers/video/sprdfb/lcd/lcd_hx8389c_mipi.c | 318 + drivers/video/sprdfb/lcd/lcd_hx8394a_mipi.c | 295 + drivers/video/sprdfb/lcd/lcd_hx8394d_mipi.c | 430 + drivers/video/sprdfb/lcd/lcd_ili6150_lvds.c | 81 + drivers/video/sprdfb/lcd/lcd_ili9341.c | 428 + drivers/video/sprdfb/lcd/lcd_ili9486.c | 434 + drivers/video/sprdfb/lcd/lcd_ili9486_rgb_spi.c | 397 + drivers/video/sprdfb/lcd/lcd_ili9486s1_mipi.c | 268 + drivers/video/sprdfb/lcd/lcd_ili9806e_2_mipi.c | 487 + drivers/video/sprdfb/lcd/lcd_ili9806e_mipi.c | 632 ++ drivers/video/sprdfb/lcd/lcd_jd9161_mipi.c | 380 + drivers/video/sprdfb/lcd/lcd_nt35502_mipi.c | 300 + drivers/video/sprdfb/lcd/lcd_nt35510_mipi.c | 291 + drivers/video/sprdfb/lcd/lcd_nt35512_mipi.c | 183 + drivers/video/sprdfb/lcd/lcd_nt35516_mcu.c | 585 + drivers/video/sprdfb/lcd/lcd_nt35516_mipi.c | 441 + drivers/video/sprdfb/lcd/lcd_nt35516_rgb_i2c.c | 623 ++ drivers/video/sprdfb/lcd/lcd_nt35516_rgb_spi.c | 624 ++ drivers/video/sprdfb/lcd/lcd_nt35596h_mipi.c | 841 ++ drivers/video/sprdfb/lcd/lcd_nt51017_goyal_mipi.c | 296 + drivers/video/sprdfb/lcd/lcd_nt51017_mipi_lvds.c | 589 + drivers/video/sprdfb/lcd/lcd_otm1283a_mipi.c | 560 + drivers/video/sprdfb/lcd/lcd_otm8019a_mipi.c | 516 + drivers/video/sprdfb/lcd/lcd_otm_8018b_mipi.c | 296 + drivers/video/sprdfb/lcd/lcd_rm68180_mipi.c | 383 + drivers/video/sprdfb/lcd/lcd_s6d0139.c | 244 + drivers/video/sprdfb/lcd/lcd_s6d77a1_pikeA_mipi.c | 330 + drivers/video/sprdfb/lcd/lcd_s6d7aa0x62_t8_mipi.c | 350 + drivers/video/sprdfb/lcd/lcd_sc7798_rgb_spi.c | 561 + drivers/video/sprdfb/lcd/lcd_sd7798d_mipi.c | 261 + .../sprdfb/lcd/lcd_sd7798d_mipi_sharkls_z3lte.c | 261 + drivers/video/sprdfb/lcd/lcd_ssd2075_mipi.c | 375 + drivers/video/sprdfb/lcd/lcd_st7789v_mcu.c | 336 + drivers/video/sprdfb/lcd/lcd_t8861_mipi.c | 485 + drivers/video/sprdfb/lcd/lcd_vx5b3d_mipi.c | 965 ++ drivers/video/sprdfb/spi/Makefile | 7 + drivers/video/sprdfb/spi/spi_simple_drv.c | 358 + drivers/video/sprdfb/spi/spi_simple_drv.h | 178 + drivers/video/sprdfb/sprdfb.h | 289 + drivers/video/sprdfb/sprdfb_attr.c | 429 + drivers/video/sprdfb/sprdfb_chip_7715.c | 35 + drivers/video/sprdfb/sprdfb_chip_7715.h | 116 + drivers/video/sprdfb/sprdfb_chip_8830.c | 80 + drivers/video/sprdfb/sprdfb_chip_8830.h | 135 + drivers/video/sprdfb/sprdfb_chip_9630.c | 58 + drivers/video/sprdfb/sprdfb_chip_9630.h | 129 + drivers/video/sprdfb/sprdfb_chip_common.c | 23 + drivers/video/sprdfb/sprdfb_chip_common.h | 58 + drivers/video/sprdfb/sprdfb_dispc.c | 2446 ++++ drivers/video/sprdfb/sprdfb_dispc_reg.h | 169 + drivers/video/sprdfb/sprdfb_dsi.c | 1010 ++ drivers/video/sprdfb/sprdfb_gpio2spi.c | 199 + drivers/video/sprdfb/sprdfb_i2c.c | 333 + drivers/video/sprdfb/sprdfb_main.c | 888 ++ drivers/video/sprdfb/sprdfb_mcu.c | 563 + drivers/video/sprdfb/sprdfb_mipi.c | 231 + drivers/video/sprdfb/sprdfb_panel.c | 683 ++ drivers/video/sprdfb/sprdfb_panel.h | 324 + drivers/video/sprdfb/sprdfb_rgb.c | 277 + drivers/video/sprdfb/sprdfb_spi.c | 153 + drivers/video/ssd1307fb.c | 397 + drivers/video/sstfb.c | 1532 +++ drivers/video/sticore.h | 401 + drivers/video/stifb.c | 1419 +++ drivers/video/sunxvr1000.c | 231 + drivers/video/sunxvr2500.c | 276 + drivers/video/sunxvr500.c | 462 + drivers/video/svgalib.c | 672 ++ drivers/video/syscopyarea.c | 377 + drivers/video/sysfillrect.c | 335 + drivers/video/sysimgblt.c | 288 + drivers/video/tcx.c | 543 + drivers/video/tdfxfb.c | 1687 +++ drivers/video/tgafb.c | 1617 +++ drivers/video/tmiofb.c | 1052 ++ drivers/video/tridentfb.c | 1660 +++ drivers/video/udlfb.c | 1985 ++++ drivers/video/uvesafb.c | 2078 ++++ drivers/video/valkyriefb.c | 590 + drivers/video/valkyriefb.h | 200 + drivers/video/vermilion/Makefile | 5 + drivers/video/vermilion/cr_pll.c | 208 + drivers/video/vermilion/vermilion.c | 1176 ++ drivers/video/vermilion/vermilion.h | 259 + drivers/video/vesafb.c | 535 + drivers/video/vexpress-dvi.c | 220 + drivers/video/vfb.c | 612 + drivers/video/vga16fb.c | 1467 +++ drivers/video/vgastate.c | 490 + drivers/video/via/Makefile | 12 + drivers/video/via/accel.c | 547 + drivers/video/via/accel.h | 211 + drivers/video/via/chip.h | 176 + drivers/video/via/debug.h | 41 + drivers/video/via/dvi.c | 478 + drivers/video/via/dvi.h | 65 + drivers/video/via/global.c | 50 + drivers/video/via/global.h | 80 + drivers/video/via/hw.c | 2134 ++++ drivers/video/via/hw.h | 676 ++ drivers/video/via/ioctl.c | 116 + drivers/video/via/ioctl.h | 203 + drivers/video/via/lcd.c | 1005 ++ drivers/video/via/lcd.h | 89 + drivers/video/via/share.h | 332 + drivers/video/via/tblDPASetting.c | 86 + drivers/video/via/tblDPASetting.h | 45 + drivers/video/via/via-core.c | 790 ++ drivers/video/via/via-gpio.c | 316 + drivers/video/via/via_aux.c | 88 + drivers/video/via/via_aux.h | 93 + drivers/video/via/via_aux_ch7301.c | 50 + drivers/video/via/via_aux_edid.c | 100 + drivers/video/via/via_aux_sii164.c | 54 + drivers/video/via/via_aux_vt1621.c | 44 + drivers/video/via/via_aux_vt1622.c | 50 + drivers/video/via/via_aux_vt1625.c | 50 + drivers/video/via/via_aux_vt1631.c | 46 + drivers/video/via/via_aux_vt1632.c | 54 + drivers/video/via/via_aux_vt1636.c | 46 + drivers/video/via/via_clock.c | 368 + drivers/video/via/via_clock.h | 76 + drivers/video/via/via_i2c.c | 295 + drivers/video/via/via_modesetting.c | 230 + drivers/video/via/via_modesetting.h | 61 + drivers/video/via/via_utility.c | 242 + drivers/video/via/via_utility.h | 34 + drivers/video/via/viafbdev.c | 2176 ++++ drivers/video/via/viafbdev.h | 110 + drivers/video/via/viamode.c | 383 + drivers/video/via/viamode.h | 63 + drivers/video/via/vt1636.c | 244 + drivers/video/via/vt1636.h | 44 + drivers/video/videomode.c | 45 + drivers/video/vt8500lcdfb.c | 506 + drivers/video/vt8500lcdfb.h | 34 + drivers/video/vt8623fb.c | 957 ++ drivers/video/w100fb.c | 1638 +++ drivers/video/w100fb.h | 928 ++ drivers/video/wm8505fb.c | 423 + drivers/video/wm8505fb_regs.h | 76 + drivers/video/wmt_ge_rops.c | 182 + drivers/video/wmt_ge_rops.h | 28 + drivers/video/xen-fbfront.c | 715 ++ drivers/video/xilinxfb.c | 518 + 699 files changed, 437368 insertions(+) create mode 100644 drivers/video/68328fb.c create mode 100644 drivers/video/Kconfig create mode 100644 drivers/video/Makefile create mode 100644 drivers/video/acornfb.c create mode 100644 drivers/video/acornfb.h create mode 100644 drivers/video/adf/Kconfig create mode 100644 drivers/video/adf/Makefile create mode 100644 drivers/video/adf/adf.c create mode 100644 drivers/video/adf/adf.h create mode 100644 drivers/video/adf/adf_client.c create mode 100644 drivers/video/adf/adf_fbdev.c create mode 100644 drivers/video/adf/adf_fops.c create mode 100644 drivers/video/adf/adf_fops.h create mode 100644 drivers/video/adf/adf_fops32.c create mode 100644 drivers/video/adf/adf_fops32.h create mode 100644 drivers/video/adf/adf_format.c create mode 100644 drivers/video/adf/adf_memblock.c create mode 100644 drivers/video/adf/adf_sysfs.c create mode 100644 drivers/video/adf/adf_sysfs.h create mode 100644 drivers/video/adf/adf_trace.h create mode 100644 drivers/video/amba-clcd.c create mode 100644 drivers/video/amifb.c create mode 100644 drivers/video/arcfb.c create mode 100644 drivers/video/arkfb.c create mode 100644 drivers/video/arm-hdlcd.c create mode 100644 drivers/video/asiliantfb.c create mode 100644 drivers/video/atafb.c create mode 100644 drivers/video/atafb.h create mode 100644 drivers/video/atafb_iplan2p2.c create mode 100644 drivers/video/atafb_iplan2p4.c create mode 100644 drivers/video/atafb_iplan2p8.c create mode 100644 drivers/video/atafb_mfb.c create mode 100644 drivers/video/atafb_utils.h create mode 100644 drivers/video/atmel_lcdfb.c create mode 100644 drivers/video/aty/Makefile create mode 100644 drivers/video/aty/ati_ids.h create mode 100644 drivers/video/aty/aty128fb.c create mode 100644 drivers/video/aty/atyfb.h create mode 100644 drivers/video/aty/atyfb_base.c create mode 100644 drivers/video/aty/mach64_accel.c create mode 100644 drivers/video/aty/mach64_ct.c create mode 100644 drivers/video/aty/mach64_cursor.c create mode 100644 drivers/video/aty/mach64_gx.c create mode 100644 drivers/video/aty/radeon_accel.c create mode 100644 drivers/video/aty/radeon_backlight.c create mode 100644 drivers/video/aty/radeon_base.c create mode 100644 drivers/video/aty/radeon_i2c.c create mode 100644 drivers/video/aty/radeon_monitor.c create mode 100644 drivers/video/aty/radeon_pm.c create mode 100644 drivers/video/aty/radeonfb.h create mode 100644 drivers/video/au1100fb.c create mode 100644 drivers/video/au1100fb.h create mode 100644 drivers/video/au1200fb.c create mode 100644 drivers/video/au1200fb.h create mode 100644 drivers/video/auo_k1900fb.c create mode 100644 drivers/video/auo_k1901fb.c create mode 100644 drivers/video/auo_k190x.c create mode 100644 drivers/video/auo_k190x.h create mode 100644 drivers/video/backlight/88pm860x_bl.c create mode 100644 drivers/video/backlight/Kconfig create mode 100644 drivers/video/backlight/Makefile create mode 100644 drivers/video/backlight/aat2870_bl.c create mode 100644 drivers/video/backlight/adp5520_bl.c create mode 100644 drivers/video/backlight/adp8860_bl.c create mode 100644 drivers/video/backlight/adp8870_bl.c create mode 100644 drivers/video/backlight/ams369fg06.c create mode 100644 drivers/video/backlight/apple_bl.c create mode 100644 drivers/video/backlight/as3711_bl.c create mode 100644 drivers/video/backlight/atmel-pwm-bl.c create mode 100644 drivers/video/backlight/backlight.c create mode 100644 drivers/video/backlight/corgi_lcd.c create mode 100644 drivers/video/backlight/cr_bllcd.c create mode 100644 drivers/video/backlight/da903x_bl.c create mode 100644 drivers/video/backlight/da9052_bl.c create mode 100644 drivers/video/backlight/ep93xx_bl.c create mode 100644 drivers/video/backlight/generic_bl.c create mode 100644 drivers/video/backlight/hp680_bl.c create mode 100644 drivers/video/backlight/hx8357.c create mode 100644 drivers/video/backlight/ili922x.c create mode 100644 drivers/video/backlight/ili9320.c create mode 100644 drivers/video/backlight/ili9320.h create mode 100644 drivers/video/backlight/jornada720_bl.c create mode 100644 drivers/video/backlight/jornada720_lcd.c create mode 100644 drivers/video/backlight/kb3886_bl.c create mode 100644 drivers/video/backlight/ktd253b_bl.c create mode 100644 drivers/video/backlight/ktd2801_bl.c create mode 100644 drivers/video/backlight/l4f00242t03.c create mode 100644 drivers/video/backlight/lcd.c create mode 100755 drivers/video/backlight/lcd_panel_cabc_pwm_bl.c create mode 100644 drivers/video/backlight/ld9040.c create mode 100644 drivers/video/backlight/ld9040_gamma.h create mode 100644 drivers/video/backlight/lm3533_bl.c create mode 100644 drivers/video/backlight/lm3630_bl.c create mode 100755 drivers/video/backlight/lm3632_bl.c create mode 100644 drivers/video/backlight/lm3639_bl.c create mode 100644 drivers/video/backlight/lms283gf05.c create mode 100644 drivers/video/backlight/lms501kf03.c create mode 100644 drivers/video/backlight/locomolcd.c create mode 100644 drivers/video/backlight/lp855x_bl.c create mode 100644 drivers/video/backlight/lp8788_bl.c create mode 100644 drivers/video/backlight/ltv350qv.c create mode 100644 drivers/video/backlight/ltv350qv.h create mode 100644 drivers/video/backlight/max8925_bl.c create mode 100644 drivers/video/backlight/omap1_bl.c create mode 100644 drivers/video/backlight/ot200_bl.c create mode 100644 drivers/video/backlight/pandora_bl.c create mode 100644 drivers/video/backlight/pcf50633-backlight.c create mode 100644 drivers/video/backlight/platform_lcd.c create mode 100644 drivers/video/backlight/pwm_bl.c create mode 100644 drivers/video/backlight/rt4502_bl.c create mode 100644 drivers/video/backlight/s6e63m0.c create mode 100644 drivers/video/backlight/s6e63m0_gamma.h create mode 100644 drivers/video/backlight/sprd_backlight.c create mode 100644 drivers/video/backlight/sprd_pwm_bl.c create mode 100644 drivers/video/backlight/tdo24m.c create mode 100644 drivers/video/backlight/tosa_bl.c create mode 100644 drivers/video/backlight/tosa_lcd.c create mode 100644 drivers/video/backlight/tps65217_bl.c create mode 100644 drivers/video/backlight/vgg2432a4.c create mode 100644 drivers/video/backlight/wm831x_bl.c create mode 100644 drivers/video/bf537-lq035.c create mode 100644 drivers/video/bf54x-lq043fb.c create mode 100644 drivers/video/bfin-lq035q1-fb.c create mode 100644 drivers/video/bfin-t350mcqb-fb.c create mode 100644 drivers/video/bfin_adv7393fb.c create mode 100644 drivers/video/bfin_adv7393fb.h create mode 100644 drivers/video/broadsheetfb.c create mode 100644 drivers/video/bt431.h create mode 100644 drivers/video/bt455.h create mode 100644 drivers/video/bw2.c create mode 100644 drivers/video/c2p.h create mode 100644 drivers/video/c2p_core.h create mode 100644 drivers/video/c2p_iplan2.c create mode 100644 drivers/video/c2p_planar.c create mode 100644 drivers/video/carminefb.c create mode 100644 drivers/video/carminefb.h create mode 100644 drivers/video/carminefb_regs.h create mode 100644 drivers/video/cfbcopyarea.c create mode 100644 drivers/video/cfbfillrect.c create mode 100644 drivers/video/cfbimgblt.c create mode 100644 drivers/video/cg14.c create mode 100644 drivers/video/cg3.c create mode 100644 drivers/video/cg6.c create mode 100644 drivers/video/chipsfb.c create mode 100644 drivers/video/cirrusfb.c create mode 100644 drivers/video/clps711xfb.c create mode 100644 drivers/video/cobalt_lcdfb.c create mode 100644 drivers/video/console/Kconfig create mode 100644 drivers/video/console/Makefile create mode 100644 drivers/video/console/bitblit.c create mode 100644 drivers/video/console/dummycon.c create mode 100644 drivers/video/console/fbcon.c create mode 100644 drivers/video/console/fbcon.h create mode 100644 drivers/video/console/fbcon_ccw.c create mode 100644 drivers/video/console/fbcon_cw.c create mode 100644 drivers/video/console/fbcon_rotate.c create mode 100644 drivers/video/console/fbcon_rotate.h create mode 100644 drivers/video/console/fbcon_ud.c create mode 100644 drivers/video/console/font_10x18.c create mode 100644 drivers/video/console/font_6x11.c create mode 100644 drivers/video/console/font_7x14.c create mode 100644 drivers/video/console/font_8x16.c create mode 100644 drivers/video/console/font_8x8.c create mode 100644 drivers/video/console/font_acorn_8x8.c create mode 100644 drivers/video/console/font_mini_4x6.c create mode 100644 drivers/video/console/font_pearl_8x8.c create mode 100644 drivers/video/console/font_sun12x22.c create mode 100644 drivers/video/console/font_sun8x16.c create mode 100644 drivers/video/console/fonts.c create mode 100644 drivers/video/console/mdacon.c create mode 100644 drivers/video/console/newport_con.c create mode 100644 drivers/video/console/softcursor.c create mode 100644 drivers/video/console/sticon.c create mode 100644 drivers/video/console/sticore.c create mode 100644 drivers/video/console/tileblit.c create mode 100644 drivers/video/console/vgacon.c create mode 100644 drivers/video/controlfb.c create mode 100644 drivers/video/controlfb.h create mode 100644 drivers/video/cyber2000fb.c create mode 100644 drivers/video/cyber2000fb.h create mode 100644 drivers/video/da8xx-fb.c create mode 100644 drivers/video/display_timing.c create mode 100644 drivers/video/dnfb.c create mode 100644 drivers/video/edid.h create mode 100644 drivers/video/efifb.c create mode 100644 drivers/video/ep93xx-fb.c create mode 100644 drivers/video/exynos/Kconfig create mode 100644 drivers/video/exynos/Makefile create mode 100644 drivers/video/exynos/exynos_dp_core.c create mode 100644 drivers/video/exynos/exynos_dp_core.h create mode 100644 drivers/video/exynos/exynos_dp_reg.c create mode 100644 drivers/video/exynos/exynos_dp_reg.h create mode 100644 drivers/video/exynos/exynos_mipi_dsi.c create mode 100644 drivers/video/exynos/exynos_mipi_dsi_common.c create mode 100644 drivers/video/exynos/exynos_mipi_dsi_common.h create mode 100644 drivers/video/exynos/exynos_mipi_dsi_lowlevel.c create mode 100644 drivers/video/exynos/exynos_mipi_dsi_lowlevel.h create mode 100644 drivers/video/exynos/exynos_mipi_dsi_regs.h create mode 100644 drivers/video/exynos/s6e8ax0.c create mode 100644 drivers/video/fb-puv3.c create mode 100644 drivers/video/fb_ddc.c create mode 100644 drivers/video/fb_defio.c create mode 100644 drivers/video/fb_draw.h create mode 100644 drivers/video/fb_notify.c create mode 100644 drivers/video/fb_sys_fops.c create mode 100644 drivers/video/fbcmap.c create mode 100644 drivers/video/fbcvt.c create mode 100644 drivers/video/fbmem.c create mode 100644 drivers/video/fbmon.c create mode 100644 drivers/video/fbsysfs.c create mode 100644 drivers/video/ffb.c create mode 100644 drivers/video/fm2fb.c create mode 100644 drivers/video/fsl-diu-fb.c create mode 100644 drivers/video/g364fb.c create mode 100644 drivers/video/gbefb.c create mode 100644 drivers/video/geode/Kconfig create mode 100644 drivers/video/geode/Makefile create mode 100644 drivers/video/geode/display_gx.c create mode 100644 drivers/video/geode/display_gx1.c create mode 100644 drivers/video/geode/display_gx1.h create mode 100644 drivers/video/geode/geodefb.h create mode 100644 drivers/video/geode/gx1fb_core.c create mode 100644 drivers/video/geode/gxfb.h create mode 100644 drivers/video/geode/gxfb_core.c create mode 100644 drivers/video/geode/lxfb.h create mode 100644 drivers/video/geode/lxfb_core.c create mode 100644 drivers/video/geode/lxfb_ops.c create mode 100644 drivers/video/geode/suspend_gx.c create mode 100644 drivers/video/geode/video_cs5530.c create mode 100644 drivers/video/geode/video_cs5530.h create mode 100644 drivers/video/geode/video_gx.c create mode 100644 drivers/video/goldfishfb.c create mode 100644 drivers/video/grvga.c create mode 100644 drivers/video/gxt4500.c create mode 100644 drivers/video/hdmi.c create mode 100644 drivers/video/hecubafb.c create mode 100644 drivers/video/hgafb.c create mode 100644 drivers/video/hitfb.c create mode 100644 drivers/video/hpfb.c create mode 100644 drivers/video/hyperv_fb.c create mode 100644 drivers/video/i740_reg.h create mode 100644 drivers/video/i740fb.c create mode 100644 drivers/video/i810/Makefile create mode 100644 drivers/video/i810/i810-i2c.c create mode 100644 drivers/video/i810/i810.h create mode 100644 drivers/video/i810/i810_accel.c create mode 100644 drivers/video/i810/i810_dvt.c create mode 100644 drivers/video/i810/i810_gtf.c create mode 100644 drivers/video/i810/i810_main.c create mode 100644 drivers/video/i810/i810_main.h create mode 100644 drivers/video/i810/i810_regs.h create mode 100644 drivers/video/igafb.c create mode 100644 drivers/video/imsttfb.c create mode 100644 drivers/video/imxfb.c create mode 100644 drivers/video/intelfb/Makefile create mode 100644 drivers/video/intelfb/intelfb.h create mode 100644 drivers/video/intelfb/intelfb_i2c.c create mode 100644 drivers/video/intelfb/intelfbdrv.c create mode 100644 drivers/video/intelfb/intelfbhw.c create mode 100644 drivers/video/intelfb/intelfbhw.h create mode 100644 drivers/video/jz4740_fb.c create mode 100644 drivers/video/kyro/Makefile create mode 100644 drivers/video/kyro/STG4000InitDevice.c create mode 100644 drivers/video/kyro/STG4000Interface.h create mode 100644 drivers/video/kyro/STG4000OverlayDevice.c create mode 100644 drivers/video/kyro/STG4000Ramdac.c create mode 100644 drivers/video/kyro/STG4000Reg.h create mode 100644 drivers/video/kyro/STG4000VTG.c create mode 100644 drivers/video/kyro/fbdev.c create mode 100644 drivers/video/leo.c create mode 100644 drivers/video/logo/.gitignore create mode 100644 drivers/video/logo/Kconfig create mode 100644 drivers/video/logo/Makefile create mode 100644 drivers/video/logo/clut_vga16.ppm create mode 100644 drivers/video/logo/logo.c create mode 100644 drivers/video/logo/logo_blackfin_clut224.ppm create mode 100644 drivers/video/logo/logo_blackfin_vga16.ppm create mode 100644 drivers/video/logo/logo_dec_clut224.ppm create mode 100644 drivers/video/logo/logo_linux_clut224.ppm create mode 100644 drivers/video/logo/logo_linux_mono.pbm create mode 100644 drivers/video/logo/logo_linux_vga16.ppm create mode 100644 drivers/video/logo/logo_m32r_clut224.ppm create mode 100644 drivers/video/logo/logo_mac_clut224.ppm create mode 100644 drivers/video/logo/logo_parisc_clut224.ppm create mode 100644 drivers/video/logo/logo_sgi_clut224.ppm create mode 100644 drivers/video/logo/logo_spe_clut224.ppm create mode 100644 drivers/video/logo/logo_sun_clut224.ppm create mode 100644 drivers/video/logo/logo_superh_clut224.ppm create mode 100644 drivers/video/logo/logo_superh_mono.pbm create mode 100644 drivers/video/logo/logo_superh_vga16.ppm create mode 100644 drivers/video/macfb.c create mode 100644 drivers/video/macmodes.c create mode 100644 drivers/video/macmodes.h create mode 100644 drivers/video/matrox/Makefile create mode 100644 drivers/video/matrox/g450_pll.c create mode 100644 drivers/video/matrox/g450_pll.h create mode 100644 drivers/video/matrox/i2c-matroxfb.c create mode 100644 drivers/video/matrox/matroxfb_DAC1064.c create mode 100644 drivers/video/matrox/matroxfb_DAC1064.h create mode 100644 drivers/video/matrox/matroxfb_Ti3026.c create mode 100644 drivers/video/matrox/matroxfb_Ti3026.h create mode 100644 drivers/video/matrox/matroxfb_accel.c create mode 100644 drivers/video/matrox/matroxfb_accel.h create mode 100644 drivers/video/matrox/matroxfb_base.c create mode 100644 drivers/video/matrox/matroxfb_base.h create mode 100644 drivers/video/matrox/matroxfb_crtc2.c create mode 100644 drivers/video/matrox/matroxfb_crtc2.h create mode 100644 drivers/video/matrox/matroxfb_g450.c create mode 100644 drivers/video/matrox/matroxfb_g450.h create mode 100644 drivers/video/matrox/matroxfb_maven.c create mode 100644 drivers/video/matrox/matroxfb_maven.h create mode 100644 drivers/video/matrox/matroxfb_misc.c create mode 100644 drivers/video/matrox/matroxfb_misc.h create mode 100644 drivers/video/maxinefb.c create mode 100644 drivers/video/mb862xx/Makefile create mode 100644 drivers/video/mb862xx/mb862xx-i2c.c create mode 100644 drivers/video/mb862xx/mb862xx_reg.h create mode 100644 drivers/video/mb862xx/mb862xxfb.h create mode 100644 drivers/video/mb862xx/mb862xxfb_accel.c create mode 100644 drivers/video/mb862xx/mb862xxfb_accel.h create mode 100644 drivers/video/mb862xx/mb862xxfbdrv.c create mode 100644 drivers/video/mbx/Makefile create mode 100644 drivers/video/mbx/mbxdebugfs.c create mode 100644 drivers/video/mbx/mbxfb.c create mode 100644 drivers/video/mbx/reg_bits.h create mode 100644 drivers/video/mbx/regs.h create mode 100644 drivers/video/metronomefb.c create mode 100644 drivers/video/mmp/Kconfig create mode 100644 drivers/video/mmp/Makefile create mode 100644 drivers/video/mmp/core.c create mode 100644 drivers/video/mmp/fb/Kconfig create mode 100644 drivers/video/mmp/fb/Makefile create mode 100644 drivers/video/mmp/fb/mmpfb.c create mode 100644 drivers/video/mmp/fb/mmpfb.h create mode 100644 drivers/video/mmp/hw/Kconfig create mode 100644 drivers/video/mmp/hw/Makefile create mode 100644 drivers/video/mmp/hw/mmp_ctrl.c create mode 100644 drivers/video/mmp/hw/mmp_ctrl.h create mode 100644 drivers/video/mmp/hw/mmp_spi.c create mode 100644 drivers/video/mmp/panel/Kconfig create mode 100644 drivers/video/mmp/panel/Makefile create mode 100644 drivers/video/mmp/panel/tpo_tj032md01bw.c create mode 100644 drivers/video/modedb.c create mode 100644 drivers/video/msm/Makefile create mode 100644 drivers/video/msm/mddi.c create mode 100644 drivers/video/msm/mddi_client_dummy.c create mode 100644 drivers/video/msm/mddi_client_nt35399.c create mode 100644 drivers/video/msm/mddi_client_toshiba.c create mode 100644 drivers/video/msm/mddi_hw.h create mode 100644 drivers/video/msm/mdp.c create mode 100644 drivers/video/msm/mdp_csc_table.h create mode 100644 drivers/video/msm/mdp_hw.h create mode 100644 drivers/video/msm/mdp_ppp.c create mode 100644 drivers/video/msm/mdp_scale_tables.c create mode 100644 drivers/video/msm/mdp_scale_tables.h create mode 100644 drivers/video/msm/msm_fb.c create mode 100644 drivers/video/mx3fb.c create mode 100644 drivers/video/mxsfb.c create mode 100644 drivers/video/n411.c create mode 100644 drivers/video/neofb.c create mode 100644 drivers/video/nuc900fb.c create mode 100644 drivers/video/nuc900fb.h create mode 100644 drivers/video/nvidia/Makefile create mode 100644 drivers/video/nvidia/nv_accel.c create mode 100644 drivers/video/nvidia/nv_backlight.c create mode 100644 drivers/video/nvidia/nv_dma.h create mode 100644 drivers/video/nvidia/nv_hw.c create mode 100644 drivers/video/nvidia/nv_i2c.c create mode 100644 drivers/video/nvidia/nv_local.h create mode 100644 drivers/video/nvidia/nv_of.c create mode 100644 drivers/video/nvidia/nv_proto.h create mode 100644 drivers/video/nvidia/nv_setup.c create mode 100644 drivers/video/nvidia/nv_type.h create mode 100644 drivers/video/nvidia/nvidia.c create mode 100644 drivers/video/of_display_timing.c create mode 100644 drivers/video/of_videomode.c create mode 100644 drivers/video/offb.c create mode 100644 drivers/video/omap/Kconfig create mode 100644 drivers/video/omap/Makefile create mode 100644 drivers/video/omap/hwa742.c create mode 100644 drivers/video/omap/lcd_ams_delta.c create mode 100644 drivers/video/omap/lcd_h3.c create mode 100644 drivers/video/omap/lcd_htcherald.c create mode 100644 drivers/video/omap/lcd_inn1510.c create mode 100644 drivers/video/omap/lcd_inn1610.c create mode 100644 drivers/video/omap/lcd_mipid.c create mode 100644 drivers/video/omap/lcd_osk.c create mode 100644 drivers/video/omap/lcd_palmte.c create mode 100644 drivers/video/omap/lcd_palmtt.c create mode 100644 drivers/video/omap/lcd_palmz71.c create mode 100644 drivers/video/omap/lcdc.c create mode 100644 drivers/video/omap/lcdc.h create mode 100644 drivers/video/omap/omapfb.h create mode 100644 drivers/video/omap/omapfb_main.c create mode 100644 drivers/video/omap/sossi.c create mode 100644 drivers/video/omap2/Kconfig create mode 100644 drivers/video/omap2/Makefile create mode 100644 drivers/video/omap2/displays/Kconfig create mode 100644 drivers/video/omap2/displays/Makefile create mode 100644 drivers/video/omap2/displays/panel-acx565akm.c create mode 100644 drivers/video/omap2/displays/panel-generic-dpi.c create mode 100644 drivers/video/omap2/displays/panel-lgphilips-lb035q02.c create mode 100644 drivers/video/omap2/displays/panel-n8x0.c create mode 100644 drivers/video/omap2/displays/panel-nec-nl8048hl11-01b.c create mode 100644 drivers/video/omap2/displays/panel-picodlp.c create mode 100644 drivers/video/omap2/displays/panel-picodlp.h create mode 100644 drivers/video/omap2/displays/panel-sharp-ls037v7dw01.c create mode 100644 drivers/video/omap2/displays/panel-taal.c create mode 100644 drivers/video/omap2/displays/panel-tfp410.c create mode 100644 drivers/video/omap2/displays/panel-tpo-td043mtea1.c create mode 100644 drivers/video/omap2/dss/Kconfig create mode 100644 drivers/video/omap2/dss/Makefile create mode 100644 drivers/video/omap2/dss/apply.c create mode 100644 drivers/video/omap2/dss/core.c create mode 100644 drivers/video/omap2/dss/dispc-compat.c create mode 100644 drivers/video/omap2/dss/dispc-compat.h create mode 100644 drivers/video/omap2/dss/dispc.c create mode 100644 drivers/video/omap2/dss/dispc.h create mode 100644 drivers/video/omap2/dss/dispc_coefs.c create mode 100644 drivers/video/omap2/dss/display-sysfs.c create mode 100644 drivers/video/omap2/dss/display.c create mode 100644 drivers/video/omap2/dss/dpi.c create mode 100644 drivers/video/omap2/dss/dsi.c create mode 100644 drivers/video/omap2/dss/dss.c create mode 100644 drivers/video/omap2/dss/dss.h create mode 100644 drivers/video/omap2/dss/dss_features.c create mode 100644 drivers/video/omap2/dss/dss_features.h create mode 100644 drivers/video/omap2/dss/hdmi.c create mode 100644 drivers/video/omap2/dss/hdmi_panel.c create mode 100644 drivers/video/omap2/dss/manager-sysfs.c create mode 100644 drivers/video/omap2/dss/manager.c create mode 100644 drivers/video/omap2/dss/output.c create mode 100644 drivers/video/omap2/dss/overlay-sysfs.c create mode 100644 drivers/video/omap2/dss/overlay.c create mode 100644 drivers/video/omap2/dss/rfbi.c create mode 100644 drivers/video/omap2/dss/sdi.c create mode 100644 drivers/video/omap2/dss/ti_hdmi.h create mode 100644 drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c create mode 100644 drivers/video/omap2/dss/ti_hdmi_4xxx_ip.h create mode 100644 drivers/video/omap2/dss/venc.c create mode 100644 drivers/video/omap2/dss/venc_panel.c create mode 100644 drivers/video/omap2/omapfb/Kconfig create mode 100644 drivers/video/omap2/omapfb/Makefile create mode 100644 drivers/video/omap2/omapfb/omapfb-ioctl.c create mode 100644 drivers/video/omap2/omapfb/omapfb-main.c create mode 100644 drivers/video/omap2/omapfb/omapfb-sysfs.c create mode 100644 drivers/video/omap2/omapfb/omapfb.h create mode 100644 drivers/video/omap2/vrfb.c create mode 100644 drivers/video/output.c create mode 100644 drivers/video/p9100.c create mode 100644 drivers/video/platinumfb.c create mode 100644 drivers/video/platinumfb.h create mode 100644 drivers/video/pm2fb.c create mode 100644 drivers/video/pm3fb.c create mode 100644 drivers/video/pmag-aa-fb.c create mode 100644 drivers/video/pmag-ba-fb.c create mode 100644 drivers/video/pmagb-b-fb.c create mode 100644 drivers/video/ps3fb.c create mode 100644 drivers/video/pvr2fb.c create mode 100644 drivers/video/pxa168fb.c create mode 100644 drivers/video/pxa168fb.h create mode 100644 drivers/video/pxa3xx-gcu.c create mode 100644 drivers/video/pxa3xx-gcu.h create mode 100644 drivers/video/pxafb.c create mode 100644 drivers/video/pxafb.h create mode 100644 drivers/video/q40fb.c create mode 100644 drivers/video/riva/Makefile create mode 100644 drivers/video/riva/fbdev.c create mode 100644 drivers/video/riva/nv_driver.c create mode 100644 drivers/video/riva/nv_type.h create mode 100644 drivers/video/riva/nvreg.h create mode 100644 drivers/video/riva/riva_hw.c create mode 100644 drivers/video/riva/riva_hw.h create mode 100644 drivers/video/riva/riva_tbl.h create mode 100644 drivers/video/riva/rivafb-i2c.c create mode 100644 drivers/video/riva/rivafb.h create mode 100644 drivers/video/s1d13xxxfb.c create mode 100644 drivers/video/s3c-fb.c create mode 100644 drivers/video/s3c2410fb.c create mode 100644 drivers/video/s3c2410fb.h create mode 100644 drivers/video/s3fb.c create mode 100644 drivers/video/sa1100fb.c create mode 100644 drivers/video/sa1100fb.h create mode 100644 drivers/video/savage/Makefile create mode 100644 drivers/video/savage/savagefb-i2c.c create mode 100644 drivers/video/savage/savagefb.h create mode 100644 drivers/video/savage/savagefb_accel.c create mode 100644 drivers/video/savage/savagefb_driver.c create mode 100644 drivers/video/sbuslib.c create mode 100644 drivers/video/sbuslib.h create mode 100644 drivers/video/sgivwfb.c create mode 100644 drivers/video/sh7760fb.c create mode 100644 drivers/video/sh_mipi_dsi.c create mode 100644 drivers/video/sh_mobile_hdmi.c create mode 100644 drivers/video/sh_mobile_lcdcfb.c create mode 100644 drivers/video/sh_mobile_lcdcfb.h create mode 100644 drivers/video/sh_mobile_meram.c create mode 100644 drivers/video/simplefb.c create mode 100644 drivers/video/sis/300vtbl.h create mode 100644 drivers/video/sis/310vtbl.h create mode 100644 drivers/video/sis/Makefile create mode 100644 drivers/video/sis/init.c create mode 100644 drivers/video/sis/init.h create mode 100644 drivers/video/sis/init301.c create mode 100644 drivers/video/sis/init301.h create mode 100644 drivers/video/sis/initdef.h create mode 100644 drivers/video/sis/initextlfb.c create mode 100644 drivers/video/sis/oem300.h create mode 100644 drivers/video/sis/oem310.h create mode 100644 drivers/video/sis/sis.h create mode 100644 drivers/video/sis/sis_accel.c create mode 100644 drivers/video/sis/sis_accel.h create mode 100644 drivers/video/sis/sis_main.c create mode 100644 drivers/video/sis/sis_main.h create mode 100644 drivers/video/sis/vgatypes.h create mode 100644 drivers/video/sis/vstruct.h create mode 100644 drivers/video/skeletonfb.c create mode 100644 drivers/video/sm501fb.c create mode 100644 drivers/video/smscufx.c create mode 100644 drivers/video/sprdfb/Kconfig create mode 100644 drivers/video/sprdfb/Makefile create mode 100644 drivers/video/sprdfb/dsi_1_10a/Makefile create mode 100644 drivers/video/sprdfb/dsi_1_10a/mipi_dsih_api.c create mode 100644 drivers/video/sprdfb/dsi_1_10a/mipi_dsih_api.h create mode 100644 drivers/video/sprdfb/dsi_1_10a/mipi_dsih_dphy.c create mode 100644 drivers/video/sprdfb/dsi_1_10a/mipi_dsih_dphy.h create mode 100644 drivers/video/sprdfb/dsi_1_10a/mipi_dsih_hal.c create mode 100644 drivers/video/sprdfb/dsi_1_10a/mipi_dsih_hal.h create mode 100644 drivers/video/sprdfb/dsi_1_10a/mipi_dsih_local.h create mode 100644 drivers/video/sprdfb/dsi_1_21a/Makefile create mode 100644 drivers/video/sprdfb/dsi_1_21a/mipi_dsih_api.c create mode 100644 drivers/video/sprdfb/dsi_1_21a/mipi_dsih_api.h create mode 100644 drivers/video/sprdfb/dsi_1_21a/mipi_dsih_dphy.c create mode 100644 drivers/video/sprdfb/dsi_1_21a/mipi_dsih_dphy.h create mode 100644 drivers/video/sprdfb/dsi_1_21a/mipi_dsih_dphy_megacores.c create mode 100644 drivers/video/sprdfb/dsi_1_21a/mipi_dsih_hal.c create mode 100644 drivers/video/sprdfb/dsi_1_21a/mipi_dsih_hal.h create mode 100644 drivers/video/sprdfb/dsi_1_21a/mipi_dsih_local.h create mode 100644 drivers/video/sprdfb/lcd/Makefile create mode 100644 drivers/video/sprdfb/lcd/lcd_dummy.c create mode 100644 drivers/video/sprdfb/lcd/lcd_fl10802_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_hx8363_mcu.c create mode 100644 drivers/video/sprdfb/lcd/lcd_hx8363_rgb_spi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_hx8363_rgb_spi_viva.c create mode 100644 drivers/video/sprdfb/lcd/lcd_hx8369.c create mode 100755 drivers/video/sprdfb/lcd/lcd_hx8369b_grandneo_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_hx8369b_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_hx8369b_mipi_coreprimelite.c create mode 100644 drivers/video/sprdfb/lcd/lcd_hx8369b_mipi_coreprimelite_marlin.c create mode 100644 drivers/video/sprdfb/lcd/lcd_hx8369b_mipi_kiran3g.c create mode 100644 drivers/video/sprdfb/lcd/lcd_hx8369b_mipi_sharkls_z3lte.c create mode 100644 drivers/video/sprdfb/lcd/lcd_hx8369b_mipi_vivaltoVE.c create mode 100755 drivers/video/sprdfb/lcd/lcd_hx8369b_tshark2_j3_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_hx8379a_mipi.c create mode 100755 drivers/video/sprdfb/lcd/lcd_hx8389c_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_hx8394a_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_hx8394d_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_ili6150_lvds.c create mode 100644 drivers/video/sprdfb/lcd/lcd_ili9341.c create mode 100644 drivers/video/sprdfb/lcd/lcd_ili9486.c create mode 100644 drivers/video/sprdfb/lcd/lcd_ili9486_rgb_spi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_ili9486s1_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_ili9806e_2_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_ili9806e_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_jd9161_mipi.c create mode 100755 drivers/video/sprdfb/lcd/lcd_nt35502_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_nt35510_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_nt35512_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_nt35516_mcu.c create mode 100644 drivers/video/sprdfb/lcd/lcd_nt35516_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_nt35516_rgb_i2c.c create mode 100755 drivers/video/sprdfb/lcd/lcd_nt35516_rgb_spi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_nt35596h_mipi.c create mode 100755 drivers/video/sprdfb/lcd/lcd_nt51017_goyal_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_nt51017_mipi_lvds.c create mode 100644 drivers/video/sprdfb/lcd/lcd_otm1283a_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_otm8019a_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_otm_8018b_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_rm68180_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_s6d0139.c create mode 100644 drivers/video/sprdfb/lcd/lcd_s6d77a1_pikeA_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_s6d7aa0x62_t8_mipi.c create mode 100755 drivers/video/sprdfb/lcd/lcd_sc7798_rgb_spi.c create mode 100755 drivers/video/sprdfb/lcd/lcd_sd7798d_mipi.c create mode 100755 drivers/video/sprdfb/lcd/lcd_sd7798d_mipi_sharkls_z3lte.c create mode 100644 drivers/video/sprdfb/lcd/lcd_ssd2075_mipi.c create mode 100644 drivers/video/sprdfb/lcd/lcd_st7789v_mcu.c create mode 100644 drivers/video/sprdfb/lcd/lcd_t8861_mipi.c create mode 100755 drivers/video/sprdfb/lcd/lcd_vx5b3d_mipi.c create mode 100644 drivers/video/sprdfb/spi/Makefile create mode 100644 drivers/video/sprdfb/spi/spi_simple_drv.c create mode 100644 drivers/video/sprdfb/spi/spi_simple_drv.h create mode 100644 drivers/video/sprdfb/sprdfb.h create mode 100644 drivers/video/sprdfb/sprdfb_attr.c create mode 100755 drivers/video/sprdfb/sprdfb_chip_7715.c create mode 100755 drivers/video/sprdfb/sprdfb_chip_7715.h create mode 100644 drivers/video/sprdfb/sprdfb_chip_8830.c create mode 100644 drivers/video/sprdfb/sprdfb_chip_8830.h create mode 100644 drivers/video/sprdfb/sprdfb_chip_9630.c create mode 100644 drivers/video/sprdfb/sprdfb_chip_9630.h create mode 100644 drivers/video/sprdfb/sprdfb_chip_common.c create mode 100644 drivers/video/sprdfb/sprdfb_chip_common.h create mode 100644 drivers/video/sprdfb/sprdfb_dispc.c create mode 100644 drivers/video/sprdfb/sprdfb_dispc_reg.h create mode 100644 drivers/video/sprdfb/sprdfb_dsi.c create mode 100644 drivers/video/sprdfb/sprdfb_gpio2spi.c create mode 100644 drivers/video/sprdfb/sprdfb_i2c.c create mode 100644 drivers/video/sprdfb/sprdfb_main.c create mode 100644 drivers/video/sprdfb/sprdfb_mcu.c create mode 100644 drivers/video/sprdfb/sprdfb_mipi.c create mode 100644 drivers/video/sprdfb/sprdfb_panel.c create mode 100644 drivers/video/sprdfb/sprdfb_panel.h create mode 100755 drivers/video/sprdfb/sprdfb_rgb.c create mode 100644 drivers/video/sprdfb/sprdfb_spi.c create mode 100644 drivers/video/ssd1307fb.c create mode 100644 drivers/video/sstfb.c create mode 100644 drivers/video/sticore.h create mode 100644 drivers/video/stifb.c create mode 100644 drivers/video/sunxvr1000.c create mode 100644 drivers/video/sunxvr2500.c create mode 100644 drivers/video/sunxvr500.c create mode 100644 drivers/video/svgalib.c create mode 100644 drivers/video/syscopyarea.c create mode 100644 drivers/video/sysfillrect.c create mode 100644 drivers/video/sysimgblt.c create mode 100644 drivers/video/tcx.c create mode 100644 drivers/video/tdfxfb.c create mode 100644 drivers/video/tgafb.c create mode 100644 drivers/video/tmiofb.c create mode 100644 drivers/video/tridentfb.c create mode 100644 drivers/video/udlfb.c create mode 100644 drivers/video/uvesafb.c create mode 100644 drivers/video/valkyriefb.c create mode 100644 drivers/video/valkyriefb.h create mode 100644 drivers/video/vermilion/Makefile create mode 100644 drivers/video/vermilion/cr_pll.c create mode 100644 drivers/video/vermilion/vermilion.c create mode 100644 drivers/video/vermilion/vermilion.h create mode 100644 drivers/video/vesafb.c create mode 100644 drivers/video/vexpress-dvi.c create mode 100644 drivers/video/vfb.c create mode 100644 drivers/video/vga16fb.c create mode 100644 drivers/video/vgastate.c create mode 100644 drivers/video/via/Makefile create mode 100644 drivers/video/via/accel.c create mode 100644 drivers/video/via/accel.h create mode 100644 drivers/video/via/chip.h create mode 100644 drivers/video/via/debug.h create mode 100644 drivers/video/via/dvi.c create mode 100644 drivers/video/via/dvi.h create mode 100644 drivers/video/via/global.c create mode 100644 drivers/video/via/global.h create mode 100644 drivers/video/via/hw.c create mode 100644 drivers/video/via/hw.h create mode 100644 drivers/video/via/ioctl.c create mode 100644 drivers/video/via/ioctl.h create mode 100644 drivers/video/via/lcd.c create mode 100644 drivers/video/via/lcd.h create mode 100644 drivers/video/via/share.h create mode 100644 drivers/video/via/tblDPASetting.c create mode 100644 drivers/video/via/tblDPASetting.h create mode 100644 drivers/video/via/via-core.c create mode 100644 drivers/video/via/via-gpio.c create mode 100644 drivers/video/via/via_aux.c create mode 100644 drivers/video/via/via_aux.h create mode 100644 drivers/video/via/via_aux_ch7301.c create mode 100644 drivers/video/via/via_aux_edid.c create mode 100644 drivers/video/via/via_aux_sii164.c create mode 100644 drivers/video/via/via_aux_vt1621.c create mode 100644 drivers/video/via/via_aux_vt1622.c create mode 100644 drivers/video/via/via_aux_vt1625.c create mode 100644 drivers/video/via/via_aux_vt1631.c create mode 100644 drivers/video/via/via_aux_vt1632.c create mode 100644 drivers/video/via/via_aux_vt1636.c create mode 100644 drivers/video/via/via_clock.c create mode 100644 drivers/video/via/via_clock.h create mode 100644 drivers/video/via/via_i2c.c create mode 100644 drivers/video/via/via_modesetting.c create mode 100644 drivers/video/via/via_modesetting.h create mode 100644 drivers/video/via/via_utility.c create mode 100644 drivers/video/via/via_utility.h create mode 100644 drivers/video/via/viafbdev.c create mode 100644 drivers/video/via/viafbdev.h create mode 100644 drivers/video/via/viamode.c create mode 100644 drivers/video/via/viamode.h create mode 100644 drivers/video/via/vt1636.c create mode 100644 drivers/video/via/vt1636.h create mode 100644 drivers/video/videomode.c create mode 100644 drivers/video/vt8500lcdfb.c create mode 100644 drivers/video/vt8500lcdfb.h create mode 100644 drivers/video/vt8623fb.c create mode 100644 drivers/video/w100fb.c create mode 100644 drivers/video/w100fb.h create mode 100644 drivers/video/wm8505fb.c create mode 100644 drivers/video/wm8505fb_regs.h create mode 100644 drivers/video/wmt_ge_rops.c create mode 100644 drivers/video/wmt_ge_rops.h create mode 100644 drivers/video/xen-fbfront.c create mode 100644 drivers/video/xilinxfb.c (limited to 'drivers/video') diff --git a/drivers/video/68328fb.c b/drivers/video/68328fb.c new file mode 100644 index 00000000..fa44fbed --- /dev/null +++ b/drivers/video/68328fb.c @@ -0,0 +1,504 @@ +/* + * linux/drivers/video/68328fb.c -- Low level implementation of the + * mc68x328 LCD frame buffer device + * + * Copyright (C) 2003 Georges Menie + * + * This driver assumes an already configured controller (e.g. from config.c) + * Keep the code clean of board specific initialization. + * + * This code has not been tested with colors, colormap management functions + * are minimal (no colormap data written to the 68328 registers...) + * + * initial version of this driver: + * Copyright (C) 1998,1999 Kenneth Albanowski , + * The Silver Hammer Group, Ltd. + * + * this version is based on : + * + * linux/drivers/video/vfb.c -- Virtual frame buffer device + * + * Copyright (C) 2002 James Simmons + * + * Copyright (C) 1997 Geert Uytterhoeven + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file COPYING in the main directory of this archive for + * more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(CONFIG_M68VZ328) +#include +#elif defined(CONFIG_M68EZ328) +#include +#elif defined(CONFIG_M68328) +#include +#else +#error wrong architecture for the MC68x328 frame buffer device +#endif + +#if defined(CONFIG_FB_68328_INVERT) +#define MC68X328FB_MONO_VISUAL FB_VISUAL_MONO01 +#else +#define MC68X328FB_MONO_VISUAL FB_VISUAL_MONO10 +#endif + +static u_long videomemory; +static u_long videomemorysize; + +static struct fb_info fb_info; +static u32 mc68x328fb_pseudo_palette[16]; + +static struct fb_var_screeninfo mc68x328fb_default __initdata = { + .red = { 0, 8, 0 }, + .green = { 0, 8, 0 }, + .blue = { 0, 8, 0 }, + .activate = FB_ACTIVATE_TEST, + .height = -1, + .width = -1, + .pixclock = 20000, + .left_margin = 64, + .right_margin = 64, + .upper_margin = 32, + .lower_margin = 32, + .hsync_len = 64, + .vsync_len = 2, + .vmode = FB_VMODE_NONINTERLACED, +}; + +static struct fb_fix_screeninfo mc68x328fb_fix __initdata = { + .id = "68328fb", + .type = FB_TYPE_PACKED_PIXELS, + .xpanstep = 1, + .ypanstep = 1, + .ywrapstep = 1, + .accel = FB_ACCEL_NONE, +}; + + /* + * Interface used by the world + */ +int mc68x328fb_init(void); +int mc68x328fb_setup(char *); + +static int mc68x328fb_check_var(struct fb_var_screeninfo *var, + struct fb_info *info); +static int mc68x328fb_set_par(struct fb_info *info); +static int mc68x328fb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, + u_int transp, struct fb_info *info); +static int mc68x328fb_pan_display(struct fb_var_screeninfo *var, + struct fb_info *info); +static int mc68x328fb_mmap(struct fb_info *info, struct vm_area_struct *vma); + +static struct fb_ops mc68x328fb_ops = { + .fb_check_var = mc68x328fb_check_var, + .fb_set_par = mc68x328fb_set_par, + .fb_setcolreg = mc68x328fb_setcolreg, + .fb_pan_display = mc68x328fb_pan_display, + .fb_fillrect = cfb_fillrect, + .fb_copyarea = cfb_copyarea, + .fb_imageblit = cfb_imageblit, + .fb_mmap = mc68x328fb_mmap, +}; + + /* + * Internal routines + */ + +static u_long get_line_length(int xres_virtual, int bpp) +{ + u_long length; + + length = xres_virtual * bpp; + length = (length + 31) & ~31; + length >>= 3; + return (length); +} + + /* + * Setting the video mode has been split into two parts. + * First part, xxxfb_check_var, must not write anything + * to hardware, it should only verify and adjust var. + * This means it doesn't alter par but it does use hardware + * data from it to check this var. + */ + +static int mc68x328fb_check_var(struct fb_var_screeninfo *var, + struct fb_info *info) +{ + u_long line_length; + + /* + * FB_VMODE_CONUPDATE and FB_VMODE_SMOOTH_XPAN are equal! + * as FB_VMODE_SMOOTH_XPAN is only used internally + */ + + if (var->vmode & FB_VMODE_CONUPDATE) { + var->vmode |= FB_VMODE_YWRAP; + var->xoffset = info->var.xoffset; + var->yoffset = info->var.yoffset; + } + + /* + * Some very basic checks + */ + if (!var->xres) + var->xres = 1; + if (!var->yres) + var->yres = 1; + if (var->xres > var->xres_virtual) + var->xres_virtual = var->xres; + if (var->yres > var->yres_virtual) + var->yres_virtual = var->yres; + if (var->bits_per_pixel <= 1) + var->bits_per_pixel = 1; + else if (var->bits_per_pixel <= 8) + var->bits_per_pixel = 8; + else if (var->bits_per_pixel <= 16) + var->bits_per_pixel = 16; + else if (var->bits_per_pixel <= 24) + var->bits_per_pixel = 24; + else if (var->bits_per_pixel <= 32) + var->bits_per_pixel = 32; + else + return -EINVAL; + + if (var->xres_virtual < var->xoffset + var->xres) + var->xres_virtual = var->xoffset + var->xres; + if (var->yres_virtual < var->yoffset + var->yres) + var->yres_virtual = var->yoffset + var->yres; + + /* + * Memory limit + */ + line_length = + get_line_length(var->xres_virtual, var->bits_per_pixel); + if (line_length * var->yres_virtual > videomemorysize) + return -ENOMEM; + + /* + * Now that we checked it we alter var. The reason being is that the video + * mode passed in might not work but slight changes to it might make it + * work. This way we let the user know what is acceptable. + */ + switch (var->bits_per_pixel) { + case 1: + var->red.offset = 0; + var->red.length = 1; + var->green.offset = 0; + var->green.length = 1; + var->blue.offset = 0; + var->blue.length = 1; + var->transp.offset = 0; + var->transp.length = 0; + break; + case 8: + var->red.offset = 0; + var->red.length = 8; + var->green.offset = 0; + var->green.length = 8; + var->blue.offset = 0; + var->blue.length = 8; + var->transp.offset = 0; + var->transp.length = 0; + break; + case 16: /* RGBA 5551 */ + if (var->transp.length) { + var->red.offset = 0; + var->red.length = 5; + var->green.offset = 5; + var->green.length = 5; + var->blue.offset = 10; + var->blue.length = 5; + var->transp.offset = 15; + var->transp.length = 1; + } else { /* RGB 565 */ + var->red.offset = 0; + var->red.length = 5; + var->green.offset = 5; + var->green.length = 6; + var->blue.offset = 11; + var->blue.length = 5; + var->transp.offset = 0; + var->transp.length = 0; + } + break; + case 24: /* RGB 888 */ + var->red.offset = 0; + var->red.length = 8; + var->green.offset = 8; + var->green.length = 8; + var->blue.offset = 16; + var->blue.length = 8; + var->transp.offset = 0; + var->transp.length = 0; + break; + case 32: /* RGBA 8888 */ + var->red.offset = 0; + var->red.length = 8; + var->green.offset = 8; + var->green.length = 8; + var->blue.offset = 16; + var->blue.length = 8; + var->transp.offset = 24; + var->transp.length = 8; + break; + } + var->red.msb_right = 0; + var->green.msb_right = 0; + var->blue.msb_right = 0; + var->transp.msb_right = 0; + + return 0; +} + +/* This routine actually sets the video mode. It's in here where we + * the hardware state info->par and fix which can be affected by the + * change in par. For this driver it doesn't do much. + */ +static int mc68x328fb_set_par(struct fb_info *info) +{ + info->fix.line_length = get_line_length(info->var.xres_virtual, + info->var.bits_per_pixel); + return 0; +} + + /* + * Set a single color register. The values supplied are already + * rounded down to the hardware's capabilities (according to the + * entries in the var structure). Return != 0 for invalid regno. + */ + +static int mc68x328fb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, + u_int transp, struct fb_info *info) +{ + if (regno >= 256) /* no. of hw registers */ + return 1; + /* + * Program hardware... do anything you want with transp + */ + + /* grayscale works only partially under directcolor */ + if (info->var.grayscale) { + /* grayscale = 0.30*R + 0.59*G + 0.11*B */ + red = green = blue = + (red * 77 + green * 151 + blue * 28) >> 8; + } + + /* Directcolor: + * var->{color}.offset contains start of bitfield + * var->{color}.length contains length of bitfield + * {hardwarespecific} contains width of RAMDAC + * cmap[X] is programmed to (X << red.offset) | (X << green.offset) | (X << blue.offset) + * RAMDAC[X] is programmed to (red, green, blue) + * + * Pseudocolor: + * uses offset = 0 && length = RAMDAC register width. + * var->{color}.offset is 0 + * var->{color}.length contains width of DAC + * cmap is not used + * RAMDAC[X] is programmed to (red, green, blue) + * Truecolor: + * does not use DAC. Usually 3 are present. + * var->{color}.offset contains start of bitfield + * var->{color}.length contains length of bitfield + * cmap is programmed to (red << red.offset) | (green << green.offset) | + * (blue << blue.offset) | (transp << transp.offset) + * RAMDAC does not exist + */ +#define CNVT_TOHW(val,width) ((((val)<<(width))+0x7FFF-(val))>>16) + switch (info->fix.visual) { + case FB_VISUAL_TRUECOLOR: + case FB_VISUAL_PSEUDOCOLOR: + red = CNVT_TOHW(red, info->var.red.length); + green = CNVT_TOHW(green, info->var.green.length); + blue = CNVT_TOHW(blue, info->var.blue.length); + transp = CNVT_TOHW(transp, info->var.transp.length); + break; + case FB_VISUAL_DIRECTCOLOR: + red = CNVT_TOHW(red, 8); /* expect 8 bit DAC */ + green = CNVT_TOHW(green, 8); + blue = CNVT_TOHW(blue, 8); + /* hey, there is bug in transp handling... */ + transp = CNVT_TOHW(transp, 8); + break; + } +#undef CNVT_TOHW + /* Truecolor has hardware independent palette */ + if (info->fix.visual == FB_VISUAL_TRUECOLOR) { + u32 v; + + if (regno >= 16) + return 1; + + v = (red << info->var.red.offset) | + (green << info->var.green.offset) | + (blue << info->var.blue.offset) | + (transp << info->var.transp.offset); + switch (info->var.bits_per_pixel) { + case 8: + break; + case 16: + ((u32 *) (info->pseudo_palette))[regno] = v; + break; + case 24: + case 32: + ((u32 *) (info->pseudo_palette))[regno] = v; + break; + } + return 0; + } + return 0; +} + + /* + * Pan or Wrap the Display + * + * This call looks only at xoffset, yoffset and the FB_VMODE_YWRAP flag + */ + +static int mc68x328fb_pan_display(struct fb_var_screeninfo *var, + struct fb_info *info) +{ + if (var->vmode & FB_VMODE_YWRAP) { + if (var->yoffset < 0 + || var->yoffset >= info->var.yres_virtual + || var->xoffset) + return -EINVAL; + } else { + if (var->xoffset + info->var.xres > info->var.xres_virtual || + var->yoffset + info->var.yres > info->var.yres_virtual) + return -EINVAL; + } + info->var.xoffset = var->xoffset; + info->var.yoffset = var->yoffset; + if (var->vmode & FB_VMODE_YWRAP) + info->var.vmode |= FB_VMODE_YWRAP; + else + info->var.vmode &= ~FB_VMODE_YWRAP; + return 0; +} + + /* + * Most drivers don't need their own mmap function + */ + +static int mc68x328fb_mmap(struct fb_info *info, struct vm_area_struct *vma) +{ +#ifndef MMU + /* this is uClinux (no MMU) specific code */ + + vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP; + vma->vm_start = videomemory; + + return 0; +#else + return -EINVAL; +#endif +} + +int __init mc68x328fb_setup(char *options) +{ +#if 0 + char *this_opt; +#endif + + if (!options || !*options) + return 1; +#if 0 + while ((this_opt = strsep(&options, ",")) != NULL) { + if (!*this_opt) + continue; + if (!strncmp(this_opt, "disable", 7)) + mc68x328fb_enable = 0; + } +#endif + return 1; +} + + /* + * Initialisation + */ + +int __init mc68x328fb_init(void) +{ +#ifndef MODULE + char *option = NULL; + + if (fb_get_options("68328fb", &option)) + return -ENODEV; + mc68x328fb_setup(option); +#endif + /* + * initialize the default mode from the LCD controller registers + */ + mc68x328fb_default.xres = LXMAX; + mc68x328fb_default.yres = LYMAX+1; + mc68x328fb_default.xres_virtual = mc68x328fb_default.xres; + mc68x328fb_default.yres_virtual = mc68x328fb_default.yres; + mc68x328fb_default.bits_per_pixel = 1 + (LPICF & 0x01); + videomemory = LSSA; + videomemorysize = (mc68x328fb_default.xres_virtual+7) / 8 * + mc68x328fb_default.yres_virtual * mc68x328fb_default.bits_per_pixel; + + fb_info.screen_base = (void *)videomemory; + fb_info.fbops = &mc68x328fb_ops; + fb_info.var = mc68x328fb_default; + fb_info.fix = mc68x328fb_fix; + fb_info.fix.smem_start = videomemory; + fb_info.fix.smem_len = videomemorysize; + fb_info.fix.line_length = + get_line_length(mc68x328fb_default.xres_virtual, mc68x328fb_default.bits_per_pixel); + fb_info.fix.visual = (mc68x328fb_default.bits_per_pixel) == 1 ? + MC68X328FB_MONO_VISUAL : FB_VISUAL_PSEUDOCOLOR; + if (fb_info.var.bits_per_pixel == 1) { + fb_info.var.red.length = fb_info.var.green.length = fb_info.var.blue.length = 1; + fb_info.var.red.offset = fb_info.var.green.offset = fb_info.var.blue.offset = 0; + } + fb_info.pseudo_palette = &mc68x328fb_pseudo_palette; + fb_info.flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN; + + if (fb_alloc_cmap(&fb_info.cmap, 256, 0)) + return -ENOMEM; + + if (register_framebuffer(&fb_info) < 0) { + fb_dealloc_cmap(&fb_info.cmap); + return -EINVAL; + } + + printk(KERN_INFO + "fb%d: %s frame buffer device\n", fb_info.node, fb_info.fix.id); + printk(KERN_INFO + "fb%d: %dx%dx%d at 0x%08lx\n", fb_info.node, + mc68x328fb_default.xres_virtual, mc68x328fb_default.yres_virtual, + 1 << mc68x328fb_default.bits_per_pixel, videomemory); + + return 0; +} + +module_init(mc68x328fb_init); + +#ifdef MODULE + +static void __exit mc68x328fb_cleanup(void) +{ + unregister_framebuffer(&fb_info); + fb_dealloc_cmap(&fb_info.cmap); +} + +module_exit(mc68x328fb_cleanup); + +MODULE_LICENSE("GPL"); +#endif /* MODULE */ diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig new file mode 100644 index 00000000..71776785 --- /dev/null +++ b/drivers/video/Kconfig @@ -0,0 +1,2540 @@ +# +# Video configuration +# + +menu "Graphics support" + depends on HAS_IOMEM + +config HAVE_FB_ATMEL + bool + +config SH_MIPI_DSI + tristate + depends on (SUPERH || ARCH_SHMOBILE) && HAVE_CLK + +config SH_LCD_MIPI_DSI + bool + +source "drivers/char/agp/Kconfig" + +source "drivers/gpu/vga/Kconfig" + +source "drivers/gpu/drm/Kconfig" + +source "drivers/gpu/host1x/Kconfig" + +source "drivers/gpu/sprd_iommu/Kconfig" + +config VGASTATE + tristate + default n + +config VIDEO_OUTPUT_CONTROL + tristate "Lowlevel video output switch controls" + help + This framework adds support for low-level control of the video + output switch. + +config VIDEOMODE_HELPERS + bool + +config HDMI + bool + +config VEXPRESS_DVI_CONTROL + bool "Versatile Express DVI control" + depends on FB && VEXPRESS_CONFIG + default y + +menuconfig FB + tristate "Support for frame buffer devices" + ---help--- + The frame buffer device provides an abstraction for the graphics + hardware. It represents the frame buffer of some video hardware and + allows application software to access the graphics hardware through + a well-defined interface, so the software doesn't need to know + anything about the low-level (hardware register) stuff. + + Frame buffer devices work identically across the different + architectures supported by Linux and make the implementation of + application programs easier and more portable; at this point, an X + server exists which uses the frame buffer device exclusively. + On several non-X86 architectures, the frame buffer device is the + only way to use the graphics hardware. + + The device is accessed through special device nodes, usually located + in the /dev directory, i.e. /dev/fb*. + + You need an utility program called fbset to make full use of frame + buffer devices. Please read + and the Framebuffer-HOWTO at + for more + information. + + Say Y here and to the driver for your graphics board below if you + are compiling a kernel for a non-x86 architecture. + + If you are compiling for the x86 architecture, you can say Y if you + want to play with it, but it is not essential. Please note that + running graphical applications that directly touch the hardware + (e.g. an accelerated X server) and that are not frame buffer + device-aware may cause unexpected results. If unsure, say N. + +config FIRMWARE_EDID + bool "Enable firmware EDID" + depends on FB + default n + ---help--- + This enables access to the EDID transferred from the firmware. + On the i386, this is from the Video BIOS. Enable this if DDC/I2C + transfers do not work for your driver and if you are using + nvidiafb, i810fb or savagefb. + + In general, choosing Y for this option is safe. If you + experience extremely long delays while booting before you get + something on your display, try setting this to N. Matrox cards in + combination with certain motherboards and monitors are known to + suffer from this problem. + +config FB_DDC + tristate + depends on FB + select I2C_ALGOBIT + select I2C + default n + +config FB_BOOT_VESA_SUPPORT + bool + depends on FB + default n + ---help--- + If true, at least one selected framebuffer driver can take advantage + of VESA video modes set at an early boot stage via the vga= parameter. + +config FB_CFB_FILLRECT + tristate + depends on FB + default n + ---help--- + Include the cfb_fillrect function for generic software rectangle + filling. This is used by drivers that don't provide their own + (accelerated) version. + +config FB_CFB_COPYAREA + tristate + depends on FB + default n + ---help--- + Include the cfb_copyarea function for generic software area copying. + This is used by drivers that don't provide their own (accelerated) + version. + +config FB_CFB_IMAGEBLIT + tristate + depends on FB + default n + ---help--- + Include the cfb_imageblit function for generic software image + blitting. This is used by drivers that don't provide their own + (accelerated) version. + +config FB_CFB_REV_PIXELS_IN_BYTE + bool + depends on FB + default n + ---help--- + Allow generic frame-buffer functions to work on displays with 1, 2 + and 4 bits per pixel depths which has opposite order of pixels in + byte order to bytes in long order. + +config FB_SYS_FILLRECT + tristate + depends on FB + default n + ---help--- + Include the sys_fillrect function for generic software rectangle + filling. This is used by drivers that don't provide their own + (accelerated) version and the framebuffer is in system RAM. + +config FB_SYS_COPYAREA + tristate + depends on FB + default n + ---help--- + Include the sys_copyarea function for generic software area copying. + This is used by drivers that don't provide their own (accelerated) + version and the framebuffer is in system RAM. + +config FB_SYS_IMAGEBLIT + tristate + depends on FB + default n + ---help--- + Include the sys_imageblit function for generic software image + blitting. This is used by drivers that don't provide their own + (accelerated) version and the framebuffer is in system RAM. + +menuconfig FB_FOREIGN_ENDIAN + bool "Framebuffer foreign endianness support" + depends on FB + ---help--- + This menu will let you enable support for the framebuffers with + non-native endianness (e.g. Little-Endian framebuffer on a + Big-Endian machine). Most probably you don't have such hardware, + so it's safe to say "n" here. + +choice + prompt "Choice endianness support" + depends on FB_FOREIGN_ENDIAN + +config FB_BOTH_ENDIAN + bool "Support for Big- and Little-Endian framebuffers" + +config FB_BIG_ENDIAN + bool "Support for Big-Endian framebuffers only" + +config FB_LITTLE_ENDIAN + bool "Support for Little-Endian framebuffers only" + +endchoice + +config FB_SYS_FOPS + tristate + depends on FB + default n + +config FB_DEFERRED_IO + bool + depends on FB + +config FB_HECUBA + tristate + depends on FB + depends on FB_DEFERRED_IO + +config FB_SVGALIB + tristate + depends on FB + default n + ---help--- + Common utility functions useful to fbdev drivers of VGA-based + cards. + +config FB_MACMODES + tristate + depends on FB + default n + +config FB_BACKLIGHT + bool + depends on FB + select BACKLIGHT_LCD_SUPPORT + select BACKLIGHT_CLASS_DEVICE + default n + +config FB_MODE_HELPERS + bool "Enable Video Mode Handling Helpers" + depends on FB + default n + ---help--- + This enables functions for handling video modes using the + Generalized Timing Formula and the EDID parser. A few drivers rely + on this feature such as the radeonfb, rivafb, and the i810fb. If + your driver does not take advantage of this feature, choosing Y will + just increase the kernel size by about 5K. + +config FB_TILEBLITTING + bool "Enable Tile Blitting Support" + depends on FB + default n + ---help--- + This enables tile blitting. Tile blitting is a drawing technique + where the screen is divided into rectangular sections (tiles), whereas + the standard blitting divides the screen into pixels. Because the + default drawing element is a tile, drawing functions will be passed + parameters in terms of number of tiles instead of number of pixels. + For example, to draw a single character, instead of using bitmaps, + an index to an array of bitmaps will be used. To clear or move a + rectangular section of a screen, the rectangle will be described in + terms of number of tiles in the x- and y-axis. + + This is particularly important to one driver, matroxfb. If + unsure, say N. + +comment "Frame buffer hardware drivers" + depends on FB + +config FB_GRVGA + tristate "Aeroflex Gaisler framebuffer support" + depends on FB && SPARC + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + This enables support for the SVGACTRL framebuffer in the GRLIB IP library from Aeroflex Gaisler. + +config FB_CIRRUS + tristate "Cirrus Logic support" + depends on FB && (ZORRO || PCI) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + This enables support for Cirrus Logic GD542x/543x based boards on + Amiga: SD64, Piccolo, Picasso II/II+, Picasso IV, or EGS Spectrum. + + If you have a PCI-based system, this enables support for these + chips: GD-543x, GD-544x, GD-5480. + + Please read the file . + + Say N unless you have such a graphics board or plan to get one + before you next recompile the kernel. + +config FB_PM2 + tristate "Permedia2 support" + depends on FB && ((AMIGA && BROKEN) || PCI) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for cards based on + the 3D Labs Permedia, Permedia 2 and Permedia 2V chips. + The driver was tested on the following cards: + Diamond FireGL 1000 PRO AGP + ELSA Gloria Synergy PCI + Appian Jeronimo PRO (both heads) PCI + 3DLabs Oxygen ACX aka EONtronics Picasso P2 PCI + Techsource Raptor GFX-8P (aka Sun PGX-32) on SPARC + ASK Graphic Blaster Exxtreme AGP + + To compile this driver as a module, choose M here: the + module will be called pm2fb. + +config FB_PM2_FIFO_DISCONNECT + bool "enable FIFO disconnect feature" + depends on FB_PM2 && PCI + help + Support the Permedia2 FIFO disconnect feature. + +config FB_ARMCLCD + tristate "ARM PrimeCell PL110 support" + depends on ARM || ARM64 || COMPILE_TEST + depends on FB && ARM_AMBA + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This framebuffer device driver is for the ARM PrimeCell PL110 + Colour LCD controller. ARM PrimeCells provide the building + blocks for System on a Chip devices. + + If you want to compile this as a module (=code which can be + inserted into and removed from the running kernel), say M + here and read . The module + will be called amba-clcd. + +config FB_ARMHDLCD + tristate "ARM High Definition LCD support" + depends on FB && ARM + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This framebuffer device driver is for the ARM High Definition + Colour LCD controller. + + If you want to compile this as a module (=code which can be + inserted into and removed from the running kernel), say M + here and read . The module + will be called arm-hdlcd. + +config FB_ACORN + bool "Acorn VIDC support" + depends on (FB = y) && ARM && ARCH_ACORN + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the Acorn VIDC graphics + hardware found in Acorn RISC PCs and other ARM-based machines. If + unsure, say N. + +config FB_CLPS711X + bool "CLPS711X LCD support" + depends on (FB = y) && ARM && ARCH_CLPS711X + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + Say Y to enable the Framebuffer driver for the CLPS7111 and + EP7212 processors. + +config FB_SA1100 + bool "SA-1100 LCD support" + depends on (FB = y) && ARM && ARCH_SA1100 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is a framebuffer device for the SA-1100 LCD Controller. + See for information on framebuffer + devices. + + If you plan to use the LCD display with your SA-1100 system, say + Y here. + +config FB_IMX + tristate "Freescale i.MX1/21/25/27 LCD support" + depends on FB && IMX_HAVE_PLATFORM_IMX_FB + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + +config FB_CYBER2000 + tristate "CyberPro 2000/2010/5000 support" + depends on FB && PCI && (BROKEN || !SPARC64) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This enables support for the Integraphics CyberPro 20x0 and 5000 + VGA chips used in the Rebel.com Netwinder and other machines. + Say Y if you have a NetWinder or a graphics card containing this + device, otherwise say N. + +config FB_CYBER2000_DDC + bool "DDC for CyberPro support" + depends on FB_CYBER2000 + select FB_DDC + default y + help + Say Y here if you want DDC support for your CyberPro graphics + card. This is only I2C bus support, driver does not use EDID. + +config FB_CYBER2000_I2C + bool "CyberPro 2000/2010/5000 I2C support" + depends on FB_CYBER2000 && I2C && ARCH_NETWINDER + select I2C_ALGOBIT + help + Enable support for the I2C video decoder interface on the + Integraphics CyberPro 20x0 and 5000 VGA chips. This is used + on the Netwinder machines for the SAA7111 video capture. + +config FB_APOLLO + bool + depends on (FB = y) && APOLLO + default y + select FB_CFB_FILLRECT + select FB_CFB_IMAGEBLIT + +config FB_Q40 + bool + depends on (FB = y) && Q40 + default y + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + +config FB_AMIGA + tristate "Amiga native chipset support" + depends on FB && AMIGA + help + This is the frame buffer device driver for the builtin graphics + chipset found in Amigas. + + To compile this driver as a module, choose M here: the + module will be called amifb. + +config FB_AMIGA_OCS + bool "Amiga OCS chipset support" + depends on FB_AMIGA + help + This enables support for the original Agnus and Denise video chips, + found in the Amiga 1000 and most A500's and A2000's. If you intend + to run Linux on any of these systems, say Y; otherwise say N. + +config FB_AMIGA_ECS + bool "Amiga ECS chipset support" + depends on FB_AMIGA + help + This enables support for the Enhanced Chip Set, found in later + A500's, later A2000's, the A600, the A3000, the A3000T and CDTV. If + you intend to run Linux on any of these systems, say Y; otherwise + say N. + +config FB_AMIGA_AGA + bool "Amiga AGA chipset support" + depends on FB_AMIGA + help + This enables support for the Advanced Graphics Architecture (also + known as the AGA or AA) Chip Set, found in the A1200, A4000, A4000T + and CD32. If you intend to run Linux on any of these systems, say Y; + otherwise say N. + +config FB_FM2 + bool "Amiga FrameMaster II/Rainbow II support" + depends on (FB = y) && ZORRO + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the Amiga FrameMaster + card from BSC (exhibited 1992 but not shipped as a CBM product). + +config FB_ARC + tristate "Arc Monochrome LCD board support" + depends on FB && X86 + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_SYS_FOPS + help + This enables support for the Arc Monochrome LCD board. The board + is based on the KS-108 lcd controller and is typically a matrix + of 2*n chips. This driver was tested with a 128x64 panel. This + driver supports it for use with x86 SBCs through a 16 bit GPIO + interface (8 bit data, 8 bit control). If you anticipate using + this driver, say Y or M; otherwise say N. You must specify the + GPIO IO address to be used for setting control and data. + +config FB_ATARI + bool "Atari native chipset support" + depends on (FB = y) && ATARI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the builtin graphics + chipset found in Ataris. + +config FB_OF + bool "Open Firmware frame buffer device support" + depends on (FB = y) && (PPC64 || PPC_OF) && (!PPC_PSERIES || PCI) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_MACMODES + help + Say Y if you want support with Open Firmware for your graphics + board. + +config FB_CONTROL + bool "Apple \"control\" display support" + depends on (FB = y) && PPC_PMAC && PPC32 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_MACMODES + help + This driver supports a frame buffer for the graphics adapter in the + Power Macintosh 7300 and others. + +config FB_PLATINUM + bool "Apple \"platinum\" display support" + depends on (FB = y) && PPC_PMAC && PPC32 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_MACMODES + help + This driver supports a frame buffer for the "platinum" graphics + adapter in some Power Macintoshes. + +config FB_VALKYRIE + bool "Apple \"valkyrie\" display support" + depends on (FB = y) && (MAC || (PPC_PMAC && PPC32)) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_MACMODES + help + This driver supports a frame buffer for the "valkyrie" graphics + adapter in some Power Macintoshes. + +config FB_CT65550 + bool "Chips 65550 display support" + depends on (FB = y) && PPC32 && PCI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the Chips & Technologies + 65550 graphics chip in PowerBooks. + +config FB_ASILIANT + bool "Asiliant (Chips) 69000 display support" + depends on (FB = y) && PCI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the Asiliant 69030 chipset + +config FB_IMSTT + bool "IMS Twin Turbo display support" + depends on (FB = y) && PCI + select FB_CFB_IMAGEBLIT + select FB_MACMODES if PPC + help + The IMS Twin Turbo is a PCI-based frame buffer card bundled with + many Macintosh and compatible computers. + +config FB_VGA16 + tristate "VGA 16-color graphics support" + depends on FB && (X86 || PPC) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select VGASTATE + select FONT_8x16 if FRAMEBUFFER_CONSOLE + help + This is the frame buffer device driver for VGA 16 color graphic + cards. Say Y if you have such a card. + + To compile this driver as a module, choose M here: the + module will be called vga16fb. + +config FB_BF54X_LQ043 + tristate "SHARP LQ043 TFT LCD (BF548 EZKIT)" + depends on FB && (BF54x) && !BF542 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the framebuffer device driver for a SHARP LQ043T1DG01 TFT LCD + +config FB_BFIN_T350MCQB + tristate "Varitronix COG-T350MCQB TFT LCD display (BF527 EZKIT)" + depends on FB && BLACKFIN + select BFIN_GPTIMERS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the framebuffer device driver for a Varitronix VL-PS-COG-T350MCQB-01 display TFT LCD + This display is a QVGA 320x240 24-bit RGB display interfaced by an 8-bit wide PPI + It uses PPI[0..7] PPI_FS1, PPI_FS2 and PPI_CLK. + +config FB_BFIN_LQ035Q1 + tristate "SHARP LQ035Q1DH02 TFT LCD" + depends on FB && BLACKFIN && SPI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select BFIN_GPTIMERS + help + This is the framebuffer device driver for a SHARP LQ035Q1DH02 TFT display found on + the Blackfin Landscape LCD EZ-Extender Card. + This display is a QVGA 320x240 18-bit RGB display interfaced by an 16-bit wide PPI + It uses PPI[0..15] PPI_FS1, PPI_FS2 and PPI_CLK. + + To compile this driver as a module, choose M here: the + module will be called bfin-lq035q1-fb. + +config FB_BF537_LQ035 + tristate "SHARP LQ035 TFT LCD (BF537 STAMP)" + depends on FB && (BF534 || BF536 || BF537) && I2C_BLACKFIN_TWI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select BFIN_GPTIMERS + help + This is the framebuffer device for a SHARP LQ035Q7DB03 TFT LCD + attached to a BF537. + + To compile this driver as a module, choose M here: the + module will be called bf537-lq035. + +config FB_BFIN_7393 + tristate "Blackfin ADV7393 Video encoder" + depends on FB && BLACKFIN + select I2C + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the framebuffer device for a ADV7393 video encoder + attached to a Blackfin on the PPI port. + If your Blackfin board has a ADV7393 select Y. + + To compile this driver as a module, choose M here: the + module will be called bfin_adv7393fb. + +choice + prompt "Video mode support" + depends on FB_BFIN_7393 + default NTSC + +config NTSC + bool 'NTSC 720x480' + +config PAL + bool 'PAL 720x576' + +config NTSC_640x480 + bool 'NTSC 640x480 (Experimental)' + +config PAL_640x480 + bool 'PAL 640x480 (Experimental)' + +config NTSC_YCBCR + bool 'NTSC 720x480 YCbCR input' + +config PAL_YCBCR + bool 'PAL 720x576 YCbCR input' + +endchoice + +choice + prompt "Size of ADV7393 frame buffer memory Single/Double Size" + depends on (FB_BFIN_7393) + default ADV7393_1XMEM + +config ADV7393_1XMEM + bool 'Single' + +config ADV7393_2XMEM + bool 'Double' +endchoice + +config FB_STI + tristate "HP STI frame buffer device support" + depends on FB && PARISC + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select STI_CONSOLE + select VT + default y + ---help--- + STI refers to the HP "Standard Text Interface" which is a set of + BIOS routines contained in a ROM chip in HP PA-RISC based machines. + Enabling this option will implement the linux framebuffer device + using calls to the STI BIOS routines for initialisation. + + If you enable this option, you will get a planar framebuffer device + /dev/fb which will work on the most common HP graphic cards of the + NGLE family, including the artist chips (in the 7xx and Bxxx series), + HCRX, HCRX24, CRX, CRX24 and VisEG series. + + It is safe to enable this option, so you should probably say "Y". + +config FB_MAC + bool "Generic Macintosh display support" + depends on (FB = y) && MAC + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_MACMODES + +config FB_HP300 + bool + depends on (FB = y) && DIO + select FB_CFB_IMAGEBLIT + default y + +config FB_TGA + tristate "TGA/SFB+ framebuffer support" + depends on FB && (ALPHA || TC) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select BITREVERSE + ---help--- + This is the frame buffer device driver for generic TGA and SFB+ + graphic cards. These include DEC ZLXp-E1, -E2 and -E3 PCI cards, + also known as PBXGA-A, -B and -C, and DEC ZLX-E1, -E2 and -E3 + TURBOchannel cards, also known as PMAGD-A, -B and -C. + + Due to hardware limitations ZLX-E2 and E3 cards are not supported + for DECstation 5000/200 systems. Additionally due to firmware + limitations these cards may cause troubles with booting DECstation + 5000/240 and /260 systems, but are fully supported under Linux if + you manage to get it going. ;-) + + Say Y if you have one of those. + +config FB_UVESA + tristate "Userspace VESA VGA graphics support" + depends on FB && CONNECTOR + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_MODE_HELPERS + help + This is the frame buffer driver for generic VBE 2.0 compliant + graphic cards. It can also take advantage of VBE 3.0 features, + such as refresh rate adjustment. + + This driver generally provides more features than vesafb but + requires a userspace helper application called 'v86d'. See + for more information. + + If unsure, say N. + +config FB_VESA + bool "VESA VGA graphics support" + depends on (FB = y) && X86 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_BOOT_VESA_SUPPORT + help + This is the frame buffer device driver for generic VESA 2.0 + compliant graphic cards. The older VESA 1.2 cards are not supported. + You will get a boot time penguin logo at no additional cost. Please + read . If unsure, say Y. + +config FB_EFI + bool "EFI-based Framebuffer Support" + depends on (FB = y) && X86 && EFI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the EFI frame buffer device driver. If the firmware on + your platform is EFI 1.10 or UEFI 2.0, select Y to add support for + using the EFI framebuffer as your console. + +config FB_N411 + tristate "N411 Apollo/Hecuba devkit support" + depends on FB && X86 && MMU + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_SYS_FOPS + select FB_DEFERRED_IO + select FB_HECUBA + help + This enables support for the Apollo display controller in its + Hecuba form using the n411 devkit. + +config FB_HGA + tristate "Hercules mono graphics support" + depends on FB && X86 + help + Say Y here if you have a Hercules mono graphics card. + + To compile this driver as a module, choose M here: the + module will be called hgafb. + + As this card technology is at least 25 years old, + most people will answer N here. + +config FB_SGIVW + tristate "SGI Visual Workstation framebuffer support" + depends on FB && X86_VISWS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + SGI Visual Workstation support for framebuffer graphics. + +config FB_GBE + bool "SGI Graphics Backend frame buffer support" + depends on (FB = y) && (SGI_IP32 || X86_VISWS) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for SGI Graphics Backend. + This chip is used in SGI O2 and Visual Workstation 320/540. + +config FB_GBE_MEM + int "Video memory size in MB" + depends on FB_GBE + default 4 + help + This is the amount of memory reserved for the framebuffer, + which can be any value between 1MB and 8MB. + +config FB_SBUS + bool "SBUS and UPA framebuffers" + depends on (FB = y) && SPARC + help + Say Y if you want support for SBUS or UPA based frame buffer device. + +config FB_BW2 + bool "BWtwo support" + depends on (FB = y) && (SPARC && FB_SBUS) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the BWtwo frame buffer. + +config FB_CG3 + bool "CGthree support" + depends on (FB = y) && (SPARC && FB_SBUS) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the CGthree frame buffer. + +config FB_CG6 + bool "CGsix (GX,TurboGX) support" + depends on (FB = y) && (SPARC && FB_SBUS) + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the CGsix (GX, TurboGX) + frame buffer. + +config FB_FFB + bool "Creator/Creator3D/Elite3D support" + depends on FB_SBUS && SPARC64 + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the Creator, Creator3D, + and Elite3D graphics boards. + +config FB_TCX + bool "TCX (SS4/SS5 only) support" + depends on FB_SBUS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the TCX 24/8bit frame + buffer. + +config FB_CG14 + bool "CGfourteen (SX) support" + depends on FB_SBUS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the CGfourteen frame + buffer on Desktop SPARCsystems with the SX graphics option. + +config FB_P9100 + bool "P9100 (Sparcbook 3 only) support" + depends on FB_SBUS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the P9100 card + supported on Sparcbook 3 machines. + +config FB_LEO + bool "Leo (ZX) support" + depends on FB_SBUS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the SBUS-based Sun ZX + (leo) frame buffer cards. + +config FB_IGA + bool "IGA 168x display support" + depends on (FB = y) && SPARC32 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the framebuffer device for the INTERGRAPHICS 1680 and + successor frame buffer cards. + +config FB_XVR500 + bool "Sun XVR-500 3DLABS Wildcat support" + depends on (FB = y) && PCI && SPARC64 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the framebuffer device for the Sun XVR-500 and similar + graphics cards based upon the 3DLABS Wildcat chipset. The driver + only works on sparc64 systems where the system firmware has + mostly initialized the card already. It is treated as a + completely dumb framebuffer device. + +config FB_XVR2500 + bool "Sun XVR-2500 3DLABS Wildcat support" + depends on (FB = y) && PCI && SPARC64 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the framebuffer device for the Sun XVR-2500 and similar + graphics cards based upon the 3DLABS Wildcat chipset. The driver + only works on sparc64 systems where the system firmware has + mostly initialized the card already. It is treated as a + completely dumb framebuffer device. + +config FB_XVR1000 + bool "Sun XVR-1000 support" + depends on (FB = y) && SPARC64 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the framebuffer device for the Sun XVR-1000 and similar + graphics cards. The driver only works on sparc64 systems where + the system firmware has mostly initialized the card already. It + is treated as a completely dumb framebuffer device. + +config FB_PVR2 + tristate "NEC PowerVR 2 display support" + depends on FB && SH_DREAMCAST + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Say Y here if you have a PowerVR 2 card in your box. If you plan to + run linux on your Dreamcast, you will have to say Y here. + This driver may or may not work on other PowerVR 2 cards, but is + totally untested. Use at your own risk. If unsure, say N. + + To compile this driver as a module, choose M here: the + module will be called pvr2fb. + + You can pass several parameters to the driver at boot time or at + module load time. The parameters look like "video=pvr2:XXX", where + the meaning of XXX can be found at the end of the main source file + (). Please see the file + . + +config FB_S1D13XXX + tristate "Epson S1D13XXX framebuffer support" + depends on FB + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + Support for S1D13XXX framebuffer device family (currently only + working with S1D13806). Product specs at + + +config FB_ATMEL + tristate "AT91/AT32 LCD Controller support" + depends on FB && HAVE_FB_ATMEL + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This enables support for the AT91/AT32 LCD Controller. + +config FB_INTSRAM + bool "Frame Buffer in internal SRAM" + depends on FB_ATMEL && ARCH_AT91SAM9261 + help + Say Y if you want to map Frame Buffer in internal SRAM. Say N if you want + to let frame buffer in external SDRAM. + +config FB_ATMEL_STN + bool "Use a STN display with AT91/AT32 LCD Controller" + depends on FB_ATMEL && (MACH_AT91SAM9261EK || MACH_AT91SAM9G10EK) + default n + help + Say Y if you want to connect a STN LCD display to the AT91/AT32 LCD + Controller. Say N if you want to connect a TFT. + + If unsure, say N. + +config FB_NVIDIA + tristate "nVidia Framebuffer Support" + depends on FB && PCI + select FB_BACKLIGHT if FB_NVIDIA_BACKLIGHT + select FB_MODE_HELPERS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select BITREVERSE + select VGASTATE + help + This driver supports graphics boards with the nVidia chips, TNT + and newer. For very old chipsets, such as the RIVA128, then use + the rivafb. + Say Y if you have such a graphics board. + + To compile this driver as a module, choose M here: the + module will be called nvidiafb. + +config FB_NVIDIA_I2C + bool "Enable DDC Support" + depends on FB_NVIDIA + select FB_DDC + help + This enables I2C support for nVidia Chipsets. This is used + only for getting EDID information from the attached display + allowing for robust video mode handling and switching. + + Because fbdev-2.6 requires that drivers must be able to + independently validate video mode parameters, you should say Y + here. + +config FB_NVIDIA_DEBUG + bool "Lots of debug output" + depends on FB_NVIDIA + default n + help + Say Y here if you want the nVidia driver to output all sorts + of debugging information to provide to the maintainer when + something goes wrong. + +config FB_NVIDIA_BACKLIGHT + bool "Support for backlight control" + depends on FB_NVIDIA + default y + help + Say Y here if you want to control the backlight of your display. + +config FB_RIVA + tristate "nVidia Riva support" + depends on FB && PCI + select FB_BACKLIGHT if FB_RIVA_BACKLIGHT + select FB_MODE_HELPERS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select BITREVERSE + select VGASTATE + help + This driver supports graphics boards with the nVidia Riva/Geforce + chips. + Say Y if you have such a graphics board. + + To compile this driver as a module, choose M here: the + module will be called rivafb. + +config FB_RIVA_I2C + bool "Enable DDC Support" + depends on FB_RIVA + select FB_DDC + help + This enables I2C support for nVidia Chipsets. This is used + only for getting EDID information from the attached display + allowing for robust video mode handling and switching. + + Because fbdev-2.6 requires that drivers must be able to + independently validate video mode parameters, you should say Y + here. + +config FB_RIVA_DEBUG + bool "Lots of debug output" + depends on FB_RIVA + default n + help + Say Y here if you want the Riva driver to output all sorts + of debugging information to provide to the maintainer when + something goes wrong. + +config FB_RIVA_BACKLIGHT + bool "Support for backlight control" + depends on FB_RIVA + default y + help + Say Y here if you want to control the backlight of your display. + +config FB_I740 + tristate "Intel740 support" + depends on FB && PCI + select FB_MODE_HELPERS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select VGASTATE + select FB_DDC + help + This driver supports graphics cards based on Intel740 chip. + +config FB_I810 + tristate "Intel 810/815 support" + depends on FB && PCI && X86_32 && AGP_INTEL + select FB_MODE_HELPERS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select VGASTATE + help + This driver supports the on-board graphics built in to the Intel 810 + and 815 chipsets. Say Y if you have and plan to use such a board. + + To compile this driver as a module, choose M here: the + module will be called i810fb. + + For more information, please read + + +config FB_I810_GTF + bool "use VESA Generalized Timing Formula" + depends on FB_I810 + help + If you say Y, then the VESA standard, Generalized Timing Formula + or GTF, will be used to calculate the required video timing values + per video mode. Since the GTF allows nondiscrete timings + (nondiscrete being a range of values as opposed to discrete being a + set of values), you'll be able to use any combination of horizontal + and vertical resolutions, and vertical refresh rates without having + to specify your own timing parameters. This is especially useful + to maximize the performance of an aging display, or if you just + have a display with nonstandard dimensions. A VESA compliant + monitor is recommended, but can still work with non-compliant ones. + If you need or want this, then select this option. The timings may + not be compliant with Intel's recommended values. Use at your own + risk. + + If you say N, the driver will revert to discrete video timings + using a set recommended by Intel in their documentation. + + If unsure, say N. + +config FB_I810_I2C + bool "Enable DDC Support" + depends on FB_I810 && FB_I810_GTF + select FB_DDC + help + +config FB_LE80578 + tristate "Intel LE80578 (Vermilion) support" + depends on FB && PCI && X86 + select FB_MODE_HELPERS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This driver supports the LE80578 (Vermilion Range) chipset + +config FB_CARILLO_RANCH + tristate "Intel Carillo Ranch support" + depends on FB_LE80578 && FB && PCI && X86 + help + This driver supports the LE80578 (Carillo Ranch) board + +config FB_INTEL + tristate "Intel 830M/845G/852GM/855GM/865G/915G/945G/945GM/965G/965GM support" + depends on FB && PCI && X86 && AGP_INTEL && EXPERT + select FB_MODE_HELPERS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_BOOT_VESA_SUPPORT if FB_INTEL = y + depends on !DRM_I915 + help + This driver supports the on-board graphics built in to the Intel + 830M/845G/852GM/855GM/865G/915G/915GM/945G/945GM/965G/965GM chipsets. + Say Y if you have and plan to use such a board. + + To make FB_INTELFB=Y work you need to say AGP_INTEL=y too. + + To compile this driver as a module, choose M here: the + module will be called intelfb. + + For more information, please read + +config FB_INTEL_DEBUG + bool "Intel driver Debug Messages" + depends on FB_INTEL + ---help--- + Say Y here if you want the Intel driver to output all sorts + of debugging information to provide to the maintainer when + something goes wrong. + +config FB_INTEL_I2C + bool "DDC/I2C for Intel framebuffer support" + depends on FB_INTEL + select FB_DDC + default y + help + Say Y here if you want DDC/I2C support for your on-board Intel graphics. + +config FB_MATROX + tristate "Matrox acceleration" + depends on FB && PCI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_TILEBLITTING + select FB_MACMODES if PPC_PMAC + ---help--- + Say Y here if you have a Matrox Millennium, Matrox Millennium II, + Matrox Mystique, Matrox Mystique 220, Matrox Productiva G100, Matrox + Mystique G200, Matrox Millennium G200, Matrox Marvel G200 video, + Matrox G400, G450 or G550 card in your box. + + To compile this driver as a module, choose M here: the + module will be called matroxfb. + + You can pass several parameters to the driver at boot time or at + module load time. The parameters look like "video=matroxfb:XXX", and + are described in . + +config FB_MATROX_MILLENIUM + bool "Millennium I/II support" + depends on FB_MATROX + help + Say Y here if you have a Matrox Millennium or Matrox Millennium II + video card. If you select "Advanced lowlevel driver options" below, + you should check 4 bpp packed pixel, 8 bpp packed pixel, 16 bpp + packed pixel, 24 bpp packed pixel and 32 bpp packed pixel. You can + also use font widths different from 8. + +config FB_MATROX_MYSTIQUE + bool "Mystique support" + depends on FB_MATROX + help + Say Y here if you have a Matrox Mystique or Matrox Mystique 220 + video card. If you select "Advanced lowlevel driver options" below, + you should check 8 bpp packed pixel, 16 bpp packed pixel, 24 bpp + packed pixel and 32 bpp packed pixel. You can also use font widths + different from 8. + +config FB_MATROX_G + bool "G100/G200/G400/G450/G550 support" + depends on FB_MATROX + ---help--- + Say Y here if you have a Matrox G100, G200, G400, G450 or G550 based + video card. If you select "Advanced lowlevel driver options", you + should check 8 bpp packed pixel, 16 bpp packed pixel, 24 bpp packed + pixel and 32 bpp packed pixel. You can also use font widths + different from 8. + + If you need support for G400 secondary head, you must say Y to + "Matrox I2C support" and "G400 second head support" right below. + G450/G550 secondary head and digital output are supported without + additional modules. + + The driver starts in monitor mode. You must use the matroxset tool + (available at ) to + swap primary and secondary head outputs, or to change output mode. + Secondary head driver always start in 640x480 resolution and you + must use fbset to change it. + + Do not forget that second head supports only 16 and 32 bpp + packed pixels, so it is a good idea to compile them into the kernel + too. You can use only some font widths, as the driver uses generic + painting procedures (the secondary head does not use acceleration + engine). + + G450/G550 hardware can display TV picture only from secondary CRTC, + and it performs no scaling, so picture must have 525 or 625 lines. + +config FB_MATROX_I2C + tristate "Matrox I2C support" + depends on FB_MATROX + select FB_DDC + ---help--- + This drivers creates I2C buses which are needed for accessing the + DDC (I2C) bus present on all Matroxes, an I2C bus which + interconnects Matrox optional devices, like MGA-TVO on G200 and + G400, and the secondary head DDC bus, present on G400 only. + + You can say Y or M here if you want to experiment with monitor + detection code. You must say Y or M here if you want to use either + second head of G400 or MGA-TVO on G200 or G400. + + If you compile it as module, it will create a module named + i2c-matroxfb. + +config FB_MATROX_MAVEN + tristate "G400 second head support" + depends on FB_MATROX_G && FB_MATROX_I2C + ---help--- + WARNING !!! This support does not work with G450 !!! + + Say Y or M here if you want to use a secondary head (meaning two + monitors in parallel) on G400 or MGA-TVO add-on on G200. Secondary + head is not compatible with accelerated XFree 3.3.x SVGA servers - + secondary head output is blanked while you are in X. With XFree + 3.9.17 preview you can use both heads if you use SVGA over fbdev or + the fbdev driver on first head and the fbdev driver on second head. + + If you compile it as module, two modules are created, + matroxfb_crtc2 and matroxfb_maven. Matroxfb_maven is needed for + both G200 and G400, matroxfb_crtc2 is needed only by G400. You must + also load i2c-matroxfb to get it to run. + + The driver starts in monitor mode and you must use the matroxset + tool (available at + ) to switch it to + PAL or NTSC or to swap primary and secondary head outputs. + Secondary head driver also always start in 640x480 resolution, you + must use fbset to change it. + + Also do not forget that second head supports only 16 and 32 bpp + packed pixels, so it is a good idea to compile them into the kernel + too. You can use only some font widths, as the driver uses generic + painting procedures (the secondary head does not use acceleration + engine). + +config FB_RADEON + tristate "ATI Radeon display support" + depends on FB && PCI + select FB_BACKLIGHT if FB_RADEON_BACKLIGHT + select FB_MODE_HELPERS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_MACMODES if PPC_OF + help + Choose this option if you want to use an ATI Radeon graphics card as + a framebuffer device. There are both PCI and AGP versions. You + don't need to choose this to run the Radeon in plain VGA mode. + + There is a product page at + http://products.amd.com/en-us/GraphicCardResult.aspx + +config FB_RADEON_I2C + bool "DDC/I2C for ATI Radeon support" + depends on FB_RADEON + select FB_DDC + default y + help + Say Y here if you want DDC/I2C support for your Radeon board. + +config FB_RADEON_BACKLIGHT + bool "Support for backlight control" + depends on FB_RADEON + default y + help + Say Y here if you want to control the backlight of your display. + +config FB_RADEON_DEBUG + bool "Lots of debug output from Radeon driver" + depends on FB_RADEON + default n + help + Say Y here if you want the Radeon driver to output all sorts + of debugging information to provide to the maintainer when + something goes wrong. + +config FB_ATY128 + tristate "ATI Rage128 display support" + depends on FB && PCI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_BACKLIGHT if FB_ATY128_BACKLIGHT + select FB_MACMODES if PPC_PMAC + help + This driver supports graphics boards with the ATI Rage128 chips. + Say Y if you have such a graphics board and read + . + + To compile this driver as a module, choose M here: the + module will be called aty128fb. + +config FB_ATY128_BACKLIGHT + bool "Support for backlight control" + depends on FB_ATY128 + default y + help + Say Y here if you want to control the backlight of your display. + +config FB_ATY + tristate "ATI Mach64 display support" if PCI || ATARI + depends on FB && !SPARC32 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_BACKLIGHT if FB_ATY_BACKLIGHT + select FB_MACMODES if PPC + help + This driver supports graphics boards with the ATI Mach64 chips. + Say Y if you have such a graphics board. + + To compile this driver as a module, choose M here: the + module will be called atyfb. + +config FB_ATY_CT + bool "Mach64 CT/VT/GT/LT (incl. 3D RAGE) support" + depends on PCI && FB_ATY + default y if SPARC64 && PCI + help + Say Y here to support use of ATI's 64-bit Rage boards (or other + boards based on the Mach64 CT, VT, GT, and LT chipsets) as a + framebuffer device. The ATI product support page for these boards + is at . + +config FB_ATY_GENERIC_LCD + bool "Mach64 generic LCD support" + depends on FB_ATY_CT + help + Say Y if you have a laptop with an ATI Rage LT PRO, Rage Mobility, + Rage XC, or Rage XL chipset. + +config FB_ATY_GX + bool "Mach64 GX support" if PCI + depends on FB_ATY + default y if ATARI + help + Say Y here to support use of the ATI Mach64 Graphics Expression + board (or other boards based on the Mach64 GX chipset) as a + framebuffer device. The ATI product support page for these boards + is at + . + +config FB_ATY_BACKLIGHT + bool "Support for backlight control" + depends on FB_ATY + default y + help + Say Y here if you want to control the backlight of your display. + +config FB_S3 + tristate "S3 Trio/Virge support" + depends on FB && PCI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_TILEBLITTING + select FB_SVGALIB + select VGASTATE + select FONT_8x16 if FRAMEBUFFER_CONSOLE + ---help--- + Driver for graphics boards with S3 Trio / S3 Virge chip. + +config FB_S3_DDC + bool "DDC for S3 support" + depends on FB_S3 + select FB_DDC + default y + help + Say Y here if you want DDC support for your S3 graphics card. + +config FB_SAVAGE + tristate "S3 Savage support" + depends on FB && PCI + select FB_MODE_HELPERS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select VGASTATE + help + This driver supports notebooks and computers with S3 Savage PCI/AGP + chips. + + Say Y if you have such a graphics card. + + To compile this driver as a module, choose M here; the module + will be called savagefb. + +config FB_SAVAGE_I2C + bool "Enable DDC2 Support" + depends on FB_SAVAGE + select FB_DDC + help + This enables I2C support for S3 Savage Chipsets. This is used + only for getting EDID information from the attached display + allowing for robust video mode handling and switching. + + Because fbdev-2.6 requires that drivers must be able to + independently validate video mode parameters, you should say Y + here. + +config FB_SAVAGE_ACCEL + bool "Enable Console Acceleration" + depends on FB_SAVAGE + default n + help + This option will compile in console acceleration support. If + the resulting framebuffer console has bothersome glitches, then + choose N here. + +config FB_SIS + tristate "SiS/XGI display support" + depends on FB && PCI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_BOOT_VESA_SUPPORT if FB_SIS = y + help + This is the frame buffer device driver for the SiS 300, 315, 330 + and 340 series as well as XGI V3XT, V5, V8, Z7 graphics chipsets. + Specs available at and . + + To compile this driver as a module, choose M here; the module + will be called sisfb. + +config FB_SIS_300 + bool "SiS 300 series support" + depends on FB_SIS + help + Say Y here to support use of the SiS 300/305, 540, 630 and 730. + +config FB_SIS_315 + bool "SiS 315/330/340 series and XGI support" + depends on FB_SIS + help + Say Y here to support use of the SiS 315, 330 and 340 series + (315/H/PRO, 55x, 650, 651, 740, 330, 661, 741, 760, 761) as well + as XGI V3XT, V5, V8 and Z7. + +config FB_VIA + tristate "VIA UniChrome (Pro) and Chrome9 display support" + depends on FB && PCI && X86 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select I2C_ALGOBIT + select I2C + select GPIOLIB + help + This is the frame buffer device driver for Graphics chips of VIA + UniChrome (Pro) Family (CLE266,PM800/CN400,P4M800CE/P4M800Pro/ + CN700/VN800,CX700/VX700,P4M890) and Chrome9 Family (K8M890,CN896 + /P4M900,VX800) + Say Y if you have a VIA UniChrome graphics board. + + To compile this driver as a module, choose M here: the + module will be called viafb. + +if FB_VIA + +config FB_VIA_DIRECT_PROCFS + bool "direct hardware access via procfs (DEPRECATED)(DANGEROUS)" + depends on FB_VIA + default n + help + Allow direct hardware access to some output registers via procfs. + This is dangerous but may provide the only chance to get the + correct output device configuration. + Its use is strongly discouraged. + +config FB_VIA_X_COMPATIBILITY + bool "X server compatibility" + depends on FB_VIA + default n + help + This option reduces the functionality (power saving, ...) of the + framebuffer to avoid negative impact on the OpenChrome X server. + If you use any X server other than fbdev you should enable this + otherwise it should be safe to disable it and allow using all + features. + +endif + +config FB_NEOMAGIC + tristate "NeoMagic display support" + depends on FB && PCI + select FB_MODE_HELPERS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select VGASTATE + help + This driver supports notebooks with NeoMagic PCI chips. + Say Y if you have such a graphics card. + + To compile this driver as a module, choose M here: the + module will be called neofb. + +config FB_KYRO + tristate "IMG Kyro support" + depends on FB && PCI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + Say Y here if you have a STG4000 / Kyro / PowerVR 3 based + graphics board. + + To compile this driver as a module, choose M here: the + module will be called kyrofb. + +config FB_3DFX + tristate "3Dfx Banshee/Voodoo3/Voodoo5 display support" + depends on FB && PCI + select FB_CFB_IMAGEBLIT + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_MODE_HELPERS + help + This driver supports graphics boards with the 3Dfx Banshee, + Voodoo3 or VSA-100 (aka Voodoo4/5) chips. Say Y if you have + such a graphics board. + + To compile this driver as a module, choose M here: the + module will be called tdfxfb. + +config FB_3DFX_ACCEL + bool "3Dfx Acceleration functions" + depends on FB_3DFX + ---help--- + This will compile the 3Dfx Banshee/Voodoo3/VSA-100 frame buffer + device driver with acceleration functions. + +config FB_3DFX_I2C + bool "Enable DDC/I2C support" + depends on FB_3DFX + select FB_DDC + default y + help + Say Y here if you want DDC/I2C support for your 3dfx Voodoo3. + +config FB_VOODOO1 + tristate "3Dfx Voodoo Graphics (sst1) support" + depends on FB && PCI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Say Y here if you have a 3Dfx Voodoo Graphics (Voodoo1/sst1) or + Voodoo2 (cvg) based graphics card. + + To compile this driver as a module, choose M here: the + module will be called sstfb. + + WARNING: Do not use any application that uses the 3D engine + (namely glide) while using this driver. + Please read the for supported + options and other important info support. + +config FB_VT8623 + tristate "VIA VT8623 support" + depends on FB && PCI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_TILEBLITTING + select FB_SVGALIB + select VGASTATE + select FONT_8x16 if FRAMEBUFFER_CONSOLE + ---help--- + Driver for CastleRock integrated graphics core in the + VIA VT8623 [Apollo CLE266] chipset. + +config FB_TRIDENT + tristate "Trident/CyberXXX/CyberBlade support" + depends on FB && PCI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + This is the frame buffer device driver for Trident PCI/AGP chipsets. + Supported chipset families are TGUI 9440/96XX, 3DImage, Blade3D + and Blade XP. + There are also integrated versions of these chips called CyberXXXX, + CyberImage or CyberBlade. These chips are mostly found in laptops + but also on some motherboards including early VIA EPIA motherboards. + For more information, read + + Say Y if you have such a graphics board. + + To compile this driver as a module, choose M here: the + module will be called tridentfb. + +config FB_ARK + tristate "ARK 2000PV support" + depends on FB && PCI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_TILEBLITTING + select FB_SVGALIB + select VGASTATE + select FONT_8x16 if FRAMEBUFFER_CONSOLE + ---help--- + Driver for PCI graphics boards with ARK 2000PV chip + and ICS 5342 RAMDAC. + +config FB_PM3 + tristate "Permedia3 support" + depends on FB && PCI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the 3DLabs Permedia3 + chipset, used in Formac ProFormance III, 3DLabs Oxygen VX1 & + similar boards, 3DLabs Permedia3 Create!, Appian Jeronimo 2000 + and maybe other boards. + +config FB_CARMINE + tristate "Fujitsu carmine frame buffer support" + depends on FB && PCI + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the Fujitsu Carmine chip. + The driver provides two independent frame buffer devices. + +choice + depends on FB_CARMINE + prompt "DRAM timing" + default FB_CARMINE_DRAM_EVAL + +config FB_CARMINE_DRAM_EVAL + bool "Eval board timings" + help + Use timings which work on the eval card. + +config CARMINE_DRAM_CUSTOM + bool "Custom board timings" + help + Use custom board timings. +endchoice + +config FB_AU1100 + bool "Au1100 LCD Driver" + depends on (FB = y) && MIPS_ALCHEMY + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the framebuffer driver for the AMD Au1100 SOC. It can drive + various panels and CRTs by passing in kernel cmd line option + au1100fb:panel=. + +config FB_AU1200 + bool "Au1200/Au1300 LCD Driver" + depends on (FB = y) && MIPS_ALCHEMY + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_SYS_FOPS + help + This is the framebuffer driver for the Au1200/Au1300 SOCs. + It can drive various panels and CRTs by passing in kernel cmd line + option au1200fb:panel=. + +config FB_VT8500 + bool "VIA VT8500 framebuffer support" + depends on (FB = y) && ARM && ARCH_VT8500 + select FB_SYS_FILLRECT if (!FB_WMT_GE_ROPS) + select FB_SYS_COPYAREA if (!FB_WMT_GE_ROPS) + select FB_SYS_IMAGEBLIT + select FB_MODE_HELPERS + select VIDEOMODE_HELPERS + help + This is the framebuffer driver for VIA VT8500 integrated LCD + controller. + +config FB_WM8505 + bool "Wondermedia WM8xxx-series frame buffer support" + depends on (FB = y) && ARM && ARCH_VT8500 + select FB_SYS_FILLRECT if (!FB_WMT_GE_ROPS) + select FB_SYS_COPYAREA if (!FB_WMT_GE_ROPS) + select FB_SYS_IMAGEBLIT + select FB_MODE_HELPERS + select VIDEOMODE_HELPERS + help + This is the framebuffer driver for WonderMedia WM8xxx-series + integrated LCD controller. This driver covers the WM8505, WM8650 + and WM8850 SoCs. + +config FB_WMT_GE_ROPS + bool "VT8500/WM8xxx accelerated raster ops support" + depends on (FB = y) && (FB_VT8500 || FB_WM8505) + default n + help + This adds support for accelerated raster operations on the + VIA VT8500 and Wondermedia 85xx series SoCs. + +source "drivers/video/geode/Kconfig" + +config FB_HIT + tristate "HD64461 Frame Buffer support" + depends on FB && HD64461 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This is the frame buffer device driver for the Hitachi HD64461 LCD + frame buffer card. + +config FB_PMAG_AA + bool "PMAG-AA TURBOchannel framebuffer support" + depends on (FB = y) && TC + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + Support for the PMAG-AA TURBOchannel framebuffer card (1280x1024x1) + used mainly in the MIPS-based DECstation series. + +config FB_PMAG_BA + tristate "PMAG-BA TURBOchannel framebuffer support" + depends on FB && TC + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + Support for the PMAG-BA TURBOchannel framebuffer card (1024x864x8) + used mainly in the MIPS-based DECstation series. + +config FB_PMAGB_B + tristate "PMAGB-B TURBOchannel framebuffer support" + depends on FB && TC + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + Support for the PMAGB-B TURBOchannel framebuffer card used mainly + in the MIPS-based DECstation series. The card is currently only + supported in 1280x1024x8 mode. + +config FB_MAXINE + bool "Maxine (Personal DECstation) onboard framebuffer support" + depends on (FB = y) && MACH_DECSTATION + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + Support for the onboard framebuffer (1024x768x8) in the Personal + DECstation series (Personal DECstation 5000/20, /25, /33, /50, + Codename "Maxine"). + +config FB_G364 + bool "G364 frame buffer support" + depends on (FB = y) && (MIPS_MAGNUM_4000 || OLIVETTI_M700) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + The G364 driver is the framebuffer used in MIPS Magnum 4000 and + Olivetti M700-10 systems. + +config FB_68328 + bool "Motorola 68328 native frame buffer support" + depends on (FB = y) && (M68328 || M68EZ328 || M68VZ328) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + Say Y here if you want to support the built-in frame buffer of + the Motorola 68328 CPU family. + +config FB_PXA168 + tristate "PXA168/910 LCD framebuffer support" + depends on FB && (CPU_PXA168 || CPU_PXA910) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Frame buffer driver for the built-in LCD controller in the Marvell + MMP processor. + +config FB_PXA + tristate "PXA LCD framebuffer support" + depends on FB && ARCH_PXA + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Frame buffer driver for the built-in LCD controller in the Intel + PXA2x0 processor. + + This driver is also available as a module ( = code which can be + inserted and removed from the running kernel whenever you want). The + module will be called pxafb. If you want to compile it as a module, + say M here and read . + + If unsure, say N. + +config FB_PXA_OVERLAY + bool "Support PXA27x/PXA3xx Overlay(s) as framebuffer" + default n + depends on FB_PXA && (PXA27x || PXA3xx) + +config FB_PXA_SMARTPANEL + bool "PXA Smartpanel LCD support" + default n + depends on FB_PXA + +config FB_PXA_PARAMETERS + bool "PXA LCD command line parameters" + default n + depends on FB_PXA + ---help--- + Enable the use of kernel command line or module parameters + to configure the physical properties of the LCD panel when + using the PXA LCD driver. + + This option allows you to override the panel parameters + supplied by the platform in order to support multiple + different models of flatpanel. If you will only be using a + single model of flatpanel then you can safely leave this + option disabled. + + describes the available parameters. + +config PXA3XX_GCU + tristate "PXA3xx 2D graphics accelerator driver" + depends on FB_PXA + help + Kernelspace driver for the 2D graphics controller unit (GCU) + found on PXA3xx processors. There is a counterpart driver in the + DirectFB suite, see http://www.directfb.org/ + + If you compile this as a module, it will be called pxa3xx_gcu. + +config FB_MBX + tristate "2700G LCD framebuffer support" + depends on FB && ARCH_PXA + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Framebuffer driver for the Intel 2700G (Marathon) Graphics + Accelerator + +config FB_MBX_DEBUG + bool "Enable debugging info via debugfs" + depends on FB_MBX && DEBUG_FS + default n + ---help--- + Enable this if you want debugging information using the debug + filesystem (debugfs) + + If unsure, say N. + +config FB_FSL_DIU + tristate "Freescale DIU framebuffer support" + depends on FB && FSL_SOC + select FB_MODE_HELPERS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select PPC_LIB_RHEAP + ---help--- + Framebuffer driver for the Freescale SoC DIU + +config FB_W100 + tristate "W100 frame buffer support" + depends on FB && ARCH_PXA + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Frame buffer driver for the w100 as found on the Sharp SL-Cxx series. + It can also drive the w3220 chip found on iPAQ hx4700. + + This driver is also available as a module ( = code which can be + inserted and removed from the running kernel whenever you want). The + module will be called w100fb. If you want to compile it as a module, + say M here and read . + + If unsure, say N. + +config FB_SH_MOBILE_LCDC + tristate "SuperH Mobile LCDC framebuffer support" + depends on FB && (SUPERH || ARCH_SHMOBILE) && HAVE_CLK + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_SYS_FOPS + select FB_DEFERRED_IO + select FB_BACKLIGHT + select SH_MIPI_DSI if SH_LCD_MIPI_DSI + ---help--- + Frame buffer driver for the on-chip SH-Mobile LCD controller. + +config FB_SH_MOBILE_HDMI + tristate "SuperH Mobile HDMI controller support" + depends on FB_SH_MOBILE_LCDC + select FB_MODE_HELPERS + select SOUND + select SND + select SND_SOC + ---help--- + Driver for the on-chip SH-Mobile HDMI controller. + +config FB_TMIO + tristate "Toshiba Mobile IO FrameBuffer support" + depends on FB && MFD_CORE + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Frame buffer driver for the Toshiba Mobile IO integrated as found + on the Sharp SL-6000 series + + This driver is also available as a module ( = code which can be + inserted and removed from the running kernel whenever you want). The + module will be called tmiofb. If you want to compile it as a module, + say M here and read . + + If unsure, say N. + +config FB_TMIO_ACCELL + bool "tmiofb acceleration" + depends on FB_TMIO + default y + +config FB_S3C + tristate "Samsung S3C framebuffer support" + depends on FB && (CPU_S3C2416 || ARCH_S3C64XX || ARCH_S5P64X0 || \ + ARCH_S5PC100 || ARCH_S5PV210 || ARCH_EXYNOS) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Frame buffer driver for the built-in FB controller in the Samsung + SoC line from the S3C2443 onwards, including the S3C2416, S3C2450, + and the S3C64XX series such as the S3C6400 and S3C6410. + + These chips all have the same basic framebuffer design with the + actual capabilities depending on the chip. For instance the S3C6400 + and S3C6410 support 4 hardware windows whereas the S3C24XX series + currently only have two. + + Currently the support is only for the S3C6400 and S3C6410 SoCs. + +config FB_S3C_DEBUG_REGWRITE + bool "Debug register writes" + depends on FB_S3C + ---help--- + Show all register writes via pr_debug() + +config FB_S3C2410 + tristate "S3C2410 LCD framebuffer support" + depends on FB && ARCH_S3C24XX + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Frame buffer driver for the built-in LCD controller in the Samsung + S3C2410 processor. + + This driver is also available as a module ( = code which can be + inserted and removed from the running kernel whenever you want). The + module will be called s3c2410fb. If you want to compile it as a module, + say M here and read . + + If unsure, say N. +config FB_S3C2410_DEBUG + bool "S3C2410 lcd debug messages" + depends on FB_S3C2410 + help + Turn on debugging messages. Note that you can set/unset at run time + through sysfs + +config FB_NUC900 + bool "NUC900 LCD framebuffer support" + depends on FB && ARCH_W90X900 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Frame buffer driver for the built-in LCD controller in the Nuvoton + NUC900 processor + +config GPM1040A0_320X240 + bool "Giantplus Technology GPM1040A0 320x240 Color TFT LCD" + depends on FB_NUC900 + +config FB_NUC900_DEBUG + bool "NUC900 lcd debug messages" + depends on FB_NUC900 + help + Turn on debugging messages. Note that you can set/unset at run time + through sysfs + +config FB_SM501 + tristate "Silicon Motion SM501 framebuffer support" + depends on FB && MFD_SM501 + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Frame buffer driver for the CRT and LCD controllers in the Silicon + Motion SM501. + + This driver is also available as a module ( = code which can be + inserted and removed from the running kernel whenever you want). The + module will be called sm501fb. If you want to compile it as a module, + say M here and read . + + If unsure, say N. + +config FB_SMSCUFX + tristate "SMSC UFX6000/7000 USB Framebuffer support" + depends on FB && USB + select FB_MODE_HELPERS + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_SYS_FOPS + select FB_DEFERRED_IO + ---help--- + This is a kernel framebuffer driver for SMSC UFX USB devices. + Supports fbdev clients like xf86-video-fbdev, kdrive, fbi, and + mplayer -vo fbdev. Supports both UFX6000 (USB 2.0) and UFX7000 + (USB 3.0) devices. + To compile as a module, choose M here: the module name is smscufx. + +config FB_UDL + tristate "Displaylink USB Framebuffer support" + depends on FB && USB + select FB_MODE_HELPERS + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_SYS_FOPS + select FB_DEFERRED_IO + ---help--- + This is a kernel framebuffer driver for DisplayLink USB devices. + Supports fbdev clients like xf86-video-fbdev, kdrive, fbi, and + mplayer -vo fbdev. Supports all USB 2.0 era DisplayLink devices. + To compile as a module, choose M here: the module name is udlfb. + +config FB_IBM_GXT4500 + tristate "Framebuffer support for IBM GXT4000P/4500P/6000P/6500P adaptors" + depends on FB && PPC + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Say Y here to enable support for the IBM GXT4000P/6000P and + GXT4500P/6500P display adaptor based on Raster Engine RC1000, + found on some IBM System P (pSeries) machines. This driver + doesn't use Geometry Engine GT1000. + +config FB_PS3 + tristate "PS3 GPU framebuffer driver" + depends on FB && PS3_PS3AV + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_SYS_FOPS + select VT_HW_CONSOLE_BINDING if FRAMEBUFFER_CONSOLE + ---help--- + Include support for the virtual frame buffer in the PS3 platform. + +config FB_PS3_DEFAULT_SIZE_M + int "PS3 default frame buffer size (in MiB)" + depends on FB_PS3 + default 9 + ---help--- + This is the default size (in MiB) of the virtual frame buffer in + the PS3. + The default value can be overridden on the kernel command line + using the "ps3fb" option (e.g. "ps3fb=9M"); + +config FB_XILINX + tristate "Xilinx frame buffer support" + depends on FB && (XILINX_VIRTEX || MICROBLAZE) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Include support for the Xilinx ML300/ML403 reference design + framebuffer. ML300 carries a 640*480 LCD display on the board, + ML403 uses a standard DB15 VGA connector. + +config FB_GOLDFISH + tristate "Goldfish Framebuffer" + depends on FB && HAS_DMA + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Framebuffer driver for Goldfish Virtual Platform + +config FB_COBALT + tristate "Cobalt server LCD frame buffer support" + depends on FB && (MIPS_COBALT || MIPS_SEAD3) + +config FB_SH7760 + bool "SH7760/SH7763/SH7720/SH7721 LCDC support" + depends on FB && (CPU_SUBTYPE_SH7760 || CPU_SUBTYPE_SH7763 \ + || CPU_SUBTYPE_SH7720 || CPU_SUBTYPE_SH7721) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Support for the SH7760/SH7763/SH7720/SH7721 integrated + (D)STN/TFT LCD Controller. + Supports display resolutions up to 1024x1024 pixel, grayscale and + color operation, with depths ranging from 1 bpp to 8 bpp monochrome + and 8, 15 or 16 bpp color; 90 degrees clockwise display rotation for + panels <= 320 pixel horizontal resolution. + +config FB_DA8XX + tristate "DA8xx/OMAP-L1xx Framebuffer support" + depends on FB && ARCH_DAVINCI_DA8XX + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_CFB_REV_PIXELS_IN_BYTE + ---help--- + This is the frame buffer device driver for the TI LCD controller + found on DA8xx/OMAP-L1xx SoCs. + If unsure, say N. + +config FB_VIRTUAL + tristate "Virtual Frame Buffer support (ONLY FOR TESTING!)" + depends on FB + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_SYS_FOPS + ---help--- + This is a `virtual' frame buffer device. It operates on a chunk of + unswappable kernel memory instead of on the memory of a graphics + board. This means you cannot see any output sent to this frame + buffer device, while it does consume precious memory. The main use + of this frame buffer device is testing and debugging the frame + buffer subsystem. Do NOT enable it for normal systems! To protect + the innocent, it has to be enabled explicitly at boot time using the + kernel option `video=vfb:'. + + To compile this driver as a module, choose M here: the + module will be called vfb. In order to load it, you must use + the vfb_enable=1 option. + + If unsure, say N. + +config XEN_FBDEV_FRONTEND + tristate "Xen virtual frame buffer support" + depends on FB && XEN + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_SYS_FOPS + select FB_DEFERRED_IO + select INPUT_XEN_KBDDEV_FRONTEND if INPUT_MISC + select XEN_XENBUS_FRONTEND + default y + help + This driver implements the front-end of the Xen virtual + frame buffer driver. It communicates with a back-end + in another domain. + +config FB_METRONOME + tristate "E-Ink Metronome/8track controller support" + depends on FB + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_SYS_FOPS + select FB_DEFERRED_IO + help + This driver implements support for the E-Ink Metronome + controller. The pre-release name for this device was 8track + and could also have been called by some vendors as PVI-nnnn. + +config FB_MB862XX + tristate "Fujitsu MB862xx GDC support" + depends on FB + depends on PCI || (OF && PPC) + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Frame buffer driver for Fujitsu Carmine/Coral-P(A)/Lime controllers. + +choice + prompt "GDC variant" + depends on FB_MB862XX + +config FB_MB862XX_PCI_GDC + bool "Carmine/Coral-P(A) GDC" + depends on PCI + ---help--- + This enables framebuffer support for Fujitsu Carmine/Coral-P(A) + PCI graphics controller devices. + +config FB_MB862XX_LIME + bool "Lime GDC" + depends on OF && PPC + select FB_FOREIGN_ENDIAN + select FB_LITTLE_ENDIAN + ---help--- + Framebuffer support for Fujitsu Lime GDC on host CPU bus. + +endchoice + +config FB_MB862XX_I2C + bool "Support I2C bus on MB862XX GDC" + depends on FB_MB862XX && I2C + default y + help + Selecting this option adds Coral-P(A)/Lime GDC I2C bus adapter + driver to support accessing I2C devices on controller's I2C bus. + These are usually some video decoder chips. + +config FB_EP93XX + tristate "EP93XX frame buffer support" + depends on FB && ARCH_EP93XX + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + ---help--- + Framebuffer driver for the Cirrus Logic EP93XX series of processors. + This driver is also available as a module. The module will be called + ep93xx-fb. + +config FB_PRE_INIT_FB + bool "Don't reinitialize, use bootloader's GDC/Display configuration" + depends on FB && FB_MB862XX_LIME + ---help--- + Select this option if display contents should be inherited as set by + the bootloader. + +config FB_MSM + tristate "MSM Framebuffer support" + depends on FB && ARCH_MSM + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + +config FB_MX3 + tristate "MX3 Framebuffer support" + depends on FB && MX3_IPU + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + default y + help + This is a framebuffer device for the i.MX31 LCD Controller. So + far only synchronous displays are supported. If you plan to use + an LCD display with your i.MX31 system, say Y here. + +config FB_BROADSHEET + tristate "E-Ink Broadsheet/Epson S1D13521 controller support" + depends on FB + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_SYS_FOPS + select FB_DEFERRED_IO + help + This driver implements support for the E-Ink Broadsheet + controller. The release name for this device was Epson S1D13521 + and could also have been called by other names when coupled with + a bridge adapter. + +config FB_AUO_K190X + tristate "AUO-K190X EPD controller support" + depends on FB + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_SYS_FOPS + select FB_DEFERRED_IO + help + Provides support for epaper controllers from the K190X series + of AUO. These controllers can be used to drive epaper displays + from Sipix. + + This option enables the common support, shared by the individual + controller drivers. You will also have to enable the driver + for the controller type used in your device. + +config FB_AUO_K1900 + tristate "AUO-K1900 EPD controller support" + depends on FB && FB_AUO_K190X + help + This driver implements support for the AUO K1900 epd-controller. + This controller can drive Sipix epaper displays but can only do + serial updates, reducing the number of possible frames per second. + +config FB_AUO_K1901 + tristate "AUO-K1901 EPD controller support" + depends on FB && FB_AUO_K190X + help + This driver implements support for the AUO K1901 epd-controller. + This controller can drive Sipix epaper displays and supports + concurrent updates, making higher frames per second possible. + +config FB_JZ4740 + tristate "JZ4740 LCD framebuffer support" + depends on FB && MACH_JZ4740 + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + help + Framebuffer support for the JZ4740 SoC. + +config FB_MXS + tristate "MXS LCD framebuffer support" + depends on FB && ARCH_MXS + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + select FB_MODE_HELPERS + select VIDEOMODE_HELPERS + help + Framebuffer support for the MXS SoC. + +config FB_PUV3_UNIGFX + tristate "PKUnity v3 Unigfx framebuffer support" + depends on FB && UNICORE32 && ARCH_PUV3 + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_SYS_FOPS + help + Choose this option if you want to use the Unigfx device as a + framebuffer device. Without the support of PCI & AGP. + +config FB_HYPERV + tristate "Microsoft Hyper-V Synthetic Video support" + depends on FB && HYPERV + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + This framebuffer driver supports Microsoft Hyper-V Synthetic Video. + +config FB_SIMPLE + bool "Simple framebuffer support" + depends on (FB = y) && OF + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + help + Say Y if you want support for a simple frame-buffer. + + This driver assumes that the display hardware has been initialized + before the kernel boots, and the kernel will simply render to the + pre-allocated frame buffer surface. + + Configuration re: surface address, size, and format must be provided + through device tree, or potentially plain old platform data in the + future. + +source "drivers/video/sprdfb/Kconfig" + +source "drivers/video/omap/Kconfig" +source "drivers/video/omap2/Kconfig" +source "drivers/video/exynos/Kconfig" +source "drivers/video/mmp/Kconfig" +source "drivers/video/backlight/Kconfig" +source "drivers/video/adf/Kconfig" + +if VT + source "drivers/video/console/Kconfig" +endif + +if FB || SGI_NEWPORT_CONSOLE + source "drivers/video/logo/Kconfig" +endif + +config FB_SH_MOBILE_MERAM + tristate "SuperH Mobile MERAM read ahead support" + depends on (SUPERH || ARCH_SHMOBILE) + select GENERIC_ALLOCATOR + ---help--- + Enable MERAM support for the SuperH controller. + + This will allow for caching of the framebuffer to provide more + reliable access under heavy main memory bus traffic situations. + Up to 4 memory channels can be configured, allowing 4 RGB or + 2 YCbCr framebuffers to be configured. + +config FB_SSD1307 + tristate "Solomon SSD1307 framebuffer support" + depends on FB && I2C + depends on OF + depends on GPIOLIB + select FB_SYS_FOPS + select FB_SYS_FILLRECT + select FB_SYS_COPYAREA + select FB_SYS_IMAGEBLIT + select FB_DEFERRED_IO + select PWM + help + This driver implements support for the Solomon SSD1307 + OLED controller over I2C. + +endmenu diff --git a/drivers/video/Makefile b/drivers/video/Makefile new file mode 100644 index 00000000..907e3975 --- /dev/null +++ b/drivers/video/Makefile @@ -0,0 +1,189 @@ +# Makefile for the Linux video drivers. +# 5 Aug 1999, James Simmons, +# Rewritten to use lists instead of if-statements. + +# Each configuration option enables a list of files. + +obj-$(CONFIG_VGASTATE) += vgastate.o +obj-$(CONFIG_HDMI) += hdmi.o +obj-y += fb_notify.o +obj-$(CONFIG_FB) += fb.o +fb-y := fbmem.o fbmon.o fbcmap.o fbsysfs.o \ + modedb.o fbcvt.o +fb-objs := $(fb-y) + +obj-$(CONFIG_ADF) += adf/ +obj-$(CONFIG_VT) += console/ +obj-$(CONFIG_LOGO) += logo/ +obj-y += backlight/ + +obj-$(CONFIG_EXYNOS_VIDEO) += exynos/ + +obj-$(CONFIG_FB_CFB_FILLRECT) += cfbfillrect.o +obj-$(CONFIG_FB_CFB_COPYAREA) += cfbcopyarea.o +obj-$(CONFIG_FB_CFB_IMAGEBLIT) += cfbimgblt.o +obj-$(CONFIG_FB_SYS_FILLRECT) += sysfillrect.o +obj-$(CONFIG_FB_SYS_COPYAREA) += syscopyarea.o +obj-$(CONFIG_FB_SYS_IMAGEBLIT) += sysimgblt.o +obj-$(CONFIG_FB_SYS_FOPS) += fb_sys_fops.o +obj-$(CONFIG_FB_SVGALIB) += svgalib.o +obj-$(CONFIG_FB_MACMODES) += macmodes.o +obj-$(CONFIG_FB_DDC) += fb_ddc.o +obj-$(CONFIG_FB_DEFERRED_IO) += fb_defio.o +obj-$(CONFIG_FB_WMT_GE_ROPS) += wmt_ge_rops.o + +# Hardware specific drivers go first +obj-$(CONFIG_FB_SC8825) += sprdfb/ +obj-$(CONFIG_FB_SCX35) += sprdfb/ +obj-$(CONFIG_FB_SCX30G) += sprdfb/ +obj-$(CONFIG_FB_SCX15) += sprdfb/ +obj-$(CONFIG_FB_SCX35L) += sprdfb/ +obj-$(CONFIG_FB_AMIGA) += amifb.o c2p_planar.o +obj-$(CONFIG_FB_ARC) += arcfb.o +obj-$(CONFIG_FB_CLPS711X) += clps711xfb.o +obj-$(CONFIG_FB_CYBER2000) += cyber2000fb.o +obj-$(CONFIG_FB_GRVGA) += grvga.o +obj-$(CONFIG_FB_PM2) += pm2fb.o +obj-$(CONFIG_FB_PM3) += pm3fb.o + +obj-$(CONFIG_FB_I740) += i740fb.o +obj-$(CONFIG_FB_MATROX) += matrox/ +obj-$(CONFIG_FB_RIVA) += riva/ +obj-$(CONFIG_FB_NVIDIA) += nvidia/ +obj-$(CONFIG_FB_ATY) += aty/ macmodes.o +obj-$(CONFIG_FB_ATY128) += aty/ macmodes.o +obj-$(CONFIG_FB_RADEON) += aty/ +obj-$(CONFIG_FB_SIS) += sis/ +obj-$(CONFIG_FB_VIA) += via/ +obj-$(CONFIG_FB_KYRO) += kyro/ +obj-$(CONFIG_FB_SAVAGE) += savage/ +obj-$(CONFIG_FB_GEODE) += geode/ +obj-$(CONFIG_FB_MBX) += mbx/ +obj-$(CONFIG_FB_NEOMAGIC) += neofb.o +obj-$(CONFIG_FB_3DFX) += tdfxfb.o +obj-$(CONFIG_FB_CONTROL) += controlfb.o +obj-$(CONFIG_FB_PLATINUM) += platinumfb.o +obj-$(CONFIG_FB_VALKYRIE) += valkyriefb.o +obj-$(CONFIG_FB_CT65550) += chipsfb.o +obj-$(CONFIG_FB_IMSTT) += imsttfb.o +obj-$(CONFIG_FB_FM2) += fm2fb.o +obj-$(CONFIG_FB_VT8623) += vt8623fb.o +obj-$(CONFIG_FB_TRIDENT) += tridentfb.o +obj-$(CONFIG_FB_LE80578) += vermilion/ +obj-$(CONFIG_FB_S3) += s3fb.o +obj-$(CONFIG_FB_ARK) += arkfb.o +obj-$(CONFIG_FB_STI) += stifb.o +obj-$(CONFIG_FB_FFB) += ffb.o sbuslib.o +obj-$(CONFIG_FB_CG6) += cg6.o sbuslib.o +obj-$(CONFIG_FB_CG3) += cg3.o sbuslib.o +obj-$(CONFIG_FB_BW2) += bw2.o sbuslib.o +obj-$(CONFIG_FB_CG14) += cg14.o sbuslib.o +obj-$(CONFIG_FB_P9100) += p9100.o sbuslib.o +obj-$(CONFIG_FB_TCX) += tcx.o sbuslib.o +obj-$(CONFIG_FB_LEO) += leo.o sbuslib.o +obj-$(CONFIG_FB_SGIVW) += sgivwfb.o +obj-$(CONFIG_FB_ACORN) += acornfb.o +obj-$(CONFIG_FB_ATARI) += atafb.o c2p_iplan2.o atafb_mfb.o \ + atafb_iplan2p2.o atafb_iplan2p4.o atafb_iplan2p8.o +obj-$(CONFIG_FB_MAC) += macfb.o +obj-$(CONFIG_FB_HECUBA) += hecubafb.o +obj-$(CONFIG_FB_N411) += n411.o +obj-$(CONFIG_FB_HGA) += hgafb.o +obj-$(CONFIG_FB_XVR500) += sunxvr500.o +obj-$(CONFIG_FB_XVR2500) += sunxvr2500.o +obj-$(CONFIG_FB_XVR1000) += sunxvr1000.o +obj-$(CONFIG_FB_IGA) += igafb.o +obj-$(CONFIG_FB_APOLLO) += dnfb.o +obj-$(CONFIG_FB_Q40) += q40fb.o +obj-$(CONFIG_FB_TGA) += tgafb.o +obj-$(CONFIG_FB_HP300) += hpfb.o +obj-$(CONFIG_FB_G364) += g364fb.o +obj-$(CONFIG_FB_EP93XX) += ep93xx-fb.o +obj-$(CONFIG_FB_SA1100) += sa1100fb.o +obj-$(CONFIG_FB_HIT) += hitfb.o +obj-$(CONFIG_FB_ATMEL) += atmel_lcdfb.o +obj-$(CONFIG_FB_PVR2) += pvr2fb.o +obj-$(CONFIG_FB_VOODOO1) += sstfb.o +obj-$(CONFIG_FB_ARMCLCD) += amba-clcd.o +obj-$(CONFIG_FB_ARMHDLCD) += arm-hdlcd.o +obj-$(CONFIG_FB_GOLDFISH) += goldfishfb.o +obj-$(CONFIG_FB_68328) += 68328fb.o +obj-$(CONFIG_FB_GBE) += gbefb.o +obj-$(CONFIG_FB_CIRRUS) += cirrusfb.o +obj-$(CONFIG_FB_ASILIANT) += asiliantfb.o +obj-$(CONFIG_FB_PXA) += pxafb.o +obj-$(CONFIG_FB_PXA168) += pxa168fb.o +obj-$(CONFIG_PXA3XX_GCU) += pxa3xx-gcu.o +obj-$(CONFIG_MMP_DISP) += mmp/ +obj-$(CONFIG_FB_W100) += w100fb.o +obj-$(CONFIG_FB_TMIO) += tmiofb.o +obj-$(CONFIG_FB_AU1100) += au1100fb.o +obj-$(CONFIG_FB_AU1200) += au1200fb.o +obj-$(CONFIG_FB_VT8500) += vt8500lcdfb.o +obj-$(CONFIG_FB_WM8505) += wm8505fb.o +obj-$(CONFIG_FB_PMAG_AA) += pmag-aa-fb.o +obj-$(CONFIG_FB_PMAG_BA) += pmag-ba-fb.o +obj-$(CONFIG_FB_PMAGB_B) += pmagb-b-fb.o +obj-$(CONFIG_FB_MAXINE) += maxinefb.o +obj-$(CONFIG_FB_METRONOME) += metronomefb.o +obj-$(CONFIG_FB_BROADSHEET) += broadsheetfb.o +obj-$(CONFIG_FB_AUO_K190X) += auo_k190x.o +obj-$(CONFIG_FB_AUO_K1900) += auo_k1900fb.o +obj-$(CONFIG_FB_AUO_K1901) += auo_k1901fb.o +obj-$(CONFIG_FB_S1D13XXX) += s1d13xxxfb.o +obj-$(CONFIG_FB_SH7760) += sh7760fb.o +obj-$(CONFIG_FB_IMX) += imxfb.o +obj-$(CONFIG_FB_S3C) += s3c-fb.o +obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o +obj-$(CONFIG_FB_FSL_DIU) += fsl-diu-fb.o +obj-$(CONFIG_FB_COBALT) += cobalt_lcdfb.o +obj-$(CONFIG_FB_IBM_GXT4500) += gxt4500.o +obj-$(CONFIG_FB_PS3) += ps3fb.o +obj-$(CONFIG_FB_SM501) += sm501fb.o +obj-$(CONFIG_FB_UDL) += udlfb.o +obj-$(CONFIG_FB_SMSCUFX) += smscufx.o +obj-$(CONFIG_FB_XILINX) += xilinxfb.o +obj-$(CONFIG_SH_MIPI_DSI) += sh_mipi_dsi.o +obj-$(CONFIG_FB_SH_MOBILE_HDMI) += sh_mobile_hdmi.o +obj-$(CONFIG_FB_SH_MOBILE_MERAM) += sh_mobile_meram.o +obj-$(CONFIG_FB_SH_MOBILE_LCDC) += sh_mobile_lcdcfb.o +obj-$(CONFIG_FB_OMAP) += omap/ +obj-y += omap2/ +obj-$(CONFIG_XEN_FBDEV_FRONTEND) += xen-fbfront.o +obj-$(CONFIG_FB_CARMINE) += carminefb.o +obj-$(CONFIG_FB_MB862XX) += mb862xx/ +obj-$(CONFIG_FB_MSM) += msm/ +obj-$(CONFIG_FB_NUC900) += nuc900fb.o +obj-$(CONFIG_FB_JZ4740) += jz4740_fb.o +obj-$(CONFIG_FB_PUV3_UNIGFX) += fb-puv3.o +obj-$(CONFIG_FB_HYPERV) += hyperv_fb.o + +# Platform or fallback drivers go here +obj-$(CONFIG_FB_UVESA) += uvesafb.o +obj-$(CONFIG_FB_VESA) += vesafb.o +obj-$(CONFIG_FB_EFI) += efifb.o +obj-$(CONFIG_FB_VGA16) += vga16fb.o +obj-$(CONFIG_FB_OF) += offb.o +obj-$(CONFIG_FB_BF537_LQ035) += bf537-lq035.o +obj-$(CONFIG_FB_BF54X_LQ043) += bf54x-lq043fb.o +obj-$(CONFIG_FB_BFIN_LQ035Q1) += bfin-lq035q1-fb.o +obj-$(CONFIG_FB_BFIN_T350MCQB) += bfin-t350mcqb-fb.o +obj-$(CONFIG_FB_BFIN_7393) += bfin_adv7393fb.o +obj-$(CONFIG_FB_MX3) += mx3fb.o +obj-$(CONFIG_FB_DA8XX) += da8xx-fb.o +obj-$(CONFIG_FB_MXS) += mxsfb.o +obj-$(CONFIG_FB_SSD1307) += ssd1307fb.o +obj-$(CONFIG_FB_SIMPLE) += simplefb.o + +# the test framebuffer is last +obj-$(CONFIG_FB_VIRTUAL) += vfb.o + +#video output switch sysfs driver +obj-$(CONFIG_VIDEO_OUTPUT_CONTROL) += output.o +obj-$(CONFIG_VIDEOMODE_HELPERS) += display_timing.o videomode.o +ifeq ($(CONFIG_OF),y) +obj-$(CONFIG_VIDEOMODE_HELPERS) += of_display_timing.o of_videomode.o +endif + +# platform specific output drivers +obj-$(CONFIG_VEXPRESS_DVI_CONTROL) += vexpress-dvi.o diff --git a/drivers/video/acornfb.c b/drivers/video/acornfb.c new file mode 100644 index 00000000..6488a735 --- /dev/null +++ b/drivers/video/acornfb.c @@ -0,0 +1,1409 @@ +/* + * linux/drivers/video/acornfb.c + * + * Copyright (C) 1998-2001 Russell King + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * Frame buffer code for Acorn platforms + * + * NOTE: Most of the modes with X!=640 will disappear shortly. + * NOTE: Startup setting of HS & VS polarity not supported. + * (do we need to support it if we're coming up in 640x480?) + * + * FIXME: (things broken by the "new improved" FBCON API) + * - Blanking 8bpp displays with VIDC + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "acornfb.h" + +/* + * VIDC machines can't do 16 or 32BPP modes. + */ +#ifdef HAS_VIDC +#undef FBCON_HAS_CFB16 +#undef FBCON_HAS_CFB32 +#endif + +/* + * Default resolution. + * NOTE that it has to be supported in the table towards + * the end of this file. + */ +#define DEFAULT_XRES 640 +#define DEFAULT_YRES 480 +#define DEFAULT_BPP 4 + +/* + * define this to debug the video mode selection + */ +#undef DEBUG_MODE_SELECTION + +/* + * Translation from RISC OS monitor types to actual + * HSYNC and VSYNC frequency ranges. These are + * probably not right, but they're the best info I + * have. Allow 1% either way on the nominal for TVs. + */ +#define NR_MONTYPES 6 +static struct fb_monspecs monspecs[NR_MONTYPES] = { + { /* TV */ + .hfmin = 15469, + .hfmax = 15781, + .vfmin = 49, + .vfmax = 51, + }, { /* Multi Freq */ + .hfmin = 0, + .hfmax = 99999, + .vfmin = 0, + .vfmax = 199, + }, { /* Hi-res mono */ + .hfmin = 58608, + .hfmax = 58608, + .vfmin = 64, + .vfmax = 64, + }, { /* VGA */ + .hfmin = 30000, + .hfmax = 70000, + .vfmin = 60, + .vfmax = 60, + }, { /* SVGA */ + .hfmin = 30000, + .hfmax = 70000, + .vfmin = 56, + .vfmax = 75, + }, { + .hfmin = 30000, + .hfmax = 70000, + .vfmin = 60, + .vfmax = 60, + } +}; + +static struct fb_info fb_info; +static struct acornfb_par current_par; +static struct vidc_timing current_vidc; + +extern unsigned int vram_size; /* set by setup.c */ + +#ifdef HAS_VIDC + +#define MAX_SIZE 480*1024 + +/* CTL VIDC Actual + * 24.000 0 8.000 + * 25.175 0 8.392 + * 36.000 0 12.000 + * 24.000 1 12.000 + * 25.175 1 12.588 + * 24.000 2 16.000 + * 25.175 2 16.783 + * 36.000 1 18.000 + * 24.000 3 24.000 + * 36.000 2 24.000 + * 25.175 3 25.175 + * 36.000 3 36.000 + */ +struct pixclock { + u_long min_clock; + u_long max_clock; + u_int vidc_ctl; + u_int vid_ctl; +}; + +static struct pixclock arc_clocks[] = { + /* we allow +/-1% on these */ + { 123750, 126250, VIDC_CTRL_DIV3, VID_CTL_24MHz }, /* 8.000MHz */ + { 82500, 84167, VIDC_CTRL_DIV2, VID_CTL_24MHz }, /* 12.000MHz */ + { 61875, 63125, VIDC_CTRL_DIV1_5, VID_CTL_24MHz }, /* 16.000MHz */ + { 41250, 42083, VIDC_CTRL_DIV1, VID_CTL_24MHz }, /* 24.000MHz */ +}; + +static struct pixclock * +acornfb_valid_pixrate(struct fb_var_screeninfo *var) +{ + u_long pixclock = var->pixclock; + u_int i; + + if (!var->pixclock) + return NULL; + + for (i = 0; i < ARRAY_SIZE(arc_clocks); i++) + if (pixclock > arc_clocks[i].min_clock && + pixclock < arc_clocks[i].max_clock) + return arc_clocks + i; + + return NULL; +} + +/* VIDC Rules: + * hcr : must be even (interlace, hcr/2 must be even) + * hswr : must be even + * hdsr : must be odd + * hder : must be odd + * + * vcr : must be odd + * vswr : >= 1 + * vdsr : >= 1 + * vder : >= vdsr + * if interlaced, then hcr/2 must be even + */ +static void +acornfb_set_timing(struct fb_var_screeninfo *var) +{ + struct pixclock *pclk; + struct vidc_timing vidc; + u_int horiz_correction; + u_int sync_len, display_start, display_end, cycle; + u_int is_interlaced; + u_int vid_ctl, vidc_ctl; + u_int bandwidth; + + memset(&vidc, 0, sizeof(vidc)); + + pclk = acornfb_valid_pixrate(var); + vidc_ctl = pclk->vidc_ctl; + vid_ctl = pclk->vid_ctl; + + bandwidth = var->pixclock * 8 / var->bits_per_pixel; + /* 25.175, 4bpp = 79.444ns per byte, 317.776ns per word: fifo = 2,6 */ + if (bandwidth > 143500) + vidc_ctl |= VIDC_CTRL_FIFO_3_7; + else if (bandwidth > 71750) + vidc_ctl |= VIDC_CTRL_FIFO_2_6; + else if (bandwidth > 35875) + vidc_ctl |= VIDC_CTRL_FIFO_1_5; + else + vidc_ctl |= VIDC_CTRL_FIFO_0_4; + + switch (var->bits_per_pixel) { + case 1: + horiz_correction = 19; + vidc_ctl |= VIDC_CTRL_1BPP; + break; + + case 2: + horiz_correction = 11; + vidc_ctl |= VIDC_CTRL_2BPP; + break; + + case 4: + horiz_correction = 7; + vidc_ctl |= VIDC_CTRL_4BPP; + break; + + default: + case 8: + horiz_correction = 5; + vidc_ctl |= VIDC_CTRL_8BPP; + break; + } + + if (var->sync & FB_SYNC_COMP_HIGH_ACT) /* should be FB_SYNC_COMP */ + vidc_ctl |= VIDC_CTRL_CSYNC; + else { + if (!(var->sync & FB_SYNC_HOR_HIGH_ACT)) + vid_ctl |= VID_CTL_HS_NHSYNC; + + if (!(var->sync & FB_SYNC_VERT_HIGH_ACT)) + vid_ctl |= VID_CTL_VS_NVSYNC; + } + + sync_len = var->hsync_len; + display_start = sync_len + var->left_margin; + display_end = display_start + var->xres; + cycle = display_end + var->right_margin; + + /* if interlaced, then hcr/2 must be even */ + is_interlaced = (var->vmode & FB_VMODE_MASK) == FB_VMODE_INTERLACED; + + if (is_interlaced) { + vidc_ctl |= VIDC_CTRL_INTERLACE; + if (cycle & 2) { + cycle += 2; + var->right_margin += 2; + } + } + + vidc.h_cycle = (cycle - 2) / 2; + vidc.h_sync_width = (sync_len - 2) / 2; + vidc.h_border_start = (display_start - 1) / 2; + vidc.h_display_start = (display_start - horiz_correction) / 2; + vidc.h_display_end = (display_end - horiz_correction) / 2; + vidc.h_border_end = (display_end - 1) / 2; + vidc.h_interlace = (vidc.h_cycle + 1) / 2; + + sync_len = var->vsync_len; + display_start = sync_len + var->upper_margin; + display_end = display_start + var->yres; + cycle = display_end + var->lower_margin; + + if (is_interlaced) + cycle = (cycle - 3) / 2; + else + cycle = cycle - 1; + + vidc.v_cycle = cycle; + vidc.v_sync_width = sync_len - 1; + vidc.v_border_start = display_start - 1; + vidc.v_display_start = vidc.v_border_start; + vidc.v_display_end = display_end - 1; + vidc.v_border_end = vidc.v_display_end; + + if (machine_is_a5k()) + __raw_writeb(vid_ctl, IOEB_VID_CTL); + + if (memcmp(¤t_vidc, &vidc, sizeof(vidc))) { + current_vidc = vidc; + + vidc_writel(0xe0000000 | vidc_ctl); + vidc_writel(0x80000000 | (vidc.h_cycle << 14)); + vidc_writel(0x84000000 | (vidc.h_sync_width << 14)); + vidc_writel(0x88000000 | (vidc.h_border_start << 14)); + vidc_writel(0x8c000000 | (vidc.h_display_start << 14)); + vidc_writel(0x90000000 | (vidc.h_display_end << 14)); + vidc_writel(0x94000000 | (vidc.h_border_end << 14)); + vidc_writel(0x98000000); + vidc_writel(0x9c000000 | (vidc.h_interlace << 14)); + vidc_writel(0xa0000000 | (vidc.v_cycle << 14)); + vidc_writel(0xa4000000 | (vidc.v_sync_width << 14)); + vidc_writel(0xa8000000 | (vidc.v_border_start << 14)); + vidc_writel(0xac000000 | (vidc.v_display_start << 14)); + vidc_writel(0xb0000000 | (vidc.v_display_end << 14)); + vidc_writel(0xb4000000 | (vidc.v_border_end << 14)); + vidc_writel(0xb8000000); + vidc_writel(0xbc000000); + } +#ifdef DEBUG_MODE_SELECTION + printk(KERN_DEBUG "VIDC registers for %dx%dx%d:\n", var->xres, + var->yres, var->bits_per_pixel); + printk(KERN_DEBUG " H-cycle : %d\n", vidc.h_cycle); + printk(KERN_DEBUG " H-sync-width : %d\n", vidc.h_sync_width); + printk(KERN_DEBUG " H-border-start : %d\n", vidc.h_border_start); + printk(KERN_DEBUG " H-display-start : %d\n", vidc.h_display_start); + printk(KERN_DEBUG " H-display-end : %d\n", vidc.h_display_end); + printk(KERN_DEBUG " H-border-end : %d\n", vidc.h_border_end); + printk(KERN_DEBUG " H-interlace : %d\n", vidc.h_interlace); + printk(KERN_DEBUG " V-cycle : %d\n", vidc.v_cycle); + printk(KERN_DEBUG " V-sync-width : %d\n", vidc.v_sync_width); + printk(KERN_DEBUG " V-border-start : %d\n", vidc.v_border_start); + printk(KERN_DEBUG " V-display-start : %d\n", vidc.v_display_start); + printk(KERN_DEBUG " V-display-end : %d\n", vidc.v_display_end); + printk(KERN_DEBUG " V-border-end : %d\n", vidc.v_border_end); + printk(KERN_DEBUG " VIDC Ctrl (E) : 0x%08X\n", vidc_ctl); + printk(KERN_DEBUG " IOEB Ctrl : 0x%08X\n", vid_ctl); +#endif +} + +static int +acornfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, + u_int trans, struct fb_info *info) +{ + union palette pal; + + if (regno >= current_par.palette_size) + return 1; + + pal.p = 0; + pal.vidc.reg = regno; + pal.vidc.red = red >> 12; + pal.vidc.green = green >> 12; + pal.vidc.blue = blue >> 12; + + current_par.palette[regno] = pal; + + vidc_writel(pal.p); + + return 0; +} +#endif + +#ifdef HAS_VIDC20 +#include + +#define MAX_SIZE 2*1024*1024 + +/* VIDC20 has a different set of rules from the VIDC: + * hcr : must be multiple of 4 + * hswr : must be even + * hdsr : must be even + * hder : must be even + * vcr : >= 2, (interlace, must be odd) + * vswr : >= 1 + * vdsr : >= 1 + * vder : >= vdsr + */ +static void acornfb_set_timing(struct fb_info *info) +{ + struct fb_var_screeninfo *var = &info->var; + struct vidc_timing vidc; + u_int vcr, fsize; + u_int ext_ctl, dat_ctl; + u_int words_per_line; + + memset(&vidc, 0, sizeof(vidc)); + + vidc.h_sync_width = var->hsync_len - 8; + vidc.h_border_start = vidc.h_sync_width + var->left_margin + 8 - 12; + vidc.h_display_start = vidc.h_border_start + 12 - 18; + vidc.h_display_end = vidc.h_display_start + var->xres; + vidc.h_border_end = vidc.h_display_end + 18 - 12; + vidc.h_cycle = vidc.h_border_end + var->right_margin + 12 - 8; + vidc.h_interlace = vidc.h_cycle / 2; + vidc.v_sync_width = var->vsync_len - 1; + vidc.v_border_start = vidc.v_sync_width + var->upper_margin; + vidc.v_display_start = vidc.v_border_start; + vidc.v_display_end = vidc.v_display_start + var->yres; + vidc.v_border_end = vidc.v_display_end; + vidc.control = acornfb_default_control(); + + vcr = var->vsync_len + var->upper_margin + var->yres + + var->lower_margin; + + if ((var->vmode & FB_VMODE_MASK) == FB_VMODE_INTERLACED) { + vidc.v_cycle = (vcr - 3) / 2; + vidc.control |= VIDC20_CTRL_INT; + } else + vidc.v_cycle = vcr - 2; + + switch (var->bits_per_pixel) { + case 1: vidc.control |= VIDC20_CTRL_1BPP; break; + case 2: vidc.control |= VIDC20_CTRL_2BPP; break; + case 4: vidc.control |= VIDC20_CTRL_4BPP; break; + default: + case 8: vidc.control |= VIDC20_CTRL_8BPP; break; + case 16: vidc.control |= VIDC20_CTRL_16BPP; break; + case 32: vidc.control |= VIDC20_CTRL_32BPP; break; + } + + acornfb_vidc20_find_rates(&vidc, var); + fsize = var->vsync_len + var->upper_margin + var->lower_margin - 1; + + if (memcmp(¤t_vidc, &vidc, sizeof(vidc))) { + current_vidc = vidc; + + vidc_writel(VIDC20_CTRL| vidc.control); + vidc_writel(0xd0000000 | vidc.pll_ctl); + vidc_writel(0x80000000 | vidc.h_cycle); + vidc_writel(0x81000000 | vidc.h_sync_width); + vidc_writel(0x82000000 | vidc.h_border_start); + vidc_writel(0x83000000 | vidc.h_display_start); + vidc_writel(0x84000000 | vidc.h_display_end); + vidc_writel(0x85000000 | vidc.h_border_end); + vidc_writel(0x86000000); + vidc_writel(0x87000000 | vidc.h_interlace); + vidc_writel(0x90000000 | vidc.v_cycle); + vidc_writel(0x91000000 | vidc.v_sync_width); + vidc_writel(0x92000000 | vidc.v_border_start); + vidc_writel(0x93000000 | vidc.v_display_start); + vidc_writel(0x94000000 | vidc.v_display_end); + vidc_writel(0x95000000 | vidc.v_border_end); + vidc_writel(0x96000000); + vidc_writel(0x97000000); + } + + iomd_writel(fsize, IOMD_FSIZE); + + ext_ctl = acornfb_default_econtrol(); + + if (var->sync & FB_SYNC_COMP_HIGH_ACT) /* should be FB_SYNC_COMP */ + ext_ctl |= VIDC20_ECTL_HS_NCSYNC | VIDC20_ECTL_VS_NCSYNC; + else { + if (var->sync & FB_SYNC_HOR_HIGH_ACT) + ext_ctl |= VIDC20_ECTL_HS_HSYNC; + else + ext_ctl |= VIDC20_ECTL_HS_NHSYNC; + + if (var->sync & FB_SYNC_VERT_HIGH_ACT) + ext_ctl |= VIDC20_ECTL_VS_VSYNC; + else + ext_ctl |= VIDC20_ECTL_VS_NVSYNC; + } + + vidc_writel(VIDC20_ECTL | ext_ctl); + + words_per_line = var->xres * var->bits_per_pixel / 32; + + if (current_par.using_vram && info->fix.smem_len == 2048*1024) + words_per_line /= 2; + + /* RiscPC doesn't use the VIDC's VRAM control. */ + dat_ctl = VIDC20_DCTL_VRAM_DIS | VIDC20_DCTL_SNA | words_per_line; + + /* The data bus width is dependent on both the type + * and amount of video memory. + * DRAM 32bit low + * 1MB VRAM 32bit + * 2MB VRAM 64bit + */ + if (current_par.using_vram && current_par.vram_half_sam == 2048) + dat_ctl |= VIDC20_DCTL_BUS_D63_0; + else + dat_ctl |= VIDC20_DCTL_BUS_D31_0; + + vidc_writel(VIDC20_DCTL | dat_ctl); + +#ifdef DEBUG_MODE_SELECTION + printk(KERN_DEBUG "VIDC registers for %dx%dx%d:\n", var->xres, + var->yres, var->bits_per_pixel); + printk(KERN_DEBUG " H-cycle : %d\n", vidc.h_cycle); + printk(KERN_DEBUG " H-sync-width : %d\n", vidc.h_sync_width); + printk(KERN_DEBUG " H-border-start : %d\n", vidc.h_border_start); + printk(KERN_DEBUG " H-display-start : %d\n", vidc.h_display_start); + printk(KERN_DEBUG " H-display-end : %d\n", vidc.h_display_end); + printk(KERN_DEBUG " H-border-end : %d\n", vidc.h_border_end); + printk(KERN_DEBUG " H-interlace : %d\n", vidc.h_interlace); + printk(KERN_DEBUG " V-cycle : %d\n", vidc.v_cycle); + printk(KERN_DEBUG " V-sync-width : %d\n", vidc.v_sync_width); + printk(KERN_DEBUG " V-border-start : %d\n", vidc.v_border_start); + printk(KERN_DEBUG " V-display-start : %d\n", vidc.v_display_start); + printk(KERN_DEBUG " V-display-end : %d\n", vidc.v_display_end); + printk(KERN_DEBUG " V-border-end : %d\n", vidc.v_border_end); + printk(KERN_DEBUG " Ext Ctrl (C) : 0x%08X\n", ext_ctl); + printk(KERN_DEBUG " PLL Ctrl (D) : 0x%08X\n", vidc.pll_ctl); + printk(KERN_DEBUG " Ctrl (E) : 0x%08X\n", vidc.control); + printk(KERN_DEBUG " Data Ctrl (F) : 0x%08X\n", dat_ctl); + printk(KERN_DEBUG " Fsize : 0x%08X\n", fsize); +#endif +} + +/* + * We have to take note of the VIDC20's 16-bit palette here. + * The VIDC20 looks up a 16 bit pixel as follows: + * + * bits 111111 + * 5432109876543210 + * red ++++++++ (8 bits, 7 to 0) + * green ++++++++ (8 bits, 11 to 4) + * blue ++++++++ (8 bits, 15 to 8) + * + * We use a pixel which looks like: + * + * bits 111111 + * 5432109876543210 + * red +++++ (5 bits, 4 to 0) + * green +++++ (5 bits, 9 to 5) + * blue +++++ (5 bits, 14 to 10) + */ +static int +acornfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, + u_int trans, struct fb_info *info) +{ + union palette pal; + + if (regno >= current_par.palette_size) + return 1; + + if (regno < 16 && info->fix.visual == FB_VISUAL_DIRECTCOLOR) { + u32 pseudo_val; + + pseudo_val = regno << info->var.red.offset; + pseudo_val |= regno << info->var.green.offset; + pseudo_val |= regno << info->var.blue.offset; + + ((u32 *)info->pseudo_palette)[regno] = pseudo_val; + } + + pal.p = 0; + pal.vidc20.red = red >> 8; + pal.vidc20.green = green >> 8; + pal.vidc20.blue = blue >> 8; + + current_par.palette[regno] = pal; + + if (info->var.bits_per_pixel == 16) { + int i; + + pal.p = 0; + vidc_writel(0x10000000); + for (i = 0; i < 256; i += 1) { + pal.vidc20.red = current_par.palette[ i & 31].vidc20.red; + pal.vidc20.green = current_par.palette[(i >> 1) & 31].vidc20.green; + pal.vidc20.blue = current_par.palette[(i >> 2) & 31].vidc20.blue; + vidc_writel(pal.p); + /* Palette register pointer auto-increments */ + } + } else { + vidc_writel(0x10000000 | regno); + vidc_writel(pal.p); + } + + return 0; +} +#endif + +/* + * Before selecting the timing parameters, adjust + * the resolution to fit the rules. + */ +static int +acornfb_adjust_timing(struct fb_info *info, struct fb_var_screeninfo *var, u_int fontht) +{ + u_int font_line_len, sam_size, min_size, size, nr_y; + + /* xres must be even */ + var->xres = (var->xres + 1) & ~1; + + /* + * We don't allow xres_virtual to differ from xres + */ + var->xres_virtual = var->xres; + var->xoffset = 0; + + if (current_par.using_vram) + sam_size = current_par.vram_half_sam * 2; + else + sam_size = 16; + + /* + * Now, find a value for yres_virtual which allows + * us to do ywrap scrolling. The value of + * yres_virtual must be such that the end of the + * displayable frame buffer must be aligned with + * the start of a font line. + */ + font_line_len = var->xres * var->bits_per_pixel * fontht / 8; + min_size = var->xres * var->yres * var->bits_per_pixel / 8; + + /* + * If minimum screen size is greater than that we have + * available, reject it. + */ + if (min_size > info->fix.smem_len) + return -EINVAL; + + /* Find int 'y', such that y * fll == s * sam < maxsize + * y = s * sam / fll; s = maxsize / sam + */ + for (size = info->fix.smem_len; + nr_y = size / font_line_len, min_size <= size; + size -= sam_size) { + if (nr_y * font_line_len == size) + break; + } + nr_y *= fontht; + + if (var->accel_flags & FB_ACCELF_TEXT) { + if (min_size > size) { + /* + * failed, use ypan + */ + size = info->fix.smem_len; + var->yres_virtual = size / (font_line_len / fontht); + } else + var->yres_virtual = nr_y; + } else if (var->yres_virtual > nr_y) + var->yres_virtual = nr_y; + + current_par.screen_end = info->fix.smem_start + size; + + /* + * Fix yres & yoffset if needed. + */ + if (var->yres > var->yres_virtual) + var->yres = var->yres_virtual; + + if (var->vmode & FB_VMODE_YWRAP) { + if (var->yoffset > var->yres_virtual) + var->yoffset = var->yres_virtual; + } else { + if (var->yoffset + var->yres > var->yres_virtual) + var->yoffset = var->yres_virtual - var->yres; + } + + /* hsync_len must be even */ + var->hsync_len = (var->hsync_len + 1) & ~1; + +#ifdef HAS_VIDC + /* left_margin must be odd */ + if ((var->left_margin & 1) == 0) { + var->left_margin -= 1; + var->right_margin += 1; + } + + /* right_margin must be odd */ + var->right_margin |= 1; +#elif defined(HAS_VIDC20) + /* left_margin must be even */ + if (var->left_margin & 1) { + var->left_margin += 1; + var->right_margin -= 1; + } + + /* right_margin must be even */ + if (var->right_margin & 1) + var->right_margin += 1; +#endif + + if (var->vsync_len < 1) + var->vsync_len = 1; + + return 0; +} + +static int +acornfb_validate_timing(struct fb_var_screeninfo *var, + struct fb_monspecs *monspecs) +{ + unsigned long hs, vs; + + /* + * hs(Hz) = 10^12 / (pixclock * xtotal) + * vs(Hz) = hs(Hz) / ytotal + * + * No need to do long long divisions or anything + * like that if you factor it correctly + */ + hs = 1953125000 / var->pixclock; + hs = hs * 512 / + (var->xres + var->left_margin + var->right_margin + var->hsync_len); + vs = hs / + (var->yres + var->upper_margin + var->lower_margin + var->vsync_len); + + return (vs >= monspecs->vfmin && vs <= monspecs->vfmax && + hs >= monspecs->hfmin && hs <= monspecs->hfmax) ? 0 : -EINVAL; +} + +static inline void +acornfb_update_dma(struct fb_info *info, struct fb_var_screeninfo *var) +{ + u_int off = var->yoffset * info->fix.line_length; + +#if defined(HAS_MEMC) + memc_write(VDMA_INIT, off >> 2); +#elif defined(HAS_IOMD) + iomd_writel(info->fix.smem_start + off, IOMD_VIDINIT); +#endif +} + +static int +acornfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) +{ + u_int fontht; + int err; + + /* + * FIXME: Find the font height + */ + fontht = 8; + + var->red.msb_right = 0; + var->green.msb_right = 0; + var->blue.msb_right = 0; + var->transp.msb_right = 0; + + switch (var->bits_per_pixel) { + case 1: case 2: case 4: case 8: + var->red.offset = 0; + var->red.length = var->bits_per_pixel; + var->green = var->red; + var->blue = var->red; + var->transp.offset = 0; + var->transp.length = 0; + break; + +#ifdef HAS_VIDC20 + case 16: + var->red.offset = 0; + var->red.length = 5; + var->green.offset = 5; + var->green.length = 5; + var->blue.offset = 10; + var->blue.length = 5; + var->transp.offset = 15; + var->transp.length = 1; + break; + + case 32: + var->red.offset = 0; + var->red.length = 8; + var->green.offset = 8; + var->green.length = 8; + var->blue.offset = 16; + var->blue.length = 8; + var->transp.offset = 24; + var->transp.length = 4; + break; +#endif + default: + return -EINVAL; + } + + /* + * Check to see if the pixel rate is valid. + */ + if (!acornfb_valid_pixrate(var)) + return -EINVAL; + + /* + * Validate and adjust the resolution to + * match the video generator hardware. + */ + err = acornfb_adjust_timing(info, var, fontht); + if (err) + return err; + + /* + * Validate the timing against the + * monitor hardware. + */ + return acornfb_validate_timing(var, &info->monspecs); +} + +static int acornfb_set_par(struct fb_info *info) +{ + switch (info->var.bits_per_pixel) { + case 1: + current_par.palette_size = 2; + info->fix.visual = FB_VISUAL_MONO10; + break; + case 2: + current_par.palette_size = 4; + info->fix.visual = FB_VISUAL_PSEUDOCOLOR; + break; + case 4: + current_par.palette_size = 16; + info->fix.visual = FB_VISUAL_PSEUDOCOLOR; + break; + case 8: + current_par.palette_size = VIDC_PALETTE_SIZE; +#ifdef HAS_VIDC + info->fix.visual = FB_VISUAL_STATIC_PSEUDOCOLOR; +#else + info->fix.visual = FB_VISUAL_PSEUDOCOLOR; +#endif + break; +#ifdef HAS_VIDC20 + case 16: + current_par.palette_size = 32; + info->fix.visual = FB_VISUAL_DIRECTCOLOR; + break; + case 32: + current_par.palette_size = VIDC_PALETTE_SIZE; + info->fix.visual = FB_VISUAL_DIRECTCOLOR; + break; +#endif + default: + BUG(); + } + + info->fix.line_length = (info->var.xres * info->var.bits_per_pixel) / 8; + +#if defined(HAS_MEMC) + { + unsigned long size = info->fix.smem_len - VDMA_XFERSIZE; + + memc_write(VDMA_START, 0); + memc_write(VDMA_END, size >> 2); + } +#elif defined(HAS_IOMD) + { + unsigned long start, size; + u_int control; + + start = info->fix.smem_start; + size = current_par.screen_end; + + if (current_par.using_vram) { + size -= current_par.vram_half_sam; + control = DMA_CR_E | (current_par.vram_half_sam / 256); + } else { + size -= 16; + control = DMA_CR_E | DMA_CR_D | 16; + } + + iomd_writel(start, IOMD_VIDSTART); + iomd_writel(size, IOMD_VIDEND); + iomd_writel(control, IOMD_VIDCR); + } +#endif + + acornfb_update_dma(info, &info->var); + acornfb_set_timing(info); + + return 0; +} + +static int +acornfb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info) +{ + u_int y_bottom = var->yoffset; + + if (!(var->vmode & FB_VMODE_YWRAP)) + y_bottom += info->var.yres; + + if (y_bottom > info->var.yres_virtual) + return -EINVAL; + + acornfb_update_dma(info, var); + + return 0; +} + +static struct fb_ops acornfb_ops = { + .owner = THIS_MODULE, + .fb_check_var = acornfb_check_var, + .fb_set_par = acornfb_set_par, + .fb_setcolreg = acornfb_setcolreg, + .fb_pan_display = acornfb_pan_display, + .fb_fillrect = cfb_fillrect, + .fb_copyarea = cfb_copyarea, + .fb_imageblit = cfb_imageblit, +}; + +/* + * Everything after here is initialisation!!! + */ +static struct fb_videomode modedb[] = { + { /* 320x256 @ 50Hz */ + NULL, 50, 320, 256, 125000, 92, 62, 35, 19, 38, 2, + FB_SYNC_COMP_HIGH_ACT, + FB_VMODE_NONINTERLACED + }, { /* 640x250 @ 50Hz, 15.6 kHz hsync */ + NULL, 50, 640, 250, 62500, 185, 123, 38, 21, 76, 3, + 0, + FB_VMODE_NONINTERLACED + }, { /* 640x256 @ 50Hz, 15.6 kHz hsync */ + NULL, 50, 640, 256, 62500, 185, 123, 35, 18, 76, 3, + 0, + FB_VMODE_NONINTERLACED + }, { /* 640x512 @ 50Hz, 26.8 kHz hsync */ + NULL, 50, 640, 512, 41667, 113, 87, 18, 1, 56, 3, + 0, + FB_VMODE_NONINTERLACED + }, { /* 640x250 @ 70Hz, 31.5 kHz hsync */ + NULL, 70, 640, 250, 39722, 48, 16, 109, 88, 96, 2, + 0, + FB_VMODE_NONINTERLACED + }, { /* 640x256 @ 70Hz, 31.5 kHz hsync */ + NULL, 70, 640, 256, 39722, 48, 16, 106, 85, 96, 2, + 0, + FB_VMODE_NONINTERLACED + }, { /* 640x352 @ 70Hz, 31.5 kHz hsync */ + NULL, 70, 640, 352, 39722, 48, 16, 58, 37, 96, 2, + 0, + FB_VMODE_NONINTERLACED + }, { /* 640x480 @ 60Hz, 31.5 kHz hsync */ + NULL, 60, 640, 480, 39722, 48, 16, 32, 11, 96, 2, + 0, + FB_VMODE_NONINTERLACED + }, { /* 800x600 @ 56Hz, 35.2 kHz hsync */ + NULL, 56, 800, 600, 27778, 101, 23, 22, 1, 100, 2, + 0, + FB_VMODE_NONINTERLACED + }, { /* 896x352 @ 60Hz, 21.8 kHz hsync */ + NULL, 60, 896, 352, 41667, 59, 27, 9, 0, 118, 3, + 0, + FB_VMODE_NONINTERLACED + }, { /* 1024x 768 @ 60Hz, 48.4 kHz hsync */ + NULL, 60, 1024, 768, 15385, 160, 24, 29, 3, 136, 6, + 0, + FB_VMODE_NONINTERLACED + }, { /* 1280x1024 @ 60Hz, 63.8 kHz hsync */ + NULL, 60, 1280, 1024, 9090, 186, 96, 38, 1, 160, 3, + 0, + FB_VMODE_NONINTERLACED + } +}; + +static struct fb_videomode acornfb_default_mode = { + .name = NULL, + .refresh = 60, + .xres = 640, + .yres = 480, + .pixclock = 39722, + .left_margin = 56, + .right_margin = 16, + .upper_margin = 34, + .lower_margin = 9, + .hsync_len = 88, + .vsync_len = 2, + .sync = 0, + .vmode = FB_VMODE_NONINTERLACED +}; + +static void acornfb_init_fbinfo(void) +{ + static int first = 1; + + if (!first) + return; + first = 0; + + fb_info.fbops = &acornfb_ops; + fb_info.flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN; + fb_info.pseudo_palette = current_par.pseudo_palette; + + strcpy(fb_info.fix.id, "Acorn"); + fb_info.fix.type = FB_TYPE_PACKED_PIXELS; + fb_info.fix.type_aux = 0; + fb_info.fix.xpanstep = 0; + fb_info.fix.ypanstep = 1; + fb_info.fix.ywrapstep = 1; + fb_info.fix.line_length = 0; + fb_info.fix.accel = FB_ACCEL_NONE; + + /* + * setup initial parameters + */ + memset(&fb_info.var, 0, sizeof(fb_info.var)); + +#if defined(HAS_VIDC20) + fb_info.var.red.length = 8; + fb_info.var.transp.length = 4; +#elif defined(HAS_VIDC) + fb_info.var.red.length = 4; + fb_info.var.transp.length = 1; +#endif + fb_info.var.green = fb_info.var.red; + fb_info.var.blue = fb_info.var.red; + fb_info.var.nonstd = 0; + fb_info.var.activate = FB_ACTIVATE_NOW; + fb_info.var.height = -1; + fb_info.var.width = -1; + fb_info.var.vmode = FB_VMODE_NONINTERLACED; + fb_info.var.accel_flags = FB_ACCELF_TEXT; + + current_par.dram_size = 0; + current_par.montype = -1; + current_par.dpms = 0; +} + +/* + * setup acornfb options: + * + * mon:hmin-hmax:vmin-vmax:dpms:width:height + * Set monitor parameters: + * hmin = horizontal minimum frequency (Hz) + * hmax = horizontal maximum frequency (Hz) (optional) + * vmin = vertical minimum frequency (Hz) + * vmax = vertical maximum frequency (Hz) (optional) + * dpms = DPMS supported? (optional) + * width = width of picture in mm. (optional) + * height = height of picture in mm. (optional) + * + * montype:type + * Set RISC-OS style monitor type: + * 0 (or tv) - TV frequency + * 1 (or multi) - Multi frequency + * 2 (or hires) - Hi-res monochrome + * 3 (or vga) - VGA + * 4 (or svga) - SVGA + * auto, or option missing + * - try hardware detect + * + * dram:size + * Set the amount of DRAM to use for the frame buffer + * (even if you have VRAM). + * size can optionally be followed by 'M' or 'K' for + * MB or KB respectively. + */ +static void acornfb_parse_mon(char *opt) +{ + char *p = opt; + + current_par.montype = -2; + + fb_info.monspecs.hfmin = simple_strtoul(p, &p, 0); + if (*p == '-') + fb_info.monspecs.hfmax = simple_strtoul(p + 1, &p, 0); + else + fb_info.monspecs.hfmax = fb_info.monspecs.hfmin; + + if (*p != ':') + goto bad; + + fb_info.monspecs.vfmin = simple_strtoul(p + 1, &p, 0); + if (*p == '-') + fb_info.monspecs.vfmax = simple_strtoul(p + 1, &p, 0); + else + fb_info.monspecs.vfmax = fb_info.monspecs.vfmin; + + if (*p != ':') + goto check_values; + + fb_info.monspecs.dpms = simple_strtoul(p + 1, &p, 0); + + if (*p != ':') + goto check_values; + + fb_info.var.width = simple_strtoul(p + 1, &p, 0); + + if (*p != ':') + goto check_values; + + fb_info.var.height = simple_strtoul(p + 1, NULL, 0); + +check_values: + if (fb_info.monspecs.hfmax < fb_info.monspecs.hfmin || + fb_info.monspecs.vfmax < fb_info.monspecs.vfmin) + goto bad; + return; + +bad: + printk(KERN_ERR "Acornfb: bad monitor settings: %s\n", opt); + current_par.montype = -1; +} + +static void acornfb_parse_montype(char *opt) +{ + current_par.montype = -2; + + if (strncmp(opt, "tv", 2) == 0) { + opt += 2; + current_par.montype = 0; + } else if (strncmp(opt, "multi", 5) == 0) { + opt += 5; + current_par.montype = 1; + } else if (strncmp(opt, "hires", 5) == 0) { + opt += 5; + current_par.montype = 2; + } else if (strncmp(opt, "vga", 3) == 0) { + opt += 3; + current_par.montype = 3; + } else if (strncmp(opt, "svga", 4) == 0) { + opt += 4; + current_par.montype = 4; + } else if (strncmp(opt, "auto", 4) == 0) { + opt += 4; + current_par.montype = -1; + } else if (isdigit(*opt)) + current_par.montype = simple_strtoul(opt, &opt, 0); + + if (current_par.montype == -2 || + current_par.montype > NR_MONTYPES) { + printk(KERN_ERR "acornfb: unknown monitor type: %s\n", + opt); + current_par.montype = -1; + } else + if (opt && *opt) { + if (strcmp(opt, ",dpms") == 0) + current_par.dpms = 1; + else + printk(KERN_ERR + "acornfb: unknown monitor option: %s\n", + opt); + } +} + +static void acornfb_parse_dram(char *opt) +{ + unsigned int size; + + size = simple_strtoul(opt, &opt, 0); + + if (opt) { + switch (*opt) { + case 'M': + case 'm': + size *= 1024; + case 'K': + case 'k': + size *= 1024; + default: + break; + } + } + + current_par.dram_size = size; +} + +static struct options { + char *name; + void (*parse)(char *opt); +} opt_table[] = { + { "mon", acornfb_parse_mon }, + { "montype", acornfb_parse_montype }, + { "dram", acornfb_parse_dram }, + { NULL, NULL } +}; + +static int acornfb_setup(char *options) +{ + struct options *optp; + char *opt; + + if (!options || !*options) + return 0; + + acornfb_init_fbinfo(); + + while ((opt = strsep(&options, ",")) != NULL) { + if (!*opt) + continue; + + for (optp = opt_table; optp->name; optp++) { + int optlen; + + optlen = strlen(optp->name); + + if (strncmp(opt, optp->name, optlen) == 0 && + opt[optlen] == ':') { + optp->parse(opt + optlen + 1); + break; + } + } + + if (!optp->name) + printk(KERN_ERR "acornfb: unknown parameter: %s\n", + opt); + } + return 0; +} + +/* + * Detect type of monitor connected + * For now, we just assume SVGA + */ +static int acornfb_detect_monitortype(void) +{ + return 4; +} + +/* + * This enables the unused memory to be freed on older Acorn machines. + * We are freeing memory on behalf of the architecture initialisation + * code here. + */ +static inline void +free_unused_pages(unsigned int virtual_start, unsigned int virtual_end) +{ + int mb_freed = 0; + + /* + * Align addresses + */ + virtual_start = PAGE_ALIGN(virtual_start); + virtual_end = PAGE_ALIGN(virtual_end); + + while (virtual_start < virtual_end) { + struct page *page; + + /* + * Clear page reserved bit, + * set count to 1, and free + * the page. + */ + page = virt_to_page(virtual_start); + ClearPageReserved(page); + init_page_count(page); + free_page(virtual_start); + + virtual_start += PAGE_SIZE; + mb_freed += PAGE_SIZE / 1024; + } + + printk("acornfb: freed %dK memory\n", mb_freed); +} + +static int acornfb_probe(struct platform_device *dev) +{ + unsigned long size; + u_int h_sync, v_sync; + int rc, i; + char *option = NULL; + + if (fb_get_options("acornfb", &option)) + return -ENODEV; + acornfb_setup(option); + + acornfb_init_fbinfo(); + + current_par.dev = &dev->dev; + + if (current_par.montype == -1) + current_par.montype = acornfb_detect_monitortype(); + + if (current_par.montype == -1 || current_par.montype > NR_MONTYPES) + current_par.montype = 4; + + if (current_par.montype >= 0) { + fb_info.monspecs = monspecs[current_par.montype]; + fb_info.monspecs.dpms = current_par.dpms; + } + + /* + * Try to select a suitable default mode + */ + for (i = 0; i < ARRAY_SIZE(modedb); i++) { + unsigned long hs; + + hs = modedb[i].refresh * + (modedb[i].yres + modedb[i].upper_margin + + modedb[i].lower_margin + modedb[i].vsync_len); + if (modedb[i].xres == DEFAULT_XRES && + modedb[i].yres == DEFAULT_YRES && + modedb[i].refresh >= fb_info.monspecs.vfmin && + modedb[i].refresh <= fb_info.monspecs.vfmax && + hs >= fb_info.monspecs.hfmin && + hs <= fb_info.monspecs.hfmax) { + acornfb_default_mode = modedb[i]; + break; + } + } + + fb_info.screen_base = (char *)SCREEN_BASE; + fb_info.fix.smem_start = SCREEN_START; + current_par.using_vram = 0; + + /* + * If vram_size is set, we are using VRAM in + * a Risc PC. However, if the user has specified + * an amount of DRAM then use that instead. + */ + if (vram_size && !current_par.dram_size) { + size = vram_size; + current_par.vram_half_sam = vram_size / 1024; + current_par.using_vram = 1; + } else if (current_par.dram_size) + size = current_par.dram_size; + else + size = MAX_SIZE; + + /* + * Limit maximum screen size. + */ + if (size > MAX_SIZE) + size = MAX_SIZE; + + size = PAGE_ALIGN(size); + +#if defined(HAS_VIDC20) + if (!current_par.using_vram) { + dma_addr_t handle; + void *base; + + /* + * RiscPC needs to allocate the DRAM memory + * for the framebuffer if we are not using + * VRAM. + */ + base = dma_alloc_writecombine(current_par.dev, size, &handle, + GFP_KERNEL); + if (base == NULL) { + printk(KERN_ERR "acornfb: unable to allocate screen " + "memory\n"); + return -ENOMEM; + } + + fb_info.screen_base = base; + fb_info.fix.smem_start = handle; + } +#endif +#if defined(HAS_VIDC) + /* + * Archimedes/A5000 machines use a fixed address for their + * framebuffers. Free unused pages + */ + free_unused_pages(PAGE_OFFSET + size, PAGE_OFFSET + MAX_SIZE); +#endif + + fb_info.fix.smem_len = size; + current_par.palette_size = VIDC_PALETTE_SIZE; + + /* + * Lookup the timing for this resolution. If we can't + * find it, then we can't restore it if we change + * the resolution, so we disable this feature. + */ + do { + rc = fb_find_mode(&fb_info.var, &fb_info, NULL, modedb, + ARRAY_SIZE(modedb), + &acornfb_default_mode, DEFAULT_BPP); + /* + * If we found an exact match, all ok. + */ + if (rc == 1) + break; + + rc = fb_find_mode(&fb_info.var, &fb_info, NULL, NULL, 0, + &acornfb_default_mode, DEFAULT_BPP); + /* + * If we found an exact match, all ok. + */ + if (rc == 1) + break; + + rc = fb_find_mode(&fb_info.var, &fb_info, NULL, modedb, + ARRAY_SIZE(modedb), + &acornfb_default_mode, DEFAULT_BPP); + if (rc) + break; + + rc = fb_find_mode(&fb_info.var, &fb_info, NULL, NULL, 0, + &acornfb_default_mode, DEFAULT_BPP); + } while (0); + + /* + * If we didn't find an exact match, try the + * generic database. + */ + if (rc == 0) { + printk("Acornfb: no valid mode found\n"); + return -EINVAL; + } + + h_sync = 1953125000 / fb_info.var.pixclock; + h_sync = h_sync * 512 / (fb_info.var.xres + fb_info.var.left_margin + + fb_info.var.right_margin + fb_info.var.hsync_len); + v_sync = h_sync / (fb_info.var.yres + fb_info.var.upper_margin + + fb_info.var.lower_margin + fb_info.var.vsync_len); + + printk(KERN_INFO "Acornfb: %dkB %cRAM, %s, using %dx%d, " + "%d.%03dkHz, %dHz\n", + fb_info.fix.smem_len / 1024, + current_par.using_vram ? 'V' : 'D', + VIDC_NAME, fb_info.var.xres, fb_info.var.yres, + h_sync / 1000, h_sync % 1000, v_sync); + + printk(KERN_INFO "Acornfb: Monitor: %d.%03d-%d.%03dkHz, %d-%dHz%s\n", + fb_info.monspecs.hfmin / 1000, fb_info.monspecs.hfmin % 1000, + fb_info.monspecs.hfmax / 1000, fb_info.monspecs.hfmax % 1000, + fb_info.monspecs.vfmin, fb_info.monspecs.vfmax, + fb_info.monspecs.dpms ? ", DPMS" : ""); + + if (fb_set_var(&fb_info, &fb_info.var)) + printk(KERN_ERR "Acornfb: unable to set display parameters\n"); + + if (register_framebuffer(&fb_info) < 0) + return -EINVAL; + return 0; +} + +static struct platform_driver acornfb_driver = { + .probe = acornfb_probe, + .driver = { + .name = "acornfb", + }, +}; + +static int __init acornfb_init(void) +{ + return platform_driver_register(&acornfb_driver); +} + +module_init(acornfb_init); + +MODULE_AUTHOR("Russell King"); +MODULE_DESCRIPTION("VIDC 1/1a/20 framebuffer driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/video/acornfb.h b/drivers/video/acornfb.h new file mode 100644 index 00000000..fb2a7fff --- /dev/null +++ b/drivers/video/acornfb.h @@ -0,0 +1,198 @@ +/* + * linux/drivers/video/acornfb.h + * + * Copyright (C) 1998,1999 Russell King + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * Frame buffer code for Acorn platforms + */ +#if defined(HAS_VIDC20) +#include +#define VIDC_PALETTE_SIZE 256 +#define VIDC_NAME "VIDC20" +#elif defined(HAS_VIDC) +#include +#define VIDC_PALETTE_SIZE 16 +#define VIDC_NAME "VIDC" +#endif + +#define EXTEND8(x) ((x)|(x)<<8) +#define EXTEND4(x) ((x)|(x)<<4|(x)<<8|(x)<<12) + +struct vidc20_palette { + u_int red:8; + u_int green:8; + u_int blue:8; + u_int ext:4; + u_int unused:4; +}; + +struct vidc_palette { + u_int red:4; + u_int green:4; + u_int blue:4; + u_int trans:1; + u_int sbz1:13; + u_int reg:4; + u_int sbz2:2; +}; + +union palette { + struct vidc20_palette vidc20; + struct vidc_palette vidc; + u_int p; +}; + +struct acornfb_par { + struct device *dev; + unsigned long screen_end; + unsigned int dram_size; + unsigned int vram_half_sam; + unsigned int palette_size; + signed int montype; + unsigned int using_vram : 1; + unsigned int dpms : 1; + + union palette palette[VIDC_PALETTE_SIZE]; + + u32 pseudo_palette[16]; +}; + +struct vidc_timing { + u_int h_cycle; + u_int h_sync_width; + u_int h_border_start; + u_int h_display_start; + u_int h_display_end; + u_int h_border_end; + u_int h_interlace; + + u_int v_cycle; + u_int v_sync_width; + u_int v_border_start; + u_int v_display_start; + u_int v_display_end; + u_int v_border_end; + + u_int control; + + /* VIDC20 only */ + u_int pll_ctl; +}; + +struct modey_params { + u_int y_res; + u_int u_margin; + u_int b_margin; + u_int vsync_len; + u_int vf; +}; + +struct modex_params { + u_int x_res; + u_int l_margin; + u_int r_margin; + u_int hsync_len; + u_int clock; + u_int hf; + const struct modey_params *modey; +}; + +#ifdef HAS_VIDC + +#define VID_CTL_VS_NVSYNC (1 << 3) +#define VID_CTL_HS_NHSYNC (1 << 2) +#define VID_CTL_24MHz (0) +#define VID_CTL_25MHz (1) +#define VID_CTL_36MHz (2) + +#define VIDC_CTRL_CSYNC (1 << 7) +#define VIDC_CTRL_INTERLACE (1 << 6) +#define VIDC_CTRL_FIFO_0_4 (0 << 4) +#define VIDC_CTRL_FIFO_1_5 (1 << 4) +#define VIDC_CTRL_FIFO_2_6 (2 << 4) +#define VIDC_CTRL_FIFO_3_7 (3 << 4) +#define VIDC_CTRL_1BPP (0 << 2) +#define VIDC_CTRL_2BPP (1 << 2) +#define VIDC_CTRL_4BPP (2 << 2) +#define VIDC_CTRL_8BPP (3 << 2) +#define VIDC_CTRL_DIV3 (0 << 0) +#define VIDC_CTRL_DIV2 (1 << 0) +#define VIDC_CTRL_DIV1_5 (2 << 0) +#define VIDC_CTRL_DIV1 (3 << 0) + +#endif + +#ifdef HAS_VIDC20 +/* + * VIDC20 registers + */ +#define VIDC20_CTRL 0xe0000000 +#define VIDC20_CTRL_PIX_VCLK (0 << 0) +#define VIDC20_CTRL_PIX_HCLK (1 << 0) +#define VIDC20_CTRL_PIX_RCLK (2 << 0) +#define VIDC20_CTRL_PIX_CK (0 << 2) +#define VIDC20_CTRL_PIX_CK2 (1 << 2) +#define VIDC20_CTRL_PIX_CK3 (2 << 2) +#define VIDC20_CTRL_PIX_CK4 (3 << 2) +#define VIDC20_CTRL_PIX_CK5 (4 << 2) +#define VIDC20_CTRL_PIX_CK6 (5 << 2) +#define VIDC20_CTRL_PIX_CK7 (6 << 2) +#define VIDC20_CTRL_PIX_CK8 (7 << 2) +#define VIDC20_CTRL_1BPP (0 << 5) +#define VIDC20_CTRL_2BPP (1 << 5) +#define VIDC20_CTRL_4BPP (2 << 5) +#define VIDC20_CTRL_8BPP (3 << 5) +#define VIDC20_CTRL_16BPP (4 << 5) +#define VIDC20_CTRL_32BPP (6 << 5) +#define VIDC20_CTRL_FIFO_NS (0 << 8) +#define VIDC20_CTRL_FIFO_4 (1 << 8) +#define VIDC20_CTRL_FIFO_8 (2 << 8) +#define VIDC20_CTRL_FIFO_12 (3 << 8) +#define VIDC20_CTRL_FIFO_16 (4 << 8) +#define VIDC20_CTRL_FIFO_20 (5 << 8) +#define VIDC20_CTRL_FIFO_24 (6 << 8) +#define VIDC20_CTRL_FIFO_28 (7 << 8) +#define VIDC20_CTRL_INT (1 << 12) +#define VIDC20_CTRL_DUP (1 << 13) +#define VIDC20_CTRL_PDOWN (1 << 14) + +#define VIDC20_ECTL 0xc0000000 +#define VIDC20_ECTL_REG(x) ((x) & 0xf3) +#define VIDC20_ECTL_ECK (1 << 2) +#define VIDC20_ECTL_REDPED (1 << 8) +#define VIDC20_ECTL_GREENPED (1 << 9) +#define VIDC20_ECTL_BLUEPED (1 << 10) +#define VIDC20_ECTL_DAC (1 << 12) +#define VIDC20_ECTL_LCDGS (1 << 13) +#define VIDC20_ECTL_HRM (1 << 14) + +#define VIDC20_ECTL_HS_MASK (3 << 16) +#define VIDC20_ECTL_HS_HSYNC (0 << 16) +#define VIDC20_ECTL_HS_NHSYNC (1 << 16) +#define VIDC20_ECTL_HS_CSYNC (2 << 16) +#define VIDC20_ECTL_HS_NCSYNC (3 << 16) + +#define VIDC20_ECTL_VS_MASK (3 << 18) +#define VIDC20_ECTL_VS_VSYNC (0 << 18) +#define VIDC20_ECTL_VS_NVSYNC (1 << 18) +#define VIDC20_ECTL_VS_CSYNC (2 << 18) +#define VIDC20_ECTL_VS_NCSYNC (3 << 18) + +#define VIDC20_DCTL 0xf0000000 +/* 0-9 = number of words in scanline */ +#define VIDC20_DCTL_SNA (1 << 12) +#define VIDC20_DCTL_HDIS (1 << 13) +#define VIDC20_DCTL_BUS_NS (0 << 16) +#define VIDC20_DCTL_BUS_D31_0 (1 << 16) +#define VIDC20_DCTL_BUS_D63_32 (2 << 16) +#define VIDC20_DCTL_BUS_D63_0 (3 << 16) +#define VIDC20_DCTL_VRAM_DIS (0 << 18) +#define VIDC20_DCTL_VRAM_PXCLK (1 << 18) +#define VIDC20_DCTL_VRAM_PXCLK2 (2 << 18) +#define VIDC20_DCTL_VRAM_PXCLK4 (3 << 18) + +#endif diff --git a/drivers/video/adf/Kconfig b/drivers/video/adf/Kconfig new file mode 100644 index 00000000..33858b73 --- /dev/null +++ b/drivers/video/adf/Kconfig @@ -0,0 +1,14 @@ +menuconfig ADF + depends on SYNC + depends on DMA_SHARED_BUFFER + tristate "Atomic Display Framework" + +menuconfig ADF_FBDEV + depends on ADF + depends on FB + tristate "Helper for implementing the fbdev API in ADF drivers" + +menuconfig ADF_MEMBLOCK + depends on ADF + depends on HAVE_MEMBLOCK + tristate "Helper for using memblocks as buffers in ADF drivers" diff --git a/drivers/video/adf/Makefile b/drivers/video/adf/Makefile new file mode 100644 index 00000000..78d09151 --- /dev/null +++ b/drivers/video/adf/Makefile @@ -0,0 +1,15 @@ +ccflags-y := -Idrivers/staging/android + +CFLAGS_adf.o := -I$(src) + +obj-$(CONFIG_ADF) += adf.o \ + adf_client.o \ + adf_fops.o \ + adf_format.o \ + adf_sysfs.o + +obj-$(CONFIG_COMPAT) += adf_fops32.o + +obj-$(CONFIG_ADF_FBDEV) += adf_fbdev.o + +obj-$(CONFIG_ADF_MEMBLOCK) += adf_memblock.o diff --git a/drivers/video/adf/adf.c b/drivers/video/adf/adf.c new file mode 100644 index 00000000..42c30c05 --- /dev/null +++ b/drivers/video/adf/adf.c @@ -0,0 +1,1188 @@ +/* + * Copyright (C) 2013 Google, Inc. + * adf_modeinfo_{set_name,set_vrefresh} modified from + * drivers/gpu/drm/drm_modes.c + * adf_format_validate_yuv modified from framebuffer_check in + * drivers/gpu/drm/drm_crtc.c + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#include +#include +#include +#include +#include +#include +#include + +#include