root/arch/arm/mach-bcm/board_bcm281xx.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. bcm281xx_restart
  2. bcm281xx_init

   1 /*
   2  * Copyright (C) 2012-2014 Broadcom Corporation
   3  *
   4  * This program is free software; you can redistribute it and/or
   5  * modify it under the terms of the GNU General Public License as
   6  * published by the Free Software Foundation version 2.
   7  *
   8  * This program is distributed "as is" WITHOUT ANY WARRANTY of any
   9  * kind, whether express or implied; without even the implied warranty
  10  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11  * GNU General Public License for more details.
  12  */
  13 
  14 #include <linux/clocksource.h>
  15 #include <linux/of_address.h>
  16 
  17 #include <asm/mach/arch.h>
  18 
  19 #include "kona_l2_cache.h"
  20 
  21 #define SECWDOG_OFFSET                  0x00000000
  22 #define SECWDOG_RESERVED_MASK           0xe2000000
  23 #define SECWDOG_WD_LOAD_FLAG_MASK       0x10000000
  24 #define SECWDOG_EN_MASK                 0x08000000
  25 #define SECWDOG_SRSTEN_MASK             0x04000000
  26 #define SECWDOG_CLKS_SHIFT              20
  27 #define SECWDOG_COUNT_SHIFT             0
  28 
  29 static void bcm281xx_restart(enum reboot_mode mode, const char *cmd)
  30 {
  31         uint32_t val;
  32         void __iomem *base;
  33         struct device_node *np_wdog;
  34 
  35         np_wdog = of_find_compatible_node(NULL, NULL, "brcm,kona-wdt");
  36         if (!np_wdog) {
  37                 pr_emerg("Couldn't find brcm,kona-wdt\n");
  38                 return;
  39         }
  40         base = of_iomap(np_wdog, 0);
  41         of_node_put(np_wdog);
  42         if (!base) {
  43                 pr_emerg("Couldn't map brcm,kona-wdt\n");
  44                 return;
  45         }
  46 
  47         /* Enable watchdog with short timeout (244us). */
  48         val = readl(base + SECWDOG_OFFSET);
  49         val &= SECWDOG_RESERVED_MASK | SECWDOG_WD_LOAD_FLAG_MASK;
  50         val |= SECWDOG_EN_MASK | SECWDOG_SRSTEN_MASK |
  51                 (0x15 << SECWDOG_CLKS_SHIFT) |
  52                 (0x8 << SECWDOG_COUNT_SHIFT);
  53         writel(val, base + SECWDOG_OFFSET);
  54 
  55         /* Wait for reset */
  56         while (1);
  57 }
  58 
  59 static void __init bcm281xx_init(void)
  60 {
  61         kona_l2_cache_init();
  62 }
  63 
  64 static const char * const bcm281xx_dt_compat[] = {
  65         "brcm,bcm11351",        /* Have to use the first number upstreamed */
  66         NULL,
  67 };
  68 
  69 DT_MACHINE_START(BCM281XX_DT, "BCM281xx Broadcom Application Processor")
  70         .init_machine = bcm281xx_init,
  71         .restart = bcm281xx_restart,
  72         .dt_compat = bcm281xx_dt_compat,
  73 MACHINE_END

/* [<][>][^][v][top][bottom][index][help] */