mirror of
https://github.com/hardkernel/kernel_common_drivers.git
synced 2026-06-25 12:03:48 +09:00
69cacc04bf
PD#SWPL-108141 Problem: 5. 15 no camera driver Solution: porting camera driver to kernel-5.15 Verify: ok Change-Id: I92789c946a8f2456f6bb68adc52ece77cd730f81 Signed-off-by: junwei.ma <junwei.ma@amlogic.com>
142 lines
3.7 KiB
C
142 lines
3.7 KiB
C
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
|
|
|
|
/*
|
|
* drivers/amlogic/media/camera/common/vm.h
|
|
*
|
|
* 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.
|
|
*
|
|
*/
|
|
|
|
#ifndef _VM_INCLUDE__
|
|
#define _VM_INCLUDE__
|
|
|
|
#include <linux/interrupt.h>
|
|
#include <linux/amlogic/media/canvas/canvas.h>
|
|
#include <linux/fb.h>
|
|
#include <linux/list.h>
|
|
#include <linux/uaccess.h>
|
|
#include <linux/sysfs.h>
|
|
#include <linux/spinlock.h>
|
|
#include <linux/kthread.h>
|
|
#include <linux/io-mapping.h>
|
|
#include <linux/wait.h>
|
|
#include <linux/semaphore.h>
|
|
#include <linux/cdev.h>
|
|
#include <linux/amlogic/media/vfm/vframe_receiver.h>
|
|
#include <linux/amlogic/media/vfm/vframe_provider.h>
|
|
#include <linux/amlogic/media/camera/aml_cam_info.h>
|
|
#include <linux/amlogic/media/camera/vmapi.h>
|
|
|
|
/*************************************
|
|
**
|
|
** macro define
|
|
**
|
|
*************************************/
|
|
|
|
#define VM_IOC_MAGIC 'P'
|
|
#define VM_IOC_2OSD0 _IOW(VM_IOC_MAGIC, 0x00, unsigned int)
|
|
#define VM_IOC_ENABLE_PP _IOW(VM_IOC_MAGIC, 0X01, unsigned int)
|
|
#define VM_IOC_CONFIG_FRAME _IOW(VM_IOC_MAGIC, 0X02, unsigned int)
|
|
#define MAX_CANVAS_INDEX 12
|
|
|
|
#define VM_MAP_NAME_SIZE 100
|
|
#define VM_PROVIDER_NAME_SIZE 10
|
|
|
|
struct vm_device_s {
|
|
unsigned int index;
|
|
char name[20];
|
|
struct platform_device *pdev;
|
|
int dump;
|
|
char *dump_path;
|
|
unsigned int open_count;
|
|
int major;
|
|
unsigned int dbg_enable;
|
|
/* struct class *cla; */
|
|
struct cdev cdev;
|
|
struct device *dev;
|
|
resource_size_t buffer_start;
|
|
unsigned int buffer_size;
|
|
#ifdef CONFIG_CMA
|
|
ulong cma_pool_size;
|
|
#endif
|
|
struct vframe_receiver_s vm_vf_recv;
|
|
struct task_struct *task;
|
|
wait_queue_head_t frame_ready;
|
|
int task_running;
|
|
int vm_skip_count;
|
|
int test_zoom;
|
|
struct vm_output_para output_para;
|
|
struct completion vb_start_sema;
|
|
struct completion vb_done_sema;
|
|
char vf_provider_name[VM_PROVIDER_NAME_SIZE];
|
|
char vfm_map_id[VM_MAP_NAME_SIZE];
|
|
char vfm_map_chain[VM_MAP_NAME_SIZE];
|
|
int vm_canvas[MAX_CANVAS_INDEX];
|
|
};
|
|
|
|
struct display_frame_s {
|
|
int frame_top;
|
|
int frame_left;
|
|
int frame_width;
|
|
int frame_height;
|
|
int content_top;
|
|
int content_left;
|
|
int content_width;
|
|
int content_height;
|
|
};
|
|
|
|
int start_vm_task(struct vm_device_s *vdevp);
|
|
int start_simulate_task(void);
|
|
int alloc_vm_canvas(struct vm_device_s *vdevp);
|
|
|
|
int get_vm_status(void);
|
|
void set_vm_status(int flag);
|
|
|
|
/* for vm device op. */
|
|
int init_vm_device(struct vm_device_s *vdevp,
|
|
struct platform_device *pdev);
|
|
int uninit_vm_device(struct platform_device *plat_dev);
|
|
|
|
/* for vm device class op. */
|
|
struct class *init_vm_cls(void);
|
|
|
|
/* for thread of vm. */
|
|
int start_vpp_task(void);
|
|
void stop_vpp_task(void);
|
|
|
|
/* for vm private member. */
|
|
void set_vm_buf_info(resource_size_t start, unsigned int size);
|
|
void get_vm_buf_info(resource_size_t *start, unsigned int *size,
|
|
struct io_mapping **mapping);
|
|
|
|
/* vm buffer op. */
|
|
int vm_buffer_init(struct vm_device_s *vdevp);
|
|
void vm_local_init(void);
|
|
|
|
void vm_deinit_resource(struct vm_init_s *info);
|
|
|
|
static DEFINE_MUTEX(vm_mutex);
|
|
|
|
/* #if MESON_CPU_TYPE >= MESON_CPU_TYPE_MESON6TV */
|
|
|
|
#define CANVAS_WIDTH_ALIGN 32
|
|
|
|
//#define CANVAS_WIDTH_ALIGN 8
|
|
|
|
#define MAGIC_SG_MEM 0x17890714
|
|
#define MAGIC_DC_MEM 0x0733ac61
|
|
#define MAGIC_VMAL_MEM 0x18221223
|
|
#define MAGIC_RE_MEM 0x123039dc
|
|
|
|
#endif /* _VM_INCLUDE__ */
|