Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
6e301393
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
163
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
6e301393
编写于
12月 14, 2007
作者:
L
Len Brown
浏览文件
操作
浏览文件
下载
差异文件
Pull bugzilla-9362 into release branch
上级
5889ba0a
5a21e4fe
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
31 addition
and
19 deletion
+31
-19
drivers/acpi/sbs.c
drivers/acpi/sbs.c
+12
-15
drivers/acpi/sbshc.c
drivers/acpi/sbshc.c
+13
-4
drivers/acpi/sbshc.h
drivers/acpi/sbshc.h
+6
-0
未找到文件。
drivers/acpi/sbs.c
浏览文件 @
6e301393
...
...
@@ -54,12 +54,6 @@
#define ACPI_BATTERY_DIR_NAME "BAT%i"
#define ACPI_AC_DIR_NAME "AC0"
enum
acpi_sbs_device_addr
{
ACPI_SBS_CHARGER
=
0x9
,
ACPI_SBS_MANAGER
=
0xa
,
ACPI_SBS_BATTERY
=
0xb
,
};
#define ACPI_SBS_NOTIFY_STATUS 0x80
#define ACPI_SBS_NOTIFY_INFO 0x81
...
...
@@ -539,7 +533,7 @@ static struct proc_dir_entry *acpi_battery_dir = NULL;
static
inline
char
*
acpi_battery_units
(
struct
acpi_battery
*
battery
)
{
return
acpi_battery_mode
(
battery
)
?
" mW
h"
:
" mAh
"
;
return
acpi_battery_mode
(
battery
)
?
" mW
"
:
" mA
"
;
}
...
...
@@ -556,10 +550,10 @@ static int acpi_battery_read_info(struct seq_file *seq, void *offset)
if
(
!
battery
->
present
)
goto
end
;
seq_printf
(
seq
,
"design capacity: %i%s
\n
"
,
seq_printf
(
seq
,
"design capacity: %i%s
h
\n
"
,
battery
->
design_capacity
*
acpi_battery_scale
(
battery
),
acpi_battery_units
(
battery
));
seq_printf
(
seq
,
"last full capacity: %i%s
\n
"
,
seq_printf
(
seq
,
"last full capacity: %i%s
h
\n
"
,
battery
->
full_charge_capacity
*
acpi_battery_scale
(
battery
),
acpi_battery_units
(
battery
));
seq_printf
(
seq
,
"battery technology: rechargeable
\n
"
);
...
...
@@ -590,7 +584,7 @@ static int acpi_battery_read_state(struct seq_file *seq, void *offset)
{
struct
acpi_battery
*
battery
=
seq
->
private
;
struct
acpi_sbs
*
sbs
=
battery
->
sbs
;
int
r
esult
=
0
;
int
r
ate
;
mutex_lock
(
&
sbs
->
lock
);
seq_printf
(
seq
,
"present: %s
\n
"
,
...
...
@@ -604,9 +598,12 @@ static int acpi_battery_read_state(struct seq_file *seq, void *offset)
seq_printf
(
seq
,
"charging state: %s
\n
"
,
(
battery
->
current_now
<
0
)
?
"discharging"
:
((
battery
->
current_now
>
0
)
?
"charging"
:
"charged"
));
seq_printf
(
seq
,
"present rate: %d mA
\n
"
,
abs
(
battery
->
current_now
)
*
acpi_battery_ipscale
(
battery
));
seq_printf
(
seq
,
"remaining capacity: %i%s
\n
"
,
rate
=
abs
(
battery
->
current_now
)
*
acpi_battery_ipscale
(
battery
);
rate
*=
(
acpi_battery_mode
(
battery
))
?
(
battery
->
voltage_now
*
acpi_battery_vscale
(
battery
)
/
1000
)
:
1
;
seq_printf
(
seq
,
"present rate: %d%s
\n
"
,
rate
,
acpi_battery_units
(
battery
));
seq_printf
(
seq
,
"remaining capacity: %i%sh
\n
"
,
battery
->
capacity_now
*
acpi_battery_scale
(
battery
),
acpi_battery_units
(
battery
));
seq_printf
(
seq
,
"present voltage: %i mV
\n
"
,
...
...
@@ -614,7 +611,7 @@ static int acpi_battery_read_state(struct seq_file *seq, void *offset)
end:
mutex_unlock
(
&
sbs
->
lock
);
return
result
;
return
0
;
}
static
int
acpi_battery_state_open_fs
(
struct
inode
*
inode
,
struct
file
*
file
)
...
...
@@ -638,7 +635,7 @@ static int acpi_battery_read_alarm(struct seq_file *seq, void *offset)
acpi_battery_get_alarm
(
battery
);
seq_printf
(
seq
,
"alarm: "
);
if
(
battery
->
alarm_capacity
)
seq_printf
(
seq
,
"%i%s
\n
"
,
seq_printf
(
seq
,
"%i%s
h
\n
"
,
battery
->
alarm_capacity
*
acpi_battery_scale
(
battery
),
acpi_battery_units
(
battery
));
...
...
drivers/acpi/sbshc.c
浏览文件 @
6e301393
...
...
@@ -202,10 +202,9 @@ int acpi_smbus_unregister_callback(struct acpi_smb_hc *hc)
EXPORT_SYMBOL_GPL
(
acpi_smbus_unregister_callback
);
static
void
acpi_smbus_callback
(
void
*
context
)
static
inline
void
acpi_smbus_callback
(
void
*
context
)
{
struct
acpi_smb_hc
*
hc
=
context
;
if
(
hc
->
callback
)
hc
->
callback
(
hc
->
context
);
}
...
...
@@ -214,6 +213,7 @@ static int smbus_alarm(void *context)
{
struct
acpi_smb_hc
*
hc
=
context
;
union
acpi_smb_status
status
;
u8
address
;
if
(
smb_hc_read
(
hc
,
ACPI_SMB_STATUS
,
&
status
.
raw
))
return
0
;
/* Check if it is only a completion notify */
...
...
@@ -222,9 +222,18 @@ static int smbus_alarm(void *context)
if
(
!
status
.
fields
.
alarm
)
return
0
;
mutex_lock
(
&
hc
->
lock
);
smb_hc_read
(
hc
,
ACPI_SMB_ALARM_ADDRESS
,
&
address
);
status
.
fields
.
alarm
=
0
;
smb_hc_write
(
hc
,
ACPI_SMB_STATUS
,
status
.
raw
);
if
(
hc
->
callback
)
acpi_os_execute
(
OSL_GPE_HANDLER
,
acpi_smbus_callback
,
hc
);
/* We are only interested in events coming from known devices */
switch
(
address
>>
1
)
{
case
ACPI_SBS_CHARGER
:
case
ACPI_SBS_MANAGER
:
case
ACPI_SBS_BATTERY
:
acpi_os_execute
(
OSL_GPE_HANDLER
,
acpi_smbus_callback
,
hc
);
default:
;
}
mutex_unlock
(
&
hc
->
lock
);
return
0
;
}
...
...
drivers/acpi/sbshc.h
浏览文件 @
6e301393
...
...
@@ -16,6 +16,12 @@ enum acpi_smb_protocol {
static
const
u8
SMBUS_PEC
=
0x80
;
enum
acpi_sbs_device_addr
{
ACPI_SBS_CHARGER
=
0x9
,
ACPI_SBS_MANAGER
=
0xa
,
ACPI_SBS_BATTERY
=
0xb
,
};
typedef
void
(
*
smbus_alarm_callback
)(
void
*
context
);
extern
int
acpi_smbus_read
(
struct
acpi_smb_hc
*
hc
,
u8
protocol
,
u8
address
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录