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