diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/of/platform.c | 21 | ||||
-rw-r--r-- | drivers/sbus/char/vfc.h | 2 | ||||
-rw-r--r-- | drivers/sbus/char/vfc_dev.c | 5 |
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 | |||
99 | int 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 | } | ||
111 | EXPORT_SYMBOL(of_register_driver); | ||
112 | |||
113 | void of_unregister_driver(struct of_platform_driver *drv) | ||
114 | { | ||
115 | driver_unregister(&drv->driver); | ||
116 | } | ||
117 | EXPORT_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 | ||
55 | void vfc_lock_device(struct vfc_dev *dev) | 56 | void 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 | ||
60 | void vfc_unlock_device(struct vfc_dev *dev) | 61 | void 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 | ||