Files
kernel_common_drivers/drivers/media/video_processor/utils/vfutil.c
T
wanwei.jiang 15656eb157 media: porting media driver [1/1]
PD#SWPL-77521

Problem:
porting media driver from kernel 5.4

Solution:
porting media driver from kernel 5.4

Verify:
s4d and C2 AF400

Change-Id: I63bb8316e271db8b7d0e6e524399ebde9a1456a6
Signed-off-by: wanwei.jiang <wanwei.jiang@amlogic.com>
2022-04-07 22:56:37 +08:00

86 lines
2.3 KiB
C

// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* drivers/amlogic/media/video_processor/video_dev/common/vfutil.c
*
* Copyright (C) 2017 Amlogic, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
*/
#include <linux/version.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/spinlock.h>
#include <linux/interrupt.h>
/* #include <linux/fiq_bridge.h> */
#include <linux/fs.h>
/* #include <mach/am_regs.h> */
#include <linux/string.h>
#include <linux/io.h>
#include <linux/mm.h>
#include <linux/major.h>
#include <linux/err.h>
#include <linux/mutex.h>
#include <linux/platform_device.h>
#include <linux/ctype.h>
#ifdef CONFIG_AMLOGIC_MEDIA_FRAME_SYNC
#include <linux/amlogic/media/frame_sync/ptsserv.h>
#include <linux/amlogic/media/frame_sync/timestamp.h>
#include <linux/amlogic/media/frame_sync/tsync.h>
#endif
#include <linux/amlogic/media/canvas/canvas.h>
#include <linux/amlogic/media/vfm/vframe.h>
#include <linux/amlogic/media/vfm/vframe_provider.h>
#include <linux/amlogic/media/utils/amstream.h>
#include <linux/amlogic/media/vout/vout_notify.h>
#include <linux/sched.h>
#include <linux/poll.h>
#include <linux/clk.h>
static struct vframe_provider_s *vfp;
static DEFINE_SPINLOCK(lock);
void v4l_reg_provider(struct vframe_provider_s *prov)
{
ulong flags;
spin_lock_irqsave(&lock, flags);
#ifdef CONFIG_AMLOGIC_MEDIA_VFM
if (vfp)
vf_unreg_provider(vfp);
#endif
vfp = prov;
spin_unlock_irqrestore(&lock, flags);
}
void v4l_unreg_provider(void)
{
ulong flags;
/* int deinterlace_mode = get_deinterlace_mode(); */
spin_lock_irqsave(&lock, flags);
vfp = NULL;
/* if (deinterlace_mode == 2) { */
/* disable_pre_deinterlace(); */
/* } */
/* printk("-----%s------\n",__func__); */
spin_unlock_irqrestore(&lock, flags);
}
const struct vframe_provider_s *v4l_get_vfp(void)
{
return vfp;
}