mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
media: rockchip: ispp: add module_init_ens to decide which function on
Change-Id: Ie6412446cc9b0fd54c6dc6fb277e1564c538da62 Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
@@ -185,7 +185,6 @@ static int rkispp_create_links(struct rkispp_device *ispp_dev)
|
||||
/* default enable tnr (2to1), nr, sharp */
|
||||
ispp_dev->stream_vdev.module_ens =
|
||||
ISPP_MODULE_TNR | ISPP_MODULE_NR | ISPP_MODULE_SHP;
|
||||
ispp_dev->stream_vdev.tnr_mode = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -253,7 +253,8 @@ static int rkispp_s_rx_buffer(struct rkispp_subdev *ispp_sdev)
|
||||
buf = &vdev->tnr_buf.gain_cur;
|
||||
size = &buf->size;
|
||||
dbuf = ops->get_dmabuf(buf->mem_priv, O_RDWR);
|
||||
if (vdev->tnr_mode) {
|
||||
if ((vdev->module_ens & ISPP_MODULE_TNR_3TO1) ==
|
||||
ISPP_MODULE_TNR_3TO1) {
|
||||
ret = v4l2_subdev_call(ispp_sdev->remote_sd,
|
||||
video, s_rx_buffer, dbuf, size);
|
||||
if (ret)
|
||||
|
||||
@@ -633,18 +633,21 @@ static void rkispp_params_vb2_buf_queue(struct vb2_buffer *vb)
|
||||
struct rkispp_params_cfg *new_params;
|
||||
unsigned long flags;
|
||||
|
||||
new_params = (struct rkispp_params_cfg *)vb2_plane_vaddr(vb, 0);
|
||||
spin_lock_irqsave(¶ms_vdev->config_lock, flags);
|
||||
if (params_vdev->first_params) {
|
||||
new_params = (struct rkispp_params_cfg *)
|
||||
(vb2_plane_vaddr(vb, 0));
|
||||
vb2_buffer_done(¶ms_buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
|
||||
params_vdev->first_params = false;
|
||||
params_vdev->cur_params = *new_params;
|
||||
stream_vdev->module_ens = new_params->module_ens;
|
||||
stream_vdev->tnr_mode = new_params->tnr_cfg.mode;
|
||||
if (new_params->module_init_ens)
|
||||
stream_vdev->module_ens = new_params->module_init_ens;
|
||||
spin_unlock_irqrestore(¶ms_vdev->config_lock, flags);
|
||||
return;
|
||||
}
|
||||
spin_unlock_irqrestore(¶ms_vdev->config_lock, flags);
|
||||
|
||||
params_buf->vaddr[0] = vb2_plane_vaddr(vb, 0);
|
||||
new_params->module_init_ens = stream_vdev->module_ens;
|
||||
params_buf->vaddr[0] = new_params;
|
||||
spin_lock_irqsave(¶ms_vdev->config_lock, flags);
|
||||
list_add_tail(¶ms_buf->queue, ¶ms_vdev->params);
|
||||
spin_unlock_irqrestore(¶ms_vdev->config_lock, flags);
|
||||
@@ -779,7 +782,8 @@ rkispp_params_init_vb2_queue(struct vb2_queue *q,
|
||||
void rkispp_params_isr(struct rkispp_params_vdev *params_vdev, u32 mis)
|
||||
{
|
||||
struct rkispp_params_cfg *new_params = NULL;
|
||||
u32 module_en_update, module_cfg_update, module_ens;
|
||||
u32 module_en_update, module_cfg_update;
|
||||
u32 module_ens, module_init_ens;
|
||||
|
||||
spin_lock(¶ms_vdev->config_lock);
|
||||
if (!params_vdev->streamon) {
|
||||
@@ -800,9 +804,10 @@ void rkispp_params_isr(struct rkispp_params_vdev *params_vdev, u32 mis)
|
||||
}
|
||||
new_params = (struct rkispp_params_cfg *)(params_vdev->cur_buf->vaddr[0]);
|
||||
|
||||
module_init_ens = new_params->module_init_ens;
|
||||
module_en_update = new_params->module_en_update;
|
||||
module_cfg_update = new_params->module_cfg_update;
|
||||
module_ens = new_params->module_ens;
|
||||
module_ens = new_params->module_ens & module_init_ens;
|
||||
|
||||
if (module_cfg_update & ISPP_MODULE_TNR &&
|
||||
mis & TNR_INT) {
|
||||
@@ -874,10 +879,15 @@ void rkispp_params_configure(struct rkispp_params_vdev *params_vdev)
|
||||
u32 module_en_update = params_vdev->cur_params.module_en_update;
|
||||
u32 module_cfg_update = params_vdev->cur_params.module_cfg_update;
|
||||
u32 module_ens = params_vdev->cur_params.module_ens;
|
||||
unsigned long flags;
|
||||
|
||||
if (!module_cfg_update && !module_en_update)
|
||||
spin_lock_irqsave(¶ms_vdev->config_lock, flags);
|
||||
if (params_vdev->first_params) {
|
||||
params_vdev->first_params = false;
|
||||
v4l2_warn(¶ms_vdev->dev->v4l2_dev,
|
||||
"can not get first iq setting in stream on\n");
|
||||
}
|
||||
spin_unlock_irqrestore(¶ms_vdev->config_lock, flags);
|
||||
|
||||
if (module_cfg_update & ISPP_MODULE_TNR)
|
||||
tnr_config(params_vdev,
|
||||
|
||||
@@ -427,7 +427,8 @@ static int config_tnr(struct rkispp_device *dev)
|
||||
if (ret < 0)
|
||||
goto err;
|
||||
|
||||
if (vdev->tnr_mode) {
|
||||
if ((vdev->module_ens & ISPP_MODULE_TNR_3TO1) ==
|
||||
ISPP_MODULE_TNR_3TO1) {
|
||||
buf = &vdev->tnr_buf.pic_next;
|
||||
buf->size = pic_size;
|
||||
ret = rkispp_allow_buffer(dev, buf);
|
||||
@@ -506,7 +507,9 @@ static int config_tnr(struct rkispp_device *dev)
|
||||
base + RKISPP_TNR_NXT_VIR_STRIDE);
|
||||
}
|
||||
rkispp_set_bits(base + RKISPP_TNR_CORE_CTRL, SW_TNR_MODE,
|
||||
(vdev->tnr_mode && dev->inp == INP_ISP) ? SW_TNR_MODE : 0);
|
||||
((vdev->module_ens & ISPP_MODULE_TNR_3TO1) ==
|
||||
ISPP_MODULE_TNR_3TO1 &&
|
||||
dev->inp == INP_ISP) ? SW_TNR_MODE : 0);
|
||||
writel(ALIGN(width, 64) >> 4,
|
||||
base + RKISPP_TNR_GAIN_CUR_VIR_STRIDE);
|
||||
writel(ALIGN(width, 64) >> 4,
|
||||
|
||||
@@ -146,7 +146,6 @@ struct rkispp_stream_vdev {
|
||||
struct in_fec_buf fec_buf;
|
||||
atomic_t refcnt;
|
||||
u32 module_ens;
|
||||
u8 tnr_mode;
|
||||
u8 is_update_manual;
|
||||
};
|
||||
|
||||
|
||||
@@ -9,11 +9,14 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/v4l2-controls.h>
|
||||
|
||||
#define ISPP_MODULE_TNR BIT(0)
|
||||
#define ISPP_MODULE_TNR BIT(0)//2TO1
|
||||
#define ISPP_MODULE_NR BIT(1)
|
||||
#define ISPP_MODULE_SHP BIT(2)
|
||||
#define ISPP_MODULE_FEC BIT(3)
|
||||
#define ISPP_MODULE_FEC BIT(3)//CALIBRATION
|
||||
#define ISPP_MODULE_ORB BIT(4)
|
||||
//extra function
|
||||
#define ISPP_MODULE_TNR_3TO1 (BIT(16) | ISPP_MODULE_TNR)
|
||||
#define ISPP_MODULE_FEC_ST (BIT(17) | ISPP_MODULE_FEC)//STABILIZATION
|
||||
|
||||
#define TNR_SIGMA_CURVE_SIZE 17
|
||||
#define TNR_LUMA_CURVE_SIZE 6
|
||||
@@ -69,7 +72,6 @@
|
||||
#define FEC_MESH_XY_NUM 5120
|
||||
|
||||
struct rkispp_tnr_config {
|
||||
u8 mode;
|
||||
u8 opty_en;
|
||||
u8 optc_en;
|
||||
u8 gain_en;
|
||||
@@ -236,11 +238,13 @@ struct rkispp_orb_config {
|
||||
* @module_ens: mask the enable value of each module, only update the module
|
||||
* which correspond bit was set in module_en_update
|
||||
* @module_cfg_update: mask the config bits of which module should be updated
|
||||
* @module_init_en: initial enable module function
|
||||
*/
|
||||
struct rkispp_params_cfg {
|
||||
u32 module_en_update;
|
||||
u32 module_ens;
|
||||
u32 module_cfg_update;
|
||||
u32 module_init_ens;
|
||||
|
||||
struct rkispp_tnr_config tnr_cfg;
|
||||
struct rkispp_nr_config nr_cfg;
|
||||
|
||||
Reference in New Issue
Block a user