aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWim Van Sebroeck <wim@iguana.be>2009-04-14 16:30:55 -0400
committerWim Van Sebroeck <wim@iguana.be>2009-06-18 03:30:44 -0400
commitb6bf291f1c5bc84272a138b7367741e459005a81 (patch)
tree1989891cd0eefe7143f3809ca36627fe61fb759c
parenta77dba7e444a6618cbb666d1b42b79842b9c0171 (diff)
[WATCHDOG] move platform probe and remove function to devinit and devexit
A pointer to probe and remove functions is passed to the core via platform_driver_register and so the function must not disappear when the .init sections are discarded. Otherwise (if also having HOTPLUG=y) unbinding and binding a device to the driver via sysfs will result in an oops as does a device being registered late. Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
-rw-r--r--drivers/watchdog/davinci_wdt.c6
-rw-r--r--drivers/watchdog/mtx-1_wdt.c6
-rw-r--r--drivers/watchdog/pnx4008_wdt.c6
-rw-r--r--drivers/watchdog/rdc321x_wdt.c4
-rw-r--r--drivers/watchdog/rm9k_wdt.c6
5 files changed, 14 insertions, 14 deletions
diff --git a/drivers/watchdog/davinci_wdt.c b/drivers/watchdog/davinci_wdt.c
index c51d0b0ea0c4..83e22e7ea4a2 100644
--- a/drivers/watchdog/davinci_wdt.c
+++ b/drivers/watchdog/davinci_wdt.c
@@ -193,7 +193,7 @@ static struct miscdevice davinci_wdt_miscdev = {
193 .fops = &davinci_wdt_fops, 193 .fops = &davinci_wdt_fops,
194}; 194};
195 195
196static int davinci_wdt_probe(struct platform_device *pdev) 196static int __devinit davinci_wdt_probe(struct platform_device *pdev)
197{ 197{
198 int ret = 0, size; 198 int ret = 0, size;
199 struct resource *res; 199 struct resource *res;
@@ -237,7 +237,7 @@ static int davinci_wdt_probe(struct platform_device *pdev)
237 return ret; 237 return ret;
238} 238}
239 239
240static int davinci_wdt_remove(struct platform_device *pdev) 240static int __devexit davinci_wdt_remove(struct platform_device *pdev)
241{ 241{
242 misc_deregister(&davinci_wdt_miscdev); 242 misc_deregister(&davinci_wdt_miscdev);
243 if (wdt_mem) { 243 if (wdt_mem) {
@@ -254,7 +254,7 @@ static struct platform_driver platform_wdt_driver = {
254 .owner = THIS_MODULE, 254 .owner = THIS_MODULE,
255 }, 255 },
256 .probe = davinci_wdt_probe, 256 .probe = davinci_wdt_probe,
257 .remove = davinci_wdt_remove, 257 .remove = __devexit_p(davinci_wdt_remove),
258}; 258};
259 259
260static int __init davinci_wdt_init(void) 260static int __init davinci_wdt_init(void)
diff --git a/drivers/watchdog/mtx-1_wdt.c b/drivers/watchdog/mtx-1_wdt.c
index 539b6f6ba7f1..08e8a6ab74e1 100644
--- a/drivers/watchdog/mtx-1_wdt.c
+++ b/drivers/watchdog/mtx-1_wdt.c
@@ -206,7 +206,7 @@ static struct miscdevice mtx1_wdt_misc = {
206}; 206};
207 207
208 208
209static int mtx1_wdt_probe(struct platform_device *pdev) 209static int __devinit mtx1_wdt_probe(struct platform_device *pdev)
210{ 210{
211 int ret; 211 int ret;
212 212
@@ -229,7 +229,7 @@ static int mtx1_wdt_probe(struct platform_device *pdev)
229 return 0; 229 return 0;
230} 230}
231 231
232static int mtx1_wdt_remove(struct platform_device *pdev) 232static int __devexit mtx1_wdt_remove(struct platform_device *pdev)
233{ 233{
234 /* FIXME: do we need to lock this test ? */ 234 /* FIXME: do we need to lock this test ? */
235 if (mtx1_wdt_device.queue) { 235 if (mtx1_wdt_device.queue) {
@@ -242,7 +242,7 @@ static int mtx1_wdt_remove(struct platform_device *pdev)
242 242
243static struct platform_driver mtx1_wdt = { 243static struct platform_driver mtx1_wdt = {
244 .probe = mtx1_wdt_probe, 244 .probe = mtx1_wdt_probe,
245 .remove = mtx1_wdt_remove, 245 .remove = __devexit_p(mtx1_wdt_remove),
246 .driver.name = "mtx1-wdt", 246 .driver.name = "mtx1-wdt",
247 .driver.owner = THIS_MODULE, 247 .driver.owner = THIS_MODULE,
248}; 248};
diff --git a/drivers/watchdog/pnx4008_wdt.c b/drivers/watchdog/pnx4008_wdt.c
index 64135195f827..f24d04132eda 100644
--- a/drivers/watchdog/pnx4008_wdt.c
+++ b/drivers/watchdog/pnx4008_wdt.c
@@ -246,7 +246,7 @@ static struct miscdevice pnx4008_wdt_miscdev = {
246 .fops = &pnx4008_wdt_fops, 246 .fops = &pnx4008_wdt_fops,
247}; 247};
248 248
249static int pnx4008_wdt_probe(struct platform_device *pdev) 249static int __devinit pnx4008_wdt_probe(struct platform_device *pdev)
250{ 250{
251 int ret = 0, size; 251 int ret = 0, size;
252 struct resource *res; 252 struct resource *res;
@@ -299,7 +299,7 @@ out:
299 return ret; 299 return ret;
300} 300}
301 301
302static int pnx4008_wdt_remove(struct platform_device *pdev) 302static int __devexit pnx4008_wdt_remove(struct platform_device *pdev)
303{ 303{
304 misc_deregister(&pnx4008_wdt_miscdev); 304 misc_deregister(&pnx4008_wdt_miscdev);
305 if (wdt_clk) { 305 if (wdt_clk) {
@@ -321,7 +321,7 @@ static struct platform_driver platform_wdt_driver = {
321 .owner = THIS_MODULE, 321 .owner = THIS_MODULE,
322 }, 322 },
323 .probe = pnx4008_wdt_probe, 323 .probe = pnx4008_wdt_probe,
324 .remove = pnx4008_wdt_remove, 324 .remove = __devexit_p(pnx4008_wdt_remove),
325}; 325};
326 326
327static int __init pnx4008_wdt_init(void) 327static int __init pnx4008_wdt_init(void)
diff --git a/drivers/watchdog/rdc321x_wdt.c b/drivers/watchdog/rdc321x_wdt.c
index 36e221beedcd..4976bfd1fce6 100644
--- a/drivers/watchdog/rdc321x_wdt.c
+++ b/drivers/watchdog/rdc321x_wdt.c
@@ -245,7 +245,7 @@ static int __devinit rdc321x_wdt_probe(struct platform_device *pdev)
245 return 0; 245 return 0;
246} 246}
247 247
248static int rdc321x_wdt_remove(struct platform_device *pdev) 248static int __devexit rdc321x_wdt_remove(struct platform_device *pdev)
249{ 249{
250 if (rdc321x_wdt_device.queue) { 250 if (rdc321x_wdt_device.queue) {
251 rdc321x_wdt_device.queue = 0; 251 rdc321x_wdt_device.queue = 0;
@@ -259,7 +259,7 @@ static int rdc321x_wdt_remove(struct platform_device *pdev)
259 259
260static struct platform_driver rdc321x_wdt_driver = { 260static struct platform_driver rdc321x_wdt_driver = {
261 .probe = rdc321x_wdt_probe, 261 .probe = rdc321x_wdt_probe,
262 .remove = rdc321x_wdt_remove, 262 .remove = __devexit_p(rdc321x_wdt_remove),
263 .driver = { 263 .driver = {
264 .owner = THIS_MODULE, 264 .owner = THIS_MODULE,
265 .name = "rdc321x-wdt", 265 .name = "rdc321x-wdt",
diff --git a/drivers/watchdog/rm9k_wdt.c b/drivers/watchdog/rm9k_wdt.c
index cce1982a1b58..2e4442642262 100644
--- a/drivers/watchdog/rm9k_wdt.c
+++ b/drivers/watchdog/rm9k_wdt.c
@@ -345,8 +345,8 @@ static const struct resource *wdt_gpi_get_resource(struct platform_device *pdv,
345 return platform_get_resource_byname(pdv, type, buf); 345 return platform_get_resource_byname(pdv, type, buf);
346} 346}
347 347
348/* No hotplugging on the platform bus - use __init */ 348/* No hotplugging on the platform bus - use __devinit */
349static int __init wdt_gpi_probe(struct platform_device *pdv) 349static int __devinit wdt_gpi_probe(struct platform_device *pdv)
350{ 350{
351 int res; 351 int res;
352 const struct resource 352 const struct resource
@@ -373,7 +373,7 @@ static int __init wdt_gpi_probe(struct platform_device *pdv)
373 return res; 373 return res;
374} 374}
375 375
376static int __exit wdt_gpi_remove(struct platform_device *dev) 376static int __devexit wdt_gpi_remove(struct platform_device *dev)
377{ 377{
378 int res; 378 int res;
379 379