diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/watchdog/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/watchdog/booke_wdt.c | 6 | ||||
| -rw-r--r-- | drivers/watchdog/hpwdt.c | 5 | ||||
| -rw-r--r-- | drivers/watchdog/pnx4008_wdt.c | 2 | ||||
| -rw-r--r-- | drivers/watchdog/s3c2410_wdt.c | 57 | 
5 files changed, 41 insertions, 31 deletions
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig index 877b107f77a..df9e8f0e327 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig @@ -1098,7 +1098,7 @@ config BOOKE_WDT_DEFAULT_TIMEOUT  	  For Freescale Book-E processors, this is a number between 0 and 63.  	  For other Book-E processors, this is a number between 0 and 3. -	  The value can be overidden by the wdt_period command-line parameter. +	  The value can be overridden by the wdt_period command-line parameter.  # PPC64 Architecture diff --git a/drivers/watchdog/booke_wdt.c b/drivers/watchdog/booke_wdt.c index 337265b4730..7c0fdfca264 100644 --- a/drivers/watchdog/booke_wdt.c +++ b/drivers/watchdog/booke_wdt.c @@ -198,9 +198,13 @@ static long booke_wdt_ioctl(struct file *file,  		booke_wdt_period = tmp;  #endif  		booke_wdt_set(); -		return 0; +		/* Fall */  	case WDIOC_GETTIMEOUT: +#ifdef	CONFIG_FSL_BOOKE +		return put_user(period_to_sec(booke_wdt_period), p); +#else  		return put_user(booke_wdt_period, p); +#endif  	default:  		return -ENOTTY;  	} diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c index 8464ea1c36a..3c166d3f4e5 100644 --- a/drivers/watchdog/hpwdt.c +++ b/drivers/watchdog/hpwdt.c @@ -231,7 +231,7 @@ static int __devinit cru_detect(unsigned long map_entry,  	cmn_regs.u1.reax = CRU_BIOS_SIGNATURE_VALUE; -	set_memory_x((unsigned long)bios32_entrypoint, (2 * PAGE_SIZE)); +	set_memory_x((unsigned long)bios32_map, 2);  	asminline_call(&cmn_regs, bios32_entrypoint);  	if (cmn_regs.u1.ral != 0) { @@ -250,7 +250,8 @@ static int __devinit cru_detect(unsigned long map_entry,  			cru_rom_addr =  				ioremap(cru_physical_address, cru_length);  			if (cru_rom_addr) { -				set_memory_x((unsigned long)cru_rom_addr, cru_length); +				set_memory_x((unsigned long)cru_rom_addr & PAGE_MASK, +					(cru_length + PAGE_SIZE - 1) >> PAGE_SHIFT);  				retval = 0;  			}  		} diff --git a/drivers/watchdog/pnx4008_wdt.c b/drivers/watchdog/pnx4008_wdt.c index 8e210aafdfd..dfae030a7ef 100644 --- a/drivers/watchdog/pnx4008_wdt.c +++ b/drivers/watchdog/pnx4008_wdt.c @@ -264,7 +264,7 @@ static int __devinit pnx4008_wdt_probe(struct platform_device *pdev)  	wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);  	if (wdt_mem == NULL) {  		printk(KERN_INFO MODULE_NAME -			"failed to get memory region resouce\n"); +			"failed to get memory region resource\n");  		return -ENOENT;  	} diff --git a/drivers/watchdog/s3c2410_wdt.c b/drivers/watchdog/s3c2410_wdt.c index 4bc3744e14e..404172f02c9 100644 --- a/drivers/watchdog/s3c2410_wdt.c +++ b/drivers/watchdog/s3c2410_wdt.c @@ -312,18 +312,26 @@ static int __devinit s3c2410wdt_probe(struct platform_device *pdev)  	dev = &pdev->dev;  	wdt_dev = &pdev->dev; -	/* get the memory region for the watchdog timer */ -  	wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);  	if (wdt_mem == NULL) {  		dev_err(dev, "no memory resource specified\n");  		return -ENOENT;  	} +	wdt_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); +	if (wdt_irq == NULL) { +		dev_err(dev, "no irq resource specified\n"); +		ret = -ENOENT; +		goto err; +	} + +	/* get the memory region for the watchdog timer */ +  	size = resource_size(wdt_mem);  	if (!request_mem_region(wdt_mem->start, size, pdev->name)) {  		dev_err(dev, "failed to get memory region\n"); -		return -EBUSY; +		ret = -EBUSY; +		goto err;  	}  	wdt_base = ioremap(wdt_mem->start, size); @@ -335,29 +343,17 @@ static int __devinit s3c2410wdt_probe(struct platform_device *pdev)  	DBG("probe: mapped wdt_base=%p\n", wdt_base); -	wdt_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); -	if (wdt_irq == NULL) { -		dev_err(dev, "no irq resource specified\n"); -		ret = -ENOENT; -		goto err_map; -	} - -	ret = request_irq(wdt_irq->start, s3c2410wdt_irq, 0, pdev->name, pdev); -	if (ret != 0) { -		dev_err(dev, "failed to install irq (%d)\n", ret); -		goto err_map; -	} -  	wdt_clock = clk_get(&pdev->dev, "watchdog");  	if (IS_ERR(wdt_clock)) {  		dev_err(dev, "failed to find watchdog clock source\n");  		ret = PTR_ERR(wdt_clock); -		goto err_irq; +		goto err_map;  	}  	clk_enable(wdt_clock); -	if (s3c2410wdt_cpufreq_register() < 0) { +	ret = s3c2410wdt_cpufreq_register(); +	if (ret < 0) {  		printk(KERN_ERR PFX "failed to register cpufreq\n");  		goto err_clk;  	} @@ -378,12 +374,18 @@ static int __devinit s3c2410wdt_probe(struct platform_device *pdev)  							"cannot start\n");  	} +	ret = request_irq(wdt_irq->start, s3c2410wdt_irq, 0, pdev->name, pdev); +	if (ret != 0) { +		dev_err(dev, "failed to install irq (%d)\n", ret); +		goto err_cpufreq; +	} +  	watchdog_set_nowayout(&s3c2410_wdd, nowayout);  	ret = watchdog_register_device(&s3c2410_wdd);  	if (ret) {  		dev_err(dev, "cannot register watchdog (%d)\n", ret); -		goto err_cpufreq; +		goto err_irq;  	}  	if (tmr_atboot && started == 0) { @@ -408,23 +410,26 @@ static int __devinit s3c2410wdt_probe(struct platform_device *pdev)  	return 0; + err_irq: +	free_irq(wdt_irq->start, pdev); +   err_cpufreq:  	s3c2410wdt_cpufreq_deregister();   err_clk:  	clk_disable(wdt_clock);  	clk_put(wdt_clock); - - err_irq: -	free_irq(wdt_irq->start, pdev); +	wdt_clock = NULL;   err_map:  	iounmap(wdt_base);   err_req:  	release_mem_region(wdt_mem->start, size); -	wdt_mem = NULL; + err: +	wdt_irq = NULL; +	wdt_mem = NULL;  	return ret;  } @@ -432,18 +437,18 @@ static int __devexit s3c2410wdt_remove(struct platform_device *dev)  {  	watchdog_unregister_device(&s3c2410_wdd); +	free_irq(wdt_irq->start, dev); +  	s3c2410wdt_cpufreq_deregister();  	clk_disable(wdt_clock);  	clk_put(wdt_clock);  	wdt_clock = NULL; -	free_irq(wdt_irq->start, dev); -	wdt_irq = NULL; -  	iounmap(wdt_base);  	release_mem_region(wdt_mem->start, resource_size(wdt_mem)); +	wdt_irq = NULL;  	wdt_mem = NULL;  	return 0;  }  |