Lines Matching +full:mc +full:- +full:bus
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
4 * Copyright © 2021-2022 Dmitry Salychev
30 * DPAA2 MC command portal and helper routines.
35 #include <sys/bus.h>
45 #include <machine/bus.h>
77 mtx_init(&p->lock, "mcp_sleep_lock", NULL, MTX_DEF); in dpaa2_mcp_init_portal()
79 p->res = res; in dpaa2_mcp_init_portal()
80 p->map = map; in dpaa2_mcp_init_portal()
81 p->flags = flags; in dpaa2_mcp_init_portal()
82 p->rc_api_major = 0; /* DPRC API version to be cached later. */ in dpaa2_mcp_init_portal()
83 p->rc_api_minor = 0; in dpaa2_mcp_init_portal()
98 mcp->flags |= DPAA2_PORTAL_DESTROYED; in dpaa2_mcp_free_portal()
104 mtx_destroy(&mcp->lock); in dpaa2_mcp_free_portal()
114 hdr = (struct dpaa2_cmd_header *) &cmd->header; in dpaa2_mcp_tk()
115 hdr->token = token; in dpaa2_mcp_tk()
125 hdr = (struct dpaa2_cmd_header *) &cmd->header; in dpaa2_mcp_f()
126 hdr->flags_hw = DPAA2_CMD_DEF; in dpaa2_mcp_f()
127 hdr->flags_sw = DPAA2_CMD_DEF; in dpaa2_mcp_f()
129 hdr->flags_hw |= DPAA2_HW_FLAG_HIGH_PRIO; in dpaa2_mcp_f()
132 hdr->flags_sw |= DPAA2_SW_FLAG_INTR_DIS; in dpaa2_mcp_f()
141 device_set_desc(dev, "DPAA2 MC portal"); in dpaa2_mcp_probe()
165 sc->dev = dev; in dpaa2_mcp_attach()
167 error = bus_alloc_resources(sc->dev, dpaa2_mcp_spec, sc->res); in dpaa2_mcp_attach()
175 if (rman_get_size(sc->res[0]) < DPAA2_MCP_MEM_WIDTH) { in dpaa2_mcp_attach()
176 device_printf(dev, "%s: MC portal memory region too small: " in dpaa2_mcp_attach()
177 "%jd\n", __func__, rman_get_size(sc->res[0])); in dpaa2_mcp_attach()
181 /* Map MC portal memory resource. */ in dpaa2_mcp_attach()
184 error = bus_map_resource(sc->dev, SYS_RES_MEMORY, sc->res[0], &req, in dpaa2_mcp_attach()
185 &sc->map[0]); in dpaa2_mcp_attach()
187 device_printf(dev, "%s: failed to map MC portal memory\n", in dpaa2_mcp_attach()
192 /* Initialize portal to send commands to MC. */ in dpaa2_mcp_attach()
193 error = dpaa2_mcp_init_portal(&portal, sc->res[0], &sc->map[0], in dpaa2_mcp_attach()
204 error = DPAA2_CMD_RC_OPEN(dev, child, &cmd, rcinfo->id, &rc_token); in dpaa2_mcp_attach()
210 error = DPAA2_CMD_MCP_OPEN(dev, child, &cmd, dinfo->id, &mcp_token); in dpaa2_mcp_attach()
213 __func__, dinfo->id, error); in dpaa2_mcp_attach()
221 "error=%d\n", __func__, dinfo->id, error); in dpaa2_mcp_attach()
227 dinfo->portal = portal; in dpaa2_mcp_attach()