Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
f685648e
Commit
f685648e
authored
May 10, 2007
by
Len Brown
Browse files
Options
Browse Files
Download
Plain Diff
Pull misc-for-upstream into release branch
parents
f1420515
00eb43a1
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
31 additions
and
23 deletions
+31
-23
drivers/acpi/ec.c
drivers/acpi/ec.c
+23
-16
drivers/misc/msi-laptop.c
drivers/misc/msi-laptop.c
+6
-6
include/linux/acpi.h
include/linux/acpi.h
+2
-1
No files found.
drivers/acpi/ec.c
View file @
f685648e
...
...
@@ -147,9 +147,10 @@ static inline int acpi_ec_check_status(struct acpi_ec *ec, enum ec_event event,
return
0
;
}
static
int
acpi_ec_wait
(
struct
acpi_ec
*
ec
,
enum
ec_event
event
,
unsigned
count
)
static
int
acpi_ec_wait
(
struct
acpi_ec
*
ec
,
enum
ec_event
event
,
unsigned
count
,
int
force_poll
)
{
if
(
acpi_ec_mode
==
EC_POLL
)
{
if
(
unlikely
(
force_poll
)
||
acpi_ec_mode
==
EC_POLL
)
{
unsigned
long
delay
=
jiffies
+
msecs_to_jiffies
(
ACPI_EC_DELAY
);
while
(
time_before
(
jiffies
,
delay
))
{
if
(
acpi_ec_check_status
(
ec
,
event
,
0
))
...
...
@@ -173,14 +174,15 @@ static int acpi_ec_wait(struct acpi_ec *ec, enum ec_event event, unsigned count)
static
int
acpi_ec_transaction_unlocked
(
struct
acpi_ec
*
ec
,
u8
command
,
const
u8
*
wdata
,
unsigned
wdata_len
,
u8
*
rdata
,
unsigned
rdata_len
)
u8
*
rdata
,
unsigned
rdata_len
,
int
force_poll
)
{
int
result
=
0
;
unsigned
count
=
atomic_read
(
&
ec
->
event_count
);
acpi_ec_write_cmd
(
ec
,
command
);
for
(;
wdata_len
>
0
;
--
wdata_len
)
{
result
=
acpi_ec_wait
(
ec
,
ACPI_EC_EVENT_IBF_0
,
count
);
result
=
acpi_ec_wait
(
ec
,
ACPI_EC_EVENT_IBF_0
,
count
,
force_poll
);
if
(
result
)
{
printk
(
KERN_ERR
PREFIX
"write_cmd timeout, command = %d
\n
"
,
command
);
...
...
@@ -191,7 +193,7 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec, u8 command,
}
if
(
!
rdata_len
)
{
result
=
acpi_ec_wait
(
ec
,
ACPI_EC_EVENT_IBF_0
,
count
);
result
=
acpi_ec_wait
(
ec
,
ACPI_EC_EVENT_IBF_0
,
count
,
force_poll
);
if
(
result
)
{
printk
(
KERN_ERR
PREFIX
"finish-write timeout, command = %d
\n
"
,
command
);
...
...
@@ -202,7 +204,7 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec, u8 command,
}
for
(;
rdata_len
>
0
;
--
rdata_len
)
{
result
=
acpi_ec_wait
(
ec
,
ACPI_EC_EVENT_OBF_1
,
count
);
result
=
acpi_ec_wait
(
ec
,
ACPI_EC_EVENT_OBF_1
,
count
,
force_poll
);
if
(
result
)
{
printk
(
KERN_ERR
PREFIX
"read timeout, command = %d
\n
"
,
command
);
...
...
@@ -217,7 +219,8 @@ static int acpi_ec_transaction_unlocked(struct acpi_ec *ec, u8 command,
static
int
acpi_ec_transaction
(
struct
acpi_ec
*
ec
,
u8
command
,
const
u8
*
wdata
,
unsigned
wdata_len
,
u8
*
rdata
,
unsigned
rdata_len
)
u8
*
rdata
,
unsigned
rdata_len
,
int
force_poll
)
{
int
status
;
u32
glk
;
...
...
@@ -240,7 +243,7 @@ static int acpi_ec_transaction(struct acpi_ec *ec, u8 command,
/* Make sure GPE is enabled before doing transaction */
acpi_enable_gpe
(
NULL
,
ec
->
gpe
,
ACPI_NOT_ISR
);
status
=
acpi_ec_wait
(
ec
,
ACPI_EC_EVENT_IBF_0
,
0
);
status
=
acpi_ec_wait
(
ec
,
ACPI_EC_EVENT_IBF_0
,
0
,
0
);
if
(
status
)
{
printk
(
KERN_DEBUG
PREFIX
"input buffer is not empty, aborting transaction
\n
"
);
...
...
@@ -249,7 +252,8 @@ static int acpi_ec_transaction(struct acpi_ec *ec, u8 command,
status
=
acpi_ec_transaction_unlocked
(
ec
,
command
,
wdata
,
wdata_len
,
rdata
,
rdata_len
);
rdata
,
rdata_len
,
force_poll
);
end:
...
...
@@ -267,12 +271,12 @@ static int acpi_ec_transaction(struct acpi_ec *ec, u8 command,
int
acpi_ec_burst_enable
(
struct
acpi_ec
*
ec
)
{
u8
d
;
return
acpi_ec_transaction
(
ec
,
ACPI_EC_BURST_ENABLE
,
NULL
,
0
,
&
d
,
1
);
return
acpi_ec_transaction
(
ec
,
ACPI_EC_BURST_ENABLE
,
NULL
,
0
,
&
d
,
1
,
0
);
}
int
acpi_ec_burst_disable
(
struct
acpi_ec
*
ec
)
{
return
acpi_ec_transaction
(
ec
,
ACPI_EC_BURST_DISABLE
,
NULL
,
0
,
NULL
,
0
);
return
acpi_ec_transaction
(
ec
,
ACPI_EC_BURST_DISABLE
,
NULL
,
0
,
NULL
,
0
,
0
);
}
static
int
acpi_ec_read
(
struct
acpi_ec
*
ec
,
u8
address
,
u8
*
data
)
...
...
@@ -281,7 +285,7 @@ static int acpi_ec_read(struct acpi_ec *ec, u8 address, u8 * data)
u8
d
;
result
=
acpi_ec_transaction
(
ec
,
ACPI_EC_COMMAND_READ
,
&
address
,
1
,
&
d
,
1
);
&
address
,
1
,
&
d
,
1
,
0
);
*
data
=
d
;
return
result
;
}
...
...
@@ -290,7 +294,7 @@ static int acpi_ec_write(struct acpi_ec *ec, u8 address, u8 data)
{
u8
wdata
[
2
]
=
{
address
,
data
};
return
acpi_ec_transaction
(
ec
,
ACPI_EC_COMMAND_WRITE
,
wdata
,
2
,
NULL
,
0
);
wdata
,
2
,
NULL
,
0
,
0
);
}
/*
...
...
@@ -349,13 +353,15 @@ EXPORT_SYMBOL(ec_write);
int
ec_transaction
(
u8
command
,
const
u8
*
wdata
,
unsigned
wdata_len
,
u8
*
rdata
,
unsigned
rdata_len
)
u8
*
rdata
,
unsigned
rdata_len
,
int
force_poll
)
{
if
(
!
first_ec
)
return
-
ENODEV
;
return
acpi_ec_transaction
(
first_ec
,
command
,
wdata
,
wdata_len
,
rdata
,
rdata_len
);
wdata_len
,
rdata
,
rdata_len
,
force_poll
);
}
EXPORT_SYMBOL
(
ec_transaction
);
...
...
@@ -374,7 +380,7 @@ static int acpi_ec_query(struct acpi_ec *ec, u8 * data)
* bit to be cleared (and thus clearing the interrupt source).
*/
result
=
acpi_ec_transaction
(
ec
,
ACPI_EC_COMMAND_QUERY
,
NULL
,
0
,
&
d
,
1
);
result
=
acpi_ec_transaction
(
ec
,
ACPI_EC_COMMAND_QUERY
,
NULL
,
0
,
&
d
,
1
,
0
);
if
(
result
)
return
result
;
...
...
@@ -410,6 +416,7 @@ static u32 acpi_ec_gpe_handler(void *data)
acpi_status
status
=
AE_OK
;
u8
value
;
struct
acpi_ec
*
ec
=
data
;
atomic_inc
(
&
ec
->
event_count
);
if
(
acpi_ec_mode
==
EC_INTR
)
{
...
...
drivers/misc/msi-laptop.c
View file @
f685648e
...
...
@@ -85,7 +85,7 @@ static int set_lcd_level(int level)
buf
[
0
]
=
0x80
;
buf
[
1
]
=
(
u8
)
(
level
*
31
);
return
ec_transaction
(
MSI_EC_COMMAND_LCD_LEVEL
,
buf
,
sizeof
(
buf
),
NULL
,
0
);
return
ec_transaction
(
MSI_EC_COMMAND_LCD_LEVEL
,
buf
,
sizeof
(
buf
),
NULL
,
0
,
1
);
}
static
int
get_lcd_level
(
void
)
...
...
@@ -93,7 +93,7 @@ static int get_lcd_level(void)
u8
wdata
=
0
,
rdata
;
int
result
;
result
=
ec_transaction
(
MSI_EC_COMMAND_LCD_LEVEL
,
&
wdata
,
1
,
&
rdata
,
1
);
result
=
ec_transaction
(
MSI_EC_COMMAND_LCD_LEVEL
,
&
wdata
,
1
,
&
rdata
,
1
,
1
);
if
(
result
<
0
)
return
result
;
...
...
@@ -105,7 +105,7 @@ static int get_auto_brightness(void)
u8
wdata
=
4
,
rdata
;
int
result
;
result
=
ec_transaction
(
MSI_EC_COMMAND_LCD_LEVEL
,
&
wdata
,
1
,
&
rdata
,
1
);
result
=
ec_transaction
(
MSI_EC_COMMAND_LCD_LEVEL
,
&
wdata
,
1
,
&
rdata
,
1
,
1
);
if
(
result
<
0
)
return
result
;
...
...
@@ -119,14 +119,14 @@ static int set_auto_brightness(int enable)
wdata
[
0
]
=
4
;
result
=
ec_transaction
(
MSI_EC_COMMAND_LCD_LEVEL
,
wdata
,
1
,
&
rdata
,
1
);
result
=
ec_transaction
(
MSI_EC_COMMAND_LCD_LEVEL
,
wdata
,
1
,
&
rdata
,
1
,
1
);
if
(
result
<
0
)
return
result
;
wdata
[
0
]
=
0x84
;
wdata
[
1
]
=
(
rdata
&
0xF7
)
|
(
enable
?
8
:
0
);
return
ec_transaction
(
MSI_EC_COMMAND_LCD_LEVEL
,
wdata
,
2
,
NULL
,
0
);
return
ec_transaction
(
MSI_EC_COMMAND_LCD_LEVEL
,
wdata
,
2
,
NULL
,
0
,
1
);
}
static
int
get_wireless_state
(
int
*
wlan
,
int
*
bluetooth
)
...
...
@@ -134,7 +134,7 @@ static int get_wireless_state(int *wlan, int *bluetooth)
u8
wdata
=
0
,
rdata
;
int
result
;
result
=
ec_transaction
(
MSI_EC_COMMAND_WIRELESS
,
&
wdata
,
1
,
&
rdata
,
1
);
result
=
ec_transaction
(
MSI_EC_COMMAND_WIRELESS
,
&
wdata
,
1
,
&
rdata
,
1
,
1
);
if
(
result
<
0
)
return
-
1
;
...
...
include/linux/acpi.h
View file @
f685648e
...
...
@@ -182,7 +182,8 @@ extern int ec_read(u8 addr, u8 *val);
extern
int
ec_write
(
u8
addr
,
u8
val
);
extern
int
ec_transaction
(
u8
command
,
const
u8
*
wdata
,
unsigned
wdata_len
,
u8
*
rdata
,
unsigned
rdata_len
);
u8
*
rdata
,
unsigned
rdata_len
,
int
force_poll
);
#endif
/*CONFIG_ACPI_EC*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment