4 * Copyright (C) 2002, 2003, 2004 ReactOS Team
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
16 * You should have received a copy of the GNU Library General Public
17 * License along with this library; see the file COPYING.LIB.
18 * If not, write to the Free Software Foundation,
19 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
27 IntInterfaceReference(PVOID Context
)
33 IntInterfaceDereference(PVOID Context
)
39 VideoPortQueryServices(
40 IN PVOID HwDeviceExtension
,
41 IN VIDEO_PORT_SERVICES ServicesType
,
42 IN OUT PINTERFACE Interface
)
44 DPRINT("VideoPortQueryServices - ServicesType: 0x%x\n", ServicesType
);
48 case VideoPortServicesInt10
:
49 if (Interface
->Version
>= VIDEO_PORT_INT10_INTERFACE_VERSION_1
||
50 Interface
->Size
>= sizeof(VIDEO_PORT_INT10_INTERFACE
))
52 VIDEO_PORT_INT10_INTERFACE
*Int10Interface
=
53 (VIDEO_PORT_INT10_INTERFACE
*)Interface
;
55 Interface
->InterfaceReference
= IntInterfaceReference
;
56 Interface
->InterfaceDereference
= IntInterfaceDereference
;
57 Int10Interface
->Int10AllocateBuffer
= IntInt10AllocateBuffer
;
58 Int10Interface
->Int10FreeBuffer
= IntInt10FreeBuffer
;
59 Int10Interface
->Int10ReadMemory
= IntInt10ReadMemory
;
60 Int10Interface
->Int10WriteMemory
= IntInt10WriteMemory
;
61 Int10Interface
->Int10CallBios
= IntInt10CallBios
;
66 case VideoPortServicesAGP
:
67 if ((Interface
->Version
== VIDEO_PORT_AGP_INTERFACE_VERSION_2
&&
68 Interface
->Size
>= sizeof(VIDEO_PORT_AGP_INTERFACE_2
)) ||
69 (Interface
->Version
== VIDEO_PORT_AGP_INTERFACE_VERSION_1
&&
70 Interface
->Size
>= sizeof(VIDEO_PORT_AGP_INTERFACE
)))
72 if (NT_SUCCESS(IntAgpGetInterface(HwDeviceExtension
, Interface
)))
79 case VideoPortServicesI2C
:
80 case VideoPortServicesHeadless
:
81 DPRINT1("VideoPortServices%s is UNIMPLEMENTED!\n",
82 (ServicesType
== VideoPortServicesI2C
) ? "I2C" : "Headless");
83 return ERROR_CALL_NOT_IMPLEMENTED
;
89 return ERROR_INVALID_FUNCTION
;
93 VideoPortGetAgpServices(
94 IN PVOID HwDeviceExtension
,
95 OUT PVIDEO_PORT_AGP_SERVICES AgpServices
)
97 VIDEO_PORT_AGP_INTERFACE Interface
;
100 DPRINT("VideoPortGetAgpServices\n");
102 Interface
.Size
= sizeof(Interface
);
103 Interface
.Version
= VIDEO_PORT_AGP_INTERFACE_VERSION_1
;
105 Status
= VideoPortQueryServices(HwDeviceExtension
, VideoPortServicesAGP
,
106 (PINTERFACE
)&Interface
);
107 if (Status
!= NO_ERROR
)
109 DPRINT("VideoPortQueryServices() failed!\n");
113 RtlCopyMemory(AgpServices
, &Interface
.AgpReservePhysical
, sizeof(AgpServices
));