]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
directfb: Fix compilation on ARM
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 22 Jun 2017 15:00:48 +0000 (16:00 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 22 Jun 2017 15:06:06 +0000 (16:06 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
config/rootfiles/packages/armv7hl/directfb [new file with mode: 0644]
lfs/directfb
src/patches/DirectFB-1.5.3-add-missing-davinci-files.patch [new file with mode: 0644]

diff --git a/config/rootfiles/packages/armv7hl/directfb b/config/rootfiles/packages/armv7hl/directfb
new file mode 100644 (file)
index 0000000..9863c68
--- /dev/null
@@ -0,0 +1,402 @@
+usr/bin/c64xdump
+usr/bin/dfbdump
+usr/bin/dfbdumpinput
+usr/bin/dfbfx
+usr/bin/dfbg
+usr/bin/dfbinfo
+usr/bin/dfbinput
+usr/bin/dfbinspector
+usr/bin/dfblayer
+usr/bin/dfbmaster
+usr/bin/dfbpenmount
+usr/bin/dfbplay
+usr/bin/dfbscreen
+usr/bin/dfbshow
+usr/bin/dfbswitch
+usr/bin/directfb-config
+usr/bin/directfb-csource
+usr/bin/mkdfiff
+usr/bin/mkdgiff
+usr/bin/mkdgifft
+usr/bin/pxa3xx_dump
+#usr/include/++dfb
+#usr/include/++dfb/++dfb.h
+#usr/include/++dfb/++dfb_mangle.h
+#usr/include/++dfb/++dfb_unmangle.h
+#usr/include/++dfb/idirectfb.h
+#usr/include/++dfb/idirectfbdatabuffer.h
+#usr/include/++dfb/idirectfbdisplaylayer.h
+#usr/include/++dfb/idirectfbeventbuffer.h
+#usr/include/++dfb/idirectfbfont.h
+#usr/include/++dfb/idirectfbimageprovider.h
+#usr/include/++dfb/idirectfbinputdevice.h
+#usr/include/++dfb/idirectfbpalette.h
+#usr/include/++dfb/idirectfbscreen.h
+#usr/include/++dfb/idirectfbsurface.h
+#usr/include/++dfb/idirectfbvideoprovider.h
+#usr/include/++dfb/idirectfbwindow.h
+#usr/include/directfb
+#usr/include/directfb-internal
+#usr/include/directfb-internal/core
+#usr/include/directfb-internal/core/CoreDFB.h
+#usr/include/directfb-internal/core/CoreDFB_CallMode.h
+#usr/include/directfb-internal/core/CoreDFB_includes.h
+#usr/include/directfb-internal/core/CoreGraphicsState.h
+#usr/include/directfb-internal/core/CoreGraphicsStateClient.h
+#usr/include/directfb-internal/core/CoreGraphicsState_includes.h
+#usr/include/directfb-internal/core/CoreInputDevice.h
+#usr/include/directfb-internal/core/CoreInputDevice_includes.h
+#usr/include/directfb-internal/core/CoreLayer.h
+#usr/include/directfb-internal/core/CoreLayerContext.h
+#usr/include/directfb-internal/core/CoreLayerContext_includes.h
+#usr/include/directfb-internal/core/CoreLayerRegion.h
+#usr/include/directfb-internal/core/CoreLayerRegion_includes.h
+#usr/include/directfb-internal/core/CoreLayer_includes.h
+#usr/include/directfb-internal/core/CorePalette.h
+#usr/include/directfb-internal/core/CorePalette_includes.h
+#usr/include/directfb-internal/core/CoreScreen.h
+#usr/include/directfb-internal/core/CoreScreen_includes.h
+#usr/include/directfb-internal/core/CoreSlave.h
+#usr/include/directfb-internal/core/CoreSlave_includes.h
+#usr/include/directfb-internal/core/CoreSurface.h
+#usr/include/directfb-internal/core/CoreSurfaceClient.h
+#usr/include/directfb-internal/core/CoreSurfaceClient_includes.h
+#usr/include/directfb-internal/core/CoreSurface_includes.h
+#usr/include/directfb-internal/core/CoreWindow.h
+#usr/include/directfb-internal/core/CoreWindowStack.h
+#usr/include/directfb-internal/core/CoreWindowStack_includes.h
+#usr/include/directfb-internal/core/CoreWindow_includes.h
+#usr/include/directfb-internal/core/Debug.h
+#usr/include/directfb-internal/core/DisplayTask.h
+#usr/include/directfb-internal/core/Fifo.h
+#usr/include/directfb-internal/core/Interface.h
+#usr/include/directfb-internal/core/PacketBuffer.h
+#usr/include/directfb-internal/core/Renderer.h
+#usr/include/directfb-internal/core/SurfaceTask.h
+#usr/include/directfb-internal/core/Task.h
+#usr/include/directfb-internal/core/TaskManager.h
+#usr/include/directfb-internal/core/TaskThreadsQ.h
+#usr/include/directfb-internal/core/Util.h
+#usr/include/directfb-internal/core/clipboard.h
+#usr/include/directfb-internal/core/colorhash.h
+#usr/include/directfb-internal/core/core.h
+#usr/include/directfb-internal/core/core_parts.h
+#usr/include/directfb-internal/core/core_strings.h
+#usr/include/directfb-internal/core/core_system.h
+#usr/include/directfb-internal/core/coredefs.h
+#usr/include/directfb-internal/core/coretypes.h
+#usr/include/directfb-internal/core/fonts.h
+#usr/include/directfb-internal/core/gfxcard.h
+#usr/include/directfb-internal/core/graphics_driver.h
+#usr/include/directfb-internal/core/graphics_state.h
+#usr/include/directfb-internal/core/input.h
+#usr/include/directfb-internal/core/input_driver.h
+#usr/include/directfb-internal/core/input_hub.h
+#usr/include/directfb-internal/core/layer_context.h
+#usr/include/directfb-internal/core/layer_control.h
+#usr/include/directfb-internal/core/layer_region.h
+#usr/include/directfb-internal/core/layers.h
+#usr/include/directfb-internal/core/layers_internal.h
+#usr/include/directfb-internal/core/palette.h
+#usr/include/directfb-internal/core/screen.h
+#usr/include/directfb-internal/core/screens.h
+#usr/include/directfb-internal/core/screens_internal.h
+#usr/include/directfb-internal/core/state.h
+#usr/include/directfb-internal/core/surface.h
+#usr/include/directfb-internal/core/surface_allocation.h
+#usr/include/directfb-internal/core/surface_buffer.h
+#usr/include/directfb-internal/core/surface_client.h
+#usr/include/directfb-internal/core/surface_core.h
+#usr/include/directfb-internal/core/surface_pool.h
+#usr/include/directfb-internal/core/surface_pool_bridge.h
+#usr/include/directfb-internal/core/system.h
+#usr/include/directfb-internal/core/windows.h
+#usr/include/directfb-internal/core/windows_internal.h
+#usr/include/directfb-internal/core/windowstack.h
+#usr/include/directfb-internal/core/wm.h
+#usr/include/directfb-internal/core/wm_module.h
+#usr/include/directfb-internal/devmem
+#usr/include/directfb-internal/devmem/devmem.h
+#usr/include/directfb-internal/devmem/surfacemanager.h
+#usr/include/directfb-internal/display
+#usr/include/directfb-internal/display/idirectfbdisplaylayer.h
+#usr/include/directfb-internal/display/idirectfbpalette.h
+#usr/include/directfb-internal/display/idirectfbscreen.h
+#usr/include/directfb-internal/display/idirectfbsurface.h
+#usr/include/directfb-internal/display/idirectfbsurface_layer.h
+#usr/include/directfb-internal/display/idirectfbsurface_window.h
+#usr/include/directfb-internal/dummy
+#usr/include/directfb-internal/dummy/dummy.h
+#usr/include/directfb-internal/fbdev
+#usr/include/directfb-internal/fbdev/agp.h
+#usr/include/directfb-internal/fbdev/fb.h
+#usr/include/directfb-internal/fbdev/fbdev.h
+#usr/include/directfb-internal/fbdev/surfacemanager.h
+#usr/include/directfb-internal/fbdev/vt.h
+#usr/include/directfb-internal/gfx
+#usr/include/directfb-internal/gfx/clip.h
+#usr/include/directfb-internal/gfx/convert.h
+#usr/include/directfb-internal/gfx/generic
+#usr/include/directfb-internal/gfx/generic/generic.h
+#usr/include/directfb-internal/gfx/util.h
+#usr/include/directfb-internal/idirectfb.h
+#usr/include/directfb-internal/init.h
+#usr/include/directfb-internal/input
+#usr/include/directfb-internal/input/idirectfbinputbuffer.h
+#usr/include/directfb-internal/input/idirectfbinputdevice.h
+#usr/include/directfb-internal/media
+#usr/include/directfb-internal/media/idirectfbdatabuffer.h
+#usr/include/directfb-internal/media/idirectfbdatabuffer_client.h
+#usr/include/directfb-internal/media/idirectfbfont.h
+#usr/include/directfb-internal/media/idirectfbimageprovider.h
+#usr/include/directfb-internal/media/idirectfbimageprovider_client.h
+#usr/include/directfb-internal/media/idirectfbvideoprovider.h
+#usr/include/directfb-internal/misc
+#usr/include/directfb-internal/misc/conf.h
+#usr/include/directfb-internal/misc/gfx_util.h
+#usr/include/directfb-internal/misc/util.h
+#usr/include/directfb-internal/windows
+#usr/include/directfb-internal/windows/idirectfbwindow.h
+#usr/include/directfb/dfb_types.h
+#usr/include/directfb/dfiff.h
+#usr/include/directfb/dgiff.h
+#usr/include/directfb/direct
+#usr/include/directfb/direct/Lists.h
+#usr/include/directfb/direct/LockWQ.h
+#usr/include/directfb/direct/Magic.h
+#usr/include/directfb/direct/Mutex.h
+#usr/include/directfb/direct/Performer.h
+#usr/include/directfb/direct/String.h
+#usr/include/directfb/direct/TLSObject.h
+#usr/include/directfb/direct/ToString.h
+#usr/include/directfb/direct/Types++.h
+#usr/include/directfb/direct/atomic.h
+#usr/include/directfb/direct/build.h
+#usr/include/directfb/direct/clock.h
+#usr/include/directfb/direct/compiler.h
+#usr/include/directfb/direct/conf.h
+#usr/include/directfb/direct/debug.h
+#usr/include/directfb/direct/direct.h
+#usr/include/directfb/direct/fastlz.h
+#usr/include/directfb/direct/fifo.h
+#usr/include/directfb/direct/filesystem.h
+#usr/include/directfb/direct/flz.h
+#usr/include/directfb/direct/hash.h
+#usr/include/directfb/direct/init.h
+#usr/include/directfb/direct/interface.h
+#usr/include/directfb/direct/interface_implementation.h
+#usr/include/directfb/direct/list.h
+#usr/include/directfb/direct/log.h
+#usr/include/directfb/direct/log_domain.h
+#usr/include/directfb/direct/map.h
+#usr/include/directfb/direct/mem.h
+#usr/include/directfb/direct/memcpy.h
+#usr/include/directfb/direct/messages.h
+#usr/include/directfb/direct/modules.h
+#usr/include/directfb/direct/os
+#usr/include/directfb/direct/os/clock.h
+#usr/include/directfb/direct/os/filesystem.h
+#usr/include/directfb/direct/os/linux
+#usr/include/directfb/direct/os/linux/glibc
+#usr/include/directfb/direct/os/linux/glibc/filesystem.h
+#usr/include/directfb/direct/os/linux/glibc/mutex.h
+#usr/include/directfb/direct/os/linux/glibc/thread.h
+#usr/include/directfb/direct/os/linux/glibc/types.h
+#usr/include/directfb/direct/os/linux/glibc/waitqueue.h
+#usr/include/directfb/direct/os/log.h
+#usr/include/directfb/direct/os/mem.h
+#usr/include/directfb/direct/os/mutex.h
+#usr/include/directfb/direct/os/signals.h
+#usr/include/directfb/direct/os/system.h
+#usr/include/directfb/direct/os/thread.h
+#usr/include/directfb/direct/os/types.h
+#usr/include/directfb/direct/os/waitqueue.h
+#usr/include/directfb/direct/perf.h
+#usr/include/directfb/direct/print.h
+#usr/include/directfb/direct/processor.h
+#usr/include/directfb/direct/result.h
+#usr/include/directfb/direct/serial.h
+#usr/include/directfb/direct/signals.h
+#usr/include/directfb/direct/stream.h
+#usr/include/directfb/direct/system.h
+#usr/include/directfb/direct/thread.h
+#usr/include/directfb/direct/trace.h
+#usr/include/directfb/direct/tree.h
+#usr/include/directfb/direct/types.h
+#usr/include/directfb/direct/utf8.h
+#usr/include/directfb/direct/util.h
+#usr/include/directfb/direct/uuid.h
+#usr/include/directfb/directfb++.h
+#usr/include/directfb/directfb.h
+#usr/include/directfb/directfb_build.h
+#usr/include/directfb/directfb_graphics.h
+#usr/include/directfb/directfb_keyboard.h
+#usr/include/directfb/directfb_keynames.h
+#usr/include/directfb/directfb_strings.h
+#usr/include/directfb/directfb_util.h
+#usr/include/directfb/directfb_version.h
+#usr/include/directfb/directfb_water.h
+#usr/include/directfb/directfb_water_strings.h
+#usr/include/directfb/directfb_windows.h
+#usr/include/directfb/directfbgl.h
+#usr/include/directfb/directfbgl2.h
+#usr/include/directfb/fusion
+#usr/include/directfb/fusion/Debug.h
+#usr/include/directfb/fusion/arena.h
+#usr/include/directfb/fusion/build.h
+#usr/include/directfb/fusion/call.h
+#usr/include/directfb/fusion/conf.h
+#usr/include/directfb/fusion/fusion.h
+#usr/include/directfb/fusion/fusion_internal.h
+#usr/include/directfb/fusion/hash.h
+#usr/include/directfb/fusion/init.h
+#usr/include/directfb/fusion/lock.h
+#usr/include/directfb/fusion/object.h
+#usr/include/directfb/fusion/property.h
+#usr/include/directfb/fusion/protocol.h
+#usr/include/directfb/fusion/reactor.h
+#usr/include/directfb/fusion/ref.h
+#usr/include/directfb/fusion/shm
+#usr/include/directfb/fusion/shm/pool.h
+#usr/include/directfb/fusion/shm/shm.h
+#usr/include/directfb/fusion/shm/shm_internal.h
+#usr/include/directfb/fusion/shmalloc.h
+#usr/include/directfb/fusion/types.h
+#usr/include/directfb/fusion/vector.h
+#usr/lib/directfb-1.7-7
+#usr/lib/directfb-1.7-7/gfxdrivers
+#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_ati128.la
+usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_ati128.so
+#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_davinci.la
+usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_davinci.so
+#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_ep9x.la
+usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_ep9x.so
+#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_mach64.la
+usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_mach64.so
+#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_matrox.la
+usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_matrox.so
+#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_nsc.la
+usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_nsc.so
+#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_nvidia.la
+usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_nvidia.so
+#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_omap.la
+usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_omap.so
+#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_pxa3xx.la
+usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_pxa3xx.so
+#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_sdlgraphics.la
+usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_sdlgraphics.so
+#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_sis315.la
+usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_sis315.so
+#usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_tdfx.la
+usr/lib/directfb-1.7-7/gfxdrivers/libdirectfb_tdfx.so
+#usr/lib/directfb-1.7-7/inputdrivers
+#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_input_hub.la
+usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_input_hub.so
+#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_joystick.la
+usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_joystick.so
+#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_keyboard.la
+usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_keyboard.so
+#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_linux_input.la
+usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_linux_input.so
+#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_lirc.la
+usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_lirc.so
+#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_mutouch.la
+usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_mutouch.so
+#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_penmount.la
+usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_penmount.so
+#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_ps2mouse.la
+usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_ps2mouse.so
+#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_sdlinput.la
+usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_sdlinput.so
+#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_serialmouse.la
+usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_serialmouse.so
+#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_sonypi.la
+usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_sonypi.so
+#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_ucb1x00_ts.la
+usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_ucb1x00_ts.so
+#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_wm97xx_ts.la
+usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_wm97xx_ts.so
+#usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_zytronic.la
+usr/lib/directfb-1.7-7/inputdrivers/libdirectfb_zytronic.so
+#usr/lib/directfb-1.7-7/interfaces
+#usr/lib/directfb-1.7-7/interfaces/ICoreResourceManager
+#usr/lib/directfb-1.7-7/interfaces/ICoreResourceManager/libicoreresourcemanager_test.la
+usr/lib/directfb-1.7-7/interfaces/ICoreResourceManager/libicoreresourcemanager_test.so
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBFont
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBFont/libidirectfbfont_dgiff.la
+usr/lib/directfb-1.7-7/interfaces/IDirectFBFont/libidirectfbfont_dgiff.so
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBFont/libidirectfbfont_ft2.la
+usr/lib/directfb-1.7-7/interfaces/IDirectFBFont/libidirectfbfont_ft2.so
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_bmp.la
+usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_bmp.so
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_dfiff.la
+usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_dfiff.so
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_gif.la
+usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_gif.so
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_jpeg.la
+usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_jpeg.so
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_mpeg2.la
+usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_mpeg2.so
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_png.la
+usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_png.so
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_pnm.la
+usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_pnm.so
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_tiff.la
+usr/lib/directfb-1.7-7/interfaces/IDirectFBImageProvider/libidirectfbimageprovider_tiff.so
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBVideoProvider
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_gif.la
+usr/lib/directfb-1.7-7/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_gif.so
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_v4l.la
+usr/lib/directfb-1.7-7/interfaces/IDirectFBVideoProvider/libidirectfbvideoprovider_v4l.so
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBWindows
+#usr/lib/directfb-1.7-7/interfaces/IDirectFBWindows/libidirectfbwindows_default.la
+usr/lib/directfb-1.7-7/interfaces/IDirectFBWindows/libidirectfbwindows_default.so
+#usr/lib/directfb-1.7-7/interfaces/IWater
+#usr/lib/directfb-1.7-7/interfaces/IWater/libiwater_default.la
+usr/lib/directfb-1.7-7/interfaces/IWater/libiwater_default.so
+#usr/lib/directfb-1.7-7/systems
+#usr/lib/directfb-1.7-7/systems/libdirectfb_devmem.la
+usr/lib/directfb-1.7-7/systems/libdirectfb_devmem.so
+#usr/lib/directfb-1.7-7/systems/libdirectfb_dummy.la
+usr/lib/directfb-1.7-7/systems/libdirectfb_dummy.so
+#usr/lib/directfb-1.7-7/systems/libdirectfb_fbdev.la
+usr/lib/directfb-1.7-7/systems/libdirectfb_fbdev.so
+#usr/lib/directfb-1.7-7/systems/libdirectfb_sdl.la
+usr/lib/directfb-1.7-7/systems/libdirectfb_sdl.so
+#usr/lib/directfb-1.7-7/wm
+#usr/lib/directfb-1.7-7/wm/libdirectfbwm_default.la
+usr/lib/directfb-1.7-7/wm/libdirectfbwm_default.so
+usr/lib/lib++dfb-1.7.so.7
+usr/lib/lib++dfb-1.7.so.7.0.0
+#usr/lib/lib++dfb.la
+#usr/lib/lib++dfb.so
+#usr/lib/libdavinci_c64x.la
+#usr/lib/libdavinci_c64x.so
+usr/lib/libdavinci_c64x.so.0
+usr/lib/libdavinci_c64x.so.0.0.0
+usr/lib/libdirect-1.7.so.7
+usr/lib/libdirect-1.7.so.7.0.0
+#usr/lib/libdirect.la
+#usr/lib/libdirect.so
+usr/lib/libdirectfb-1.7.so.7
+usr/lib/libdirectfb-1.7.so.7.0.0
+#usr/lib/libdirectfb.la
+#usr/lib/libdirectfb.so
+usr/lib/libfusion-1.7.so.7
+usr/lib/libfusion-1.7.so.7.0.0
+#usr/lib/libfusion.la
+#usr/lib/libfusion.so
+#usr/lib/pkgconfig/++dfb.pc
+#usr/lib/pkgconfig/direct.pc
+#usr/lib/pkgconfig/directfb-internal.pc
+#usr/lib/pkgconfig/directfb.pc
+#usr/lib/pkgconfig/fusion.pc
+#usr/share/directfb-1.7.7
+usr/share/directfb-1.7.7/cursor.dat
+usr/share/directfb-1.7.7/cursor.png
+usr/share/directfb-1.7.7/decker.dgiff
+usr/share/directfb-1.7.7/decker.ttf
+#usr/share/man/man1/dfbg.1
+#usr/share/man/man1/directfb-csource.1
+#usr/share/man/man5/directfbrc.5
index 436fd92c66b7e34cbb1fa0f27b4170d041b74926..593154b85bcc9676ed5a0feee864a64297d1973d 100644 (file)
@@ -79,6 +79,8 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        @$(PREBUILD)
        @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/DirectFB-1.5.3-add-missing-davinci-files.patch
+
        cd $(DIR_APP) && ./configure \
                --prefix=/usr \
                --disable-x11 \
diff --git a/src/patches/DirectFB-1.5.3-add-missing-davinci-files.patch b/src/patches/DirectFB-1.5.3-add-missing-davinci-files.patch
new file mode 100644 (file)
index 0000000..bdea601
--- /dev/null
@@ -0,0 +1,1697 @@
+diff -urNp DirectFB-1.5.3_orig/gfxdrivers/davinci/davinci_c64x.h DirectFB-1.5.3/gfxdrivers/davinci/davinci_c64x.h
+--- DirectFB-1.5.3_orig/gfxdrivers/davinci/davinci_c64x.h      1969-12-31 19:00:00.000000000 -0500
++++ DirectFB-1.5.3/gfxdrivers/davinci/davinci_c64x.h   2012-05-09 02:20:38.342006623 -0400
+@@ -0,0 +1,935 @@
++/*
++   TI Davinci driver - C64X+ DSP Library
++
++   (c) Copyright 2008  directfb.org
++   (c) Copyright 2007  Telio AG
++
++   Written by Denis Oliver Kropp <dok@directfb.org> and
++              Olaf Dreesen <olaf@directfb.org>.
++
++   All rights reserved.
++
++   This library 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.
++
++   This library 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.
++
++   You should have received a copy of the GNU General Public
++   License along with this library; if not, write to the
++   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++   Boston, MA 02111-1307, USA.
++*/
++
++#ifndef __DAVINCI_C64X_H__
++#define __DAVINCI_C64X_H__
++
++#include <unistd.h>
++
++#include <directfb.h>
++
++#include <direct/messages.h>
++#include <direct/trace.h>
++
++#include <linux/c64x.h>
++
++#define mb() __asm__ __volatile__ ("" : : : "memory")
++
++/**********************************************************************************************************************/
++
++typedef struct {
++     int                 magic;
++
++     int                 fd;
++     c64xTaskControl    *ctl;
++     void               *mem;
++
++     c64xTask           *QueueL;
++} DavinciC64x;
++
++typedef struct {
++     int                 magic;
++     unsigned int        max_tasks;
++     unsigned int        num_tasks;
++     c64xTask           *tasks;
++} DavinciC64xTasks;
++
++typedef enum {
++     C64X_TEF_NONE       = 0x0000,
++     C64X_TEF_RESET      = 0x0001
++} DavinciC64xEmitFlags;
++
++/**********************************************************************************************************************/
++
++DFBResult davinci_c64x_open    ( DavinciC64x *c64x );
++
++DFBResult davinci_c64x_close   ( DavinciC64x *c64x );
++
++DFBResult davinci_c64x_wait_low( DavinciC64x *c64x );
++
++/**********************************************************************************************************************/
++
++DFBResult davinci_c64x_tasks_init   ( DavinciC64xTasks *tasks,
++                                      unsigned int      size );
++
++DFBResult davinci_c64x_tasks_destroy( DavinciC64xTasks *tasks );
++
++/**********************************************************************************************************************/
++
++DFBResult davinci_c64x_emit_tasks( DavinciC64x          *c64x,
++                                   DavinciC64xTasks     *tasks,
++                                   DavinciC64xEmitFlags  flags );
++
++/**********************************************************************************************************************/
++
++static const char *state_names[] = { "DONE", "ERROR", "TODO", "RUNNING" };
++
++static inline c64xTask *
++c64x_get_task( DavinciC64x *c64x )
++{
++     c64xTaskControl *ctl   = c64x->ctl;
++     uint32_t         idx   = ctl->QL_arm;
++     uint32_t         next  = (idx + 1) & C64X_QUEUE_MASK;
++     c64xTask        *task  = &c64x->QueueL[idx];
++     int              loops = 0;
++     uint32_t         idle  = 0;
++
++     /* Wait for the entry (and next) to be processed by the DSP (rare case). */
++     while (task->c64x_flags & C64X_FLAG_TODO || ctl->QL_dsp == next) {
++          if (loops > 666 || (idle && ctl->idlecounter - idle > 666)) {
++               c64xTask *dsp_task = &c64x->QueueL[ctl->QL_dsp];
++
++               D_PERROR( "Davinci/C64X+: Blocked! [DSP %d / %d (%s), ARM %d / %d (%s)]\n",
++                         ctl->QL_dsp,
++                         (dsp_task->c64x_function >> 2) & 0x3fff,
++                         state_names[dsp_task->c64x_function & 3],
++                         ctl->QL_arm,
++                         (task->c64x_function >> 2) & 0x3fff,
++                         state_names[task->c64x_function & 3] );
++
++               break;
++          }
++
++          idle = ctl->idlecounter;
++
++          /* Queue is full, waiting 10-20ms should not be too bad. */
++          if (loops++ > 10)
++               usleep( 5000 );
++     }
++
++     return task;
++}
++
++static inline void
++c64x_submit_task( DavinciC64x *c64x, c64xTask *task )
++{
++     c64xTaskControl *ctl  = c64x->ctl;
++     uint32_t         idx  = ctl->QL_arm;
++     uint32_t         next = (idx + 1) & C64X_QUEUE_MASK;
++
++     mb();
++
++     ctl->QL_arm = next;
++
++     mb();
++}
++
++/**********************************************************************************************************************/
++
++static inline void
++davinci_c64x_wb_inv_range( DavinciC64x   *c64x,
++                           unsigned long  start,
++                           u32            length,
++                           u32            func )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = start;
++     task->c64x_arg[1] = length;
++     task->c64x_arg[2] = func;
++
++     task->c64x_function = C64X_WB_INV_RANGE | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_write_back_all( DavinciC64x *c64x )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_function = C64X_WRITE_BACK_ALL | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++/**********************************************************************************************************************/
++
++static inline void
++davinci_c64x_load_block__L( DavinciC64xTasks *tasks,
++                            unsigned long     words,
++                            u32               num,
++                            u32               flags )
++{
++     c64xTask *task = &tasks->tasks[tasks->num_tasks];
++
++     D_ASSERT( tasks->num_tasks < tasks->max_tasks );
++
++     task->c64x_arg[0] = words;
++     task->c64x_arg[1] = num;
++     task->c64x_arg[2] = flags;
++
++     task->c64x_function = C64X_LOAD_BLOCK | C64X_FLAG_TODO;
++
++     tasks->num_tasks++;
++}
++
++static inline void
++davinci_c64x_load_block( DavinciC64x   *c64x,
++                         unsigned long  words,
++                         u32            num,
++                         u32            flags )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = words;
++     task->c64x_arg[1] = num;
++     task->c64x_arg[2] = flags;
++
++     task->c64x_function = C64X_LOAD_BLOCK | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_fetch_uyvy( DavinciC64x   *c64x,
++                         unsigned long  dest,
++                         unsigned long  source,
++                         u32            pitch,
++                         u32            height,
++                         u32            flags )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = source;
++     task->c64x_arg[2] = pitch;
++     task->c64x_arg[3] = height;
++     task->c64x_arg[4] = flags;
++
++     task->c64x_function = C64X_FETCH_UYVY | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_mc( DavinciC64x   *c64x,
++                 unsigned long  dest,
++                 u32            dpitch,
++                 unsigned long  source0,
++                 unsigned long  source1,
++                 u32            spitch,
++                 u32            height,
++                 int            func )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = dpitch;
++     task->c64x_arg[2] = source0;
++     task->c64x_arg[3] = source1;
++     task->c64x_arg[4] = spitch;
++     task->c64x_arg[5] = height;
++
++     task->c64x_function = func | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_put_idct_uyvy_16x16__L( DavinciC64xTasks *tasks,
++                                     unsigned long     dest,
++                                     u32               pitch,
++                                     u32               flags )
++{
++     c64xTask *task = &tasks->tasks[tasks->num_tasks];
++
++     D_ASSERT( tasks->num_tasks < tasks->max_tasks );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = pitch;
++     task->c64x_arg[2] = flags;
++
++     task->c64x_function = C64X_PUT_IDCT_UYVY_16x16 | C64X_FLAG_TODO;
++
++     tasks->num_tasks++;
++}
++
++static inline void
++davinci_c64x_put_idct_uyvy_16x16( DavinciC64x   *c64x,
++                                  unsigned long  dest,
++                                  u32            pitch,
++                                  u32            flags )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = pitch;
++     task->c64x_arg[2] = flags;
++
++     task->c64x_function = C64X_PUT_IDCT_UYVY_16x16 | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_put_mc_uyvy_16x16__L( DavinciC64xTasks *tasks,
++                                   unsigned long     dest,
++                                   u32               pitch,
++                                   u32               flags )
++{
++     c64xTask *task = &tasks->tasks[tasks->num_tasks];
++
++     D_ASSERT( tasks->num_tasks < tasks->max_tasks );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = pitch;
++     task->c64x_arg[2] = flags;
++
++     task->c64x_function = C64X_PUT_MC_UYVY_16x16 | C64X_FLAG_TODO;
++
++     tasks->num_tasks++;
++}
++
++static inline void
++davinci_c64x_put_mc_uyvy_16x16( DavinciC64x   *c64x,
++                                unsigned long  dest,
++                                u32            pitch,
++                                u32            flags )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = pitch;
++     task->c64x_arg[2] = flags;
++
++     task->c64x_function = C64X_PUT_MC_UYVY_16x16 | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_put_sum_uyvy_16x16__L( DavinciC64xTasks *tasks,
++                                    unsigned long     dest,
++                                    u32               pitch,
++                                    u32               flags )
++{
++     c64xTask *task = &tasks->tasks[tasks->num_tasks];
++
++     D_ASSERT( tasks->num_tasks < tasks->max_tasks );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = pitch;
++     task->c64x_arg[2] = flags;
++
++     task->c64x_function = C64X_PUT_SUM_UYVY_16x16 | C64X_FLAG_TODO;
++
++     tasks->num_tasks++;
++}
++
++static inline void
++davinci_c64x_put_sum_uyvy_16x16( DavinciC64x   *c64x,
++                                 unsigned long  dest,
++                                 u32            pitch,
++                                 u32            flags )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = pitch;
++     task->c64x_arg[2] = flags;
++
++     task->c64x_function = C64X_PUT_SUM_UYVY_16x16 | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_dva_begin_frame__L( DavinciC64xTasks *tasks,
++                                 u32               pitch,
++                                 unsigned long     current,
++                                 unsigned long     past,
++                                 unsigned long     future,
++                                 u32               flags )
++{
++     c64xTask *task = &tasks->tasks[tasks->num_tasks];
++
++     D_ASSERT( tasks->num_tasks < tasks->max_tasks );
++
++     task->c64x_arg[0] = pitch;
++     task->c64x_arg[1] = current;
++     task->c64x_arg[2] = past;
++     task->c64x_arg[3] = future;
++     task->c64x_arg[4] = flags;
++
++     task->c64x_function = C64X_DVA_BEGIN_FRAME | C64X_FLAG_TODO;
++
++     tasks->num_tasks++;
++}
++
++static inline void
++davinci_c64x_dva_begin_frame( DavinciC64x   *c64x,
++                              u32            pitch,
++                              unsigned long  current,
++                              unsigned long  past,
++                              unsigned long  future,
++                              u32            flags )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = pitch;
++     task->c64x_arg[1] = current;
++     task->c64x_arg[2] = past;
++     task->c64x_arg[3] = future;
++     task->c64x_arg[4] = flags;
++
++     task->c64x_function = C64X_DVA_BEGIN_FRAME | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_dva_motion_block__L( DavinciC64xTasks *tasks,
++                                  unsigned long     macroblock )
++{
++     c64xTask *task = &tasks->tasks[tasks->num_tasks];
++
++     D_ASSERT( tasks->num_tasks < tasks->max_tasks );
++
++     task->c64x_arg[0] = macroblock;
++
++     task->c64x_function = C64X_DVA_MOTION_BLOCK | C64X_FLAG_TODO;
++
++     tasks->num_tasks++;
++}
++
++static inline void
++davinci_c64x_dva_motion_block( DavinciC64x   *c64x,
++                               unsigned long  macroblock )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = macroblock;
++
++     task->c64x_function = C64X_DVA_MOTION_BLOCK | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++/**********************************************************************************************************************/
++
++static inline void
++davinci_c64x_dva_idct( DavinciC64x   *c64x,
++                                 unsigned long  dest,
++                                 u32            pitch,
++                                 unsigned long  source )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = pitch;
++     task->c64x_arg[2] = source;
++
++     task->c64x_function = C64X_DVA_IDCT | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++/**********************************************************************************************************************/
++
++static inline void
++davinci_c64x_put_uyvy_16x16( DavinciC64x   *c64x,
++                             unsigned long  dest,
++                             u32            pitch,
++                             unsigned long  source,
++                             u32            flags )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = pitch;
++     task->c64x_arg[2] = source;
++     task->c64x_arg[3] = flags;
++
++     task->c64x_function = C64X_PUT_UYVY_16x16 | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_dither_argb__L( DavinciC64xTasks *tasks,
++                             unsigned long     dst_rgb,
++                             unsigned long     dst_alpha,
++                             u32               dst_pitch,
++                             unsigned long     source,
++                             u32               src_pitch,
++                             u32               width,
++                             u32               height )
++{
++     c64xTask *task = &tasks->tasks[tasks->num_tasks];
++
++     D_ASSERT( tasks->num_tasks < tasks->max_tasks );
++
++     task->c64x_arg[0] = dst_rgb;
++     task->c64x_arg[1] = dst_alpha;
++     task->c64x_arg[2] = dst_pitch;
++     task->c64x_arg[3] = source;
++     task->c64x_arg[4] = src_pitch;
++     task->c64x_arg[5] = width;
++     task->c64x_arg[6] = height;
++
++     task->c64x_function = C64X_DITHER_ARGB | C64X_FLAG_TODO;
++
++     tasks->num_tasks++;
++}
++
++static inline void
++davinci_c64x_dither_argb( DavinciC64x   *c64x,
++                          unsigned long  dst_rgb,
++                          unsigned long  dst_alpha,
++                          u32            dst_pitch,
++                          unsigned long  source,
++                          u32            src_pitch,
++                          u32            width,
++                          u32            height )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dst_rgb;
++     task->c64x_arg[1] = dst_alpha;
++     task->c64x_arg[2] = dst_pitch;
++     task->c64x_arg[3] = source;
++     task->c64x_arg[4] = src_pitch;
++     task->c64x_arg[5] = width;
++     task->c64x_arg[6] = height;
++
++     task->c64x_function = C64X_DITHER_ARGB | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_fill_16__L( DavinciC64xTasks *tasks,
++                         unsigned long     dest,
++                         u32               pitch,
++                         u32               width,
++                         u32               height,
++                         u32               value )
++{
++     c64xTask *task = &tasks->tasks[tasks->num_tasks];
++
++     D_ASSERT( tasks->num_tasks < tasks->max_tasks );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = pitch;
++     task->c64x_arg[2] = width;
++     task->c64x_arg[3] = height;
++     task->c64x_arg[4] = value;
++
++     task->c64x_function = C64X_FILL_16 | C64X_FLAG_TODO;
++
++     tasks->num_tasks++;
++}
++
++static inline void
++davinci_c64x_fill_16( DavinciC64x   *c64x,
++                      unsigned long  dest,
++                      u32            pitch,
++                      u32            width,
++                      u32            height,
++                      u32            value )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = pitch;
++     task->c64x_arg[2] = width;
++     task->c64x_arg[3] = height;
++     task->c64x_arg[4] = value;
++
++     task->c64x_function = C64X_FILL_16 | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_fill_32__L( DavinciC64xTasks *tasks,
++                         unsigned long     dest,
++                         u32               pitch,
++                         u32               width,
++                         u32               height,
++                         u32               value )
++{
++     c64xTask *task = &tasks->tasks[tasks->num_tasks];
++
++     D_ASSERT( tasks->num_tasks < tasks->max_tasks );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = pitch;
++     task->c64x_arg[2] = width;
++     task->c64x_arg[3] = height;
++     task->c64x_arg[4] = value;
++
++     task->c64x_function = C64X_FILL_32 | C64X_FLAG_TODO;
++
++     tasks->num_tasks++;
++}
++
++static inline void
++davinci_c64x_fill_32( DavinciC64x   *c64x,
++                      unsigned long  dest,
++                      u32            pitch,
++                      u32            width,
++                      u32            height,
++                      u32            value )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = pitch;
++     task->c64x_arg[2] = width;
++     task->c64x_arg[3] = height;
++     task->c64x_arg[4] = value;
++
++     task->c64x_function = C64X_FILL_32 | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_blit_16__L( DavinciC64xTasks *tasks,
++                         unsigned long     dest,
++                         u32               dpitch,
++                         unsigned long     src,
++                         u32               spitch,
++                         u32               width,
++                         u32               height )
++{
++     c64xTask *task = &tasks->tasks[tasks->num_tasks];
++
++     D_ASSERT( tasks->num_tasks < tasks->max_tasks );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = dpitch;
++     task->c64x_arg[2] = src;
++     task->c64x_arg[3] = spitch;
++     task->c64x_arg[4] = width;
++     task->c64x_arg[5] = height;
++
++     task->c64x_function = C64X_COPY_16 | C64X_FLAG_TODO;
++
++     tasks->num_tasks++;
++}
++
++static inline void
++davinci_c64x_blit_16( DavinciC64x   *c64x,
++                      unsigned long  dest,
++                      u32            dpitch,
++                      unsigned long  src,
++                      u32            spitch,
++                      u32            width,
++                      u32            height )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = dpitch;
++     task->c64x_arg[2] = src;
++     task->c64x_arg[3] = spitch;
++     task->c64x_arg[4] = width;
++     task->c64x_arg[5] = height;
++
++     task->c64x_function = C64X_COPY_16 | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_blit_32__L( DavinciC64xTasks *tasks,
++                         unsigned long     dest,
++                         u32               dpitch,
++                         unsigned long     src,
++                         u32               spitch,
++                         u32               width,
++                         u32               height )
++{
++     c64xTask *task = &tasks->tasks[tasks->num_tasks];
++
++     D_ASSERT( tasks->num_tasks < tasks->max_tasks );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = dpitch;
++     task->c64x_arg[2] = src;
++     task->c64x_arg[3] = spitch;
++     task->c64x_arg[4] = width;
++     task->c64x_arg[5] = height;
++
++     task->c64x_function = C64X_COPY_32 | C64X_FLAG_TODO;
++
++     tasks->num_tasks++;
++}
++
++static inline void
++davinci_c64x_blit_32( DavinciC64x   *c64x,
++                      unsigned long  dest,
++                      u32            dpitch,
++                      unsigned long  src,
++                      u32            spitch,
++                      u32            width,
++                      u32            height )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = dpitch;
++     task->c64x_arg[2] = src;
++     task->c64x_arg[3] = spitch;
++     task->c64x_arg[4] = width;
++     task->c64x_arg[5] = height;
++
++     task->c64x_function = C64X_COPY_32 | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_stretch_32__L( DavinciC64xTasks *tasks,
++                            unsigned long     dest,
++                            u32               dpitch,
++                            unsigned long     src,
++                            u32               spitch,
++                            u32               dw,
++                            u32               dh,
++                            u32               sw,
++                            u32               sh,
++                            const DFBRegion  *clip )
++{
++     c64xTask *task = &tasks->tasks[tasks->num_tasks];
++
++     D_ASSERT( tasks->num_tasks < tasks->max_tasks );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = src;
++     task->c64x_arg[2] = dpitch   | (spitch   << 16);
++     task->c64x_arg[3] = dh       | (dw       << 16);
++     task->c64x_arg[4] = sh       | (sw       << 16);
++     task->c64x_arg[5] = clip->x2 | (clip->y2 << 16);
++     task->c64x_arg[6] = clip->x1 | (clip->y1 << 16);
++
++     if (sw > dw && sh > dh)
++          task->c64x_function = C64X_STRETCH_32_down | C64X_FLAG_TODO;
++     else
++          task->c64x_function = C64X_STRETCH_32_up | C64X_FLAG_TODO;
++
++     tasks->num_tasks++;
++}
++
++static inline void
++davinci_c64x_stretch_32( DavinciC64x     *c64x,
++                         unsigned long    dest,
++                         u32              dpitch,
++                         unsigned long    src,
++                         u32              spitch,
++                         u32              dw,
++                         u32              dh,
++                         u32              sw,
++                         u32              sh,
++                         const DFBRegion *clip )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = src;
++     task->c64x_arg[2] = dpitch   | (spitch   << 16);
++     task->c64x_arg[3] = dh       | (dw       << 16);
++     task->c64x_arg[4] = sh       | (sw       << 16);
++     task->c64x_arg[5] = clip->x2 | (clip->y2 << 16);
++     task->c64x_arg[6] = clip->x1 | (clip->y1 << 16);
++
++     if (sw > dw && sh > dh)
++          task->c64x_function = C64X_STRETCH_32_down | C64X_FLAG_TODO;
++     else
++          task->c64x_function = C64X_STRETCH_32_up | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_blit_blend_32__L( DavinciC64xTasks *tasks,
++                               u32               sub_func,
++                               unsigned long     dest,
++                               u32               dpitch,
++                               unsigned long     src,
++                               u32               spitch,
++                               u32               width,
++                               u32               height,
++                               u32               argb,
++                               u8                alpha )
++{
++     c64xTask *task = &tasks->tasks[tasks->num_tasks];
++
++     D_ASSERT( tasks->num_tasks < tasks->max_tasks );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = dpitch;
++     task->c64x_arg[2] = src;
++     task->c64x_arg[3] = spitch;
++     task->c64x_arg[4] = width | (height << 16);
++     task->c64x_arg[5] = argb;
++     task->c64x_arg[6] = alpha;
++
++     task->c64x_function = (sub_func << 16) | C64X_BLEND_32 | C64X_FLAG_TODO;
++
++     tasks->num_tasks++;
++}
++
++static inline void
++davinci_c64x_blit_blend_32( DavinciC64x   *c64x,
++                            u32            sub_func,
++                            unsigned long  dest,
++                            u32            dpitch,
++                            unsigned long  src,
++                            u32            spitch,
++                            u32            width,
++                            u32            height,
++                            u32            argb,
++                            u8             alpha )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = dpitch;
++     task->c64x_arg[2] = src;
++     task->c64x_arg[3] = spitch;
++     task->c64x_arg[4] = width | (height << 16);
++     task->c64x_arg[5] = argb;
++     task->c64x_arg[6] = alpha;
++
++     task->c64x_function = (sub_func << 16) | C64X_BLEND_32 | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_blit_keyed_16__L( DavinciC64xTasks *tasks,
++                               unsigned long     dest,
++                               u32               dpitch,
++                               unsigned long     src,
++                               u32               spitch,
++                               u32               width,
++                               u32               height,
++                               u32               key,
++                               u32               mask )
++{
++     c64xTask *task = &tasks->tasks[tasks->num_tasks];
++
++     D_ASSERT( tasks->num_tasks < tasks->max_tasks );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff);
++     task->c64x_arg[2] = src;
++     task->c64x_arg[3] = width;
++     task->c64x_arg[4] = height;
++     task->c64x_arg[5] = key;
++     task->c64x_arg[6] = mask;
++
++     task->c64x_function = C64X_COPY_KEYED_16 | C64X_FLAG_TODO;
++
++     tasks->num_tasks++;
++}
++
++static inline void
++davinci_c64x_blit_keyed_16( DavinciC64x   *c64x,
++                            unsigned long  dest,
++                            u32            dpitch,
++                            unsigned long  src,
++                            u32            spitch,
++                            u32            width,
++                            u32            height,
++                            u32            key,
++                            u32            mask )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff);
++     task->c64x_arg[2] = src;
++     task->c64x_arg[3] = width;
++     task->c64x_arg[4] = height;
++     task->c64x_arg[5] = key;
++     task->c64x_arg[6] = mask;
++
++     task->c64x_function = C64X_COPY_KEYED_16 | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++static inline void
++davinci_c64x_blit_keyed_32__L( DavinciC64xTasks *tasks,
++                               unsigned long     dest,
++                               u32               dpitch,
++                               unsigned long     src,
++                               u32               spitch,
++                               u32               width,
++                               u32               height,
++                               u32               key,
++                               u32               mask )
++{
++     c64xTask *task = &tasks->tasks[tasks->num_tasks];
++
++     D_ASSERT( tasks->num_tasks < tasks->max_tasks );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff);
++     task->c64x_arg[2] = src;
++     task->c64x_arg[3] = width;
++     task->c64x_arg[4] = height;
++     task->c64x_arg[5] = key;
++     task->c64x_arg[6] = mask;
++
++     task->c64x_function = C64X_COPY_KEYED_32 | C64X_FLAG_TODO;
++
++     tasks->num_tasks++;
++}
++
++static inline void
++davinci_c64x_blit_keyed_32( DavinciC64x   *c64x,
++                            unsigned long  dest,
++                            u32            dpitch,
++                            unsigned long  src,
++                            u32            spitch,
++                            u32            width,
++                            u32            height,
++                            u32            key,
++                            u32            mask )
++{
++     c64xTask *task = c64x_get_task( c64x );
++
++     task->c64x_arg[0] = dest;
++     task->c64x_arg[1] = (dpitch << 16) | (spitch & 0xffff);
++     task->c64x_arg[2] = src;
++     task->c64x_arg[3] = width;
++     task->c64x_arg[4] = height;
++     task->c64x_arg[5] = key;
++     task->c64x_arg[6] = mask;
++
++     task->c64x_function = C64X_COPY_KEYED_32 | C64X_FLAG_TODO;
++
++     c64x_submit_task( c64x, task );
++}
++
++#endif
++
+diff -urNp DirectFB-1.5.3_orig/gfxdrivers/davinci/davincifb.h DirectFB-1.5.3/gfxdrivers/davinci/davincifb.h
+--- DirectFB-1.5.3_orig/gfxdrivers/davinci/davincifb.h 1969-12-31 19:00:00.000000000 -0500
++++ DirectFB-1.5.3/gfxdrivers/davinci/davincifb.h      2012-05-09 02:20:07.271230380 -0400
+@@ -0,0 +1,581 @@
++/* 
++ * Copyright (C) 2006 Texas Instruments Inc
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option)any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
++ *
++ * File: davincifb.h  
++ */
++
++#ifndef DAVINVI_VPBE_H
++#define DAVINVI_VPBE_H
++
++/* include Linux files */
++#include <linux/fb.h>
++
++/* define the custom FBIO_WAITFORVSYNC ioctl */
++#define FBIO_WAITFORVSYNC     _IOW('F', 0x20, u_int32_t)
++#define FBIO_SETATTRIBUTE       _IOW('F', 0x21, struct fb_fillrect)
++
++/* Backported IOCTLS. */
++#define FBIO_SETPOSX                            _IOW('F', 0x22, u_int32_t)
++#define FBIO_SETPOSY                            _IOW('F', 0x23, u_int32_t)
++#define FBIO_SETZOOM                          _IOW('F', 0x24, struct zoom_params)
++#define FBIO_GETSTD                             _IOR('F', 0x25, u_int32_t)
++#define FBIO_RESIZER                          _IOW('F', 0x26, struct vpfe_resizer_params)
++#define FBIO_SYNC                             _IOW('F', 0x27, u_int32_t)
++
++typedef struct zoom_params {
++      u_int32_t window_id;
++      u_int32_t zoom_h;
++      u_int32_t zoom_v;
++} zoom_params_t;
++
++typedef struct vpfe_resizer_params
++{
++      u_int32_t rsz_cnt;      //busy-lock
++      u_int32_t out_size;     //busy-lock
++      u_int32_t in_start;     //busy-lock
++      u_int32_t in_size;      //busy-lock
++      u_int32_t sdr_inadd;    //shadowed
++      u_int32_t sdr_inoff;    //shadowed
++      u_int32_t sdr_outadd;   //shadowed
++      u_int32_t sdr_outoff;   //shadowed
++      u_int32_t hfilt[16];    //busy-lock
++      u_int32_t vfilt[16];    //busy-lock
++      u_int32_t yenh;         //busy-lock
++} vpfe_resizer_params_t;
++
++typedef struct fb_set_start {
++      int             offset;         /* offset from smem_start */
++      unsigned long   physical;       /* absolute physical address when offset < 0 */
++
++      u_int64_t       sync;           /* input:  target sync counter for change or 0 for no sync at all,
++                                         output: sync counter of actual change or 0 if still pending */
++} fb_set_start_t;
++
++
++#ifdef _IOC_TYPECHECK
++#undef _IOC_TYPECHECK
++#define _IOC_TYPECHECK(x)     (sizeof(x))
++#endif
++
++#define       RAM_CLUT_SIZE   256*3
++#define FBIO_ENABLE_DISABLE_WIN               \
++      _IOW('F', 0x30, unsigned char)
++#define FBIO_SET_BITMAP_BLEND_FACTOR  \
++      _IOW('F', 0x31, vpbe_bitmap_blend_params_t)
++#define FBIO_SET_BITMAP_WIN_RAM_CLUT    \
++      _IOW('F', 0x32, unsigned char)*RAM_CLUT_SIZE)
++#define FBIO_ENABLE_DISABLE_ATTRIBUTE_WIN \
++      _IOW('F', 0x33, unsigned int)
++#define FBIO_GET_BLINK_INTERVAL               \
++      _IOR('F', 0x34, vpbe_blink_option_t)
++#define FBIO_SET_BLINK_INTERVAL         \
++      _IOW('F', 0x35, vpbe_blink_option_t)
++#define FBIO_GET_VIDEO_CONFIG_PARAMS    \
++      _IOR('F', 0x36, vpbe_video_config_params_t)
++#define FBIO_SET_VIDEO_CONFIG_PARAMS    \
++      _IOW('F', 0x37, vpbe_video_config_params_t)
++#define FBIO_GET_BITMAP_CONFIG_PARAMS   \
++      _IOR('F', 0x38, vpbe_bitmap_config_params_t)
++#define FBIO_SET_BITMAP_CONFIG_PARAMS   \
++      _IOW('F', 0x39, vpbe_bitmap_config_params_t)
++#define FBIO_SET_DCLK                   \
++      _IOW('F', 0x40, vpbe_dclk_t)
++#define FBIO_SET_INTERFACE            \
++      _IOW('F', 0x41, unsigned char)
++#define FBIO_GET_INTERFACE            \
++      _IOR('F', 0x42, unsigned char)
++#define FBIO_QUERY_TIMING             \
++      _IOWR('F', 0x43, struct vpbe_mode_info)
++#define FBIO_SET_TIMING                       \
++      _IOW('F', 0x44, struct vpbe_fb_videomode)
++#define FBIO_GET_TIMING                 \
++      _IOR('F', 0x45, struct vpbe_fb_videomode)
++#define FBIO_SET_VENC_CLK_SOURCE      \
++      _IOW('F', 0x46, unsigned char)
++#define FBIO_SET_BACKG_COLOR            \
++      _IOW('F', 0x47, vpbe_backg_color_t)
++#define FBIO_ENABLE_DISPLAY           \
++      _IOW('F', 0x48, unsigned char)
++#define FBIO_SETPOS                           \
++      _IOW('F', 0x49, u_int32_t)
++#define FBIO_SET_CURSOR               \
++      _IOW('F', 0x50, struct fb_cursor)
++#define FBIO_SET_START                \
++      _IOW('F', 0x66, struct fb_set_start)
++
++/* 
++ * Defines and Constants
++ */
++#ifdef __KERNEL__
++#define DAVINCIFB_DEVICE "davincifb"
++#define DAVINCIFB_DRIVER "davincifb"
++
++#define MULTIPLE_BUFFERING      1
++
++#ifdef MULTIPLE_BUFFERING
++#define DOUBLE_BUF      2
++#define TRIPLE_BUF      3
++#else
++#define DOUBLE_BUF      1
++#define TRIPLE_BUF      1
++#endif
++
++/* usage:     if (is_win(info->fix.id, OSD0)) ... */
++#define is_win(name, x) ((strcmp(name, x ## _FBNAME) == 0) ? 1 : 0)
++
++/*
++ * display controller register I/O routines
++ */
++u32 dispc_reg_in(u32 offset);
++u32 dispc_reg_out(u32 offset, u32 val);
++u32 dispc_reg_merge(u32 offset, u32 val, u32 mask);
++
++#endif                                /*__KERNEL__*/
++
++/*  Error return codes  */
++#define VPBE_INVALID_PARA_VALUE         700
++#define VPBE_WRONG_WINDOW_ID            701
++#define VPBE_CURRENTLY_IN_REQUIRED_MODE 702
++#define VPBE_INSUFFICIENT_CLUT_VALUES   703
++#define VPBE_CLUT_WRITE_TIMEOUT         704
++#define VPBE_VID0_BUF_ADR_NULL          705
++#define VPBE_WINDOW_NOT_DISABLED        706
++#define VPBE_WINDOW_NOT_ENABLED         707
++
++#ifndef __KERNEL__
++/*  Window ID definations */
++#define OSD0      0
++#define VID0      1
++#define OSD1      2
++#define VID1      3
++#endif
++
++/* There are 4 framebuffers, each represented by an fb_info and
++ * a dm_win_info structure */
++#define OSD0_FBNAME "dm_osd0_fb"
++#define OSD1_FBNAME "dm_osd1_fb"
++#define VID0_FBNAME "dm_vid0_fb"
++#define VID1_FBNAME "dm_vid1_fb"
++
++/*  FIXME: Digital LCD RGB matrix coefficients */
++#define DLCD_DGY_VAL    0
++#define DLCD_DRV_VAL    0
++#define DLCD_DGU_VAL    0
++#define DLCD_DBU_VAL          0
++
++/* Defines for bitmap format */
++#define VPBE_BITMAP_BIT_1     1
++#define VPBE_BITMAP_BIT_2     2
++#define VPBE_BITMAP_BIT_4     4
++#define VPBE_BITMAP_BIT_8     8
++#define VPBE_BITMAP_RGB565    16
++#define VPBE_VIDEO_YUV422     16
++#define VPBE_VIDEO_RGB888     24
++
++/* Defines foe cursor parameter validation*/
++#define MAX_CURSOR_WIDTH      0x3FF
++#define MAX_CURSOR_HEIGHT     0x1FF
++#define MAX_CURSOR_LINEWIDTH    7
++
++#define BASEX         0x80
++#define BASEY         0x12
++#define BASEX_DLCD            0x59
++#define BASEY_DLCD            0x22
++
++/*
++ * Enumerations 
++ */
++/*  Enum for blending factor  */
++typedef enum vpbe_blend_factor {
++      OSD_CONTRIBUTION_ZERO = 0,
++      OSD_CONTRIBUTION_1_BY_8 = 1,
++      OSD_CONTRIBUTION_2_BY_8 = 2,
++      OSD_CONTRIBUTION_3_BY_8 = 3,
++      OSD_CONTRIBUTION_4_BY_8 = 4,
++      OSD_CONTRIBUTION_5_BY_8 = 5,
++      OSD_CONTRIBUTION_6_BY_8 = 6,
++      OSD_CONTRIBUTION_ONE = 7
++} vpbe_blend_factor_t;
++
++/*  Enum for Boolean variables  */
++typedef enum {
++      SET_0 = 0,
++      SET_1 = 1
++} CB_CR_ORDER, ATTRIBUTE, ROM_RAM_CLUT;
++
++/*  Defines for Display Interface */
++#define  PRGB         0
++#define  COMPOSITE      1
++#define  SVIDEO       2
++#define  COMPONENT    3
++#define  RGB          4
++#define  YCC16        5
++#define  YCC8         6
++#define  SRGB         7
++#define  EPSON        8
++#define  CASIO1G      9
++#define  UDISP        10
++#define  STN          11
++#define VPBE_MAX_INTERFACES   12
++
++/*  Defines for Display Mode */
++#define  LCD    0
++#define  NTSC 1
++#define  PAL    2
++#define  P525   3
++#define  P625   4
++
++#define DEFAULT_MODE 0
++#define  P480   0
++#define  P400   1
++#define  P350   2
++#define NON_EXISTING_MODE 255
++/*  Enable/Disable enum */
++typedef enum {
++      VPBE_DISABLE = 0,
++      VPBE_ENABLE = 1
++} ATTENUATION, TRANSPARENCY, EXPANSION, BLINKING;
++
++typedef enum clk_source {
++      CLK_SOURCE_CLK27 = 0,
++      CLK_SOURCE_CLK54 = 1,
++      CLK_SOURCE_VPBECLK = 2
++} CLK_SOURCE;
++
++/*
++ * Structures and Union Definitions
++ */
++
++/*  Structure for transparency and the blending factor for the bitmap window  */
++typedef struct vpbe_bitmap_blend_params {
++      unsigned int colorkey;  /* color key to be blend */
++      unsigned int enable_colorkeying;        /* enable color keying */
++      unsigned int bf;        /* valid range from 0 to 7 only. */
++} vpbe_bitmap_blend_params_t;
++
++/*  Structure for window expansion  */
++typedef struct vpbe_win_expansion {
++      EXPANSION horizontal;
++      EXPANSION vertical;     /* 1: Enable 0:disable */
++} vpbe_win_expansion_t;
++
++/*  Structure for OSD window blinking options */
++typedef struct vpbe_blink_option {
++      BLINKING blinking;      /* 1: Enable blinking 0: Disable */
++      unsigned int interval;  /* Valid only if blinking is 1 */
++} vpbe_blink_option_t;
++
++/*  Structure for DCLK parameters */
++typedef struct vpbe_dclk {
++      unsigned char dclk_pattern_width;
++      unsigned int dclk_pattern0;
++      unsigned int dclk_pattern1;
++      unsigned int dclk_pattern2;
++      unsigned int dclk_pattern3;
++} vpbe_dclk_t;
++
++/*  Structure for display format  */
++typedef struct vpbe_display_format {
++      unsigned char interface;        /* Output interface type */
++      unsigned char mode;     /* output mode */
++} vpbe_display_format_t;
++
++/*  Structure for background color  */
++typedef struct vpbe_backg_color {
++      unsigned char clut_select;      /* 2: RAM CLUT 1:ROM1 CLUT 0:ROM0 CLUT */
++      unsigned char color_offset;     /* index of color */
++} vpbe_backg_color_t;
++
++/*  Structure for Video window configurable parameters  */
++typedef struct vpbe_video_config_params {
++      CB_CR_ORDER cb_cr_order;        /*Cb/Cr order in input data for a pixel. */
++      /*    0: cb cr  1:  cr cb */
++      vpbe_win_expansion_t exp_info;  /* HZ/VT Expansion enable disable */
++} vpbe_video_config_params_t;
++
++/*Union of structures giving the CLUT index for the 1, 2, 4 bit bitmap values.*/
++typedef union vpbe_clut_idx {
++      struct _for_4bit_bimap {
++              unsigned char bitmap_val_0;
++              unsigned char bitmap_val_1;
++              unsigned char bitmap_val_2;
++              unsigned char bitmap_val_3;
++              unsigned char bitmap_val_4;
++              unsigned char bitmap_val_5;
++              unsigned char bitmap_val_6;
++              unsigned char bitmap_val_7;
++              unsigned char bitmap_val_8;
++              unsigned char bitmap_val_9;
++              unsigned char bitmap_val_10;
++              unsigned char bitmap_val_11;
++              unsigned char bitmap_val_12;
++              unsigned char bitmap_val_13;
++              unsigned char bitmap_val_14;
++              unsigned char bitmap_val_15;
++      } for_4bit_bimap;
++      struct _for_2bit_bimap {
++              unsigned char bitmap_val_0;
++              unsigned char dummy0[4];
++              unsigned char bitmap_val_1;
++              unsigned char dummy1[4];
++              unsigned char bitmap_val_2;
++              unsigned char dummy2[4];
++              unsigned char bitmap_val_3;
++      } for_2bit_bimap;
++      struct _for_1bit_bimap {
++              unsigned char bitmap_val_0;
++              unsigned char dummy0[14];
++              unsigned char bitmap_val_1;
++      } for_1bit_bimap;
++} vpbe_clut_idx_t;
++
++/*  Structure for bitmap window configurable parameters */
++typedef struct vpbe_bitmap_config_params {
++      /* Only for bitmap width = 1,2,4 bits */
++      vpbe_clut_idx_t clut_idx;
++      /* Attenuation value for YUV o/p for bitmap window */
++      unsigned char attenuation_enable;
++      /* 0: ROM DM270, 1:ROM DM320, 2:RAM CLUT */
++      unsigned char clut_select;
++} vpbe_bitmap_config_params_t;
++
++/*  Unioun for video/OSD configuration parameters  */
++typedef union vpbe_conf_params {
++
++      struct vpbe_video_params {
++              CB_CR_ORDER cb_cr_order;
++              /* HZ/VT Expansion enable disable */
++              vpbe_win_expansion_t exp_info;
++      } video_params;
++
++      struct vpbe_bitmap_params {
++              /* Attenuation value for YUV o/p */
++              ATTENUATION attenuation_enable;
++              /* 0: ROM DM270, 1: ROM DM320, 2:RAM CLUT */
++              unsigned char clut_select;
++              /* Only for bitmap width = 1,2,4 bits */
++              vpbe_clut_idx_t clut_idx;
++              /* 0: OSD window is bitmap window */
++              /* 1: OSD window is attribute window */
++              ATTRIBUTE enable_attribute;
++              /* To hold bps value. 
++                 Used to switch back from attribute to bitmap. */
++              unsigned int stored_bits_per_pixel;
++              /* Blending information */
++              vpbe_bitmap_blend_params_t blend_info;
++              /* OSD Blinking information */
++              vpbe_blink_option_t blink_info;
++      } bitmap_params;
++
++} vpbe_conf_params_t;
++
++typedef struct vpbe_video_params vpbe_video_params_t;
++typedef struct vpbe_bitmap_params vpbe_bitmap_params_t;
++
++/* Structure to hold window position */
++typedef struct vpbe_window_position {
++      unsigned int xpos;      /* X position of the window */
++      unsigned int ypos;      /* Y position of the window */
++} vpbe_window_position_t;
++
++#ifdef __KERNEL__
++/*  Structure for each window */
++typedef struct vpbe_dm_win_info {
++      struct fb_info info;
++      vpbe_window_position_t win_pos; /* X,Y position of window */
++      /* Size of window is already there in var_info structure. */
++
++      dma_addr_t fb_base_phys;        /*framebuffer area */
++      unsigned int fb_base;   /*window memory pointer */
++      unsigned int fb_size;   /*memory size */
++      unsigned int pseudo_palette[17];
++      int alloc_fb_mem;
++      /*flag to identify if framebuffer area is fixed or not */
++      unsigned long sdram_address;
++      struct vpbe_dm_info *dm;
++      unsigned char window_enable;    /*Additions for all windows */
++      zoom_params_t zoom;     /*Zooming parameters */
++      unsigned char field_frame_select;       /*To select Field or frame */
++      unsigned char numbufs;  /*Number of buffers valid 2 or 3 */
++      vpbe_conf_params_t conf_params;
++      /*window configuration parameter union pointer */
++} vpbe_dm_win_info_t;
++#endif                                /*__KERNEL__*/
++
++/*
++ *  Videmode structure for display interface and mode settings
++ */
++typedef struct vpbe_fb_videomode {
++      unsigned char name[10]; /* Mode name ( NTSC , PAL) */
++      unsigned int vmode;     /* FB_MODE_INTERLACED or FB_MODE_NON_INTERLACED */
++      unsigned int xres;      /* X Resolution of the display */
++      unsigned int yres;      /* Y Resolution of the display */
++      unsigned int fps;       /* frames per second */
++      /* Timing Parameters applicable for std = 0 only */
++      unsigned int left_margin;
++      unsigned int right_margin;
++      unsigned int upper_margin;
++      unsigned int lower_margin;
++      unsigned int hsync_len;
++      unsigned int vsync_len;
++      unsigned int sync;      /* 0: hsync -ve/vsync -ve */
++      /*1: hsync -ve/vsync +ve */
++      /*2: hsync +ve/vsync -ve */
++      /*3: hsync +ve/vsync +ve */
++      unsigned int basepx;    /* Display x,y start position */
++      unsigned int basepy;
++/*  1= Mode s available in modelist 0=Mode is not available in modelist */
++      unsigned int std;
++} vpbe_fb_videomode_t;
++
++/* Structure to interface videomode to application*/
++typedef struct vpbe_mode_info {
++      vpbe_fb_videomode_t vid_mode;
++      unsigned char interface;
++      unsigned char mode_idx;
++} vpbe_mode_info_t;
++
++#ifdef __KERNEL__
++/* 
++ * Structure for the driver holding information of windows, 
++ *  memory base addresses etc.
++ */
++typedef struct vpbe_dm_info {
++      vpbe_dm_win_info_t *osd0;
++      vpbe_dm_win_info_t *osd1;
++      vpbe_dm_win_info_t *vid0;
++      vpbe_dm_win_info_t *vid1;
++
++/* to map the registers */
++      dma_addr_t mmio_base_phys;
++      unsigned int mmio_base;
++      unsigned int mmio_size;
++
++      wait_queue_head_t vsync_wait;
++      unsigned int vsync_cnt;
++      int timeout;
++
++      /* this is the function that configures the output device (NTSC/PAL/LCD)
++       * for the required output format (composite/s-video/component/rgb)
++       */
++      void (*output_device_config) (void);
++
++      struct device *dev;
++
++      vpbe_backg_color_t backg;       /* background color */
++      vpbe_dclk_t dclk;       /*DCLK parameters */
++      vpbe_display_format_t display;  /*Display interface and mode */
++      vpbe_fb_videomode_t videomode;  /*Cuurent videomode */
++      char ram_clut[256][3];  /*RAM CLUT array */
++      struct fb_cursor cursor;        /* cursor config params from fb.h */
++/*Flag that indicates whether any of the display is enabled or not*/
++      int display_enable;
++} vpbe_dm_info_t;
++
++/*
++ * Functions Definitions for 'davincifb' module
++ */
++int vpbe_mem_alloc_window_buf(vpbe_dm_win_info_t *);
++int vpbe_mem_release_window_buf(vpbe_dm_win_info_t *);
++void init_display_function(vpbe_display_format_t *);
++int vpbe_mem_alloc_struct(vpbe_dm_win_info_t **);
++void set_vid0_default_conf(void);
++void set_vid1_default_conf(void);
++void set_osd0_default_conf(void);
++void set_osd1_default_conf(void);
++void set_cursor_default_conf(void);
++void set_dm_default_conf(void);
++void set_win_enable(char *, unsigned int);
++int within_vid0_limits(u32, u32, u32, u32);
++void vpbe_set_display_default(void);
++#ifdef __KERNEL__
++void set_win_position(char *, u32, u32, u32, u32);
++void change_win_param(int);
++void set_interlaced(char *, unsigned int);
++#endif /* __KERNEL__ */
++
++/*
++ *    Function definations for 'osd' module
++ */
++
++int vpbe_enable_window(vpbe_dm_win_info_t *);
++int vpbe_disable_window(vpbe_dm_win_info_t *);
++int vpbe_vid_osd_select_field_frame(u8 *, u8);
++int vpbe_bitmap_set_blend_factor(u8 *, vpbe_bitmap_blend_params_t *);
++int vpbe_bitmap_set_ram_clut(void);
++int vpbe_enable_disable_attribute_window(u32);
++int vpbe_get_blinking(u8 *, vpbe_blink_option_t *);
++int vpbe_set_blinking(u8 *, vpbe_blink_option_t *);
++int vpbe_set_vid_params(u8 *, vpbe_video_config_params_t *);
++int vpbe_get_vid_params(u8 *, vpbe_video_config_params_t *);
++int vpbe_bitmap_get_params(u8 *, vpbe_bitmap_config_params_t *);
++int vpbe_bitmap_set_params(u8 *, vpbe_bitmap_config_params_t *);
++int vpbe_set_cursor_params(struct fb_cursor *);
++int vpbe_set_vid_expansion(vpbe_win_expansion_t *);
++int vpbe_set_dclk(vpbe_dclk_t *);
++int vpbe_set_display_format(vpbe_display_format_t *);
++int vpbe_set_backg_color(vpbe_backg_color_t *);
++int vpbe_set_interface(u8);
++int vpbe_query_mode(vpbe_mode_info_t *);
++int vpbe_set_mode(struct vpbe_fb_videomode *);
++int vpbe_set_venc_clk_source(u8);
++void set_vid0_default_conf(void);
++void set_osd0_default_conf(void);
++void set_vid1_default_conf(void);
++void set_osd1_default_conf(void);
++void set_cursor_default_conf(void);
++void set_dm_default_conf(void);
++/*
++ * Function definations for 'venc' module
++ */
++
++void davincifb_ntsc_composite_config(void);
++void davincifb_ntsc_svideo_config(void);
++void davincifb_ntsc_component_config(void);
++void davincifb_pal_composite_config(void);
++void davincifb_pal_svideo_config(void);
++void davincifb_pal_component_config(void);
++
++void vpbe_davincifb_ntsc_rgb_config(void);
++void vpbe_davincifb_pal_rgb_config(void);
++void vpbe_davincifb_525p_component_config(void);
++void vpbe_davincifb_625p_component_config(void);
++
++void vpbe_enable_venc(int);
++void vpbe_enable_dacs(int);
++/*
++ * Function definations for 'dlcd' module
++ */
++void vpbe_davincifb_480p_prgb_config(void);
++void vpbe_davincifb_400p_prgb_config(void);
++void vpbe_davincifb_350p_prgb_config(void);
++void vpbe_set_display_timing(struct vpbe_fb_videomode *);
++
++void vpbe_enable_lcd(int);
++/*
++ * Following functions are not implemented
++ */
++void vpbe_davincifb_default_ycc16_config(void);
++void vpbe_davincifb_default_ycc8_config(void);
++void vpbe_davincifb_default_srgb_config(void);
++void vpbe_davincifb_default_epson_config(void);
++void vpbe_davincifb_default_casio_config(void);
++void vpbe_davincifb_default_UDISP_config(void);
++void vpbe_davincifb_default_STN_config(void);
++#endif                                /*__KERNEL__*/
++
++#endif                                /* End of #ifndef DAVINCI_VPBE_H */
+diff -urNp DirectFB-1.5.3_orig/gfxdrivers/davinci/davinci_gfxdriver.h DirectFB-1.5.3/gfxdrivers/davinci/davinci_gfxdriver.h
+--- DirectFB-1.5.3_orig/gfxdrivers/davinci/davinci_gfxdriver.h 1969-12-31 19:00:00.000000000 -0500
++++ DirectFB-1.5.3/gfxdrivers/davinci/davinci_gfxdriver.h      2012-05-09 02:19:40.797421031 -0400
+@@ -0,0 +1,169 @@
++/*
++   TI Davinci driver - Graphics Driver
++
++   (c) Copyright 2007  Telio AG
++
++   Written by Denis Oliver Kropp <dok@directfb.org>
++
++   Code is derived from VMWare driver.
++
++   (c) Copyright 2001-2009  The world wide DirectFB Open Source Community (directfb.org)
++   (c) Copyright 2000-2004  Convergence (integrated media) GmbH
++
++   All rights reserved.
++
++   This library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2 of the License, or (at your option) any later version.
++
++   This library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with this library; if not, write to the
++   Free Software Foundation, Inc., 59 Temple Place - Suite 330,
++   Boston, MA 02111-1307, USA.
++*/
++
++#ifndef __DAVINCI_GFXDRIVER_H__
++#define __DAVINCI_GFXDRIVER_H__
++
++#include <sys/ioctl.h>
++#include <davincifb.h>
++
++#include <core/surface_buffer.h>
++
++#include "davincifb.h"
++
++#include "davinci_c64x.h"
++
++
++typedef struct {
++     /* validation flags */
++     int                       v_flags;
++
++     /* cached/computed values */
++     void                     *dst_addr;
++     unsigned long             dst_phys;
++     unsigned int              dst_size;
++     unsigned long             dst_pitch;
++     DFBSurfacePixelFormat     dst_format;
++     unsigned long             dst_bpp;
++
++     void                     *src_addr;
++     unsigned long             src_phys;
++     unsigned long             src_pitch;
++     DFBSurfacePixelFormat     src_format;
++     unsigned long             src_bpp;
++
++     unsigned long             source_mult;
++
++     unsigned long             fillcolor;
++
++     int                       blit_blend_sub_function;
++     int                       draw_blend_sub_function;
++
++     DFBColor                  color;
++     unsigned long             color_argb;
++     unsigned long             colorkey;
++
++     DFBSurfaceBlittingFlags   blitting_flags;
++
++     DFBRegion                 clip;
++
++     /** Add shared data here... **/
++     struct fb_fix_screeninfo  fix[4];
++
++     CoreSurfacePool          *osd_pool;
++     CoreSurfacePool          *video_pool;
++
++     bool                      synced;
++} DavinciDeviceData;
++
++
++typedef struct {
++     int                       num;
++     int                       fd;
++     void                     *mem;
++     int                       size;
++} DavinciFB;
++
++typedef struct {
++     DavinciDeviceData        *ddev;
++
++     CoreDFB                  *core;
++
++     CoreScreen               *screen;
++     CoreLayer                *osd;
++     CoreLayer                *video;
++
++     DavinciFB                 fb[4];
++
++     DavinciC64x               c64x;
++     bool                      c64x_present;
++
++     DavinciC64xTasks          tasks;
++} DavinciDriverData;
++
++
++static inline DFBResult
++davincifb_pan_display( const DavinciFB             *fb,
++                       struct fb_var_screeninfo    *var,
++                       const CoreSurfaceBufferLock *lock,
++                       DFBSurfaceFlipFlags          flags,
++                       int                          x,
++                       int                          y )
++{
++     int ret;
++
++     if (lock) {
++#ifdef FBIO_SET_START
++          CoreSurfaceBuffer   *buffer = lock->buffer;
++          struct fb_set_start  set_start;
++
++          /* physical mode */
++          set_start.offset   = -1;
++          set_start.sync     = (flags & DSFLIP_ONSYNC) ? 1 : 0;
++
++          /* life's so easy */
++          set_start.physical = lock->phys + DFB_BYTES_PER_LINE( buffer->format, x ) + y * lock->pitch;
++
++          ret = ioctl( fb->fd, FBIO_SET_START, &set_start );
++          if (ret < 0)
++               D_DEBUG( "FBIO_SET_START (0x%08lx, sync %llu) failed!\n",
++                         set_start.physical, set_start.sync );
++
++          if (ret == 0) {
++               if (flags & DSFLIP_WAIT)
++                    ioctl( fb->fd, FBIO_WAITFORVSYNC );
++
++               return DFB_OK;
++          }
++
++          /* fallback */
++#endif
++          var->xoffset = x;                  /* poor version */
++          var->yoffset = y + lock->offset / lock->pitch;
++     }
++     else {
++          var->xoffset = x;
++          var->yoffset = y;
++     }
++
++     var->activate = /*(flags & DSFLIP_ONSYNC) ? FB_ACTIVATE_VBL :*/ FB_ACTIVATE_NOW;
++
++     ret = ioctl( fb->fd, FBIOPAN_DISPLAY, var );
++     if (ret)
++          D_PERROR( "Davinci/FB: FBIOPAN_DISPLAY (fb%d - %d,%d) failed!\n",
++                    fb->num, var->xoffset, var->yoffset );
++
++     if (flags & DSFLIP_WAIT)
++          ioctl( fb->fd, FBIO_WAITFORVSYNC );
++
++     return DFB_OK;
++}
++
++#endif