gpio.c (1081B)
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * SDK7786 FPGA USRGPIR Support. 4 * 5 * Copyright (C) 2010 Paul Mundt 6 */ 7#include <linux/init.h> 8#include <linux/interrupt.h> 9#include <linux/gpio/driver.h> 10#include <linux/irq.h> 11#include <linux/kernel.h> 12#include <linux/spinlock.h> 13#include <linux/io.h> 14#include <mach/fpga.h> 15 16#define NR_FPGA_GPIOS 8 17 18static const char *usrgpir_gpio_names[NR_FPGA_GPIOS] = { 19 "in0", "in1", "in2", "in3", "in4", "in5", "in6", "in7", 20}; 21 22static int usrgpir_gpio_direction_input(struct gpio_chip *chip, unsigned gpio) 23{ 24 /* always in */ 25 return 0; 26} 27 28static int usrgpir_gpio_get(struct gpio_chip *chip, unsigned gpio) 29{ 30 return !!(fpga_read_reg(USRGPIR) & (1 << gpio)); 31} 32 33static struct gpio_chip usrgpir_gpio_chip = { 34 .label = "sdk7786-fpga", 35 .names = usrgpir_gpio_names, 36 .direction_input = usrgpir_gpio_direction_input, 37 .get = usrgpir_gpio_get, 38 .base = -1, /* don't care */ 39 .ngpio = NR_FPGA_GPIOS, 40}; 41 42static int __init usrgpir_gpio_setup(void) 43{ 44 return gpiochip_add_data(&usrgpir_gpio_chip, NULL); 45} 46device_initcall(usrgpir_gpio_setup);