blob: ac1e0e566995037a653f15d9c35ef417ff1c1a40 [file] [log] [blame]
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001/*
2 * arch/xtensa/kernel/platform.c
3 *
4 * Default platform functions.
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 *
10 * Copyright (C) 2005 Tensilica Inc.
11 *
12 * Chris Zankel <chris@zankel.net>
13 */
14
Olivier Deprez157378f2022-04-04 15:47:50 +020015#include <linux/printk.h>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000016#include <linux/types.h>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000017#include <asm/platform.h>
18#include <asm/timex.h>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000019
20#define _F(r,f,a,b) \
21 r __platform_##f a b; \
22 r platform_##f a __attribute__((weak, alias("__platform_"#f)))
23
24/*
25 * Default functions that are used if no platform specific function is defined.
26 * (Please, refer to include/asm-xtensa/platform.h for more information)
27 */
28
Olivier Deprez157378f2022-04-04 15:47:50 +020029_F(void, init, (bp_tag_t *first), { });
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000030_F(void, setup, (char** cmd), { });
31_F(void, restart, (void), { while(1); });
32_F(void, halt, (void), { while(1); });
33_F(void, power_off, (void), { while(1); });
34_F(void, idle, (void), { __asm__ __volatile__ ("waiti 0" ::: "memory"); });
35_F(void, heartbeat, (void), { });
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000036
37#ifdef CONFIG_XTENSA_CALIBRATE_CCOUNT
38_F(void, calibrate_ccount, (void),
39{
40 pr_err("ERROR: Cannot calibrate cpu frequency! Assuming 10MHz.\n");
41 ccount_freq = 10 * 1000000UL;
42});
43#endif