mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 16:32:59 +00:00
[CMBATT]: Implement ACPI _STA and _PSR method calls.
svn path=/trunk/; revision=46381
This commit is contained in:
parent
5bf71f83d8
commit
3890d249d5
1 changed files with 132 additions and 58 deletions
|
@ -78,60 +78,6 @@ GetStringElement(IN PACPI_METHOD_ARGUMENT Argument,
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
CmBattGetPsrData(PDEVICE_OBJECT DeviceObject,
|
|
||||||
PULONG PsrData)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
CmBattGetBifData(PCMBATT_DEVICE_EXTENSION DeviceExtension,
|
|
||||||
PACPI_BIF_DATA BifData)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
CmBattGetBstData(PCMBATT_DEVICE_EXTENSION DeviceExtension,
|
|
||||||
PACPI_BST_DATA BstData)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
CmBattGetStaData(PDEVICE_OBJECT DeviceObject,
|
|
||||||
PULONG StaData)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
CmBattGetUniqueId(PDEVICE_OBJECT DeviceObject,
|
|
||||||
PULONG UniqueId)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS
|
|
||||||
NTAPI
|
|
||||||
CmBattSetTripPpoint(PCMBATT_DEVICE_EXTENSION DeviceExtension,
|
|
||||||
ULONG AlarmValue)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
CmBattSendDownStreamIrp(IN PDEVICE_OBJECT DeviceObject,
|
CmBattSendDownStreamIrp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
@ -169,8 +115,9 @@ CmBattSendDownStreamIrp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Call ACPI */
|
/* Call ACPI */
|
||||||
if (CmBattDebug & 0x40)
|
if (CmBattDebug & 0x40)
|
||||||
DbgPrint("CmBattSendDownStreamIrp: Irp %x [Tid] %x\n", Irp, KeGetCurrentThread());
|
DbgPrint("CmBattSendDownStreamIrp: Irp %x [Tid] %x\n",
|
||||||
|
Irp, KeGetCurrentThread());
|
||||||
Status = IoCallDriver(DeviceObject, Irp);
|
Status = IoCallDriver(DeviceObject, Irp);
|
||||||
if (Status == STATUS_PENDING)
|
if (Status == STATUS_PENDING)
|
||||||
{
|
{
|
||||||
|
@ -197,9 +144,136 @@ CmBattSendDownStreamIrp(IN PDEVICE_OBJECT DeviceObject,
|
||||||
|
|
||||||
/* Return status */
|
/* Return status */
|
||||||
if (CmBattDebug & 0x40)
|
if (CmBattDebug & 0x40)
|
||||||
DbgPrint("CmBattSendDownStreamIrp: Irp %x completed %x! [Tid] %x\n",
|
DbgPrint("CmBattSendDownStreamIrp: Irp %x completed %x! [Tid] %x\n",
|
||||||
Irp, Status, KeGetCurrentThread());
|
Irp, Status, KeGetCurrentThread());
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CmBattGetPsrData(PDEVICE_OBJECT DeviceObject,
|
||||||
|
PULONG PsrData)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
ACPI_EVAL_OUTPUT_BUFFER OutputBuffer;
|
||||||
|
ACPI_EVAL_INPUT_BUFFER InputBuffer;
|
||||||
|
PAGED_CODE();
|
||||||
|
if (CmBattDebug & 0x40)
|
||||||
|
DbgPrint("CmBattGetPsrData: Entered with Pdo %x Tid %x\n",
|
||||||
|
DeviceObject, KeGetCurrentThread());
|
||||||
|
|
||||||
|
/* Initialize to zero */
|
||||||
|
ASSERT(PsrData != NULL);
|
||||||
|
*PsrData = 0;
|
||||||
|
|
||||||
|
/* Request the _PSR method */
|
||||||
|
*(PULONG)InputBuffer.MethodName = 'RSP_';
|
||||||
|
InputBuffer.Signature = ACPI_EVAL_INPUT_BUFFER_SIGNATURE;
|
||||||
|
|
||||||
|
/* Send it to ACPI */
|
||||||
|
Status = CmBattSendDownStreamIrp(DeviceObject,
|
||||||
|
IOCTL_ACPI_EVAL_METHOD,
|
||||||
|
&InputBuffer,
|
||||||
|
sizeof(ACPI_EVAL_INPUT_BUFFER),
|
||||||
|
&OutputBuffer,
|
||||||
|
sizeof(ACPI_EVAL_OUTPUT_BUFFER));
|
||||||
|
if (NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
/* Read the result */
|
||||||
|
Status = GetDwordElement(OutputBuffer.Argument, PsrData);
|
||||||
|
if (CmBattDebug & 0x440)
|
||||||
|
DbgPrint("CmBattGetPsrData: _PSR method returned %x \n", *PsrData);
|
||||||
|
}
|
||||||
|
else if (CmBattDebug & 0x44C)
|
||||||
|
{
|
||||||
|
/* Failure */
|
||||||
|
DbgPrint("CmBattGetPsrData: Failed _PSR method - Status (0x%x)\n", Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return status */
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CmBattGetBifData(PCMBATT_DEVICE_EXTENSION DeviceExtension,
|
||||||
|
PACPI_BIF_DATA BifData)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CmBattGetBstData(PCMBATT_DEVICE_EXTENSION DeviceExtension,
|
||||||
|
PACPI_BST_DATA BstData)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CmBattGetStaData(PDEVICE_OBJECT DeviceObject,
|
||||||
|
PULONG StaData)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
ACPI_EVAL_OUTPUT_BUFFER OutputBuffer;
|
||||||
|
ACPI_EVAL_INPUT_BUFFER InputBuffer;
|
||||||
|
PAGED_CODE();
|
||||||
|
if (CmBattDebug & 0x40)
|
||||||
|
DbgPrint("CmBattGetPsrData: Entered with Pdo %x Tid %x\n",
|
||||||
|
DeviceObject, KeGetCurrentThread());
|
||||||
|
|
||||||
|
/* Initialize to zero */
|
||||||
|
ASSERT(StaData != NULL);
|
||||||
|
*StaData = 0;
|
||||||
|
|
||||||
|
/* Request the _PSR method */
|
||||||
|
*(PULONG)InputBuffer.MethodName = 'ATS_';
|
||||||
|
InputBuffer.Signature = ACPI_EVAL_INPUT_BUFFER_SIGNATURE;
|
||||||
|
|
||||||
|
/* Send it to ACPI */
|
||||||
|
Status = CmBattSendDownStreamIrp(DeviceObject,
|
||||||
|
IOCTL_ACPI_EVAL_METHOD,
|
||||||
|
&InputBuffer,
|
||||||
|
sizeof(ACPI_EVAL_INPUT_BUFFER),
|
||||||
|
&OutputBuffer,
|
||||||
|
sizeof(ACPI_EVAL_OUTPUT_BUFFER));
|
||||||
|
if (NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
/* Read the result */
|
||||||
|
Status = GetDwordElement(OutputBuffer.Argument, StaData);
|
||||||
|
if (CmBattDebug & 0x440)
|
||||||
|
DbgPrint("CmBattGetPsrData: _STA method returned %x \n", *StaData);
|
||||||
|
}
|
||||||
|
else if (CmBattDebug & 0x44C)
|
||||||
|
{
|
||||||
|
/* Failure */
|
||||||
|
DbgPrint("CmBattGetPsrData: Failed _STA method - Status (0x%x)\n", Status);
|
||||||
|
Status = STATUS_NO_SUCH_DEVICE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return status */
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CmBattGetUniqueId(PDEVICE_OBJECT DeviceObject,
|
||||||
|
PULONG UniqueId)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
NTAPI
|
||||||
|
CmBattSetTripPpoint(PCMBATT_DEVICE_EXTENSION DeviceExtension,
|
||||||
|
ULONG AlarmValue)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue