Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[WATCHDOG] omap_wdt.c: cleanup a bit omap_wdt.c

Trivial cleanup patch.

Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>

authored by

Felipe Balbi and committed by
Wim Van Sebroeck
b3112180 9f69e3b0

+78 -54
+78 -54
drivers/watchdog/omap_wdt.c
··· 70 70 static void omap_wdt_ping(struct omap_wdt_dev *wdev) 71 71 { 72 72 void __iomem *base = wdev->base; 73 + 73 74 /* wait for posted write to complete */ 74 75 while ((__raw_readl(base + OMAP_WATCHDOG_WPS)) & 0x08) 75 76 cpu_relax(); 77 + 76 78 wdt_trgr_pattern = ~wdt_trgr_pattern; 77 79 __raw_writel(wdt_trgr_pattern, (base + OMAP_WATCHDOG_TGR)); 80 + 78 81 /* wait for posted write to complete */ 79 82 while ((__raw_readl(base + OMAP_WATCHDOG_WPS)) & 0x08) 80 83 cpu_relax(); ··· 86 83 87 84 static void omap_wdt_enable(struct omap_wdt_dev *wdev) 88 85 { 89 - void __iomem *base; 90 - base = wdev->base; 86 + void __iomem *base = wdev->base; 87 + 91 88 /* Sequence to enable the watchdog */ 92 89 __raw_writel(0xBBBB, base + OMAP_WATCHDOG_SPR); 93 90 while ((__raw_readl(base + OMAP_WATCHDOG_WPS)) & 0x10) 94 91 cpu_relax(); 92 + 95 93 __raw_writel(0x4444, base + OMAP_WATCHDOG_SPR); 96 94 while ((__raw_readl(base + OMAP_WATCHDOG_WPS)) & 0x10) 97 95 cpu_relax(); ··· 100 96 101 97 static void omap_wdt_disable(struct omap_wdt_dev *wdev) 102 98 { 103 - void __iomem *base; 104 - base = wdev->base; 99 + void __iomem *base = wdev->base; 100 + 105 101 /* sequence required to disable watchdog */ 106 102 __raw_writel(0xAAAA, base + OMAP_WATCHDOG_SPR); /* TIMER_MODE */ 107 103 while (__raw_readl(base + OMAP_WATCHDOG_WPS) & 0x10) 108 104 cpu_relax(); 105 + 109 106 __raw_writel(0x5555, base + OMAP_WATCHDOG_SPR); /* TIMER_MODE */ 110 107 while (__raw_readl(base + OMAP_WATCHDOG_WPS) & 0x10) 111 108 cpu_relax(); ··· 124 119 static void omap_wdt_set_timeout(struct omap_wdt_dev *wdev) 125 120 { 126 121 u32 pre_margin = GET_WLDR_VAL(timer_margin); 127 - void __iomem *base; 128 - base = wdev->base; 122 + void __iomem *base = wdev->base; 129 123 130 124 /* just count up at 32 KHz */ 131 125 while (__raw_readl(base + OMAP_WATCHDOG_WPS) & 0x04) 132 126 cpu_relax(); 127 + 133 128 __raw_writel(pre_margin, base + OMAP_WATCHDOG_LDR); 134 129 while (__raw_readl(base + OMAP_WATCHDOG_WPS) & 0x04) 135 130 cpu_relax(); ··· 138 133 /* 139 134 * Allow only one task to hold it open 140 135 */ 141 - 142 136 static int omap_wdt_open(struct inode *inode, struct file *file) 143 137 { 144 - struct omap_wdt_dev *wdev; 145 - void __iomem *base; 146 - wdev = platform_get_drvdata(omap_wdt_dev); 147 - base = wdev->base; 138 + struct omap_wdt_dev *wdev = platform_get_drvdata(omap_wdt_dev); 139 + void __iomem *base = wdev->base; 140 + 148 141 if (test_and_set_bit(1, (unsigned long *)&(wdev->omap_wdt_users))) 149 142 return -EBUSY; 150 143 ··· 157 154 /* initialize prescaler */ 158 155 while (__raw_readl(base + OMAP_WATCHDOG_WPS) & 0x01) 159 156 cpu_relax(); 157 + 160 158 __raw_writel((1 << 5) | (PTV << 2), base + OMAP_WATCHDOG_CNTRL); 161 159 while (__raw_readl(base + OMAP_WATCHDOG_WPS) & 0x01) 162 160 cpu_relax(); ··· 166 162 167 163 omap_wdt_set_timeout(wdev); 168 164 omap_wdt_enable(wdev); 165 + 169 166 return nonseekable_open(inode, file); 170 167 } 171 168 172 169 static int omap_wdt_release(struct inode *inode, struct file *file) 173 170 { 174 - struct omap_wdt_dev *wdev; 175 - wdev = file->private_data; 171 + struct omap_wdt_dev *wdev = file->private_data; 172 + 176 173 /* 177 174 * Shut off the timer unless NOWAYOUT is defined. 178 175 */ ··· 192 187 printk(KERN_CRIT "omap_wdt: Unexpected close, not stopping!\n"); 193 188 #endif 194 189 wdev->omap_wdt_users = 0; 190 + 195 191 return 0; 196 192 } 197 193 198 194 static ssize_t omap_wdt_write(struct file *file, const char __user *data, 199 195 size_t len, loff_t *ppos) 200 196 { 201 - struct omap_wdt_dev *wdev; 202 - wdev = file->private_data; 197 + struct omap_wdt_dev *wdev = file->private_data; 198 + 203 199 /* Refresh LOAD_TIME. */ 204 200 if (len) { 205 201 spin_lock(&wdt_lock); ··· 220 214 .options = WDIOF_SETTIMEOUT, 221 215 .firmware_version = 0, 222 216 }; 217 + 223 218 wdev = file->private_data; 224 219 225 220 switch (cmd) { ··· 269 262 .release = omap_wdt_release, 270 263 }; 271 264 272 - 273 265 static int __init omap_wdt_probe(struct platform_device *pdev) 274 266 { 275 267 struct resource *res, *mem; 276 - int ret; 277 268 struct omap_wdt_dev *wdev; 269 + int ret; 278 270 279 271 /* reserve static register mappings */ 280 272 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 281 - if (!res) 282 - return -ENOENT; 273 + if (!res) { 274 + ret = -ENOENT; 275 + goto err_get_resource; 276 + } 283 277 284 - if (omap_wdt_dev) 285 - return -EBUSY; 278 + if (omap_wdt_dev) { 279 + ret = -EBUSY; 280 + goto err_busy; 281 + } 286 282 287 283 mem = request_mem_region(res->start, res->end - res->start + 1, 288 284 pdev->name); 289 - if (mem == NULL) 290 - return -EBUSY; 285 + if (!mem) { 286 + ret = -EBUSY; 287 + goto err_busy; 288 + } 291 289 292 290 wdev = kzalloc(sizeof(struct omap_wdt_dev), GFP_KERNEL); 293 291 if (!wdev) { 294 292 ret = -ENOMEM; 295 - goto fail; 293 + goto err_kzalloc; 296 294 } 295 + 297 296 wdev->omap_wdt_users = 0; 298 297 wdev->mem = mem; 299 298 ··· 308 295 if (IS_ERR(wdev->armwdt_ck)) { 309 296 ret = PTR_ERR(wdev->armwdt_ck); 310 297 wdev->armwdt_ck = NULL; 311 - goto fail; 298 + goto err_clk; 312 299 } 313 300 } 314 301 ··· 317 304 if (IS_ERR(wdev->mpu_wdt_ick)) { 318 305 ret = PTR_ERR(wdev->mpu_wdt_ick); 319 306 wdev->mpu_wdt_ick = NULL; 320 - goto fail; 307 + goto err_clk; 321 308 } 322 309 wdev->mpu_wdt_fck = clk_get(&pdev->dev, "mpu_wdt_fck"); 323 310 if (IS_ERR(wdev->mpu_wdt_fck)) { 324 311 ret = PTR_ERR(wdev->mpu_wdt_fck); 325 312 wdev->mpu_wdt_fck = NULL; 326 - goto fail; 313 + goto err_clk; 327 314 } 328 315 } 329 316 ··· 332 319 if (IS_ERR(wdev->mpu_wdt_ick)) { 333 320 ret = PTR_ERR(wdev->mpu_wdt_ick); 334 321 wdev->mpu_wdt_ick = NULL; 335 - goto fail; 322 + goto err_clk; 336 323 } 337 324 wdev->mpu_wdt_fck = clk_get(&pdev->dev, "wdt2_fck"); 338 325 if (IS_ERR(wdev->mpu_wdt_fck)) { 339 326 ret = PTR_ERR(wdev->mpu_wdt_fck); 340 327 wdev->mpu_wdt_fck = NULL; 341 - goto fail; 328 + goto err_clk; 342 329 } 343 330 } 344 331 wdev->base = ioremap(res->start, res->end - res->start + 1); 345 332 if (!wdev->base) { 346 333 ret = -ENOMEM; 347 - goto fail; 334 + goto err_ioremap; 348 335 } 349 336 350 337 platform_set_drvdata(pdev, wdev); ··· 359 346 360 347 ret = misc_register(&(wdev->omap_wdt_miscdev)); 361 348 if (ret) 362 - goto fail; 349 + goto err_misc; 363 350 364 351 pr_info("OMAP Watchdog Timer Rev 0x%02x: initial timeout %d sec\n", 365 352 __raw_readl(wdev->base + OMAP_WATCHDOG_REV) & 0xFF, ··· 372 359 373 360 return 0; 374 361 375 - fail: 376 - if (wdev) { 377 - platform_set_drvdata(pdev, NULL); 378 - if (wdev->armwdt_ck) 379 - clk_put(wdev->armwdt_ck); 380 - if (wdev->mpu_wdt_ick) 381 - clk_put(wdev->mpu_wdt_ick); 382 - if (wdev->mpu_wdt_fck) 383 - clk_put(wdev->mpu_wdt_fck); 384 - iounmap(wdev->base); 385 - kfree(wdev); 386 - } 387 - if (mem) { 388 - release_mem_region(res->start, res->end - res->start + 1); 389 - } 362 + err_misc: 363 + platform_set_drvdata(pdev, NULL); 364 + iounmap(wdev->base); 365 + 366 + err_ioremap: 367 + wdev->base = NULL; 368 + 369 + err_clk: 370 + if (wdev->armwdt_ck) 371 + clk_put(wdev->armwdt_ck); 372 + if (wdev->mpu_wdt_ick) 373 + clk_put(wdev->mpu_wdt_ick); 374 + if (wdev->mpu_wdt_fck) 375 + clk_put(wdev->mpu_wdt_fck); 376 + kfree(wdev); 377 + 378 + err_kzalloc: 379 + release_mem_region(res->start, res->end - res->start + 1); 380 + 381 + err_busy: 382 + err_get_resource: 383 + 390 384 return ret; 391 385 } 392 386 393 387 static void omap_wdt_shutdown(struct platform_device *pdev) 394 388 { 395 - struct omap_wdt_dev *wdev; 396 - wdev = platform_get_drvdata(pdev); 389 + struct omap_wdt_dev *wdev = platform_get_drvdata(pdev); 397 390 398 391 if (wdev->omap_wdt_users) 399 392 omap_wdt_disable(wdev); ··· 407 388 408 389 static int omap_wdt_remove(struct platform_device *pdev) 409 390 { 410 - struct omap_wdt_dev *wdev; 411 - wdev = platform_get_drvdata(pdev); 391 + struct omap_wdt_dev *wdev = platform_get_drvdata(pdev); 412 392 struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 413 393 414 394 if (!res) ··· 416 398 misc_deregister(&(wdev->omap_wdt_miscdev)); 417 399 release_mem_region(res->start, res->end - res->start + 1); 418 400 platform_set_drvdata(pdev, NULL); 401 + 419 402 if (wdev->armwdt_ck) { 420 403 clk_put(wdev->armwdt_ck); 421 404 wdev->armwdt_ck = NULL; 422 405 } 406 + 423 407 if (wdev->mpu_wdt_ick) { 424 408 clk_put(wdev->mpu_wdt_ick); 425 409 wdev->mpu_wdt_ick = NULL; 426 410 } 411 + 427 412 if (wdev->mpu_wdt_fck) { 428 413 clk_put(wdev->mpu_wdt_fck); 429 414 wdev->mpu_wdt_fck = NULL; ··· 435 414 436 415 kfree(wdev); 437 416 omap_wdt_dev = NULL; 417 + 438 418 return 0; 439 419 } 440 420 ··· 449 427 450 428 static int omap_wdt_suspend(struct platform_device *pdev, pm_message_t state) 451 429 { 452 - struct omap_wdt_dev *wdev; 453 - wdev = platform_get_drvdata(pdev); 430 + struct omap_wdt_dev *wdev = platform_get_drvdata(pdev); 431 + 454 432 if (wdev->omap_wdt_users) 455 433 omap_wdt_disable(wdev); 434 + 456 435 return 0; 457 436 } 458 437 459 438 static int omap_wdt_resume(struct platform_device *pdev) 460 439 { 461 - struct omap_wdt_dev *wdev; 462 - wdev = platform_get_drvdata(pdev); 440 + struct omap_wdt_dev *wdev = platform_get_drvdata(pdev); 441 + 463 442 if (wdev->omap_wdt_users) { 464 443 omap_wdt_enable(wdev); 465 444 omap_wdt_ping(wdev); 466 445 } 446 + 467 447 return 0; 468 448 } 469 449