Lines Matching full:fdp1
58 #define dprintk(fdp1, fmt, arg...) \ argument
59 v4l2_dbg(1, debug, &fdp1->v4l2_dev, "%s: " fmt, __func__, ## arg)
62 * FDP1 registers and bits
65 /* FDP1 start register - Imm */
271 * struct fdp1_fmt - The FDP1 internal format data
277 * @fmt: 7-bit format code for the fdp1 hardware
412 * FDP1 Lookup tables range from 0...255 only
516 * FDP1 operates on potentially 3 fields, which are tracked
581 struct fdp1_dev *fdp1; member
652 static struct fdp1_job *list_remove_job(struct fdp1_dev *fdp1, in list_remove_job() argument
658 spin_lock_irqsave(&fdp1->irqlock, flags); in list_remove_job()
662 spin_unlock_irqrestore(&fdp1->irqlock, flags); in list_remove_job()
672 static void list_add_job(struct fdp1_dev *fdp1, in list_add_job() argument
678 spin_lock_irqsave(&fdp1->irqlock, flags); in list_add_job()
680 spin_unlock_irqrestore(&fdp1->irqlock, flags); in list_add_job()
683 static struct fdp1_job *fdp1_job_alloc(struct fdp1_dev *fdp1) in fdp1_job_alloc() argument
685 return list_remove_job(fdp1, &fdp1->free_job_list); in fdp1_job_alloc()
688 static void fdp1_job_free(struct fdp1_dev *fdp1, struct fdp1_job *job) in fdp1_job_free() argument
693 list_add_job(fdp1, &fdp1->free_job_list, job); in fdp1_job_free()
696 static void queue_job(struct fdp1_dev *fdp1, struct fdp1_job *job) in queue_job() argument
698 list_add_job(fdp1, &fdp1->queued_job_list, job); in queue_job()
701 static struct fdp1_job *get_queued_job(struct fdp1_dev *fdp1) in get_queued_job() argument
703 return list_remove_job(fdp1, &fdp1->queued_job_list); in get_queued_job()
706 static void queue_hw_job(struct fdp1_dev *fdp1, struct fdp1_job *job) in queue_hw_job() argument
708 list_add_job(fdp1, &fdp1->hw_job_list, job); in queue_hw_job()
711 static struct fdp1_job *get_hw_queued_job(struct fdp1_dev *fdp1) in get_hw_queued_job() argument
713 return list_remove_job(fdp1, &fdp1->hw_job_list); in get_hw_queued_job()
735 spin_lock_irqsave(&ctx->fdp1->irqlock, flags); in fdp1_queue_field()
737 spin_unlock_irqrestore(&ctx->fdp1->irqlock, flags); in fdp1_queue_field()
749 spin_lock_irqsave(&ctx->fdp1->irqlock, flags); in fdp1_dequeue_field()
754 spin_unlock_irqrestore(&ctx->fdp1->irqlock, flags); in fdp1_dequeue_field()
768 spin_lock_irqsave(&ctx->fdp1->irqlock, flags); in fdp1_peek_queued_field()
771 spin_unlock_irqrestore(&ctx->fdp1->irqlock, flags); in fdp1_peek_queued_field()
776 static u32 fdp1_read(struct fdp1_dev *fdp1, unsigned int reg) in fdp1_read() argument
778 u32 value = ioread32(fdp1->regs + reg); in fdp1_read()
781 dprintk(fdp1, "Read 0x%08x from 0x%04x\n", value, reg); in fdp1_read()
786 static void fdp1_write(struct fdp1_dev *fdp1, u32 val, unsigned int reg) in fdp1_write() argument
789 dprintk(fdp1, "Write 0x%08x to 0x%04x\n", val, reg); in fdp1_write()
791 iowrite32(val, fdp1->regs + reg); in fdp1_write()
797 struct fdp1_dev *fdp1 = ctx->fdp1; in fdp1_set_ipc_dli() local
799 fdp1_write(fdp1, FD1_IPC_SMSK_THRESH_CONST, FD1_IPC_SMSK_THRESH); in fdp1_set_ipc_dli()
800 fdp1_write(fdp1, FD1_IPC_COMB_DET_CONST, FD1_IPC_COMB_DET); in fdp1_set_ipc_dli()
801 fdp1_write(fdp1, FD1_IPC_MOTDEC_CONST, FD1_IPC_MOTDEC); in fdp1_set_ipc_dli()
803 fdp1_write(fdp1, FD1_IPC_DLI_BLEND_CONST, FD1_IPC_DLI_BLEND); in fdp1_set_ipc_dli()
804 fdp1_write(fdp1, FD1_IPC_DLI_HGAIN_CONST, FD1_IPC_DLI_HGAIN); in fdp1_set_ipc_dli()
805 fdp1_write(fdp1, FD1_IPC_DLI_SPRS_CONST, FD1_IPC_DLI_SPRS); in fdp1_set_ipc_dli()
806 fdp1_write(fdp1, FD1_IPC_DLI_ANGLE_CONST, FD1_IPC_DLI_ANGLE); in fdp1_set_ipc_dli()
807 fdp1_write(fdp1, FD1_IPC_DLI_ISOPIX0_CONST, FD1_IPC_DLI_ISOPIX0); in fdp1_set_ipc_dli()
808 fdp1_write(fdp1, FD1_IPC_DLI_ISOPIX1_CONST, FD1_IPC_DLI_ISOPIX1); in fdp1_set_ipc_dli()
814 struct fdp1_dev *fdp1 = ctx->fdp1; in fdp1_set_ipc_sensor() local
823 fdp1_write(fdp1, FD1_IPC_SENSOR_TH0_CONST, FD1_IPC_SENSOR_TH0); in fdp1_set_ipc_sensor()
824 fdp1_write(fdp1, FD1_IPC_SENSOR_TH1_CONST, FD1_IPC_SENSOR_TH1); in fdp1_set_ipc_sensor()
825 fdp1_write(fdp1, FD1_IPC_SENSOR_CTL0_CONST, FD1_IPC_SENSOR_CTL0); in fdp1_set_ipc_sensor()
826 fdp1_write(fdp1, FD1_IPC_SENSOR_CTL1_CONST, FD1_IPC_SENSOR_CTL1); in fdp1_set_ipc_sensor()
828 fdp1_write(fdp1, ((hsize - 1) << FD1_IPC_SENSOR_CTL2_X_SHIFT) | in fdp1_set_ipc_sensor()
832 fdp1_write(fdp1, (x0 << FD1_IPC_SENSOR_CTL3_0_SHIFT) | in fdp1_set_ipc_sensor()
840 * FDP1 uses constant data for de-interlacing processing,
846 static void fdp1_write_lut(struct fdp1_dev *fdp1, const u8 *lut, in fdp1_write_lut() argument
856 fdp1_write(fdp1, lut[i], base + (i*4)); in fdp1_write_lut()
862 fdp1_write(fdp1, pad, base + (i*4)); in fdp1_write_lut()
865 static void fdp1_set_lut(struct fdp1_dev *fdp1) in fdp1_set_lut() argument
867 fdp1_write_lut(fdp1, fdp1_diff_adj, ARRAY_SIZE(fdp1_diff_adj), in fdp1_set_lut()
869 fdp1_write_lut(fdp1, fdp1_sad_adj, ARRAY_SIZE(fdp1_sad_adj), in fdp1_set_lut()
871 fdp1_write_lut(fdp1, fdp1_bld_gain, ARRAY_SIZE(fdp1_bld_gain), in fdp1_set_lut()
873 fdp1_write_lut(fdp1, fdp1_dif_gain, ARRAY_SIZE(fdp1_dif_gain), in fdp1_set_lut()
875 fdp1_write_lut(fdp1, fdp1_mdet, ARRAY_SIZE(fdp1_mdet), in fdp1_set_lut()
882 struct fdp1_dev *fdp1 = ctx->fdp1; in fdp1_configure_rpf() local
918 fdp1_write(fdp1, format, FD1_RPF_FORMAT); in fdp1_configure_rpf()
919 fdp1_write(fdp1, q_data->fmt->swap, FD1_RPF_SWAP); in fdp1_configure_rpf()
920 fdp1_write(fdp1, picture_size, FD1_RPF_SIZE); in fdp1_configure_rpf()
921 fdp1_write(fdp1, pstride, FD1_RPF_PSTRIDE); in fdp1_configure_rpf()
922 fdp1_write(fdp1, smsk_addr, FD1_RPF_SMSK_ADDR); in fdp1_configure_rpf()
926 fdp1_write(fdp1, job->previous->addrs[0], FD1_RPF0_ADDR_Y); in fdp1_configure_rpf()
929 fdp1_write(fdp1, job->active->addrs[0], FD1_RPF1_ADDR_Y); in fdp1_configure_rpf()
930 fdp1_write(fdp1, job->active->addrs[1], FD1_RPF1_ADDR_C0); in fdp1_configure_rpf()
931 fdp1_write(fdp1, job->active->addrs[2], FD1_RPF1_ADDR_C1); in fdp1_configure_rpf()
935 fdp1_write(fdp1, job->next->addrs[0], FD1_RPF2_ADDR_Y); in fdp1_configure_rpf()
941 struct fdp1_dev *fdp1 = ctx->fdp1; in fdp1_configure_wpf() local
989 fdp1_write(fdp1, format, FD1_WPF_FORMAT); in fdp1_configure_wpf()
990 fdp1_write(fdp1, rndctl, FD1_WPF_RNDCTL); in fdp1_configure_wpf()
991 fdp1_write(fdp1, swap, FD1_WPF_SWAP); in fdp1_configure_wpf()
992 fdp1_write(fdp1, pstride, FD1_WPF_PSTRIDE); in fdp1_configure_wpf()
994 fdp1_write(fdp1, job->dst->addrs[0], FD1_WPF_ADDR_Y); in fdp1_configure_wpf()
995 fdp1_write(fdp1, job->dst->addrs[1], FD1_WPF_ADDR_C0); in fdp1_configure_wpf()
996 fdp1_write(fdp1, job->dst->addrs[2], FD1_WPF_ADDR_C1); in fdp1_configure_wpf()
1002 struct fdp1_dev *fdp1 = ctx->fdp1; in fdp1_configure_deint_mode() local
1011 dprintk(fdp1, "Progressive Mode\n"); in fdp1_configure_deint_mode()
1016 dprintk(fdp1, "Adapt2D3D Mode\n"); in fdp1_configure_deint_mode()
1032 dprintk(fdp1, "Fixed 3D Mode\n"); in fdp1_configure_deint_mode()
1039 dprintk(fdp1, "Fixed 2D Mode\n"); in fdp1_configure_deint_mode()
1044 dprintk(fdp1, "Previous Field Mode\n"); in fdp1_configure_deint_mode()
1049 dprintk(fdp1, "Next Field Mode\n"); in fdp1_configure_deint_mode()
1055 fdp1_write(fdp1, channels, FD1_CTL_CHACT); in fdp1_configure_deint_mode()
1056 fdp1_write(fdp1, opmode, FD1_CTL_OPMODE); in fdp1_configure_deint_mode()
1057 fdp1_write(fdp1, ipcmode, FD1_IPC_MODE); in fdp1_configure_deint_mode()
1069 struct fdp1_dev *fdp1 = ctx->fdp1; in fdp1_device_process() local
1073 spin_lock_irqsave(&fdp1->device_process_lock, flags); in fdp1_device_process()
1076 job = get_queued_job(fdp1); in fdp1_device_process()
1082 spin_unlock_irqrestore(&fdp1->device_process_lock, flags); in fdp1_device_process()
1087 fdp1_write(fdp1, FD1_CTL_CLKCTRL_CSTP_N, FD1_CTL_CLKCTRL); in fdp1_device_process()
1105 fdp1_write(fdp1, FD1_IPC_LMEM_LINEAR, FD1_IPC_LMEM); in fdp1_device_process()
1108 fdp1_write(fdp1, FD1_CTL_IRQ_MASK, FD1_CTL_IRQENB); in fdp1_device_process()
1113 queue_hw_job(fdp1, job); in fdp1_device_process()
1116 fdp1_write(fdp1, FD1_CTL_CMD_STRCMD, FD1_CTL_CMD); in fdp1_device_process()
1119 fdp1_write(fdp1, FD1_CTL_REGEND_REGEND, FD1_CTL_REGEND); in fdp1_device_process()
1122 fdp1_write(fdp1, FD1_CTL_SGCMD_SGEN, FD1_CTL_SGCMD); in fdp1_device_process()
1124 spin_unlock_irqrestore(&fdp1->device_process_lock, flags); in fdp1_device_process()
1143 dprintk(ctx->fdp1, "+ Src: %d : Dst: %d\n", in fdp1_m2m_job_ready()
1153 dprintk(ctx->fdp1, "Not enough buffers available\n"); in fdp1_m2m_job_ready()
1164 dprintk(ctx->fdp1, "+\n"); in fdp1_m2m_job_abort()
1170 fdp1_write(ctx->fdp1, 0, FD1_CTL_SGCMD); in fdp1_m2m_job_abort()
1171 fdp1_write(ctx->fdp1, FD1_CTL_SRESET_SRST, FD1_CTL_SRESET); in fdp1_m2m_job_abort()
1184 struct fdp1_dev *fdp1 = ctx->fdp1; in fdp1_prepare_job() local
1188 dprintk(fdp1, "+\n"); in fdp1_prepare_job()
1196 job = fdp1_job_alloc(fdp1); in fdp1_prepare_job()
1198 dprintk(fdp1, "No free jobs currently available\n"); in fdp1_prepare_job()
1205 dprintk(fdp1, "No input buffers currently available\n"); in fdp1_prepare_job()
1207 fdp1_job_free(fdp1, job); in fdp1_prepare_job()
1211 dprintk(fdp1, "+ Buffer en-route...\n"); in fdp1_prepare_job()
1249 queue_job(fdp1, job); in fdp1_prepare_job()
1251 dprintk(fdp1, "Job Queued translen = %d\n", ctx->translen); in fdp1_prepare_job()
1265 struct fdp1_dev *fdp1 = ctx->fdp1; in fdp1_m2m_device_run() local
1270 dprintk(fdp1, "+\n"); in fdp1_m2m_device_run()
1282 dprintk(fdp1, "Queued Buffer [%d] last_field:%d\n", in fdp1_m2m_device_run()
1291 dprintk(fdp1, "No jobs were processed. M2M action complete\n"); in fdp1_m2m_device_run()
1292 v4l2_m2m_job_finish(fdp1->m2m_dev, ctx->fh.m2m_ctx); in fdp1_m2m_device_run()
1305 static void device_frame_end(struct fdp1_dev *fdp1, in device_frame_end() argument
1310 struct fdp1_job *job = get_hw_queued_job(fdp1); in device_frame_end()
1312 dprintk(fdp1, "+\n"); in device_frame_end()
1314 ctx = v4l2_m2m_get_curr_priv(fdp1->m2m_dev); in device_frame_end()
1317 v4l2_err(&fdp1->v4l2_dev, in device_frame_end()
1333 spin_lock_irqsave(&fdp1->irqlock, flags); in device_frame_end()
1336 spin_unlock_irqrestore(&fdp1->irqlock, flags); in device_frame_end()
1339 fdp1_job_free(fdp1, job); in device_frame_end()
1341 dprintk(fdp1, "curr_ctx->num_processed %d curr_ctx->translen %d\n", in device_frame_end()
1346 dprintk(ctx->fdp1, "Finishing transaction\n"); in device_frame_end()
1348 v4l2_m2m_job_finish(fdp1->m2m_dev, ctx->fh.m2m_ctx); in device_frame_end()
1430 /* From VSP : TODO: Confirm alignment limits for FDP1 */ in fdp1_compute_stride()
1598 dprintk(ctx->fdp1, "Try %s format: %4.4s (0x%08x) %ux%u field %u\n", in fdp1_try_fmt()
1667 v4l2_err(&ctx->fdp1->v4l2_dev, "%s queue busy\n", __func__); in fdp1_s_fmt()
1673 dprintk(ctx->fdp1, "Set %s format: %4.4s (0x%08x) %ux%u field %u\n", in fdp1_s_fmt()
1886 dprintk(ctx->fdp1, in fdp1_buf_prepare()
1900 dprintk(ctx->fdp1, in fdp1_buf_prepare()
1949 ctx->smsk_cpu = dma_alloc_coherent(ctx->fdp1->dev, in fdp1_start_streaming()
1953 dprintk(ctx->fdp1, "Failed to alloc smsk\n"); in fdp1_start_streaming()
1978 spin_lock_irqsave(&ctx->fdp1->irqlock, flags); in fdp1_stop_streaming()
1980 spin_unlock_irqrestore(&ctx->fdp1->irqlock, flags); in fdp1_stop_streaming()
1997 dma_free_coherent(ctx->fdp1->dev, ctx->smsk_size, in fdp1_stop_streaming()
2009 job = get_queued_job(ctx->fdp1); in fdp1_stop_streaming()
2019 job = get_queued_job(ctx->fdp1); in fdp1_stop_streaming()
2025 WARN(!list_empty(&ctx->fdp1->queued_job_list), in fdp1_stop_streaming()
2028 WARN(!list_empty(&ctx->fdp1->hw_job_list), in fdp1_stop_streaming()
2056 src_vq->lock = &ctx->fdp1->dev_mutex; in queue_init()
2057 src_vq->dev = ctx->fdp1->dev; in queue_init()
2070 dst_vq->lock = &ctx->fdp1->dev_mutex; in queue_init()
2071 dst_vq->dev = ctx->fdp1->dev; in queue_init()
2081 struct fdp1_dev *fdp1 = video_drvdata(file); in fdp1_open() local
2087 if (mutex_lock_interruptible(&fdp1->dev_mutex)) in fdp1_open()
2098 ctx->fdp1 = fdp1; in fdp1_open()
2134 ctx->fh.m2m_ctx = v4l2_m2m_ctx_init(fdp1->m2m_dev, ctx, &queue_init); in fdp1_open()
2142 ret = pm_runtime_resume_and_get(fdp1->dev); in fdp1_open()
2148 dprintk(fdp1, "Created instance: %p, m2m_ctx: %p\n", in fdp1_open()
2151 mutex_unlock(&fdp1->dev_mutex); in fdp1_open()
2160 mutex_unlock(&fdp1->dev_mutex); in fdp1_open()
2166 struct fdp1_dev *fdp1 = video_drvdata(file); in fdp1_release() local
2169 dprintk(fdp1, "Releasing instance %p\n", ctx); in fdp1_release()
2174 mutex_lock(&fdp1->dev_mutex); in fdp1_release()
2176 mutex_unlock(&fdp1->dev_mutex); in fdp1_release()
2179 pm_runtime_put(fdp1->dev); in fdp1_release()
2211 struct fdp1_dev *fdp1 = dev_id; in fdp1_irq_handler() local
2217 int_status = fdp1_read(fdp1, FD1_CTL_IRQSTA); in fdp1_irq_handler()
2218 cycles = fdp1_read(fdp1, FD1_CTL_VCYCLE_STAT); in fdp1_irq_handler()
2219 ctl_status = fdp1_read(fdp1, FD1_CTL_STATUS); in fdp1_irq_handler()
2224 fdp1_write(fdp1, ~(int_status) & FD1_CTL_IRQ_MASK, FD1_CTL_IRQSTA); in fdp1_irq_handler()
2227 dprintk(fdp1, "IRQ: 0x%x %s%s%s\n", int_status, in fdp1_irq_handler()
2232 dprintk(fdp1, "CycleStatus = %d (%dms)\n", in fdp1_irq_handler()
2233 cycles, cycles/(fdp1->clk_rate/1000)); in fdp1_irq_handler()
2235 dprintk(fdp1, in fdp1_irq_handler()
2242 dprintk(fdp1, "***********************************\n"); in fdp1_irq_handler()
2251 device_frame_end(fdp1, VB2_BUF_STATE_ERROR); in fdp1_irq_handler()
2253 device_frame_end(fdp1, VB2_BUF_STATE_DONE); in fdp1_irq_handler()
2260 struct fdp1_dev *fdp1; in fdp1_probe() local
2269 fdp1 = devm_kzalloc(&pdev->dev, sizeof(*fdp1), GFP_KERNEL); in fdp1_probe()
2270 if (!fdp1) in fdp1_probe()
2273 INIT_LIST_HEAD(&fdp1->free_job_list); in fdp1_probe()
2274 INIT_LIST_HEAD(&fdp1->queued_job_list); in fdp1_probe()
2275 INIT_LIST_HEAD(&fdp1->hw_job_list); in fdp1_probe()
2278 for (i = 0; i < ARRAY_SIZE(fdp1->jobs); i++) in fdp1_probe()
2279 list_add(&fdp1->jobs[i].list, &fdp1->free_job_list); in fdp1_probe()
2281 mutex_init(&fdp1->dev_mutex); in fdp1_probe()
2283 spin_lock_init(&fdp1->irqlock); in fdp1_probe()
2284 spin_lock_init(&fdp1->device_process_lock); in fdp1_probe()
2285 fdp1->dev = &pdev->dev; in fdp1_probe()
2286 platform_set_drvdata(pdev, fdp1); in fdp1_probe()
2289 fdp1->regs = devm_platform_ioremap_resource(pdev, 0); in fdp1_probe()
2290 if (IS_ERR(fdp1->regs)) in fdp1_probe()
2291 return PTR_ERR(fdp1->regs); in fdp1_probe()
2297 fdp1->irq = ret; in fdp1_probe()
2299 ret = devm_request_irq(&pdev->dev, fdp1->irq, fdp1_irq_handler, 0, in fdp1_probe()
2300 dev_name(&pdev->dev), fdp1); in fdp1_probe()
2302 dev_err(&pdev->dev, "cannot claim IRQ %d\n", fdp1->irq); in fdp1_probe()
2309 fdp1->fcp = rcar_fcp_get(fcp_node); in fdp1_probe()
2311 if (IS_ERR(fdp1->fcp)) { in fdp1_probe()
2313 PTR_ERR(fdp1->fcp)); in fdp1_probe()
2314 return PTR_ERR(fdp1->fcp); in fdp1_probe()
2325 fdp1->clk_rate = clk_get_rate(clk); in fdp1_probe()
2329 ret = v4l2_device_register(&pdev->dev, &fdp1->v4l2_dev); in fdp1_probe()
2331 v4l2_err(&fdp1->v4l2_dev, "Failed to register video device\n"); in fdp1_probe()
2336 fdp1->m2m_dev = v4l2_m2m_init(&m2m_ops); in fdp1_probe()
2337 if (IS_ERR(fdp1->m2m_dev)) { in fdp1_probe()
2338 v4l2_err(&fdp1->v4l2_dev, "Failed to init mem2mem device\n"); in fdp1_probe()
2339 ret = PTR_ERR(fdp1->m2m_dev); in fdp1_probe()
2344 fdp1->vfd = fdp1_videodev; in fdp1_probe()
2345 vfd = &fdp1->vfd; in fdp1_probe()
2346 vfd->lock = &fdp1->dev_mutex; in fdp1_probe()
2347 vfd->v4l2_dev = &fdp1->v4l2_dev; in fdp1_probe()
2348 video_set_drvdata(vfd, fdp1); in fdp1_probe()
2353 v4l2_err(&fdp1->v4l2_dev, "Failed to register video device\n"); in fdp1_probe()
2357 v4l2_info(&fdp1->v4l2_dev, "Device registered as /dev/video%d\n", in fdp1_probe()
2362 ret = pm_runtime_resume_and_get(fdp1->dev); in fdp1_probe()
2366 hw_version = fdp1_read(fdp1, FD1_IP_INTDATA); in fdp1_probe()
2369 dprintk(fdp1, "FDP1 Version R-Car H3 ES1\n"); in fdp1_probe()
2372 dprintk(fdp1, "FDP1 Version R-Car M3-W\n"); in fdp1_probe()
2375 dprintk(fdp1, "FDP1 Version R-Car H3\n"); in fdp1_probe()
2378 dprintk(fdp1, "FDP1 Version R-Car M3-N\n"); in fdp1_probe()
2381 dprintk(fdp1, "FDP1 Version R-Car E3\n"); in fdp1_probe()
2384 dev_err(fdp1->dev, "FDP1 Unidentifiable (0x%08x)\n", in fdp1_probe()
2389 pm_runtime_put(fdp1->dev); in fdp1_probe()
2394 pm_runtime_disable(fdp1->dev); in fdp1_probe()
2397 v4l2_m2m_release(fdp1->m2m_dev); in fdp1_probe()
2400 v4l2_device_unregister(&fdp1->v4l2_dev); in fdp1_probe()
2403 rcar_fcp_put(fdp1->fcp); in fdp1_probe()
2409 struct fdp1_dev *fdp1 = platform_get_drvdata(pdev); in fdp1_remove() local
2411 v4l2_m2m_release(fdp1->m2m_dev); in fdp1_remove()
2412 video_unregister_device(&fdp1->vfd); in fdp1_remove()
2413 v4l2_device_unregister(&fdp1->v4l2_dev); in fdp1_remove()
2415 rcar_fcp_put(fdp1->fcp); in fdp1_remove()
2422 struct fdp1_dev *fdp1 = dev_get_drvdata(dev); in fdp1_pm_runtime_suspend() local
2424 rcar_fcp_disable(fdp1->fcp); in fdp1_pm_runtime_suspend()
2431 struct fdp1_dev *fdp1 = dev_get_drvdata(dev); in fdp1_pm_runtime_resume() local
2434 fdp1_set_lut(fdp1); in fdp1_pm_runtime_resume()
2436 return rcar_fcp_enable(fdp1->fcp); in fdp1_pm_runtime_resume()
2446 { .compatible = "renesas,fdp1" },