18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * sh73a0 processor support
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright (C) 2010  Takashi Yoshii
68c2ecf20Sopenharmony_ci * Copyright (C) 2010  Magnus Damm
78c2ecf20Sopenharmony_ci * Copyright (C) 2008  Yoshihiro Shimoda
88c2ecf20Sopenharmony_ci */
98c2ecf20Sopenharmony_ci#include <linux/kernel.h>
108c2ecf20Sopenharmony_ci#include <linux/init.h>
118c2ecf20Sopenharmony_ci#include <linux/interrupt.h>
128c2ecf20Sopenharmony_ci#include <linux/irq.h>
138c2ecf20Sopenharmony_ci#include <linux/delay.h>
148c2ecf20Sopenharmony_ci#include <linux/input.h>
158c2ecf20Sopenharmony_ci#include <linux/io.h>
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci#include <asm/hardware/cache-l2x0.h>
188c2ecf20Sopenharmony_ci#include <asm/mach/map.h>
198c2ecf20Sopenharmony_ci#include <asm/mach/arch.h>
208c2ecf20Sopenharmony_ci#include <asm/mach/time.h>
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci#include "common.h"
238c2ecf20Sopenharmony_ci#include "sh73a0.h"
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_cistatic struct map_desc sh73a0_io_desc[] __initdata = {
268c2ecf20Sopenharmony_ci	/* create a 1:1 identity mapping for 0xe6xxxxxx
278c2ecf20Sopenharmony_ci	 * used by CPGA, INTC and PFC.
288c2ecf20Sopenharmony_ci	 */
298c2ecf20Sopenharmony_ci	{
308c2ecf20Sopenharmony_ci		.virtual	= 0xe6000000,
318c2ecf20Sopenharmony_ci		.pfn		= __phys_to_pfn(0xe6000000),
328c2ecf20Sopenharmony_ci		.length		= 256 << 20,
338c2ecf20Sopenharmony_ci		.type		= MT_DEVICE_NONSHARED
348c2ecf20Sopenharmony_ci	},
358c2ecf20Sopenharmony_ci};
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_cistatic void __init sh73a0_map_io(void)
388c2ecf20Sopenharmony_ci{
398c2ecf20Sopenharmony_ci	debug_ll_io_init();
408c2ecf20Sopenharmony_ci	iotable_init(sh73a0_io_desc, ARRAY_SIZE(sh73a0_io_desc));
418c2ecf20Sopenharmony_ci}
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_cistatic void __init sh73a0_generic_init(void)
448c2ecf20Sopenharmony_ci{
458c2ecf20Sopenharmony_ci#ifdef CONFIG_CACHE_L2X0
468c2ecf20Sopenharmony_ci	/* Shared attribute override enable, 64K*8way */
478c2ecf20Sopenharmony_ci	l2x0_init(IOMEM(0xf0100000), 0x00400000, 0xc20f0fff);
488c2ecf20Sopenharmony_ci#endif
498c2ecf20Sopenharmony_ci}
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_cistatic const char *const sh73a0_boards_compat_dt[] __initconst = {
528c2ecf20Sopenharmony_ci	"renesas,sh73a0",
538c2ecf20Sopenharmony_ci	NULL,
548c2ecf20Sopenharmony_ci};
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ciDT_MACHINE_START(SH73A0_DT, "Generic SH73A0 (Flattened Device Tree)")
578c2ecf20Sopenharmony_ci	.smp		= smp_ops(sh73a0_smp_ops),
588c2ecf20Sopenharmony_ci	.map_io		= sh73a0_map_io,
598c2ecf20Sopenharmony_ci	.init_machine	= sh73a0_generic_init,
608c2ecf20Sopenharmony_ci	.init_late	= shmobile_init_late,
618c2ecf20Sopenharmony_ci	.dt_compat	= sh73a0_boards_compat_dt,
628c2ecf20Sopenharmony_ciMACHINE_END
63