xref: /openbmc/linux/arch/arm/mach-mmp/common.c (revision 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e)
1d2912cb1SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
249cbe786SEric Miao /*
349cbe786SEric Miao  *  linux/arch/arm/mach-mmp/common.c
449cbe786SEric Miao  *
549cbe786SEric Miao  *  Code common to PXA168 processor lines
649cbe786SEric Miao  */
749cbe786SEric Miao 
849cbe786SEric Miao #include <linux/init.h>
949cbe786SEric Miao #include <linux/kernel.h>
10f090c74bSHaojian Zhuang #include <linux/module.h>
1149cbe786SEric Miao 
1249cbe786SEric Miao #include <asm/page.h>
1349cbe786SEric Miao #include <asm/mach/map.h>
149f97da78SDavid Howells #include <asm/system_misc.h>
15b501fd7bSArnd Bergmann #include "addr-map.h"
16*32adcaa0SLubomir Rintel #include <linux/soc/mmp/cputype.h>
1749cbe786SEric Miao 
1849cbe786SEric Miao #include "common.h"
1949cbe786SEric Miao 
20199c936eSLubomir Rintel #define MMP_CHIPID	CIU_REG(0x00)
21f090c74bSHaojian Zhuang 
22f090c74bSHaojian Zhuang unsigned int mmp_chip_id;
23f090c74bSHaojian Zhuang EXPORT_SYMBOL(mmp_chip_id);
24f090c74bSHaojian Zhuang 
2549cbe786SEric Miao static struct map_desc standard_io_desc[] __initdata = {
2649cbe786SEric Miao 	{
2749cbe786SEric Miao 		.pfn		= __phys_to_pfn(APB_PHYS_BASE),
2897b09da4SArnd Bergmann 		.virtual	= (unsigned long)APB_VIRT_BASE,
2949cbe786SEric Miao 		.length		= APB_PHYS_SIZE,
3049cbe786SEric Miao 		.type		= MT_DEVICE,
3149cbe786SEric Miao 	}, {
3249cbe786SEric Miao 		.pfn		= __phys_to_pfn(AXI_PHYS_BASE),
3397b09da4SArnd Bergmann 		.virtual	= (unsigned long)AXI_VIRT_BASE,
3449cbe786SEric Miao 		.length		= AXI_PHYS_SIZE,
3549cbe786SEric Miao 		.type		= MT_DEVICE,
3649cbe786SEric Miao 	},
3749cbe786SEric Miao };
3849cbe786SEric Miao 
39e69fd509SLubomir Rintel static struct map_desc mmp2_io_desc[] __initdata = {
40e69fd509SLubomir Rintel 	{
41e69fd509SLubomir Rintel 		.pfn		= __phys_to_pfn(PGU_PHYS_BASE),
42e69fd509SLubomir Rintel 		.virtual	= (unsigned long)PGU_VIRT_BASE,
43e69fd509SLubomir Rintel 		.length		= PGU_PHYS_SIZE,
44e69fd509SLubomir Rintel 		.type		= MT_DEVICE,
45e69fd509SLubomir Rintel 	},
46e69fd509SLubomir Rintel };
47e69fd509SLubomir Rintel 
mmp_map_io(void)488022887cSEric Miao void __init mmp_map_io(void)
4949cbe786SEric Miao {
5049cbe786SEric Miao 	iotable_init(standard_io_desc, ARRAY_SIZE(standard_io_desc));
51f090c74bSHaojian Zhuang 
52f090c74bSHaojian Zhuang 	/* this is early, initialize mmp_chip_id here */
53f090c74bSHaojian Zhuang 	mmp_chip_id = __raw_readl(MMP_CHIPID);
5449cbe786SEric Miao }
559854a38eSRussell King 
mmp2_map_io(void)56e69fd509SLubomir Rintel void __init mmp2_map_io(void)
57e69fd509SLubomir Rintel {
58e69fd509SLubomir Rintel 	mmp_map_io();
59e69fd509SLubomir Rintel 	iotable_init(mmp2_io_desc, ARRAY_SIZE(mmp2_io_desc));
60e69fd509SLubomir Rintel }
61