iBoot/platform/t8002/miu/miu.c

111 lines
2.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* Copyright (C) 2013-2014 Apple Inc. All rights reserved.
*
* This document is the property of Apple Inc.
* It is considered confidential and proprietary.
*
* This document may not be reproduced or transmitted in any form,
* in whole or in part, without the express written permission of
* Apple Inc.
*/
#include <arch.h>
#include <debug.h>
#include <drivers/miu.h>
#include <platform.h>
#include <platform/memmap.h>
#include <platform/miu.h>
#include <platform/soc/chipid.h>
#include <platform/soc/miu.h>
#include <platform/soc/pmgr.h>
#include <platform/clocks.h>
#include <platform/soc/hwclocks.h>
#include <platform/timer.h>
int miu_initialize_internal_ram(void)
{
#if APPLICATION_SECUREROM
// Ensure that rPMGR_SCRATCH0-3 get cleared
rPMGR_SCRATCH0 = 0;
rPMGR_SCRATCH1 = 0;
rPMGR_SCRATCH2 = 0;
rPMGR_SCRATCH3 = 0;
#endif /* APPLICATION_SECUREROM */
// Save the Security Epoch in the top byte of PMGR_SCRATCH0
rPMGR_SCRATCH0 &= ~0xFF000000;
rPMGR_SCRATCH0 |= (platform_get_security_epoch()) << 24;
return 0;
}
int miu_init(void)
{
#if APPLICATION_IBOOT && !PRODUCT_IBEC
// Verify that the Security Epoch in PMGR_SCRATCH0 matches
if ((rPMGR_SCRATCH0 >> 24) != platform_get_security_epoch()) {
panic("miu_init: Epoch Mismatch\n");
}
#endif
return 0;
}
void miu_suspend(void)
{
/* nothing required for suspend */
}
int miu_initialize_dram(bool resume)
{
#if APPLICATION_IBOOT && WITH_HW_DCS
mcu_initialize_dram(resume);
#endif
return 0;
}
void miu_select_remap(enum remap_select sel)
{
/*
The ROMADDRREMAP[1:0] is responsible for the remap
1. ROMADDRREMAP[1] = 1b0 - ROM mapped to PIO
1.1. ROMADDRREMAP[0] = 1b0 - ROM mapped to SECURE ROM
1.2. ROMADDRREMAP[0] = 1b1 - ROM mapped to AOP-SRAM
2. ROMADDRREMAP[1] = 1b1 - ROM mapped to DRAM
in other words
ROMADDRREMAP[1:0]
2b00 - SECURE ROM
2b01 - AOP-SRAM
2b1x - DDR
*/
switch (sel) {
case REMAP_SRAM:
rPIO_REMAP_CTL = (rPIO_REMAP_CTL & ~3) | (1 << 0);
break;
case REMAP_SDRAM:
rPIO_REMAP_CTL = (rPIO_REMAP_CTL & ~3) | (2 << 0);
break;
// reset back to default behavior
default:
rPIO_REMAP_CTL = 0;
break;
}
}
void miu_bypass_prep(void)
{
}
#if WITH_DEVICETREE
void miu_update_device_tree(DTNode *pmgr_node)
{
// Nothing to do here
}
#endif