mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
Merge branch 'kirkwood/dt' into next/dt2
This was part of the for-next branch earlier but for some reasons a rebuild of the tree missed it, so I'm putting it back in now. Signed-off-by: Arnd Bergmann <[email protected]>
This commit is contained in:
commit
7d1206bc28
74 changed files with 2034 additions and 570 deletions
|
|
@ -28,9 +28,9 @@
|
|||
/*
|
||||
* Watchdog timer block registers.
|
||||
*/
|
||||
#define TIMER_CTRL (TIMER_VIRT_BASE + 0x0000)
|
||||
#define TIMER_CTRL 0x0000
|
||||
#define WDT_EN 0x0010
|
||||
#define WDT_VAL (TIMER_VIRT_BASE + 0x0024)
|
||||
#define WDT_VAL 0x0024
|
||||
|
||||
#define WDT_MAX_CYCLE_COUNT 0xffffffff
|
||||
#define WDT_IN_USE 0
|
||||
|
|
@ -40,6 +40,7 @@ static int nowayout = WATCHDOG_NOWAYOUT;
|
|||
static int heartbeat = -1; /* module parameter (seconds) */
|
||||
static unsigned int wdt_max_duration; /* (seconds) */
|
||||
static unsigned int wdt_tclk;
|
||||
static void __iomem *wdt_reg;
|
||||
static unsigned long wdt_status;
|
||||
static DEFINE_SPINLOCK(wdt_lock);
|
||||
|
||||
|
|
@ -48,7 +49,7 @@ static void orion_wdt_ping(void)
|
|||
spin_lock(&wdt_lock);
|
||||
|
||||
/* Reload watchdog duration */
|
||||
writel(wdt_tclk * heartbeat, WDT_VAL);
|
||||
writel(wdt_tclk * heartbeat, wdt_reg + WDT_VAL);
|
||||
|
||||
spin_unlock(&wdt_lock);
|
||||
}
|
||||
|
|
@ -60,7 +61,7 @@ static void orion_wdt_enable(void)
|
|||
spin_lock(&wdt_lock);
|
||||
|
||||
/* Set watchdog duration */
|
||||
writel(wdt_tclk * heartbeat, WDT_VAL);
|
||||
writel(wdt_tclk * heartbeat, wdt_reg + WDT_VAL);
|
||||
|
||||
/* Clear watchdog timer interrupt */
|
||||
reg = readl(BRIDGE_CAUSE);
|
||||
|
|
@ -68,9 +69,9 @@ static void orion_wdt_enable(void)
|
|||
writel(reg, BRIDGE_CAUSE);
|
||||
|
||||
/* Enable watchdog timer */
|
||||
reg = readl(TIMER_CTRL);
|
||||
reg = readl(wdt_reg + TIMER_CTRL);
|
||||
reg |= WDT_EN;
|
||||
writel(reg, TIMER_CTRL);
|
||||
writel(reg, wdt_reg + TIMER_CTRL);
|
||||
|
||||
/* Enable reset on watchdog */
|
||||
reg = readl(RSTOUTn_MASK);
|
||||
|
|
@ -92,9 +93,9 @@ static void orion_wdt_disable(void)
|
|||
writel(reg, RSTOUTn_MASK);
|
||||
|
||||
/* Disable watchdog timer */
|
||||
reg = readl(TIMER_CTRL);
|
||||
reg = readl(wdt_reg + TIMER_CTRL);
|
||||
reg &= ~WDT_EN;
|
||||
writel(reg, TIMER_CTRL);
|
||||
writel(reg, wdt_reg + TIMER_CTRL);
|
||||
|
||||
spin_unlock(&wdt_lock);
|
||||
}
|
||||
|
|
@ -102,7 +103,7 @@ static void orion_wdt_disable(void)
|
|||
static int orion_wdt_get_timeleft(int *time_left)
|
||||
{
|
||||
spin_lock(&wdt_lock);
|
||||
*time_left = readl(WDT_VAL) / wdt_tclk;
|
||||
*time_left = readl(wdt_reg + WDT_VAL) / wdt_tclk;
|
||||
spin_unlock(&wdt_lock);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -236,6 +237,7 @@ static struct miscdevice orion_wdt_miscdev = {
|
|||
static int __devinit orion_wdt_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct orion_wdt_platform_data *pdata = pdev->dev.platform_data;
|
||||
struct resource *res;
|
||||
int ret;
|
||||
|
||||
if (pdata) {
|
||||
|
|
@ -245,6 +247,10 @@ static int __devinit orion_wdt_probe(struct platform_device *pdev)
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
|
||||
wdt_reg = ioremap(res->start, resource_size(res));
|
||||
|
||||
if (orion_wdt_miscdev.parent)
|
||||
return -EBUSY;
|
||||
orion_wdt_miscdev.parent = &pdev->dev;
|
||||
|
|
|
|||
Loading…
Reference in a new issue