Lines Matching +full:qman +full:- +full:portal +full:- +full:1
1 /*-
2 * Copyright (c) 2011-2012 Semihalf.
8 * 1. Redistributions of source code must retain the above copyright
44 #include "qman.h"
86 message = "Invalid Dequeue Direct Connect Portal Interrupt"; in qman_exception()
116 device_printf(sc->sc_dev, "QMan Exception: %s.\n", message); in qman_exception()
132 device_printf(sc->sc_dev, "dummy callback for received frame.\n"); in qman_received_frame_callback()
150 device_printf(sc->sc_dev, "dummy callback for rejected frame.\n"); in qman_rejected_frame_callback()
163 sc->sc_dev = dev; in qman_attach()
174 sc->sc_rrid = 0; in qman_attach()
175 sc->sc_rres = bus_alloc_resource(dev, SYS_RES_MEMORY, in qman_attach()
176 &sc->sc_rrid, 0, ~0, QMAN_CCSR_SIZE, RF_ACTIVE); in qman_attach()
177 if (sc->sc_rres == NULL) { in qman_attach()
182 sc->sc_irid = 0; in qman_attach()
183 sc->sc_ires = bus_alloc_resource_any(dev, SYS_RES_IRQ, in qman_attach()
184 &sc->sc_irid, RF_ACTIVE | RF_SHAREABLE); in qman_attach()
185 if (sc->sc_ires == NULL) { in qman_attach()
195 /* Initialize QMan */ in qman_attach()
197 qp.baseAddress = rman_get_bushandle(sc->sc_rres); in qman_attach()
198 qp.swPortalsBaseAddress = rman_get_bushandle(qp_sc->sc_rres[0]); in qman_attach()
205 qp.errIrq = (uintptr_t)sc->sc_ires; in qman_attach()
211 sc->sc_qh = QM_Config(&qp); in qman_attach()
212 if (sc->sc_qh == NULL) { in qman_attach()
217 error = QM_Init(sc->sc_qh); in qman_attach()
223 error = QM_GetRevision(sc->sc_qh, &rev); in qman_attach()
225 device_printf(dev, "could not get QMan revision\n"); in qman_attach()
251 if (sc->sc_qh) in qman_detach()
252 QM_Free(sc->sc_qh); in qman_detach()
254 if (sc->sc_ires != NULL) in qman_detach()
255 XX_DeallocIntr((uintptr_t)sc->sc_ires); in qman_detach()
257 if (sc->sc_ires != NULL) in qman_detach()
259 sc->sc_irid, sc->sc_ires); in qman_detach()
261 if (sc->sc_rres != NULL) in qman_detach()
263 sc->sc_rrid, sc->sc_rres); in qman_detach()
291 * @group QMan API functions implementation.
304 t_Handle fqrh, portal; in qman_fqr_create() local
310 /* Ensure we have got QMan port initialized */ in qman_fqr_create()
311 portal = qman_portal_setup(sc); in qman_fqr_create()
312 if (portal == NULL) { in qman_fqr_create()
313 device_printf(sc->sc_dev, "could not setup QMan portal\n"); in qman_fqr_create()
317 fqr.h_Qm = sc->sc_qh; in qman_fqr_create()
318 fqr.h_QmPortal = portal; in qman_fqr_create()
357 device_printf(sc->sc_dev, "could not create Frame Queue Range" in qman_fqr_create()
362 sc->sc_fqr_cpu[QM_FQR_GetFqid(fqrh)] = PCPU_GET(cpuid); in qman_fqr_create()
382 sched_bind(curthread, sc->sc_fqr_cpu[QM_FQR_GetFqid(fqr)]); in qman_fqr_free()
400 t_Handle portal; in qman_fqr_register_cb() local
405 /* Ensure we have got QMan port initialized */ in qman_fqr_register_cb()
406 portal = qman_portal_setup(sc); in qman_fqr_register_cb()
407 if (portal == NULL) { in qman_fqr_register_cb()
408 device_printf(sc->sc_dev, "could not setup QMan portal\n"); in qman_fqr_register_cb()
425 t_Handle portal; in qman_fqr_enqueue() local
430 /* Ensure we have got QMan port initialized */ in qman_fqr_enqueue()
431 portal = qman_portal_setup(sc); in qman_fqr_enqueue()
432 if (portal == NULL) { in qman_fqr_enqueue()
433 device_printf(sc->sc_dev, "could not setup QMan portal\n"); in qman_fqr_enqueue()
438 error = QM_FQR_Enqueue(fqr, portal, fqid_off, frame); in qman_fqr_enqueue()
451 t_Handle portal; in qman_fqr_get_counter() local
456 /* Ensure we have got QMan port initialized */ in qman_fqr_get_counter()
457 portal = qman_portal_setup(sc); in qman_fqr_get_counter()
458 if (portal == NULL) { in qman_fqr_get_counter()
459 device_printf(sc->sc_dev, "could not setup QMan portal\n"); in qman_fqr_get_counter()
464 val = QM_FQR_GetCounter(fqr, portal, fqid_off, counter); in qman_fqr_get_counter()
476 t_Handle portal; in qman_fqr_pull_frame() local
481 /* Ensure we have got QMan port initialized */ in qman_fqr_pull_frame()
482 portal = qman_portal_setup(sc); in qman_fqr_pull_frame()
483 if (portal == NULL) { in qman_fqr_pull_frame()
484 device_printf(sc->sc_dev, "could not setup QMan portal\n"); in qman_fqr_pull_frame()
489 error = QM_FQR_PullFrame(fqr, portal, fqid_off, frame); in qman_fqr_pull_frame()
501 t_Handle portal; in qman_fqr_get_base_fqid() local
506 /* Ensure we have got QMan port initialized */ in qman_fqr_get_base_fqid()
507 portal = qman_portal_setup(sc); in qman_fqr_get_base_fqid()
508 if (portal == NULL) { in qman_fqr_get_base_fqid()
509 device_printf(sc->sc_dev, "could not setup QMan portal\n"); in qman_fqr_get_base_fqid()
526 t_Handle portal; in qman_poll() local
531 /* Ensure we have got QMan port initialized */ in qman_poll()
532 portal = qman_portal_setup(sc); in qman_poll()
533 if (portal == NULL) { in qman_poll()
534 device_printf(sc->sc_dev, "could not setup QMan portal\n"); in qman_poll()
539 error = QM_Poll(sc->sc_qh, source); in qman_poll()