Lines Matching +full:retain +full:- +full:state +full:- +full:shutdown
1 /* Copyright 2008 - 2016 Freescale Semiconductor, Inc.
5 * * Redistributions of source code must retain the above copyright
48 struct device *dev = pcfg->dev; in portal_set_cpu()
51 pcfg->iommu_domain = iommu_domain_alloc(&platform_bus_type); in portal_set_cpu()
52 if (!pcfg->iommu_domain) { in portal_set_cpu()
56 ret = fsl_pamu_configure_l1_stash(pcfg->iommu_domain, cpu); in portal_set_cpu()
62 ret = iommu_attach_device(pcfg->iommu_domain, dev); in portal_set_cpu()
71 qman_set_sdest(pcfg->channel, cpu); in portal_set_cpu()
77 iommu_domain_free(pcfg->iommu_domain); in portal_set_cpu()
78 pcfg->iommu_domain = NULL; in portal_set_cpu()
88 qman_liodn_fixup(pcfg->channel); in init_pcfg()
90 pcfg->iommu_domain = NULL; in init_pcfg()
91 portal_set_cpu(pcfg, pcfg->cpu); in init_pcfg()
95 dev_crit(pcfg->dev, "%s: Portal failure on cpu %d\n", in init_pcfg()
96 __func__, pcfg->cpu); in init_pcfg()
100 /* Determine what should be interrupt-vs-poll driven */ in init_pcfg()
121 dev_info(pcfg->dev, "Portal initialised, cpu %d\n", pcfg->cpu); in init_pcfg()
130 if (pcfg->iommu_domain) { in qman_portal_update_sdest()
131 if (fsl_pamu_configure_l1_stash(pcfg->iommu_domain, cpu) < 0) { in qman_portal_update_sdest()
132 dev_err(pcfg->dev, in qman_portal_update_sdest()
138 qman_set_sdest(pcfg->channel, cpu); in qman_portal_update_sdest()
152 irq_set_affinity(pcfg->irq, cpumask_of(cpu)); in qman_offline_cpu()
168 irq_set_affinity(pcfg->irq, cpumask_of(cpu)); in qman_online_cpu()
183 struct device *dev = &pdev->dev; in qman_portal_probe()
184 struct device_node *node = dev->of_node; in qman_portal_probe()
192 return -EPROBE_DEFER; in qman_portal_probe()
194 dev_err(&pdev->dev, "failing probe due to qman probe error\n"); in qman_portal_probe()
195 return -ENODEV; in qman_portal_probe()
200 __qman_portals_probed = -1; in qman_portal_probe()
201 return -ENOMEM; in qman_portal_probe()
204 pcfg->dev = dev; in qman_portal_probe()
220 err = of_property_read_u32(node, "cell-index", &val); in qman_portal_probe()
222 dev_err(dev, "Can't get %pOF property 'cell-index'\n", node); in qman_portal_probe()
223 __qman_portals_probed = -1; in qman_portal_probe()
226 pcfg->channel = val; in qman_portal_probe()
227 pcfg->cpu = -1; in qman_portal_probe()
231 pcfg->irq = irq; in qman_portal_probe()
233 pcfg->addr_virt_ce = memremap(addr_phys[0]->start, in qman_portal_probe()
236 if (!pcfg->addr_virt_ce) { in qman_portal_probe()
241 pcfg->addr_virt_ci = ioremap(addr_phys[1]->start, in qman_portal_probe()
243 if (!pcfg->addr_virt_ci) { in qman_portal_probe()
248 pcfg->pools = qm_get_pools_sdqcr(); in qman_portal_probe()
261 pcfg->cpu = cpu; in qman_portal_probe()
281 * Empty all the frame queues so they are in reset state in qman_portal_probe()
286 dev_err(dev, "Failed to shutdown frame queue %d\n", in qman_portal_probe()
297 iounmap(pcfg->addr_virt_ci); in qman_portal_probe()
299 memunmap(pcfg->addr_virt_ce); in qman_portal_probe()
301 __qman_portals_probed = -1; in qman_portal_probe()
303 return -ENXIO; in qman_portal_probe()
308 .compatible = "fsl,qman-portal",