https://git.reactos.org/?p=reactos.git;a=commitdiff;h=7e1510eb9c384dcf6b820…
commit 7e1510eb9c384dcf6b82054dfc1165d1e34727a5
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Mon Jun 19 17:51:31 2023 +0200
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Mon Jun 19 21:09:03 2023 +0200
[HALX86] Implement HalpcGetCmosData and HalpcSetCmosData.
---
hal/halx86/generic/cmos.c | 9 +++---
hal/halx86/include/bus.h | 38 +++++++++++--------------
hal/halx86/legacy/bus/cmosbus.c | 63 +++++++++++++++++++++++++----------------
3 files changed, 60 insertions(+), 50 deletions(-)
diff --git a/hal/halx86/generic/cmos.c b/hal/halx86/generic/cmos.c
index 75a09b1bfe2..45ad8840956 100644
--- a/hal/halx86/generic/cmos.c
+++ b/hal/halx86/generic/cmos.c
@@ -101,10 +101,11 @@ HalpGetCmosData(
ULONG
NTAPI
-HalpSetCmosData(IN ULONG BusNumber,
- IN ULONG SlotNumber,
- IN PVOID Buffer,
- IN ULONG Length)
+HalpSetCmosData(
+ _In_ ULONG BusNumber,
+ _In_ ULONG SlotNumber,
+ _In_reads_bytes_(Length) PVOID Buffer,
+ _In_ ULONG Length)
{
PUCHAR Ptr = (PUCHAR)Buffer;
ULONG Address = SlotNumber;
diff --git a/hal/halx86/include/bus.h b/hal/halx86/include/bus.h
index 3e8fa82e13e..af61f0fa67c 100644
--- a/hal/halx86/include/bus.h
+++ b/hal/halx86/include/bus.h
@@ -427,17 +427,15 @@ HalpGetCmosData(
_In_ ULONG BusNumber,
_In_ ULONG SlotNumber,
_Out_writes_bytes_(Length) PVOID Buffer,
- _In_ ULONG Length
-);
+ _In_ ULONG Length);
ULONG
NTAPI
HalpSetCmosData(
- IN ULONG BusNumber,
- IN ULONG SlotNumber,
- IN PVOID Buffer,
- IN ULONG Length
-);
+ _In_ ULONG BusNumber,
+ _In_ ULONG SlotNumber,
+ _In_reads_bytes_(Length) PVOID Buffer,
+ _In_ ULONG Length);
CODE_SEG("INIT")
VOID
@@ -584,24 +582,22 @@ HalpNoBusData(
ULONG
NTAPI
HalpcGetCmosData(
- IN PBUS_HANDLER BusHandler,
- IN PBUS_HANDLER RootHandler,
- IN ULONG SlotNumber,
- IN PVOID Buffer,
- IN ULONG Offset,
- IN ULONG Length
-);
+ _In_ PBUS_HANDLER BusHandler,
+ _In_ PBUS_HANDLER RootHandler,
+ _In_ ULONG SlotNumber,
+ _Out_writes_bytes_(Length) PVOID Buffer,
+ _In_ ULONG Offset,
+ _In_ ULONG Length);
ULONG
NTAPI
HalpcSetCmosData(
- IN PBUS_HANDLER BusHandler,
- IN PBUS_HANDLER RootHandler,
- IN ULONG SlotNumber,
- IN PVOID Buffer,
- IN ULONG Offset,
- IN ULONG Length
-);
+ _In_ PBUS_HANDLER BusHandler,
+ _In_ PBUS_HANDLER RootHandler,
+ _In_ ULONG SlotNumber,
+ _In_reads_bytes_(Length) PVOID Buffer,
+ _In_ ULONG Offset,
+ _In_ ULONG Length);
BOOLEAN
NTAPI
diff --git a/hal/halx86/legacy/bus/cmosbus.c b/hal/halx86/legacy/bus/cmosbus.c
index 88e7981ac51..cc633e8c96f 100644
--- a/hal/halx86/legacy/bus/cmosbus.c
+++ b/hal/halx86/legacy/bus/cmosbus.c
@@ -1,45 +1,58 @@
/*
- * PROJECT: ReactOS HAL
- * LICENSE: GPL - See COPYING in the top level directory
- * FILE: hal/halx86/legacy/bus/cmosbus.c
- * PURPOSE:
- * PROGRAMMERS: Stefan Ginsberg (stefan.ginsberg(a)reactos.org)
+ * PROJECT: ReactOS HAL
+ * LICENSE: GPL-2.0-or-later (
https://spdx.org/licenses/GPL-2.0-or-later)
+ * PURPOSE: CMOS bus data handlers
+ * COPYRIGHT: Copyright 2023 Hermès Bélusca-Maïto
<hermes.belusca-maito(a)reactos.org>
*/
/* INCLUDES *******************************************************************/
#include <hal.h>
-#define NDEBUG
-#include <debug.h>
-
-/* GLOBALS ********************************************************************/
/* PRIVATE FUNCTIONS **********************************************************/
ULONG
NTAPI
-HalpcGetCmosData(IN PBUS_HANDLER BusHandler,
- IN PBUS_HANDLER RootHandler,
- IN ULONG SlotNumber,
- IN PVOID Buffer,
- IN ULONG Offset,
- IN ULONG Length)
+HalpcGetCmosData(
+ _In_ PBUS_HANDLER BusHandler,
+ _In_ PBUS_HANDLER RootHandler,
+ _In_ ULONG SlotNumber,
+ _Out_writes_bytes_(Length) PVOID Buffer,
+ _In_ ULONG Offset,
+ _In_ ULONG Length)
{
- UNIMPLEMENTED_DBGBREAK("CMOS GetData\n");
- return 0;
+ UNREFERENCED_PARAMETER(RootHandler);
+
+ /* CMOS reads do not support offsets */
+ if (Offset != 0)
+ return 0;
+
+ return HalpGetCmosData(BusHandler->BusNumber,
+ SlotNumber,
+ Buffer,
+ Length);
}
ULONG
NTAPI
-HalpcSetCmosData(IN PBUS_HANDLER BusHandler,
- IN PBUS_HANDLER RootHandler,
- IN ULONG SlotNumber,
- IN PVOID Buffer,
- IN ULONG Offset,
- IN ULONG Length)
+HalpcSetCmosData(
+ _In_ PBUS_HANDLER BusHandler,
+ _In_ PBUS_HANDLER RootHandler,
+ _In_ ULONG SlotNumber,
+ _In_reads_bytes_(Length) PVOID Buffer,
+ _In_ ULONG Offset,
+ _In_ ULONG Length)
{
- UNIMPLEMENTED_DBGBREAK("CMOS SetData\n");
- return 0;
+ UNREFERENCED_PARAMETER(RootHandler);
+
+ /* CMOS writes do not support offsets */
+ if (Offset != 0)
+ return 0;
+
+ return HalpSetCmosData(BusHandler->BusNumber,
+ SlotNumber,
+ Buffer,
+ Length);
}
/* EOF */