gpio.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * arch/asm-arm/mach-kirkwood/include/mach/gpio.h
  4. */
  5. /*
  6. * Based on (mostly copied from) plat-orion based Linux 2.6 kernel driver.
  7. * Removed kernel level irq handling. Took some macros from kernel to
  8. * allow build.
  9. *
  10. * Dieter Kiermaier dk-arm-linux@gmx.de
  11. */
  12. #ifndef __KIRKWOOD_GPIO_H
  13. #define __KIRKWOOD_GPIO_H
  14. #define GPIO_MAX 50
  15. #define GPIO_OFF(pin) (((pin) >> 5) ? 0x0040 : 0x0000)
  16. #define GPIO_OUT(pin) (MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x00)
  17. #define GPIO_IO_CONF(pin) (MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x04)
  18. #define GPIO_BLINK_EN(pin) (MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x08)
  19. #define GPIO_IN_POL(pin) (MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x0c)
  20. #define GPIO_DATA_IN(pin) (MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x10)
  21. #define GPIO_EDGE_CAUSE(pin) (MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x14)
  22. #define GPIO_EDGE_MASK(pin) (MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x18)
  23. #define GPIO_LEVEL_MASK(pin) (MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x1c)
  24. /*
  25. * Kirkwood-specific GPIO API
  26. */
  27. void kw_gpio_set_valid(unsigned pin, int mode);
  28. int kw_gpio_is_valid(unsigned pin, int mode);
  29. int kw_gpio_direction_input(unsigned pin);
  30. int kw_gpio_direction_output(unsigned pin, int value);
  31. int kw_gpio_get_value(unsigned pin);
  32. void kw_gpio_set_value(unsigned pin, int value);
  33. void kw_gpio_set_blink(unsigned pin, int blink);
  34. void kw_gpio_set_unused(unsigned pin);
  35. #define GPIO_INPUT_OK (1 << 0)
  36. #define GPIO_OUTPUT_OK (1 << 1)
  37. #endif