mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-27 01:29:58 +01:00
79 lines
1.7 KiB
C++
79 lines
1.7 KiB
C++
#include "board.h"
|
|
#include <drivers/board.h>
|
|
#include <drivers/backlight.h>
|
|
#include <drivers/battery.h>
|
|
#include <drivers/console.h>
|
|
#include <drivers/display.h>
|
|
#include <drivers/external_flash.h>
|
|
#include <drivers/keyboard.h>
|
|
#include <drivers/led.h>
|
|
#include <drivers/swd.h>
|
|
#include <drivers/timing.h>
|
|
#include <drivers/usb.h>
|
|
#include <drivers/config/clocks.h>
|
|
|
|
namespace Ion {
|
|
namespace Device {
|
|
namespace Board {
|
|
|
|
using namespace Regs;
|
|
|
|
Frequency sNormalFrequency = Frequency::High;
|
|
|
|
void shutdown() {
|
|
shutdownPeripherals();
|
|
shutdownClocks();
|
|
}
|
|
|
|
void initFPU() {
|
|
// http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0553a/BABDBFBJ.html
|
|
CORTEX.CPACR()->setAccess(10, CORTEX::CPACR::Access::Full);
|
|
CORTEX.CPACR()->setAccess(11, CORTEX::CPACR::Access::Full);
|
|
// FIXME: The pipeline should be flushed at this point
|
|
}
|
|
|
|
void initPeripherals() {
|
|
Display::init();
|
|
Backlight::init();
|
|
Keyboard::init();
|
|
LED::init();
|
|
Battery::init();
|
|
USB::init();
|
|
Console::init();
|
|
SWD::init();
|
|
Timing::init();
|
|
ExternalFlash::init();
|
|
}
|
|
|
|
void shutdownPeripherals(bool keepLEDAwake) {
|
|
ExternalFlash::shutdown();
|
|
Timing::shutdown();
|
|
SWD::shutdown();
|
|
Console::shutdown();
|
|
USB::shutdown();
|
|
Battery::shutdown();
|
|
if (!keepLEDAwake) {
|
|
LED::shutdown();
|
|
}
|
|
Keyboard::shutdown();
|
|
Backlight::shutdown();
|
|
Display::shutdown();
|
|
}
|
|
|
|
void setClockFrequency(Frequency f) {
|
|
// TODO: Update TIM3 prescaler or ARR to avoid irregular LED blinking
|
|
switch (f) {
|
|
case Frequency::High:
|
|
RCC.CFGR()->setHPRE(RCC::CFGR::AHBPrescaler::SysClk);
|
|
return;
|
|
default:
|
|
assert(f == Frequency::Low);
|
|
RCC.CFGR()->setHPRE(Clocks::Config::AHBLowFrequencyPrescalerReg);
|
|
return;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|