1// SPDX-License-Identifier: GPL-2.0 2#include <linux/gpio/consumer.h> 3#include <linux/gpio/driver.h> 4 5#include <linux/gpio.h> 6 7#include "gpiolib.h" 8 9/* 10 * **DEPRECATED** This function is deprecated and must not be used in new code. 11 */ 12void gpio_free(unsigned gpio) 13{ 14 gpiod_free(gpio_to_desc(gpio)); 15} 16EXPORT_SYMBOL_GPL(gpio_free); 17 18/** 19 * gpio_request_one - request a single GPIO with initial configuration 20 * @gpio: the GPIO number 21 * @flags: GPIO configuration as specified by GPIOF_* 22 * @label: a literal description string of this GPIO 23 * 24 * **DEPRECATED** This function is deprecated and must not be used in new code. 25 */ 26int gpio_request_one(unsigned gpio, unsigned long flags, const char *label) 27{ 28 struct gpio_desc *desc; 29 int err; 30 31 /* Compatibility: assume unavailable "valid" GPIOs will appear later */ 32 desc = gpio_to_desc(gpio); 33 if (!desc) 34 return -EPROBE_DEFER; 35 36 err = gpiod_request(desc, label); 37 if (err) 38 return err; 39 40 if (flags & GPIOF_ACTIVE_LOW) 41 set_bit(FLAG_ACTIVE_LOW, &desc->flags); 42 43 if (flags & GPIOF_DIR_IN) 44 err = gpiod_direction_input(desc); 45 else 46 err = gpiod_direction_output_raw(desc, 47 (flags & GPIOF_INIT_HIGH) ? 1 : 0); 48 49 if (err) 50 goto free_gpio; 51 52 return 0; 53 54 free_gpio: 55 gpiod_free(desc); 56 return err; 57} 58EXPORT_SYMBOL_GPL(gpio_request_one); 59 60/* 61 * **DEPRECATED** This function is deprecated and must not be used in new code. 62 */ 63int gpio_request(unsigned gpio, const char *label) 64{ 65 struct gpio_desc *desc; 66 67 /* Compatibility: assume unavailable "valid" GPIOs will appear later */ 68 desc = gpio_to_desc(gpio); 69 if (!desc) 70 return -EPROBE_DEFER; 71 72 return gpiod_request(desc, label); 73} 74EXPORT_SYMBOL_GPL(gpio_request); 75