Lines Matching +full:qman +full:- +full:channel +full:- +full:range
1 /* Copyright 2008 - 2016 Freescale Semiconductor, Inc.
101 * Corenet initiator settings. Stash request queues are 4-deep to match cores
111 /* Follows WQ_CS_CFG0-5 */
134 #define QM_EIRQ_MBEI 0x02000000 /* Multi-bit ECC Error */
135 #define QM_EIRQ_SBEI 0x01000000 /* Single-bit ECC Error */
139 #define QM_EIRQ_IDDI 0x00000800 /* Invalid Dequeue (Direct-connect) */
146 #define QM_EIRQ_IECI 0x00000002 /* Invalid Enqueue Channel */
158 u32 info; /* res[30-31], ptyp[29], pnum[24-28], fqid[0-23] */
163 return p->info & BIT(29); in qm_ecir_is_dcp()
168 return (p->info >> 24) & 0x1f; in qm_ecir_get_pnum()
173 return p->info & (BIT(24) - 1); in qm_ecir_get_fqid()
177 u32 info; /* ptyp[31], res[10-30], pnum[0-9] */
182 return p->info & BIT(31); in qm_ecir2_is_dcp()
187 return p->info & (BIT(10) - 1); in qm_ecir2_get_pnum()
191 u32 info; /* memid[24-27], eadr[0-11] */
192 /* v3: memid[24-28], eadr[0-15] */
197 return (p->info >> 24) & 0xf; in qm_eadr_get_memid()
202 return p->info & (BIT(12) - 1); in qm_eadr_get_eadr()
207 return (p->info >> 24) & 0x1f; in qm_eadr_v3_get_memid()
212 return p->info & (BIT(16) - 1); in qm_eadr_v3_get_eadr()
226 { QM_EIRQ_MBEI, "Multi-bit ECC Error" },
227 { QM_EIRQ_SBEI, "Single-bit ECC Error" },
231 { QM_EIRQ_IDDI, "Invalid Dequeue (Direct-connect)" },
238 { QM_EIRQ_IECI, "Invalid Enqueue Channel" },
266 * Keeping a list here of QMan registers I have not yet covered;
269 * QMAN_EECC, QMAN_SBET, QMAN_EINJ, QMAN_SBEC0-12
272 /* Pointer to the start of the QMan's CCSR space */
351 /* choke if size isn't within range */ in qm_set_memory()
354 /* choke if 'ba' has lower-alignment than 'size' */ in qm_set_memory()
355 DPAA_ASSERT(!(ba & (size - 1))); in qm_set_memory()
357 /* Check to see if QMan has already been initialized */ in qm_set_memory()
363 pr_err("Attempted to reinitialize QMan with different BAR, got 0x%llx read BARE=0x%x BAR=0x%x\n", in qm_set_memory()
365 return -ENOMEM; in qm_set_memory()
374 pr_crit("memremap() of QMan private memory failed\n"); in qm_set_memory()
375 return -ENOMEM; in qm_set_memory()
382 * cache must be flushed since QMan does non coherent accesses in qm_set_memory()
391 qm_ccsr_out(offset + REG_offset_AR, PFDR_AR_EN | (exp - 1)); in qm_set_memory()
420 * TODO: remove this - it's a workaround for a model bug that is in qm_init_pfdr()
424 qm_ccsr_out(REG_MCP(1), pfdr_start + num - 16); in qm_init_pfdr()
434 return -EACCES; in qm_init_pfdr()
436 return -EINVAL; in qm_init_pfdr()
438 return -ENODEV; in qm_init_pfdr()
442 * QMan needs two global memory areas initialized at boot time:
446 * and the addresses and sizes are initialized when the QMan device is probed
454 * string is set to fsl-qman-fqd and fsl-qman-pfdr
458 /* map as cacheable, non-guarded */ in zero_priv_mem()
462 return -ENOMEM; in zero_priv_mem()
488 j = 16 - i; in log_edata_bits()
568 /* Re-arm error capture registers */ in qman_isr()
596 /* Only initialize PFDRs if the QMan was not initialized before */ in qman_init_ccsr()
598 err = qm_init_pfdr(dev, 8, pfdr_sz / 64 - 8); in qman_init_ccsr()
621 void __qman_liodn_fixup(u16 channel) in __qman_liodn_fixup() argument
626 int idx = channel - QM_CHANNEL_SWPORTAL0; in __qman_liodn_fixup()
645 void qman_set_sdest(u16 channel, unsigned int cpu_idx) in qman_set_sdest() argument
647 int idx = channel - QM_CHANNEL_SWPORTAL0; in qman_set_sdest()
682 return -ENODEV; in qman_resource_init()
686 pool_chan_num, -1); in qman_resource_init()
692 ret = gen_pool_add(qm_cgralloc, DPAA_GENALLOC_OFF, cgrid_num, -1); in qman_resource_init()
694 dev_err(dev, "Failed to seed CGRID range (%d)\n", ret); in qman_resource_init()
703 qm_get_fqid_maxcnt() - QM_FQID_RANGE_START, -1); in qman_resource_init()
705 dev_err(dev, "Failed to seed FQID range (%d)\n", ret); in qman_resource_init()
732 struct device *dev = &pdev->dev; in fsl_qman_probe()
733 struct device_node *node = dev->of_node; in fsl_qman_probe()
739 __qman_probed = -1; in fsl_qman_probe()
745 return -ENXIO; in fsl_qman_probe()
747 qm_ccsr_start = devm_ioremap(dev, res->start, resource_size(res)); in fsl_qman_probe()
749 return -ENXIO; in fsl_qman_probe()
754 return -ENODEV; in fsl_qman_probe()
768 dev_err(dev, "Unknown QMan version\n"); in fsl_qman_probe()
769 return -ENODEV; in fsl_qman_probe()
782 ret = qbman_init_private_mem(dev, 0, "fsl,qman-fqd", &fqd_a, &fqd_sz); in fsl_qman_probe()
786 return -ENODEV; in fsl_qman_probe()
798 ret = qbman_init_private_mem(dev, 1, "fsl,qman-pfdr", &pfdr_a, &pfdr_sz); in fsl_qman_probe()
802 return -ENODEV; in fsl_qman_probe()
816 return -ENODEV; in fsl_qman_probe()
818 ret = devm_request_irq(dev, err_irq, qman_isr, IRQF_SHARED, "qman-err", in fsl_qman_probe()
827 * Write-to-clear any stale bits, (eg. starvation being asserted prior in fsl_qman_probe()
834 qm_fqalloc = devm_gen_pool_create(dev, 0, -1, "qman-fqalloc"); in fsl_qman_probe()
837 dev_err(dev, "qman-fqalloc pool init failed (%d)\n", ret); in fsl_qman_probe()
841 qm_qpalloc = devm_gen_pool_create(dev, 0, -1, "qman-qpalloc"); in fsl_qman_probe()
844 dev_err(dev, "qman-qpalloc pool init failed (%d)\n", ret); in fsl_qman_probe()
848 qm_cgralloc = devm_gen_pool_create(dev, 0, -1, "qman-cgralloc"); in fsl_qman_probe()
851 dev_err(dev, "qman-cgralloc pool init failed (%d)\n", ret); in fsl_qman_probe()
874 .compatible = "fsl,qman",