linux-loongson/include/linux/mfd/upboard-fpga.h
Thomas Richard c2b148f3bc mfd: Add support for AAEON UP board FPGA
The UP boards implement some features (pin controller, LEDs) through an
on-board FPGA.

This MFD driver implements the line protocol to communicate with the FPGA
through regmap, and registers pin controller and led cells.

This commit adds support for UP and UP Squared boards.

Based on the work done by Gary Wang <garywang@aaeon.com.tw>.

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
Link: https://lore.kernel.org/r/20241211-aaeon-up-board-pinctrl-support-v1-1-24719be27631@bootlin.com
Signed-off-by: Lee Jones <lee@kernel.org>
2024-12-17 13:17:26 +00:00

56 lines
1.3 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* UP Board CPLD/FPGA driver
*
* Copyright (c) AAEON. All rights reserved.
* Copyright (C) 2024 Bootlin
*
* Author: Gary Wang <garywang@aaeon.com.tw>
* Author: Thomas Richard <thomas.richard@bootlin.com>
*
*/
#ifndef __LINUX_MFD_UPBOARD_FPGA_H
#define __LINUX_MFD_UPBOARD_FPGA_H
#define UPBOARD_REGISTER_SIZE 16
enum upboard_fpgareg {
UPBOARD_REG_PLATFORM_ID = 0x10,
UPBOARD_REG_FIRMWARE_ID = 0x11,
UPBOARD_REG_FUNC_EN0 = 0x20,
UPBOARD_REG_FUNC_EN1 = 0x21,
UPBOARD_REG_GPIO_EN0 = 0x30,
UPBOARD_REG_GPIO_EN1 = 0x31,
UPBOARD_REG_GPIO_EN2 = 0x32,
UPBOARD_REG_GPIO_DIR0 = 0x40,
UPBOARD_REG_GPIO_DIR1 = 0x41,
UPBOARD_REG_GPIO_DIR2 = 0x42,
UPBOARD_REG_MAX,
};
enum upboard_fpga_type {
UPBOARD_UP_FPGA,
UPBOARD_UP2_FPGA,
};
struct upboard_fpga_data {
enum upboard_fpga_type type;
const struct regmap_config *regmap_config;
};
struct upboard_fpga {
struct device *dev;
struct regmap *regmap;
struct gpio_desc *enable_gpio;
struct gpio_desc *reset_gpio;
struct gpio_desc *clear_gpio;
struct gpio_desc *strobe_gpio;
struct gpio_desc *datain_gpio;
struct gpio_desc *dataout_gpio;
unsigned int firmware_version;
const struct upboard_fpga_data *fpga_data;
};
#endif /* __LINUX_MFD_UPBOARD_FPGA_H */