Lines Matching +full:fpga +full:- +full:bridge
1 // SPDX-License-Identifier: GPL-2.0
3 * FPGA Bridge Driver for FPGA Management Engine (FME)
5 * Copyright (C) 2017-2018 Intel Corporation, Inc.
17 #include <linux/fpga/fpga-bridge.h>
20 #include "dfl-fme-pr.h"
28 static int fme_bridge_enable_set(struct fpga_bridge *bridge, bool enable) in fme_bridge_enable_set() argument
30 struct fme_br_priv *priv = bridge->priv; in fme_bridge_enable_set()
34 if (!priv->port_fdata) { in fme_bridge_enable_set()
35 port_fdata = dfl_fpga_cdev_find_port_data(priv->pdata->cdev, in fme_bridge_enable_set()
36 &priv->pdata->port_id, in fme_bridge_enable_set()
39 return -ENODEV; in fme_bridge_enable_set()
41 priv->port_fdata = port_fdata; in fme_bridge_enable_set()
44 if (priv->port_fdata && !priv->port_ops) { in fme_bridge_enable_set()
45 ops = dfl_fpga_port_ops_get(priv->port_fdata); in fme_bridge_enable_set()
46 if (!ops || !ops->enable_set) in fme_bridge_enable_set()
47 return -ENOENT; in fme_bridge_enable_set()
49 priv->port_ops = ops; in fme_bridge_enable_set()
52 return priv->port_ops->enable_set(priv->port_fdata, enable); in fme_bridge_enable_set()
61 struct device *dev = &pdev->dev; in fme_br_probe()
67 return -ENOMEM; in fme_br_probe()
69 priv->pdata = dev_get_platdata(dev); in fme_br_probe()
71 br = fpga_bridge_register(dev, "DFL FPGA FME Bridge", in fme_br_probe()
84 struct fme_br_priv *priv = br->priv; in fme_br_remove()
88 if (priv->port_ops) in fme_br_remove()
89 dfl_fpga_port_ops_put(priv->port_ops); in fme_br_remove()
102 MODULE_DESCRIPTION("FPGA Bridge for DFL FPGA Management Engine");
105 MODULE_ALIAS("platform:dfl-fme-bridge");