mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-03 17:51:23 +00:00

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>
56 lines
1.3 KiB
C
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 */
|