1#- 2# Copyright (c) 2016 Michal Meloun <mmel@FreeBSD.org> 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# 27 28INTERFACE regnode; 29HEADER { 30 struct regnode; 31} 32 33CODE { 34 static int 35 regnode_default_stop(struct regnode *regnode, int *udelay) 36 { 37 38 return(REGNODE_ENABLE(regnode, false, udelay)); 39 } 40} 41 42# 43# Initialize regulator 44# Returns 0 on success or a standard errno value. 45# 46METHOD int init { 47 struct regnode *regnode; 48}; 49 50# 51# Enable/disable regulator 52# Returns 0 on success or a standard errno value. 53# - enable - input. 54# - delay - output, delay needed to stabilize voltage (in us) 55# 56METHOD int enable { 57 struct regnode *regnode; 58 bool enable; 59 int *udelay; 60}; 61 62# 63# Get regulator status 64# Returns 0 on success or a standard errno value. 65# 66METHOD int status { 67 struct regnode *regnode; 68 int *status; /* REGULATOR_STATUS_* */ 69}; 70 71# 72# Set regulator voltage 73# Returns 0 on success or a standard errno value. 74# - min_uvolt, max_uvolt - input, requested voltage range (in uV) 75# - delay - output, delay needed to stabilize voltage (in us) 76METHOD int set_voltage { 77 struct regnode *regnode; 78 int min_uvolt; 79 int max_uvolt; 80 int *udelay; 81}; 82 83# 84# Get regulator voltage 85# Returns 0 on success or a standard errno value. 86# 87METHOD int get_voltage { 88 struct regnode *regnode; 89 int *uvolt; 90}; 91 92# 93# Check if a given voltage is supported by the regulator 94# Returns 0 on success or a standard errno value. 95# 96METHOD int check_voltage { 97 struct regnode *regnode; 98 int uvolt; 99}; 100 101# 102# Stop (shutdown) regulator 103# Returns 0 on success or a standard errno value. 104# 105METHOD int stop { 106 struct regnode *regnode; 107 int *udelay; 108} DEFAULT regnode_default_stop; 109