1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726 |
- The archive of directfb-1.6.3 is still missing some header files against
- the tagged git tree of directfb. The following files are missing.
- gfxdrivers/davinci/davinci_c64x.h
- gfxdrivers/davinci/davincifb.h
- gfxdrivers/davinci/davinci_gfxdriver.h
- tests/voodoo/voodoo_test.h
- The headers of course are needed to be able to build every module of
- directfb. The headers are taken from the git tree of directfb
- http://git.directfb.org/?p=core/DirectFB.git;a=commit;h=38b784549bc59bb07c58bb29667cb658695d39a7,
- tag DIRECTFB_1_6_3, SHA1ID 38b784549bc59bb07c58bb29667cb658695d39a7.
- Signed-off-by: Carsten Schoenert <c.schoenert@gmail.com>
- diff -puNr -Naur directfb-1.6.3-orig/gfxdrivers/davinci/davinci_c64x.h directfb-1.6.3/gfxdrivers/davinci/davinci_c64x.h
- --- directfb-1.6.3-orig/gfxdrivers/davinci/davinci_c64x.h 1970-01-01 01:00:00.000000000 +0100
- +++ directfb-1.6.3/gfxdrivers/davinci/davinci_c64x.h 2013-04-07 21:33:25.928530187 +0200
- @@ -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 -puNr -Naur directfb-1.6.3-orig/gfxdrivers/davinci/davincifb.h directfb-1.6.3/gfxdrivers/davinci/davincifb.h
- --- directfb-1.6.3-orig/gfxdrivers/davinci/davincifb.h 1970-01-01 01:00:00.000000000 +0100
- +++ directfb-1.6.3/gfxdrivers/davinci/davincifb.h 2013-04-07 21:33:21.488622184 +0200
- @@ -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 -puNr -Naur directfb-1.6.3-orig/gfxdrivers/davinci/davinci_gfxdriver.h directfb-1.6.3/gfxdrivers/davinci/davinci_gfxdriver.h
- --- directfb-1.6.3-orig/gfxdrivers/davinci/davinci_gfxdriver.h 1970-01-01 01:00:00.000000000 +0100
- +++ directfb-1.6.3/gfxdrivers/davinci/davinci_gfxdriver.h 2013-04-07 21:33:19.560662133 +0200
- @@ -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
- diff -puNr -Naur directfb-1.6.3-orig/tests/voodoo/voodoo_test.h directfb-1.6.3/tests/voodoo/voodoo_test.h
- --- directfb-1.6.3-orig/tests/voodoo/voodoo_test.h 1970-01-01 01:00:00.000000000 +0100
- +++ directfb-1.6.3/tests/voodoo/voodoo_test.h 2013-04-07 21:33:31.824408024 +0200
- @@ -0,0 +1,10 @@
- +#ifndef __VOODOO_TEST_H__
- +#define __VOODOO_TEST_H__
- +
- +typedef enum {
- + VOODOO_TEST_INCREASE,
- + VOODOO_TEST_QUERY
- +} VoodooTestCall;
- +
- +#endif
- +
|