1#- 2# Copyright (c) 2016 Michal Meloun <[email protected]> 3# All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions 7# are met: 8# 1. Redistributions of source code must retain the above copyright 9# notice, this list of conditions and the following disclaimer. 10# 2. Redistributions in binary form must reproduce the above copyright 11# notice, this list of conditions and the following disclaimer in the 12# documentation and/or other materials provided with the distribution. 13# 14# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24# SUCH DAMAGE. 25# 26# $FreeBSD$ 27# 28 29INTERFACE regnode; 30HEADER { 31 struct regnode; 32} 33 34CODE { 35 static int 36 regnode_default_stop(struct regnode *regnode, int *udelay) 37 { 38 39 return(REGNODE_ENABLE(regnode, false, udelay)); 40 } 41} 42 43# 44# Initialize regulator 45# Returns 0 on success or a standard errno value. 46# 47METHOD int init { 48 struct regnode *regnode; 49}; 50 51# 52# Enable/disable regulator 53# Returns 0 on success or a standard errno value. 54# - enable - input. 55# - delay - output, delay needed to stabilize voltage (in us) 56# 57METHOD int enable { 58 struct regnode *regnode; 59 bool enable; 60 int *udelay; 61}; 62 63# 64# Get regulator status 65# Returns 0 on success or a standard errno value. 66# 67METHOD int status { 68 struct regnode *regnode; 69 int *status; /* REGULATOR_STATUS_* */ 70}; 71 72# 73# Set regulator voltage 74# Returns 0 on success or a standard errno value. 75# - min_uvolt, max_uvolt - input, requested voltage range (in uV) 76# - delay - output, delay needed to stabilize voltage (in us) 77METHOD int set_voltage { 78 struct regnode *regnode; 79 int min_uvolt; 80 int max_uvolt; 81 int *udelay; 82}; 83 84# 85# Get regulator voltage 86# Returns 0 on success or a standard errno value. 87# 88METHOD int get_voltage { 89 struct regnode *regnode; 90 int *uvolt; 91}; 92 93# 94# Check if a given voltage is supported by the regulator 95# Returns 0 on success or a standard errno value. 96# 97METHOD int check_voltage { 98 struct regnode *regnode; 99 int uvolt; 100}; 101 102# 103# Stop (shutdown) regulator 104# Returns 0 on success or a standard errno value. 105# 106METHOD int stop { 107 struct regnode *regnode; 108 int *udelay; 109} DEFAULT regnode_default_stop; 110