From: Steffen Trumtrar <s.trumtrar@pengutronix.de> To: Barebox List <barebox@lists.infradead.org> Subject: [PATCH v3 05/10] firmware: import fpga-mgr.h from linux Date: Tue, 15 Jun 2021 13:25:03 +0200 [thread overview] Message-ID: <20210615112508.5489-5-s.trumtrar@pengutronix.de> (raw) In-Reply-To: <20210615112508.5489-1-s.trumtrar@pengutronix.de> Instead of defining the fpga-mgr structure in the socfpga driver, import the fpga-mgr.h file from linux v4.13. Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> --- drivers/firmware/socfpga.c | 9 +--- include/firmware.h | 1 + include/fpga-mgr.h | 102 +++++++++++++++++++++++++++++++++++++ 3 files changed, 104 insertions(+), 8 deletions(-) create mode 100644 include/fpga-mgr.h diff --git a/drivers/firmware/socfpga.c b/drivers/firmware/socfpga.c index 14875214b1aa..605c931604c9 100644 --- a/drivers/firmware/socfpga.c +++ b/drivers/firmware/socfpga.c @@ -27,6 +27,7 @@ */ #include <firmware.h> +#include <fpga-mgr.h> #include <command.h> #include <common.h> #include <malloc.h> @@ -83,14 +84,6 @@ extern void socfpga_sdram_apply_static_cfg(void __iomem *sdrctrlgrp); extern void socfpga_sdram_apply_static_cfg_end(void *); -struct fpgamgr { - struct firmware_handler fh; - struct device_d dev; - void __iomem *regs; - void __iomem *regs_data; - int programmed; -}; - /* Get the FPGA mode */ static uint32_t socfpga_fpgamgr_get_mode(struct fpgamgr *mgr) { diff --git a/include/firmware.h b/include/firmware.h index 19777d9bf711..2fef97a48f56 100644 --- a/include/firmware.h +++ b/include/firmware.h @@ -13,6 +13,7 @@ struct firmware_handler { char *id; /* unique identifier for this firmware device */ char *model; /* description for this device */ struct device_d *dev; + void *priv; /* called once to prepare the firmware's programming cycle */ int (*open)(struct firmware_handler*); /* called multiple times to program the firmware with the given data */ diff --git a/include/fpga-mgr.h b/include/fpga-mgr.h new file mode 100644 index 000000000000..a120b3918990 --- /dev/null +++ b/include/fpga-mgr.h @@ -0,0 +1,102 @@ +/* + * FPGA Framework + * + * Copyright (C) 2013-2015 Altera Corporation + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <http://www.gnu.org/licenses/>. + */ +#ifndef _LINUX_FPGA_MGR_H +#define _LINUX_FPGA_MGR_H + +#include <firmware.h> + +struct fpga_manager; + +/** + * enum fpga_mgr_states - fpga framework states + * @FPGA_MGR_STATE_UNKNOWN: can't determine state + * @FPGA_MGR_STATE_POWER_OFF: FPGA power is off + * @FPGA_MGR_STATE_POWER_UP: FPGA reports power is up + * @FPGA_MGR_STATE_RESET: FPGA in reset state + * @FPGA_MGR_STATE_FIRMWARE_REQ: firmware request in progress + * @FPGA_MGR_STATE_FIRMWARE_REQ_ERR: firmware request failed + * @FPGA_MGR_STATE_WRITE_INIT: preparing FPGA for programming + * @FPGA_MGR_STATE_WRITE_INIT_ERR: Error during WRITE_INIT stage + * @FPGA_MGR_STATE_WRITE: writing image to FPGA + * @FPGA_MGR_STATE_WRITE_ERR: Error while writing FPGA + * @FPGA_MGR_STATE_WRITE_COMPLETE: Doing post programming steps + * @FPGA_MGR_STATE_WRITE_COMPLETE_ERR: Error during WRITE_COMPLETE + * @FPGA_MGR_STATE_OPERATING: FPGA is programmed and operating + */ +enum fpga_mgr_states { + /* default FPGA states */ + FPGA_MGR_STATE_UNKNOWN, + FPGA_MGR_STATE_POWER_OFF, + FPGA_MGR_STATE_POWER_UP, + FPGA_MGR_STATE_RESET, + + /* getting an image for loading */ + FPGA_MGR_STATE_FIRMWARE_REQ, + FPGA_MGR_STATE_FIRMWARE_REQ_ERR, + + /* write sequence: init, write, complete */ + FPGA_MGR_STATE_WRITE_INIT, + FPGA_MGR_STATE_WRITE_INIT_ERR, + FPGA_MGR_STATE_WRITE, + FPGA_MGR_STATE_WRITE_ERR, + FPGA_MGR_STATE_WRITE_COMPLETE, + FPGA_MGR_STATE_WRITE_COMPLETE_ERR, + + /* fpga is programmed and operating */ + FPGA_MGR_STATE_OPERATING, +}; + +/* + * FPGA Manager flags + * FPGA_MGR_PARTIAL_RECONFIG: do partial reconfiguration if supported + * FPGA_MGR_EXTERNAL_CONFIG: FPGA has been configured prior to Linux booting + * FPGA_MGR_BITSTREAM_LSB_FIRST: SPI bitstream bit order is LSB first + * FPGA_MGR_COMPRESSED_BITSTREAM: FPGA bitstream is compressed + */ +#define FPGA_MGR_PARTIAL_RECONFIG BIT(0) +#define FPGA_MGR_EXTERNAL_CONFIG BIT(1) +#define FPGA_MGR_ENCRYPTED_BITSTREAM BIT(2) +#define FPGA_MGR_BITSTREAM_LSB_FIRST BIT(3) +#define FPGA_MGR_COMPRESSED_BITSTREAM BIT(4) + +/** + * struct fpga_image_info - information specific to a FPGA image + * @flags: boolean flags as defined above + * @enable_timeout_us: maximum time to enable traffic through bridge (uSec) + * @disable_timeout_us: maximum time to disable traffic through bridge (uSec) + * @config_complete_timeout_us: maximum time for FPGA to switch to operating + * status in the write_complete op. + */ +struct fpga_image_info { + u32 flags; + u32 enable_timeout_us; + u32 disable_timeout_us; + u32 config_complete_timeout_us; +}; + +struct fpgamgr { + struct firmware_handler fh; + struct device_d dev; + void *priv; + void __iomem *regs; + void __iomem *regs_data; + int programmed; +}; + + +#endif /*_LINUX_FPGA_MGR_H */ -- 2.29.2 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox
next prev parent reply other threads:[~2021-06-15 16:38 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-15 11:24 [PATCH v3 01/10] reset: add of_reset_control_get to header Steffen Trumtrar 2021-06-15 11:25 ` [PATCH v3 02/10] drivers: add fpga bridge framework Steffen Trumtrar 2021-06-15 11:25 ` [PATCH v3 03/10] drivers: fpga: add socfpga bridges Steffen Trumtrar 2021-06-15 11:25 ` [PATCH v3 04/10] firmware: socfpga: change function prefixes Steffen Trumtrar 2021-06-15 11:25 ` Steffen Trumtrar [this message] 2021-06-15 11:25 ` [PATCH v3 06/10] of: kconfig: of_overlay uses firmwaremgr_load_file Steffen Trumtrar 2021-06-15 11:25 ` [PATCH v3 07/10] of: of_firmware: add support for fpga bridges Steffen Trumtrar 2021-06-15 11:25 ` [PATCH v3 08/10] commands: firmwareload: allow loading firmware from dt Steffen Trumtrar 2021-06-15 11:25 ` [PATCH v3 09/10] drivers: firmware: socfpga: remove bridges shutdown Steffen Trumtrar 2021-06-15 11:25 ` [PATCH v3 10/10] firmware: add support for compressed images Steffen Trumtrar
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210615112508.5489-5-s.trumtrar@pengutronix.de \ --to=s.trumtrar@pengutronix.de \ --cc=barebox@lists.infradead.org \ --subject='Re: [PATCH v3 05/10] firmware: import fpga-mgr.h from linux' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox