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()
47 static void komeda_debugfs_init(struct komeda_dev *mdev) in komeda_debugfs_init() argument
52 mdev->debugfs_root = debugfs_create_dir("komeda", NULL); in komeda_debugfs_init()
53 debugfs_create_file("register", 0444, mdev->debugfs_root, in komeda_debugfs_init()
54 mdev, &komeda_register_fops); in komeda_debugfs_init()
55 debugfs_create_x16("err_verbosity", 0664, mdev->debugfs_root, in komeda_debugfs_init()
56 &mdev->err_verbosity); in komeda_debugfs_init()
63 struct komeda_dev *mdev = dev_to_mdev(dev); in core_id_show() local
65 return sysfs_emit(buf, "0x%08x\n", mdev->chip.core_id); in core_id_show()
72 struct komeda_dev *mdev = dev_to_mdev(dev); in config_id_show() local
73 struct komeda_pipeline *pipe = mdev->pipelines[0]; in config_id_show()
80 config_id.n_pipelines = mdev->n_pipelines; in config_id_show()
95 struct komeda_dev *mdev = dev_to_mdev(dev); in aclk_hz_show() local
97 return sysfs_emit(buf, "%lu\n", clk_get_rate(mdev->aclk)); in aclk_hz_show()
137 static int komeda_parse_dt(struct device *dev, struct komeda_dev *mdev) in komeda_parse_dt() argument
145 mdev->irq = platform_get_irq(pdev, 0); in komeda_parse_dt()
146 if (mdev->irq < 0) { in komeda_parse_dt()
148 return mdev->irq; in komeda_parse_dt()
159 if (pipe_id >= mdev->n_pipelines) { in komeda_parse_dt()
164 mdev->pipelines[pipe_id]->of_node = of_node_get(child); in komeda_parse_dt()
168 for (pipe_id = 0; pipe_id < mdev->n_pipelines; pipe_id++) { in komeda_parse_dt()
169 pipe = mdev->pipelines[pipe_id]; in komeda_parse_dt()
188 struct komeda_dev *mdev; in komeda_dev_create() local
195 mdev = devm_kzalloc(dev, sizeof(*mdev), GFP_KERNEL); in komeda_dev_create()
196 if (!mdev) in komeda_dev_create()
199 mutex_init(&mdev->lock); in komeda_dev_create()
201 mdev->dev = dev; in komeda_dev_create()
202 mdev->reg_base = devm_platform_ioremap_resource(pdev, 0); in komeda_dev_create()
203 if (IS_ERR(mdev->reg_base)) { in komeda_dev_create()
205 err = PTR_ERR(mdev->reg_base); in komeda_dev_create()
206 mdev->reg_base = NULL; in komeda_dev_create()
210 mdev->aclk = devm_clk_get(dev, "aclk"); in komeda_dev_create()
211 if (IS_ERR(mdev->aclk)) { in komeda_dev_create()
213 err = PTR_ERR(mdev->aclk); in komeda_dev_create()
214 mdev->aclk = NULL; in komeda_dev_create()
218 clk_prepare_enable(mdev->aclk); in komeda_dev_create()
220 mdev->funcs = komeda_identify(mdev->reg_base, &mdev->chip); in komeda_dev_create()
221 if (!mdev->funcs) { in komeda_dev_create()
228 MALIDP_CORE_ID_PRODUCT_ID(mdev->chip.core_id), in komeda_dev_create()
229 MALIDP_CORE_ID_MAJOR(mdev->chip.core_id), in komeda_dev_create()
230 MALIDP_CORE_ID_MINOR(mdev->chip.core_id)); in komeda_dev_create()
232 mdev->funcs->init_format_table(mdev); in komeda_dev_create()
234 err = mdev->funcs->enum_resources(mdev); in komeda_dev_create()
240 err = komeda_parse_dt(dev, mdev); in komeda_dev_create()
246 err = komeda_assemble_pipelines(mdev); in komeda_dev_create()
254 mdev->iommu = iommu_get_domain_for_dev(mdev->dev); in komeda_dev_create()
255 if (!mdev->iommu) in komeda_dev_create()
258 clk_disable_unprepare(mdev->aclk); in komeda_dev_create()
266 mdev->err_verbosity = KOMEDA_DEV_PRINT_ERR_EVENTS; in komeda_dev_create()
269 komeda_debugfs_init(mdev); in komeda_dev_create()
272 return mdev; in komeda_dev_create()
275 clk_disable_unprepare(mdev->aclk); in komeda_dev_create()
277 komeda_dev_destroy(mdev); in komeda_dev_create()
281 void komeda_dev_destroy(struct komeda_dev *mdev) in komeda_dev_destroy() argument
283 struct device *dev = mdev->dev; in komeda_dev_destroy()
284 const struct komeda_dev_funcs *funcs = mdev->funcs; in komeda_dev_destroy()
290 debugfs_remove_recursive(mdev->debugfs_root); in komeda_dev_destroy()
293 if (mdev->aclk) in komeda_dev_destroy()
294 clk_prepare_enable(mdev->aclk); in komeda_dev_destroy()
296 for (i = 0; i < mdev->n_pipelines; i++) { in komeda_dev_destroy()
297 komeda_pipeline_destroy(mdev, mdev->pipelines[i]); in komeda_dev_destroy()
298 mdev->pipelines[i] = NULL; in komeda_dev_destroy()
301 mdev->n_pipelines = 0; in komeda_dev_destroy()
306 funcs->cleanup(mdev); in komeda_dev_destroy()
308 if (mdev->reg_base) { in komeda_dev_destroy()
309 devm_iounmap(dev, mdev->reg_base); in komeda_dev_destroy()
310 mdev->reg_base = NULL; in komeda_dev_destroy()
313 if (mdev->aclk) { in komeda_dev_destroy()
314 clk_disable_unprepare(mdev->aclk); in komeda_dev_destroy()
315 devm_clk_put(dev, mdev->aclk); in komeda_dev_destroy()
316 mdev->aclk = NULL; in komeda_dev_destroy()
319 devm_kfree(dev, mdev); in komeda_dev_destroy()
322 int komeda_dev_resume(struct komeda_dev *mdev) in komeda_dev_resume() argument
324 clk_prepare_enable(mdev->aclk); in komeda_dev_resume()
326 mdev->funcs->enable_irq(mdev); in komeda_dev_resume()
328 if (mdev->iommu && mdev->funcs->connect_iommu) in komeda_dev_resume()
329 if (mdev->funcs->connect_iommu(mdev)) in komeda_dev_resume()
335 int komeda_dev_suspend(struct komeda_dev *mdev) in komeda_dev_suspend() argument
337 if (mdev->iommu && mdev->funcs->disconnect_iommu) in komeda_dev_suspend()
338 if (mdev->funcs->disconnect_iommu(mdev)) in komeda_dev_suspend()
341 mdev->funcs->disable_irq(mdev); in komeda_dev_suspend()
343 clk_disable_unprepare(mdev->aclk); in komeda_dev_suspend()