From 3f86b83243d59bb50caf5938d284d22e10d082a4 Mon Sep 17 00:00:00 2001 From: Rich Townsend Date: Sat, 1 Jul 2006 11:36:54 -0400 Subject: ACPI: add support for Smart Battery Most batteries today are ACPI "Control Method" batteries, but some models ship with the older "Smart Battery" that requires this code. Rich Townsend and Bruno Ducrot were the original authors. Vladimir Lebedev updated to run on latest kernel. http://bugzilla.kernel.org/show_bug.cgi?id=3734 Signed-off-by: Len Brown --- drivers/acpi/i2c_ec.c | 420 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 420 insertions(+) create mode 100644 drivers/acpi/i2c_ec.c (limited to 'drivers/acpi/i2c_ec.c') diff --git a/drivers/acpi/i2c_ec.c b/drivers/acpi/i2c_ec.c new file mode 100644 index 000000000000..72478a665c8c --- /dev/null +++ b/drivers/acpi/i2c_ec.c @@ -0,0 +1,420 @@ +/* + * SMBus driver for ACPI Embedded Controller ($Revision: 1.3 $) + * + * Copyright (c) 2002, 2005 Ducrot Bruno + * Copyright (c) 2005 Rich Townsend (tiny hacks & tweaks) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "i2c_ec.h" + +#define xudelay(t) udelay(t) +#define xmsleep(t) msleep(t) + +#define ACPI_EC_HC_COMPONENT 0x00080000 +#define ACPI_EC_HC_CLASS "ec_hc_smbus" +#define ACPI_EC_HC_HID "ACPI0001" +#define ACPI_EC_HC_DRIVER_NAME "ACPI EC HC smbus driver" +#define ACPI_EC_HC_DEVICE_NAME "EC HC smbus" + +#define _COMPONENT ACPI_EC_HC_COMPONENT + +ACPI_MODULE_NAME("acpi_smbus") + +static int acpi_ec_hc_add(struct acpi_device *device); +static int acpi_ec_hc_remove(struct acpi_device *device, int type); + +static struct acpi_driver acpi_ec_hc_driver = { + .name = ACPI_EC_HC_DRIVER_NAME, + .class = ACPI_EC_HC_CLASS, + .ids = ACPI_EC_HC_HID, + .ops = { + .add = acpi_ec_hc_add, + .remove = acpi_ec_hc_remove, + }, +}; + +/* Various bit mask for EC_SC (R) */ +#define OBF 0x01 +#define IBF 0x02 +#define CMD 0x08 +#define BURST 0x10 +#define SCI_EVT 0x20 +#define SMI_EVT 0x40 + +/* Commands for EC_SC (W) */ +#define RD_EC 0x80 +#define WR_EC 0x81 +#define BE_EC 0x82 +#define BD_EC 0x83 +#define QR_EC 0x84 + +/* + * ACPI 2.0 chapter 13 SMBus 2.0 EC register model + */ + +#define ACPI_EC_SMB_PRTCL 0x00 /* protocol, PEC */ +#define ACPI_EC_SMB_STS 0x01 /* status */ +#define ACPI_EC_SMB_ADDR 0x02 /* address */ +#define ACPI_EC_SMB_CMD 0x03 /* command */ +#define ACPI_EC_SMB_DATA 0x04 /* 32 data registers */ +#define ACPI_EC_SMB_BCNT 0x24 /* number of data bytes */ +#define ACPI_EC_SMB_ALRM_A 0x25 /* alarm address */ +#define ACPI_EC_SMB_ALRM_D 0x26 /* 2 bytes alarm data */ + +#define ACPI_EC_SMB_STS_DONE 0x80 +#define ACPI_EC_SMB_STS_ALRM 0x40 +#define ACPI_EC_SMB_STS_RES 0x20 +#define ACPI_EC_SMB_STS_STATUS 0x1f + +#define ACPI_EC_SMB_STATUS_OK 0x00 +#define ACPI_EC_SMB_STATUS_FAIL 0x07 +#define ACPI_EC_SMB_STATUS_DNAK 0x10 +#define ACPI_EC_SMB_STATUS_DERR 0x11 +#define ACPI_EC_SMB_STATUS_CMD_DENY 0x12 +#define ACPI_EC_SMB_STATUS_UNKNOWN 0x13 +#define ACPI_EC_SMB_STATUS_ACC_DENY 0x17 +#define ACPI_EC_SMB_STATUS_TIMEOUT 0x18 +#define ACPI_EC_SMB_STATUS_NOTSUP 0x19 +#define ACPI_EC_SMB_STATUS_BUSY 0x1A +#define ACPI_EC_SMB_STATUS_PEC 0x1F + +#define ACPI_EC_SMB_PRTCL_WRITE 0x00 +#define ACPI_EC_SMB_PRTCL_READ 0x01 +#define ACPI_EC_SMB_PRTCL_QUICK 0x02 +#define ACPI_EC_SMB_PRTCL_BYTE 0x04 +#define ACPI_EC_SMB_PRTCL_BYTE_DATA 0x06 +#define ACPI_EC_SMB_PRTCL_WORD_DATA 0x08 +#define ACPI_EC_SMB_PRTCL_BLOCK_DATA 0x0a +#define ACPI_EC_SMB_PRTCL_PROC_CALL 0x0c +#define ACPI_EC_SMB_PRTCL_BLOCK_PROC_CALL 0x0d +#define ACPI_EC_SMB_PRTCL_I2C_BLOCK_DATA 0x4a +#define ACPI_EC_SMB_PRTCL_PEC 0x80 + +/* Length of pre/post transaction sleep (msec) */ +#define ACPI_EC_SMB_TRANSACTION_SLEEP 1 +#define ACPI_EC_SMB_ACCESS_SLEEP1 1 +#define ACPI_EC_SMB_ACCESS_SLEEP2 10 + +static int acpi_ec_smb_read(struct acpi_ec_smbus *smbus, u8 address, u8 * data) +{ + u8 val; + int err; + + ACPI_FUNCTION_TRACE("acpi_ec_smb_read"); + + err = ec_read(smbus->base + address, &val); + if (!err) { + *data = val; + } + xmsleep(ACPI_EC_SMB_TRANSACTION_SLEEP); + return (err); +} + +static int acpi_ec_smb_write(struct acpi_ec_smbus *smbus, u8 address, u8 data) +{ + int err; + + ACPI_FUNCTION_TRACE("acpi_ec_smb_write"); + + err = ec_write(smbus->base + address, data); + return (err); +} + +static int +acpi_ec_smb_access(struct i2c_adapter *adap, u16 addr, unsigned short flags, + char read_write, u8 command, int size, + union i2c_smbus_data *data) +{ + struct acpi_ec_smbus *smbus = adap->algo_data; + unsigned char protocol, len = 0, pec, temp[2] = { 0, 0 }; + int i; + + ACPI_FUNCTION_TRACE("acpi_ec_smb_access"); + + if (read_write == I2C_SMBUS_READ) { + protocol = ACPI_EC_SMB_PRTCL_READ; + } else { + protocol = ACPI_EC_SMB_PRTCL_WRITE; + } + pec = (flags & I2C_CLIENT_PEC) ? ACPI_EC_SMB_PRTCL_PEC : 0; + + switch (size) { + + case I2C_SMBUS_QUICK: + protocol |= ACPI_EC_SMB_PRTCL_QUICK; + read_write = I2C_SMBUS_WRITE; + break; + + case I2C_SMBUS_BYTE: + if (read_write == I2C_SMBUS_WRITE) { + acpi_ec_smb_write(smbus, ACPI_EC_SMB_DATA, data->byte); + } + protocol |= ACPI_EC_SMB_PRTCL_BYTE; + break; + + case I2C_SMBUS_BYTE_DATA: + acpi_ec_smb_write(smbus, ACPI_EC_SMB_CMD, command); + if (read_write == I2C_SMBUS_WRITE) { + acpi_ec_smb_write(smbus, ACPI_EC_SMB_DATA, data->byte); + } + protocol |= ACPI_EC_SMB_PRTCL_BYTE_DATA; + break; + + case I2C_SMBUS_WORD_DATA: + acpi_ec_smb_write(smbus, ACPI_EC_SMB_CMD, command); + if (read_write == I2C_SMBUS_WRITE) { + acpi_ec_smb_write(smbus, ACPI_EC_SMB_DATA, data->word); + acpi_ec_smb_write(smbus, ACPI_EC_SMB_DATA + 1, + data->word >> 8); + } + protocol |= ACPI_EC_SMB_PRTCL_WORD_DATA | pec; + break; + + case I2C_SMBUS_BLOCK_DATA: + acpi_ec_smb_write(smbus, ACPI_EC_SMB_CMD, command); + if (read_write == I2C_SMBUS_WRITE) { + len = min_t(u8, data->block[0], 32); + acpi_ec_smb_write(smbus, ACPI_EC_SMB_BCNT, len); + for (i = 0; i < len; i++) + acpi_ec_smb_write(smbus, ACPI_EC_SMB_DATA + i, + data->block[i + 1]); + } + protocol |= ACPI_EC_SMB_PRTCL_BLOCK_DATA | pec; + break; + + case I2C_SMBUS_I2C_BLOCK_DATA: + len = min_t(u8, data->block[0], 32); + acpi_ec_smb_write(smbus, ACPI_EC_SMB_CMD, command); + acpi_ec_smb_write(smbus, ACPI_EC_SMB_BCNT, len); + if (read_write == I2C_SMBUS_WRITE) { + for (i = 0; i < len; i++) { + acpi_ec_smb_write(smbus, ACPI_EC_SMB_DATA + i, + data->block[i + 1]); + } + } + protocol |= ACPI_EC_SMB_PRTCL_I2C_BLOCK_DATA; + break; + + case I2C_SMBUS_PROC_CALL: + acpi_ec_smb_write(smbus, ACPI_EC_SMB_CMD, command); + acpi_ec_smb_write(smbus, ACPI_EC_SMB_DATA, data->word); + acpi_ec_smb_write(smbus, ACPI_EC_SMB_DATA + 1, data->word >> 8); + protocol = ACPI_EC_SMB_PRTCL_PROC_CALL | pec; + read_write = I2C_SMBUS_READ; + break; + + case I2C_SMBUS_BLOCK_PROC_CALL: + protocol |= pec; + len = min_t(u8, data->block[0], 31); + acpi_ec_smb_write(smbus, ACPI_EC_SMB_CMD, command); + acpi_ec_smb_write(smbus, ACPI_EC_SMB_BCNT, len); + for (i = 0; i < len; i++) + acpi_ec_smb_write(smbus, ACPI_EC_SMB_DATA + i, + data->block[i + 1]); + protocol = ACPI_EC_SMB_PRTCL_BLOCK_PROC_CALL | pec; + read_write = I2C_SMBUS_READ; + break; + + default: + ACPI_DEBUG_PRINT((ACPI_DB_WARN, "EC SMBus adapter: " + "Unsupported transaction %d\n", size)); + return (-1); + } + + acpi_ec_smb_write(smbus, ACPI_EC_SMB_ADDR, addr << 1); + acpi_ec_smb_write(smbus, ACPI_EC_SMB_PRTCL, protocol); + + acpi_ec_smb_read(smbus, ACPI_EC_SMB_STS, temp + 0); + + if (~temp[0] & ACPI_EC_SMB_STS_DONE) { + xudelay(500); + acpi_ec_smb_read(smbus, ACPI_EC_SMB_STS, temp + 0); + } + if (~temp[0] & ACPI_EC_SMB_STS_DONE) { + xmsleep(ACPI_EC_SMB_ACCESS_SLEEP2); + acpi_ec_smb_read(smbus, ACPI_EC_SMB_STS, temp + 0); + } + if ((~temp[0] & ACPI_EC_SMB_STS_DONE) + || (temp[0] & ACPI_EC_SMB_STS_STATUS)) { + return (-1); + } + + if (read_write == I2C_SMBUS_WRITE) { + return (0); + } + + switch (size) { + + case I2C_SMBUS_BYTE: + case I2C_SMBUS_BYTE_DATA: + acpi_ec_smb_read(smbus, ACPI_EC_SMB_DATA, &data->byte); + break; + + case I2C_SMBUS_WORD_DATA: + case I2C_SMBUS_PROC_CALL: + acpi_ec_smb_read(smbus, ACPI_EC_SMB_DATA, temp + 0); + acpi_ec_smb_read(smbus, ACPI_EC_SMB_DATA + 1, temp + 1); + data->word = (temp[1] << 8) | temp[0]; + break; + + case I2C_SMBUS_BLOCK_DATA: + case I2C_SMBUS_BLOCK_PROC_CALL: + len = 0; + acpi_ec_smb_read(smbus, ACPI_EC_SMB_BCNT, &len); + len = min_t(u8, len, 32); + case I2C_SMBUS_I2C_BLOCK_DATA: + for (i = 0; i < len; i++) + acpi_ec_smb_read(smbus, ACPI_EC_SMB_DATA + i, + data->block + i + 1); + data->block[0] = len; + break; + } + + return (0); +} + +static u32 acpi_ec_smb_func(struct i2c_adapter *adapter) +{ + ACPI_FUNCTION_TRACE("acpi_ec_smb_func"); + + return (I2C_FUNC_SMBUS_QUICK | I2C_FUNC_SMBUS_BYTE | + I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA | + I2C_FUNC_SMBUS_BLOCK_DATA | + I2C_FUNC_SMBUS_PROC_CALL | + I2C_FUNC_SMBUS_BLOCK_PROC_CALL | + I2C_FUNC_SMBUS_I2C_BLOCK | I2C_FUNC_SMBUS_HWPEC_CALC); +} + +static struct i2c_algorithm acpi_ec_smbus_algorithm = { + .smbus_xfer = acpi_ec_smb_access, + .functionality = acpi_ec_smb_func, +}; + +static int acpi_ec_hc_add(struct acpi_device *device) +{ + int status; + unsigned long val; + struct acpi_ec_hc *ec_hc; + struct acpi_ec_smbus *smbus; + + ACPI_FUNCTION_TRACE("acpi_ec_hc_add"); + + if (!device) { + return_VALUE(-EINVAL); + } + + ec_hc = kmalloc(sizeof(struct acpi_ec_hc), GFP_KERNEL); + if (!ec_hc) { + return_VALUE(-ENOMEM); + } + memset(ec_hc, 0, sizeof(struct acpi_ec_hc)); + + smbus = kmalloc(sizeof(struct acpi_ec_smbus), GFP_KERNEL); + if (!smbus) { + kfree(ec_hc); + return_VALUE(-ENOMEM); + } + memset(smbus, 0, sizeof(struct acpi_ec_smbus)); + + ec_hc->handle = device->handle; + strcpy(acpi_device_name(device), ACPI_EC_HC_DEVICE_NAME); + strcpy(acpi_device_class(device), ACPI_EC_HC_CLASS); + acpi_driver_data(device) = ec_hc; + + status = acpi_evaluate_integer(ec_hc->handle, "_EC", NULL, &val); + if (ACPI_FAILURE(status)) { + ACPI_DEBUG_PRINT((ACPI_DB_WARN, "Error obtaining _EC\n")); + kfree(ec_hc->smbus); + kfree(smbus); + return_VALUE(-EIO); + } + + smbus->ec = acpi_driver_data(device->parent); + smbus->base = (val & 0xff00ull) >> 8; + smbus->alert = val & 0xffull; + + smbus->adapter.owner = THIS_MODULE; + smbus->adapter.algo = &acpi_ec_smbus_algorithm; + smbus->adapter.algo_data = smbus; + + if (i2c_add_adapter(&smbus->adapter)) { + ACPI_DEBUG_PRINT((ACPI_DB_WARN, + "EC SMBus adapter: Failed to register adapter\n")); + kfree(smbus); + kfree(ec_hc); + return_VALUE(-EIO); + } + + ec_hc->smbus = smbus; + + printk(KERN_INFO PREFIX "%s [%s]\n", + acpi_device_name(device), acpi_device_bid(device)); + + return_VALUE(AE_OK); +} + +static int acpi_ec_hc_remove(struct acpi_device *device, int type) +{ + struct acpi_ec_hc *ec_hc; + + ACPI_FUNCTION_TRACE("acpi_ec_hc_remove"); + + if (!device) { + return_VALUE(-EINVAL); + } + ec_hc = acpi_driver_data(device); + + i2c_del_adapter(&ec_hc->smbus->adapter); + kfree(ec_hc->smbus); + kfree(ec_hc); + + return_VALUE(AE_OK); +} + +static int __init acpi_ec_hc_init(void) +{ + int result; + + ACPI_FUNCTION_TRACE("acpi_ec_hc_init"); + result = acpi_bus_register_driver(&acpi_ec_hc_driver); + if (result < 0) { + return_VALUE(-ENODEV); + } + return_VALUE(0); +} + +static void __exit acpi_ec_hc_exit(void) +{ + ACPI_FUNCTION_TRACE("acpi_ec_hc_exit"); + acpi_bus_unregister_driver(&acpi_ec_hc_driver); +} + +struct acpi_ec_hc *acpi_get_ec_hc(struct acpi_device *device) +{ + ACPI_FUNCTION_TRACE("acpi_get_ec_hc"); + return ((struct acpi_ec_hc *)acpi_driver_data(device->parent)); +} + +EXPORT_SYMBOL(acpi_get_ec_hc); + +module_init(acpi_ec_hc_init); +module_exit(acpi_ec_hc_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Ducrot Bruno"); +MODULE_DESCRIPTION("ACPI EC SMBus driver"); -- cgit v1.2.3 From 635227ee89929a6e2920fc8aa1cd48f7225d3d93 Mon Sep 17 00:00:00 2001 From: Len Brown Date: Sat, 1 Jul 2006 16:48:23 -0400 Subject: ACPI: remove function tracing macros from drivers/acpi/*.c a few invocations appeared due to the SBS and other patches. Signed-off-by: Len Brown --- drivers/acpi/cm_sbs.c | 14 ++--- drivers/acpi/i2c_ec.c | 34 ++++-------- drivers/acpi/numa.c | 4 +- drivers/acpi/sbs.c | 142 ++++++++++++++------------------------------------ 4 files changed, 56 insertions(+), 138 deletions(-) (limited to 'drivers/acpi/i2c_ec.c') diff --git a/drivers/acpi/cm_sbs.c b/drivers/acpi/cm_sbs.c index d11507c7b8a4..574a75a166c5 100644 --- a/drivers/acpi/cm_sbs.c +++ b/drivers/acpi/cm_sbs.c @@ -46,7 +46,6 @@ static int lock_battery_dir_cnt = 0; struct proc_dir_entry *acpi_lock_ac_dir(void) { - ACPI_FUNCTION_TRACE("acpi_lock_ac_dir"); down(&cm_sbs_sem); if (!acpi_ac_dir) { @@ -59,14 +58,13 @@ struct proc_dir_entry *acpi_lock_ac_dir(void) "Cannot create %s\n", ACPI_AC_CLASS)); } up(&cm_sbs_sem); - return (acpi_ac_dir); + return acpi_ac_dir; } EXPORT_SYMBOL(acpi_lock_ac_dir); void acpi_unlock_ac_dir(struct proc_dir_entry *acpi_ac_dir_param) { - ACPI_FUNCTION_TRACE("acpi_unlock_ac_dir"); down(&cm_sbs_sem); if (acpi_ac_dir_param) { @@ -83,7 +81,6 @@ EXPORT_SYMBOL(acpi_unlock_ac_dir); struct proc_dir_entry *acpi_lock_battery_dir(void) { - ACPI_FUNCTION_TRACE("acpi_lock_battery_dir"); down(&cm_sbs_sem); if (!acpi_battery_dir) { @@ -97,14 +94,13 @@ struct proc_dir_entry *acpi_lock_battery_dir(void) "Cannot create %s\n", ACPI_BATTERY_CLASS)); } up(&cm_sbs_sem); - return (acpi_battery_dir); + return acpi_battery_dir; } EXPORT_SYMBOL(acpi_lock_battery_dir); void acpi_unlock_battery_dir(struct proc_dir_entry *acpi_battery_dir_param) { - ACPI_FUNCTION_TRACE("acpi_unlock_battery_dir"); down(&cm_sbs_sem); if (acpi_battery_dir_param) { @@ -116,20 +112,20 @@ void acpi_unlock_battery_dir(struct proc_dir_entry *acpi_battery_dir_param) acpi_battery_dir = 0; } up(&cm_sbs_sem); + return; } EXPORT_SYMBOL(acpi_unlock_battery_dir); static int __init acpi_cm_sbs_init(void) { - ACPI_FUNCTION_TRACE("acpi_cm_sbs_init"); if (acpi_disabled) - return_VALUE(0); + return 0; init_MUTEX(&cm_sbs_sem); - return_VALUE(0); + return 0; } subsys_initcall(acpi_cm_sbs_init); diff --git a/drivers/acpi/i2c_ec.c b/drivers/acpi/i2c_ec.c index 72478a665c8c..84239d51dc0c 100644 --- a/drivers/acpi/i2c_ec.c +++ b/drivers/acpi/i2c_ec.c @@ -115,8 +115,6 @@ static int acpi_ec_smb_read(struct acpi_ec_smbus *smbus, u8 address, u8 * data) u8 val; int err; - ACPI_FUNCTION_TRACE("acpi_ec_smb_read"); - err = ec_read(smbus->base + address, &val); if (!err) { *data = val; @@ -129,8 +127,6 @@ static int acpi_ec_smb_write(struct acpi_ec_smbus *smbus, u8 address, u8 data) { int err; - ACPI_FUNCTION_TRACE("acpi_ec_smb_write"); - err = ec_write(smbus->base + address, data); return (err); } @@ -144,8 +140,6 @@ acpi_ec_smb_access(struct i2c_adapter *adap, u16 addr, unsigned short flags, unsigned char protocol, len = 0, pec, temp[2] = { 0, 0 }; int i; - ACPI_FUNCTION_TRACE("acpi_ec_smb_access"); - if (read_write == I2C_SMBUS_READ) { protocol = ACPI_EC_SMB_PRTCL_READ; } else { @@ -290,7 +284,6 @@ acpi_ec_smb_access(struct i2c_adapter *adap, u16 addr, unsigned short flags, static u32 acpi_ec_smb_func(struct i2c_adapter *adapter) { - ACPI_FUNCTION_TRACE("acpi_ec_smb_func"); return (I2C_FUNC_SMBUS_QUICK | I2C_FUNC_SMBUS_BYTE | I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA | @@ -312,22 +305,20 @@ static int acpi_ec_hc_add(struct acpi_device *device) struct acpi_ec_hc *ec_hc; struct acpi_ec_smbus *smbus; - ACPI_FUNCTION_TRACE("acpi_ec_hc_add"); - if (!device) { - return_VALUE(-EINVAL); + return -EINVAL; } ec_hc = kmalloc(sizeof(struct acpi_ec_hc), GFP_KERNEL); if (!ec_hc) { - return_VALUE(-ENOMEM); + return -ENOMEM; } memset(ec_hc, 0, sizeof(struct acpi_ec_hc)); smbus = kmalloc(sizeof(struct acpi_ec_smbus), GFP_KERNEL); if (!smbus) { kfree(ec_hc); - return_VALUE(-ENOMEM); + return -ENOMEM; } memset(smbus, 0, sizeof(struct acpi_ec_smbus)); @@ -341,7 +332,7 @@ static int acpi_ec_hc_add(struct acpi_device *device) ACPI_DEBUG_PRINT((ACPI_DB_WARN, "Error obtaining _EC\n")); kfree(ec_hc->smbus); kfree(smbus); - return_VALUE(-EIO); + return -EIO; } smbus->ec = acpi_driver_data(device->parent); @@ -357,7 +348,7 @@ static int acpi_ec_hc_add(struct acpi_device *device) "EC SMBus adapter: Failed to register adapter\n")); kfree(smbus); kfree(ec_hc); - return_VALUE(-EIO); + return -EIO; } ec_hc->smbus = smbus; @@ -365,17 +356,15 @@ static int acpi_ec_hc_add(struct acpi_device *device) printk(KERN_INFO PREFIX "%s [%s]\n", acpi_device_name(device), acpi_device_bid(device)); - return_VALUE(AE_OK); + return AE_OK; } static int acpi_ec_hc_remove(struct acpi_device *device, int type) { struct acpi_ec_hc *ec_hc; - ACPI_FUNCTION_TRACE("acpi_ec_hc_remove"); - if (!device) { - return_VALUE(-EINVAL); + return -EINVAL; } ec_hc = acpi_driver_data(device); @@ -383,30 +372,27 @@ static int acpi_ec_hc_remove(struct acpi_device *device, int type) kfree(ec_hc->smbus); kfree(ec_hc); - return_VALUE(AE_OK); + return AE_OK; } static int __init acpi_ec_hc_init(void) { int result; - ACPI_FUNCTION_TRACE("acpi_ec_hc_init"); result = acpi_bus_register_driver(&acpi_ec_hc_driver); if (result < 0) { - return_VALUE(-ENODEV); + return -ENODEV; } - return_VALUE(0); + return 0; } static void __exit acpi_ec_hc_exit(void) { - ACPI_FUNCTION_TRACE("acpi_ec_hc_exit"); acpi_bus_unregister_driver(&acpi_ec_hc_driver); } struct acpi_ec_hc *acpi_get_ec_hc(struct acpi_device *device) { - ACPI_FUNCTION_TRACE("acpi_get_ec_hc"); return ((struct acpi_ec_hc *)acpi_driver_data(device->parent)); } diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c index 4d622981f61a..e5e448edca41 100644 --- a/drivers/acpi/numa.c +++ b/drivers/acpi/numa.c @@ -259,12 +259,10 @@ int acpi_get_node(acpi_handle *handle) { int pxm, node = -1; - ACPI_FUNCTION_TRACE("acpi_get_node"); - pxm = acpi_get_pxm(handle); if (pxm >= 0) node = acpi_map_pxm_to_node(pxm); - return_VALUE(node); + return node; } EXPORT_SYMBOL(acpi_get_node); diff --git a/drivers/acpi/sbs.c b/drivers/acpi/sbs.c index 8bebcebff5f0..db7b350a5035 100644 --- a/drivers/acpi/sbs.c +++ b/drivers/acpi/sbs.c @@ -187,8 +187,6 @@ static void acpi_battery_smbus_err_handler(struct acpi_ec_smbus *smbus) char *err_str; int err_number; - ACPI_FUNCTION_TRACE("acpi_battery_smbus_err_handler"); - data.word = 0; result = smbus->adapter.algo-> @@ -239,8 +237,6 @@ acpi_sbs_smbus_read_word(struct acpi_ec_smbus *smbus, int addr, int func, int result = 0; int i; - ACPI_FUNCTION_TRACE("acpi_sbs_smbus_read_word"); - if (err_handler == NULL) { err_handler = acpi_battery_smbus_err_handler; } @@ -263,7 +259,7 @@ acpi_sbs_smbus_read_word(struct acpi_ec_smbus *smbus, int addr, int func, } } - return_VALUE(result); + return result; } static int @@ -275,8 +271,6 @@ acpi_sbs_smbus_read_str(struct acpi_ec_smbus *smbus, int addr, int func, int result = 0; int i; - ACPI_FUNCTION_TRACE("acpi_sbs_smbus_read_str"); - if (err_handler == NULL) { err_handler = acpi_battery_smbus_err_handler; } @@ -302,7 +296,7 @@ acpi_sbs_smbus_read_str(struct acpi_ec_smbus *smbus, int addr, int func, } } - return_VALUE(result); + return result; } static int @@ -314,8 +308,6 @@ acpi_sbs_smbus_write_word(struct acpi_ec_smbus *smbus, int addr, int func, int result = 0; int i; - ACPI_FUNCTION_TRACE("acpi_sbs_smbus_write_word"); - if (err_handler == NULL) { err_handler = acpi_battery_smbus_err_handler; } @@ -339,7 +331,7 @@ acpi_sbs_smbus_write_word(struct acpi_ec_smbus *smbus, int addr, int func, } } - return_VALUE(result); + return result; } /* -------------------------------------------------------------------------- @@ -355,8 +347,6 @@ static int acpi_sbs_generate_event(struct acpi_device *device, char class_saved[20]; int result = 0; - ACPI_FUNCTION_TRACE("acpi_sbs_generate_event"); - strcpy(bid_saved, acpi_device_bid(device)); strcpy(class_saved, acpi_device_class(device)); @@ -368,7 +358,7 @@ static int acpi_sbs_generate_event(struct acpi_device *device, strcpy(acpi_device_bid(device), bid_saved); strcpy(acpi_device_class(device), class_saved); - return_VALUE(result); + return result; } static int acpi_battery_get_present(struct acpi_battery *battery) @@ -377,8 +367,6 @@ static int acpi_battery_get_present(struct acpi_battery *battery) int result = 0; int is_present = 0; - ACPI_FUNCTION_TRACE("acpi_battery_get_present"); - result = acpi_sbs_smbus_read_word(battery->sbs->smbus, ACPI_SBSM_SMBUS_ADDR, 0x01, &state, NULL); @@ -391,7 +379,7 @@ static int acpi_battery_get_present(struct acpi_battery *battery) } battery->battery_present = is_present; - return_VALUE(result); + return result; } static int acpi_battery_is_present(struct acpi_battery *battery) @@ -411,8 +399,6 @@ static int acpi_battery_select(struct acpi_battery *battery) s16 state; int foo; - ACPI_FUNCTION_TRACE("acpi_battery_select"); - if (battery->sbs->sbsm_present) { /* Take special care not to knobble other nibbles of @@ -440,7 +426,7 @@ static int acpi_battery_select(struct acpi_battery *battery) } end: - return_VALUE(result); + return result; } static int acpi_sbsm_get_info(struct acpi_sbs *sbs) @@ -449,8 +435,6 @@ static int acpi_sbsm_get_info(struct acpi_sbs *sbs) int result = 0; s16 battery_system_info; - ACPI_FUNCTION_TRACE("acpi_sbsm_get_info"); - result = acpi_sbs_smbus_read_word(smbus, ACPI_SBSM_SMBUS_ADDR, 0x04, &battery_system_info, NULL); if (result) { @@ -463,7 +447,7 @@ static int acpi_sbsm_get_info(struct acpi_sbs *sbs) end: - return_VALUE(result); + return result; } static int acpi_battery_get_info(struct acpi_battery *battery) @@ -473,8 +457,6 @@ static int acpi_battery_get_info(struct acpi_battery *battery) s16 battery_mode; s16 specification_info; - ACPI_FUNCTION_TRACE("acpi_battery_get_info"); - result = acpi_sbs_smbus_read_word(smbus, ACPI_SB_SMBUS_ADDR, 0x03, &battery_mode, &acpi_battery_smbus_err_handler); @@ -583,12 +565,11 @@ static int acpi_battery_get_info(struct acpi_battery *battery) } end: - return_VALUE(result); + return result; } static void acpi_update_delay(struct acpi_sbs *sbs) { - ACPI_FUNCTION_TRACE("acpi_update_delay"); if (sbs->zombie) { return; } @@ -602,8 +583,6 @@ static int acpi_battery_get_state(struct acpi_battery *battery) struct acpi_ec_smbus *smbus = battery->sbs->smbus; int result = 0; - ACPI_FUNCTION_TRACE("acpi_battery_get_state"); - acpi_update_delay(battery->sbs); result = acpi_sbs_smbus_read_word(smbus, ACPI_SB_SMBUS_ADDR, 0x09, &battery->state.voltage, @@ -667,7 +646,7 @@ static int acpi_battery_get_state(struct acpi_battery *battery) acpi_update_delay(battery->sbs); end: - return_VALUE(result); + return result; } static int acpi_battery_get_alarm(struct acpi_battery *battery) @@ -675,8 +654,6 @@ static int acpi_battery_get_alarm(struct acpi_battery *battery) struct acpi_ec_smbus *smbus = battery->sbs->smbus; int result = 0; - ACPI_FUNCTION_TRACE("acpi_battery_get_alarm"); - result = acpi_sbs_smbus_read_word(smbus, ACPI_SB_SMBUS_ADDR, 0x01, &battery->alarm.remaining_capacity, &acpi_battery_smbus_err_handler); @@ -690,7 +667,7 @@ static int acpi_battery_get_alarm(struct acpi_battery *battery) end: - return_VALUE(result); + return result; } static int acpi_battery_set_alarm(struct acpi_battery *battery, @@ -701,8 +678,6 @@ static int acpi_battery_set_alarm(struct acpi_battery *battery, s16 battery_mode; int foo; - ACPI_FUNCTION_TRACE("acpi_battery_set_alarm"); - result = acpi_battery_select(battery); if (result) { ACPI_DEBUG_PRINT((ACPI_DB_ERROR, @@ -746,7 +721,7 @@ static int acpi_battery_set_alarm(struct acpi_battery *battery, end: - return_VALUE(result); + return result; } static int acpi_battery_set_mode(struct acpi_battery *battery) @@ -754,8 +729,6 @@ static int acpi_battery_set_mode(struct acpi_battery *battery) int result = 0; s16 battery_mode; - ACPI_FUNCTION_TRACE("acpi_battery_set_mode"); - if (capacity_mode == DEF_CAPACITY_UNIT) { goto end; } @@ -793,15 +766,13 @@ static int acpi_battery_set_mode(struct acpi_battery *battery) } end: - return_VALUE(result); + return result; } static int acpi_battery_init(struct acpi_battery *battery) { int result = 0; - ACPI_FUNCTION_TRACE("acpi_battery_init"); - result = acpi_battery_select(battery); if (result) { ACPI_DEBUG_PRINT((ACPI_DB_ERROR, @@ -838,7 +809,7 @@ static int acpi_battery_init(struct acpi_battery *battery) } end: - return_VALUE(result); + return result; } static int acpi_ac_get_present(struct acpi_sbs *sbs) @@ -847,8 +818,6 @@ static int acpi_ac_get_present(struct acpi_sbs *sbs) int result = 0; s16 charger_status; - ACPI_FUNCTION_TRACE("acpi_ac_get_present"); - result = acpi_sbs_smbus_read_word(smbus, ACPI_SBC_SMBUS_ADDR, 0x13, &charger_status, NULL); @@ -862,7 +831,7 @@ static int acpi_ac_get_present(struct acpi_sbs *sbs) end: - return_VALUE(result); + return result; } /* -------------------------------------------------------------------------- @@ -881,14 +850,12 @@ acpi_sbs_generic_add_fs(struct proc_dir_entry **dir, { struct proc_dir_entry *entry = NULL; - ACPI_FUNCTION_TRACE("acpi_sbs_generic_add_fs"); - if (!*dir) { *dir = proc_mkdir(dir_name, parent_dir); if (!*dir) { ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "proc_mkdir() failed\n")); - return_VALUE(-ENODEV); + return -ENODEV; } (*dir)->owner = THIS_MODULE; } @@ -932,14 +899,13 @@ acpi_sbs_generic_add_fs(struct proc_dir_entry **dir, } } - return_VALUE(0); + return 0; } static void acpi_sbs_generic_remove_fs(struct proc_dir_entry **dir, struct proc_dir_entry *parent_dir) { - ACPI_FUNCTION_TRACE("acpi_sbs_generic_remove_fs"); if (*dir) { remove_proc_entry(ACPI_SBS_FILE_INFO, *dir); @@ -961,10 +927,8 @@ static int acpi_battery_read_info(struct seq_file *seq, void *offset) int cscale; int result = 0; - ACPI_FUNCTION_TRACE("acpi_battery_read_info"); - if (battery->sbs->zombie) { - return_VALUE(-ENODEV); + return -ENODEV; } down(&sbs_sem); @@ -1023,7 +987,7 @@ static int acpi_battery_read_info(struct seq_file *seq, void *offset) up(&sbs_sem); - return_VALUE(result); + return result; } static int acpi_battery_info_open_fs(struct inode *inode, struct file *file) @@ -1038,10 +1002,8 @@ static int acpi_battery_read_state(struct seq_file *seq, void *offset) int cscale; int foo; - ACPI_FUNCTION_TRACE("acpi_battery_read_state"); - if (battery->sbs->zombie) { - return_VALUE(-ENODEV); + return -ENODEV; } down(&sbs_sem); @@ -1104,7 +1066,7 @@ static int acpi_battery_read_state(struct seq_file *seq, void *offset) up(&sbs_sem); - return_VALUE(result); + return result; } static int acpi_battery_state_open_fs(struct inode *inode, struct file *file) @@ -1118,10 +1080,8 @@ static int acpi_battery_read_alarm(struct seq_file *seq, void *offset) int result = 0; int cscale; - ACPI_FUNCTION_TRACE("acpi_battery_read_alarm"); - if (battery->sbs->zombie) { - return_VALUE(-ENODEV); + return -ENODEV; } down(&sbs_sem); @@ -1158,7 +1118,7 @@ static int acpi_battery_read_alarm(struct seq_file *seq, void *offset) up(&sbs_sem); - return_VALUE(result); + return result; } static ssize_t @@ -1170,10 +1130,8 @@ acpi_battery_write_alarm(struct file *file, const char __user * buffer, char alarm_string[12] = { '\0' }; int result, old_alarm, new_alarm; - ACPI_FUNCTION_TRACE("acpi_battery_write_alarm"); - if (battery->sbs->zombie) { - return_VALUE(-ENODEV); + return -ENODEV; } down(&sbs_sem); @@ -1217,9 +1175,9 @@ acpi_battery_write_alarm(struct file *file, const char __user * buffer, up(&sbs_sem); if (result) { - return_VALUE(result); + return result; } else { - return_VALUE(count); + return count; } } @@ -1262,10 +1220,8 @@ static int acpi_ac_read_state(struct seq_file *seq, void *offset) struct acpi_sbs *sbs = (struct acpi_sbs *)seq->private; int result; - ACPI_FUNCTION_TRACE("acpi_ac_read_state"); - if (sbs->zombie) { - return_VALUE(-ENODEV); + return -ENODEV; } down(&sbs_sem); @@ -1283,7 +1239,7 @@ static int acpi_ac_read_state(struct seq_file *seq, void *offset) up(&sbs_sem); - return_VALUE(0); + return 0; } static int acpi_ac_state_open_fs(struct inode *inode, struct file *file) @@ -1312,8 +1268,6 @@ static int acpi_battery_add(struct acpi_sbs *sbs, int id) char dir_name[32]; struct acpi_battery *battery; - ACPI_FUNCTION_TRACE("acpi_battery_add"); - battery = &sbs->battery[id]; battery->alive = 0; @@ -1364,12 +1318,11 @@ static int acpi_battery_add(struct acpi_sbs *sbs, int id) battery->alive = 1; end: - return_VALUE(result); + return result; } static void acpi_battery_remove(struct acpi_sbs *sbs, int id) { - ACPI_FUNCTION_TRACE("acpi_battery_remove"); if (sbs->battery[id].battery_entry) { acpi_sbs_generic_remove_fs(&(sbs->battery[id].battery_entry), @@ -1381,8 +1334,6 @@ static int acpi_ac_add(struct acpi_sbs *sbs) { int result; - ACPI_FUNCTION_TRACE("acpi_ac_add"); - result = acpi_ac_get_present(sbs); if (result) { ACPI_DEBUG_PRINT((ACPI_DB_ERROR, @@ -1402,12 +1353,11 @@ static int acpi_ac_add(struct acpi_sbs *sbs) end: - return_VALUE(result); + return result; } static void acpi_ac_remove(struct acpi_sbs *sbs) { - ACPI_FUNCTION_TRACE("acpi_ac_remove"); if (sbs->ac_entry) { acpi_sbs_generic_remove_fs(&sbs->ac_entry, acpi_ac_dir); @@ -1416,7 +1366,6 @@ static void acpi_ac_remove(struct acpi_sbs *sbs) static void acpi_sbs_update_queue_run(unsigned long data) { - ACPI_FUNCTION_TRACE("acpi_sbs_update_queue_run"); acpi_os_execute(OSL_GPE_HANDLER, acpi_sbs_update_queue, (void *)data); } @@ -1433,8 +1382,6 @@ static int acpi_sbs_update_run(struct acpi_sbs *sbs, int data_type) int do_battery_init, do_ac_init; s16 old_remaining_capacity; - ACPI_FUNCTION_TRACE("acpi_sbs_update_run"); - if (sbs->zombie) { goto end; } @@ -1584,7 +1531,7 @@ static int acpi_sbs_update_run(struct acpi_sbs *sbs, int data_type) } end: - return_VALUE(result); + return result; } static void acpi_sbs_update_queue(void *data) @@ -1593,8 +1540,6 @@ static void acpi_sbs_update_queue(void *data) unsigned long delay = -1; int result; - ACPI_FUNCTION_TRACE("acpi_sbs_update_queue"); - if (sbs->zombie) { goto end; } @@ -1631,12 +1576,10 @@ static int acpi_sbs_add(struct acpi_device *device) int id, cnt; acpi_status status = AE_OK; - ACPI_FUNCTION_TRACE("acpi_sbs_add"); - sbs = kmalloc(sizeof(struct acpi_sbs), GFP_KERNEL); if (!sbs) { ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "kmalloc() failed\n")); - return_VALUE(-ENOMEM); + return -ENOMEM; } memset(sbs, 0, sizeof(struct acpi_sbs)); @@ -1737,7 +1680,7 @@ static int acpi_sbs_add(struct acpi_device *device) } } - return_VALUE(result); + return result; } int acpi_sbs_remove(struct acpi_device *device, int type) @@ -1745,10 +1688,8 @@ int acpi_sbs_remove(struct acpi_device *device, int type) struct acpi_sbs *sbs = (struct acpi_sbs *)acpi_driver_data(device); int id; - ACPI_FUNCTION_TRACE("acpi_sbs_remove"); - if (!device || !sbs) { - return_VALUE(-EINVAL); + return -EINVAL; } sbs->zombie = 1; @@ -1766,15 +1707,13 @@ int acpi_sbs_remove(struct acpi_device *device, int type) kfree(sbs); - return_VALUE(0); + return 0; } static int __init acpi_sbs_init(void) { int result = 0; - ACPI_FUNCTION_TRACE("acpi_sbs_init"); - init_MUTEX(&sbs_sem); if (capacity_mode != DEF_CAPACITY_UNIT @@ -1783,36 +1722,35 @@ static int __init acpi_sbs_init(void) ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "acpi_sbs_init: " "invalid capacity_mode = %d\n", capacity_mode)); - return_VALUE(-EINVAL); + return -EINVAL; } acpi_ac_dir = acpi_lock_ac_dir(); if (!acpi_ac_dir) { ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "acpi_lock_ac_dir() failed\n")); - return_VALUE(-ENODEV); + return -ENODEV; } acpi_battery_dir = acpi_lock_battery_dir(); if (!acpi_battery_dir) { ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "acpi_lock_battery_dir() failed\n")); - return_VALUE(-ENODEV); + return -ENODEV; } result = acpi_bus_register_driver(&acpi_sbs_driver); if (result < 0) { ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "acpi_bus_register_driver() failed\n")); - return_VALUE(-ENODEV); + return -ENODEV; } - return_VALUE(0); + return 0; } static void __exit acpi_sbs_exit(void) { - ACPI_FUNCTION_TRACE("acpi_sbs_exit"); acpi_bus_unregister_driver(&acpi_sbs_driver); @@ -1821,7 +1759,7 @@ static void __exit acpi_sbs_exit(void) acpi_unlock_battery_dir(acpi_battery_dir); acpi_battery_dir = NULL; - return_VOID; + return; } module_init(acpi_sbs_init); -- cgit v1.2.3