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
69cd291c
Commit
69cd291c
authored
Jun 15, 2006
by
Len Brown
Browse files
Options
Browse Files
Download
Plain Diff
Pull acpi_bus_register_driver into release branch
Conflicts: drivers/acpi/asus_acpi.c drivers/acpi/scan.c
parents
35a5d9ed
06ea8e08
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
32 deletions
+32
-32
drivers/acpi/asus_acpi.c
drivers/acpi/asus_acpi.c
+17
-1
drivers/acpi/scan.c
drivers/acpi/scan.c
+9
-25
drivers/char/sonypi.c
drivers/char/sonypi.c
+5
-5
include/acpi/acpi_bus.h
include/acpi/acpi_bus.h
+1
-1
No files found.
drivers/acpi/asus_acpi.c
View file @
69cd291c
...
...
@@ -1119,6 +1119,8 @@ static int asus_hotk_check(void)
return
result
;
}
static
int
asus_hotk_found
;
static
int
asus_hotk_add
(
struct
acpi_device
*
device
)
{
acpi_status
status
=
AE_OK
;
...
...
@@ -1180,6 +1182,8 @@ static int asus_hotk_add(struct acpi_device *device)
}
}
asus_hotk_found
=
1
;
end:
if
(
result
)
{
kfree
(
hotk
);
...
...
@@ -1226,7 +1230,19 @@ static int __init asus_acpi_init(void)
asus_proc_dir
->
owner
=
THIS_MODULE
;
result
=
acpi_bus_register_driver
(
&
asus_hotk_driver
);
if
(
result
<
1
)
{
if
(
result
<
0
)
{
remove_proc_entry
(
PROC_ASUS
,
acpi_root_dir
);
return
-
ENODEV
;
}
/*
* This is a bit of a kludge. We only want this module loaded
* for ASUS systems, but there's currently no way to probe the
* ACPI namespace for ASUS HIDs. So we just return failure if
* we didn't find one, which will cause the module to be
* unloaded.
*/
if
(
!
asus_hotk_found
)
{
acpi_bus_unregister_driver
(
&
asus_hotk_driver
);
remove_proc_entry
(
PROC_ASUS
,
acpi_root_dir
);
return
-
ENODEV
;
...
...
drivers/acpi/scan.c
View file @
69cd291c
...
...
@@ -142,7 +142,7 @@ static void acpi_device_register(struct acpi_device *device,
create_sysfs_device_files
(
device
);
}
static
int
acpi_device_unregister
(
struct
acpi_device
*
device
,
int
type
)
static
void
acpi_device_unregister
(
struct
acpi_device
*
device
,
int
type
)
{
spin_lock
(
&
acpi_device_lock
);
if
(
device
->
parent
)
{
...
...
@@ -158,7 +158,6 @@ static int acpi_device_unregister(struct acpi_device *device, int type)
acpi_detach_data
(
device
->
handle
,
acpi_bus_data_handler
);
remove_sysfs_device_files
(
device
);
kobject_unregister
(
&
device
->
kobj
);
return
0
;
}
void
acpi_bus_data_handler
(
acpi_handle
handle
,
u32
function
,
void
*
context
)
...
...
@@ -537,10 +536,9 @@ static int acpi_start_single_object(struct acpi_device *device)
return_VALUE
(
result
);
}
static
int
acpi_driver_attach
(
struct
acpi_driver
*
drv
)
static
void
acpi_driver_attach
(
struct
acpi_driver
*
drv
)
{
struct
list_head
*
node
,
*
next
;
int
count
=
0
;
ACPI_FUNCTION_TRACE
(
"acpi_driver_attach"
);
...
...
@@ -557,7 +555,6 @@ static int acpi_driver_attach(struct acpi_driver *drv)
if
(
!
acpi_bus_driver_init
(
dev
,
drv
))
{
acpi_start_single_object
(
dev
);
atomic_inc
(
&
drv
->
references
);
count
++
;
ACPI_DEBUG_PRINT
((
ACPI_DB_INFO
,
"Found driver [%s] for device [%s]
\n
"
,
drv
->
name
,
dev
->
pnp
.
bus_id
));
...
...
@@ -566,10 +563,9 @@ static int acpi_driver_attach(struct acpi_driver *drv)
spin_lock
(
&
acpi_device_lock
);
}
spin_unlock
(
&
acpi_device_lock
);
return_VALUE
(
count
);
}
static
int
acpi_driver_detach
(
struct
acpi_driver
*
drv
)
static
void
acpi_driver_detach
(
struct
acpi_driver
*
drv
)
{
struct
list_head
*
node
,
*
next
;
...
...
@@ -591,7 +587,6 @@ static int acpi_driver_detach(struct acpi_driver *drv)
}
}
spin_unlock
(
&
acpi_device_lock
);
return_VALUE
(
0
);
}
/**
...
...
@@ -599,28 +594,22 @@ static int acpi_driver_detach(struct acpi_driver *drv)
* @driver: driver being registered
*
* Registers a driver with the ACPI bus. Searches the namespace for all
* devices that match the driver's criteria and binds. Returns the
* number of devices that were claimed by the driver, or a negative
* error status for failure.
* devices that match the driver's criteria and binds. Returns zero for
* success or a negative error status for failure.
*/
int
acpi_bus_register_driver
(
struct
acpi_driver
*
driver
)
{
int
count
;
ACPI_FUNCTION_TRACE
(
"acpi_bus_register_driver"
);
if
(
acpi_disabled
)
return_VALUE
(
-
ENODEV
);
if
(
!
driver
)
return_VALUE
(
-
EINVAL
);
spin_lock
(
&
acpi_device_lock
);
list_add_tail
(
&
driver
->
node
,
&
acpi_bus_drivers
);
spin_unlock
(
&
acpi_device_lock
);
count
=
acpi_driver_attach
(
driver
);
acpi_driver_attach
(
driver
);
return_VALUE
(
count
);
return_VALUE
(
0
);
}
EXPORT_SYMBOL
(
acpi_bus_register_driver
);
...
...
@@ -632,13 +621,8 @@ EXPORT_SYMBOL(acpi_bus_register_driver);
* Unregisters a driver with the ACPI bus. Searches the namespace for all
* devices that match the driver's criteria and unbinds.
*/
int
acpi_bus_unregister_driver
(
struct
acpi_driver
*
driver
)
void
acpi_bus_unregister_driver
(
struct
acpi_driver
*
driver
)
{
ACPI_FUNCTION_TRACE
(
"acpi_bus_unregister_driver"
);
if
(
!
driver
)
return_VALUE
(
-
EINVAL
);
acpi_driver_detach
(
driver
);
if
(
!
atomic_read
(
&
driver
->
references
))
{
...
...
@@ -646,7 +630,7 @@ int acpi_bus_unregister_driver(struct acpi_driver *driver)
list_del_init
(
&
driver
->
node
);
spin_unlock
(
&
acpi_device_lock
);
}
return
_VALUE
(
0
)
;
return
;
}
EXPORT_SYMBOL
(
acpi_bus_unregister_driver
);
...
...
drivers/char/sonypi.c
View file @
69cd291c
...
...
@@ -512,7 +512,7 @@ static struct sonypi_device {
#ifdef CONFIG_ACPI
static
struct
acpi_device
*
sonypi_acpi_device
;
static
int
acpi_
enabl
ed
;
static
int
acpi_
driver_register
ed
;
#endif
static
int
sonypi_ec_write
(
u8
addr
,
u8
value
)
...
...
@@ -869,7 +869,7 @@ static irqreturn_t sonypi_irq(int irq, void *dev_id, struct pt_regs *regs)
sonypi_report_input_event
(
event
);
#ifdef CONFIG_ACPI
if
(
acpi_enabled
)
if
(
sonypi_acpi_device
)
acpi_bus_generate_event
(
sonypi_acpi_device
,
1
,
event
);
#endif
...
...
@@ -1551,8 +1551,8 @@ static int __init sonypi_init(void)
goto
err_free_device
;
#ifdef CONFIG_ACPI
if
(
acpi_bus_register_driver
(
&
sonypi_acpi_driver
)
>
0
)
acpi_
enabl
ed
=
1
;
if
(
acpi_bus_register_driver
(
&
sonypi_acpi_driver
)
>
=
0
)
acpi_
driver_register
ed
=
1
;
#endif
return
0
;
...
...
@@ -1567,7 +1567,7 @@ static int __init sonypi_init(void)
static
void
__exit
sonypi_exit
(
void
)
{
#ifdef CONFIG_ACPI
if
(
acpi_
enabl
ed
)
if
(
acpi_
driver_register
ed
)
acpi_bus_unregister_driver
(
&
sonypi_acpi_driver
);
#endif
platform_device_unregister
(
sonypi_platform_device
);
...
...
include/acpi/acpi_bus.h
View file @
69cd291c
...
...
@@ -327,7 +327,7 @@ int acpi_bus_set_power(acpi_handle handle, int state);
int
acpi_bus_generate_event
(
struct
acpi_device
*
device
,
u8
type
,
int
data
);
int
acpi_bus_receive_event
(
struct
acpi_bus_event
*
event
);
int
acpi_bus_register_driver
(
struct
acpi_driver
*
driver
);
int
acpi_bus_unregister_driver
(
struct
acpi_driver
*
driver
);
void
acpi_bus_unregister_driver
(
struct
acpi_driver
*
driver
);
int
acpi_bus_add
(
struct
acpi_device
**
child
,
struct
acpi_device
*
parent
,
acpi_handle
handle
,
int
type
);
int
acpi_bus_trim
(
struct
acpi_device
*
start
,
int
rmdevice
);
...
...
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