media: rockchip: ispp: add rv1126 config

Change-Id: I2078d2143df5d7ad36914a32ab8fd9071cd4dbf0
Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
Cai YiWei
2020-01-02 17:12:25 +08:00
committed by Tao Huang
parent 1758971897
commit eaf335485b
3 changed files with 44 additions and 1 deletions

View File

@@ -239,7 +239,48 @@ err:
return ret;
}
static irqreturn_t rkispp_irq_hdl(int irq, void *ctx)
{
struct device *dev = ctx;
struct rkispp_device *ispp_dev = dev_get_drvdata(dev);
void __iomem *base = ispp_dev->base_addr;
unsigned int mis_val;
spin_lock(&ispp_dev->irq_lock);
mis_val = readl(base + RKISPP_CTRL_INT_STA);
writel(mis_val, base + RKISPP_CTRL_INT_CLR);
spin_unlock(&ispp_dev->irq_lock);
if (mis_val)
rkispp_isr(mis_val, ispp_dev);
return IRQ_HANDLED;
}
static const char * const rv1126_ispp_clks[] = {
"aclk_ispp",
"hclk_ispp",
"clk_ispp",
};
static struct ispp_irqs_data rv1126_ispp_irqs[] = {
{"ispp_irq", rkispp_irq_hdl},
{"fec_irq", rkispp_irq_hdl},
};
static const struct ispp_match_data rv1126_ispp_match_data = {
.clks = rv1126_ispp_clks,
.clks_num = ARRAY_SIZE(rv1126_ispp_clks),
.irqs = rv1126_ispp_irqs,
.num_irqs = ARRAY_SIZE(rv1126_ispp_irqs),
.ispp_ver = ISPP_V10,
};
static const struct of_device_id rkispp_plat_of_match[] = {
{
.compatible = "rockchip,rv1126-rkispp",
.data = &rv1126_ispp_match_data,
},
{},
};
@@ -317,6 +358,7 @@ static int rkispp_plat_probe(struct platform_device *pdev)
ispp_dev->ispp_ver = match_data->ispp_ver;
mutex_init(&ispp_dev->apilock);
spin_lock_init(&ispp_dev->irq_lock);
strlcpy(ispp_dev->media_dev.model, "rkispp",
sizeof(ispp_dev->media_dev.model));

View File

@@ -56,6 +56,8 @@ struct rkispp_device {
enum rkispp_ver ispp_ver;
/* mutex to serialize the calls from user */
struct mutex apilock;
/* lock for fec and ispp irq */
spinlock_t irq_lock;
u8 module_en[ISPP_MD_MAX];
enum rkispp_input inp;

View File

@@ -1341,7 +1341,6 @@ void rkispp_isr(u32 mis_val, struct rkispp_device *dev)
"isr:0x%x\n", mis_val);
vdev = &dev->stream_vdev;
writel(mis_val, base + RKISPP_CTRL_INT_CLR);
if (mis_val & err_mask)
v4l2_err(&dev->v4l2_dev,
"ispp err:0x%x\n", mis_val);