Lines Matching refs:mdev
26 struct komeda_dev *mdev = sf->private; in komeda_register_show() local
31 pm_runtime_get_sync(mdev->dev); in komeda_register_show()
33 if (mdev->funcs->dump_register) in komeda_register_show()
34 mdev->funcs->dump_register(mdev, sf); in komeda_register_show()
36 for (i = 0; i < mdev->n_pipelines; i++) in komeda_register_show()
37 komeda_pipeline_dump_register(mdev->pipelines[i], sf); in komeda_register_show()
39 pm_runtime_put(mdev->dev); in komeda_register_show()
58 static void komeda_debugfs_init(struct komeda_dev *mdev) in komeda_debugfs_init() argument
63 mdev->debugfs_root = debugfs_create_dir("komeda", NULL); in komeda_debugfs_init()
64 debugfs_create_file("register", 0444, mdev->debugfs_root, in komeda_debugfs_init()
65 mdev, &komeda_register_fops); in komeda_debugfs_init()
66 debugfs_create_x16("err_verbosity", 0664, mdev->debugfs_root, in komeda_debugfs_init()
67 &mdev->err_verbosity); in komeda_debugfs_init()
74 struct komeda_dev *mdev = dev_to_mdev(dev); in core_id_show() local
76 return snprintf(buf, PAGE_SIZE, "0x%08x\n", mdev->chip.core_id); in core_id_show()
83 struct komeda_dev *mdev = dev_to_mdev(dev); in config_id_show() local
84 struct komeda_pipeline *pipe = mdev->pipelines[0]; in config_id_show()
91 config_id.n_pipelines = mdev->n_pipelines; in config_id_show()
106 struct komeda_dev *mdev = dev_to_mdev(dev); in aclk_hz_show() local
108 return snprintf(buf, PAGE_SIZE, "%lu\n", clk_get_rate(mdev->aclk)); in aclk_hz_show()
148 static int komeda_parse_dt(struct device *dev, struct komeda_dev *mdev) in komeda_parse_dt() argument
156 mdev->irq = platform_get_irq(pdev, 0); in komeda_parse_dt()
157 if (mdev->irq < 0) { in komeda_parse_dt()
159 return mdev->irq; in komeda_parse_dt()
171 if (pipe_id >= mdev->n_pipelines) { in komeda_parse_dt()
176 mdev->pipelines[pipe_id]->of_node = of_node_get(child); in komeda_parse_dt()
180 for (pipe_id = 0; pipe_id < mdev->n_pipelines; pipe_id++) { in komeda_parse_dt()
181 pipe = mdev->pipelines[pipe_id]; in komeda_parse_dt()
200 struct komeda_dev *mdev; in komeda_dev_create() local
207 mdev = devm_kzalloc(dev, sizeof(*mdev), GFP_KERNEL); in komeda_dev_create()
208 if (!mdev) in komeda_dev_create()
211 mutex_init(&mdev->lock); in komeda_dev_create()
213 mdev->dev = dev; in komeda_dev_create()
214 mdev->reg_base = devm_platform_ioremap_resource(pdev, 0); in komeda_dev_create()
215 if (IS_ERR(mdev->reg_base)) { in komeda_dev_create()
217 err = PTR_ERR(mdev->reg_base); in komeda_dev_create()
218 mdev->reg_base = NULL; in komeda_dev_create()
222 mdev->aclk = devm_clk_get(dev, "aclk"); in komeda_dev_create()
223 if (IS_ERR(mdev->aclk)) { in komeda_dev_create()
225 err = PTR_ERR(mdev->aclk); in komeda_dev_create()
226 mdev->aclk = NULL; in komeda_dev_create()
230 clk_prepare_enable(mdev->aclk); in komeda_dev_create()
232 mdev->funcs = komeda_identify(mdev->reg_base, &mdev->chip); in komeda_dev_create()
233 if (!mdev->funcs) { in komeda_dev_create()
240 MALIDP_CORE_ID_PRODUCT_ID(mdev->chip.core_id), in komeda_dev_create()
241 MALIDP_CORE_ID_MAJOR(mdev->chip.core_id), in komeda_dev_create()
242 MALIDP_CORE_ID_MINOR(mdev->chip.core_id)); in komeda_dev_create()
244 mdev->funcs->init_format_table(mdev); in komeda_dev_create()
246 err = mdev->funcs->enum_resources(mdev); in komeda_dev_create()
252 err = komeda_parse_dt(dev, mdev); in komeda_dev_create()
258 err = komeda_assemble_pipelines(mdev); in komeda_dev_create()
264 dev->dma_parms = &mdev->dma_parms; in komeda_dev_create()
267 mdev->iommu = iommu_get_domain_for_dev(mdev->dev); in komeda_dev_create()
268 if (!mdev->iommu) in komeda_dev_create()
271 clk_disable_unprepare(mdev->aclk); in komeda_dev_create()
279 mdev->err_verbosity = KOMEDA_DEV_PRINT_ERR_EVENTS; in komeda_dev_create()
282 komeda_debugfs_init(mdev); in komeda_dev_create()
285 return mdev; in komeda_dev_create()
288 clk_disable_unprepare(mdev->aclk); in komeda_dev_create()
290 komeda_dev_destroy(mdev); in komeda_dev_create()
294 void komeda_dev_destroy(struct komeda_dev *mdev) in komeda_dev_destroy() argument
296 struct device *dev = mdev->dev; in komeda_dev_destroy()
297 const struct komeda_dev_funcs *funcs = mdev->funcs; in komeda_dev_destroy()
303 debugfs_remove_recursive(mdev->debugfs_root); in komeda_dev_destroy()
306 if (mdev->aclk) in komeda_dev_destroy()
307 clk_prepare_enable(mdev->aclk); in komeda_dev_destroy()
309 for (i = 0; i < mdev->n_pipelines; i++) { in komeda_dev_destroy()
310 komeda_pipeline_destroy(mdev, mdev->pipelines[i]); in komeda_dev_destroy()
311 mdev->pipelines[i] = NULL; in komeda_dev_destroy()
314 mdev->n_pipelines = 0; in komeda_dev_destroy()
319 funcs->cleanup(mdev); in komeda_dev_destroy()
321 if (mdev->reg_base) { in komeda_dev_destroy()
322 devm_iounmap(dev, mdev->reg_base); in komeda_dev_destroy()
323 mdev->reg_base = NULL; in komeda_dev_destroy()
326 if (mdev->aclk) { in komeda_dev_destroy()
327 clk_disable_unprepare(mdev->aclk); in komeda_dev_destroy()
328 devm_clk_put(dev, mdev->aclk); in komeda_dev_destroy()
329 mdev->aclk = NULL; in komeda_dev_destroy()
332 devm_kfree(dev, mdev); in komeda_dev_destroy()
335 int komeda_dev_resume(struct komeda_dev *mdev) in komeda_dev_resume() argument
337 clk_prepare_enable(mdev->aclk); in komeda_dev_resume()
339 mdev->funcs->enable_irq(mdev); in komeda_dev_resume()
341 if (mdev->iommu && mdev->funcs->connect_iommu) in komeda_dev_resume()
342 if (mdev->funcs->connect_iommu(mdev)) in komeda_dev_resume()
348 int komeda_dev_suspend(struct komeda_dev *mdev) in komeda_dev_suspend() argument
350 if (mdev->iommu && mdev->funcs->disconnect_iommu) in komeda_dev_suspend()
351 if (mdev->funcs->disconnect_iommu(mdev)) in komeda_dev_suspend()
354 mdev->funcs->disable_irq(mdev); in komeda_dev_suspend()
356 clk_disable_unprepare(mdev->aclk); in komeda_dev_suspend()