• Home
  • Raw
  • Download

Lines Matching refs:mdev

45 void mxr_get_mbus_fmt(struct mxr_device *mdev,  in mxr_get_mbus_fmt()  argument
51 mutex_lock(&mdev->mutex); in mxr_get_mbus_fmt()
52 sd = to_outsd(mdev); in mxr_get_mbus_fmt()
55 mutex_unlock(&mdev->mutex); in mxr_get_mbus_fmt()
58 void mxr_streamer_get(struct mxr_device *mdev) in mxr_streamer_get() argument
60 mutex_lock(&mdev->mutex); in mxr_streamer_get()
61 ++mdev->n_streamer; in mxr_streamer_get()
62 mxr_dbg(mdev, "%s(%d)\n", __func__, mdev->n_streamer); in mxr_streamer_get()
63 if (mdev->n_streamer == 1) { in mxr_streamer_get()
64 struct v4l2_subdev *sd = to_outsd(mdev); in mxr_streamer_get()
66 struct mxr_resources *res = &mdev->res; in mxr_streamer_get()
69 if (to_output(mdev)->cookie == 0) in mxr_streamer_get()
73 mxr_reg_s_output(mdev, to_output(mdev)->cookie); in mxr_streamer_get()
80 mxr_reg_set_mbus_fmt(mdev, &mbus_fmt); in mxr_streamer_get()
81 mxr_reg_streamon(mdev); in mxr_streamer_get()
82 ret = mxr_reg_wait4vsync(mdev); in mxr_streamer_get()
85 mutex_unlock(&mdev->mutex); in mxr_streamer_get()
86 mxr_reg_dump(mdev); in mxr_streamer_get()
90 void mxr_streamer_put(struct mxr_device *mdev) in mxr_streamer_put() argument
92 mutex_lock(&mdev->mutex); in mxr_streamer_put()
93 --mdev->n_streamer; in mxr_streamer_put()
94 mxr_dbg(mdev, "%s(%d)\n", __func__, mdev->n_streamer); in mxr_streamer_put()
95 if (mdev->n_streamer == 0) { in mxr_streamer_put()
97 struct v4l2_subdev *sd = to_outsd(mdev); in mxr_streamer_put()
99 mxr_reg_streamoff(mdev); in mxr_streamer_put()
101 ret = mxr_reg_wait4vsync(mdev); in mxr_streamer_put()
106 WARN(mdev->n_streamer < 0, "negative number of streamers (%d)\n", in mxr_streamer_put()
107 mdev->n_streamer); in mxr_streamer_put()
108 mutex_unlock(&mdev->mutex); in mxr_streamer_put()
109 mxr_reg_dump(mdev); in mxr_streamer_put()
112 void mxr_output_get(struct mxr_device *mdev) in mxr_output_get() argument
114 mutex_lock(&mdev->mutex); in mxr_output_get()
115 ++mdev->n_output; in mxr_output_get()
116 mxr_dbg(mdev, "%s(%d)\n", __func__, mdev->n_output); in mxr_output_get()
118 if (mdev->n_output == 1) in mxr_output_get()
119 v4l2_subdev_call(to_outsd(mdev), core, s_power, 1); in mxr_output_get()
120 mutex_unlock(&mdev->mutex); in mxr_output_get()
123 void mxr_output_put(struct mxr_device *mdev) in mxr_output_put() argument
125 mutex_lock(&mdev->mutex); in mxr_output_put()
126 --mdev->n_output; in mxr_output_put()
127 mxr_dbg(mdev, "%s(%d)\n", __func__, mdev->n_output); in mxr_output_put()
129 if (mdev->n_output == 0) in mxr_output_put()
130 v4l2_subdev_call(to_outsd(mdev), core, s_power, 0); in mxr_output_put()
131 WARN(mdev->n_output < 0, "negative number of output users (%d)\n", in mxr_output_put()
132 mdev->n_output); in mxr_output_put()
133 mutex_unlock(&mdev->mutex); in mxr_output_put()
136 int mxr_power_get(struct mxr_device *mdev) in mxr_power_get() argument
138 int ret = pm_runtime_get_sync(mdev->dev); in mxr_power_get()
147 void mxr_power_put(struct mxr_device *mdev) in mxr_power_put() argument
149 pm_runtime_put_sync(mdev->dev); in mxr_power_put()
154 static int mxr_acquire_plat_resources(struct mxr_device *mdev, in mxr_acquire_plat_resources() argument
162 mxr_err(mdev, "get memory resource failed.\n"); in mxr_acquire_plat_resources()
167 mdev->res.mxr_regs = ioremap(res->start, resource_size(res)); in mxr_acquire_plat_resources()
168 if (mdev->res.mxr_regs == NULL) { in mxr_acquire_plat_resources()
169 mxr_err(mdev, "register mapping failed.\n"); in mxr_acquire_plat_resources()
176 mxr_err(mdev, "get memory resource failed.\n"); in mxr_acquire_plat_resources()
181 mdev->res.vp_regs = ioremap(res->start, resource_size(res)); in mxr_acquire_plat_resources()
182 if (mdev->res.vp_regs == NULL) { in mxr_acquire_plat_resources()
183 mxr_err(mdev, "register mapping failed.\n"); in mxr_acquire_plat_resources()
190 mxr_err(mdev, "get interrupt resource failed.\n"); in mxr_acquire_plat_resources()
195 ret = request_irq(res->start, mxr_irq_handler, 0, "s5p-mixer", mdev); in mxr_acquire_plat_resources()
197 mxr_err(mdev, "request interrupt failed.\n"); in mxr_acquire_plat_resources()
200 mdev->res.irq = res->start; in mxr_acquire_plat_resources()
205 iounmap(mdev->res.vp_regs); in mxr_acquire_plat_resources()
208 iounmap(mdev->res.mxr_regs); in mxr_acquire_plat_resources()
214 static void mxr_release_plat_resources(struct mxr_device *mdev) in mxr_release_plat_resources() argument
216 free_irq(mdev->res.irq, mdev); in mxr_release_plat_resources()
217 iounmap(mdev->res.vp_regs); in mxr_release_plat_resources()
218 iounmap(mdev->res.mxr_regs); in mxr_release_plat_resources()
221 static void mxr_release_clocks(struct mxr_device *mdev) in mxr_release_clocks() argument
223 struct mxr_resources *res = &mdev->res; in mxr_release_clocks()
237 static int mxr_acquire_clocks(struct mxr_device *mdev) in mxr_acquire_clocks() argument
239 struct mxr_resources *res = &mdev->res; in mxr_acquire_clocks()
240 struct device *dev = mdev->dev; in mxr_acquire_clocks()
244 mxr_err(mdev, "failed to get clock 'mixer'\n"); in mxr_acquire_clocks()
249 mxr_err(mdev, "failed to get clock 'vp'\n"); in mxr_acquire_clocks()
254 mxr_err(mdev, "failed to get clock 'sclk_mixer'\n"); in mxr_acquire_clocks()
259 mxr_err(mdev, "failed to get clock 'sclk_hdmi'\n"); in mxr_acquire_clocks()
264 mxr_err(mdev, "failed to get clock 'sclk_dac'\n"); in mxr_acquire_clocks()
270 mxr_release_clocks(mdev); in mxr_acquire_clocks()
274 static int mxr_acquire_resources(struct mxr_device *mdev, in mxr_acquire_resources() argument
278 ret = mxr_acquire_plat_resources(mdev, pdev); in mxr_acquire_resources()
283 ret = mxr_acquire_clocks(mdev); in mxr_acquire_resources()
287 mxr_info(mdev, "resources acquired\n"); in mxr_acquire_resources()
291 mxr_release_plat_resources(mdev); in mxr_acquire_resources()
293 mxr_err(mdev, "resources acquire failed\n"); in mxr_acquire_resources()
297 static void mxr_release_resources(struct mxr_device *mdev) in mxr_release_resources() argument
299 mxr_release_clocks(mdev); in mxr_release_resources()
300 mxr_release_plat_resources(mdev); in mxr_release_resources()
301 memset(&mdev->res, 0, sizeof(mdev->res)); in mxr_release_resources()
304 static void mxr_release_layers(struct mxr_device *mdev) in mxr_release_layers() argument
308 for (i = 0; i < ARRAY_SIZE(mdev->layer); ++i) in mxr_release_layers()
309 if (mdev->layer[i]) in mxr_release_layers()
310 mxr_layer_release(mdev->layer[i]); in mxr_release_layers()
313 static int mxr_acquire_layers(struct mxr_device *mdev, in mxr_acquire_layers() argument
316 mdev->layer[0] = mxr_graph_layer_create(mdev, 0); in mxr_acquire_layers()
317 mdev->layer[1] = mxr_graph_layer_create(mdev, 1); in mxr_acquire_layers()
318 mdev->layer[2] = mxr_vp_layer_create(mdev, 0); in mxr_acquire_layers()
320 if (!mdev->layer[0] || !mdev->layer[1] || !mdev->layer[2]) { in mxr_acquire_layers()
321 mxr_err(mdev, "failed to acquire layers\n"); in mxr_acquire_layers()
328 mxr_release_layers(mdev); in mxr_acquire_layers()
336 struct mxr_device *mdev = to_mdev(dev); in mxr_runtime_resume() local
337 struct mxr_resources *res = &mdev->res; in mxr_runtime_resume()
339 mxr_dbg(mdev, "resume - start\n"); in mxr_runtime_resume()
340 mutex_lock(&mdev->mutex); in mxr_runtime_resume()
346 mxr_reg_reset(mdev); in mxr_runtime_resume()
347 mxr_dbg(mdev, "resume - finished\n"); in mxr_runtime_resume()
349 mutex_unlock(&mdev->mutex); in mxr_runtime_resume()
355 struct mxr_device *mdev = to_mdev(dev); in mxr_runtime_suspend() local
356 struct mxr_resources *res = &mdev->res; in mxr_runtime_suspend()
357 mxr_dbg(mdev, "suspend - start\n"); in mxr_runtime_suspend()
358 mutex_lock(&mdev->mutex); in mxr_runtime_suspend()
363 mutex_unlock(&mdev->mutex); in mxr_runtime_suspend()
364 mxr_dbg(mdev, "suspend - finished\n"); in mxr_runtime_suspend()
379 struct mxr_device *mdev; in mxr_probe() local
385 mdev = kzalloc(sizeof(*mdev), GFP_KERNEL); in mxr_probe()
386 if (!mdev) { in mxr_probe()
393 mdev->dev = dev; in mxr_probe()
395 mutex_init(&mdev->mutex); in mxr_probe()
396 spin_lock_init(&mdev->reg_slock); in mxr_probe()
397 init_waitqueue_head(&mdev->event_queue); in mxr_probe()
400 ret = mxr_acquire_resources(mdev, pdev); in mxr_probe()
405 ret = mxr_acquire_video(mdev, mxr_output_conf, in mxr_probe()
411 ret = mxr_acquire_layers(mdev, pdata); in mxr_probe()
417 mxr_info(mdev, "probe successful\n"); in mxr_probe()
421 mxr_release_video(mdev); in mxr_probe()
424 mxr_release_resources(mdev); in mxr_probe()
427 kfree(mdev); in mxr_probe()
437 struct mxr_device *mdev = to_mdev(dev); in mxr_remove() local
441 mxr_release_layers(mdev); in mxr_remove()
442 mxr_release_video(mdev); in mxr_remove()
443 mxr_release_resources(mdev); in mxr_remove()
445 kfree(mdev); in mxr_remove()