media: i2c: rk628: post process add color bar debug node

Signed-off-by: Jianwei Fan <jianwei.fan@rock-chips.com>
Change-Id: I95072008c9033b92bcbd4f0c6b20a86df57ad2c4
This commit is contained in:
Jianwei Fan
2024-04-17 11:26:38 +08:00
committed by Tao Huang
parent 6d1aec8459
commit 0dd79cc549
4 changed files with 64 additions and 1 deletions

View File

@@ -18,6 +18,7 @@
#include "rk628_csi.h"
#include "rk628_dsi.h"
#include "rk628_hdmirx.h"
#include "rk628_post_process.h"
static const struct regmap_range rk628_cru_readable_ranges[] = {
regmap_reg_range(CRU_CPLL_CON0, CRU_CPLL_CON4),
@@ -493,6 +494,7 @@ void rk628_debugfs_create(struct rk628 *rk628)
rk628_debugfs_register_create(rk628);
rk628_dbg_en_node(rk628);
rk628_post_process_pattern_node(rk628);
}
EXPORT_SYMBOL(rk628_debugfs_create);

View File

@@ -52,6 +52,8 @@
#define GRF_AS_DSIPHY_MASK BIT(0)
#define GRF_AS_DSIPHY(x) UPDATE(x, 0, 0)
#define GRF_SCALER_CON0 0x0010
#define SCL_COLOR_VER_EN(x) HIWORD_UPDATE(x, 10, 10)
#define SCL_COLOR_BAR_EN(x) HIWORD_UPDATE(x, 9, 9)
#define SCL_VER_DOWN_MODE(x) HIWORD_UPDATE(x, 8, 8)
#define SCL_HOR_DOWN_MODE(x) HIWORD_UPDATE(x, 7, 7)
#define SCL_BIC_COE_SEL(x) HIWORD_UPDATE(x, 6, 5)

View File

@@ -1659,6 +1659,65 @@ static void rk628_post_process_csc(struct rk628 *rk628, bool is_output_full_rang
}
}
static int rk628_scaler_color_bar_show(struct seq_file *s, void *data)
{
seq_puts(s, " Enable horizontal color bar:\n");
seq_puts(s, " example: echo 1 > /sys/kernel/debug/rk628/5-0050/scaler_color_bar\n");
seq_puts(s, " Enable vertical color bar:\n");
seq_puts(s, " example: echo 2 > /sys/kernel/debug/rk628/5-0050/scaler_color_bar\n");
seq_puts(s, " Disable color bar:\n");
seq_puts(s, " example: echo 0 > /sys/kernel/debug/rk628/5-0050/scaler_color_bar\n");
return 0;
}
static int rk628_scaler_color_bar_open(struct inode *inode, struct file *file)
{
return single_open(file, rk628_scaler_color_bar_show, inode->i_private);
}
static ssize_t rk628_scaler_color_bar_write(struct file *file, const char __user *ubuf,
size_t len, loff_t *offp)
{
struct rk628 *rk628 = ((struct seq_file *)file->private_data)->private;
u8 mode;
if (kstrtou8_from_user(ubuf, len, 0, &mode))
return -EFAULT;
switch (mode) {
case 0:
rk628_i2c_write(rk628, GRF_SCALER_CON0, SCL_COLOR_BAR_EN(0));
break;
case 1:
rk628_i2c_write(rk628, GRF_SCALER_CON0, SCL_COLOR_BAR_EN(1));
rk628_i2c_write(rk628, GRF_SCALER_CON0, SCL_COLOR_VER_EN(0));
break;
case 2:
default:
rk628_i2c_write(rk628, GRF_SCALER_CON0, SCL_COLOR_BAR_EN(1));
rk628_i2c_write(rk628, GRF_SCALER_CON0, SCL_COLOR_VER_EN(1));
}
return len;
}
static const struct file_operations rk628_scaler_color_bar_fops = {
.owner = THIS_MODULE,
.open = rk628_scaler_color_bar_open,
.read = seq_read,
.write = rk628_scaler_color_bar_write,
.llseek = seq_lseek,
.release = single_release,
};
void rk628_post_process_pattern_node(struct rk628 *rk628)
{
debugfs_create_file("scaler_color_bar", 0600, rk628->debug_dir,
rk628, &rk628_scaler_color_bar_fops);
}
EXPORT_SYMBOL(rk628_post_process_pattern_node);
void rk628_post_process_csc_en(struct rk628 *rk628, bool output_full_range)
{
rk628_post_process_csc(rk628, output_full_range);

View File

@@ -9,5 +9,5 @@
void rk628_post_process_csc_en(struct rk628 *rk628, bool output_full_range);
void rk628_post_process_csc_dis(struct rk628 *rk628);
void rk628_post_process_pattern_node(struct rk628 *rk628);
#endif