Linux Audio

Check our new training course

Loading...
v4.17
 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
29static 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	if (!base) {
42		pr_emerg("Couldn't map brcm,kona-wdt\n");
43		return;
44	}
45
46	/* Enable watchdog with short timeout (244us). */
47	val = readl(base + SECWDOG_OFFSET);
48	val &= SECWDOG_RESERVED_MASK | SECWDOG_WD_LOAD_FLAG_MASK;
49	val |= SECWDOG_EN_MASK | SECWDOG_SRSTEN_MASK |
50		(0x15 << SECWDOG_CLKS_SHIFT) |
51		(0x8 << SECWDOG_COUNT_SHIFT);
52	writel(val, base + SECWDOG_OFFSET);
53
54	/* Wait for reset */
55	while (1);
56}
57
58static void __init bcm281xx_init(void)
59{
 
 
60	kona_l2_cache_init();
61}
62
63static const char * const bcm281xx_dt_compat[] = {
64	"brcm,bcm11351",	/* Have to use the first number upstreamed */
65	NULL,
66};
67
68DT_MACHINE_START(BCM281XX_DT, "BCM281xx Broadcom Application Processor")
69	.init_machine = bcm281xx_init,
70	.restart = bcm281xx_restart,
71	.dt_compat = bcm281xx_dt_compat,
72MACHINE_END
v3.15
 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#include <linux/of_platform.h>
17
18#include <asm/mach/arch.h>
19
20#include "kona.h"
21
22#define SECWDOG_OFFSET			0x00000000
23#define SECWDOG_RESERVED_MASK		0xe2000000
24#define SECWDOG_WD_LOAD_FLAG_MASK	0x10000000
25#define SECWDOG_EN_MASK			0x08000000
26#define SECWDOG_SRSTEN_MASK		0x04000000
27#define SECWDOG_CLKS_SHIFT		20
28#define SECWDOG_COUNT_SHIFT		0
29
30static void bcm281xx_restart(enum reboot_mode mode, const char *cmd)
31{
32	uint32_t val;
33	void __iomem *base;
34	struct device_node *np_wdog;
35
36	np_wdog = of_find_compatible_node(NULL, NULL, "brcm,kona-wdt");
37	if (!np_wdog) {
38		pr_emerg("Couldn't find brcm,kona-wdt\n");
39		return;
40	}
41	base = of_iomap(np_wdog, 0);
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
59static void __init bcm281xx_init(void)
60{
61	of_platform_populate(NULL, of_default_bus_match_table, NULL,
62		&platform_bus);
63	kona_l2_cache_init();
64}
65
66static const char * const bcm281xx_dt_compat[] = {
67	"brcm,bcm11351",	/* Have to use the first number upstreamed */
68	NULL,
69};
70
71DT_MACHINE_START(BCM281XX_DT, "BCM281xx Broadcom Application Processor")
72	.init_machine = bcm281xx_init,
73	.restart = bcm281xx_restart,
74	.dt_compat = bcm281xx_dt_compat,
75MACHINE_END