1
0
mirror of https://github.com/physwizz/a155-U-u1.git synced 2024-11-19 13:27:49 +00:00
a155-U-u1/kernel-5.10/drivers/misc/mediatek/jpeg/jpeg_drv.h
2024-03-11 06:53:12 +11:00

115 lines
2.8 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2021 MediaTek Inc.
*/
#ifndef __JPEG_DRV_H__
#define __JPEG_DRV_H__
#include <linux/ioctl.h>
#include <linux/notifier.h>
#if IS_ENABLED(CONFIG_COMPAT)
/* 32-64 bit conversion */
#include <linux/fs.h>
#include <linux/compat.h>
#endif
#include <linux/clk.h>
#include <linux/pm_opp.h>
#include <linux/regulator/consumer.h>
#include "jpeg_dma_buf.h"
#define HW_CORE_NUMBER 2
#define JPEG_LARB_COUNT 2
#define MAX_FREQ_STEP 10
extern int jpg_dbg_level;
struct JpegClk {
struct clk *clk_venc_jpgDec;
struct clk *clk_venc_jpgDec_c1;
struct clk *clk_venc_c1_jpgDec;
};
struct JpegDeviceStruct {
struct device *pDev[JPEG_LARB_COUNT];
long hybriddecRegBaseVA[HW_CORE_NUMBER];
uint32_t hybriddecIrqId[HW_CORE_NUMBER];
struct JpegClk jpegClk;
struct device *jpegLarb[JPEG_LARB_COUNT];
int jpeg_freq_cnt[JPEG_LARB_COUNT];
unsigned long jpeg_freqs[JPEG_LARB_COUNT][MAX_FREQ_STEP];
struct regulator *jpeg_reg[JPEG_LARB_COUNT];
struct notifier_block pm_notifier;
bool is_suspending;
};
const long jpeg_dev_get_hybrid_decoder_base_VA(int id);
struct dmabuf_info {
struct dma_buf *i_dbuf;
struct dma_buf_attachment *i_attach;
struct sg_table *i_sgt;
struct dma_buf *o_dbuf;
struct dma_buf_attachment *o_attach;
struct sg_table *o_sgt;
};
struct JPEG_DEC_DRV_HYBRID_TASK {
long timeout;
int *hwid;
int *index_buf_fd;
unsigned int data[21];
};
struct JPEG_DEC_DRV_HYBRID_P_N_S {
int hwid;
int *progress_n_status;
};
#if IS_ENABLED(CONFIG_COMPAT)
struct compat_JPEG_DEC_DRV_HYBRID_TASK {
compat_long_t timeout;
compat_uptr_t hwid;
compat_uptr_t index_buf_fd;
unsigned int data[21];
};
struct compat_JPEG_DEC_DRV_HYBRID_P_N_S {
int hwid;
compat_uptr_t progress_n_status;
};
#endif
#define JPEG_IOCTL_MAGIC 'x'
#define JPEG_DEC_IOCTL_HYBRID_START \
_IOWR(JPEG_IOCTL_MAGIC, 18, struct JPEG_DEC_DRV_HYBRID_TASK)
#define JPEG_DEC_IOCTL_HYBRID_WAIT \
_IOWR(JPEG_IOCTL_MAGIC, 19, struct JPEG_DEC_DRV_HYBRID_P_N_S)
#define JPEG_DEC_IOCTL_HYBRID_GET_PROGRESS_STATUS \
_IOWR(JPEG_IOCTL_MAGIC, 20, struct JPEG_DEC_DRV_HYBRID_P_N_S)
#if IS_ENABLED(CONFIG_COMPAT)
#define COMPAT_JPEG_DEC_IOCTL_HYBRID_START \
_IOWR(JPEG_IOCTL_MAGIC, 18, struct compat_JPEG_DEC_DRV_HYBRID_TASK)
#define COMPAT_JPEG_DEC_IOCTL_HYBRID_WAIT \
_IOWR(JPEG_IOCTL_MAGIC, 19, struct compat_JPEG_DEC_DRV_HYBRID_P_N_S)
#define COMPAT_JPEG_DEC_IOCTL_HYBRID_GET_PROGRESS_STATUS \
_IOWR(JPEG_IOCTL_MAGIC, 20, struct compat_JPEG_DEC_DRV_HYBRID_P_N_S)
#endif
#define JPEG_LOG(level, format, args...) \
do { \
if ((jpg_dbg_level & level) == level) \
pr_info("[JPEG] level=%d %s(),%d: " format "\n",\
level, __func__, __LINE__, ##args); \
} while (0)
#endif // __JPEG_DRV_H__