blob: 1b285bd6b0e3fc8ba531c6d26a0c77be78ce3935 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#pragma once
#include "aml-pwm.h"
#include <fbl/unique_ptr.h>
#include <soc/aml-common/aml-thermal.h>
namespace thermal {
// This class represents a voltage regulator
// on the Amlogic board which provides interface
// to set and get current voltage for the CPU.
class AmlVoltageRegulator {
public:
DISALLOW_COPY_AND_ASSIGN_ALLOW_MOVE(AmlVoltageRegulator);
AmlVoltageRegulator(){}
zx_status_t Init(zx_device_t* parent, aml_opp_info_t* opp_info);
uint32_t GetVoltage();
zx_status_t SetVoltage(uint32_t microvolt);
private:
fbl::unique_ptr<thermal::AmlPwm> pwm_;
aml_opp_info_t opp_info_;
int current_voltage_index_;
};
} // namespace thermal