xref: /reactos/win32ss/drivers/videoprt/timer.c (revision 8a978a17)
1 /*
2  * VideoPort driver
3  *
4  * Copyright (C) 2002, 2003, 2004 ReactOS Team
5  *
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.
10  *
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.
15  *
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
19  *
20  */
21 
22 #include "videoprt.h"
23 
24 #define NDEBUG
25 #include <debug.h>
26 
27 /* PRIVATE FUNCTIONS **********************************************************/
28 
29 VOID NTAPI
30 IntVideoPortTimerRoutine(
31    IN PDEVICE_OBJECT DeviceObject,
32    IN PVOID ServiceContext)
33 {
34    PVIDEO_PORT_DEVICE_EXTENSION DeviceExtension = ServiceContext;
35 
36    ASSERT(DeviceExtension->DriverExtension->InitializationData.HwTimer != NULL);
37 
38    DeviceExtension->DriverExtension->InitializationData.HwTimer(
39       &DeviceExtension->MiniPortDeviceExtension);
40 }
41 
42 BOOLEAN NTAPI
43 IntVideoPortSetupTimer(
44    IN PDEVICE_OBJECT DeviceObject,
45    IN PVIDEO_PORT_DRIVER_EXTENSION DriverExtension)
46 {
47    NTSTATUS Status;
48    PVIDEO_PORT_DEVICE_EXTENSION DeviceExtension;
49 
50    DeviceExtension = (PVIDEO_PORT_DEVICE_EXTENSION)DeviceObject->DeviceExtension;
51 
52    if (DriverExtension->InitializationData.HwTimer != NULL)
53    {
54       INFO_(VIDEOPRT, "Initializing timer\n");
55 
56       Status = IoInitializeTimer(
57          DeviceObject,
58          IntVideoPortTimerRoutine,
59          DeviceExtension);
60 
61       if (!NT_SUCCESS(Status))
62       {
63          ERR_(VIDEOPRT, "IoInitializeTimer failed with status 0x%08x\n", Status);
64          return FALSE;
65       }
66    }
67 
68    return TRUE;
69 }
70 
71 /* PUBLIC FUNCTIONS ***********************************************************/
72 
73 /*
74  * @implemented
75  */
76 
77 VOID NTAPI
78 VideoPortStartTimer(IN PVOID HwDeviceExtension)
79 {
80    TRACE_(VIDEOPRT, "VideoPortStartTimer\n");
81    IoStartTimer(VIDEO_PORT_GET_DEVICE_EXTENSION(HwDeviceExtension)->FunctionalDeviceObject);
82 }
83 
84 /*
85  * @implemented
86  */
87 
88 VOID NTAPI
89 VideoPortStopTimer(IN PVOID HwDeviceExtension)
90 {
91    TRACE_(VIDEOPRT, "VideoPortStopTimer\n");
92    IoStopTimer(VIDEO_PORT_GET_DEVICE_EXTENSION(HwDeviceExtension)->FunctionalDeviceObject);
93 }
94