mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-01-06 04:49:04 -05:00
Change CPU clock into separate clock domain We can control the CPU frequency independently of the peripherals.
58 lines
1.4 KiB
C++
58 lines
1.4 KiB
C++
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#include <log/log.hpp>
|
|
|
|
#include "PowerManager.hpp"
|
|
|
|
namespace sys
|
|
{
|
|
|
|
PowerManager::PowerManager()
|
|
{
|
|
lowPowerControl = bsp::LowPowerMode::Create().value_or(nullptr);
|
|
}
|
|
|
|
PowerManager::~PowerManager()
|
|
{}
|
|
|
|
int32_t PowerManager::Switch(const sys::PowerManager::Mode mode)
|
|
{
|
|
|
|
int32_t ret = 0;
|
|
switch (mode) {
|
|
case Mode::FullSpeed:
|
|
ret = lowPowerControl->Switch(bsp::LowPowerMode::Mode::FullSpeed);
|
|
break;
|
|
case Mode::LowPowerIdle:
|
|
case Mode::LowPowerRun:
|
|
case Mode::Suspend:
|
|
LOG_FATAL("LowPowerIdle temporary disabled!");
|
|
// Low power is temporary disabled it was breaking i.e. GSM
|
|
// ret = lowPowerControl->Switch(bsp::LowPowerMode::Mode::LowPowerIdle);
|
|
break;
|
|
}
|
|
|
|
if (ret == 0) {
|
|
currentPowerMode = mode;
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
int32_t PowerManager::PowerOff()
|
|
{
|
|
return lowPowerControl->PowerOff();
|
|
}
|
|
|
|
int32_t PowerManager::Reboot()
|
|
{
|
|
return lowPowerControl->Reboot();
|
|
}
|
|
|
|
void PowerManager::SetCpuFrequency(const bsp::LowPowerMode::CpuFrequency freq)
|
|
{
|
|
lowPowerControl->SetCpuFrequency(freq);
|
|
}
|
|
|
|
} // namespace sys
|