x86_cpuidle: use module_dependencies rather than get_module()
Signed-off-by: Fredrik Holmqvist <[email protected]>
This commit is contained in:
committed by
Fredrik Holmqvist
parent
be9a02c0db
commit
8073227c1d
@@ -89,11 +89,11 @@ struct acpi_cstate_info {
|
|||||||
uint8 type;
|
uint8 type;
|
||||||
};
|
};
|
||||||
|
|
||||||
static device_manager_info *sDeviceManager;
|
|
||||||
static acpi_cpuidle_driver_info *acpi_processor[B_MAX_CPU_COUNT];
|
static acpi_cpuidle_driver_info *acpi_processor[B_MAX_CPU_COUNT];
|
||||||
static CpuidleModuleInfo *sIdle;
|
|
||||||
static CpuidleDevice sAcpiDevice;
|
static CpuidleDevice sAcpiDevice;
|
||||||
|
static device_manager_info *sDeviceManager;
|
||||||
static acpi_module_info *sAcpi;
|
static acpi_module_info *sAcpi;
|
||||||
|
CpuidleModuleInfo *gIdle;
|
||||||
|
|
||||||
|
|
||||||
static status_t
|
static status_t
|
||||||
@@ -431,20 +431,14 @@ static status_t
|
|||||||
acpi_cpuidle_init(void)
|
acpi_cpuidle_init(void)
|
||||||
{
|
{
|
||||||
dprintf("acpi_cpuidle_init\n");
|
dprintf("acpi_cpuidle_init\n");
|
||||||
if (get_module(B_CPUIDLE_MODULE_NAME, (module_info**)&sIdle) != B_OK)
|
|
||||||
return B_ERROR;
|
|
||||||
if (get_module(B_ACPI_MODULE_NAME, (module_info**)&sAcpi) != B_OK)
|
|
||||||
return B_ERROR;
|
|
||||||
|
|
||||||
for (int32 i = 0; i < smp_get_num_cpus(); i++)
|
for (int32 i = 0; i < smp_get_num_cpus(); i++)
|
||||||
if (acpi_cpuidle_setup(acpi_processor[i]) != B_OK)
|
if (acpi_cpuidle_setup(acpi_processor[i]) != B_OK)
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
|
|
||||||
status_t status = sIdle->AddDevice(&sAcpiDevice);
|
status_t status = gIdle->AddDevice(&sAcpiDevice);
|
||||||
if (status == B_OK)
|
if (status == B_OK)
|
||||||
dprintf("using acpi idle\n");
|
dprintf("using acpi idle\n");
|
||||||
else
|
|
||||||
put_module(B_CPUIDLE_MODULE_NAME);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -553,9 +547,6 @@ static void
|
|||||||
acpi_cpuidle_uninit_driver(void *driverCookie)
|
acpi_cpuidle_uninit_driver(void *driverCookie)
|
||||||
{
|
{
|
||||||
dprintf("acpi_cpuidle_uninit_driver");
|
dprintf("acpi_cpuidle_uninit_driver");
|
||||||
put_module(B_CPUIDLE_MODULE_NAME);
|
|
||||||
if (sAcpi)
|
|
||||||
put_module(B_ACPI_MODULE_NAME);
|
|
||||||
acpi_cpuidle_driver_info *device = (acpi_cpuidle_driver_info *)driverCookie;
|
acpi_cpuidle_driver_info *device = (acpi_cpuidle_driver_info *)driverCookie;
|
||||||
free(device);
|
free(device);
|
||||||
}
|
}
|
||||||
@@ -563,6 +554,8 @@ acpi_cpuidle_uninit_driver(void *driverCookie)
|
|||||||
|
|
||||||
module_dependency module_dependencies[] = {
|
module_dependency module_dependencies[] = {
|
||||||
{ B_DEVICE_MANAGER_MODULE_NAME, (module_info **)&sDeviceManager },
|
{ B_DEVICE_MANAGER_MODULE_NAME, (module_info **)&sDeviceManager },
|
||||||
|
{ B_ACPI_MODULE_NAME, (module_info **)&sAcpi},
|
||||||
|
{ B_CPUIDLE_MODULE_NAME, (module_info **)&gIdle },
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
#include "x86_cpuidle.h"
|
#include "x86_cpuidle.h"
|
||||||
|
|
||||||
static CpuidleModuleInfo *sIdle;
|
|
||||||
static CpuidleDevice sIntelDevice;
|
static CpuidleDevice sIntelDevice;
|
||||||
|
|
||||||
static void *kMwaitEax[] = {
|
static void *kMwaitEax[] = {
|
||||||
@@ -82,8 +81,6 @@ status_t
|
|||||||
intel_cpuidle_init(void)
|
intel_cpuidle_init(void)
|
||||||
{
|
{
|
||||||
dprintf("intel idle init\n");
|
dprintf("intel idle init\n");
|
||||||
if (get_module(B_CPUIDLE_MODULE_NAME, (module_info**)&sIdle) != B_OK)
|
|
||||||
return B_ERROR;
|
|
||||||
cpu_ent *cpu = get_cpu_struct();
|
cpu_ent *cpu = get_cpu_struct();
|
||||||
if (cpu->arch.vendor != VENDOR_INTEL || cpu->arch.family != 6)
|
if (cpu->arch.vendor != VENDOR_INTEL || cpu->arch.family != 6)
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
@@ -116,10 +113,8 @@ intel_cpuidle_init(void)
|
|||||||
kMwaitEax[i];
|
kMwaitEax[i];
|
||||||
sIntelDevice.cStateCount++;
|
sIntelDevice.cStateCount++;
|
||||||
}
|
}
|
||||||
status_t status = sIdle->AddDevice(&sIntelDevice);
|
status_t status = gIdle->AddDevice(&sIntelDevice);
|
||||||
if (status == B_OK)
|
if (status == B_OK)
|
||||||
dprintf("using intel idle\n");
|
dprintf("using intel idle\n");
|
||||||
else
|
|
||||||
put_module(B_CPUIDLE_MODULE_NAME);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,9 @@
|
|||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern CpuidleModuleInfo *gIdle;
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
x86_monitor(const void *addr, unsigned long ecx, unsigned long edx)
|
x86_monitor(const void *addr, unsigned long ecx, unsigned long edx)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user