#include <linux/clk.h>
#include <linux/completion.h>
#include <linux/delay.h>
#include <linux/dma-mapping.h>
#include <linux/fpga/fpga-mgr.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/module.h>
#include <linux/mfd/syscon.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
#include <linux/pm.h>
#include <linux/regmap.h>
#include <linux/string.h>
#include <linux/scatterlist.h>
#define SLCR_FPGA_RST_CTRL_OFFSET …
#define SLCR_LVL_SHFTR_EN_OFFSET …
#define CTRL_OFFSET …
#define LOCK_OFFSET …
#define INT_STS_OFFSET …
#define INT_MASK_OFFSET …
#define STATUS_OFFSET …
#define DMA_SRC_ADDR_OFFSET …
#define DMA_DST_ADDR_OFFSET …
#define DMA_SRC_LEN_OFFSET …
#define DMA_DEST_LEN_OFFSET …
#define UNLOCK_OFFSET …
#define MCTRL_OFFSET …
#define CTRL_PCFG_PROG_B_MASK …
#define CTRL_PCAP_PR_MASK …
#define CTRL_PCAP_MODE_MASK …
#define CTRL_PCAP_RATE_EN_MASK …
#define CTRL_SEC_EN_MASK …
#define MCTRL_PCAP_LPBK_MASK …
#define STATUS_DMA_Q_F …
#define STATUS_DMA_Q_E …
#define STATUS_PCFG_INIT_MASK …
#define IXR_DMA_DONE_MASK …
#define IXR_D_P_DONE_MASK …
#define IXR_PCFG_DONE_MASK …
#define IXR_ERROR_FLAGS_MASK …
#define IXR_ALL_MASK …
#define DMA_INVALID_ADDRESS …
#define UNLOCK_MASK …
#define INIT_POLL_TIMEOUT …
#define INIT_POLL_DELAY …
#define DMA_SRC_LAST_TRANSFER …
#define DMA_TIMEOUT_MS …
#define LVL_SHFTR_DISABLE_ALL_MASK …
#define LVL_SHFTR_ENABLE_PS_TO_PL …
#define LVL_SHFTR_ENABLE_PL_TO_PS …
#define FPGA_RST_ALL_MASK …
#define FPGA_RST_NONE_MASK …
struct zynq_fpga_priv { … };
static inline void zynq_fpga_write(struct zynq_fpga_priv *priv, u32 offset,
u32 val)
{ … }
static inline u32 zynq_fpga_read(const struct zynq_fpga_priv *priv,
u32 offset)
{ … }
#define zynq_fpga_poll_timeout(priv, addr, val, cond, sleep_us, timeout_us) …
static inline void zynq_fpga_set_irq(struct zynq_fpga_priv *priv, u32 enable)
{ … }
static void zynq_step_dma(struct zynq_fpga_priv *priv)
{ … }
static irqreturn_t zynq_fpga_isr(int irq, void *data)
{ … }
static bool zynq_fpga_has_sync(const u8 *buf, size_t count)
{ … }
static int zynq_fpga_ops_write_init(struct fpga_manager *mgr,
struct fpga_image_info *info,
const char *buf, size_t count)
{ … }
static int zynq_fpga_ops_write(struct fpga_manager *mgr, struct sg_table *sgt)
{ … }
static int zynq_fpga_ops_write_complete(struct fpga_manager *mgr,
struct fpga_image_info *info)
{ … }
static enum fpga_mgr_states zynq_fpga_ops_state(struct fpga_manager *mgr)
{ … }
static const struct fpga_manager_ops zynq_fpga_ops = …;
static int zynq_fpga_probe(struct platform_device *pdev)
{ … }
static void zynq_fpga_remove(struct platform_device *pdev)
{ … }
#ifdef CONFIG_OF
static const struct of_device_id zynq_fpga_of_match[] = …;
MODULE_DEVICE_TABLE(of, zynq_fpga_of_match);
#endif
static struct platform_driver zynq_fpga_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;