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