提交 4be44fcd 编写于 作者: L Len Brown

[ACPI] Lindent all ACPI files

Signed-off-by: NLen Brown <len.brown@intel.com>
上级 c65ade4d
此差异已折叠。
...@@ -8,44 +8,44 @@ ...@@ -8,44 +8,44 @@
#include <asm/pci-direct.h> #include <asm/pci-direct.h>
#include <asm/acpi.h> #include <asm/acpi.h>
static int __init check_bridge(int vendor, int device) static int __init check_bridge(int vendor, int device)
{ {
/* According to Nvidia all timer overrides are bogus. Just ignore /* According to Nvidia all timer overrides are bogus. Just ignore
them all. */ them all. */
if (vendor == PCI_VENDOR_ID_NVIDIA) { if (vendor == PCI_VENDOR_ID_NVIDIA) {
acpi_skip_timer_override = 1; acpi_skip_timer_override = 1;
} }
return 0; return 0;
} }
void __init check_acpi_pci(void) void __init check_acpi_pci(void)
{ {
int num,slot,func; int num, slot, func;
/* Assume the machine supports type 1. If not it will /* Assume the machine supports type 1. If not it will
always read ffffffff and should not have any side effect. */ always read ffffffff and should not have any side effect. */
/* Poor man's PCI discovery */ /* Poor man's PCI discovery */
for (num = 0; num < 32; num++) { for (num = 0; num < 32; num++) {
for (slot = 0; slot < 32; slot++) { for (slot = 0; slot < 32; slot++) {
for (func = 0; func < 8; func++) { for (func = 0; func < 8; func++) {
u32 class; u32 class;
u32 vendor; u32 vendor;
class = read_pci_config(num,slot,func, class = read_pci_config(num, slot, func,
PCI_CLASS_REVISION); PCI_CLASS_REVISION);
if (class == 0xffffffff) if (class == 0xffffffff)
break; break;
if ((class >> 16) != PCI_CLASS_BRIDGE_PCI) if ((class >> 16) != PCI_CLASS_BRIDGE_PCI)
continue; continue;
vendor = read_pci_config(num, slot, func, vendor = read_pci_config(num, slot, func,
PCI_VENDOR_ID); PCI_VENDOR_ID);
if (check_bridge(vendor&0xffff, vendor >> 16)) if (check_bridge(vendor & 0xffff, vendor >> 16))
return; return;
} }
} }
} }
} }
...@@ -20,12 +20,13 @@ extern void zap_low_mappings(void); ...@@ -20,12 +20,13 @@ extern void zap_low_mappings(void);
extern unsigned long FASTCALL(acpi_copy_wakeup_routine(unsigned long)); extern unsigned long FASTCALL(acpi_copy_wakeup_routine(unsigned long));
static void init_low_mapping(pgd_t *pgd, int pgd_limit) static void init_low_mapping(pgd_t * pgd, int pgd_limit)
{ {
int pgd_ofs = 0; int pgd_ofs = 0;
while ((pgd_ofs < pgd_limit) && (pgd_ofs + USER_PTRS_PER_PGD < PTRS_PER_PGD)) { while ((pgd_ofs < pgd_limit)
set_pgd(pgd, *(pgd+USER_PTRS_PER_PGD)); && (pgd_ofs + USER_PTRS_PER_PGD < PTRS_PER_PGD)) {
set_pgd(pgd, *(pgd + USER_PTRS_PER_PGD));
pgd_ofs++, pgd++; pgd_ofs++, pgd++;
} }
flush_tlb_all(); flush_tlb_all();
...@@ -37,12 +38,13 @@ static void init_low_mapping(pgd_t *pgd, int pgd_limit) ...@@ -37,12 +38,13 @@ static void init_low_mapping(pgd_t *pgd, int pgd_limit)
* Create an identity mapped page table and copy the wakeup routine to * Create an identity mapped page table and copy the wakeup routine to
* low memory. * low memory.
*/ */
int acpi_save_state_mem (void) int acpi_save_state_mem(void)
{ {
if (!acpi_wakeup_address) if (!acpi_wakeup_address)
return 1; return 1;
init_low_mapping(swapper_pg_dir, USER_PTRS_PER_PGD); init_low_mapping(swapper_pg_dir, USER_PTRS_PER_PGD);
memcpy((void *) acpi_wakeup_address, &wakeup_start, &wakeup_end - &wakeup_start); memcpy((void *)acpi_wakeup_address, &wakeup_start,
&wakeup_end - &wakeup_start);
acpi_copy_wakeup_routine(acpi_wakeup_address); acpi_copy_wakeup_routine(acpi_wakeup_address);
return 0; return 0;
...@@ -51,7 +53,7 @@ int acpi_save_state_mem (void) ...@@ -51,7 +53,7 @@ int acpi_save_state_mem (void)
/* /*
* acpi_restore_state - undo effects of acpi_save_state_mem * acpi_restore_state - undo effects of acpi_save_state_mem
*/ */
void acpi_restore_state_mem (void) void acpi_restore_state_mem(void)
{ {
zap_low_mappings(); zap_low_mappings();
} }
...@@ -67,7 +69,8 @@ void acpi_restore_state_mem (void) ...@@ -67,7 +69,8 @@ void acpi_restore_state_mem (void)
void __init acpi_reserve_bootmem(void) void __init acpi_reserve_bootmem(void)
{ {
if ((&wakeup_end - &wakeup_start) > PAGE_SIZE) { if ((&wakeup_end - &wakeup_start) > PAGE_SIZE) {
printk(KERN_ERR "ACPI: Wakeup code way too big, S3 disabled.\n"); printk(KERN_ERR
"ACPI: Wakeup code way too big, S3 disabled.\n");
return; return;
} }
...@@ -90,10 +93,8 @@ static int __init acpi_sleep_setup(char *str) ...@@ -90,10 +93,8 @@ static int __init acpi_sleep_setup(char *str)
return 1; return 1;
} }
__setup("acpi_sleep=", acpi_sleep_setup); __setup("acpi_sleep=", acpi_sleep_setup);
static __init int reset_videomode_after_s3(struct dmi_system_id *d) static __init int reset_videomode_after_s3(struct dmi_system_id *d)
{ {
acpi_video_flags |= 2; acpi_video_flags |= 2;
...@@ -101,14 +102,14 @@ static __init int reset_videomode_after_s3(struct dmi_system_id *d) ...@@ -101,14 +102,14 @@ static __init int reset_videomode_after_s3(struct dmi_system_id *d)
} }
static __initdata struct dmi_system_id acpisleep_dmi_table[] = { static __initdata struct dmi_system_id acpisleep_dmi_table[] = {
{ /* Reset video mode after returning from ACPI S3 sleep */ { /* Reset video mode after returning from ACPI S3 sleep */
.callback = reset_videomode_after_s3, .callback = reset_videomode_after_s3,
.ident = "Toshiba Satellite 4030cdt", .ident = "Toshiba Satellite 4030cdt",
.matches = { .matches = {
DMI_MATCH(DMI_PRODUCT_NAME, "S4030CDT/4.3"), DMI_MATCH(DMI_PRODUCT_NAME, "S4030CDT/4.3"),
}, },
}, },
{ } {}
}; };
static int __init acpisleep_dmi_init(void) static int __init acpisleep_dmi_init(void)
......
...@@ -17,20 +17,20 @@ ...@@ -17,20 +17,20 @@
#include <asm/acpi-ext.h> #include <asm/acpi-ext.h>
struct acpi_vendor_descriptor { struct acpi_vendor_descriptor {
u8 guid_id; u8 guid_id;
efi_guid_t guid; efi_guid_t guid;
}; };
struct acpi_vendor_info { struct acpi_vendor_info {
struct acpi_vendor_descriptor *descriptor; struct acpi_vendor_descriptor *descriptor;
u8 *data; u8 *data;
u32 length; u32 length;
}; };
acpi_status acpi_status
acpi_vendor_resource_match(struct acpi_resource *resource, void *context) acpi_vendor_resource_match(struct acpi_resource *resource, void *context)
{ {
struct acpi_vendor_info *info = (struct acpi_vendor_info *) context; struct acpi_vendor_info *info = (struct acpi_vendor_info *)context;
struct acpi_resource_vendor *vendor; struct acpi_resource_vendor *vendor;
struct acpi_vendor_descriptor *descriptor; struct acpi_vendor_descriptor *descriptor;
u32 length; u32 length;
...@@ -38,8 +38,8 @@ acpi_vendor_resource_match(struct acpi_resource *resource, void *context) ...@@ -38,8 +38,8 @@ acpi_vendor_resource_match(struct acpi_resource *resource, void *context)
if (resource->id != ACPI_RSTYPE_VENDOR) if (resource->id != ACPI_RSTYPE_VENDOR)
return AE_OK; return AE_OK;
vendor = (struct acpi_resource_vendor *) &resource->data; vendor = (struct acpi_resource_vendor *)&resource->data;
descriptor = (struct acpi_vendor_descriptor *) vendor->reserved; descriptor = (struct acpi_vendor_descriptor *)vendor->reserved;
if (vendor->length <= sizeof(*info->descriptor) || if (vendor->length <= sizeof(*info->descriptor) ||
descriptor->guid_id != info->descriptor->guid_id || descriptor->guid_id != info->descriptor->guid_id ||
efi_guidcmp(descriptor->guid, info->descriptor->guid)) efi_guidcmp(descriptor->guid, info->descriptor->guid))
...@@ -50,21 +50,24 @@ acpi_vendor_resource_match(struct acpi_resource *resource, void *context) ...@@ -50,21 +50,24 @@ acpi_vendor_resource_match(struct acpi_resource *resource, void *context)
if (!info->data) if (!info->data)
return AE_NO_MEMORY; return AE_NO_MEMORY;
memcpy(info->data, vendor->reserved + sizeof(struct acpi_vendor_descriptor), length); memcpy(info->data,
vendor->reserved + sizeof(struct acpi_vendor_descriptor),
length);
info->length = length; info->length = length;
return AE_CTRL_TERMINATE; return AE_CTRL_TERMINATE;
} }
acpi_status acpi_status
acpi_find_vendor_resource(acpi_handle obj, struct acpi_vendor_descriptor *id, acpi_find_vendor_resource(acpi_handle obj, struct acpi_vendor_descriptor * id,
u8 **data, u32 *length) u8 ** data, u32 * length)
{ {
struct acpi_vendor_info info; struct acpi_vendor_info info;
info.descriptor = id; info.descriptor = id;
info.data = NULL; info.data = NULL;
acpi_walk_resources(obj, METHOD_NAME__CRS, acpi_vendor_resource_match, &info); acpi_walk_resources(obj, METHOD_NAME__CRS, acpi_vendor_resource_match,
&info);
if (!info.data) if (!info.data)
return AE_NOT_FOUND; return AE_NOT_FOUND;
...@@ -75,17 +78,19 @@ acpi_find_vendor_resource(acpi_handle obj, struct acpi_vendor_descriptor *id, ...@@ -75,17 +78,19 @@ acpi_find_vendor_resource(acpi_handle obj, struct acpi_vendor_descriptor *id,
struct acpi_vendor_descriptor hp_ccsr_descriptor = { struct acpi_vendor_descriptor hp_ccsr_descriptor = {
.guid_id = 2, .guid_id = 2,
.guid = EFI_GUID(0x69e9adf9, 0x924f, 0xab5f, 0xf6, 0x4a, 0x24, 0xd2, 0x01, 0x37, 0x0e, 0xad) .guid =
EFI_GUID(0x69e9adf9, 0x924f, 0xab5f, 0xf6, 0x4a, 0x24, 0xd2, 0x01,
0x37, 0x0e, 0xad)
}; };
acpi_status acpi_status hp_acpi_csr_space(acpi_handle obj, u64 * csr_base, u64 * csr_length)
hp_acpi_csr_space(acpi_handle obj, u64 *csr_base, u64 *csr_length)
{ {
acpi_status status; acpi_status status;
u8 *data; u8 *data;
u32 length; u32 length;
status = acpi_find_vendor_resource(obj, &hp_ccsr_descriptor, &data, &length); status =
acpi_find_vendor_resource(obj, &hp_ccsr_descriptor, &data, &length);
if (ACPI_FAILURE(status) || length != 16) if (ACPI_FAILURE(status) || length != 16)
return AE_NOT_FOUND; return AE_NOT_FOUND;
......
此差异已折叠。
...@@ -47,7 +47,6 @@ ...@@ -47,7 +47,6 @@
#include <asm/proto.h> #include <asm/proto.h>
#include <asm/tlbflush.h> #include <asm/tlbflush.h>
/* -------------------------------------------------------------------------- /* --------------------------------------------------------------------------
Low-Level Sleep Support Low-Level Sleep Support
-------------------------------------------------------------------------- */ -------------------------------------------------------------------------- */
...@@ -77,11 +76,12 @@ static void init_low_mapping(void) ...@@ -77,11 +76,12 @@ static void init_low_mapping(void)
* Create an identity mapped page table and copy the wakeup routine to * Create an identity mapped page table and copy the wakeup routine to
* low memory. * low memory.
*/ */
int acpi_save_state_mem (void) int acpi_save_state_mem(void)
{ {
init_low_mapping(); init_low_mapping();
memcpy((void *) acpi_wakeup_address, &wakeup_start, &wakeup_end - &wakeup_start); memcpy((void *)acpi_wakeup_address, &wakeup_start,
&wakeup_end - &wakeup_start);
acpi_copy_wakeup_routine(acpi_wakeup_address); acpi_copy_wakeup_routine(acpi_wakeup_address);
return 0; return 0;
...@@ -90,7 +90,7 @@ int acpi_save_state_mem (void) ...@@ -90,7 +90,7 @@ int acpi_save_state_mem (void)
/* /*
* acpi_restore_state * acpi_restore_state
*/ */
void acpi_restore_state_mem (void) void acpi_restore_state_mem(void)
{ {
set_pgd(pgd_offset(current->mm, 0UL), low_ptr); set_pgd(pgd_offset(current->mm, 0UL), low_ptr);
flush_tlb_all(); flush_tlb_all();
...@@ -108,7 +108,8 @@ void __init acpi_reserve_bootmem(void) ...@@ -108,7 +108,8 @@ void __init acpi_reserve_bootmem(void)
{ {
acpi_wakeup_address = (unsigned long)alloc_bootmem_low(PAGE_SIZE); acpi_wakeup_address = (unsigned long)alloc_bootmem_low(PAGE_SIZE);
if ((&wakeup_end - &wakeup_start) > PAGE_SIZE) if ((&wakeup_end - &wakeup_start) > PAGE_SIZE)
printk(KERN_CRIT "ACPI: Wakeup code way too big, will crash on attempt to suspend\n"); printk(KERN_CRIT
"ACPI: Wakeup code way too big, will crash on attempt to suspend\n");
} }
static int __init acpi_sleep_setup(char *str) static int __init acpi_sleep_setup(char *str)
...@@ -127,6 +128,8 @@ static int __init acpi_sleep_setup(char *str) ...@@ -127,6 +128,8 @@ static int __init acpi_sleep_setup(char *str)
__setup("acpi_sleep=", acpi_sleep_setup); __setup("acpi_sleep=", acpi_sleep_setup);
#endif /*CONFIG_ACPI_SLEEP*/ #endif /*CONFIG_ACPI_SLEEP */
void acpi_pci_link_exit(void) {} void acpi_pci_link_exit(void)
{
}
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
#include <acpi/acpi_bus.h> #include <acpi/acpi_bus.h>
#include <acpi/acpi_drivers.h> #include <acpi/acpi_drivers.h>
#define ACPI_AC_COMPONENT 0x00020000 #define ACPI_AC_COMPONENT 0x00020000
#define ACPI_AC_CLASS "ac_adapter" #define ACPI_AC_CLASS "ac_adapter"
#define ACPI_AC_HID "ACPI0003" #define ACPI_AC_HID "ACPI0003"
...@@ -45,47 +44,45 @@ ...@@ -45,47 +44,45 @@
#define ACPI_AC_STATUS_UNKNOWN 0xFF #define ACPI_AC_STATUS_UNKNOWN 0xFF
#define _COMPONENT ACPI_AC_COMPONENT #define _COMPONENT ACPI_AC_COMPONENT
ACPI_MODULE_NAME ("acpi_ac") ACPI_MODULE_NAME("acpi_ac")
MODULE_AUTHOR("Paul Diefenbaugh"); MODULE_AUTHOR("Paul Diefenbaugh");
MODULE_DESCRIPTION(ACPI_AC_DRIVER_NAME); MODULE_DESCRIPTION(ACPI_AC_DRIVER_NAME);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
static int acpi_ac_add (struct acpi_device *device); static int acpi_ac_add(struct acpi_device *device);
static int acpi_ac_remove (struct acpi_device *device, int type); static int acpi_ac_remove(struct acpi_device *device, int type);
static int acpi_ac_open_fs(struct inode *inode, struct file *file); static int acpi_ac_open_fs(struct inode *inode, struct file *file);
static struct acpi_driver acpi_ac_driver = { static struct acpi_driver acpi_ac_driver = {
.name = ACPI_AC_DRIVER_NAME, .name = ACPI_AC_DRIVER_NAME,
.class = ACPI_AC_CLASS, .class = ACPI_AC_CLASS,
.ids = ACPI_AC_HID, .ids = ACPI_AC_HID,
.ops = { .ops = {
.add = acpi_ac_add, .add = acpi_ac_add,
.remove = acpi_ac_remove, .remove = acpi_ac_remove,
}, },
}; };
struct acpi_ac { struct acpi_ac {
acpi_handle handle; acpi_handle handle;
unsigned long state; unsigned long state;
}; };
static struct file_operations acpi_ac_fops = { static struct file_operations acpi_ac_fops = {
.open = acpi_ac_open_fs, .open = acpi_ac_open_fs,
.read = seq_read, .read = seq_read,
.llseek = seq_lseek, .llseek = seq_lseek,
.release = single_release, .release = single_release,
}; };
/* -------------------------------------------------------------------------- /* --------------------------------------------------------------------------
AC Adapter Management AC Adapter Management
-------------------------------------------------------------------------- */ -------------------------------------------------------------------------- */
static int static int acpi_ac_get_state(struct acpi_ac *ac)
acpi_ac_get_state (
struct acpi_ac *ac)
{ {
acpi_status status = AE_OK; acpi_status status = AE_OK;
ACPI_FUNCTION_TRACE("acpi_ac_get_state"); ACPI_FUNCTION_TRACE("acpi_ac_get_state");
...@@ -95,24 +92,23 @@ acpi_ac_get_state ( ...@@ -95,24 +92,23 @@ acpi_ac_get_state (
status = acpi_evaluate_integer(ac->handle, "_PSR", NULL, &ac->state); status = acpi_evaluate_integer(ac->handle, "_PSR", NULL, &ac->state);
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Error reading AC Adapter state\n")); "Error reading AC Adapter state\n"));
ac->state = ACPI_AC_STATUS_UNKNOWN; ac->state = ACPI_AC_STATUS_UNKNOWN;
return_VALUE(-ENODEV); return_VALUE(-ENODEV);
} }
return_VALUE(0); return_VALUE(0);
} }
/* -------------------------------------------------------------------------- /* --------------------------------------------------------------------------
FS Interface (/proc) FS Interface (/proc)
-------------------------------------------------------------------------- */ -------------------------------------------------------------------------- */
static struct proc_dir_entry *acpi_ac_dir; static struct proc_dir_entry *acpi_ac_dir;
static int acpi_ac_seq_show(struct seq_file *seq, void *offset) static int acpi_ac_seq_show(struct seq_file *seq, void *offset)
{ {
struct acpi_ac *ac = (struct acpi_ac *) seq->private; struct acpi_ac *ac = (struct acpi_ac *)seq->private;
ACPI_FUNCTION_TRACE("acpi_ac_seq_show"); ACPI_FUNCTION_TRACE("acpi_ac_seq_show");
...@@ -139,23 +135,21 @@ static int acpi_ac_seq_show(struct seq_file *seq, void *offset) ...@@ -139,23 +135,21 @@ static int acpi_ac_seq_show(struct seq_file *seq, void *offset)
return_VALUE(0); return_VALUE(0);
} }
static int acpi_ac_open_fs(struct inode *inode, struct file *file) static int acpi_ac_open_fs(struct inode *inode, struct file *file)
{ {
return single_open(file, acpi_ac_seq_show, PDE(inode)->data); return single_open(file, acpi_ac_seq_show, PDE(inode)->data);
} }
static int static int acpi_ac_add_fs(struct acpi_device *device)
acpi_ac_add_fs (
struct acpi_device *device)
{ {
struct proc_dir_entry *entry = NULL; struct proc_dir_entry *entry = NULL;
ACPI_FUNCTION_TRACE("acpi_ac_add_fs"); ACPI_FUNCTION_TRACE("acpi_ac_add_fs");
if (!acpi_device_dir(device)) { if (!acpi_device_dir(device)) {
acpi_device_dir(device) = proc_mkdir(acpi_device_bid(device), acpi_device_dir(device) = proc_mkdir(acpi_device_bid(device),
acpi_ac_dir); acpi_ac_dir);
if (!acpi_device_dir(device)) if (!acpi_device_dir(device))
return_VALUE(-ENODEV); return_VALUE(-ENODEV);
acpi_device_dir(device)->owner = THIS_MODULE; acpi_device_dir(device)->owner = THIS_MODULE;
...@@ -163,11 +157,11 @@ acpi_ac_add_fs ( ...@@ -163,11 +157,11 @@ acpi_ac_add_fs (
/* 'state' [R] */ /* 'state' [R] */
entry = create_proc_entry(ACPI_AC_FILE_STATE, entry = create_proc_entry(ACPI_AC_FILE_STATE,
S_IRUGO, acpi_device_dir(device)); S_IRUGO, acpi_device_dir(device));
if (!entry) if (!entry)
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Unable to create '%s' fs entry\n", "Unable to create '%s' fs entry\n",
ACPI_AC_FILE_STATE)); ACPI_AC_FILE_STATE));
else { else {
entry->proc_fops = &acpi_ac_fops; entry->proc_fops = &acpi_ac_fops;
entry->data = acpi_driver_data(device); entry->data = acpi_driver_data(device);
...@@ -177,16 +171,12 @@ acpi_ac_add_fs ( ...@@ -177,16 +171,12 @@ acpi_ac_add_fs (
return_VALUE(0); return_VALUE(0);
} }
static int acpi_ac_remove_fs(struct acpi_device *device)
static int
acpi_ac_remove_fs (
struct acpi_device *device)
{ {
ACPI_FUNCTION_TRACE("acpi_ac_remove_fs"); ACPI_FUNCTION_TRACE("acpi_ac_remove_fs");
if (acpi_device_dir(device)) { if (acpi_device_dir(device)) {
remove_proc_entry(ACPI_AC_FILE_STATE, remove_proc_entry(ACPI_AC_FILE_STATE, acpi_device_dir(device));
acpi_device_dir(device));
remove_proc_entry(acpi_device_bid(device), acpi_ac_dir); remove_proc_entry(acpi_device_bid(device), acpi_ac_dir);
acpi_device_dir(device) = NULL; acpi_device_dir(device) = NULL;
...@@ -195,19 +185,14 @@ acpi_ac_remove_fs ( ...@@ -195,19 +185,14 @@ acpi_ac_remove_fs (
return_VALUE(0); return_VALUE(0);
} }
/* -------------------------------------------------------------------------- /* --------------------------------------------------------------------------
Driver Model Driver Model
-------------------------------------------------------------------------- */ -------------------------------------------------------------------------- */
static void static void acpi_ac_notify(acpi_handle handle, u32 event, void *data)
acpi_ac_notify (
acpi_handle handle,
u32 event,
void *data)
{ {
struct acpi_ac *ac = (struct acpi_ac *) data; struct acpi_ac *ac = (struct acpi_ac *)data;
struct acpi_device *device = NULL; struct acpi_device *device = NULL;
ACPI_FUNCTION_TRACE("acpi_ac_notify"); ACPI_FUNCTION_TRACE("acpi_ac_notify");
...@@ -224,21 +209,18 @@ acpi_ac_notify ( ...@@ -224,21 +209,18 @@ acpi_ac_notify (
break; break;
default: default:
ACPI_DEBUG_PRINT((ACPI_DB_INFO, ACPI_DEBUG_PRINT((ACPI_DB_INFO,
"Unsupported event [0x%x]\n", event)); "Unsupported event [0x%x]\n", event));
break; break;
} }
return_VOID; return_VOID;
} }
static int acpi_ac_add(struct acpi_device *device)
static int
acpi_ac_add (
struct acpi_device *device)
{ {
int result = 0; int result = 0;
acpi_status status = AE_OK; acpi_status status = AE_OK;
struct acpi_ac *ac = NULL; struct acpi_ac *ac = NULL;
ACPI_FUNCTION_TRACE("acpi_ac_add"); ACPI_FUNCTION_TRACE("acpi_ac_add");
...@@ -264,19 +246,20 @@ acpi_ac_add ( ...@@ -264,19 +246,20 @@ acpi_ac_add (
goto end; goto end;
status = acpi_install_notify_handler(ac->handle, status = acpi_install_notify_handler(ac->handle,
ACPI_DEVICE_NOTIFY, acpi_ac_notify, ac); ACPI_DEVICE_NOTIFY, acpi_ac_notify,
ac);
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Error installing notify handler\n")); "Error installing notify handler\n"));
result = -ENODEV; result = -ENODEV;
goto end; goto end;
} }
printk(KERN_INFO PREFIX "%s [%s] (%s)\n", printk(KERN_INFO PREFIX "%s [%s] (%s)\n",
acpi_device_name(device), acpi_device_bid(device), acpi_device_name(device), acpi_device_bid(device),
ac->state?"on-line":"off-line"); ac->state ? "on-line" : "off-line");
end: end:
if (result) { if (result) {
acpi_ac_remove_fs(device); acpi_ac_remove_fs(device);
kfree(ac); kfree(ac);
...@@ -285,27 +268,23 @@ acpi_ac_add ( ...@@ -285,27 +268,23 @@ acpi_ac_add (
return_VALUE(result); return_VALUE(result);
} }
static int acpi_ac_remove(struct acpi_device *device, int type)
static int
acpi_ac_remove (
struct acpi_device *device,
int type)
{ {
acpi_status status = AE_OK; acpi_status status = AE_OK;
struct acpi_ac *ac = NULL; struct acpi_ac *ac = NULL;
ACPI_FUNCTION_TRACE("acpi_ac_remove"); ACPI_FUNCTION_TRACE("acpi_ac_remove");
if (!device || !acpi_driver_data(device)) if (!device || !acpi_driver_data(device))
return_VALUE(-EINVAL); return_VALUE(-EINVAL);
ac = (struct acpi_ac *) acpi_driver_data(device); ac = (struct acpi_ac *)acpi_driver_data(device);
status = acpi_remove_notify_handler(ac->handle, status = acpi_remove_notify_handler(ac->handle,
ACPI_DEVICE_NOTIFY, acpi_ac_notify); ACPI_DEVICE_NOTIFY, acpi_ac_notify);
if (ACPI_FAILURE(status)) if (ACPI_FAILURE(status))
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Error removing notify handler\n")); "Error removing notify handler\n"));
acpi_ac_remove_fs(device); acpi_ac_remove_fs(device);
...@@ -314,11 +293,9 @@ acpi_ac_remove ( ...@@ -314,11 +293,9 @@ acpi_ac_remove (
return_VALUE(0); return_VALUE(0);
} }
static int __init acpi_ac_init(void)
static int __init
acpi_ac_init (void)
{ {
int result = 0; int result = 0;
ACPI_FUNCTION_TRACE("acpi_ac_init"); ACPI_FUNCTION_TRACE("acpi_ac_init");
...@@ -336,9 +313,7 @@ acpi_ac_init (void) ...@@ -336,9 +313,7 @@ acpi_ac_init (void)
return_VALUE(0); return_VALUE(0);
} }
static void __exit acpi_ac_exit(void)
static void __exit
acpi_ac_exit (void)
{ {
ACPI_FUNCTION_TRACE("acpi_ac_exit"); ACPI_FUNCTION_TRACE("acpi_ac_exit");
...@@ -349,6 +324,5 @@ acpi_ac_exit (void) ...@@ -349,6 +324,5 @@ acpi_ac_exit (void)
return_VOID; return_VOID;
} }
module_init(acpi_ac_init); module_init(acpi_ac_init);
module_exit(acpi_ac_exit); module_exit(acpi_ac_exit);
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
#include <linux/memory_hotplug.h> #include <linux/memory_hotplug.h>
#include <acpi/acpi_drivers.h> #include <acpi/acpi_drivers.h>
#define ACPI_MEMORY_DEVICE_COMPONENT 0x08000000UL #define ACPI_MEMORY_DEVICE_COMPONENT 0x08000000UL
#define ACPI_MEMORY_DEVICE_CLASS "memory" #define ACPI_MEMORY_DEVICE_CLASS "memory"
#define ACPI_MEMORY_DEVICE_HID "PNP0C80" #define ACPI_MEMORY_DEVICE_HID "PNP0C80"
...@@ -41,8 +40,8 @@ ...@@ -41,8 +40,8 @@
#define _COMPONENT ACPI_MEMORY_DEVICE_COMPONENT #define _COMPONENT ACPI_MEMORY_DEVICE_COMPONENT
ACPI_MODULE_NAME ("acpi_memory") ACPI_MODULE_NAME("acpi_memory")
MODULE_AUTHOR("Naveen B S <naveen.b.s@intel.com>"); MODULE_AUTHOR("Naveen B S <naveen.b.s@intel.com>");
MODULE_DESCRIPTION(ACPI_MEMORY_DEVICE_DRIVER_NAME); MODULE_DESCRIPTION(ACPI_MEMORY_DEVICE_DRIVER_NAME);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
...@@ -56,34 +55,33 @@ MODULE_LICENSE("GPL"); ...@@ -56,34 +55,33 @@ MODULE_LICENSE("GPL");
#define MEMORY_POWER_ON_STATE 1 #define MEMORY_POWER_ON_STATE 1
#define MEMORY_POWER_OFF_STATE 2 #define MEMORY_POWER_OFF_STATE 2
static int acpi_memory_device_add (struct acpi_device *device); static int acpi_memory_device_add(struct acpi_device *device);
static int acpi_memory_device_remove (struct acpi_device *device, int type); static int acpi_memory_device_remove(struct acpi_device *device, int type);
static struct acpi_driver acpi_memory_device_driver = { static struct acpi_driver acpi_memory_device_driver = {
.name = ACPI_MEMORY_DEVICE_DRIVER_NAME, .name = ACPI_MEMORY_DEVICE_DRIVER_NAME,
.class = ACPI_MEMORY_DEVICE_CLASS, .class = ACPI_MEMORY_DEVICE_CLASS,
.ids = ACPI_MEMORY_DEVICE_HID, .ids = ACPI_MEMORY_DEVICE_HID,
.ops = { .ops = {
.add = acpi_memory_device_add, .add = acpi_memory_device_add,
.remove = acpi_memory_device_remove, .remove = acpi_memory_device_remove,
}, },
}; };
struct acpi_memory_device { struct acpi_memory_device {
acpi_handle handle; acpi_handle handle;
unsigned int state; /* State of the memory device */ unsigned int state; /* State of the memory device */
unsigned short cache_attribute; /* memory cache attribute */ unsigned short cache_attribute; /* memory cache attribute */
unsigned short read_write_attribute;/* memory read/write attribute */ unsigned short read_write_attribute; /* memory read/write attribute */
u64 start_addr; /* Memory Range start physical addr */ u64 start_addr; /* Memory Range start physical addr */
u64 end_addr; /* Memory Range end physical addr */ u64 end_addr; /* Memory Range end physical addr */
}; };
static int static int
acpi_memory_get_device_resources(struct acpi_memory_device *mem_device) acpi_memory_get_device_resources(struct acpi_memory_device *mem_device)
{ {
acpi_status status; acpi_status status;
struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL}; struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
struct acpi_resource *resource = NULL; struct acpi_resource *resource = NULL;
struct acpi_resource_address64 address64; struct acpi_resource_address64 address64;
...@@ -94,15 +92,15 @@ acpi_memory_get_device_resources(struct acpi_memory_device *mem_device) ...@@ -94,15 +92,15 @@ acpi_memory_get_device_resources(struct acpi_memory_device *mem_device)
if (ACPI_FAILURE(status)) if (ACPI_FAILURE(status))
return_VALUE(-EINVAL); return_VALUE(-EINVAL);
resource = (struct acpi_resource *) buffer.pointer; resource = (struct acpi_resource *)buffer.pointer;
status = acpi_resource_to_address64(resource, &address64); status = acpi_resource_to_address64(resource, &address64);
if (ACPI_SUCCESS(status)) { if (ACPI_SUCCESS(status)) {
if (address64.resource_type == ACPI_MEMORY_RANGE) { if (address64.resource_type == ACPI_MEMORY_RANGE) {
/* Populate the structure */ /* Populate the structure */
mem_device->cache_attribute = mem_device->cache_attribute =
address64.attribute.memory.cache_attribute; address64.attribute.memory.cache_attribute;
mem_device->read_write_attribute = mem_device->read_write_attribute =
address64.attribute.memory.read_write_attribute; address64.attribute.memory.read_write_attribute;
mem_device->start_addr = address64.min_address_range; mem_device->start_addr = address64.min_address_range;
mem_device->end_addr = address64.max_address_range; mem_device->end_addr = address64.max_address_range;
} }
...@@ -114,7 +112,7 @@ acpi_memory_get_device_resources(struct acpi_memory_device *mem_device) ...@@ -114,7 +112,7 @@ acpi_memory_get_device_resources(struct acpi_memory_device *mem_device)
static int static int
acpi_memory_get_device(acpi_handle handle, acpi_memory_get_device(acpi_handle handle,
struct acpi_memory_device **mem_device) struct acpi_memory_device **mem_device)
{ {
acpi_status status; acpi_status status;
acpi_handle phandle; acpi_handle phandle;
...@@ -128,8 +126,7 @@ acpi_memory_get_device(acpi_handle handle, ...@@ -128,8 +126,7 @@ acpi_memory_get_device(acpi_handle handle,
status = acpi_get_parent(handle, &phandle); status = acpi_get_parent(handle, &phandle);
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error in acpi_get_parent\n"));
"Error in acpi_get_parent\n"));
return_VALUE(-EINVAL); return_VALUE(-EINVAL);
} }
...@@ -137,7 +134,7 @@ acpi_memory_get_device(acpi_handle handle, ...@@ -137,7 +134,7 @@ acpi_memory_get_device(acpi_handle handle,
status = acpi_bus_get_device(phandle, &pdevice); status = acpi_bus_get_device(phandle, &pdevice);
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Error in acpi_bus_get_device\n")); "Error in acpi_bus_get_device\n"));
return_VALUE(-EINVAL); return_VALUE(-EINVAL);
} }
...@@ -147,23 +144,21 @@ acpi_memory_get_device(acpi_handle handle, ...@@ -147,23 +144,21 @@ acpi_memory_get_device(acpi_handle handle,
*/ */
status = acpi_bus_add(&device, pdevice, handle, ACPI_BUS_TYPE_DEVICE); status = acpi_bus_add(&device, pdevice, handle, ACPI_BUS_TYPE_DEVICE);
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error in acpi_bus_add\n"));
"Error in acpi_bus_add\n"));
return_VALUE(-EINVAL); return_VALUE(-EINVAL);
} }
end: end:
*mem_device = acpi_driver_data(device); *mem_device = acpi_driver_data(device);
if (!(*mem_device)) { if (!(*mem_device)) {
printk(KERN_ERR "\n driver data not found" ); printk(KERN_ERR "\n driver data not found");
return_VALUE(-ENODEV); return_VALUE(-ENODEV);
} }
return_VALUE(0); return_VALUE(0);
} }
static int static int acpi_memory_check_device(struct acpi_memory_device *mem_device)
acpi_memory_check_device(struct acpi_memory_device *mem_device)
{ {
unsigned long current_status; unsigned long current_status;
...@@ -171,22 +166,21 @@ acpi_memory_check_device(struct acpi_memory_device *mem_device) ...@@ -171,22 +166,21 @@ acpi_memory_check_device(struct acpi_memory_device *mem_device)
/* Get device present/absent information from the _STA */ /* Get device present/absent information from the _STA */
if (ACPI_FAILURE(acpi_evaluate_integer(mem_device->handle, "_STA", if (ACPI_FAILURE(acpi_evaluate_integer(mem_device->handle, "_STA",
NULL, &current_status))) NULL, &current_status)))
return_VALUE(-ENODEV); return_VALUE(-ENODEV);
/* /*
* Check for device status. Device should be * Check for device status. Device should be
* present/enabled/functioning. * present/enabled/functioning.
*/ */
if (!((current_status & ACPI_MEMORY_STA_PRESENT) if (!((current_status & ACPI_MEMORY_STA_PRESENT)
&& (current_status & ACPI_MEMORY_STA_ENABLED) && (current_status & ACPI_MEMORY_STA_ENABLED)
&& (current_status & ACPI_MEMORY_STA_FUNCTIONAL))) && (current_status & ACPI_MEMORY_STA_FUNCTIONAL)))
return_VALUE(-ENODEV); return_VALUE(-ENODEV);
return_VALUE(0); return_VALUE(0);
} }
static int static int acpi_memory_enable_device(struct acpi_memory_device *mem_device)
acpi_memory_enable_device(struct acpi_memory_device *mem_device)
{ {
int result; int result;
...@@ -196,7 +190,7 @@ acpi_memory_enable_device(struct acpi_memory_device *mem_device) ...@@ -196,7 +190,7 @@ acpi_memory_enable_device(struct acpi_memory_device *mem_device)
result = acpi_memory_get_device_resources(mem_device); result = acpi_memory_get_device_resources(mem_device);
if (result) { if (result) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"\nget_device_resources failed\n")); "\nget_device_resources failed\n"));
mem_device->state = MEMORY_INVALID_STATE; mem_device->state = MEMORY_INVALID_STATE;
return result; return result;
} }
...@@ -206,11 +200,10 @@ acpi_memory_enable_device(struct acpi_memory_device *mem_device) ...@@ -206,11 +200,10 @@ acpi_memory_enable_device(struct acpi_memory_device *mem_device)
* Note: Assume that this function returns zero on success * Note: Assume that this function returns zero on success
*/ */
result = add_memory(mem_device->start_addr, result = add_memory(mem_device->start_addr,
(mem_device->end_addr - mem_device->start_addr) + 1, (mem_device->end_addr - mem_device->start_addr) + 1,
mem_device->read_write_attribute); mem_device->read_write_attribute);
if (result) { if (result) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "\nadd_memory failed\n"));
"\nadd_memory failed\n"));
mem_device->state = MEMORY_INVALID_STATE; mem_device->state = MEMORY_INVALID_STATE;
return result; return result;
} }
...@@ -218,11 +211,10 @@ acpi_memory_enable_device(struct acpi_memory_device *mem_device) ...@@ -218,11 +211,10 @@ acpi_memory_enable_device(struct acpi_memory_device *mem_device)
return result; return result;
} }
static int static int acpi_memory_powerdown_device(struct acpi_memory_device *mem_device)
acpi_memory_powerdown_device(struct acpi_memory_device *mem_device)
{ {
acpi_status status; acpi_status status;
struct acpi_object_list arg_list; struct acpi_object_list arg_list;
union acpi_object arg; union acpi_object arg;
unsigned long current_status; unsigned long current_status;
...@@ -234,16 +226,16 @@ acpi_memory_powerdown_device(struct acpi_memory_device *mem_device) ...@@ -234,16 +226,16 @@ acpi_memory_powerdown_device(struct acpi_memory_device *mem_device)
arg.type = ACPI_TYPE_INTEGER; arg.type = ACPI_TYPE_INTEGER;
arg.integer.value = 1; arg.integer.value = 1;
status = acpi_evaluate_object(mem_device->handle, status = acpi_evaluate_object(mem_device->handle,
"_EJ0", &arg_list, NULL); "_EJ0", &arg_list, NULL);
/* Return on _EJ0 failure */ /* Return on _EJ0 failure */
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR,"_EJ0 failed.\n")); ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "_EJ0 failed.\n"));
return_VALUE(-ENODEV); return_VALUE(-ENODEV);
} }
/* Evalute _STA to check if the device is disabled */ /* Evalute _STA to check if the device is disabled */
status = acpi_evaluate_integer(mem_device->handle, "_STA", status = acpi_evaluate_integer(mem_device->handle, "_STA",
NULL, &current_status); NULL, &current_status);
if (ACPI_FAILURE(status)) if (ACPI_FAILURE(status))
return_VALUE(-ENODEV); return_VALUE(-ENODEV);
...@@ -254,8 +246,7 @@ acpi_memory_powerdown_device(struct acpi_memory_device *mem_device) ...@@ -254,8 +246,7 @@ acpi_memory_powerdown_device(struct acpi_memory_device *mem_device)
return_VALUE(0); return_VALUE(0);
} }
static int static int acpi_memory_disable_device(struct acpi_memory_device *mem_device)
acpi_memory_disable_device(struct acpi_memory_device *mem_device)
{ {
int result; int result;
u64 start = mem_device->start_addr; u64 start = mem_device->start_addr;
...@@ -278,7 +269,7 @@ acpi_memory_disable_device(struct acpi_memory_device *mem_device) ...@@ -278,7 +269,7 @@ acpi_memory_disable_device(struct acpi_memory_device *mem_device)
result = acpi_memory_powerdown_device(mem_device); result = acpi_memory_powerdown_device(mem_device);
if (result) { if (result) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Device Power Down failed.\n")); "Device Power Down failed.\n"));
/* Set the status of the device to invalid */ /* Set the status of the device to invalid */
mem_device->state = MEMORY_INVALID_STATE; mem_device->state = MEMORY_INVALID_STATE;
return result; return result;
...@@ -288,8 +279,7 @@ acpi_memory_disable_device(struct acpi_memory_device *mem_device) ...@@ -288,8 +279,7 @@ acpi_memory_disable_device(struct acpi_memory_device *mem_device)
return result; return result;
} }
static void static void acpi_memory_device_notify(acpi_handle handle, u32 event, void *data)
acpi_memory_device_notify(acpi_handle handle, u32 event, void *data)
{ {
struct acpi_memory_device *mem_device; struct acpi_memory_device *mem_device;
struct acpi_device *device; struct acpi_device *device;
...@@ -299,37 +289,37 @@ acpi_memory_device_notify(acpi_handle handle, u32 event, void *data) ...@@ -299,37 +289,37 @@ acpi_memory_device_notify(acpi_handle handle, u32 event, void *data)
switch (event) { switch (event) {
case ACPI_NOTIFY_BUS_CHECK: case ACPI_NOTIFY_BUS_CHECK:
ACPI_DEBUG_PRINT((ACPI_DB_INFO, ACPI_DEBUG_PRINT((ACPI_DB_INFO,
"\nReceived BUS CHECK notification for device\n")); "\nReceived BUS CHECK notification for device\n"));
/* Fall Through */ /* Fall Through */
case ACPI_NOTIFY_DEVICE_CHECK: case ACPI_NOTIFY_DEVICE_CHECK:
if (event == ACPI_NOTIFY_DEVICE_CHECK) if (event == ACPI_NOTIFY_DEVICE_CHECK)
ACPI_DEBUG_PRINT((ACPI_DB_INFO, ACPI_DEBUG_PRINT((ACPI_DB_INFO,
"\nReceived DEVICE CHECK notification for device\n")); "\nReceived DEVICE CHECK notification for device\n"));
if (acpi_memory_get_device(handle, &mem_device)) { if (acpi_memory_get_device(handle, &mem_device)) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Error in finding driver data\n")); "Error in finding driver data\n"));
return_VOID; return_VOID;
} }
if (!acpi_memory_check_device(mem_device)) { if (!acpi_memory_check_device(mem_device)) {
if (acpi_memory_enable_device(mem_device)) if (acpi_memory_enable_device(mem_device))
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Error in acpi_memory_enable_device\n")); "Error in acpi_memory_enable_device\n"));
} }
break; break;
case ACPI_NOTIFY_EJECT_REQUEST: case ACPI_NOTIFY_EJECT_REQUEST:
ACPI_DEBUG_PRINT((ACPI_DB_INFO, ACPI_DEBUG_PRINT((ACPI_DB_INFO,
"\nReceived EJECT REQUEST notification for device\n")); "\nReceived EJECT REQUEST notification for device\n"));
if (acpi_bus_get_device(handle, &device)) { if (acpi_bus_get_device(handle, &device)) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Device doesn't exist\n")); "Device doesn't exist\n"));
break; break;
} }
mem_device = acpi_driver_data(device); mem_device = acpi_driver_data(device);
if (!mem_device) { if (!mem_device) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Driver Data is NULL\n")); "Driver Data is NULL\n"));
break; break;
} }
...@@ -337,26 +327,25 @@ acpi_memory_device_notify(acpi_handle handle, u32 event, void *data) ...@@ -337,26 +327,25 @@ acpi_memory_device_notify(acpi_handle handle, u32 event, void *data)
* Currently disabling memory device from kernel mode * Currently disabling memory device from kernel mode
* TBD: Can also be disabled from user mode scripts * TBD: Can also be disabled from user mode scripts
* TBD: Can also be disabled by Callback registration * TBD: Can also be disabled by Callback registration
* with generic sysfs driver * with generic sysfs driver
*/ */
if (acpi_memory_disable_device(mem_device)) if (acpi_memory_disable_device(mem_device))
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Error in acpi_memory_disable_device\n")); "Error in acpi_memory_disable_device\n"));
/* /*
* TBD: Invoke acpi_bus_remove to cleanup data structures * TBD: Invoke acpi_bus_remove to cleanup data structures
*/ */
break; break;
default: default:
ACPI_DEBUG_PRINT((ACPI_DB_INFO, ACPI_DEBUG_PRINT((ACPI_DB_INFO,
"Unsupported event [0x%x]\n", event)); "Unsupported event [0x%x]\n", event));
break; break;
} }
return_VOID; return_VOID;
} }
static int static int acpi_memory_device_add(struct acpi_device *device)
acpi_memory_device_add(struct acpi_device *device)
{ {
int result; int result;
struct acpi_memory_device *mem_device = NULL; struct acpi_memory_device *mem_device = NULL;
...@@ -391,8 +380,7 @@ acpi_memory_device_add(struct acpi_device *device) ...@@ -391,8 +380,7 @@ acpi_memory_device_add(struct acpi_device *device)
return_VALUE(result); return_VALUE(result);
} }
static int static int acpi_memory_device_remove(struct acpi_device *device, int type)
acpi_memory_device_remove (struct acpi_device *device, int type)
{ {
struct acpi_memory_device *mem_device = NULL; struct acpi_memory_device *mem_device = NULL;
...@@ -401,7 +389,7 @@ acpi_memory_device_remove (struct acpi_device *device, int type) ...@@ -401,7 +389,7 @@ acpi_memory_device_remove (struct acpi_device *device, int type)
if (!device || !acpi_driver_data(device)) if (!device || !acpi_driver_data(device))
return_VALUE(-EINVAL); return_VALUE(-EINVAL);
mem_device = (struct acpi_memory_device *) acpi_driver_data(device); mem_device = (struct acpi_memory_device *)acpi_driver_data(device);
kfree(mem_device); kfree(mem_device);
return_VALUE(0); return_VALUE(0);
...@@ -410,12 +398,11 @@ acpi_memory_device_remove (struct acpi_device *device, int type) ...@@ -410,12 +398,11 @@ acpi_memory_device_remove (struct acpi_device *device, int type)
/* /*
* Helper function to check for memory device * Helper function to check for memory device
*/ */
static acpi_status static acpi_status is_memory_device(acpi_handle handle)
is_memory_device(acpi_handle handle)
{ {
char *hardware_id; char *hardware_id;
acpi_status status; acpi_status status;
struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL}; struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
struct acpi_device_info *info; struct acpi_device_info *info;
ACPI_FUNCTION_TRACE("is_memory_device"); ACPI_FUNCTION_TRACE("is_memory_device");
...@@ -432,7 +419,7 @@ is_memory_device(acpi_handle handle) ...@@ -432,7 +419,7 @@ is_memory_device(acpi_handle handle)
hardware_id = info->hardware_id.value; hardware_id = info->hardware_id.value;
if ((hardware_id == NULL) || if ((hardware_id == NULL) ||
(strcmp(hardware_id, ACPI_MEMORY_DEVICE_HID))) (strcmp(hardware_id, ACPI_MEMORY_DEVICE_HID)))
status = AE_ERROR; status = AE_ERROR;
acpi_os_free(buffer.pointer); acpi_os_free(buffer.pointer);
...@@ -440,8 +427,8 @@ is_memory_device(acpi_handle handle) ...@@ -440,8 +427,8 @@ is_memory_device(acpi_handle handle)
} }
static acpi_status static acpi_status
acpi_memory_register_notify_handler (acpi_handle handle, acpi_memory_register_notify_handler(acpi_handle handle,
u32 level, void *ctxt, void **retv) u32 level, void *ctxt, void **retv)
{ {
acpi_status status; acpi_status status;
...@@ -452,10 +439,10 @@ acpi_memory_register_notify_handler (acpi_handle handle, ...@@ -452,10 +439,10 @@ acpi_memory_register_notify_handler (acpi_handle handle,
return_ACPI_STATUS(AE_OK); /* continue */ return_ACPI_STATUS(AE_OK); /* continue */
status = acpi_install_notify_handler(handle, ACPI_SYSTEM_NOTIFY, status = acpi_install_notify_handler(handle, ACPI_SYSTEM_NOTIFY,
acpi_memory_device_notify, NULL); acpi_memory_device_notify, NULL);
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Error installing notify handler\n")); "Error installing notify handler\n"));
return_ACPI_STATUS(AE_OK); /* continue */ return_ACPI_STATUS(AE_OK); /* continue */
} }
...@@ -463,8 +450,8 @@ acpi_memory_register_notify_handler (acpi_handle handle, ...@@ -463,8 +450,8 @@ acpi_memory_register_notify_handler (acpi_handle handle,
} }
static acpi_status static acpi_status
acpi_memory_deregister_notify_handler (acpi_handle handle, acpi_memory_deregister_notify_handler(acpi_handle handle,
u32 level, void *ctxt, void **retv) u32 level, void *ctxt, void **retv)
{ {
acpi_status status; acpi_status status;
...@@ -475,18 +462,18 @@ acpi_memory_deregister_notify_handler (acpi_handle handle, ...@@ -475,18 +462,18 @@ acpi_memory_deregister_notify_handler (acpi_handle handle,
return_ACPI_STATUS(AE_OK); /* continue */ return_ACPI_STATUS(AE_OK); /* continue */
status = acpi_remove_notify_handler(handle, status = acpi_remove_notify_handler(handle,
ACPI_SYSTEM_NOTIFY, acpi_memory_device_notify); ACPI_SYSTEM_NOTIFY,
acpi_memory_device_notify);
if (ACPI_FAILURE(status)) { if (ACPI_FAILURE(status)) {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Error removing notify handler\n")); "Error removing notify handler\n"));
return_ACPI_STATUS(AE_OK); /* continue */ return_ACPI_STATUS(AE_OK); /* continue */
} }
return_ACPI_STATUS(status); return_ACPI_STATUS(status);
} }
static int __init static int __init acpi_memory_device_init(void)
acpi_memory_device_init (void)
{ {
int result; int result;
acpi_status status; acpi_status status;
...@@ -499,21 +486,20 @@ acpi_memory_device_init (void) ...@@ -499,21 +486,20 @@ acpi_memory_device_init (void)
return_VALUE(-ENODEV); return_VALUE(-ENODEV);
status = acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, status = acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
ACPI_UINT32_MAX, ACPI_UINT32_MAX,
acpi_memory_register_notify_handler, acpi_memory_register_notify_handler,
NULL, NULL); NULL, NULL);
if (ACPI_FAILURE (status)) { if (ACPI_FAILURE(status)) {
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "walk_namespace failed\n")); ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "walk_namespace failed\n"));
acpi_bus_unregister_driver(&acpi_memory_device_driver); acpi_bus_unregister_driver(&acpi_memory_device_driver);
return_VALUE(-ENODEV); return_VALUE(-ENODEV);
} }
return_VALUE(0); return_VALUE(0);
} }
static void __exit static void __exit acpi_memory_device_exit(void)
acpi_memory_device_exit (void)
{ {
acpi_status status; acpi_status status;
...@@ -524,12 +510,12 @@ acpi_memory_device_exit (void) ...@@ -524,12 +510,12 @@ acpi_memory_device_exit (void)
* handles. * handles.
*/ */
status = acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, status = acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
ACPI_UINT32_MAX, ACPI_UINT32_MAX,
acpi_memory_deregister_notify_handler, acpi_memory_deregister_notify_handler,
NULL, NULL); NULL, NULL);
if (ACPI_FAILURE (status)) if (ACPI_FAILURE(status))
ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "walk_namespace failed\n")); ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "walk_namespace failed\n"));
acpi_bus_unregister_driver(&acpi_memory_device_driver); acpi_bus_unregister_driver(&acpi_memory_device_driver);
...@@ -538,5 +524,3 @@ acpi_memory_device_exit (void) ...@@ -538,5 +524,3 @@ acpi_memory_device_exit (void)
module_init(acpi_memory_device_init); module_init(acpi_memory_device_init);
module_exit(acpi_memory_device_exit); module_exit(acpi_memory_device_exit);
此差异已折叠。
此差异已折叠。
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/init.h> #include <linux/init.h>
...@@ -34,49 +33,49 @@ ...@@ -34,49 +33,49 @@
#include <acpi/acpi_bus.h> #include <acpi/acpi_bus.h>
#include <linux/dmi.h> #include <linux/dmi.h>
enum acpi_blacklist_predicates enum acpi_blacklist_predicates {
{ all_versions,
all_versions, less_than_or_equal,
less_than_or_equal, equal,
equal, greater_than_or_equal,
greater_than_or_equal,
}; };
struct acpi_blacklist_item struct acpi_blacklist_item {
{ char oem_id[7];
char oem_id[7]; char oem_table_id[9];
char oem_table_id[9]; u32 oem_revision;
u32 oem_revision; acpi_table_type table;
acpi_table_type table; enum acpi_blacklist_predicates oem_revision_predicate;
enum acpi_blacklist_predicates oem_revision_predicate; char *reason;
char *reason; u32 is_critical_error;
u32 is_critical_error;
}; };
/* /*
* POLICY: If *anything* doesn't work, put it on the blacklist. * POLICY: If *anything* doesn't work, put it on the blacklist.
* If they are critical errors, mark it critical, and abort driver load. * If they are critical errors, mark it critical, and abort driver load.
*/ */
static struct acpi_blacklist_item acpi_blacklist[] __initdata = static struct acpi_blacklist_item acpi_blacklist[] __initdata = {
{
/* Compaq Presario 1700 */ /* Compaq Presario 1700 */
{"PTLTD ", " DSDT ", 0x06040000, ACPI_DSDT, less_than_or_equal, "Multiple problems", 1}, {"PTLTD ", " DSDT ", 0x06040000, ACPI_DSDT, less_than_or_equal,
"Multiple problems", 1},
/* Sony FX120, FX140, FX150? */ /* Sony FX120, FX140, FX150? */
{"SONY ", "U0 ", 0x20010313, ACPI_DSDT, less_than_or_equal, "ACPI driver problem", 1}, {"SONY ", "U0 ", 0x20010313, ACPI_DSDT, less_than_or_equal,
"ACPI driver problem", 1},
/* Compaq Presario 800, Insyde BIOS */ /* Compaq Presario 800, Insyde BIOS */
{"INT440", "SYSFexxx", 0x00001001, ACPI_DSDT, less_than_or_equal, "Does not use _REG to protect EC OpRegions", 1}, {"INT440", "SYSFexxx", 0x00001001, ACPI_DSDT, less_than_or_equal,
"Does not use _REG to protect EC OpRegions", 1},
/* IBM 600E - _ADR should return 7, but it returns 1 */ /* IBM 600E - _ADR should return 7, but it returns 1 */
{"IBM ", "TP600E ", 0x00000105, ACPI_DSDT, less_than_or_equal, "Incorrect _ADR", 1}, {"IBM ", "TP600E ", 0x00000105, ACPI_DSDT, less_than_or_equal,
{"ASUS\0\0", "P2B-S ", 0, ACPI_DSDT, all_versions, "Bogus PCI routing", 1}, "Incorrect _ADR", 1},
{"ASUS\0\0", "P2B-S ", 0, ACPI_DSDT, all_versions,
"Bogus PCI routing", 1},
{""} {""}
}; };
#if CONFIG_ACPI_BLACKLIST_YEAR #if CONFIG_ACPI_BLACKLIST_YEAR
static int __init static int __init blacklist_by_year(void)
blacklist_by_year(void)
{ {
int year; int year;
char *s = dmi_get_system_info(DMI_BIOS_DATE); char *s = dmi_get_system_info(DMI_BIOS_DATE);
...@@ -92,36 +91,38 @@ blacklist_by_year(void) ...@@ -92,36 +91,38 @@ blacklist_by_year(void)
s += 1; s += 1;
year = simple_strtoul(s,NULL,0); year = simple_strtoul(s, NULL, 0);
if (year < 100) { /* 2-digit year */ if (year < 100) { /* 2-digit year */
year += 1900; year += 1900;
if (year < 1996) /* no dates < spec 1.0 */ if (year < 1996) /* no dates < spec 1.0 */
year += 100; year += 100;
} }
if (year < CONFIG_ACPI_BLACKLIST_YEAR) { if (year < CONFIG_ACPI_BLACKLIST_YEAR) {
printk(KERN_ERR PREFIX "BIOS age (%d) fails cutoff (%d), " printk(KERN_ERR PREFIX "BIOS age (%d) fails cutoff (%d), "
"acpi=force is required to enable ACPI\n", "acpi=force is required to enable ACPI\n",
year, CONFIG_ACPI_BLACKLIST_YEAR); year, CONFIG_ACPI_BLACKLIST_YEAR);
return 1; return 1;
} }
return 0; return 0;
} }
#else #else
static inline int blacklist_by_year(void) { return 0; } static inline int blacklist_by_year(void)
{
return 0;
}
#endif #endif
int __init int __init acpi_blacklisted(void)
acpi_blacklisted(void)
{ {
int i = 0; int i = 0;
int blacklisted = 0; int blacklisted = 0;
struct acpi_table_header *table_header; struct acpi_table_header *table_header;
while (acpi_blacklist[i].oem_id[0] != '\0') while (acpi_blacklist[i].oem_id[0] != '\0') {
{ if (acpi_get_table_header_early
if (acpi_get_table_header_early(acpi_blacklist[i].table, &table_header)) { (acpi_blacklist[i].table, &table_header)) {
i++; i++;
continue; continue;
} }
...@@ -131,33 +132,43 @@ acpi_blacklisted(void) ...@@ -131,33 +132,43 @@ acpi_blacklisted(void)
continue; continue;
} }
if (strncmp(acpi_blacklist[i].oem_table_id, table_header->oem_table_id, 8)) { if (strncmp
(acpi_blacklist[i].oem_table_id, table_header->oem_table_id,
8)) {
i++; i++;
continue; continue;
} }
if ((acpi_blacklist[i].oem_revision_predicate == all_versions) if ((acpi_blacklist[i].oem_revision_predicate == all_versions)
|| (acpi_blacklist[i].oem_revision_predicate == less_than_or_equal || (acpi_blacklist[i].oem_revision_predicate ==
&& table_header->oem_revision <= acpi_blacklist[i].oem_revision) less_than_or_equal
|| (acpi_blacklist[i].oem_revision_predicate == greater_than_or_equal && table_header->oem_revision <=
&& table_header->oem_revision >= acpi_blacklist[i].oem_revision) acpi_blacklist[i].oem_revision)
|| (acpi_blacklist[i].oem_revision_predicate ==
greater_than_or_equal
&& table_header->oem_revision >=
acpi_blacklist[i].oem_revision)
|| (acpi_blacklist[i].oem_revision_predicate == equal || (acpi_blacklist[i].oem_revision_predicate == equal
&& table_header->oem_revision == acpi_blacklist[i].oem_revision)) { && table_header->oem_revision ==
acpi_blacklist[i].oem_revision)) {
printk(KERN_ERR PREFIX "Vendor \"%6.6s\" System \"%8.8s\" "
"Revision 0x%x has a known ACPI BIOS problem.\n", printk(KERN_ERR PREFIX
acpi_blacklist[i].oem_id, "Vendor \"%6.6s\" System \"%8.8s\" "
acpi_blacklist[i].oem_table_id, "Revision 0x%x has a known ACPI BIOS problem.\n",
acpi_blacklist[i].oem_revision); acpi_blacklist[i].oem_id,
acpi_blacklist[i].oem_table_id,
printk(KERN_ERR PREFIX "Reason: %s. This is a %s error\n", acpi_blacklist[i].oem_revision);
acpi_blacklist[i].reason,
(acpi_blacklist[i].is_critical_error ? "non-recoverable" : "recoverable")); printk(KERN_ERR PREFIX
"Reason: %s. This is a %s error\n",
acpi_blacklist[i].reason,
(acpi_blacklist[i].
is_critical_error ? "non-recoverable" :
"recoverable"));
blacklisted = acpi_blacklist[i].is_critical_error; blacklisted = acpi_blacklist[i].is_critical_error;
break; break;
} } else {
else {
i++; i++;
} }
} }
...@@ -166,4 +177,3 @@ acpi_blacklisted(void) ...@@ -166,4 +177,3 @@ acpi_blacklisted(void)
return blacklisted; return blacklisted;
} }
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
...@@ -13,16 +13,15 @@ ...@@ -13,16 +13,15 @@
#include <acpi/acpi_drivers.h> #include <acpi/acpi_drivers.h>
#define _COMPONENT ACPI_SYSTEM_COMPONENT #define _COMPONENT ACPI_SYSTEM_COMPONENT
ACPI_MODULE_NAME ("event") ACPI_MODULE_NAME("event")
/* Global vars for handling event proc entry */ /* Global vars for handling event proc entry */
static DEFINE_SPINLOCK(acpi_system_event_lock); static DEFINE_SPINLOCK(acpi_system_event_lock);
int event_is_open = 0; int event_is_open = 0;
extern struct list_head acpi_bus_event_list; extern struct list_head acpi_bus_event_list;
extern wait_queue_head_t acpi_bus_event_queue; extern wait_queue_head_t acpi_bus_event_queue;
static int static int acpi_system_open_event(struct inode *inode, struct file *file)
acpi_system_open_event(struct inode *inode, struct file *file)
{ {
spin_lock_irq(&acpi_system_event_lock); spin_lock_irq(&acpi_system_event_lock);
...@@ -34,20 +33,20 @@ acpi_system_open_event(struct inode *inode, struct file *file) ...@@ -34,20 +33,20 @@ acpi_system_open_event(struct inode *inode, struct file *file)
spin_unlock_irq(&acpi_system_event_lock); spin_unlock_irq(&acpi_system_event_lock);
return 0; return 0;
out_busy: out_busy:
spin_unlock_irq(&acpi_system_event_lock); spin_unlock_irq(&acpi_system_event_lock);
return -EBUSY; return -EBUSY;
} }
static ssize_t static ssize_t
acpi_system_read_event(struct file *file, char __user *buffer, size_t count, loff_t *ppos) acpi_system_read_event(struct file *file, char __user * buffer, size_t count,
loff_t * ppos)
{ {
int result = 0; int result = 0;
struct acpi_bus_event event; struct acpi_bus_event event;
static char str[ACPI_MAX_STRING]; static char str[ACPI_MAX_STRING];
static int chars_remaining = 0; static int chars_remaining = 0;
static char *ptr; static char *ptr;
ACPI_FUNCTION_TRACE("acpi_system_read_event"); ACPI_FUNCTION_TRACE("acpi_system_read_event");
...@@ -63,10 +62,12 @@ acpi_system_read_event(struct file *file, char __user *buffer, size_t count, lof ...@@ -63,10 +62,12 @@ acpi_system_read_event(struct file *file, char __user *buffer, size_t count, lof
return_VALUE(-EIO); return_VALUE(-EIO);
} }
chars_remaining = sprintf(str, "%s %s %08x %08x\n", chars_remaining = sprintf(str, "%s %s %08x %08x\n",
event.device_class?event.device_class:"<unknown>", event.device_class ? event.
event.bus_id?event.bus_id:"<unknown>", device_class : "<unknown>",
event.type, event.data); event.bus_id ? event.
bus_id : "<unknown>", event.type,
event.data);
ptr = str; ptr = str;
} }
...@@ -84,17 +85,15 @@ acpi_system_read_event(struct file *file, char __user *buffer, size_t count, lof ...@@ -84,17 +85,15 @@ acpi_system_read_event(struct file *file, char __user *buffer, size_t count, lof
return_VALUE(count); return_VALUE(count);
} }
static int static int acpi_system_close_event(struct inode *inode, struct file *file)
acpi_system_close_event(struct inode *inode, struct file *file)
{ {
spin_lock_irq (&acpi_system_event_lock); spin_lock_irq(&acpi_system_event_lock);
event_is_open = 0; event_is_open = 0;
spin_unlock_irq (&acpi_system_event_lock); spin_unlock_irq(&acpi_system_event_lock);
return 0; return 0;
} }
static unsigned int static unsigned int acpi_system_poll_event(struct file *file, poll_table * wait)
acpi_system_poll_event(struct file *file, poll_table *wait)
{ {
poll_wait(file, &acpi_bus_event_queue, wait); poll_wait(file, &acpi_bus_event_queue, wait);
if (!list_empty(&acpi_bus_event_list)) if (!list_empty(&acpi_bus_event_list))
...@@ -103,15 +102,15 @@ acpi_system_poll_event(struct file *file, poll_table *wait) ...@@ -103,15 +102,15 @@ acpi_system_poll_event(struct file *file, poll_table *wait)
} }
static struct file_operations acpi_system_event_ops = { static struct file_operations acpi_system_event_ops = {
.open = acpi_system_open_event, .open = acpi_system_open_event,
.read = acpi_system_read_event, .read = acpi_system_read_event,
.release = acpi_system_close_event, .release = acpi_system_close_event,
.poll = acpi_system_poll_event, .poll = acpi_system_poll_event,
}; };
static int __init acpi_event_init(void) static int __init acpi_event_init(void)
{ {
struct proc_dir_entry *entry; struct proc_dir_entry *entry;
int error = 0; int error = 0;
ACPI_FUNCTION_TRACE("acpi_event_init"); ACPI_FUNCTION_TRACE("acpi_event_init");
...@@ -124,8 +123,9 @@ static int __init acpi_event_init(void) ...@@ -124,8 +123,9 @@ static int __init acpi_event_init(void)
if (entry) if (entry)
entry->proc_fops = &acpi_system_event_ops; entry->proc_fops = &acpi_system_event_ops;
else { else {
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
"Unable to create '%s' proc fs entry\n","event" )); "Unable to create '%s' proc fs entry\n",
"event"));
error = -EFAULT; error = -EFAULT;
} }
return_VALUE(error); return_VALUE(error);
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
...@@ -29,7 +29,8 @@ int register_acpi_bus_type(struct acpi_bus_type *type) ...@@ -29,7 +29,8 @@ int register_acpi_bus_type(struct acpi_bus_type *type)
down_write(&bus_type_sem); down_write(&bus_type_sem);
list_add_tail(&type->list, &bus_type_list); list_add_tail(&type->list, &bus_type_list);
up_write(&bus_type_sem); up_write(&bus_type_sem);
printk(KERN_INFO PREFIX "bus type %s registered\n", type->bus->name); printk(KERN_INFO PREFIX "bus type %s registered\n",
type->bus->name);
return 0; return 0;
} }
return -ENODEV; return -ENODEV;
...@@ -45,7 +46,8 @@ int unregister_acpi_bus_type(struct acpi_bus_type *type) ...@@ -45,7 +46,8 @@ int unregister_acpi_bus_type(struct acpi_bus_type *type)
down_write(&bus_type_sem); down_write(&bus_type_sem);
list_del_init(&type->list); list_del_init(&type->list);
up_write(&bus_type_sem); up_write(&bus_type_sem);
printk(KERN_INFO PREFIX "ACPI bus type %s unregistered\n", type->bus->name); printk(KERN_INFO PREFIX "ACPI bus type %s unregistered\n",
type->bus->name);
return 0; return 0;
} }
return -ENODEV; return -ENODEV;
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册