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 Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 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 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 IntInterfaceReference(PVOID Context
)
31 IntInterfaceDereference(PVOID Context
)
37 VideoPortQueryServices(
38 IN PVOID HwDeviceExtension
,
39 IN VIDEO_PORT_SERVICES ServicesType
,
40 IN OUT PINTERFACE Interface
)
42 TRACE_(VIDEOPRT
, "VideoPortQueryServices - ServicesType: 0x%x\n", ServicesType
);
47 case VideoPortServicesInt10
:
48 if (Interface
->Version
>= VIDEO_PORT_INT10_INTERFACE_VERSION_1
||
49 Interface
->Size
>= sizeof(VIDEO_PORT_INT10_INTERFACE
))
51 VIDEO_PORT_INT10_INTERFACE
*Int10Interface
=
52 (VIDEO_PORT_INT10_INTERFACE
*)Interface
;
54 Interface
->InterfaceReference
= IntInterfaceReference
;
55 Interface
->InterfaceDereference
= IntInterfaceDereference
;
56 Int10Interface
->Int10AllocateBuffer
= IntInt10AllocateBuffer
;
57 Int10Interface
->Int10FreeBuffer
= IntInt10FreeBuffer
;
58 Int10Interface
->Int10ReadMemory
= IntInt10ReadMemory
;
59 Int10Interface
->Int10WriteMemory
= IntInt10WriteMemory
;
60 Int10Interface
->Int10CallBios
= IntInt10CallBios
;
65 case VideoPortServicesAGP
:
66 if ((Interface
->Version
== VIDEO_PORT_AGP_INTERFACE_VERSION_2
&&
67 Interface
->Size
>= sizeof(VIDEO_PORT_AGP_INTERFACE_2
)) ||
68 (Interface
->Version
== VIDEO_PORT_AGP_INTERFACE_VERSION_1
&&
69 Interface
->Size
>= sizeof(VIDEO_PORT_AGP_INTERFACE
)))
71 if (NT_SUCCESS(IntAgpGetInterface(HwDeviceExtension
, Interface
)))
78 case VideoPortServicesI2C
:
80 return ERROR_INVALID_FUNCTION
;
82 case VideoPortServicesHeadless
:
84 return ERROR_INVALID_FUNCTION
;
90 return ERROR_INVALID_FUNCTION
;
94 VideoPortGetAgpServices(
95 IN PVOID HwDeviceExtension
,
96 OUT PVIDEO_PORT_AGP_SERVICES AgpServices
)
98 VIDEO_PORT_AGP_INTERFACE Interface
;
101 TRACE_(VIDEOPRT
, "VideoPortGetAgpServices\n");
103 Interface
.Size
= sizeof(Interface
);
104 Interface
.Version
= VIDEO_PORT_AGP_INTERFACE_VERSION_1
;
106 Status
= VideoPortQueryServices(HwDeviceExtension
, VideoPortServicesAGP
,
107 (PINTERFACE
)&Interface
);
108 if (Status
!= NO_ERROR
)
110 WARN_(VIDEOPRT
, "VideoPortQueryServices() failed!\n");
114 RtlCopyMemory(AgpServices
, &Interface
.AgpReservePhysical
, sizeof(VIDEO_PORT_AGP_SERVICES
));