vsp1 72 drivers/media/platform/vsp1/vsp1.h #define vsp1_feature(vsp1, f) ((vsp1)->info->features & (f)) vsp1 108 drivers/media/platform/vsp1/vsp1.h int vsp1_device_get(struct vsp1_device *vsp1); vsp1 109 drivers/media/platform/vsp1/vsp1.h void vsp1_device_put(struct vsp1_device *vsp1); vsp1 111 drivers/media/platform/vsp1/vsp1.h int vsp1_reset_wpf(struct vsp1_device *vsp1, unsigned int index); vsp1 113 drivers/media/platform/vsp1/vsp1.h static inline u32 vsp1_read(struct vsp1_device *vsp1, u32 reg) vsp1 115 drivers/media/platform/vsp1/vsp1.h return ioread32(vsp1->mmio + reg); vsp1 118 drivers/media/platform/vsp1/vsp1.h static inline void vsp1_write(struct vsp1_device *vsp1, u32 reg, u32 data) vsp1 120 drivers/media/platform/vsp1/vsp1.h iowrite32(data, vsp1->mmio + reg); vsp1 407 drivers/media/platform/vsp1/vsp1_brx.c struct vsp1_brx *vsp1_brx_create(struct vsp1_device *vsp1, vsp1 415 drivers/media/platform/vsp1/vsp1_brx.c brx = devm_kzalloc(vsp1->dev, sizeof(*brx), GFP_KERNEL); vsp1 424 drivers/media/platform/vsp1/vsp1_brx.c num_pads = vsp1->info->num_bru_inputs + 1; vsp1 431 drivers/media/platform/vsp1/vsp1_brx.c ret = vsp1_entity_init(vsp1, &brx->entity, name, num_pads, &brx_ops, vsp1 446 drivers/media/platform/vsp1/vsp1_brx.c dev_err(vsp1->dev, "%s: failed to initialize controls\n", name); vsp1 41 drivers/media/platform/vsp1/vsp1_brx.h struct vsp1_brx *vsp1_brx_create(struct vsp1_device *vsp1, vsp1 238 drivers/media/platform/vsp1/vsp1_clu.c struct vsp1_clu *vsp1_clu_create(struct vsp1_device *vsp1) vsp1 243 drivers/media/platform/vsp1/vsp1_clu.c clu = devm_kzalloc(vsp1->dev, sizeof(*clu), GFP_KERNEL); vsp1 252 drivers/media/platform/vsp1/vsp1_clu.c ret = vsp1_entity_init(vsp1, &clu->entity, "clu", 2, &clu_ops, vsp1 263 drivers/media/platform/vsp1/vsp1_clu.c clu->pool = vsp1_dl_body_pool_create(clu->entity.vsp1, 3, CLU_SIZE + 1, vsp1 276 drivers/media/platform/vsp1/vsp1_clu.c dev_err(vsp1->dev, "clu: failed to initialize controls\n"); vsp1 43 drivers/media/platform/vsp1/vsp1_clu.h struct vsp1_clu *vsp1_clu_create(struct vsp1_device *vsp1); vsp1 141 drivers/media/platform/vsp1/vsp1_dl.c struct vsp1_device *vsp1; vsp1 165 drivers/media/platform/vsp1/vsp1_dl.c struct vsp1_device *vsp1; vsp1 219 drivers/media/platform/vsp1/vsp1_dl.c struct vsp1_device *vsp1; vsp1 248 drivers/media/platform/vsp1/vsp1_dl.c vsp1_dl_body_pool_create(struct vsp1_device *vsp1, unsigned int num_bodies, vsp1 259 drivers/media/platform/vsp1/vsp1_dl.c pool->vsp1 = vsp1; vsp1 276 drivers/media/platform/vsp1/vsp1_dl.c pool->mem = dma_alloc_wc(vsp1->bus_master, pool->size, &pool->dma, vsp1 314 drivers/media/platform/vsp1/vsp1_dl.c dma_free_wc(pool->vsp1->bus_master, pool->size, pool->mem, vsp1 423 drivers/media/platform/vsp1/vsp1_dl.c vsp1_dl_cmd_pool_create(struct vsp1_device *vsp1, enum vsp1_extcmd_type type, vsp1 448 drivers/media/platform/vsp1/vsp1_dl.c pool->mem = dma_alloc_wc(vsp1->bus_master, pool->size, &pool->dma, vsp1 523 drivers/media/platform/vsp1/vsp1_dl.c dma_free_wc(pool->vsp1->bus_master, pool->size, pool->mem, vsp1 837 drivers/media/platform/vsp1/vsp1_dl.c struct vsp1_device *vsp1 = dlm->vsp1; vsp1 846 drivers/media/platform/vsp1/vsp1_dl.c return !!(vsp1_read(vsp1, VI6_CMD(dlm->index)) & VI6_CMD_UPDHDR); vsp1 852 drivers/media/platform/vsp1/vsp1_dl.c struct vsp1_device *vsp1 = dlm->vsp1; vsp1 861 drivers/media/platform/vsp1/vsp1_dl.c vsp1_write(vsp1, VI6_DL_HDR_ADDR(dlm->index), dl->dma); vsp1 969 drivers/media/platform/vsp1/vsp1_dl.c struct vsp1_device *vsp1 = dlm->vsp1; vsp1 970 drivers/media/platform/vsp1/vsp1_dl.c u32 status = vsp1_read(vsp1, VI6_STATUS); vsp1 1047 drivers/media/platform/vsp1/vsp1_dl.c void vsp1_dlm_setup(struct vsp1_device *vsp1) vsp1 1056 drivers/media/platform/vsp1/vsp1_dl.c if (vsp1_feature(vsp1, VSP1_HAS_EXT_DL)) { vsp1 1057 drivers/media/platform/vsp1/vsp1_dl.c for (i = 0; i < vsp1->info->wpf_count; ++i) vsp1 1058 drivers/media/platform/vsp1/vsp1_dl.c vsp1_write(vsp1, VI6_DL_EXT_CTRL(i), ext_dl); vsp1 1061 drivers/media/platform/vsp1/vsp1_dl.c vsp1_write(vsp1, VI6_DL_CTRL, ctrl); vsp1 1062 drivers/media/platform/vsp1/vsp1_dl.c vsp1_write(vsp1, VI6_DL_SWAP, VI6_DL_SWAP_LWS); vsp1 1087 drivers/media/platform/vsp1/vsp1_dl.c struct vsp1_dl_manager *vsp1_dlm_create(struct vsp1_device *vsp1, vsp1 1095 drivers/media/platform/vsp1/vsp1_dl.c dlm = devm_kzalloc(vsp1->dev, sizeof(*dlm), GFP_KERNEL); vsp1 1100 drivers/media/platform/vsp1/vsp1_dl.c dlm->singleshot = vsp1->info->uapi; vsp1 1101 drivers/media/platform/vsp1/vsp1_dl.c dlm->vsp1 = vsp1; vsp1 1113 drivers/media/platform/vsp1/vsp1_dl.c header_size = vsp1_feature(vsp1, VSP1_HAS_EXT_DL) ? vsp1 1119 drivers/media/platform/vsp1/vsp1_dl.c dlm->pool = vsp1_dl_body_pool_create(vsp1, prealloc + 1, vsp1 1134 drivers/media/platform/vsp1/vsp1_dl.c if (vsp1_feature(vsp1, VSP1_HAS_EXT_DL)) vsp1 1141 drivers/media/platform/vsp1/vsp1_dl.c if (vsp1_feature(vsp1, VSP1_HAS_EXT_DL)) { vsp1 1142 drivers/media/platform/vsp1/vsp1_dl.c dlm->cmdpool = vsp1_dl_cmd_pool_create(vsp1, vsp1 52 drivers/media/platform/vsp1/vsp1_dl.h void vsp1_dlm_setup(struct vsp1_device *vsp1); vsp1 54 drivers/media/platform/vsp1/vsp1_dl.h struct vsp1_dl_manager *vsp1_dlm_create(struct vsp1_device *vsp1, vsp1 69 drivers/media/platform/vsp1/vsp1_dl.h vsp1_dl_body_pool_create(struct vsp1_device *vsp1, unsigned int num_bodies, vsp1 63 drivers/media/platform/vsp1/vsp1_drm.c static int vsp1_du_insert_uif(struct vsp1_device *vsp1, vsp1 99 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: set format %ux%u (%x) on UIF sink\n", vsp1 115 drivers/media/platform/vsp1/vsp1_drm.c static int vsp1_du_pipeline_setup_rpf(struct vsp1_device *vsp1, vsp1 130 drivers/media/platform/vsp1/vsp1_drm.c crop = &vsp1->drm->inputs[rpf->entity.index].crop; vsp1 145 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, vsp1 161 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, vsp1 177 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, vsp1 190 drivers/media/platform/vsp1/vsp1_drm.c ret = vsp1_du_insert_uif(vsp1, pipe, uif, &rpf->entity, RWPF_PAD_SOURCE, vsp1 203 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: set format %ux%u (%x) on %s pad %u\n", vsp1 209 drivers/media/platform/vsp1/vsp1_drm.c sel.r = vsp1->drm->inputs[rpf->entity.index].compose; vsp1 216 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: set selection (%u,%u)/%ux%u on %s pad %u\n", vsp1 224 drivers/media/platform/vsp1/vsp1_drm.c static int vsp1_du_pipeline_setup_inputs(struct vsp1_device *vsp1, vsp1 228 drivers/media/platform/vsp1/vsp1_drm.c static int vsp1_du_pipeline_setup_brx(struct vsp1_device *vsp1, vsp1 245 drivers/media/platform/vsp1/vsp1_drm.c brx = &vsp1->bru->entity; vsp1 248 drivers/media/platform/vsp1/vsp1_drm.c else if (!vsp1->bru->entity.pipe) vsp1 249 drivers/media/platform/vsp1/vsp1_drm.c brx = &vsp1->bru->entity; vsp1 251 drivers/media/platform/vsp1/vsp1_drm.c brx = &vsp1->brs->entity; vsp1 259 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: pipe %u: releasing %s\n", vsp1 292 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: pipe %u: waiting for %s\n", vsp1 298 drivers/media/platform/vsp1/vsp1_drm.c vsp1_du_pipeline_setup_inputs(vsp1, &owner_pipe->pipe); vsp1 305 drivers/media/platform/vsp1/vsp1_drm.c dev_warn(vsp1->dev, vsp1 321 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: pipe %u: acquired %s\n", vsp1 348 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: set format %ux%u (%x) on %s pad %u\n", vsp1 354 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: format mismatch\n", __func__); vsp1 361 drivers/media/platform/vsp1/vsp1_drm.c static unsigned int rpf_zpos(struct vsp1_device *vsp1, struct vsp1_rwpf *rpf) vsp1 363 drivers/media/platform/vsp1/vsp1_drm.c return vsp1->drm->inputs[rpf->entity.index].zpos; vsp1 367 drivers/media/platform/vsp1/vsp1_drm.c static int vsp1_du_pipeline_setup_inputs(struct vsp1_device *vsp1, vsp1 381 drivers/media/platform/vsp1/vsp1_drm.c for (i = 0; i < vsp1->info->rpf_count; ++i) { vsp1 382 drivers/media/platform/vsp1/vsp1_drm.c struct vsp1_rwpf *rpf = vsp1->rpf[i]; vsp1 390 drivers/media/platform/vsp1/vsp1_drm.c if (rpf_zpos(vsp1, inputs[j-1]) <= rpf_zpos(vsp1, rpf)) vsp1 403 drivers/media/platform/vsp1/vsp1_drm.c ret = vsp1_du_pipeline_setup_brx(vsp1, pipe); vsp1 405 drivers/media/platform/vsp1/vsp1_drm.c dev_err(vsp1->dev, "%s: failed to setup %s source\n", __func__, vsp1 431 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: connecting RPF.%u to %s:%u\n", vsp1 438 drivers/media/platform/vsp1/vsp1_drm.c ret = vsp1_du_pipeline_setup_rpf(vsp1, pipe, rpf, uif, i); vsp1 440 drivers/media/platform/vsp1/vsp1_drm.c dev_err(vsp1->dev, vsp1 451 drivers/media/platform/vsp1/vsp1_drm.c ret = vsp1_du_insert_uif(vsp1, pipe, uif, vsp1 455 drivers/media/platform/vsp1/vsp1_drm.c dev_err(vsp1->dev, "%s: failed to setup UIF after %s\n", vsp1 476 drivers/media/platform/vsp1/vsp1_drm.c static int vsp1_du_pipeline_setup_output(struct vsp1_device *vsp1, vsp1 495 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: set format %ux%u (%x) on WPF%u sink\n", vsp1 505 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: got format %ux%u (%x) on WPF%u source\n", vsp1 515 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: set format %ux%u (%x) on LIF%u sink\n", vsp1 526 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: format mismatch on LIF%u\n", __func__, vsp1 573 drivers/media/platform/vsp1/vsp1_drm.c static int vsp1_du_pipeline_set_rwpf_format(struct vsp1_device *vsp1, vsp1 580 drivers/media/platform/vsp1/vsp1_drm.c fmtinfo = vsp1_get_format_info(vsp1, pixelformat); vsp1 582 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "Unsupported pixel format %08x\n", vsp1 609 drivers/media/platform/vsp1/vsp1_drm.c struct vsp1_device *vsp1 = dev_get_drvdata(dev); vsp1 611 drivers/media/platform/vsp1/vsp1_drm.c if (!vsp1) vsp1 642 drivers/media/platform/vsp1/vsp1_drm.c struct vsp1_device *vsp1 = dev_get_drvdata(dev); vsp1 649 drivers/media/platform/vsp1/vsp1_drm.c if (pipe_index >= vsp1->info->lif_count) vsp1 652 drivers/media/platform/vsp1/vsp1_drm.c drm_pipe = &vsp1->drm->pipe[pipe_index]; vsp1 658 drivers/media/platform/vsp1/vsp1_drm.c mutex_lock(&vsp1->drm->lock); vsp1 668 drivers/media/platform/vsp1/vsp1_drm.c dev_err(vsp1->dev, "DRM pipeline stop timeout\n"); vsp1 691 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: pipe %u: releasing %s\n", vsp1 699 drivers/media/platform/vsp1/vsp1_drm.c mutex_unlock(&vsp1->drm->lock); vsp1 702 drivers/media/platform/vsp1/vsp1_drm.c vsp1_device_put(vsp1); vsp1 704 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: pipeline disabled\n", __func__); vsp1 713 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: configuring LIF%u with format %ux%u%s\n", vsp1 717 drivers/media/platform/vsp1/vsp1_drm.c mutex_lock(&vsp1->drm->lock); vsp1 720 drivers/media/platform/vsp1/vsp1_drm.c ret = vsp1_du_pipeline_setup_inputs(vsp1, pipe); vsp1 724 drivers/media/platform/vsp1/vsp1_drm.c ret = vsp1_du_pipeline_setup_output(vsp1, pipe); vsp1 729 drivers/media/platform/vsp1/vsp1_drm.c ret = vsp1_device_get(vsp1); vsp1 741 drivers/media/platform/vsp1/vsp1_drm.c vsp1_write(vsp1, VI6_DISP_IRQ_STA(pipe_index), 0); vsp1 742 drivers/media/platform/vsp1/vsp1_drm.c vsp1_write(vsp1, VI6_DISP_IRQ_ENB(pipe_index), 0); vsp1 748 drivers/media/platform/vsp1/vsp1_drm.c mutex_unlock(&vsp1->drm->lock); vsp1 758 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: pipeline enabled\n", __func__); vsp1 808 drivers/media/platform/vsp1/vsp1_drm.c struct vsp1_device *vsp1 = dev_get_drvdata(dev); vsp1 809 drivers/media/platform/vsp1/vsp1_drm.c struct vsp1_drm_pipeline *drm_pipe = &vsp1->drm->pipe[pipe_index]; vsp1 813 drivers/media/platform/vsp1/vsp1_drm.c if (rpf_index >= vsp1->info->rpf_count) vsp1 816 drivers/media/platform/vsp1/vsp1_drm.c rpf = vsp1->rpf[rpf_index]; vsp1 819 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, "%s: RPF%u: disable requested\n", __func__, vsp1 832 drivers/media/platform/vsp1/vsp1_drm.c dev_dbg(vsp1->dev, vsp1 844 drivers/media/platform/vsp1/vsp1_drm.c ret = vsp1_du_pipeline_set_rwpf_format(vsp1, rpf, cfg->pixelformat, vsp1 855 drivers/media/platform/vsp1/vsp1_drm.c vsp1->drm->inputs[rpf_index].crop = cfg->src; vsp1 856 drivers/media/platform/vsp1/vsp1_drm.c vsp1->drm->inputs[rpf_index].compose = cfg->dst; vsp1 857 drivers/media/platform/vsp1/vsp1_drm.c vsp1->drm->inputs[rpf_index].zpos = cfg->zpos; vsp1 874 drivers/media/platform/vsp1/vsp1_drm.c struct vsp1_device *vsp1 = dev_get_drvdata(dev); vsp1 875 drivers/media/platform/vsp1/vsp1_drm.c struct vsp1_drm_pipeline *drm_pipe = &vsp1->drm->pipe[pipe_index]; vsp1 881 drivers/media/platform/vsp1/vsp1_drm.c mutex_lock(&vsp1->drm->lock); vsp1 886 drivers/media/platform/vsp1/vsp1_drm.c ret = vsp1_du_pipeline_set_rwpf_format(vsp1, pipe->output, vsp1 898 drivers/media/platform/vsp1/vsp1_drm.c vsp1_du_pipeline_setup_inputs(vsp1, pipe); vsp1 902 drivers/media/platform/vsp1/vsp1_drm.c mutex_unlock(&vsp1->drm->lock); vsp1 908 drivers/media/platform/vsp1/vsp1_drm.c struct vsp1_device *vsp1 = dev_get_drvdata(dev); vsp1 915 drivers/media/platform/vsp1/vsp1_drm.c return dma_map_sg_attrs(vsp1->bus_master, sgt->sgl, sgt->nents, vsp1 922 drivers/media/platform/vsp1/vsp1_drm.c struct vsp1_device *vsp1 = dev_get_drvdata(dev); vsp1 924 drivers/media/platform/vsp1/vsp1_drm.c dma_unmap_sg_attrs(vsp1->bus_master, sgt->sgl, sgt->nents, vsp1 933 drivers/media/platform/vsp1/vsp1_drm.c int vsp1_drm_init(struct vsp1_device *vsp1) vsp1 937 drivers/media/platform/vsp1/vsp1_drm.c vsp1->drm = devm_kzalloc(vsp1->dev, sizeof(*vsp1->drm), GFP_KERNEL); vsp1 938 drivers/media/platform/vsp1/vsp1_drm.c if (!vsp1->drm) vsp1 941 drivers/media/platform/vsp1/vsp1_drm.c mutex_init(&vsp1->drm->lock); vsp1 944 drivers/media/platform/vsp1/vsp1_drm.c for (i = 0; i < vsp1->info->lif_count; ++i) { vsp1 945 drivers/media/platform/vsp1/vsp1_drm.c struct vsp1_drm_pipeline *drm_pipe = &vsp1->drm->pipe[i]; vsp1 958 drivers/media/platform/vsp1/vsp1_drm.c pipe->output = vsp1->wpf[i]; vsp1 959 drivers/media/platform/vsp1/vsp1_drm.c pipe->lif = &vsp1->lif[i]->entity; vsp1 973 drivers/media/platform/vsp1/vsp1_drm.c if (i < vsp1->info->uif_count) vsp1 974 drivers/media/platform/vsp1/vsp1_drm.c drm_pipe->uif = &vsp1->uif[i]->entity; vsp1 978 drivers/media/platform/vsp1/vsp1_drm.c for (i = 0; i < vsp1->info->rpf_count; ++i) { vsp1 979 drivers/media/platform/vsp1/vsp1_drm.c struct vsp1_rwpf *input = vsp1->rpf[i]; vsp1 987 drivers/media/platform/vsp1/vsp1_drm.c void vsp1_drm_cleanup(struct vsp1_device *vsp1) vsp1 989 drivers/media/platform/vsp1/vsp1_drm.c mutex_destroy(&vsp1->drm->lock); vsp1 73 drivers/media/platform/vsp1/vsp1_drm.h int vsp1_drm_init(struct vsp1_device *vsp1); vsp1 74 drivers/media/platform/vsp1/vsp1_drm.h void vsp1_drm_cleanup(struct vsp1_device *vsp1); vsp1 48 drivers/media/platform/vsp1/vsp1_drv.c struct vsp1_device *vsp1 = data; vsp1 53 drivers/media/platform/vsp1/vsp1_drv.c for (i = 0; i < vsp1->info->wpf_count; ++i) { vsp1 54 drivers/media/platform/vsp1/vsp1_drv.c struct vsp1_rwpf *wpf = vsp1->wpf[i]; vsp1 59 drivers/media/platform/vsp1/vsp1_drv.c status = vsp1_read(vsp1, VI6_WPF_IRQ_STA(i)); vsp1 60 drivers/media/platform/vsp1/vsp1_drv.c vsp1_write(vsp1, VI6_WPF_IRQ_STA(i), ~status & mask); vsp1 89 drivers/media/platform/vsp1/vsp1_drv.c static int vsp1_create_sink_links(struct vsp1_device *vsp1, vsp1 97 drivers/media/platform/vsp1/vsp1_drv.c list_for_each_entry(source, &vsp1->entities, list_dev) { vsp1 132 drivers/media/platform/vsp1/vsp1_drv.c static int vsp1_uapi_create_links(struct vsp1_device *vsp1) vsp1 138 drivers/media/platform/vsp1/vsp1_drv.c list_for_each_entry(entity, &vsp1->entities, list_dev) { vsp1 143 drivers/media/platform/vsp1/vsp1_drv.c ret = vsp1_create_sink_links(vsp1, entity); vsp1 148 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1->hgo) { vsp1 149 drivers/media/platform/vsp1/vsp1_drv.c ret = media_create_pad_link(&vsp1->hgo->histo.entity.subdev.entity, vsp1 151 drivers/media/platform/vsp1/vsp1_drv.c &vsp1->hgo->histo.video.entity, 0, vsp1 158 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1->hgt) { vsp1 159 drivers/media/platform/vsp1/vsp1_drv.c ret = media_create_pad_link(&vsp1->hgt->histo.entity.subdev.entity, vsp1 161 drivers/media/platform/vsp1/vsp1_drv.c &vsp1->hgt->histo.video.entity, 0, vsp1 168 drivers/media/platform/vsp1/vsp1_drv.c for (i = 0; i < vsp1->info->lif_count; ++i) { vsp1 169 drivers/media/platform/vsp1/vsp1_drv.c if (!vsp1->lif[i]) vsp1 172 drivers/media/platform/vsp1/vsp1_drv.c ret = media_create_pad_link(&vsp1->wpf[i]->entity.subdev.entity, vsp1 174 drivers/media/platform/vsp1/vsp1_drv.c &vsp1->lif[i]->entity.subdev.entity, vsp1 180 drivers/media/platform/vsp1/vsp1_drv.c for (i = 0; i < vsp1->info->rpf_count; ++i) { vsp1 181 drivers/media/platform/vsp1/vsp1_drv.c struct vsp1_rwpf *rpf = vsp1->rpf[i]; vsp1 192 drivers/media/platform/vsp1/vsp1_drv.c for (i = 0; i < vsp1->info->wpf_count; ++i) { vsp1 197 drivers/media/platform/vsp1/vsp1_drv.c struct vsp1_rwpf *wpf = vsp1->wpf[i]; vsp1 211 drivers/media/platform/vsp1/vsp1_drv.c static void vsp1_destroy_entities(struct vsp1_device *vsp1) vsp1 216 drivers/media/platform/vsp1/vsp1_drv.c list_for_each_entry_safe(entity, _entity, &vsp1->entities, list_dev) { vsp1 221 drivers/media/platform/vsp1/vsp1_drv.c list_for_each_entry_safe(video, _video, &vsp1->videos, list) { vsp1 226 drivers/media/platform/vsp1/vsp1_drv.c v4l2_device_unregister(&vsp1->v4l2_dev); vsp1 227 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1->info->uapi) vsp1 228 drivers/media/platform/vsp1/vsp1_drv.c media_device_unregister(&vsp1->media_dev); vsp1 229 drivers/media/platform/vsp1/vsp1_drv.c media_device_cleanup(&vsp1->media_dev); vsp1 231 drivers/media/platform/vsp1/vsp1_drv.c if (!vsp1->info->uapi) vsp1 232 drivers/media/platform/vsp1/vsp1_drv.c vsp1_drm_cleanup(vsp1); vsp1 235 drivers/media/platform/vsp1/vsp1_drv.c static int vsp1_create_entities(struct vsp1_device *vsp1) vsp1 237 drivers/media/platform/vsp1/vsp1_drv.c struct media_device *mdev = &vsp1->media_dev; vsp1 238 drivers/media/platform/vsp1/vsp1_drv.c struct v4l2_device *vdev = &vsp1->v4l2_dev; vsp1 243 drivers/media/platform/vsp1/vsp1_drv.c mdev->dev = vsp1->dev; vsp1 244 drivers/media/platform/vsp1/vsp1_drv.c mdev->hw_revision = vsp1->version; vsp1 245 drivers/media/platform/vsp1/vsp1_drv.c strscpy(mdev->model, vsp1->info->model, sizeof(mdev->model)); vsp1 250 drivers/media/platform/vsp1/vsp1_drv.c vsp1->media_ops.link_setup = vsp1_entity_link_setup; vsp1 256 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1->info->uapi) vsp1 257 drivers/media/platform/vsp1/vsp1_drv.c vsp1->media_ops.link_validate = v4l2_subdev_link_validate; vsp1 260 drivers/media/platform/vsp1/vsp1_drv.c ret = v4l2_device_register(vsp1->dev, vdev); vsp1 262 drivers/media/platform/vsp1/vsp1_drv.c dev_err(vsp1->dev, "V4L2 device registration failed (%d)\n", vsp1 268 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1_feature(vsp1, VSP1_HAS_BRS)) { vsp1 269 drivers/media/platform/vsp1/vsp1_drv.c vsp1->brs = vsp1_brx_create(vsp1, VSP1_ENTITY_BRS); vsp1 270 drivers/media/platform/vsp1/vsp1_drv.c if (IS_ERR(vsp1->brs)) { vsp1 271 drivers/media/platform/vsp1/vsp1_drv.c ret = PTR_ERR(vsp1->brs); vsp1 275 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&vsp1->brs->entity.list_dev, &vsp1->entities); vsp1 278 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1_feature(vsp1, VSP1_HAS_BRU)) { vsp1 279 drivers/media/platform/vsp1/vsp1_drv.c vsp1->bru = vsp1_brx_create(vsp1, VSP1_ENTITY_BRU); vsp1 280 drivers/media/platform/vsp1/vsp1_drv.c if (IS_ERR(vsp1->bru)) { vsp1 281 drivers/media/platform/vsp1/vsp1_drv.c ret = PTR_ERR(vsp1->bru); vsp1 285 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&vsp1->bru->entity.list_dev, &vsp1->entities); vsp1 288 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1_feature(vsp1, VSP1_HAS_CLU)) { vsp1 289 drivers/media/platform/vsp1/vsp1_drv.c vsp1->clu = vsp1_clu_create(vsp1); vsp1 290 drivers/media/platform/vsp1/vsp1_drv.c if (IS_ERR(vsp1->clu)) { vsp1 291 drivers/media/platform/vsp1/vsp1_drv.c ret = PTR_ERR(vsp1->clu); vsp1 295 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&vsp1->clu->entity.list_dev, &vsp1->entities); vsp1 298 drivers/media/platform/vsp1/vsp1_drv.c vsp1->hsi = vsp1_hsit_create(vsp1, true); vsp1 299 drivers/media/platform/vsp1/vsp1_drv.c if (IS_ERR(vsp1->hsi)) { vsp1 300 drivers/media/platform/vsp1/vsp1_drv.c ret = PTR_ERR(vsp1->hsi); vsp1 304 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&vsp1->hsi->entity.list_dev, &vsp1->entities); vsp1 306 drivers/media/platform/vsp1/vsp1_drv.c vsp1->hst = vsp1_hsit_create(vsp1, false); vsp1 307 drivers/media/platform/vsp1/vsp1_drv.c if (IS_ERR(vsp1->hst)) { vsp1 308 drivers/media/platform/vsp1/vsp1_drv.c ret = PTR_ERR(vsp1->hst); vsp1 312 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&vsp1->hst->entity.list_dev, &vsp1->entities); vsp1 314 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1_feature(vsp1, VSP1_HAS_HGO) && vsp1->info->uapi) { vsp1 315 drivers/media/platform/vsp1/vsp1_drv.c vsp1->hgo = vsp1_hgo_create(vsp1); vsp1 316 drivers/media/platform/vsp1/vsp1_drv.c if (IS_ERR(vsp1->hgo)) { vsp1 317 drivers/media/platform/vsp1/vsp1_drv.c ret = PTR_ERR(vsp1->hgo); vsp1 321 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&vsp1->hgo->histo.entity.list_dev, vsp1 322 drivers/media/platform/vsp1/vsp1_drv.c &vsp1->entities); vsp1 325 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1_feature(vsp1, VSP1_HAS_HGT) && vsp1->info->uapi) { vsp1 326 drivers/media/platform/vsp1/vsp1_drv.c vsp1->hgt = vsp1_hgt_create(vsp1); vsp1 327 drivers/media/platform/vsp1/vsp1_drv.c if (IS_ERR(vsp1->hgt)) { vsp1 328 drivers/media/platform/vsp1/vsp1_drv.c ret = PTR_ERR(vsp1->hgt); vsp1 332 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&vsp1->hgt->histo.entity.list_dev, vsp1 333 drivers/media/platform/vsp1/vsp1_drv.c &vsp1->entities); vsp1 341 drivers/media/platform/vsp1/vsp1_drv.c if (!vsp1->info->uapi) { vsp1 342 drivers/media/platform/vsp1/vsp1_drv.c for (i = 0; i < vsp1->info->lif_count; ++i) { vsp1 345 drivers/media/platform/vsp1/vsp1_drv.c lif = vsp1_lif_create(vsp1, i); vsp1 351 drivers/media/platform/vsp1/vsp1_drv.c vsp1->lif[i] = lif; vsp1 352 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&lif->entity.list_dev, &vsp1->entities); vsp1 356 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1_feature(vsp1, VSP1_HAS_LUT)) { vsp1 357 drivers/media/platform/vsp1/vsp1_drv.c vsp1->lut = vsp1_lut_create(vsp1); vsp1 358 drivers/media/platform/vsp1/vsp1_drv.c if (IS_ERR(vsp1->lut)) { vsp1 359 drivers/media/platform/vsp1/vsp1_drv.c ret = PTR_ERR(vsp1->lut); vsp1 363 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&vsp1->lut->entity.list_dev, &vsp1->entities); vsp1 366 drivers/media/platform/vsp1/vsp1_drv.c for (i = 0; i < vsp1->info->rpf_count; ++i) { vsp1 369 drivers/media/platform/vsp1/vsp1_drv.c rpf = vsp1_rpf_create(vsp1, i); vsp1 375 drivers/media/platform/vsp1/vsp1_drv.c vsp1->rpf[i] = rpf; vsp1 376 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&rpf->entity.list_dev, &vsp1->entities); vsp1 378 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1->info->uapi) { vsp1 379 drivers/media/platform/vsp1/vsp1_drv.c struct vsp1_video *video = vsp1_video_create(vsp1, rpf); vsp1 386 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&video->list, &vsp1->videos); vsp1 390 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1_feature(vsp1, VSP1_HAS_SRU)) { vsp1 391 drivers/media/platform/vsp1/vsp1_drv.c vsp1->sru = vsp1_sru_create(vsp1); vsp1 392 drivers/media/platform/vsp1/vsp1_drv.c if (IS_ERR(vsp1->sru)) { vsp1 393 drivers/media/platform/vsp1/vsp1_drv.c ret = PTR_ERR(vsp1->sru); vsp1 397 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&vsp1->sru->entity.list_dev, &vsp1->entities); vsp1 400 drivers/media/platform/vsp1/vsp1_drv.c for (i = 0; i < vsp1->info->uds_count; ++i) { vsp1 403 drivers/media/platform/vsp1/vsp1_drv.c uds = vsp1_uds_create(vsp1, i); vsp1 409 drivers/media/platform/vsp1/vsp1_drv.c vsp1->uds[i] = uds; vsp1 410 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&uds->entity.list_dev, &vsp1->entities); vsp1 413 drivers/media/platform/vsp1/vsp1_drv.c for (i = 0; i < vsp1->info->uif_count; ++i) { vsp1 416 drivers/media/platform/vsp1/vsp1_drv.c uif = vsp1_uif_create(vsp1, i); vsp1 422 drivers/media/platform/vsp1/vsp1_drv.c vsp1->uif[i] = uif; vsp1 423 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&uif->entity.list_dev, &vsp1->entities); vsp1 426 drivers/media/platform/vsp1/vsp1_drv.c for (i = 0; i < vsp1->info->wpf_count; ++i) { vsp1 429 drivers/media/platform/vsp1/vsp1_drv.c wpf = vsp1_wpf_create(vsp1, i); vsp1 435 drivers/media/platform/vsp1/vsp1_drv.c vsp1->wpf[i] = wpf; vsp1 436 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&wpf->entity.list_dev, &vsp1->entities); vsp1 438 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1->info->uapi) { vsp1 439 drivers/media/platform/vsp1/vsp1_drv.c struct vsp1_video *video = vsp1_video_create(vsp1, wpf); vsp1 446 drivers/media/platform/vsp1/vsp1_drv.c list_add_tail(&video->list, &vsp1->videos); vsp1 451 drivers/media/platform/vsp1/vsp1_drv.c list_for_each_entry(entity, &vsp1->entities, list_dev) { vsp1 452 drivers/media/platform/vsp1/vsp1_drv.c ret = v4l2_device_register_subdev(&vsp1->v4l2_dev, vsp1 462 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1->info->uapi) { vsp1 463 drivers/media/platform/vsp1/vsp1_drv.c ret = vsp1_uapi_create_links(vsp1); vsp1 467 drivers/media/platform/vsp1/vsp1_drv.c ret = v4l2_device_register_subdev_nodes(&vsp1->v4l2_dev); vsp1 473 drivers/media/platform/vsp1/vsp1_drv.c ret = vsp1_drm_init(vsp1); vsp1 478 drivers/media/platform/vsp1/vsp1_drv.c vsp1_destroy_entities(vsp1); vsp1 483 drivers/media/platform/vsp1/vsp1_drv.c int vsp1_reset_wpf(struct vsp1_device *vsp1, unsigned int index) vsp1 488 drivers/media/platform/vsp1/vsp1_drv.c status = vsp1_read(vsp1, VI6_STATUS); vsp1 492 drivers/media/platform/vsp1/vsp1_drv.c vsp1_write(vsp1, VI6_SRESET, VI6_SRESET_SRTS(index)); vsp1 494 drivers/media/platform/vsp1/vsp1_drv.c status = vsp1_read(vsp1, VI6_STATUS); vsp1 502 drivers/media/platform/vsp1/vsp1_drv.c dev_err(vsp1->dev, "failed to reset wpf.%u\n", index); vsp1 509 drivers/media/platform/vsp1/vsp1_drv.c static int vsp1_device_init(struct vsp1_device *vsp1) vsp1 515 drivers/media/platform/vsp1/vsp1_drv.c for (i = 0; i < vsp1->info->wpf_count; ++i) { vsp1 516 drivers/media/platform/vsp1/vsp1_drv.c ret = vsp1_reset_wpf(vsp1, i); vsp1 521 drivers/media/platform/vsp1/vsp1_drv.c vsp1_write(vsp1, VI6_CLK_DCSWT, (8 << VI6_CLK_DCSWT_CSTPW_SHIFT) | vsp1 524 drivers/media/platform/vsp1/vsp1_drv.c for (i = 0; i < vsp1->info->rpf_count; ++i) vsp1 525 drivers/media/platform/vsp1/vsp1_drv.c vsp1_write(vsp1, VI6_DPR_RPF_ROUTE(i), VI6_DPR_NODE_UNUSED); vsp1 527 drivers/media/platform/vsp1/vsp1_drv.c for (i = 0; i < vsp1->info->uds_count; ++i) vsp1 528 drivers/media/platform/vsp1/vsp1_drv.c vsp1_write(vsp1, VI6_DPR_UDS_ROUTE(i), VI6_DPR_NODE_UNUSED); vsp1 530 drivers/media/platform/vsp1/vsp1_drv.c for (i = 0; i < vsp1->info->uif_count; ++i) vsp1 531 drivers/media/platform/vsp1/vsp1_drv.c vsp1_write(vsp1, VI6_DPR_UIF_ROUTE(i), VI6_DPR_NODE_UNUSED); vsp1 533 drivers/media/platform/vsp1/vsp1_drv.c vsp1_write(vsp1, VI6_DPR_SRU_ROUTE, VI6_DPR_NODE_UNUSED); vsp1 534 drivers/media/platform/vsp1/vsp1_drv.c vsp1_write(vsp1, VI6_DPR_LUT_ROUTE, VI6_DPR_NODE_UNUSED); vsp1 535 drivers/media/platform/vsp1/vsp1_drv.c vsp1_write(vsp1, VI6_DPR_CLU_ROUTE, VI6_DPR_NODE_UNUSED); vsp1 536 drivers/media/platform/vsp1/vsp1_drv.c vsp1_write(vsp1, VI6_DPR_HST_ROUTE, VI6_DPR_NODE_UNUSED); vsp1 537 drivers/media/platform/vsp1/vsp1_drv.c vsp1_write(vsp1, VI6_DPR_HSI_ROUTE, VI6_DPR_NODE_UNUSED); vsp1 538 drivers/media/platform/vsp1/vsp1_drv.c vsp1_write(vsp1, VI6_DPR_BRU_ROUTE, VI6_DPR_NODE_UNUSED); vsp1 540 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1_feature(vsp1, VSP1_HAS_BRS)) vsp1 541 drivers/media/platform/vsp1/vsp1_drv.c vsp1_write(vsp1, VI6_DPR_ILV_BRS_ROUTE, VI6_DPR_NODE_UNUSED); vsp1 543 drivers/media/platform/vsp1/vsp1_drv.c vsp1_write(vsp1, VI6_DPR_HGO_SMPPT, (7 << VI6_DPR_SMPPT_TGW_SHIFT) | vsp1 545 drivers/media/platform/vsp1/vsp1_drv.c vsp1_write(vsp1, VI6_DPR_HGT_SMPPT, (7 << VI6_DPR_SMPPT_TGW_SHIFT) | vsp1 548 drivers/media/platform/vsp1/vsp1_drv.c vsp1_dlm_setup(vsp1); vsp1 560 drivers/media/platform/vsp1/vsp1_drv.c int vsp1_device_get(struct vsp1_device *vsp1) vsp1 564 drivers/media/platform/vsp1/vsp1_drv.c ret = pm_runtime_get_sync(vsp1->dev); vsp1 574 drivers/media/platform/vsp1/vsp1_drv.c void vsp1_device_put(struct vsp1_device *vsp1) vsp1 576 drivers/media/platform/vsp1/vsp1_drv.c pm_runtime_put_sync(vsp1->dev); vsp1 585 drivers/media/platform/vsp1/vsp1_drv.c struct vsp1_device *vsp1 = dev_get_drvdata(dev); vsp1 591 drivers/media/platform/vsp1/vsp1_drv.c if (!vsp1->drm) vsp1 592 drivers/media/platform/vsp1/vsp1_drv.c vsp1_video_suspend(vsp1); vsp1 594 drivers/media/platform/vsp1/vsp1_drv.c pm_runtime_force_suspend(vsp1->dev); vsp1 601 drivers/media/platform/vsp1/vsp1_drv.c struct vsp1_device *vsp1 = dev_get_drvdata(dev); vsp1 603 drivers/media/platform/vsp1/vsp1_drv.c pm_runtime_force_resume(vsp1->dev); vsp1 609 drivers/media/platform/vsp1/vsp1_drv.c if (!vsp1->drm) vsp1 610 drivers/media/platform/vsp1/vsp1_drv.c vsp1_video_resume(vsp1); vsp1 617 drivers/media/platform/vsp1/vsp1_drv.c struct vsp1_device *vsp1 = dev_get_drvdata(dev); vsp1 619 drivers/media/platform/vsp1/vsp1_drv.c rcar_fcp_disable(vsp1->fcp); vsp1 626 drivers/media/platform/vsp1/vsp1_drv.c struct vsp1_device *vsp1 = dev_get_drvdata(dev); vsp1 629 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1->info) { vsp1 630 drivers/media/platform/vsp1/vsp1_drv.c ret = vsp1_device_init(vsp1); vsp1 635 drivers/media/platform/vsp1/vsp1_drv.c return rcar_fcp_enable(vsp1->fcp); vsp1 788 drivers/media/platform/vsp1/vsp1_drv.c struct vsp1_device *vsp1; vsp1 795 drivers/media/platform/vsp1/vsp1_drv.c vsp1 = devm_kzalloc(&pdev->dev, sizeof(*vsp1), GFP_KERNEL); vsp1 796 drivers/media/platform/vsp1/vsp1_drv.c if (vsp1 == NULL) vsp1 799 drivers/media/platform/vsp1/vsp1_drv.c vsp1->dev = &pdev->dev; vsp1 800 drivers/media/platform/vsp1/vsp1_drv.c INIT_LIST_HEAD(&vsp1->entities); vsp1 801 drivers/media/platform/vsp1/vsp1_drv.c INIT_LIST_HEAD(&vsp1->videos); vsp1 803 drivers/media/platform/vsp1/vsp1_drv.c platform_set_drvdata(pdev, vsp1); vsp1 807 drivers/media/platform/vsp1/vsp1_drv.c vsp1->mmio = devm_ioremap_resource(&pdev->dev, io); vsp1 808 drivers/media/platform/vsp1/vsp1_drv.c if (IS_ERR(vsp1->mmio)) vsp1 809 drivers/media/platform/vsp1/vsp1_drv.c return PTR_ERR(vsp1->mmio); vsp1 818 drivers/media/platform/vsp1/vsp1_drv.c IRQF_SHARED, dev_name(&pdev->dev), vsp1); vsp1 827 drivers/media/platform/vsp1/vsp1_drv.c vsp1->fcp = rcar_fcp_get(fcp_node); vsp1 829 drivers/media/platform/vsp1/vsp1_drv.c if (IS_ERR(vsp1->fcp)) { vsp1 831 drivers/media/platform/vsp1/vsp1_drv.c PTR_ERR(vsp1->fcp)); vsp1 832 drivers/media/platform/vsp1/vsp1_drv.c return PTR_ERR(vsp1->fcp); vsp1 840 drivers/media/platform/vsp1/vsp1_drv.c vsp1->bus_master = rcar_fcp_get_device(vsp1->fcp); vsp1 842 drivers/media/platform/vsp1/vsp1_drv.c vsp1->bus_master = vsp1->dev; vsp1 852 drivers/media/platform/vsp1/vsp1_drv.c vsp1->version = vsp1_read(vsp1, VI6_IP_VERSION); vsp1 856 drivers/media/platform/vsp1/vsp1_drv.c if ((vsp1->version & VI6_IP_VERSION_MODEL_MASK) == vsp1 858 drivers/media/platform/vsp1/vsp1_drv.c vsp1->info = &vsp1_device_infos[i]; vsp1 863 drivers/media/platform/vsp1/vsp1_drv.c if (!vsp1->info) { vsp1 865 drivers/media/platform/vsp1/vsp1_drv.c vsp1->version); vsp1 870 drivers/media/platform/vsp1/vsp1_drv.c dev_dbg(&pdev->dev, "IP version 0x%08x\n", vsp1->version); vsp1 873 drivers/media/platform/vsp1/vsp1_drv.c ret = vsp1_create_entities(vsp1); vsp1 888 drivers/media/platform/vsp1/vsp1_drv.c struct vsp1_device *vsp1 = platform_get_drvdata(pdev); vsp1 890 drivers/media/platform/vsp1/vsp1_drv.c vsp1_destroy_entities(vsp1); vsp1 891 drivers/media/platform/vsp1/vsp1_drv.c rcar_fcp_put(vsp1->fcp); vsp1 609 drivers/media/platform/vsp1/vsp1_entity.c int vsp1_entity_init(struct vsp1_device *vsp1, struct vsp1_entity *entity, vsp1 630 drivers/media/platform/vsp1/vsp1_entity.c entity->vsp1 = vsp1; vsp1 634 drivers/media/platform/vsp1/vsp1_entity.c entity->pads = devm_kcalloc(vsp1->dev, vsp1 643 drivers/media/platform/vsp1/vsp1_entity.c entity->sources = devm_kcalloc(vsp1->dev, max(num_pads - 1, 1U), vsp1 663 drivers/media/platform/vsp1/vsp1_entity.c subdev->entity.ops = &vsp1->media_ops; vsp1 667 drivers/media/platform/vsp1/vsp1_entity.c dev_name(vsp1->dev), name); vsp1 97 drivers/media/platform/vsp1/vsp1_entity.h struct vsp1_device *vsp1; vsp1 128 drivers/media/platform/vsp1/vsp1_entity.h int vsp1_entity_init(struct vsp1_device *vsp1, struct vsp1_entity *entity, vsp1 28 drivers/media/platform/vsp1/vsp1_hgo.c return vsp1_read(hgo->histo.entity.vsp1, reg); vsp1 60 drivers/media/platform/vsp1/vsp1_hgo.c vsp1_write(hgo->histo.entity.vsp1, vsp1 188 drivers/media/platform/vsp1/vsp1_hgo.c struct vsp1_hgo *vsp1_hgo_create(struct vsp1_device *vsp1) vsp1 193 drivers/media/platform/vsp1/vsp1_hgo.c hgo = devm_kzalloc(vsp1->dev, sizeof(*hgo), GFP_KERNEL); vsp1 199 drivers/media/platform/vsp1/vsp1_hgo.c vsp1->info->gen == 3 ? 2 : 1); vsp1 202 drivers/media/platform/vsp1/vsp1_hgo.c if (vsp1->info->gen == 3) vsp1 213 drivers/media/platform/vsp1/vsp1_hgo.c ret = vsp1_histogram_init(vsp1, &hgo->histo, VSP1_ENTITY_HGO, "hgo", vsp1 38 drivers/media/platform/vsp1/vsp1_hgo.h struct vsp1_hgo *vsp1_hgo_create(struct vsp1_device *vsp1); vsp1 28 drivers/media/platform/vsp1/vsp1_hgt.c return vsp1_read(hgt->histo.entity.vsp1, reg); vsp1 187 drivers/media/platform/vsp1/vsp1_hgt.c struct vsp1_hgt *vsp1_hgt_create(struct vsp1_device *vsp1) vsp1 192 drivers/media/platform/vsp1/vsp1_hgt.c hgt = devm_kzalloc(vsp1->dev, sizeof(*hgt), GFP_KERNEL); vsp1 203 drivers/media/platform/vsp1/vsp1_hgt.c ret = vsp1_histogram_init(vsp1, &hgt->histo, VSP1_ENTITY_HGT, "hgt", vsp1 35 drivers/media/platform/vsp1/vsp1_hgt.h struct vsp1_hgt *vsp1_hgt_create(struct vsp1_device *vsp1); vsp1 433 drivers/media/platform/vsp1/vsp1_histo.c dev_name(histo->entity.vsp1->dev)); vsp1 514 drivers/media/platform/vsp1/vsp1_histo.c int vsp1_histogram_init(struct vsp1_device *vsp1, struct vsp1_histogram *histo, vsp1 539 drivers/media/platform/vsp1/vsp1_histo.c ret = vsp1_entity_init(vsp1, &histo->entity, name, 2, &histo_ops, vsp1 550 drivers/media/platform/vsp1/vsp1_histo.c histo->video.v4l2_dev = &vsp1->v4l2_dev; vsp1 570 drivers/media/platform/vsp1/vsp1_histo.c histo->queue.dev = vsp1->dev; vsp1 573 drivers/media/platform/vsp1/vsp1_histo.c dev_err(vsp1->dev, "failed to initialize vb2 queue\n"); vsp1 581 drivers/media/platform/vsp1/vsp1_histo.c dev_err(vsp1->dev, "failed to register video device\n"); vsp1 64 drivers/media/platform/vsp1/vsp1_histo.h int vsp1_histogram_init(struct vsp1_device *vsp1, struct vsp1_histogram *histo, vsp1 151 drivers/media/platform/vsp1/vsp1_hsit.c struct vsp1_hsit *vsp1_hsit_create(struct vsp1_device *vsp1, bool inverse) vsp1 156 drivers/media/platform/vsp1/vsp1_hsit.c hsit = devm_kzalloc(vsp1->dev, sizeof(*hsit), GFP_KERNEL); vsp1 169 drivers/media/platform/vsp1/vsp1_hsit.c ret = vsp1_entity_init(vsp1, &hsit->entity, inverse ? "hsi" : "hst", vsp1 32 drivers/media/platform/vsp1/vsp1_hsit.h struct vsp1_hsit *vsp1_hsit_create(struct vsp1_device *vsp1, bool inverse); vsp1 99 drivers/media/platform/vsp1/vsp1_lif.c switch (entity->vsp1->version & VI6_IP_VERSION_MODEL_MASK) { vsp1 137 drivers/media/platform/vsp1/vsp1_lif.c if ((entity->vsp1->version & VI6_IP_VERSION_MASK) == vsp1 152 drivers/media/platform/vsp1/vsp1_lif.c struct vsp1_lif *vsp1_lif_create(struct vsp1_device *vsp1, unsigned int index) vsp1 157 drivers/media/platform/vsp1/vsp1_lif.c lif = devm_kzalloc(vsp1->dev, sizeof(*lif), GFP_KERNEL); vsp1 170 drivers/media/platform/vsp1/vsp1_lif.c ret = vsp1_entity_init(vsp1, &lif->entity, "lif", 2, &lif_ops, vsp1 31 drivers/media/platform/vsp1/vsp1_lif.h struct vsp1_lif *vsp1_lif_create(struct vsp1_device *vsp1, unsigned int index); vsp1 197 drivers/media/platform/vsp1/vsp1_lut.c struct vsp1_lut *vsp1_lut_create(struct vsp1_device *vsp1) vsp1 202 drivers/media/platform/vsp1/vsp1_lut.c lut = devm_kzalloc(vsp1->dev, sizeof(*lut), GFP_KERNEL); vsp1 211 drivers/media/platform/vsp1/vsp1_lut.c ret = vsp1_entity_init(vsp1, &lut->entity, "lut", 2, &lut_ops, vsp1 221 drivers/media/platform/vsp1/vsp1_lut.c lut->pool = vsp1_dl_body_pool_create(vsp1, 3, LUT_SIZE, 0); vsp1 232 drivers/media/platform/vsp1/vsp1_lut.c dev_err(vsp1->dev, "lut: failed to initialize controls\n"); vsp1 40 drivers/media/platform/vsp1/vsp1_lut.h struct vsp1_lut *vsp1_lut_create(struct vsp1_device *vsp1); vsp1 215 drivers/media/platform/vsp1/vsp1_pipe.c const struct vsp1_format_info *vsp1_get_format_info(struct vsp1_device *vsp1, vsp1 221 drivers/media/platform/vsp1/vsp1_pipe.c if (vsp1->info->gen != 2) { vsp1 289 drivers/media/platform/vsp1/vsp1_pipe.c struct vsp1_device *vsp1 = pipe->output->entity.vsp1; vsp1 292 drivers/media/platform/vsp1/vsp1_pipe.c vsp1_write(vsp1, VI6_CMD(pipe->output->entity.index), vsp1 314 drivers/media/platform/vsp1/vsp1_pipe.c struct vsp1_device *vsp1 = pipe->output->entity.vsp1; vsp1 324 drivers/media/platform/vsp1/vsp1_pipe.c ret = vsp1_reset_wpf(vsp1, pipe->output->entity.index); vsp1 344 drivers/media/platform/vsp1/vsp1_pipe.c vsp1_write(vsp1, entity->route->reg, vsp1 349 drivers/media/platform/vsp1/vsp1_pipe.c vsp1_write(vsp1, VI6_DPR_HGO_SMPPT, vsp1 354 drivers/media/platform/vsp1/vsp1_pipe.c vsp1_write(vsp1, VI6_DPR_HGT_SMPPT, vsp1 172 drivers/media/platform/vsp1/vsp1_pipe.h const struct vsp1_format_info *vsp1_get_format_info(struct vsp1_device *vsp1, vsp1 158 drivers/media/platform/vsp1/vsp1_rpf.c if (entity->vsp1->info->gen == 3) { vsp1 248 drivers/media/platform/vsp1/vsp1_rpf.c struct vsp1_device *vsp1 = rpf->entity.vsp1; vsp1 307 drivers/media/platform/vsp1/vsp1_rpf.c if (vsp1->info->gen == 3 && format->num_planes == 3 && vsp1 344 drivers/media/platform/vsp1/vsp1_rpf.c struct vsp1_rwpf *vsp1_rpf_create(struct vsp1_device *vsp1, unsigned int index) vsp1 350 drivers/media/platform/vsp1/vsp1_rpf.c rpf = devm_kzalloc(vsp1->dev, sizeof(*rpf), GFP_KERNEL); vsp1 362 drivers/media/platform/vsp1/vsp1_rpf.c ret = vsp1_entity_init(vsp1, &rpf->entity, name, 2, &rpf_ops, vsp1 370 drivers/media/platform/vsp1/vsp1_rpf.c dev_err(vsp1->dev, "rpf%u: failed to initialize controls\n", vsp1 79 drivers/media/platform/vsp1/vsp1_rwpf.h struct vsp1_rwpf *vsp1_rpf_create(struct vsp1_device *vsp1, unsigned int index); vsp1 80 drivers/media/platform/vsp1/vsp1_rwpf.h struct vsp1_rwpf *vsp1_wpf_create(struct vsp1_device *vsp1, unsigned int index); vsp1 361 drivers/media/platform/vsp1/vsp1_sru.c struct vsp1_sru *vsp1_sru_create(struct vsp1_device *vsp1) vsp1 366 drivers/media/platform/vsp1/vsp1_sru.c sru = devm_kzalloc(vsp1->dev, sizeof(*sru), GFP_KERNEL); vsp1 373 drivers/media/platform/vsp1/vsp1_sru.c ret = vsp1_entity_init(vsp1, &sru->entity, "sru", 2, &sru_ops, vsp1 387 drivers/media/platform/vsp1/vsp1_sru.c dev_err(vsp1->dev, "sru: failed to initialize controls\n"); vsp1 36 drivers/media/platform/vsp1/vsp1_sru.h struct vsp1_sru *vsp1_sru_create(struct vsp1_device *vsp1); vsp1 278 drivers/media/platform/vsp1/vsp1_uds.c dev_dbg(uds->entity.vsp1->dev, "hscale %u vscale %u\n", hscale, vscale); vsp1 406 drivers/media/platform/vsp1/vsp1_uds.c struct vsp1_uds *vsp1_uds_create(struct vsp1_device *vsp1, unsigned int index) vsp1 412 drivers/media/platform/vsp1/vsp1_uds.c uds = devm_kzalloc(vsp1->dev, sizeof(*uds), GFP_KERNEL); vsp1 421 drivers/media/platform/vsp1/vsp1_uds.c ret = vsp1_entity_init(vsp1, &uds->entity, name, 2, &uds_ops, vsp1 32 drivers/media/platform/vsp1/vsp1_uds.h struct vsp1_uds *vsp1_uds_create(struct vsp1_device *vsp1, unsigned int index); vsp1 31 drivers/media/platform/vsp1/vsp1_uif.c return vsp1_read(uif->entity.vsp1, vsp1 240 drivers/media/platform/vsp1/vsp1_uif.c struct vsp1_uif *vsp1_uif_create(struct vsp1_device *vsp1, unsigned int index) vsp1 246 drivers/media/platform/vsp1/vsp1_uif.c uif = devm_kzalloc(vsp1->dev, sizeof(*uif), GFP_KERNEL); vsp1 259 drivers/media/platform/vsp1/vsp1_uif.c ret = vsp1_entity_init(vsp1, &uif->entity, name, 2, &uif_ops, vsp1 29 drivers/media/platform/vsp1/vsp1_uif.h struct vsp1_uif *vsp1_uif_create(struct vsp1_device *vsp1, unsigned int index); vsp1 118 drivers/media/platform/vsp1/vsp1_video.c info = vsp1_get_format_info(video->vsp1, pix->pixelformat); vsp1 120 drivers/media/platform/vsp1/vsp1_video.c info = vsp1_get_format_info(video->vsp1, VSP1_VIDEO_DEF_FORMAT); vsp1 254 drivers/media/platform/vsp1/vsp1_video.c struct vsp1_device *vsp1 = pipe->output->entity.vsp1; vsp1 273 drivers/media/platform/vsp1/vsp1_video.c if (vsp1->info->gen == 3) { vsp1 378 drivers/media/platform/vsp1/vsp1_video.c struct vsp1_device *vsp1 = pipe->output->entity.vsp1; vsp1 415 drivers/media/platform/vsp1/vsp1_video.c dev_err(vsp1->dev, "Failed to obtain a dl list. Frame will be incomplete\n"); vsp1 433 drivers/media/platform/vsp1/vsp1_video.c struct vsp1_device *vsp1 = pipe->output->entity.vsp1; vsp1 444 drivers/media/platform/vsp1/vsp1_video.c for (i = 0; i < vsp1->info->rpf_count; ++i) { vsp1 478 drivers/media/platform/vsp1/vsp1_video.c ret = media_entity_enum_init(&ent_enum, &input->entity.vsp1->media_dev); vsp1 632 drivers/media/platform/vsp1/vsp1_video.c for (i = 0; i < video->vsp1->info->rpf_count; ++i) { vsp1 695 drivers/media/platform/vsp1/vsp1_video.c struct media_device *mdev = &pipe->output->entity.vsp1->media_dev; vsp1 924 drivers/media/platform/vsp1/vsp1_video.c dev_err(video->vsp1->dev, "pipeline stop timeout\n"); vsp1 963 drivers/media/platform/vsp1/vsp1_video.c dev_name(video->vsp1->dev)); vsp1 1031 drivers/media/platform/vsp1/vsp1_video.c struct media_device *mdev = &video->vsp1->media_dev; vsp1 1119 drivers/media/platform/vsp1/vsp1_video.c ret = vsp1_device_get(video->vsp1); vsp1 1141 drivers/media/platform/vsp1/vsp1_video.c vsp1_device_put(video->vsp1); vsp1 1163 drivers/media/platform/vsp1/vsp1_video.c void vsp1_video_suspend(struct vsp1_device *vsp1) vsp1 1174 drivers/media/platform/vsp1/vsp1_video.c for (i = 0; i < vsp1->info->wpf_count; ++i) { vsp1 1175 drivers/media/platform/vsp1/vsp1_video.c struct vsp1_rwpf *wpf = vsp1->wpf[i]; vsp1 1191 drivers/media/platform/vsp1/vsp1_video.c for (i = 0; i < vsp1->info->wpf_count; ++i) { vsp1 1192 drivers/media/platform/vsp1/vsp1_video.c struct vsp1_rwpf *wpf = vsp1->wpf[i]; vsp1 1205 drivers/media/platform/vsp1/vsp1_video.c dev_warn(vsp1->dev, "pipeline %u stop timeout\n", vsp1 1210 drivers/media/platform/vsp1/vsp1_video.c void vsp1_video_resume(struct vsp1_device *vsp1) vsp1 1216 drivers/media/platform/vsp1/vsp1_video.c for (i = 0; i < vsp1->info->wpf_count; ++i) { vsp1 1217 drivers/media/platform/vsp1/vsp1_video.c struct vsp1_rwpf *wpf = vsp1->wpf[i]; vsp1 1244 drivers/media/platform/vsp1/vsp1_video.c struct vsp1_video *vsp1_video_create(struct vsp1_device *vsp1, vsp1 1251 drivers/media/platform/vsp1/vsp1_video.c video = devm_kzalloc(vsp1->dev, sizeof(*video), GFP_KERNEL); vsp1 1257 drivers/media/platform/vsp1/vsp1_video.c video->vsp1 = vsp1; vsp1 1292 drivers/media/platform/vsp1/vsp1_video.c video->video.v4l2_dev = &video->vsp1->v4l2_dev; vsp1 1310 drivers/media/platform/vsp1/vsp1_video.c video->queue.dev = video->vsp1->bus_master; vsp1 1313 drivers/media/platform/vsp1/vsp1_video.c dev_err(video->vsp1->dev, "failed to initialize vb2 queue\n"); vsp1 1321 drivers/media/platform/vsp1/vsp1_video.c dev_err(video->vsp1->dev, "failed to register video device\n"); vsp1 33 drivers/media/platform/vsp1/vsp1_video.h struct vsp1_device *vsp1; vsp1 54 drivers/media/platform/vsp1/vsp1_video.h void vsp1_video_suspend(struct vsp1_device *vsp1); vsp1 55 drivers/media/platform/vsp1/vsp1_video.h void vsp1_video_resume(struct vsp1_device *vsp1); vsp1 57 drivers/media/platform/vsp1/vsp1_video.h struct vsp1_video *vsp1_video_create(struct vsp1_device *vsp1, vsp1 136 drivers/media/platform/vsp1/vsp1_wpf.c struct vsp1_device *vsp1 = wpf->entity.vsp1; vsp1 144 drivers/media/platform/vsp1/vsp1_wpf.c } else if (vsp1_feature(vsp1, VSP1_HAS_WPF_HFLIP)) { vsp1 150 drivers/media/platform/vsp1/vsp1_wpf.c } else if (vsp1_feature(vsp1, VSP1_HAS_WPF_VFLIP)) { vsp1 180 drivers/media/platform/vsp1/vsp1_wpf.c dev_err(vsp1->dev, "wpf%u: failed to initialize controls\n", vsp1 195 drivers/media/platform/vsp1/vsp1_wpf.c struct vsp1_device *vsp1 = wpf->entity.vsp1; vsp1 204 drivers/media/platform/vsp1/vsp1_wpf.c vsp1_write(vsp1, VI6_WPF_IRQ_ENB(wpf->entity.index), 0); vsp1 205 drivers/media/platform/vsp1/vsp1_wpf.c vsp1_write(vsp1, wpf->entity.index * VI6_WPF_OFFSET + vsp1 244 drivers/media/platform/vsp1/vsp1_wpf.c dev_err(wpf->entity.vsp1->dev, vsp1 262 drivers/media/platform/vsp1/vsp1_wpf.c struct vsp1_device *vsp1 = wpf->entity.vsp1; vsp1 304 drivers/media/platform/vsp1/vsp1_wpf.c if (vsp1_feature(vsp1, VSP1_HAS_WPF_HFLIP) && index == 0) vsp1 324 drivers/media/platform/vsp1/vsp1_wpf.c for (i = 0; i < vsp1->info->rpf_count; ++i) { vsp1 397 drivers/media/platform/vsp1/vsp1_wpf.c struct vsp1_device *vsp1 = wpf->entity.vsp1; vsp1 518 drivers/media/platform/vsp1/vsp1_wpf.c if (vsp1->info->gen == 3 && format->num_planes == 3 && vsp1 563 drivers/media/platform/vsp1/vsp1_wpf.c struct vsp1_rwpf *vsp1_wpf_create(struct vsp1_device *vsp1, unsigned int index) vsp1 569 drivers/media/platform/vsp1/vsp1_wpf.c wpf = devm_kzalloc(vsp1->dev, sizeof(*wpf), GFP_KERNEL); vsp1 573 drivers/media/platform/vsp1/vsp1_wpf.c if (vsp1->info->gen == 2) { vsp1 586 drivers/media/platform/vsp1/vsp1_wpf.c ret = vsp1_entity_init(vsp1, &wpf->entity, name, 2, &wpf_ops, vsp1 592 drivers/media/platform/vsp1/vsp1_wpf.c wpf->dlm = vsp1_dlm_create(vsp1, index, 64); vsp1 601 drivers/media/platform/vsp1/vsp1_wpf.c dev_err(vsp1->dev, "wpf%u: failed to initialize controls\n",