Lines Matching full:vpu
48 * struct vpu - Ingenic VPU remoteproc private structure
50 * @clks: pointers to the VPU and AUX clocks
56 struct vpu { struct
66 struct vpu *vpu = rproc->priv; in ingenic_rproc_prepare() argument
70 ret = clk_bulk_prepare_enable(ARRAY_SIZE(vpu->clks), vpu->clks); in ingenic_rproc_prepare()
72 dev_err(vpu->dev, "Unable to start clocks: %d\n", ret); in ingenic_rproc_prepare()
79 struct vpu *vpu = rproc->priv; in ingenic_rproc_unprepare() local
81 clk_bulk_disable_unprepare(ARRAY_SIZE(vpu->clks), vpu->clks); in ingenic_rproc_unprepare()
88 struct vpu *vpu = rproc->priv; in ingenic_rproc_start() local
91 enable_irq(vpu->irq); in ingenic_rproc_start()
95 writel(ctrl, vpu->aux_base + REG_AUX_CTRL); in ingenic_rproc_start()
102 struct vpu *vpu = rproc->priv; in ingenic_rproc_stop() local
104 disable_irq(vpu->irq); in ingenic_rproc_stop()
107 writel(AUX_CTRL_SW_RESET, vpu->aux_base + REG_AUX_CTRL); in ingenic_rproc_stop()
114 struct vpu *vpu = rproc->priv; in ingenic_rproc_kick() local
116 writel(vqid, vpu->aux_base + REG_CORE_MSG); in ingenic_rproc_kick()
121 struct vpu *vpu = rproc->priv; in ingenic_rproc_da_to_va() local
126 const struct vpu_mem_info *info = &vpu->mem_info[i]; in ingenic_rproc_da_to_va()
150 struct vpu *vpu = rproc->priv; in vpu_interrupt() local
153 vring = readl(vpu->aux_base + REG_AUX_MSG); in vpu_interrupt()
156 writel(0, vpu->aux_base + REG_AUX_MSG_ACK); in vpu_interrupt()
166 struct vpu *vpu; in ingenic_rproc_probe() local
170 rproc = devm_rproc_alloc(dev, "ingenic-vpu", in ingenic_rproc_probe()
171 &ingenic_rproc_ops, NULL, sizeof(*vpu)); in ingenic_rproc_probe()
175 vpu = rproc->priv; in ingenic_rproc_probe()
176 vpu->dev = &pdev->dev; in ingenic_rproc_probe()
177 platform_set_drvdata(pdev, vpu); in ingenic_rproc_probe()
180 vpu->aux_base = devm_ioremap_resource(dev, mem); in ingenic_rproc_probe()
181 if (IS_ERR(vpu->aux_base)) { in ingenic_rproc_probe()
183 return PTR_ERR(vpu->aux_base); in ingenic_rproc_probe()
190 vpu->mem_info[i].base = devm_ioremap_resource(dev, mem); in ingenic_rproc_probe()
191 if (IS_ERR(vpu->mem_info[i].base)) { in ingenic_rproc_probe()
192 ret = PTR_ERR(vpu->mem_info[i].base); in ingenic_rproc_probe()
197 vpu->mem_info[i].len = resource_size(mem); in ingenic_rproc_probe()
198 vpu->mem_info[i].map = &vpu_mem_map[i]; in ingenic_rproc_probe()
201 vpu->clks[0].id = "vpu"; in ingenic_rproc_probe()
202 vpu->clks[1].id = "aux"; in ingenic_rproc_probe()
204 ret = devm_clk_bulk_get(dev, ARRAY_SIZE(vpu->clks), vpu->clks); in ingenic_rproc_probe()
210 vpu->irq = platform_get_irq(pdev, 0); in ingenic_rproc_probe()
211 if (vpu->irq < 0) in ingenic_rproc_probe()
212 return vpu->irq; in ingenic_rproc_probe()
214 ret = devm_request_irq(dev, vpu->irq, vpu_interrupt, 0, "VPU", rproc); in ingenic_rproc_probe()
220 disable_irq(vpu->irq); in ingenic_rproc_probe()
232 { .compatible = "ingenic,jz4770-vpu-rproc", },
240 .name = "ingenic-vpu",