[CMBATT]: Implement ACPI _STA and _PSR method calls.

svn path=/trunk/; revision=46381
This commit is contained in:
Sir Richard 2010-03-24 00:24:24 +00:00
parent 5bf71f83d8
commit 3890d249d5

View file

@ -78,60 +78,6 @@ GetStringElement(IN PACPI_METHOD_ARGUMENT Argument,
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
NTAPI
CmBattSendDownStreamIrp(IN PDEVICE_OBJECT DeviceObject,
@ -169,8 +115,9 @@ CmBattSendDownStreamIrp(IN PDEVICE_OBJECT DeviceObject,
}
/* Call ACPI */
if (CmBattDebug & 0x40)
DbgPrint("CmBattSendDownStreamIrp: Irp %x [Tid] %x\n", Irp, KeGetCurrentThread());
if (CmBattDebug & 0x40)
DbgPrint("CmBattSendDownStreamIrp: Irp %x [Tid] %x\n",
Irp, KeGetCurrentThread());
Status = IoCallDriver(DeviceObject, Irp);
if (Status == STATUS_PENDING)
{
@ -197,9 +144,136 @@ CmBattSendDownStreamIrp(IN PDEVICE_OBJECT DeviceObject,
/* Return status */
if (CmBattDebug & 0x40)
DbgPrint("CmBattSendDownStreamIrp: Irp %x completed %x! [Tid] %x\n",
Irp, Status, KeGetCurrentThread());
DbgPrint("CmBattSendDownStreamIrp: Irp %x completed %x! [Tid] %x\n",
Irp, Status, KeGetCurrentThread());
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 */