Lines Matching full:cdx
3 * CDX host controller driver for AMD versal-net platform.
11 #include <linux/cdx/cdx_bus.h>
14 #include "../cdx.h"
18 static unsigned int cdx_mcdi_rpc_timeout(struct cdx_mcdi *cdx, unsigned int cmd) in cdx_mcdi_rpc_timeout() argument
23 static void cdx_mcdi_request(struct cdx_mcdi *cdx, in cdx_mcdi_request() argument
27 if (cdx_rpmsg_send(cdx, hdr, hdr_len, sdu, sdu_len)) in cdx_mcdi_request()
28 dev_err(&cdx->rpdev->dev, "Failed to send rpmsg data\n"); in cdx_mcdi_request()
36 void cdx_rpmsg_post_probe(struct cdx_controller *cdx) in cdx_rpmsg_post_probe() argument
38 /* Register CDX controller with CDX bus driver */ in cdx_rpmsg_post_probe()
39 if (cdx_register_controller(cdx)) in cdx_rpmsg_post_probe()
40 dev_err(cdx->dev, "Failed to register CDX controller\n"); in cdx_rpmsg_post_probe()
43 void cdx_rpmsg_pre_remove(struct cdx_controller *cdx) in cdx_rpmsg_pre_remove() argument
45 cdx_unregister_controller(cdx); in cdx_rpmsg_pre_remove()
46 cdx_mcdi_wait_for_quiescence(cdx->priv, MCDI_RPC_TIMEOUT); in cdx_rpmsg_pre_remove()
49 static int cdx_configure_device(struct cdx_controller *cdx, in cdx_configure_device() argument
57 ret = cdx_mcdi_reset_device(cdx->priv, bus_num, dev_num); in cdx_configure_device()
66 static int cdx_scan_devices(struct cdx_controller *cdx) in cdx_scan_devices() argument
68 struct cdx_mcdi *cdx_mcdi = cdx->priv; in cdx_scan_devices()
72 /* MCDI FW Read: Fetch the number of CDX buses on this controller */ in cdx_scan_devices()
75 dev_err(cdx->dev, in cdx_scan_devices()
76 "Get number of CDX buses failed: %d\n", ret); in cdx_scan_devices()
87 dev_err(cdx->dev, in cdx_scan_devices()
88 "Get devices on CDX bus %d failed: %d\n", bus_num, ret); in cdx_scan_devices()
100 dev_err(cdx->dev, in cdx_scan_devices()
101 "CDX device config get failed for %d(bus):%d(dev), %d\n", in cdx_scan_devices()
105 dev_params.cdx = cdx; in cdx_scan_devices()
107 /* Add the device to the cdx bus */ in cdx_scan_devices()
110 dev_err(cdx->dev, "registering cdx dev: %d failed: %d\n", in cdx_scan_devices()
115 dev_dbg(cdx->dev, "CDX dev: %d on cdx bus: %d created\n", in cdx_scan_devices()
130 struct cdx_controller *cdx; in xlnx_cdx_probe() local
147 cdx = kzalloc(sizeof(*cdx), GFP_KERNEL); in xlnx_cdx_probe()
148 if (!cdx) { in xlnx_cdx_probe()
152 platform_set_drvdata(pdev, cdx); in xlnx_cdx_probe()
154 cdx->dev = &pdev->dev; in xlnx_cdx_probe()
155 cdx->priv = cdx_mcdi; in xlnx_cdx_probe()
156 cdx->ops = &cdx_ops; in xlnx_cdx_probe()
161 dev_err(&pdev->dev, "Failed to register CDX RPMsg transport\n"); in xlnx_cdx_probe()
165 dev_info(&pdev->dev, "Successfully registered CDX controller with RPMsg as transport\n"); in xlnx_cdx_probe()
169 kfree(cdx); in xlnx_cdx_probe()
180 struct cdx_controller *cdx = platform_get_drvdata(pdev); in xlnx_cdx_remove() local
181 struct cdx_mcdi *cdx_mcdi = cdx->priv; in xlnx_cdx_remove()
185 kfree(cdx); in xlnx_cdx_remove()
194 {.compatible = "xlnx,versal-net-cdx",},
202 .name = "cdx-controller",
230 MODULE_DESCRIPTION("CDX controller for AMD devices");