1/* 2 * fixed.h 3 * 4 * Copyright 2008 Wolfson Microelectronics PLC. 5 * 6 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> 7 * 8 * Copyright (c) 2009 Nokia Corporation 9 * Roger Quadros <ext-roger.quadros@nokia.com> 10 * 11 * This program is free software; you can redistribute it and/or 12 * modify it under the terms of the GNU General Public License as 13 * published by the Free Software Foundation; either version 2 of the 14 * License, or (at your option) any later version. 15 */ 16 17#ifndef __REGULATOR_FIXED_H 18#define __REGULATOR_FIXED_H 19 20struct regulator_init_data; 21 22/** 23 * struct fixed_voltage_config - fixed_voltage_config structure 24 * @supply_name: Name of the regulator supply 25 * @input_supply: Name of the input regulator supply 26 * @microvolts: Output voltage of regulator 27 * @gpio: GPIO to use for enable control 28 * set to -EINVAL if not used 29 * @startup_delay: Start-up time in microseconds 30 * @gpio_is_open_drain: Gpio pin is open drain or normal type. 31 * If it is open drain type then HIGH will be set 32 * through PULL-UP with setting gpio as input 33 * and low will be set as gpio-output with driven 34 * to low. For non-open-drain case, the gpio will 35 * will be in output and drive to low/high accordingly. 36 * @enable_high: Polarity of enable GPIO 37 * 1 = Active high, 0 = Active low 38 * @enabled_at_boot: Whether regulator has been enabled at 39 * boot or not. 1 = Yes, 0 = No 40 * This is used to keep the regulator at 41 * the default state 42 * @init_data: regulator_init_data 43 * 44 * This structure contains fixed voltage regulator configuration 45 * information that must be passed by platform code to the fixed 46 * voltage regulator driver. 47 */ 48struct fixed_voltage_config { 49 const char *supply_name; 50 const char *input_supply; 51 int microvolts; 52 int gpio; 53 unsigned startup_delay; 54 unsigned gpio_is_open_drain:1; 55 unsigned enable_high:1; 56 unsigned enabled_at_boot:1; 57 struct regulator_init_data *init_data; 58}; 59 60struct regulator_consumer_supply; 61 62#if IS_ENABLED(CONFIG_REGULATOR) 63struct platform_device *regulator_register_always_on(int id, const char *name, 64 struct regulator_consumer_supply *supplies, int num_supplies, int uv); 65#else 66static inline struct platform_device *regulator_register_always_on(int id, const char *name, 67 struct regulator_consumer_supply *supplies, int num_supplies, int uv) 68{ 69 return NULL; 70} 71#endif 72 73#define regulator_register_fixed(id, s, ns) regulator_register_always_on(id, \ 74 "fixed-dummy", s, ns, 0) 75 76#endif 77