Lines Matching full:cdx
3 * CDX bus driver.
11 * CDX is a Hardware Architecture designed for AMD FPGA devices. It
19 * The diagram below shows an overview of the CDX architecture:
24 * | CDX device drivers|
26 * | CDX bus |
28 * | CDX controller |
68 #include <linux/cdx/cdx_bus.h>
72 #include "cdx.h"
74 /* Default DMA mask for devices on a CDX bus */
78 /* IDA for CDX controllers registered with the CDX bus */
82 /* Debugfs dir for cdx bus */
85 static char *compat_node_name = "xlnx,versal-net-cdx";
90 * cdx_dev_reset - Reset a CDX device
91 * @dev: CDX device
98 struct cdx_controller *cdx = cdx_dev->cdx; in cdx_dev_reset() local
109 ret = cdx->ops->dev_configure(cdx, cdx_dev->bus_num, in cdx_dev_reset()
112 dev_err(dev, "cdx device reset failed\n"); in cdx_dev_reset()
123 * reset_cdx_device - Reset a CDX device
124 * @dev: CDX device
137 * cdx_unregister_device - Unregister a CDX device
138 * @dev: CDX device
150 struct cdx_controller *cdx = cdx_dev->cdx; in cdx_unregister_device() local
154 if (cdx_dev->enabled && cdx->ops->bus_disable) in cdx_unregister_device()
155 cdx->ops->bus_disable(cdx, cdx_dev->bus_num); in cdx_unregister_device()
175 /* Reset all the devices attached to cdx bus */ in cdx_unregister_devices()
180 * cdx_match_one_device - Tell if a CDX device structure has a matching
181 * CDX device id structure
182 * @id: single CDX device id structure to match
183 * @dev: the CDX device structure to match against
202 * cdx_match_id - See if a CDX device matches a given cdx_id table
203 * @ids: array of CDX device ID structures to search in
204 * @dev: the CDX device structure to match against.
206 * Used by a driver to check whether a CDX device is in its list of
227 struct cdx_controller *cdx = cdx_dev->cdx; in cdx_set_master() local
233 if (cdx->ops->dev_configure) in cdx_set_master()
234 ret = cdx->ops->dev_configure(cdx, cdx_dev->bus_num, in cdx_set_master()
243 struct cdx_controller *cdx = cdx_dev->cdx; in cdx_clear_master() local
249 if (cdx->ops->dev_configure) in cdx_clear_master()
250 ret = cdx->ops->dev_configure(cdx, cdx_dev->bus_num, in cdx_clear_master()
259 * @dev: the cdx device to match against
260 * @drv: the device driver to search for matching cdx device
306 struct cdx_controller *cdx = cdx_dev->cdx; in cdx_probe() local
313 if (cdx->msi_domain) { in cdx_probe()
341 struct cdx_controller *cdx = cdx_dev->cdx; in cdx_shutdown() local
343 if (cdx_dev->is_bus && cdx_dev->enabled && cdx->ops->bus_disable) in cdx_shutdown()
344 cdx->ops->bus_disable(cdx, cdx_dev->bus_num); in cdx_shutdown()
353 struct cdx_controller *cdx = cdx_dev->cdx; in cdx_dma_configure() local
357 ret = of_dma_configure_id(dev, cdx->dev->of_node, 0, &input_id); in cdx_dma_configure()
435 /* Reset all the devices attached to cdx bus */ in reset_store()
449 return sprintf(buf, "cdx:v%04Xd%04Xsv%04Xsd%04Xc%06X\n", cdx_dev->vendor, in modalias_show()
489 struct cdx_controller *cdx = cdx_dev->cdx; in enable_store() local
499 if (enable && cdx->ops->bus_enable) in enable_store()
500 ret = cdx->ops->bus_enable(cdx, cdx_dev->bus_num); in enable_store()
501 else if (!enable && cdx->ops->bus_disable) in enable_store()
502 ret = cdx->ops->bus_disable(cdx, cdx_dev->bus_num); in enable_store()
608 struct cdx_controller *cdx; in rescan_store() local
633 cdx = platform_get_drvdata(pd); in rescan_store()
634 if (cdx && cdx->controller_registered && cdx->ops->scan) in rescan_store()
635 cdx->ops->scan(cdx); in rescan_store()
654 .name = "cdx",
705 * cdx_mmap_resource - map a CDX resource into user memory space
712 * Use the regular CDX mapping routines to map a CDX resource into userspace.
794 struct cdx_controller *cdx = dev_params->cdx; in cdx_device_add() local
807 /* Populate CDX dev params */ in cdx_device_add()
818 cdx_dev->cdx = dev_params->cdx; in cdx_device_add()
831 dev_set_name(&cdx_dev->dev, "cdx-%02x:%02x", in cdx_device_add()
832 ((cdx->id << CDX_CONTROLLER_ID_SHIFT) | (cdx_dev->bus_num & CDX_BUS_NUM_MASK)), in cdx_device_add()
835 if (cdx->msi_domain) { in cdx_device_add()
837 dev_set_msi_domain(&cdx_dev->dev, cdx->msi_domain); in cdx_device_add()
843 "cdx device add failed: %d", ret); in cdx_device_add()
857 "cdx device resource<%d> file creation failed: %d", i, ret); in cdx_device_add()
880 struct device *cdx_bus_add(struct cdx_controller *cdx, u8 bus_num) in cdx_bus_add() argument
890 cdx_dev->cdx = cdx; in cdx_bus_add()
892 cdx_dev->dev.parent = cdx->dev; in cdx_bus_add()
898 dev_set_name(&cdx_dev->dev, "cdx-%02x", in cdx_bus_add()
899 ((cdx->id << CDX_CONTROLLER_ID_SHIFT) | (bus_num & CDX_BUS_NUM_MASK))); in cdx_bus_add()
903 dev_err(&cdx_dev->dev, "cdx bus device add failed: %d\n", ret); in cdx_bus_add()
907 if (cdx->ops->bus_enable) { in cdx_bus_add()
908 ret = cdx->ops->bus_enable(cdx, bus_num); in cdx_bus_add()
910 dev_err(cdx->dev, "cdx bus enable failed: %d\n", ret); in cdx_bus_add()
927 int cdx_register_controller(struct cdx_controller *cdx) in cdx_register_controller() argument
933 dev_err(cdx->dev, in cdx_register_controller()
935 cdx->id = (u8)MAX_CDX_CONTROLLERS; in cdx_register_controller()
940 cdx->id = ret; in cdx_register_controller()
943 if (cdx->ops->scan) in cdx_register_controller()
944 cdx->ops->scan(cdx); in cdx_register_controller()
945 cdx->controller_registered = true; in cdx_register_controller()
952 void cdx_unregister_controller(struct cdx_controller *cdx) in cdx_unregister_controller() argument
954 if (cdx->id >= MAX_CDX_CONTROLLERS) in cdx_unregister_controller()
959 cdx->controller_registered = false; in cdx_unregister_controller()
960 device_for_each_child(cdx->dev, NULL, cdx_unregister_device); in cdx_unregister_controller()
961 ida_free(&cdx_controller_ida, cdx->id); in cdx_unregister_controller()