1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /*
- * Intel MIC Platform Software Stack (MPSS)
- *
- * Copyright(c) 2014 Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License, version 2, as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that 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.
- *
- * Intel SCIF driver.
- */
- #ifndef _SCIF_PEER_BUS_H_
- #define _SCIF_PEER_BUS_H_
- #include <linux/device.h>
- #include <linux/mic_common.h>
- /*
- * Peer devices show up as PCIe devices for the mgmt node but not the cards.
- * The mgmt node discovers all the cards on the PCIe bus and informs the other
- * cards about their peers. Upon notification of a peer a node adds a peer
- * device to the peer bus to maintain symmetry in the way devices are
- * discovered across all nodes in the SCIF network.
- */
- /**
- * scif_peer_dev - representation of a peer SCIF device
- * @dev: underlying device
- * @dnode - The destination node which this device will communicate with.
- */
- struct scif_peer_dev {
- struct device dev;
- u8 dnode;
- };
- /**
- * scif_peer_driver - operations for a scif_peer I/O driver
- * @driver: underlying device driver (populate name and owner).
- * @id_table: the ids serviced by this driver.
- * @probe: the function to call when a device is found. Returns 0 or -errno.
- * @remove: the function to call when a device is removed.
- */
- struct scif_peer_driver {
- struct device_driver driver;
- const struct scif_peer_dev_id *id_table;
- int (*probe)(struct scif_peer_dev *dev);
- void (*remove)(struct scif_peer_dev *dev);
- };
- struct scif_dev;
- int scif_peer_register_driver(struct scif_peer_driver *driver);
- void scif_peer_unregister_driver(struct scif_peer_driver *driver);
- struct scif_peer_dev *scif_peer_register_device(struct scif_dev *sdev);
- void scif_peer_unregister_device(struct scif_peer_dev *sdev);
- int scif_peer_bus_init(void);
- void scif_peer_bus_exit(void);
- #endif /* _SCIF_PEER_BUS_H */
|