| /linux/drivers/firmware/tegra/ |
| H A D | ivc.c | 77 static inline void tegra_ivc_invalidate(struct tegra_ivc *ivc, dma_addr_t phys) in tegra_ivc_invalidate() argument 79 if (!ivc->peer) in tegra_ivc_invalidate() 82 dma_sync_single_for_cpu(ivc->peer, phys, TEGRA_IVC_ALIGN, in tegra_ivc_invalidate() 86 static inline void tegra_ivc_flush(struct tegra_ivc *ivc, dma_addr_t phys) in tegra_ivc_flush() argument 88 if (!ivc->peer) in tegra_ivc_flush() 91 dma_sync_single_for_device(ivc->peer, phys, TEGRA_IVC_ALIGN, in tegra_ivc_flush() 95 static inline bool tegra_ivc_empty(struct tegra_ivc *ivc, struct iosys_map *map) in tegra_ivc_empty() argument 115 if (tx - rx > ivc->num_frames) in tegra_ivc_empty() 121 static inline bool tegra_ivc_full(struct tegra_ivc *ivc, struct iosys_map *map) in tegra_ivc_full() argument 130 return tx - rx >= ivc->num_frames; in tegra_ivc_full() [all …]
|
| H A D | bpmp-tegra186.c | 50 err = tegra_ivc_read_get_next_frame(channel->ivc, &channel->ib); in tegra186_bpmp_is_message_ready() 63 err = tegra_ivc_write_get_next_frame(channel->ivc, &channel->ob); in tegra186_bpmp_is_channel_free() 74 return tegra_ivc_read_advance(channel->ivc); in tegra186_bpmp_ack_message() 79 return tegra_ivc_write_advance(channel->ivc); in tegra186_bpmp_post_message() 96 static void tegra186_bpmp_ivc_notify(struct tegra_ivc *ivc, void *data) in tegra186_bpmp_ivc_notify() argument 117 channel->ivc = devm_kzalloc(bpmp->dev, sizeof(*channel->ivc), in tegra186_bpmp_channel_init() 119 if (!channel->ivc) in tegra186_bpmp_channel_init() 134 err = tegra_ivc_init(channel->ivc, NULL, &rx, priv->rx.phys + offset, &tx, in tegra186_bpmp_channel_init() 152 tegra_ivc_reset(channel->ivc); in tegra186_bpmp_channel_reset() 155 while (tegra_ivc_notified(channel->ivc)) in tegra186_bpmp_channel_reset() [all …]
|
| H A D | Makefile | 10 obj-$(CONFIG_TEGRA_IVC) += ivc.o
|
| /linux/drivers/media/platform/renesas/rzv2h-ivc/ |
| H A D | rzv2h-ivc-dev.c | 17 void rzv2h_ivc_write(struct rzv2h_ivc *ivc, u32 addr, u32 val) in rzv2h_ivc_write() argument 19 writel(val, ivc->base + addr); in rzv2h_ivc_write() 22 void rzv2h_ivc_update_bits(struct rzv2h_ivc *ivc, unsigned int addr, in rzv2h_ivc_update_bits() argument 27 orig = readl(ivc->base + addr); in rzv2h_ivc_update_bits() 33 writel(new, ivc->base + addr); in rzv2h_ivc_update_bits() 36 static int rzv2h_ivc_get_hardware_resources(struct rzv2h_ivc *ivc, in rzv2h_ivc_get_hardware_resources() argument 47 ivc->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res); in rzv2h_ivc_get_hardware_resources() 48 if (IS_ERR(ivc->base)) in rzv2h_ivc_get_hardware_resources() 49 return dev_err_probe(ivc->dev, PTR_ERR(ivc->base), in rzv2h_ivc_get_hardware_resources() 53 ivc->clks[i].id = resource_names[i]; in rzv2h_ivc_get_hardware_resources() [all …]
|
| H A D | rzv2h-ivc-video.c | 127 void rzv2h_ivc_buffer_done(struct rzv2h_ivc *ivc) in rzv2h_ivc_buffer_done() argument 133 scoped_guard(spinlock, &ivc->buffers.lock) { in rzv2h_ivc_buffer_done() 134 if (!ivc->buffers.curr) in rzv2h_ivc_buffer_done() 137 buf = ivc->buffers.curr; in rzv2h_ivc_buffer_done() 138 ivc->buffers.curr = NULL; in rzv2h_ivc_buffer_done() 141 buf->vb.sequence = ivc->buffers.sequence++; in rzv2h_ivc_buffer_done() 147 struct rzv2h_ivc *ivc = container_of(work, struct rzv2h_ivc, in rzv2h_ivc_transfer_buffer() local 152 scoped_guard(spinlock_irqsave, &ivc->buffers.lock) { in rzv2h_ivc_transfer_buffer() 153 buf = list_first_entry_or_null(&ivc->buffers.queue, in rzv2h_ivc_transfer_buffer() 162 ivc->buffers.curr = buf; in rzv2h_ivc_transfer_buffer() [all …]
|
| H A D | rzv2h-ivc-subdev.c | 259 struct rzv2h_ivc *ivc = container_of(sd, struct rzv2h_ivc, subdev.sd); in rzv2h_ivc_registered() local 261 return rzv2h_ivc_init_vdev(ivc, sd->v4l2_dev); in rzv2h_ivc_registered() 273 struct rzv2h_ivc *ivc = video_get_drvdata(vdev); in rzv2h_ivc_link_validate() local 286 pix = &ivc->format.pix; in rzv2h_ivc_link_validate() 287 fmt = ivc->format.fmt; in rzv2h_ivc_link_validate() 290 dev_dbg(ivc->dev, in rzv2h_ivc_link_validate() 303 dev_dbg(ivc->dev, in rzv2h_ivc_link_validate() 320 int rzv2h_ivc_initialise_subdevice(struct rzv2h_ivc *ivc) in rzv2h_ivc_initialise_subdevice() argument 326 sd = &ivc->subdev.sd; in rzv2h_ivc_initialise_subdevice() 327 sd->dev = ivc->dev; in rzv2h_ivc_initialise_subdevice() [all …]
|
| H A D | rzv2h-ivc.h | 123 int rzv2h_ivc_init_vdev(struct rzv2h_ivc *ivc, struct v4l2_device *v4l2_dev); 124 void rzv2h_deinit_video_dev_and_queue(struct rzv2h_ivc *ivc); 125 void rzv2h_ivc_buffer_done(struct rzv2h_ivc *ivc); 126 int rzv2h_ivc_initialise_subdevice(struct rzv2h_ivc *ivc); 127 void rzv2h_ivc_deinit_subdevice(struct rzv2h_ivc *ivc); 128 void rzv2h_ivc_write(struct rzv2h_ivc *ivc, u32 addr, u32 val); 129 void rzv2h_ivc_update_bits(struct rzv2h_ivc *ivc, unsigned int addr,
|
| H A D | Makefile | 3 rzv2h-ivc-y := rzv2h-ivc-dev.o rzv2h-ivc-subdev.o rzv2h-ivc-video.o 5 obj-$(CONFIG_VIDEO_RZV2H_IVC) += rzv2h-ivc.o
|
| H A D | Kconfig | 18 module will be called rzv2h-ivc.
|
| /linux/include/soc/tegra/ |
| H A D | ivc.h | 25 void (*notify)(struct tegra_ivc *ivc, void *data); 41 int tegra_ivc_read_get_next_frame(struct tegra_ivc *ivc, struct iosys_map *map); 51 int tegra_ivc_read_advance(struct tegra_ivc *ivc); 61 int tegra_ivc_write_get_next_frame(struct tegra_ivc *ivc, struct iosys_map *map); 71 int tegra_ivc_write_advance(struct tegra_ivc *ivc); 82 int tegra_ivc_notified(struct tegra_ivc *ivc); 92 void tegra_ivc_reset(struct tegra_ivc *ivc); 96 int tegra_ivc_init(struct tegra_ivc *ivc, struct device *peer, const struct iosys_map *rx, 99 void (*notify)(struct tegra_ivc *ivc, void *data), 101 void tegra_ivc_cleanup(struct tegra_ivc *ivc);
|
| H A D | bpmp.h | 57 struct tegra_ivc *ivc; member
|
| /linux/drivers/media/platform/samsung/exynos4-is/ |
| H A D | fimc-isp-video.c | 303 struct fimc_is_video *ivc = &isp->video_capture; in isp_video_release() local 304 struct media_entity *entity = &ivc->ve.vdev.entity; in isp_video_release() 312 if (is_singular_file && ivc->streaming) { in isp_video_release() 313 video_device_pipeline_stop(&ivc->ve.vdev); in isp_video_release() 314 ivc->streaming = 0; in isp_video_release() 320 fimc_pipeline_call(&ivc->ve, close); in isp_video_release()
|
| /linux/drivers/media/platform/renesas/ |
| H A D | Makefile | 9 obj-y += rzv2h-ivc/
|
| H A D | Kconfig | 45 source "drivers/media/platform/renesas/rzv2h-ivc/Kconfig"
|