|
@@ -68,10 +68,6 @@ static struct acpi_driver acpi_fan_driver = {
|
|
},
|
|
},
|
|
};
|
|
};
|
|
|
|
|
|
-struct acpi_fan {
|
|
|
|
- struct acpi_device * device;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
/* --------------------------------------------------------------------------
|
|
/* --------------------------------------------------------------------------
|
|
FS Interface (/proc)
|
|
FS Interface (/proc)
|
|
-------------------------------------------------------------------------- */
|
|
-------------------------------------------------------------------------- */
|
|
@@ -80,12 +76,12 @@ static struct proc_dir_entry *acpi_fan_dir;
|
|
|
|
|
|
static int acpi_fan_read_state(struct seq_file *seq, void *offset)
|
|
static int acpi_fan_read_state(struct seq_file *seq, void *offset)
|
|
{
|
|
{
|
|
- struct acpi_fan *fan = seq->private;
|
|
|
|
|
|
+ struct acpi_device *device = seq->private;
|
|
int state = 0;
|
|
int state = 0;
|
|
|
|
|
|
|
|
|
|
- if (fan) {
|
|
|
|
- if (acpi_bus_get_power(fan->device->handle, &state))
|
|
|
|
|
|
+ if (device) {
|
|
|
|
+ if (acpi_bus_get_power(device->handle, &state))
|
|
seq_printf(seq, "status: ERROR\n");
|
|
seq_printf(seq, "status: ERROR\n");
|
|
else
|
|
else
|
|
seq_printf(seq, "status: %s\n",
|
|
seq_printf(seq, "status: %s\n",
|
|
@@ -105,11 +101,10 @@ acpi_fan_write_state(struct file *file, const char __user * buffer,
|
|
{
|
|
{
|
|
int result = 0;
|
|
int result = 0;
|
|
struct seq_file *m = file->private_data;
|
|
struct seq_file *m = file->private_data;
|
|
- struct acpi_fan *fan = m->private;
|
|
|
|
|
|
+ struct acpi_device *device = m->private;
|
|
char state_string[12] = { '\0' };
|
|
char state_string[12] = { '\0' };
|
|
|
|
|
|
-
|
|
|
|
- if (!fan || (count > sizeof(state_string) - 1))
|
|
|
|
|
|
+ if (count > sizeof(state_string) - 1)
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
|
|
|
|
if (copy_from_user(state_string, buffer, count))
|
|
if (copy_from_user(state_string, buffer, count))
|
|
@@ -117,7 +112,7 @@ acpi_fan_write_state(struct file *file, const char __user * buffer,
|
|
|
|
|
|
state_string[count] = '\0';
|
|
state_string[count] = '\0';
|
|
|
|
|
|
- result = acpi_bus_set_power(fan->device->handle,
|
|
|
|
|
|
+ result = acpi_bus_set_power(device->handle,
|
|
simple_strtoul(state_string, NULL, 0));
|
|
simple_strtoul(state_string, NULL, 0));
|
|
if (result)
|
|
if (result)
|
|
return result;
|
|
return result;
|
|
@@ -158,7 +153,7 @@ static int acpi_fan_add_fs(struct acpi_device *device)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
else {
|
|
else {
|
|
entry->proc_fops = &acpi_fan_state_ops;
|
|
entry->proc_fops = &acpi_fan_state_ops;
|
|
- entry->data = acpi_driver_data(device);
|
|
|
|
|
|
+ entry->data = device;
|
|
entry->owner = THIS_MODULE;
|
|
entry->owner = THIS_MODULE;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -191,14 +186,8 @@ static int acpi_fan_add(struct acpi_device *device)
|
|
if (!device)
|
|
if (!device)
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
|
|
|
|
- fan = kzalloc(sizeof(struct acpi_fan), GFP_KERNEL);
|
|
|
|
- if (!fan)
|
|
|
|
- return -ENOMEM;
|
|
|
|
-
|
|
|
|
- fan->device = device;
|
|
|
|
strcpy(acpi_device_name(device), "Fan");
|
|
strcpy(acpi_device_name(device), "Fan");
|
|
strcpy(acpi_device_class(device), ACPI_FAN_CLASS);
|
|
strcpy(acpi_device_class(device), ACPI_FAN_CLASS);
|
|
- acpi_driver_data(device) = fan;
|
|
|
|
|
|
|
|
result = acpi_bus_get_power(device->handle, &state);
|
|
result = acpi_bus_get_power(device->handle, &state);
|
|
if (result) {
|
|
if (result) {
|
|
@@ -227,18 +216,11 @@ static int acpi_fan_add(struct acpi_device *device)
|
|
|
|
|
|
static int acpi_fan_remove(struct acpi_device *device, int type)
|
|
static int acpi_fan_remove(struct acpi_device *device, int type)
|
|
{
|
|
{
|
|
- struct acpi_fan *fan = NULL;
|
|
|
|
-
|
|
|
|
-
|
|
|
|
if (!device || !acpi_driver_data(device))
|
|
if (!device || !acpi_driver_data(device))
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
|
|
|
|
- fan = acpi_driver_data(device);
|
|
|
|
-
|
|
|
|
acpi_fan_remove_fs(device);
|
|
acpi_fan_remove_fs(device);
|
|
|
|
|
|
- kfree(fan);
|
|
|
|
-
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|