aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/of/platform.c21
-rw-r--r--drivers/sbus/char/vfc.h2
-rw-r--r--drivers/sbus/char/vfc_dev.c5
3 files changed, 25 insertions, 3 deletions
diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index 864f09fd9f86..b47bb2d7476a 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -12,6 +12,7 @@
12 * 12 *
13 */ 13 */
14#include <linux/errno.h> 14#include <linux/errno.h>
15#include <linux/module.h>
15#include <linux/device.h> 16#include <linux/device.h>
16#include <linux/of_device.h> 17#include <linux/of_device.h>
17#include <linux/of_platform.h> 18#include <linux/of_platform.h>
@@ -94,3 +95,23 @@ int of_bus_type_init(struct bus_type *bus, const char *name)
94 bus->resume = of_platform_device_resume; 95 bus->resume = of_platform_device_resume;
95 return bus_register(bus); 96 return bus_register(bus);
96} 97}
98
99int of_register_driver(struct of_platform_driver *drv, struct bus_type *bus)
100{
101 /* initialize common driver fields */
102 if (!drv->driver.name)
103 drv->driver.name = drv->name;
104 if (!drv->driver.owner)
105 drv->driver.owner = drv->owner;
106 drv->driver.bus = bus;
107
108 /* register with core */
109 return driver_register(&drv->driver);
110}
111EXPORT_SYMBOL(of_register_driver);
112
113void of_unregister_driver(struct of_platform_driver *drv)
114{
115 driver_unregister(&drv->driver);
116}
117EXPORT_SYMBOL(of_unregister_driver);
diff --git a/drivers/sbus/char/vfc.h b/drivers/sbus/char/vfc.h
index 63941a259b92..f1aa1389ea4a 100644
--- a/drivers/sbus/char/vfc.h
+++ b/drivers/sbus/char/vfc.h
@@ -126,7 +126,7 @@ struct vfc_dev {
126 volatile struct vfc_regs __iomem *regs; 126 volatile struct vfc_regs __iomem *regs;
127 struct vfc_regs *phys_regs; 127 struct vfc_regs *phys_regs;
128 unsigned int control_reg; 128 unsigned int control_reg;
129 struct semaphore device_lock_sem; 129 struct mutex device_lock_mtx;
130 int instance; 130 int instance;
131 int busy; 131 int busy;
132 unsigned long which_io; 132 unsigned long which_io;
diff --git a/drivers/sbus/char/vfc_dev.c b/drivers/sbus/char/vfc_dev.c
index 9269f7fbd363..e7a1642b2aa4 100644
--- a/drivers/sbus/char/vfc_dev.c
+++ b/drivers/sbus/char/vfc_dev.c
@@ -22,6 +22,7 @@
22#include <linux/fs.h> 22#include <linux/fs.h>
23#include <linux/delay.h> 23#include <linux/delay.h>
24#include <linux/spinlock.h> 24#include <linux/spinlock.h>
25#include <linux/mutex.h>
25#include <linux/mm.h> 26#include <linux/mm.h>
26 27
27#include <asm/openprom.h> 28#include <asm/openprom.h>
@@ -54,12 +55,12 @@ static unsigned char saa9051_init_array[VFC_SAA9051_NR] = {
54 55
55void vfc_lock_device(struct vfc_dev *dev) 56void vfc_lock_device(struct vfc_dev *dev)
56{ 57{
57 down(&dev->device_lock_sem); 58 mutex_lock(&dev->device_lock_mtx);
58} 59}
59 60
60void vfc_unlock_device(struct vfc_dev *dev) 61void vfc_unlock_device(struct vfc_dev *dev)
61{ 62{
62 up(&dev->device_lock_sem); 63 mutex_unlock(&dev->device_lock_mtx);
63} 64}
64 65
65 66