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
Kirill Smelkov
linux
Commits
3e2b32b6
Commit
3e2b32b6
authored
Jan 14, 2006
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6
parents
3824ba7d
9c08a938
Changes
48
Hide whitespace changes
Inline
Side-by-side
Showing
48 changed files
with
358 additions
and
256 deletions
+358
-256
arch/arm/common/locomo.c
arch/arm/common/locomo.c
+2
-2
arch/arm/common/sa1111.c
arch/arm/common/sa1111.c
+2
-2
arch/arm/kernel/ecard.c
arch/arm/kernel/ecard.c
+8
-6
arch/arm/mach-integrator/lm.c
arch/arm/mach-integrator/lm.c
+18
-18
arch/ia64/sn/kernel/tiocx.c
arch/ia64/sn/kernel/tiocx.c
+8
-8
arch/parisc/kernel/drivers.c
arch/parisc/kernel/drivers.c
+2
-2
arch/powerpc/kernel/of_device.c
arch/powerpc/kernel/of_device.c
+2
-2
arch/powerpc/kernel/vio.c
arch/powerpc/kernel/vio.c
+4
-4
arch/ppc/syslib/ocp.c
arch/ppc/syslib/ocp.c
+2
-2
arch/sh/kernel/cpu/bus.c
arch/sh/kernel/cpu/bus.c
+17
-17
drivers/base/dd.c
drivers/base/dd.c
+10
-2
drivers/base/driver.c
drivers/base/driver.c
+5
-0
drivers/base/platform.c
drivers/base/platform.c
+1
-1
drivers/base/power/shutdown.c
drivers/base/power/shutdown.c
+6
-3
drivers/dio/dio-driver.c
drivers/dio/dio-driver.c
+2
-2
drivers/i2c/i2c-core.c
drivers/i2c/i2c-core.c
+9
-11
drivers/ide/ide-cd.c
drivers/ide/ide-cd.c
+5
-9
drivers/ide/ide-disk.c
drivers/ide/ide-disk.c
+8
-14
drivers/ide/ide-floppy.c
drivers/ide/ide-floppy.c
+5
-9
drivers/ide/ide-tape.c
drivers/ide/ide-tape.c
+7
-11
drivers/ide/ide.c
drivers/ide/ide.c
+31
-0
drivers/input/gameport/gameport.c
drivers/input/gameport/gameport.c
+7
-5
drivers/input/input.c
drivers/input/input.c
+37
-18
drivers/input/serio/serio.c
drivers/input/serio/serio.c
+7
-5
drivers/macintosh/macio_asic.c
drivers/macintosh/macio_asic.c
+3
-3
drivers/media/dvb/bt8xx/dvb-bt8xx.c
drivers/media/dvb/bt8xx/dvb-bt8xx.c
+11
-12
drivers/media/video/bttv-gpio.c
drivers/media/video/bttv-gpio.c
+22
-2
drivers/media/video/bttv.h
drivers/media/video/bttv.h
+2
-0
drivers/mfd/mcp-core.c
drivers/mfd/mcp-core.c
+2
-2
drivers/mmc/mmc_sysfs.c
drivers/mmc/mmc_sysfs.c
+12
-14
drivers/pci/pci-driver.c
drivers/pci/pci-driver.c
+2
-2
drivers/pcmcia/ds.c
drivers/pcmcia/ds.c
+2
-2
drivers/pnp/driver.c
drivers/pnp/driver.c
+2
-2
drivers/rapidio/rio-driver.c
drivers/rapidio/rio-driver.c
+3
-3
drivers/s390/cio/ccwgroup.c
drivers/s390/cio/ccwgroup.c
+9
-7
drivers/s390/cio/css.c
drivers/s390/cio/css.c
+34
-2
drivers/s390/cio/css.h
drivers/s390/cio/css.h
+4
-0
drivers/s390/cio/device.c
drivers/s390/cio/device.c
+24
-26
drivers/scsi/scsi_debug.c
drivers/scsi/scsi_debug.c
+2
-2
drivers/sh/superhyway/superhyway.c
drivers/sh/superhyway/superhyway.c
+2
-2
drivers/usb/gadget/ether.c
drivers/usb/gadget/ether.c
+0
-3
drivers/usb/gadget/inode.c
drivers/usb/gadget/inode.c
+0
-3
drivers/usb/gadget/serial.c
drivers/usb/gadget/serial.c
+0
-3
drivers/usb/gadget/zero.c
drivers/usb/gadget/zero.c
+0
-3
drivers/usb/serial/bus.c
drivers/usb/serial/bus.c
+7
-8
drivers/zorro/zorro-driver.c
drivers/zorro/zorro-driver.c
+2
-2
include/linux/device.h
include/linux/device.h
+3
-0
include/linux/ide.h
include/linux/ide.h
+5
-0
No files found.
arch/arm/common/locomo.c
View file @
3e2b32b6
...
...
@@ -1103,14 +1103,14 @@ static int locomo_bus_remove(struct device *dev)
struct
bus_type
locomo_bus_type
=
{
.
name
=
"locomo-bus"
,
.
match
=
locomo_match
,
.
probe
=
locomo_bus_probe
,
.
remove
=
locomo_bus_remove
,
.
suspend
=
locomo_bus_suspend
,
.
resume
=
locomo_bus_resume
,
};
int
locomo_driver_register
(
struct
locomo_driver
*
driver
)
{
driver
->
drv
.
probe
=
locomo_bus_probe
;
driver
->
drv
.
remove
=
locomo_bus_remove
;
driver
->
drv
.
bus
=
&
locomo_bus_type
;
return
driver_register
(
&
driver
->
drv
);
}
...
...
arch/arm/common/sa1111.c
View file @
3e2b32b6
...
...
@@ -1247,14 +1247,14 @@ static int sa1111_bus_remove(struct device *dev)
struct
bus_type
sa1111_bus_type
=
{
.
name
=
"sa1111-rab"
,
.
match
=
sa1111_match
,
.
probe
=
sa1111_bus_probe
,
.
remove
=
sa1111_bus_remove
,
.
suspend
=
sa1111_bus_suspend
,
.
resume
=
sa1111_bus_resume
,
};
int
sa1111_driver_register
(
struct
sa1111_driver
*
driver
)
{
driver
->
drv
.
probe
=
sa1111_bus_probe
;
driver
->
drv
.
remove
=
sa1111_bus_remove
;
driver
->
drv
.
bus
=
&
sa1111_bus_type
;
return
driver_register
(
&
driver
->
drv
);
}
...
...
arch/arm/kernel/ecard.c
View file @
3e2b32b6
...
...
@@ -1147,9 +1147,11 @@ static void ecard_drv_shutdown(struct device *dev)
struct
ecard_driver
*
drv
=
ECARD_DRV
(
dev
->
driver
);
struct
ecard_request
req
;
if
(
drv
->
shutdown
)
drv
->
shutdown
(
ec
);
ecard_release
(
ec
);
if
(
dev
->
driver
)
{
if
(
drv
->
shutdown
)
drv
->
shutdown
(
ec
);
ecard_release
(
ec
);
}
/*
* If this card has a loader, call the reset handler.
...
...
@@ -1164,9 +1166,6 @@ static void ecard_drv_shutdown(struct device *dev)
int
ecard_register_driver
(
struct
ecard_driver
*
drv
)
{
drv
->
drv
.
bus
=
&
ecard_bus_type
;
drv
->
drv
.
probe
=
ecard_drv_probe
;
drv
->
drv
.
remove
=
ecard_drv_remove
;
drv
->
drv
.
shutdown
=
ecard_drv_shutdown
;
return
driver_register
(
&
drv
->
drv
);
}
...
...
@@ -1195,6 +1194,9 @@ struct bus_type ecard_bus_type = {
.
name
=
"ecard"
,
.
dev_attrs
=
ecard_dev_attrs
,
.
match
=
ecard_match
,
.
probe
=
ecard_drv_probe
,
.
remove
=
ecard_drv_remove
,
.
shutdown
=
ecard_drv_shutdown
,
};
static
int
ecard_bus_init
(
void
)
...
...
arch/arm/mach-integrator/lm.c
View file @
3e2b32b6
...
...
@@ -22,20 +22,6 @@ static int lm_match(struct device *dev, struct device_driver *drv)
return
1
;
}
static
struct
bus_type
lm_bustype
=
{
.
name
=
"logicmodule"
,
.
match
=
lm_match
,
// .suspend = lm_suspend,
// .resume = lm_resume,
};
static
int
__init
lm_init
(
void
)
{
return
bus_register
(
&
lm_bustype
);
}
postcore_initcall
(
lm_init
);
static
int
lm_bus_probe
(
struct
device
*
dev
)
{
struct
lm_device
*
lmdev
=
to_lm_device
(
dev
);
...
...
@@ -49,16 +35,30 @@ static int lm_bus_remove(struct device *dev)
struct
lm_device
*
lmdev
=
to_lm_device
(
dev
);
struct
lm_driver
*
lmdrv
=
to_lm_driver
(
dev
->
driver
);
lmdrv
->
remove
(
lmdev
);
if
(
lmdrv
->
remove
)
lmdrv
->
remove
(
lmdev
);
return
0
;
}
static
struct
bus_type
lm_bustype
=
{
.
name
=
"logicmodule"
,
.
match
=
lm_match
,
.
probe
=
lm_bus_probe
,
.
remove
=
lm_bus_remove
,
// .suspend = lm_bus_suspend,
// .resume = lm_bus_resume,
};
static
int
__init
lm_init
(
void
)
{
return
bus_register
(
&
lm_bustype
);
}
postcore_initcall
(
lm_init
);
int
lm_driver_register
(
struct
lm_driver
*
drv
)
{
drv
->
drv
.
bus
=
&
lm_bustype
;
drv
->
drv
.
probe
=
lm_bus_probe
;
drv
->
drv
.
remove
=
lm_bus_remove
;
return
driver_register
(
&
drv
->
drv
);
}
...
...
arch/ia64/sn/kernel/tiocx.c
View file @
3e2b32b6
...
...
@@ -77,12 +77,6 @@ static void tiocx_bus_release(struct device *dev)
kfree
(
to_cx_dev
(
dev
));
}
struct
bus_type
tiocx_bus_type
=
{
.
name
=
"tiocx"
,
.
match
=
tiocx_match
,
.
uevent
=
tiocx_uevent
,
};
/**
* cx_device_match - Find cx_device in the id table.
* @ids: id table from driver
...
...
@@ -149,6 +143,14 @@ static int cx_driver_remove(struct device *dev)
return
0
;
}
struct
bus_type
tiocx_bus_type
=
{
.
name
=
"tiocx"
,
.
match
=
tiocx_match
,
.
uevent
=
tiocx_uevent
,
.
probe
=
cx_device_probe
,
.
remove
=
cx_driver_remove
,
};
/**
* cx_driver_register - Register the driver.
* @cx_driver: driver table (cx_drv struct) from driver
...
...
@@ -162,8 +164,6 @@ int cx_driver_register(struct cx_drv *cx_driver)
{
cx_driver
->
driver
.
name
=
cx_driver
->
name
;
cx_driver
->
driver
.
bus
=
&
tiocx_bus_type
;
cx_driver
->
driver
.
probe
=
cx_device_probe
;
cx_driver
->
driver
.
remove
=
cx_driver_remove
;
return
driver_register
(
&
cx_driver
->
driver
);
}
...
...
arch/parisc/kernel/drivers.c
View file @
3e2b32b6
...
...
@@ -173,8 +173,6 @@ int register_parisc_driver(struct parisc_driver *driver)
WARN_ON
(
driver
->
drv
.
probe
!=
NULL
);
WARN_ON
(
driver
->
drv
.
remove
!=
NULL
);
driver
->
drv
.
probe
=
parisc_driver_probe
;
driver
->
drv
.
remove
=
parisc_driver_remove
;
driver
->
drv
.
name
=
driver
->
name
;
return
driver_register
(
&
driver
->
drv
);
...
...
@@ -575,6 +573,8 @@ struct bus_type parisc_bus_type = {
.
name
=
"parisc"
,
.
match
=
parisc_generic_match
,
.
dev_attrs
=
parisc_device_attrs
,
.
probe
=
parisc_driver_probe
,
.
remove
=
parisc_driver_remove
,
};
/**
...
...
arch/powerpc/kernel/of_device.c
View file @
3e2b32b6
...
...
@@ -132,6 +132,8 @@ static int of_device_resume(struct device * dev)
struct
bus_type
of_platform_bus_type
=
{
.
name
=
"of_platform"
,
.
match
=
of_platform_bus_match
,
.
probe
=
of_device_probe
,
.
remove
=
of_device_remove
,
.
suspend
=
of_device_suspend
,
.
resume
=
of_device_resume
,
};
...
...
@@ -150,8 +152,6 @@ int of_register_driver(struct of_platform_driver *drv)
/* initialize common driver fields */
drv
->
driver
.
name
=
drv
->
name
;
drv
->
driver
.
bus
=
&
of_platform_bus_type
;
drv
->
driver
.
probe
=
of_device_probe
;
drv
->
driver
.
remove
=
of_device_remove
;
/* register with core */
count
=
driver_register
(
&
drv
->
driver
);
...
...
arch/powerpc/kernel/vio.c
View file @
3e2b32b6
...
...
@@ -76,7 +76,7 @@ static void vio_bus_shutdown(struct device *dev)
struct
vio_dev
*
viodev
=
to_vio_dev
(
dev
);
struct
vio_driver
*
viodrv
=
to_vio_driver
(
dev
->
driver
);
if
(
viodrv
->
shutdown
)
if
(
dev
->
driver
&&
viodrv
->
shutdown
)
viodrv
->
shutdown
(
viodev
);
}
...
...
@@ -91,9 +91,6 @@ int vio_register_driver(struct vio_driver *viodrv)
/* fill in 'struct driver' fields */
viodrv
->
driver
.
bus
=
&
vio_bus_type
;
viodrv
->
driver
.
probe
=
vio_bus_probe
;
viodrv
->
driver
.
remove
=
vio_bus_remove
;
viodrv
->
driver
.
shutdown
=
vio_bus_shutdown
;
return
driver_register
(
&
viodrv
->
driver
);
}
...
...
@@ -295,4 +292,7 @@ struct bus_type vio_bus_type = {
.
name
=
"vio"
,
.
uevent
=
vio_hotplug
,
.
match
=
vio_bus_match
,
.
probe
=
vio_bus_probe
,
.
remove
=
vio_bus_remove
,
.
shutdown
=
vio_bus_shutdown
,
};
arch/ppc/syslib/ocp.c
View file @
3e2b32b6
...
...
@@ -189,6 +189,8 @@ ocp_device_resume(struct device *dev)
struct
bus_type
ocp_bus_type
=
{
.
name
=
"ocp"
,
.
match
=
ocp_device_match
,
.
probe
=
ocp_driver_probe
,
.
remove
=
ocp_driver_remove
,
.
suspend
=
ocp_device_suspend
,
.
resume
=
ocp_device_resume
,
};
...
...
@@ -210,8 +212,6 @@ ocp_register_driver(struct ocp_driver *drv)
/* initialize common driver fields */
drv
->
driver
.
name
=
drv
->
name
;
drv
->
driver
.
bus
=
&
ocp_bus_type
;
drv
->
driver
.
probe
=
ocp_device_probe
;
drv
->
driver
.
remove
=
ocp_device_remove
;
/* register with core */
return
driver_register
(
&
drv
->
driver
);
...
...
arch/sh/kernel/cpu/bus.c
View file @
3e2b32b6
...
...
@@ -53,21 +53,6 @@ static int sh_bus_resume(struct device *dev)
return
0
;
}
static
struct
device
sh_bus_devices
[
SH_NR_BUSES
]
=
{
{
.
bus_id
=
SH_BUS_NAME_VIRT
,
},
};
struct
bus_type
sh_bus_types
[
SH_NR_BUSES
]
=
{
{
.
name
=
SH_BUS_NAME_VIRT
,
.
match
=
sh_bus_match
,
.
suspend
=
sh_bus_suspend
,
.
resume
=
sh_bus_resume
,
},
};
static
int
sh_device_probe
(
struct
device
*
dev
)
{
struct
sh_dev
*
shdev
=
to_sh_dev
(
dev
);
...
...
@@ -90,6 +75,23 @@ static int sh_device_remove(struct device *dev)
return
0
;
}
static
struct
device
sh_bus_devices
[
SH_NR_BUSES
]
=
{
{
.
bus_id
=
SH_BUS_NAME_VIRT
,
},
};
struct
bus_type
sh_bus_types
[
SH_NR_BUSES
]
=
{
{
.
name
=
SH_BUS_NAME_VIRT
,
.
match
=
sh_bus_match
,
.
probe
=
sh_bus_probe
,
.
remove
=
sh_bus_remove
,
.
suspend
=
sh_bus_suspend
,
.
resume
=
sh_bus_resume
,
},
};
int
sh_device_register
(
struct
sh_dev
*
dev
)
{
if
(
!
dev
)
...
...
@@ -133,8 +135,6 @@ int sh_driver_register(struct sh_driver *drv)
return
-
EINVAL
;
}
drv
->
drv
.
probe
=
sh_device_probe
;
drv
->
drv
.
remove
=
sh_device_remove
;
drv
->
drv
.
bus
=
&
sh_bus_types
[
drv
->
bus_id
];
return
driver_register
(
&
drv
->
drv
);
...
...
drivers/base/dd.c
View file @
3e2b32b6
...
...
@@ -78,7 +78,13 @@ int driver_probe_device(struct device_driver * drv, struct device * dev)
pr_debug
(
"%s: Matched Device %s with Driver %s
\n
"
,
drv
->
bus
->
name
,
dev
->
bus_id
,
drv
->
name
);
dev
->
driver
=
drv
;
if
(
drv
->
probe
)
{
if
(
dev
->
bus
->
probe
)
{
ret
=
dev
->
bus
->
probe
(
dev
);
if
(
ret
)
{
dev
->
driver
=
NULL
;
goto
ProbeFailed
;
}
}
else
if
(
drv
->
probe
)
{
ret
=
drv
->
probe
(
dev
);
if
(
ret
)
{
dev
->
driver
=
NULL
;
...
...
@@ -203,7 +209,9 @@ static void __device_release_driver(struct device * dev)
sysfs_remove_link
(
&
dev
->
kobj
,
"driver"
);
klist_remove
(
&
dev
->
knode_driver
);
if
(
drv
->
remove
)
if
(
dev
->
bus
->
remove
)
dev
->
bus
->
remove
(
dev
);
else
if
(
drv
->
remove
)
drv
->
remove
(
dev
);
dev
->
driver
=
NULL
;
put_driver
(
drv
);
...
...
drivers/base/driver.c
View file @
3e2b32b6
...
...
@@ -171,6 +171,11 @@ static void klist_devices_put(struct klist_node *n)
*/
int
driver_register
(
struct
device_driver
*
drv
)
{
if
((
drv
->
bus
->
probe
&&
drv
->
probe
)
||
(
drv
->
bus
->
remove
&&
drv
->
remove
)
||
(
drv
->
bus
->
shutdown
&&
drv
->
shutdown
))
{
printk
(
KERN_WARNING
"Driver '%s' needs updating - please use bus_type methods
\n
"
,
drv
->
name
);
}
klist_init
(
&
drv
->
klist_devices
,
klist_devices_get
,
klist_devices_put
);
init_completion
(
&
drv
->
unloaded
);
return
bus_add_driver
(
drv
);
...
...
drivers/base/platform.c
View file @
3e2b32b6
...
...
@@ -327,7 +327,7 @@ EXPORT_SYMBOL_GPL(platform_device_register);
* @pdev: platform device we're unregistering
*
* Unregistration is done in 2 steps. Fisrt we release all resources
* and remove it from the s
y
bsystem, then we drop reference count by
* and remove it from the s
u
bsystem, then we drop reference count by
* calling platform_device_put().
*/
void
platform_device_unregister
(
struct
platform_device
*
pdev
)
...
...
drivers/base/power/shutdown.c
View file @
3e2b32b6
...
...
@@ -35,12 +35,15 @@ extern int sysdev_shutdown(void);
*/
void
device_shutdown
(
void
)
{
struct
device
*
dev
;
struct
device
*
dev
,
*
devn
;
down_write
(
&
devices_subsys
.
rwsem
);
list_for_each_entry_
reverse
(
dev
,
&
devices_subsys
.
kset
.
list
,
list_for_each_entry_
safe_reverse
(
dev
,
devn
,
&
devices_subsys
.
kset
.
list
,
kobj
.
entry
)
{
if
(
dev
->
driver
&&
dev
->
driver
->
shutdown
)
{
if
(
dev
->
bus
&&
dev
->
bus
->
shutdown
)
{
dev_dbg
(
dev
,
"shutdown
\n
"
);
dev
->
bus
->
shutdown
(
dev
);
}
else
if
(
dev
->
driver
&&
dev
->
driver
->
shutdown
)
{
dev_dbg
(
dev
,
"shutdown
\n
"
);
dev
->
driver
->
shutdown
(
dev
);
}
...
...
drivers/dio/dio-driver.c
View file @
3e2b32b6
...
...
@@ -83,7 +83,6 @@ int dio_register_driver(struct dio_driver *drv)
/* initialize common driver fields */
drv
->
driver
.
name
=
drv
->
name
;
drv
->
driver
.
bus
=
&
dio_bus_type
;
drv
->
driver
.
probe
=
dio_device_probe
;
/* register with core */
count
=
driver_register
(
&
drv
->
driver
);
...
...
@@ -145,7 +144,8 @@ static int dio_bus_match(struct device *dev, struct device_driver *drv)
struct
bus_type
dio_bus_type
=
{
.
name
=
"dio"
,
.
match
=
dio_bus_match
.
match
=
dio_bus_match
,
.
probe
=
dio_device_probe
,
};
...
...
drivers/i2c/i2c-core.c
View file @
3e2b32b6
...
...
@@ -63,13 +63,6 @@ static int i2c_bus_resume(struct device * dev)
return
rc
;
}
struct
bus_type
i2c_bus_type
=
{
.
name
=
"i2c"
,
.
match
=
i2c_device_match
,
.
suspend
=
i2c_bus_suspend
,
.
resume
=
i2c_bus_resume
,
};
static
int
i2c_device_probe
(
struct
device
*
dev
)
{
return
-
ENODEV
;
...
...
@@ -80,6 +73,15 @@ static int i2c_device_remove(struct device *dev)
return
0
;
}
struct
bus_type
i2c_bus_type
=
{
.
name
=
"i2c"
,
.
match
=
i2c_device_match
,
.
probe
=
i2c_device_probe
,
.
remove
=
i2c_device_remove
,
.
suspend
=
i2c_bus_suspend
,
.
resume
=
i2c_bus_resume
,
};
void
i2c_adapter_dev_release
(
struct
device
*
dev
)
{
struct
i2c_adapter
*
adap
=
dev_to_i2c_adapter
(
dev
);
...
...
@@ -90,8 +92,6 @@ struct device_driver i2c_adapter_driver = {
.
owner
=
THIS_MODULE
,
.
name
=
"i2c_adapter"
,
.
bus
=
&
i2c_bus_type
,
.
probe
=
i2c_device_probe
,
.
remove
=
i2c_device_remove
,
};
static
void
i2c_adapter_class_dev_release
(
struct
class_device
*
dev
)
...
...
@@ -294,8 +294,6 @@ int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
/* add the driver to the list of i2c drivers in the driver core */
driver
->
driver
.
owner
=
owner
;
driver
->
driver
.
bus
=
&
i2c_bus_type
;
driver
->
driver
.
probe
=
i2c_device_probe
;
driver
->
driver
.
remove
=
i2c_device_remove
;
res
=
driver_register
(
&
driver
->
driver
);
if
(
res
)
...
...
drivers/ide/ide-cd.c
View file @
3e2b32b6
...
...
@@ -3256,9 +3256,8 @@ sector_t ide_cdrom_capacity (ide_drive_t *drive)
}
#endif
static
int
ide_cd_remove
(
struct
device
*
dev
)
static
void
ide_cd_remove
(
ide_drive_t
*
drive
)
{
ide_drive_t
*
drive
=
to_ide_device
(
dev
);
struct
cdrom_info
*
info
=
drive
->
driver_data
;
ide_unregister_subdriver
(
drive
,
info
->
driver
);
...
...
@@ -3266,8 +3265,6 @@ static int ide_cd_remove(struct device *dev)
del_gendisk
(
info
->
disk
);
ide_cd_put
(
info
);
return
0
;
}
static
void
ide_cd_release
(
struct
kref
*
kref
)
...
...
@@ -3291,7 +3288,7 @@ static void ide_cd_release(struct kref *kref)
kfree
(
info
);
}
static
int
ide_cd_probe
(
struct
device
*
);
static
int
ide_cd_probe
(
ide_drive_t
*
);
#ifdef CONFIG_PROC_FS
static
int
proc_idecd_read_capacity
...
...
@@ -3317,9 +3314,9 @@ static ide_driver_t ide_cdrom_driver = {
.
owner
=
THIS_MODULE
,
.
name
=
"ide-cdrom"
,
.
bus
=
&
ide_bus_type
,
.
probe
=
ide_cd_probe
,
.
remove
=
ide_cd_remove
,
},
.
probe
=
ide_cd_probe
,
.
remove
=
ide_cd_remove
,
.
version
=
IDECD_VERSION
,
.
media
=
ide_cdrom
,
.
supports_dsc_overlap
=
1
,
...
...
@@ -3413,9 +3410,8 @@ static char *ignore = NULL;
module_param
(
ignore
,
charp
,
0400
);
MODULE_DESCRIPTION
(
"ATAPI CD-ROM Driver"
);
static
int
ide_cd_probe
(
struct
device
*
dev
)
static
int
ide_cd_probe
(
ide_drive_t
*
drive
)
{
ide_drive_t
*
drive
=
to_ide_device
(
dev
);
struct
cdrom_info
*
info
;
struct
gendisk
*
g
;
struct
request_sense
sense
;
...
...
drivers/ide/ide-disk.c
View file @
3e2b32b6
...
...
@@ -997,9 +997,8 @@ static void ide_cacheflush_p(ide_drive_t *drive)
printk
(
KERN_INFO
"%s: wcache flush failed!
\n
"
,
drive
->
name
);
}
static
int
ide_disk_remove
(
struct
device
*
dev
)
static
void
ide_disk_remove
(
ide_drive_t
*
drive
)
{
ide_drive_t
*
drive
=
to_ide_device
(
dev
);
struct
ide_disk_obj
*
idkp
=
drive
->
driver_data
;
struct
gendisk
*
g
=
idkp
->
disk
;
...
...
@@ -1010,8 +1009,6 @@ static int ide_disk_remove(struct device *dev)
ide_cacheflush_p
(
drive
);
ide_disk_put
(
idkp
);
return
0
;
}
static
void
ide_disk_release
(
struct
kref
*
kref
)
...
...
@@ -1027,12 +1024,10 @@ static void ide_disk_release(struct kref *kref)
kfree
(
idkp
);
}
static
int
ide_disk_probe
(
struct
device
*
dev
);
static
int
ide_disk_probe
(
ide_drive_t
*
drive
);
static
void
ide_device_shutdown
(
struct
device
*
dev
)
static
void
ide_device_shutdown
(
ide_drive_t
*
drive
)
{
ide_drive_t
*
drive
=
container_of
(
dev
,
ide_drive_t
,
gendev
);
#ifdef CONFIG_ALPHA
/* On Alpha, halt(8) doesn't actually turn the machine off,
it puts you into the sort of firmware monitor. Typically,
...
...
@@ -1054,7 +1049,7 @@ static void ide_device_shutdown(struct device *dev)
}
printk
(
"Shutdown: %s
\n
"
,
drive
->
name
);
d
ev
->
bus
->
suspend
(
dev
,
PMSG_SUSPEND
);
d
rive
->
gendev
.
bus
->
suspend
(
&
drive
->
gen
dev
,
PMSG_SUSPEND
);
}
static
ide_driver_t
idedisk_driver
=
{
...
...
@@ -1062,10 +1057,10 @@ static ide_driver_t idedisk_driver = {
.
owner
=
THIS_MODULE
,
.
name
=
"ide-disk"
,
.
bus
=
&
ide_bus_type
,
.
probe
=
ide_disk_probe
,
.
remove
=
ide_disk_remove
,
.
shutdown
=
ide_device_shutdown
,
},
.
probe
=
ide_disk_probe
,
.
remove
=
ide_disk_remove
,
.
shutdown
=
ide_device_shutdown
,
.
version
=
IDEDISK_VERSION
,
.
media
=
ide_disk
,
.
supports_dsc_overlap
=
0
,
...
...
@@ -1182,9 +1177,8 @@ static struct block_device_operations idedisk_ops = {
MODULE_DESCRIPTION
(
"ATA DISK Driver"
);
static
int
ide_disk_probe
(
struct
device
*
dev
)
static
int
ide_disk_probe
(
ide_drive_t
*
drive
)
{
ide_drive_t
*
drive
=
to_ide_device
(
dev
);
struct
ide_disk_obj
*
idkp
;
struct
gendisk
*
g
;
...
...
drivers/ide/ide-floppy.c
View file @
3e2b32b6
...
...
@@ -1871,9 +1871,8 @@ static void idefloppy_setup (ide_drive_t *drive, idefloppy_floppy_t *floppy)
idefloppy_add_settings
(
drive
);
}
static
int
ide_floppy_remove
(
struct
device
*
dev
)
static
void
ide_floppy_remove
(
ide_drive_t
*
drive
)
{
ide_drive_t
*
drive
=
to_ide_device
(
dev
);
idefloppy_floppy_t
*
floppy
=
drive
->
driver_data
;
struct
gendisk
*
g
=
floppy
->
disk
;
...
...
@@ -1882,8 +1881,6 @@ static int ide_floppy_remove(struct device *dev)
del_gendisk
(
g
);
ide_floppy_put
(
floppy
);
return
0
;
}
static
void
ide_floppy_release
(
struct
kref
*
kref
)
...
...
@@ -1922,16 +1919,16 @@ static ide_proc_entry_t idefloppy_proc[] = {
#endif
/* CONFIG_PROC_FS */
static
int
ide_floppy_probe
(
struct
device
*
);
static
int
ide_floppy_probe
(
ide_drive_t
*
);
static
ide_driver_t
idefloppy_driver
=
{
.
gen_driver
=
{
.
owner
=
THIS_MODULE
,
.
name
=
"ide-floppy"
,
.
bus
=
&
ide_bus_type
,
.
probe
=
ide_floppy_probe
,
.
remove
=
ide_floppy_remove
,
},
.
probe
=
ide_floppy_probe
,
.
remove
=
ide_floppy_remove
,
.
version
=
IDEFLOPPY_VERSION
,
.
media
=
ide_floppy
,
.
supports_dsc_overlap
=
0
,
...
...
@@ -2136,9 +2133,8 @@ static struct block_device_operations idefloppy_ops = {
.
revalidate_disk
=
idefloppy_revalidate_disk
};
static
int
ide_floppy_probe
(
struct
device
*
dev
)
static
int
ide_floppy_probe
(
ide_drive_t
*
drive
)
{
ide_drive_t
*
drive
=
to_ide_device
(
dev
);
idefloppy_floppy_t
*
floppy
;
struct
gendisk
*
g
;
...
...
drivers/ide/ide-tape.c
View file @
3e2b32b6
...
...
@@ -4682,9 +4682,8 @@ static void idetape_setup (ide_drive_t *drive, idetape_tape_t *tape, int minor)
idetape_add_settings
(
drive
);
}
static
int
ide_tape_remove
(
struct
device
*
dev
)
static
void
ide_tape_remove
(
ide_drive_t
*
drive
)
{
ide_drive_t
*
drive
=
to_ide_device
(
dev
);
idetape_tape_t
*
tape
=
drive
->
driver_data
;
ide_unregister_subdriver
(
drive
,
tape
->
driver
);
...
...
@@ -4692,8 +4691,6 @@ static int ide_tape_remove(struct device *dev)
ide_unregister_region
(
tape
->
disk
);
ide_tape_put
(
tape
);
return
0
;
}
static
void
ide_tape_release
(
struct
kref
*
kref
)
...
...
@@ -4745,16 +4742,16 @@ static ide_proc_entry_t idetape_proc[] = {
#endif
static
int
ide_tape_probe
(
struct
device
*
);
static
int
ide_tape_probe
(
ide_drive_t
*
);
static
ide_driver_t
idetape_driver
=
{
.
gen_driver
=
{
.
owner
=
THIS_MODULE
,
.
name
=
"ide-tape"
,
.
bus
=
&
ide_bus_type
,
.
probe
=
ide_tape_probe
,
.
remove
=
ide_tape_remove
,
},
.
probe
=
ide_tape_probe
,
.
remove
=
ide_tape_remove
,
.
version
=
IDETAPE_VERSION
,
.
media
=
ide_tape
,
.
supports_dsc_overlap
=
1
,
...
...
@@ -4825,9 +4822,8 @@ static struct block_device_operations idetape_block_ops = {
.
ioctl
=
idetape_ioctl
,
};
static
int
ide_tape_probe
(
struct
device
*
dev
)
static
int
ide_tape_probe
(
ide_drive_t
*
drive
)
{
ide_drive_t
*
drive
=
to_ide_device
(
dev
);
idetape_tape_t
*
tape
;
struct
gendisk
*
g
;
int
minor
;
...
...
@@ -4883,9 +4879,9 @@ static int ide_tape_probe(struct device *dev)
idetape_setup
(
drive
,
tape
,
minor
);
class_device_create
(
idetape_sysfs_class
,
NULL
,
MKDEV
(
IDETAPE_MAJOR
,
minor
),
dev
,
"%s"
,
tape
->
name
);
MKDEV
(
IDETAPE_MAJOR
,
minor
),
&
drive
->
gen
dev
,
"%s"
,
tape
->
name
);
class_device_create
(
idetape_sysfs_class
,
NULL
,
MKDEV
(
IDETAPE_MAJOR
,
minor
+
128
),
dev
,
"n%s"
,
tape
->
name
);
MKDEV
(
IDETAPE_MAJOR
,
minor
+
128
),
&
drive
->
gen
dev
,
"n%s"
,
tape
->
name
);
devfs_mk_cdev
(
MKDEV
(
HWIF
(
drive
)
->
major
,
minor
),
S_IFCHR
|
S_IRUGO
|
S_IWUGO
,
...
...
drivers/ide/ide.c
View file @
3e2b32b6
...
...
@@ -1949,10 +1949,41 @@ static int ide_uevent(struct device *dev, char **envp, int num_envp,
return
0
;
}
static
int
generic_ide_probe
(
struct
device
*
dev
)
{
ide_drive_t
*
drive
=
to_ide_device
(
dev
);
ide_driver_t
*
drv
=
to_ide_driver
(
dev
->
driver
);
return
drv
->
probe
?
drv
->
probe
(
drive
)
:
-
ENODEV
;
}
static
int
generic_ide_remove
(
struct
device
*
dev
)
{
ide_drive_t
*
drive
=
to_ide_device
(
dev
);
ide_driver_t
*
drv
=
to_ide_driver
(
dev
->
driver
);
if
(
drv
->
remove
)
drv
->
remove
(
drive
);
return
0
;
}
static
void
generic_ide_shutdown
(
struct
device
*
dev
)
{
ide_drive_t
*
drive
=
to_ide_device
(
dev
);
ide_driver_t
*
drv
=
to_ide_driver
(
dev
->
driver
);
if
(
dev
->
driver
&&
drv
->
shutdown
)
drv
->
shutdown
(
drive
);
}
struct
bus_type
ide_bus_type
=
{
.
name
=
"ide"
,
.
match
=
ide_bus_match
,
.
uevent
=
ide_uevent
,
.
probe
=
generic_ide_probe
,
.
remove
=
generic_ide_remove
,
.
shutdown
=
generic_ide_shutdown
,
.
dev_attrs
=
ide_dev_attrs
,
.
suspend
=
generic_ide_suspend
,
.
resume
=
generic_ide_resume
,
...
...
drivers/input/gameport/gameport.c
View file @
3e2b32b6
...
...
@@ -50,9 +50,7 @@ static DECLARE_MUTEX(gameport_sem);
static
LIST_HEAD
(
gameport_list
);
static
struct
bus_type
gameport_bus
=
{
.
name
=
"gameport"
,
};
static
struct
bus_type
gameport_bus
;
static
void
gameport_add_port
(
struct
gameport
*
gameport
);
static
void
gameport_destroy_port
(
struct
gameport
*
gameport
);
...
...
@@ -703,11 +701,15 @@ static int gameport_driver_remove(struct device *dev)
return
0
;
}
static
struct
bus_type
gameport_bus
=
{
.
name
=
"gameport"
,
.
probe
=
gameport_driver_probe
,
.
remove
=
gameport_driver_remove
,
};
void
__gameport_register_driver
(
struct
gameport_driver
*
drv
,
struct
module
*
owner
)
{
drv
->
driver
.
bus
=
&
gameport_bus
;
drv
->
driver
.
probe
=
gameport_driver_probe
;
drv
->
driver
.
remove
=
gameport_driver_remove
;
gameport_queue_event
(
drv
,
owner
,
GAMEPORT_REGISTER_DRIVER
);
}
...
...
drivers/input/input.c
View file @
3e2b32b6
...
...
@@ -528,40 +528,56 @@ INPUT_DEV_STRING_ATTR_SHOW(name);
INPUT_DEV_STRING_ATTR_SHOW
(
phys
);
INPUT_DEV_STRING_ATTR_SHOW
(
uniq
);
static
int
print_modalias_bits
(
char
*
buf
,
char
prefix
,
unsigned
long
*
arr
,
static
int
print_modalias_bits
(
char
*
buf
,
int
size
,
char
prefix
,
unsigned
long
*
arr
,
unsigned
int
min
,
unsigned
int
max
)
{
int
len
,
i
;
len
=
s
printf
(
buf
,
"%c"
,
prefix
);
len
=
s
nprintf
(
buf
,
size
,
"%c"
,
prefix
);
for
(
i
=
min
;
i
<
max
;
i
++
)
if
(
arr
[
LONG
(
i
)]
&
BIT
(
i
))
len
+=
s
printf
(
buf
+
len
,
"%X,"
,
i
);
len
+=
s
nprintf
(
buf
+
len
,
size
-
len
,
"%X,"
,
i
);
return
len
;
}
static
ssize_t
input_dev_show_modalias
(
struct
class_device
*
dev
,
char
*
buf
)
static
int
print_modalias
(
char
*
buf
,
int
size
,
struct
input_dev
*
id
)
{
struct
input_dev
*
id
=
to_input_dev
(
dev
);
ssize_t
len
=
0
;
int
len
;
len
+=
sprintf
(
buf
+
len
,
"input:b%04Xv%04Xp%04Xe%04X-"
,
len
=
snprintf
(
buf
,
size
,
"input:b%04Xv%04Xp%04Xe%04X-"
,
id
->
id
.
bustype
,
id
->
id
.
vendor
,
id
->
id
.
product
,
id
->
id
.
version
);
len
+=
print_modalias_bits
(
buf
+
len
,
'e'
,
id
->
evbit
,
0
,
EV_MAX
);
len
+=
print_modalias_bits
(
buf
+
len
,
'k'
,
id
->
keybit
,
len
+=
print_modalias_bits
(
buf
+
len
,
size
-
len
,
'e'
,
id
->
evbit
,
0
,
EV_MAX
);
len
+=
print_modalias_bits
(
buf
+
len
,
size
-
len
,
'k'
,
id
->
keybit
,
KEY_MIN_INTERESTING
,
KEY_MAX
);
len
+=
print_modalias_bits
(
buf
+
len
,
'r'
,
id
->
relbit
,
0
,
REL_MAX
);
len
+=
print_modalias_bits
(
buf
+
len
,
'a'
,
id
->
absbit
,
0
,
ABS_MAX
);
len
+=
print_modalias_bits
(
buf
+
len
,
'm'
,
id
->
mscbit
,
0
,
MSC_MAX
);
len
+=
print_modalias_bits
(
buf
+
len
,
'l'
,
id
->
ledbit
,
0
,
LED_MAX
);
len
+=
print_modalias_bits
(
buf
+
len
,
's'
,
id
->
sndbit
,
0
,
SND_MAX
);
len
+=
print_modalias_bits
(
buf
+
len
,
'f'
,
id
->
ffbit
,
0
,
FF_MAX
);
len
+=
print_modalias_bits
(
buf
+
len
,
'w'
,
id
->
swbit
,
0
,
SW_MAX
);
len
+=
sprintf
(
buf
+
len
,
"
\n
"
);
len
+=
print_modalias_bits
(
buf
+
len
,
size
-
len
,
'r'
,
id
->
relbit
,
0
,
REL_MAX
);
len
+=
print_modalias_bits
(
buf
+
len
,
size
-
len
,
'a'
,
id
->
absbit
,
0
,
ABS_MAX
);
len
+=
print_modalias_bits
(
buf
+
len
,
size
-
len
,
'm'
,
id
->
mscbit
,
0
,
MSC_MAX
);
len
+=
print_modalias_bits
(
buf
+
len
,
size
-
len
,
'l'
,
id
->
ledbit
,
0
,
LED_MAX
);
len
+=
print_modalias_bits
(
buf
+
len
,
size
-
len
,
's'
,
id
->
sndbit
,
0
,
SND_MAX
);
len
+=
print_modalias_bits
(
buf
+
len
,
size
-
len
,
'f'
,
id
->
ffbit
,
0
,
FF_MAX
);
len
+=
print_modalias_bits
(
buf
+
len
,
size
-
len
,
'w'
,
id
->
swbit
,
0
,
SW_MAX
);
return
len
;
}
static
ssize_t
input_dev_show_modalias
(
struct
class_device
*
dev
,
char
*
buf
)
{
struct
input_dev
*
id
=
to_input_dev
(
dev
);
ssize_t
len
;
len
=
print_modalias
(
buf
,
PAGE_SIZE
,
id
);
len
+=
snprintf
(
buf
+
len
,
PAGE_SIZE
-
len
,
"
\n
"
);
return
len
;
}
static
CLASS_DEVICE_ATTR
(
modalias
,
S_IRUGO
,
input_dev_show_modalias
,
NULL
);
...
...
@@ -728,8 +744,11 @@ static int input_dev_uevent(struct class_device *cdev, char **envp,
if
(
test_bit
(
EV_SW
,
dev
->
evbit
))
INPUT_ADD_HOTPLUG_BM_VAR
(
"SW="
,
dev
->
swbit
,
SW_MAX
);
envp
[
i
]
=
NULL
;
envp
[
i
++
]
=
buffer
+
len
;
len
+=
snprintf
(
buffer
+
len
,
buffer_size
-
len
,
"MODALIAS="
);
len
+=
print_modalias
(
buffer
+
len
,
buffer_size
-
len
,
dev
)
+
1
;
envp
[
i
]
=
NULL
;
return
0
;
}
...
...
drivers/input/serio/serio.c
View file @
3e2b32b6
...
...
@@ -59,9 +59,7 @@ static DECLARE_MUTEX(serio_sem);
static
LIST_HEAD
(
serio_list
);
static
struct
bus_type
serio_bus
=
{
.
name
=
"serio"
,
};
static
struct
bus_type
serio_bus
;
static
void
serio_add_port
(
struct
serio
*
serio
);
static
void
serio_destroy_port
(
struct
serio
*
serio
);
...
...
@@ -750,11 +748,15 @@ static int serio_driver_remove(struct device *dev)
return
0
;
}
static
struct
bus_type
serio_bus
=
{
.
name
=
"serio"
,
.
probe
=
serio_driver_probe
,
.
remove
=
serio_driver_remove
,
};
void
__serio_register_driver
(
struct
serio_driver
*
drv
,
struct
module
*
owner
)
{
drv
->
driver
.
bus
=
&
serio_bus
;
drv
->
driver
.
probe
=
serio_driver_probe
;
drv
->
driver
.
remove
=
serio_driver_remove
;
serio_queue_event
(
drv
,
owner
,
SERIO_REGISTER_DRIVER
);
}
...
...
drivers/macintosh/macio_asic.c
View file @
3e2b32b6
...
...
@@ -211,6 +211,9 @@ struct bus_type macio_bus_type = {
.
name
=
"macio"
,
.
match
=
macio_bus_match
,
.
uevent
=
macio_uevent
,
.
probe
=
macio_device_probe
,
.
remove
=
macio_device_remove
,
.
shutdown
=
macio_device_shutdown
,
.
suspend
=
macio_device_suspend
,
.
resume
=
macio_device_resume
,
.
dev_attrs
=
macio_dev_attrs
,
...
...
@@ -528,9 +531,6 @@ int macio_register_driver(struct macio_driver *drv)
/* initialize common driver fields */
drv
->
driver
.
name
=
drv
->
name
;
drv
->
driver
.
bus
=
&
macio_bus_type
;
drv
->
driver
.
probe
=
macio_device_probe
;
drv
->
driver
.
remove
=
macio_device_remove
;
drv
->
driver
.
shutdown
=
macio_device_shutdown
;
/* register with core */
count
=
driver_register
(
&
drv
->
driver
);
...
...
drivers/media/dvb/bt8xx/dvb-bt8xx.c
View file @
3e2b32b6
...
...
@@ -779,9 +779,8 @@ static int __init dvb_bt8xx_load_card(struct dvb_bt8xx_card *card, u32 type)
return
0
;
}
static
int
dvb_bt8xx_probe
(
struct
device
*
dev
)
static
int
dvb_bt8xx_probe
(
struct
bttv_sub_device
*
sub
)
{
struct
bttv_sub_device
*
sub
=
to_bttv_sub_dev
(
dev
);
struct
dvb_bt8xx_card
*
card
;
struct
pci_dev
*
bttv_pci_dev
;
int
ret
;
...
...
@@ -890,13 +889,13 @@ static int dvb_bt8xx_probe(struct device *dev)
return
ret
;
}
dev_set_drvdata
(
dev
,
card
);
dev_set_drvdata
(
&
sub
->
dev
,
card
);
return
0
;
}
static
int
dvb_bt8xx_remove
(
struct
device
*
dev
)
static
int
dvb_bt8xx_remove
(
struct
bttv_sub_device
*
sub
)
{
struct
dvb_bt8xx_card
*
card
=
dev_get_drvdata
(
dev
);
struct
dvb_bt8xx_card
*
card
=
dev_get_drvdata
(
&
sub
->
dev
);
dprintk
(
"dvb_bt8xx: unloading card%d
\n
"
,
card
->
bttv_nr
);
...
...
@@ -919,14 +918,14 @@ static int dvb_bt8xx_remove(struct device *dev)
static
struct
bttv_sub_driver
driver
=
{
.
drv
=
{
.
name
=
"dvb-bt8xx"
,
.
probe
=
dvb_bt8xx_probe
,
.
remove
=
dvb_bt8xx_remove
,
/* FIXME:
* .shutdown = dvb_bt8xx_shutdown,
* .suspend = dvb_bt8xx_suspend,
* .resume = dvb_bt8xx_resume,
*/
},
.
probe
=
dvb_bt8xx_probe
,
.
remove
=
dvb_bt8xx_remove
,
/* FIXME:
* .shutdown = dvb_bt8xx_shutdown,
* .suspend = dvb_bt8xx_suspend,
* .resume = dvb_bt8xx_resume,
*/
};
static
int
__init
dvb_bt8xx_init
(
void
)
...
...
drivers/media/video/bttv-gpio.c
View file @
3e2b32b6
...
...
@@ -47,9 +47,29 @@ static int bttv_sub_bus_match(struct device *dev, struct device_driver *drv)
return
0
;
}
static
int
bttv_sub_probe
(
struct
device
*
dev
)
{
struct
bttv_sub_device
*
sdev
=
to_bttv_sub_dev
(
dev
);
struct
bttv_sub_driver
*
sub
=
to_bttv_sub_drv
(
dev
->
driver
);
return
sub
->
probe
?
sub
->
probe
(
sdev
)
:
-
ENODEV
;
}
static
int
bttv_sub_remove
(
struct
device
*
dev
)
{
struct
bttv_sub_device
*
sdev
=
to_bttv_sub_dev
(
dev
);
struct
bttv_sub_driver
*
sub
=
to_bttv_sub_drv
(
dev
->
driver
);
if
(
sub
->
remove
)
sub
->
remove
(
sdev
);
return
0
;
}
struct
bus_type
bttv_sub_bus_type
=
{
.
name
=
"bttv-sub"
,
.
match
=
&
bttv_sub_bus_match
,
.
name
=
"bttv-sub"
,
.
match
=
&
bttv_sub_bus_match
,
.
probe
=
bttv_sub_probe
,
.
remove
=
bttv_sub_remove
,
};
EXPORT_SYMBOL
(
bttv_sub_bus_type
);
...
...
drivers/media/video/bttv.h
View file @
3e2b32b6
...
...
@@ -365,6 +365,8 @@ struct bttv_sub_device {
struct
bttv_sub_driver
{
struct
device_driver
drv
;
char
wanted
[
BUS_ID_SIZE
];
int
(
*
probe
)(
struct
bttv_sub_device
*
sub
);
void
(
*
remove
)(
struct
bttv_sub_device
*
sub
);
void
(
*
gpio_irq
)(
struct
bttv_sub_device
*
sub
);
};
#define to_bttv_sub_drv(x) container_of((x), struct bttv_sub_driver, drv)
...
...
drivers/mfd/mcp-core.c
View file @
3e2b32b6
...
...
@@ -77,6 +77,8 @@ static int mcp_bus_resume(struct device *dev)
static
struct
bus_type
mcp_bus_type
=
{
.
name
=
"mcp"
,
.
match
=
mcp_bus_match
,
.
probe
=
mcp_bus_probe
,
.
remove
=
mcp_bus_remove
,
.
suspend
=
mcp_bus_suspend
,
.
resume
=
mcp_bus_resume
,
};
...
...
@@ -227,8 +229,6 @@ EXPORT_SYMBOL(mcp_host_unregister);
int
mcp_driver_register
(
struct
mcp_driver
*
mcpdrv
)
{
mcpdrv
->
drv
.
bus
=
&
mcp_bus_type
;
mcpdrv
->
drv
.
probe
=
mcp_bus_probe
;
mcpdrv
->
drv
.
remove
=
mcp_bus_remove
;
return
driver_register
(
&
mcpdrv
->
drv
);
}
EXPORT_SYMBOL
(
mcp_driver_register
);
...
...
drivers/mmc/mmc_sysfs.c
View file @
3e2b32b6
...
...
@@ -136,17 +136,7 @@ static int mmc_bus_resume(struct device *dev)
return
ret
;
}
static
struct
bus_type
mmc_bus_type
=
{
.
name
=
"mmc"
,
.
dev_attrs
=
mmc_dev_attrs
,
.
match
=
mmc_bus_match
,
.
uevent
=
mmc_bus_uevent
,
.
suspend
=
mmc_bus_suspend
,
.
resume
=
mmc_bus_resume
,
};
static
int
mmc_drv_probe
(
struct
device
*
dev
)
static
int
mmc_bus_probe
(
struct
device
*
dev
)
{
struct
mmc_driver
*
drv
=
to_mmc_driver
(
dev
->
driver
);
struct
mmc_card
*
card
=
dev_to_mmc_card
(
dev
);
...
...
@@ -154,7 +144,7 @@ static int mmc_drv_probe(struct device *dev)
return
drv
->
probe
(
card
);
}
static
int
mmc_
drv
_remove
(
struct
device
*
dev
)
static
int
mmc_
bus
_remove
(
struct
device
*
dev
)
{
struct
mmc_driver
*
drv
=
to_mmc_driver
(
dev
->
driver
);
struct
mmc_card
*
card
=
dev_to_mmc_card
(
dev
);
...
...
@@ -164,6 +154,16 @@ static int mmc_drv_remove(struct device *dev)
return
0
;
}
static
struct
bus_type
mmc_bus_type
=
{
.
name
=
"mmc"
,
.
dev_attrs
=
mmc_dev_attrs
,
.
match
=
mmc_bus_match
,
.
uevent
=
mmc_bus_uevent
,
.
probe
=
mmc_bus_probe
,
.
remove
=
mmc_bus_remove
,
.
suspend
=
mmc_bus_suspend
,
.
resume
=
mmc_bus_resume
,
};
/**
* mmc_register_driver - register a media driver
...
...
@@ -172,8 +172,6 @@ static int mmc_drv_remove(struct device *dev)
int
mmc_register_driver
(
struct
mmc_driver
*
drv
)
{
drv
->
drv
.
bus
=
&
mmc_bus_type
;
drv
->
drv
.
probe
=
mmc_drv_probe
;
drv
->
drv
.
remove
=
mmc_drv_remove
;
return
driver_register
(
&
drv
->
drv
);
}
...
...
drivers/pci/pci-driver.c
View file @
3e2b32b6
...
...
@@ -380,8 +380,6 @@ int __pci_register_driver(struct pci_driver *drv, struct module *owner)
/* initialize common driver fields */
drv
->
driver
.
name
=
drv
->
name
;
drv
->
driver
.
bus
=
&
pci_bus_type
;
drv
->
driver
.
probe
=
pci_device_probe
;
drv
->
driver
.
remove
=
pci_device_remove
;
/* FIXME, once all of the existing PCI drivers have been fixed to set
* the pci shutdown function, this test can go away. */
if
(
!
drv
->
driver
.
shutdown
)
...
...
@@ -513,6 +511,8 @@ struct bus_type pci_bus_type = {
.
name
=
"pci"
,
.
match
=
pci_bus_match
,
.
uevent
=
pci_uevent
,
.
probe
=
pci_device_probe
,
.
remove
=
pci_device_remove
,
.
suspend
=
pci_device_suspend
,
.
resume
=
pci_device_resume
,
.
dev_attrs
=
pci_dev_attrs
,
...
...
drivers/pcmcia/ds.c
View file @
3e2b32b6
...
...
@@ -311,8 +311,6 @@ int pcmcia_register_driver(struct pcmcia_driver *driver)
/* initialize common fields */
driver
->
drv
.
bus
=
&
pcmcia_bus_type
;
driver
->
drv
.
owner
=
driver
->
owner
;
driver
->
drv
.
probe
=
pcmcia_device_probe
;
driver
->
drv
.
remove
=
pcmcia_device_remove
;
return
driver_register
(
&
driver
->
drv
);
}
...
...
@@ -1200,6 +1198,8 @@ struct bus_type pcmcia_bus_type = {
.
uevent
=
pcmcia_bus_uevent
,
.
match
=
pcmcia_bus_match
,
.
dev_attrs
=
pcmcia_dev_attrs
,
.
probe
=
pcmcia_device_probe
,
.
remove
=
pcmcia_device_remove
,
.
suspend
=
pcmcia_dev_suspend
,
.
resume
=
pcmcia_dev_resume
,
};
...
...
drivers/pnp/driver.c
View file @
3e2b32b6
...
...
@@ -195,6 +195,8 @@ static int pnp_bus_resume(struct device *dev)
struct
bus_type
pnp_bus_type
=
{
.
name
=
"pnp"
,
.
match
=
pnp_bus_match
,
.
probe
=
pnp_device_probe
,
.
remove
=
pnp_device_remove
,
.
suspend
=
pnp_bus_suspend
,
.
resume
=
pnp_bus_resume
,
};
...
...
@@ -215,8 +217,6 @@ int pnp_register_driver(struct pnp_driver *drv)
drv
->
driver
.
name
=
drv
->
name
;
drv
->
driver
.
bus
=
&
pnp_bus_type
;
drv
->
driver
.
probe
=
pnp_device_probe
;
drv
->
driver
.
remove
=
pnp_device_remove
;
count
=
driver_register
(
&
drv
->
driver
);
...
...
drivers/rapidio/rio-driver.c
View file @
3e2b32b6
...
...
@@ -147,8 +147,6 @@ int rio_register_driver(struct rio_driver *rdrv)
/* initialize common driver fields */
rdrv
->
driver
.
name
=
rdrv
->
name
;
rdrv
->
driver
.
bus
=
&
rio_bus_type
;
rdrv
->
driver
.
probe
=
rio_device_probe
;
rdrv
->
driver
.
remove
=
rio_device_remove
;
/* register with core */
return
driver_register
(
&
rdrv
->
driver
);
...
...
@@ -204,7 +202,9 @@ static struct device rio_bus = {
struct
bus_type
rio_bus_type
=
{
.
name
=
"rapidio"
,
.
match
=
rio_match_bus
,
.
dev_attrs
=
rio_dev_attrs
.
dev_attrs
=
rio_dev_attrs
,
.
probe
=
rio_device_probe
,
.
remove
=
rio_device_remove
,
};
/**
...
...
drivers/s390/cio/ccwgroup.c
View file @
3e2b32b6
...
...
@@ -52,11 +52,7 @@ ccwgroup_uevent (struct device *dev, char **envp, int num_envp, char *buffer,
return
0
;
}
static
struct
bus_type
ccwgroup_bus_type
=
{
.
name
=
"ccwgroup"
,
.
match
=
ccwgroup_bus_match
,
.
uevent
=
ccwgroup_uevent
,
};
static
struct
bus_type
ccwgroup_bus_type
;
static
inline
void
__ccwgroup_remove_symlinks
(
struct
ccwgroup_device
*
gdev
)
...
...
@@ -389,6 +385,14 @@ ccwgroup_remove (struct device *dev)
return
0
;
}
static
struct
bus_type
ccwgroup_bus_type
=
{
.
name
=
"ccwgroup"
,
.
match
=
ccwgroup_bus_match
,
.
uevent
=
ccwgroup_uevent
,
.
probe
=
ccwgroup_probe
,
.
remove
=
ccwgroup_remove
,
};
int
ccwgroup_driver_register
(
struct
ccwgroup_driver
*
cdriver
)
{
...
...
@@ -396,8 +400,6 @@ ccwgroup_driver_register (struct ccwgroup_driver *cdriver)
cdriver
->
driver
=
(
struct
device_driver
)
{
.
bus
=
&
ccwgroup_bus_type
,
.
name
=
cdriver
->
name
,
.
probe
=
ccwgroup_probe
,
.
remove
=
ccwgroup_remove
,
};
return
driver_register
(
&
cdriver
->
driver
);
...
...
drivers/s390/cio/css.c
View file @
3e2b32b6
...
...
@@ -542,9 +542,41 @@ css_bus_match (struct device *dev, struct device_driver *drv)
return
0
;
}
static
int
css_probe
(
struct
device
*
dev
)
{
struct
subchannel
*
sch
;
sch
=
to_subchannel
(
dev
);
sch
->
driver
=
container_of
(
dev
->
driver
,
struct
css_driver
,
drv
);
return
(
sch
->
driver
->
probe
?
sch
->
driver
->
probe
(
sch
)
:
0
);
}
static
int
css_remove
(
struct
device
*
dev
)
{
struct
subchannel
*
sch
;
sch
=
to_subchannel
(
dev
);
return
(
sch
->
driver
->
remove
?
sch
->
driver
->
remove
(
sch
)
:
0
);
}
static
void
css_shutdown
(
struct
device
*
dev
)
{
struct
subchannel
*
sch
;
sch
=
to_subchannel
(
dev
);
if
(
sch
->
driver
->
shutdown
)
sch
->
driver
->
shutdown
(
sch
);
}
struct
bus_type
css_bus_type
=
{
.
name
=
"css"
,
.
match
=
&
css_bus_match
,
.
name
=
"css"
,
.
match
=
css_bus_match
,
.
probe
=
css_probe
,
.
remove
=
css_remove
,
.
shutdown
=
css_shutdown
,
};
subsys_initcall
(
init_channel_subsystem
);
...
...
drivers/s390/cio/css.h
View file @
3e2b32b6
...
...
@@ -115,6 +115,7 @@ struct ccw_device_private {
* Currently, we only care about I/O subchannels (type 0), these
* have a ccw_device connected to them.
*/
struct
subchannel
;
struct
css_driver
{
unsigned
int
subchannel_type
;
struct
device_driver
drv
;
...
...
@@ -122,6 +123,9 @@ struct css_driver {
int
(
*
notify
)(
struct
device
*
,
int
);
void
(
*
verify
)(
struct
device
*
);
void
(
*
termination
)(
struct
device
*
);
int
(
*
probe
)(
struct
subchannel
*
);
int
(
*
remove
)(
struct
subchannel
*
);
void
(
*
shutdown
)(
struct
subchannel
*
);
};
/*
...
...
drivers/s390/cio/device.c
View file @
3e2b32b6
...
...
@@ -107,33 +107,29 @@ ccw_uevent (struct device *dev, char **envp, int num_envp,
return
0
;
}
struct
bus_type
ccw_bus_type
=
{
.
name
=
"ccw"
,
.
match
=
&
ccw_bus_match
,
.
uevent
=
&
ccw_uevent
,
};
struct
bus_type
ccw_bus_type
;
static
int
io_subchannel_probe
(
struct
device
*
);
static
int
io_subchannel_remove
(
struct
device
*
);
static
int
io_subchannel_probe
(
struct
subchannel
*
);
static
int
io_subchannel_remove
(
struct
subchannel
*
);
void
io_subchannel_irq
(
struct
device
*
);
static
int
io_subchannel_notify
(
struct
device
*
,
int
);
static
void
io_subchannel_verify
(
struct
device
*
);
static
void
io_subchannel_ioterm
(
struct
device
*
);
static
void
io_subchannel_shutdown
(
struct
device
*
);
static
void
io_subchannel_shutdown
(
struct
subchannel
*
);
struct
css_driver
io_subchannel_driver
=
{
.
subchannel_type
=
SUBCHANNEL_TYPE_IO
,
.
drv
=
{
.
name
=
"io_subchannel"
,
.
bus
=
&
css_bus_type
,
.
probe
=
&
io_subchannel_probe
,
.
remove
=
&
io_subchannel_remove
,
.
shutdown
=
&
io_subchannel_shutdown
,
},
.
irq
=
io_subchannel_irq
,
.
notify
=
io_subchannel_notify
,
.
verify
=
io_subchannel_verify
,
.
termination
=
io_subchannel_ioterm
,
.
probe
=
io_subchannel_probe
,
.
remove
=
io_subchannel_remove
,
.
shutdown
=
io_subchannel_shutdown
,
};
struct
workqueue_struct
*
ccw_device_work
;
...
...
@@ -803,14 +799,12 @@ io_subchannel_recog(struct ccw_device *cdev, struct subchannel *sch)
}
static
int
io_subchannel_probe
(
struct
device
*
pdev
)
io_subchannel_probe
(
struct
subchannel
*
sch
)
{
struct
subchannel
*
sch
;
struct
ccw_device
*
cdev
;
int
rc
;
unsigned
long
flags
;
sch
=
to_subchannel
(
pdev
);
if
(
sch
->
dev
.
driver_data
)
{
/*
* This subchannel already has an associated ccw_device.
...
...
@@ -846,7 +840,7 @@ io_subchannel_probe (struct device *pdev)
memset
(
cdev
->
private
,
0
,
sizeof
(
struct
ccw_device_private
));
atomic_set
(
&
cdev
->
private
->
onoff
,
0
);
cdev
->
dev
=
(
struct
device
)
{
.
parent
=
p
dev
,
.
parent
=
&
sch
->
dev
,
.
release
=
ccw_device_release
,
};
INIT_LIST_HEAD
(
&
cdev
->
private
->
kick_work
.
entry
);
...
...
@@ -859,7 +853,7 @@ io_subchannel_probe (struct device *pdev)
return
-
ENODEV
;
}
rc
=
io_subchannel_recog
(
cdev
,
to_subchannel
(
pdev
)
);
rc
=
io_subchannel_recog
(
cdev
,
sch
);
if
(
rc
)
{
spin_lock_irqsave
(
&
sch
->
lock
,
flags
);
sch
->
dev
.
driver_data
=
NULL
;
...
...
@@ -883,17 +877,17 @@ ccw_device_unregister(void *data)
}
static
int
io_subchannel_remove
(
struct
device
*
dev
)
io_subchannel_remove
(
struct
subchannel
*
sch
)
{
struct
ccw_device
*
cdev
;
unsigned
long
flags
;
if
(
!
dev
->
driver_data
)
if
(
!
sch
->
dev
.
driver_data
)
return
0
;
cdev
=
dev
->
driver_data
;
cdev
=
sch
->
dev
.
driver_data
;
/* Set ccw device to not operational and drop reference. */
spin_lock_irqsave
(
cdev
->
ccwlock
,
flags
);
dev
->
driver_data
=
NULL
;
sch
->
dev
.
driver_data
=
NULL
;
cdev
->
private
->
state
=
DEV_STATE_NOT_OPER
;
spin_unlock_irqrestore
(
cdev
->
ccwlock
,
flags
);
/*
...
...
@@ -948,14 +942,12 @@ io_subchannel_ioterm(struct device *dev)
}
static
void
io_subchannel_shutdown
(
struct
device
*
dev
)
io_subchannel_shutdown
(
struct
subchannel
*
sch
)
{
struct
subchannel
*
sch
;
struct
ccw_device
*
cdev
;
int
ret
;
sch
=
to_subchannel
(
dev
);
cdev
=
dev
->
driver_data
;
cdev
=
sch
->
dev
.
driver_data
;
if
(
cio_is_console
(
sch
->
schid
))
return
;
...
...
@@ -1129,6 +1121,14 @@ ccw_device_remove (struct device *dev)
return
0
;
}
struct
bus_type
ccw_bus_type
=
{
.
name
=
"ccw"
,
.
match
=
ccw_bus_match
,
.
uevent
=
ccw_uevent
,
.
probe
=
ccw_device_probe
,
.
remove
=
ccw_device_remove
,
};
int
ccw_driver_register
(
struct
ccw_driver
*
cdriver
)
{
...
...
@@ -1136,8 +1136,6 @@ ccw_driver_register (struct ccw_driver *cdriver)
drv
->
bus
=
&
ccw_bus_type
;
drv
->
name
=
cdriver
->
name
;
drv
->
probe
=
ccw_device_probe
;
drv
->
remove
=
ccw_device_remove
;
return
driver_register
(
drv
);
}
...
...
drivers/scsi/scsi_debug.c
View file @
3e2b32b6
...
...
@@ -221,8 +221,6 @@ static struct bus_type pseudo_lld_bus;
static
struct
device_driver
sdebug_driverfs_driver
=
{
.
name
=
sdebug_proc_name
,
.
bus
=
&
pseudo_lld_bus
,
.
probe
=
sdebug_driver_probe
,
.
remove
=
sdebug_driver_remove
,
};
static
const
int
check_condition_result
=
...
...
@@ -1796,6 +1794,8 @@ static int pseudo_lld_bus_match(struct device *dev,
static
struct
bus_type
pseudo_lld_bus
=
{
.
name
=
"pseudo"
,
.
match
=
pseudo_lld_bus_match
,
.
probe
=
sdebug_driver_probe
,
.
remove
=
sdebug_driver_remove
,
};
static
void
sdebug_release_adapter
(
struct
device
*
dev
)
...
...
drivers/sh/superhyway/superhyway.c
View file @
3e2b32b6
...
...
@@ -175,8 +175,6 @@ int superhyway_register_driver(struct superhyway_driver *drv)
{
drv
->
drv
.
name
=
drv
->
name
;
drv
->
drv
.
bus
=
&
superhyway_bus_type
;
drv
->
drv
.
probe
=
superhyway_device_probe
;
drv
->
drv
.
remove
=
superhyway_device_remove
;
return
driver_register
(
&
drv
->
drv
);
}
...
...
@@ -213,6 +211,8 @@ struct bus_type superhyway_bus_type = {
#ifdef CONFIG_SYSFS
.
dev_attrs
=
superhyway_dev_attrs
,
#endif
.
probe
=
superhyway_device_probe
,
.
remove
=
superhyway_device_remove
,
};
static
int
__init
superhyway_bus_init
(
void
)
...
...
drivers/usb/gadget/ether.c
View file @
3e2b32b6
...
...
@@ -2534,9 +2534,6 @@ static struct usb_gadget_driver eth_driver = {
.
driver
=
{
.
name
=
(
char
*
)
shortname
,
.
owner
=
THIS_MODULE
,
// .shutdown = ...
// .suspend = ...
// .resume = ...
},
};
...
...
drivers/usb/gadget/inode.c
View file @
3e2b32b6
...
...
@@ -1738,9 +1738,6 @@ static struct usb_gadget_driver gadgetfs_driver = {
.
driver
=
{
.
name
=
(
char
*
)
shortname
,
// .shutdown = ...
// .suspend = ...
// .resume = ...
},
};
...
...
drivers/usb/gadget/serial.c
View file @
3e2b32b6
...
...
@@ -374,9 +374,6 @@ static struct usb_gadget_driver gs_gadget_driver = {
.
disconnect
=
gs_disconnect
,
.
driver
=
{
.
name
=
GS_SHORT_NAME
,
/* .shutdown = ... */
/* .suspend = ... */
/* .resume = ... */
},
};
...
...
drivers/usb/gadget/zero.c
View file @
3e2b32b6
...
...
@@ -1303,9 +1303,6 @@ static struct usb_gadget_driver zero_driver = {
.
driver
=
{
.
name
=
(
char
*
)
shortname
,
.
owner
=
THIS_MODULE
,
// .shutdown = ...
// .suspend = ...
// .resume = ...
},
};
...
...
drivers/usb/serial/bus.c
View file @
3e2b32b6
...
...
@@ -37,11 +37,6 @@ static int usb_serial_device_match (struct device *dev, struct device_driver *dr
return
0
;
}
struct
bus_type
usb_serial_bus_type
=
{
.
name
=
"usb-serial"
,
.
match
=
usb_serial_device_match
,
};
static
int
usb_serial_device_probe
(
struct
device
*
dev
)
{
struct
usb_serial_driver
*
driver
;
...
...
@@ -109,14 +104,18 @@ static int usb_serial_device_remove (struct device *dev)
return
retval
;
}
struct
bus_type
usb_serial_bus_type
=
{
.
name
=
"usb-serial"
,
.
match
=
usb_serial_device_match
,
.
probe
=
usb_serial_device_probe
,
.
remove
=
usb_serial_device_remove
,
};
int
usb_serial_bus_register
(
struct
usb_serial_driver
*
driver
)
{
int
retval
;
driver
->
driver
.
bus
=
&
usb_serial_bus_type
;
driver
->
driver
.
probe
=
usb_serial_device_probe
;
driver
->
driver
.
remove
=
usb_serial_device_remove
;
retval
=
driver_register
(
&
driver
->
driver
);
return
retval
;
...
...
drivers/zorro/zorro-driver.c
View file @
3e2b32b6
...
...
@@ -77,7 +77,6 @@ int zorro_register_driver(struct zorro_driver *drv)
/* initialize common driver fields */
drv
->
driver
.
name
=
drv
->
name
;
drv
->
driver
.
bus
=
&
zorro_bus_type
;
drv
->
driver
.
probe
=
zorro_device_probe
;
/* register with core */
count
=
driver_register
(
&
drv
->
driver
);
...
...
@@ -132,7 +131,8 @@ static int zorro_bus_match(struct device *dev, struct device_driver *drv)
struct
bus_type
zorro_bus_type
=
{
.
name
=
"zorro"
,
.
match
=
zorro_bus_match
.
match
=
zorro_bus_match
,
.
probe
=
zorro_device_probe
,
};
...
...
include/linux/device.h
View file @
3e2b32b6
...
...
@@ -49,6 +49,9 @@ struct bus_type {
int
(
*
match
)(
struct
device
*
dev
,
struct
device_driver
*
drv
);
int
(
*
uevent
)(
struct
device
*
dev
,
char
**
envp
,
int
num_envp
,
char
*
buffer
,
int
buffer_size
);
int
(
*
probe
)(
struct
device
*
dev
);
int
(
*
remove
)(
struct
device
*
dev
);
void
(
*
shutdown
)(
struct
device
*
dev
);
int
(
*
suspend
)(
struct
device
*
dev
,
pm_message_t
state
);
int
(
*
resume
)(
struct
device
*
dev
);
};
...
...
include/linux/ide.h
View file @
3e2b32b6
...
...
@@ -983,8 +983,13 @@ typedef struct ide_driver_s {
ide_startstop_t
(
*
abort
)(
ide_drive_t
*
,
struct
request
*
rq
);
ide_proc_entry_t
*
proc
;
struct
device_driver
gen_driver
;
int
(
*
probe
)(
ide_drive_t
*
);
void
(
*
remove
)(
ide_drive_t
*
);
void
(
*
shutdown
)(
ide_drive_t
*
);
}
ide_driver_t
;
#define to_ide_driver(drv) container_of(drv, ide_driver_t, gen_driver)
int
generic_ide_ioctl
(
ide_drive_t
*
,
struct
file
*
,
struct
block_device
*
,
unsigned
,
unsigned
long
);
/*
...
...
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