* for TEE security driver
	 * and avoid overlap with asic ID at base+1D000
	 */
	__MEM_DEV_DESC(U8500_BOOT_ROM_BASE+0x17000, 6*SZ_4K),
	__IO_DEV_DESC(U8500_PRCMU_TCDM_BASE, SZ_4K),
};

/* U9540 IO map specific description */
static struct map_desc u9540_io_desc[] __initdata = {
	__IO_DEV_DESC(U8500_PRCMU_BASE, SZ_4K + SZ_8K),
	/*
	 * Map U9540_PUBLIC_BOOT_ROM_BASE (base+17000) only
	 * for TEE security driver
	 * and avoid overlap with asic ID at base+1D000
	 */
	__MEM_DEV_DESC_DB9540_ROM(U9540_BOOT_ROM_BASE+0x17000, 6*SZ_4K),
	__IO_DEV_DESC(U8500_PRCMU_TCDM_BASE, SZ_4K + SZ_8K),
	#ifdef CONFIG_C2C
	__IO_DEV_DESC(U8500_C2C_BASE, SZ_4K),
	#endif
};

void __init u8500_map_io(void)
{
	/*
	 * Map the UARTs early so that the DEBUG_LL stuff continues to work.
	 */
	iotable_init(u8500_uart_io_desc, ARRAY_SIZE(u8500_uart_io_desc));

	/*
	 * STE NMF CM driver only used on the U8500 allocate using
	__IO_DEV_DESC(U8500_GPIO2_BASE, SZ_4K),
	__IO_DEV_DESC(U8500_GPIO3_BASE, SZ_4K),
};

/* U8500 IO map specific description */
static struct map_desc u8500_io_desc[] __initdata = {
	__IO_DEV_DESC(U8500_PRCMU_BASE, SZ_4K),
	__MEM_DEV_DESC(U8500_BOOT_ROM_BASE, SZ_1M),
	__IO_DEV_DESC(U8500_PRCMU_TCDM_BASE, SZ_4K),

};

/* U9540 IO map specific description */
static struct map_desc u9540_io_desc[] __initdata = {
	__IO_DEV_DESC(U8500_PRCMU_BASE, SZ_4K + SZ_8K),
	__MEM_DEV_DESC_DB9540_ROM(U9540_BOOT_ROM_BASE, SZ_1M),
	__IO_DEV_DESC(U8500_PRCMU_TCDM_BASE, SZ_4K + SZ_8K),
};

struct reboot_reason reboot_reasons_hw[] = {
	{"modem", HW_RESET_MODEM},
	{"ape-restart", HW_RESET_APE_RESTART},
	{"a9-restart", HW_RESET_A9_RESTART},
	{"por", HW_RESET_POR},
	{"secure-wd", HW_RESET_SECURE_WD},
	{"ape", HW_RESET_APE},
	{"ape-sw", HW_RESET_APE_SOFTWARE},
	{"a9-cpu1-wd", HW_RESET_A9_CPU1_WD},
	{"a9-cpu0-wd", HW_RESET_A9_CPU0_WD},
};