Lines Matching +full:qman +full:- +full:channel +full:- +full:range
1 /*-
2 * Copyright (c) 2011-2012 Semihalf.
44 #include "qman.h"
104 message = "Invalid Enqueue Channel Interrupt"; in qman_exception()
116 device_printf(sc->sc_dev, "QMan Exception: %s.\n", message); in qman_exception()
122 * frame queue range (fqr).
132 device_printf(sc->sc_dev, "dummy callback for received frame.\n"); in qman_received_frame_callback()
139 * frame queue range (fqr).
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.
296 qman_fqr_create(uint32_t fqids_num, e_QmFQChannel channel, uint8_t wq, in qman_fqr_create() argument
310 /* Ensure we have got QMan port initialized */ 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()
328 fqr.channel = channel; 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()
405 /* Ensure we have got QMan port initialized */ in qman_fqr_register_cb()
408 device_printf(sc->sc_dev, "could not setup QMan portal\n"); in qman_fqr_register_cb()
430 /* Ensure we have got QMan port initialized */ in qman_fqr_enqueue()
433 device_printf(sc->sc_dev, "could not setup QMan portal\n"); in qman_fqr_enqueue()
456 /* Ensure we have got QMan port initialized */ in qman_fqr_get_counter()
459 device_printf(sc->sc_dev, "could not setup QMan portal\n"); in qman_fqr_get_counter()
481 /* Ensure we have got QMan port initialized */ in qman_fqr_pull_frame()
484 device_printf(sc->sc_dev, "could not setup QMan portal\n"); in qman_fqr_pull_frame()
506 /* Ensure we have got QMan port initialized */ in qman_fqr_get_base_fqid()
509 device_printf(sc->sc_dev, "could not setup QMan portal\n"); in qman_fqr_get_base_fqid()
531 /* Ensure we have got QMan port initialized */ 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()