1/*****************************************************************************\
2 * Tseng Labs ET6000, ET6100 and ET6300 graphics driver for BeOS 5.
3 * Copyright (c) 2003-2004, Evgeniy Vladimirovich Bobkov.
4\*****************************************************************************/
5
6#include "GlobalData.h"
7#include "generic.h"
8
9
10/*****************************************************************************/
11static engine_token et6000EngineToken = {1, B_2D_ACCELERATION, NULL};
12/*****************************************************************************/
13uint32 ACCELERANT_ENGINE_COUNT(void) {
14    return 1;
15}
16/*****************************************************************************/
17status_t ACQUIRE_ENGINE(uint32 capabilities,
18                        uint32 max_wait,
19                        sync_token *st,
20                        engine_token **et)
21{
22    /* acquire the shared benaphore */
23    AQUIRE_BEN(si->engine.lock)
24    /* sync if required */
25    if (st) SYNC_TO_TOKEN(st);
26
27    /* return an engine token */
28    *et = &et6000EngineToken;
29    return B_OK;
30}
31/*****************************************************************************/
32status_t RELEASE_ENGINE(engine_token *et, sync_token *st) {
33    /* update the sync token, if any */
34    if (st) {
35	st->engine_id = et->engine_id;
36	st->counter = si->engine.count;
37    }
38
39    /* release the shared benaphore */
40    RELEASE_BEN(si->engine.lock)
41    return B_OK;
42}
43/*****************************************************************************/
44void WAIT_ENGINE_IDLE(void) {
45    et6000aclWaitIdle();
46    /* note our current possition */
47    si->engine.lastIdle = si->engine.count;
48}
49/*****************************************************************************/
50status_t GET_SYNC_TOKEN(engine_token *et, sync_token *st) {
51    st->engine_id = et->engine_id;
52    st->counter = si->engine.count;
53    return B_OK;
54}
55/*****************************************************************************/
56status_t SYNC_TO_TOKEN(sync_token *st) {
57    WAIT_ENGINE_IDLE();
58    si->engine.lastIdle = st->counter;
59    return B_OK;
60}
61/*****************************************************************************/
62