• Home
  • Raw
  • Download

Lines Matching +full:fpga +full:- +full:based

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Technologic Systems TS-73xx SBC FPGA loader
7 * FPGA Manager Driver for the on-board Altera Cyclone II FPGA found on
8 * TS-7300, heavily based on load_fpga.c in their vendor tree.
17 #include <linux/fpga/fpga-mgr.h>
44 struct ts73xx_fpga_priv *priv = mgr->priv; in ts73xx_fpga_write_init()
46 /* Reset the FPGA */ in ts73xx_fpga_write_init()
47 writeb(0, priv->io_base + TS73XX_FPGA_CONFIG_REG); in ts73xx_fpga_write_init()
49 writeb(TS73XX_FPGA_RESET, priv->io_base + TS73XX_FPGA_CONFIG_REG); in ts73xx_fpga_write_init()
58 struct ts73xx_fpga_priv *priv = mgr->priv; in ts73xx_fpga_write()
63 while (count--) { in ts73xx_fpga_write()
64 ret = readb_poll_timeout(priv->io_base + TS73XX_FPGA_CONFIG_REG, in ts73xx_fpga_write()
70 writeb(buf[i], priv->io_base + TS73XX_FPGA_DATA_REG); in ts73xx_fpga_write()
80 struct ts73xx_fpga_priv *priv = mgr->priv; in ts73xx_fpga_write_complete()
84 reg = readb(priv->io_base + TS73XX_FPGA_CONFIG_REG); in ts73xx_fpga_write_complete()
86 writeb(reg, priv->io_base + TS73XX_FPGA_CONFIG_REG); in ts73xx_fpga_write_complete()
89 reg = readb(priv->io_base + TS73XX_FPGA_CONFIG_REG); in ts73xx_fpga_write_complete()
91 writeb(reg, priv->io_base + TS73XX_FPGA_CONFIG_REG); in ts73xx_fpga_write_complete()
93 reg = readb(priv->io_base + TS73XX_FPGA_CONFIG_REG); in ts73xx_fpga_write_complete()
95 return -ETIMEDOUT; in ts73xx_fpga_write_complete()
109 struct device *kdev = &pdev->dev; in ts73xx_fpga_probe()
116 return -ENOMEM; in ts73xx_fpga_probe()
118 priv->dev = kdev; in ts73xx_fpga_probe()
121 priv->io_base = devm_ioremap_resource(kdev, res); in ts73xx_fpga_probe()
122 if (IS_ERR(priv->io_base)) in ts73xx_fpga_probe()
123 return PTR_ERR(priv->io_base); in ts73xx_fpga_probe()
125 mgr = devm_fpga_mgr_create(kdev, "TS-73xx FPGA Manager", in ts73xx_fpga_probe()
128 return -ENOMEM; in ts73xx_fpga_probe()
146 .name = "ts73xx-fpga-mgr",
154 MODULE_DESCRIPTION("TS-73xx FPGA Manager driver");