Lines Matching full:fdp1
57 #define dprintk(fdp1, fmt, arg...) \ argument
58 v4l2_dbg(1, debug, &fdp1->v4l2_dev, "%s: " fmt, __func__, ## arg)
61 * FDP1 registers and bits
64 /* 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()
1594 dprintk(ctx->fdp1, "Try %s format: %4.4s (0x%08x) %ux%u field %u\n", in fdp1_try_fmt()
1663 v4l2_err(&ctx->fdp1->v4l2_dev, "%s queue busy\n", __func__); in fdp1_s_fmt()
1669 dprintk(ctx->fdp1, "Set %s format: %4.4s (0x%08x) %ux%u field %u\n", in fdp1_s_fmt()
1882 dprintk(ctx->fdp1, in fdp1_buf_prepare()
1896 dprintk(ctx->fdp1, in fdp1_buf_prepare()
1945 ctx->smsk_cpu = dma_alloc_coherent(ctx->fdp1->dev, in fdp1_start_streaming()
1949 dprintk(ctx->fdp1, "Failed to alloc smsk\n"); in fdp1_start_streaming()
1974 spin_lock_irqsave(&ctx->fdp1->irqlock, flags); in fdp1_stop_streaming()
1976 spin_unlock_irqrestore(&ctx->fdp1->irqlock, flags); in fdp1_stop_streaming()
1993 dma_free_coherent(ctx->fdp1->dev, ctx->smsk_size, in fdp1_stop_streaming()
2005 job = get_queued_job(ctx->fdp1); in fdp1_stop_streaming()
2015 job = get_queued_job(ctx->fdp1); in fdp1_stop_streaming()
2021 WARN(!list_empty(&ctx->fdp1->queued_job_list), in fdp1_stop_streaming()
2024 WARN(!list_empty(&ctx->fdp1->hw_job_list), in fdp1_stop_streaming()
2052 src_vq->lock = &ctx->fdp1->dev_mutex; in queue_init()
2053 src_vq->dev = ctx->fdp1->dev; in queue_init()
2066 dst_vq->lock = &ctx->fdp1->dev_mutex; in queue_init()
2067 dst_vq->dev = ctx->fdp1->dev; in queue_init()
2077 struct fdp1_dev *fdp1 = video_drvdata(file); in fdp1_open() local
2083 if (mutex_lock_interruptible(&fdp1->dev_mutex)) in fdp1_open()
2094 ctx->fdp1 = fdp1; in fdp1_open()
2130 ctx->fh.m2m_ctx = v4l2_m2m_ctx_init(fdp1->m2m_dev, ctx, &queue_init); in fdp1_open()
2138 ret = pm_runtime_resume_and_get(fdp1->dev); in fdp1_open()
2144 dprintk(fdp1, "Created instance: %p, m2m_ctx: %p\n", in fdp1_open()
2147 mutex_unlock(&fdp1->dev_mutex); in fdp1_open()
2156 mutex_unlock(&fdp1->dev_mutex); in fdp1_open()
2162 struct fdp1_dev *fdp1 = video_drvdata(file); in fdp1_release() local
2165 dprintk(fdp1, "Releasing instance %p\n", ctx); in fdp1_release()
2170 mutex_lock(&fdp1->dev_mutex); in fdp1_release()
2172 mutex_unlock(&fdp1->dev_mutex); in fdp1_release()
2175 pm_runtime_put(fdp1->dev); in fdp1_release()
2207 struct fdp1_dev *fdp1 = dev_id; in fdp1_irq_handler() local
2213 int_status = fdp1_read(fdp1, FD1_CTL_IRQSTA); in fdp1_irq_handler()
2214 cycles = fdp1_read(fdp1, FD1_CTL_VCYCLE_STAT); in fdp1_irq_handler()
2215 ctl_status = fdp1_read(fdp1, FD1_CTL_STATUS); in fdp1_irq_handler()
2220 fdp1_write(fdp1, ~(int_status) & FD1_CTL_IRQ_MASK, FD1_CTL_IRQSTA); in fdp1_irq_handler()
2223 dprintk(fdp1, "IRQ: 0x%x %s%s%s\n", int_status, in fdp1_irq_handler()
2228 dprintk(fdp1, "CycleStatus = %d (%dms)\n", in fdp1_irq_handler()
2229 cycles, cycles/(fdp1->clk_rate/1000)); in fdp1_irq_handler()
2231 dprintk(fdp1, in fdp1_irq_handler()
2238 dprintk(fdp1, "***********************************\n"); in fdp1_irq_handler()
2247 device_frame_end(fdp1, VB2_BUF_STATE_ERROR); in fdp1_irq_handler()
2249 device_frame_end(fdp1, VB2_BUF_STATE_DONE); in fdp1_irq_handler()
2256 struct fdp1_dev *fdp1; in fdp1_probe() local
2265 fdp1 = devm_kzalloc(&pdev->dev, sizeof(*fdp1), GFP_KERNEL); in fdp1_probe()
2266 if (!fdp1) in fdp1_probe()
2269 INIT_LIST_HEAD(&fdp1->free_job_list); in fdp1_probe()
2270 INIT_LIST_HEAD(&fdp1->queued_job_list); in fdp1_probe()
2271 INIT_LIST_HEAD(&fdp1->hw_job_list); in fdp1_probe()
2274 for (i = 0; i < ARRAY_SIZE(fdp1->jobs); i++) in fdp1_probe()
2275 list_add(&fdp1->jobs[i].list, &fdp1->free_job_list); in fdp1_probe()
2277 mutex_init(&fdp1->dev_mutex); in fdp1_probe()
2279 spin_lock_init(&fdp1->irqlock); in fdp1_probe()
2280 spin_lock_init(&fdp1->device_process_lock); in fdp1_probe()
2281 fdp1->dev = &pdev->dev; in fdp1_probe()
2282 platform_set_drvdata(pdev, fdp1); in fdp1_probe()
2285 fdp1->regs = devm_platform_ioremap_resource(pdev, 0); in fdp1_probe()
2286 if (IS_ERR(fdp1->regs)) in fdp1_probe()
2287 return PTR_ERR(fdp1->regs); in fdp1_probe()
2293 fdp1->irq = ret; in fdp1_probe()
2295 ret = devm_request_irq(&pdev->dev, fdp1->irq, fdp1_irq_handler, 0, in fdp1_probe()
2296 dev_name(&pdev->dev), fdp1); in fdp1_probe()
2298 dev_err(&pdev->dev, "cannot claim IRQ %d\n", fdp1->irq); in fdp1_probe()
2305 fdp1->fcp = rcar_fcp_get(fcp_node); in fdp1_probe()
2307 if (IS_ERR(fdp1->fcp)) { in fdp1_probe()
2309 PTR_ERR(fdp1->fcp)); in fdp1_probe()
2310 return PTR_ERR(fdp1->fcp); in fdp1_probe()
2321 fdp1->clk_rate = clk_get_rate(clk); in fdp1_probe()
2325 ret = v4l2_device_register(&pdev->dev, &fdp1->v4l2_dev); in fdp1_probe()
2327 v4l2_err(&fdp1->v4l2_dev, "Failed to register video device\n"); in fdp1_probe()
2332 fdp1->m2m_dev = v4l2_m2m_init(&m2m_ops); in fdp1_probe()
2333 if (IS_ERR(fdp1->m2m_dev)) { in fdp1_probe()
2334 v4l2_err(&fdp1->v4l2_dev, "Failed to init mem2mem device\n"); in fdp1_probe()
2335 ret = PTR_ERR(fdp1->m2m_dev); in fdp1_probe()
2340 fdp1->vfd = fdp1_videodev; in fdp1_probe()
2341 vfd = &fdp1->vfd; in fdp1_probe()
2342 vfd->lock = &fdp1->dev_mutex; in fdp1_probe()
2343 vfd->v4l2_dev = &fdp1->v4l2_dev; in fdp1_probe()
2344 video_set_drvdata(vfd, fdp1); in fdp1_probe()
2349 v4l2_err(&fdp1->v4l2_dev, "Failed to register video device\n"); in fdp1_probe()
2353 v4l2_info(&fdp1->v4l2_dev, "Device registered as /dev/video%d\n", in fdp1_probe()
2358 ret = pm_runtime_resume_and_get(fdp1->dev); in fdp1_probe()
2362 hw_version = fdp1_read(fdp1, FD1_IP_INTDATA); in fdp1_probe()
2365 dprintk(fdp1, "FDP1 Version R-Car Gen2\n"); in fdp1_probe()
2368 dprintk(fdp1, "FDP1 Version R-Car M3-W\n"); in fdp1_probe()
2371 dprintk(fdp1, "FDP1 Version R-Car H3\n"); in fdp1_probe()
2374 dprintk(fdp1, "FDP1 Version R-Car M3-N\n"); in fdp1_probe()
2377 dprintk(fdp1, "FDP1 Version R-Car E3\n"); in fdp1_probe()
2380 dev_err(fdp1->dev, "FDP1 Unidentifiable (0x%08x)\n", in fdp1_probe()
2385 pm_runtime_put(fdp1->dev); in fdp1_probe()
2390 pm_runtime_disable(fdp1->dev); in fdp1_probe()
2393 v4l2_m2m_release(fdp1->m2m_dev); in fdp1_probe()
2396 v4l2_device_unregister(&fdp1->v4l2_dev); in fdp1_probe()
2399 rcar_fcp_put(fdp1->fcp); in fdp1_probe()
2405 struct fdp1_dev *fdp1 = platform_get_drvdata(pdev); in fdp1_remove() local
2407 v4l2_m2m_release(fdp1->m2m_dev); in fdp1_remove()
2408 video_unregister_device(&fdp1->vfd); in fdp1_remove()
2409 v4l2_device_unregister(&fdp1->v4l2_dev); in fdp1_remove()
2411 rcar_fcp_put(fdp1->fcp); in fdp1_remove()
2416 struct fdp1_dev *fdp1 = dev_get_drvdata(dev); in fdp1_pm_runtime_suspend() local
2418 rcar_fcp_disable(fdp1->fcp); in fdp1_pm_runtime_suspend()
2425 struct fdp1_dev *fdp1 = dev_get_drvdata(dev); in fdp1_pm_runtime_resume() local
2428 fdp1_set_lut(fdp1); in fdp1_pm_runtime_resume()
2430 return rcar_fcp_enable(fdp1->fcp); in fdp1_pm_runtime_resume()
2440 { .compatible = "renesas,fdp1" },