at master 55 lines 1.3 kB view raw
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * UP Board CPLD/FPGA driver 4 * 5 * Copyright (c) AAEON. All rights reserved. 6 * Copyright (C) 2024 Bootlin 7 * 8 * Author: Gary Wang <garywang@aaeon.com.tw> 9 * Author: Thomas Richard <thomas.richard@bootlin.com> 10 * 11 */ 12 13#ifndef __LINUX_MFD_UPBOARD_FPGA_H 14#define __LINUX_MFD_UPBOARD_FPGA_H 15 16#define UPBOARD_REGISTER_SIZE 16 17 18enum upboard_fpgareg { 19 UPBOARD_REG_PLATFORM_ID = 0x10, 20 UPBOARD_REG_FIRMWARE_ID = 0x11, 21 UPBOARD_REG_FUNC_EN0 = 0x20, 22 UPBOARD_REG_FUNC_EN1 = 0x21, 23 UPBOARD_REG_GPIO_EN0 = 0x30, 24 UPBOARD_REG_GPIO_EN1 = 0x31, 25 UPBOARD_REG_GPIO_EN2 = 0x32, 26 UPBOARD_REG_GPIO_DIR0 = 0x40, 27 UPBOARD_REG_GPIO_DIR1 = 0x41, 28 UPBOARD_REG_GPIO_DIR2 = 0x42, 29 UPBOARD_REG_MAX, 30}; 31 32enum upboard_fpga_type { 33 UPBOARD_UP_FPGA, 34 UPBOARD_UP2_FPGA, 35}; 36 37struct upboard_fpga_data { 38 enum upboard_fpga_type type; 39 const struct regmap_config *regmap_config; 40}; 41 42struct upboard_fpga { 43 struct device *dev; 44 struct regmap *regmap; 45 struct gpio_desc *enable_gpio; 46 struct gpio_desc *reset_gpio; 47 struct gpio_desc *clear_gpio; 48 struct gpio_desc *strobe_gpio; 49 struct gpio_desc *datain_gpio; 50 struct gpio_desc *dataout_gpio; 51 unsigned int firmware_version; 52 const struct upboard_fpga_data *fpga_data; 53}; 54 55#endif /* __LINUX_MFD_UPBOARD_FPGA_H */