Lines Matching refs:mdev
25 struct komeda_dev *mdev = sf->private; in komeda_register_show() local
28 if (mdev->funcs->dump_register) in komeda_register_show()
29 mdev->funcs->dump_register(mdev, sf); in komeda_register_show()
31 for (i = 0; i < mdev->n_pipelines; i++) in komeda_register_show()
32 komeda_pipeline_dump_register(mdev->pipelines[i], sf); in komeda_register_show()
51 static void komeda_debugfs_init(struct komeda_dev *mdev) in komeda_debugfs_init() argument
56 mdev->debugfs_root = debugfs_create_dir("komeda", NULL); in komeda_debugfs_init()
57 debugfs_create_file("register", 0444, mdev->debugfs_root, in komeda_debugfs_init()
58 mdev, &komeda_register_fops); in komeda_debugfs_init()
65 struct komeda_dev *mdev = dev_to_mdev(dev); in core_id_show() local
67 return snprintf(buf, PAGE_SIZE, "0x%08x\n", mdev->chip.core_id); in core_id_show()
74 struct komeda_dev *mdev = dev_to_mdev(dev); in config_id_show() local
75 struct komeda_pipeline *pipe = mdev->pipelines[0]; in config_id_show()
82 config_id.n_pipelines = mdev->n_pipelines; in config_id_show()
104 static int komeda_parse_pipe_dt(struct komeda_dev *mdev, struct device_node *np) in komeda_parse_pipe_dt() argument
112 if (ret != 0 || pipe_id >= mdev->n_pipelines) in komeda_parse_pipe_dt()
115 pipe = mdev->pipelines[pipe_id]; in komeda_parse_pipe_dt()
138 static int komeda_parse_dt(struct device *dev, struct komeda_dev *mdev) in komeda_parse_dt() argument
144 mdev->irq = platform_get_irq(pdev, 0); in komeda_parse_dt()
145 if (mdev->irq < 0) { in komeda_parse_dt()
147 return mdev->irq; in komeda_parse_dt()
158 ret = komeda_parse_pipe_dt(mdev, child); in komeda_parse_dt()
174 struct komeda_dev *mdev; in komeda_dev_create() local
188 mdev = devm_kzalloc(dev, sizeof(*mdev), GFP_KERNEL); in komeda_dev_create()
189 if (!mdev) in komeda_dev_create()
192 mutex_init(&mdev->lock); in komeda_dev_create()
194 mdev->dev = dev; in komeda_dev_create()
195 mdev->reg_base = devm_ioremap_resource(dev, io_res); in komeda_dev_create()
196 if (IS_ERR(mdev->reg_base)) { in komeda_dev_create()
198 err = PTR_ERR(mdev->reg_base); in komeda_dev_create()
199 mdev->reg_base = NULL; in komeda_dev_create()
203 mdev->aclk = devm_clk_get(dev, "aclk"); in komeda_dev_create()
204 if (IS_ERR(mdev->aclk)) { in komeda_dev_create()
206 err = PTR_ERR(mdev->aclk); in komeda_dev_create()
207 mdev->aclk = NULL; in komeda_dev_create()
211 clk_prepare_enable(mdev->aclk); in komeda_dev_create()
213 mdev->funcs = product->identify(mdev->reg_base, &mdev->chip); in komeda_dev_create()
214 if (!komeda_product_match(mdev, product->product_id)) { in komeda_dev_create()
217 MALIDP_CORE_ID_PRODUCT_ID(mdev->chip.core_id)); in komeda_dev_create()
223 MALIDP_CORE_ID_PRODUCT_ID(mdev->chip.core_id), in komeda_dev_create()
224 MALIDP_CORE_ID_MAJOR(mdev->chip.core_id), in komeda_dev_create()
225 MALIDP_CORE_ID_MINOR(mdev->chip.core_id)); in komeda_dev_create()
227 mdev->funcs->init_format_table(mdev); in komeda_dev_create()
229 err = mdev->funcs->enum_resources(mdev); in komeda_dev_create()
235 err = komeda_parse_dt(dev, mdev); in komeda_dev_create()
241 err = komeda_assemble_pipelines(mdev); in komeda_dev_create()
247 dev->dma_parms = &mdev->dma_parms; in komeda_dev_create()
250 mdev->iommu = iommu_get_domain_for_dev(mdev->dev); in komeda_dev_create()
251 if (!mdev->iommu) in komeda_dev_create()
254 if (mdev->iommu && mdev->funcs->connect_iommu) { in komeda_dev_create()
255 err = mdev->funcs->connect_iommu(mdev); in komeda_dev_create()
257 mdev->iommu = NULL; in komeda_dev_create()
269 komeda_debugfs_init(mdev); in komeda_dev_create()
272 return mdev; in komeda_dev_create()
275 komeda_dev_destroy(mdev); in komeda_dev_create()
279 void komeda_dev_destroy(struct komeda_dev *mdev) in komeda_dev_destroy() argument
281 struct device *dev = mdev->dev; in komeda_dev_destroy()
282 const struct komeda_dev_funcs *funcs = mdev->funcs; in komeda_dev_destroy()
288 debugfs_remove_recursive(mdev->debugfs_root); in komeda_dev_destroy()
291 if (mdev->iommu && mdev->funcs->disconnect_iommu) in komeda_dev_destroy()
292 mdev->funcs->disconnect_iommu(mdev); in komeda_dev_destroy()
293 mdev->iommu = NULL; in komeda_dev_destroy()
295 for (i = 0; i < mdev->n_pipelines; i++) { in komeda_dev_destroy()
296 komeda_pipeline_destroy(mdev, mdev->pipelines[i]); in komeda_dev_destroy()
297 mdev->pipelines[i] = NULL; in komeda_dev_destroy()
300 mdev->n_pipelines = 0; in komeda_dev_destroy()
305 funcs->cleanup(mdev); in komeda_dev_destroy()
307 if (mdev->reg_base) { in komeda_dev_destroy()
308 devm_iounmap(dev, mdev->reg_base); in komeda_dev_destroy()
309 mdev->reg_base = NULL; in komeda_dev_destroy()
312 if (mdev->aclk) { in komeda_dev_destroy()
313 clk_disable_unprepare(mdev->aclk); in komeda_dev_destroy()
314 devm_clk_put(dev, mdev->aclk); in komeda_dev_destroy()
315 mdev->aclk = NULL; in komeda_dev_destroy()
318 devm_kfree(dev, mdev); in komeda_dev_destroy()