Blame view

include/spl_gpio.h 1.79 KB
5c01d1c0d   Simon Glass   gpio: Add a simpl...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  /* SPDX-License-Identifier: GPL-2.0+ */
  /*
   * Simple GPIO access from SPL. This only supports a single GPIO space,
   * typically the SoC GPIO banks.
   *
   * Copyright 2018 Google LLC
   */
  
  #ifndef __SPL_GPIO_H
  #define __SPL_GPIO_H
  
  #include <asm/gpio.h>
  
  /*
   * The functions listed here should be implemented in the SoC GPIO driver.
   * They correspond to the normal GPIO API (asm-generic/gpio.h). The GPIO
   * number is encoded in an unsigned int by an SoC-specific means. Pull
   * values are also SoC-specific.
   *
   * This API should only be used in TPL/SPL where GPIO access is needed but
   * driver model is not available (yet) or adds too much overhead.
   *
   * The caller must supply the GPIO register base since this information is
   * often specific to a particular SoC generation. This allows the GPIO
   * code to be fairly generic.
   *
   * Only a single implementation of each of these functions can be provided.
   *
   * The 'gpio' value can include both a bank and a GPIO number, if desired. The
   * encoding is SoC-specific.
   */
  
  /**
   * spl_gpio_set_pull() - Set the pull up/down state of a GPIO
   *
   * @regs: Pointer to GPIO registers
   * @gpio: GPIO to adjust (SoC-specific)
   * @pull: Pull value (SoC-specific)
   * @return return 0 if OK, -ve on error
   */
  int spl_gpio_set_pull(void *regs, uint gpio, int pull);
  
  /**
   * spl_gpio_output() - Set a GPIO as an output
   *
   * @regs: Pointer to GPIO registers
   * @gpio: GPIO to adjust (SoC-specific)
   * @value: 0 to set the output low, 1 to set it high
   * @return return 0 if OK, -ve on error
   */
  int spl_gpio_output(void *regs, uint gpio, int value);
  
  /**
   * spl_gpio_input() - Set a GPIO as an input
   *
   * @regs: Pointer to GPIO registers
   * @gpio: GPIO to adjust (SoC-specific)
   * @return return 0 if OK, -ve on error
   */
  int spl_gpio_input(void *regs, uint gpio);
  
  #endif /* __SPL_GPIO_H */