|  | // Copyright 2019 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. | 
|  | @available(added=HEAD) | 
|  | library fuchsia.hardware.powerimpl; | 
|  |  | 
|  | using zx; | 
|  |  | 
|  | type PowerDomainStatus = strict enum : uint8 { | 
|  | DISABLED = 1; | 
|  | ENABLED = 2; | 
|  | }; | 
|  |  | 
|  | @transport("Banjo") | 
|  | @banjo_layout("ddk-protocol") | 
|  | closed protocol PowerImpl { | 
|  | /// Get status of a power domain | 
|  | strict GetPowerDomainStatus(struct { | 
|  | index uint32; | 
|  | }) -> (struct { | 
|  | s zx.Status; | 
|  | status PowerDomainStatus; | 
|  | }); | 
|  | /// Enable a power domain | 
|  | strict EnablePowerDomain(struct { | 
|  | index uint32; | 
|  | }) -> (struct { | 
|  | s zx.Status; | 
|  | }); | 
|  | /// Disable a power domain | 
|  | strict DisablePowerDomain(struct { | 
|  | index uint32; | 
|  | }) -> (struct { | 
|  | s zx.Status; | 
|  | }); | 
|  | /// Get Supported Voltage Range. min and max are in uV. | 
|  | strict GetSupportedVoltageRange(struct { | 
|  | index uint32; | 
|  | }) -> (struct { | 
|  | s zx.Status; | 
|  | min uint32; | 
|  | max uint32; | 
|  | }); | 
|  | /// Request for a particular voltage. "voltage" and actual_voltage are in microvolts(uV) | 
|  | strict RequestVoltage(struct { | 
|  | index uint32; | 
|  | voltage uint32; | 
|  | }) -> (struct { | 
|  | s zx.Status; | 
|  | actual_voltage uint32; | 
|  | }); | 
|  | /// Get current voltage in uV. | 
|  | strict GetCurrentVoltage(struct { | 
|  | index uint32; | 
|  | }) -> (struct { | 
|  | s zx.Status; | 
|  | current_voltage uint32; | 
|  | }); | 
|  | /// Write to ctrl register of PMIC | 
|  | strict WritePmicCtrlReg(struct { | 
|  | index uint32; | 
|  | reg_addr uint32; | 
|  | value uint32; | 
|  | }) -> (struct { | 
|  | s zx.Status; | 
|  | }); | 
|  | /// Read ctrl register of PMIC | 
|  | strict ReadPmicCtrlReg(struct { | 
|  | index uint32; | 
|  | reg_addr uint32; | 
|  | }) -> (struct { | 
|  | s zx.Status; | 
|  | value uint32; | 
|  | }); | 
|  | }; |