mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
media: rockchip: isp: add isp reg cache read/write api
Change-Id: I9db97c3ae4dc3f0a9418f427026a5689ee73750f Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
@@ -58,16 +58,6 @@ u32 rkisp_next_read(struct rkisp_device *dev, u32 reg, bool is_direct)
|
||||
return val;
|
||||
}
|
||||
|
||||
u32 rkisp_read_reg_cache(struct rkisp_device *dev, u32 reg)
|
||||
{
|
||||
return *(u32 *)(dev->sw_base_addr + reg);
|
||||
}
|
||||
|
||||
u32 rkisp_next_read_reg_cache(struct rkisp_device *dev, u32 reg)
|
||||
{
|
||||
return *(u32 *)(dev->sw_base_addr + RKISP_ISP_SW_MAX_SIZE + reg);
|
||||
}
|
||||
|
||||
void rkisp_set_bits(struct rkisp_device *dev, u32 reg, u32 mask, u32 val, bool is_direct)
|
||||
{
|
||||
u32 tmp = rkisp_read(dev, reg, is_direct) & ~mask;
|
||||
@@ -96,6 +86,59 @@ void rkisp_next_clear_bits(struct rkisp_device *dev, u32 reg, u32 mask, bool is_
|
||||
rkisp_next_write(dev, reg, tmp & ~mask, is_direct);
|
||||
}
|
||||
|
||||
void rkisp_write_reg_cache(struct rkisp_device *dev, u32 reg, u32 val)
|
||||
{
|
||||
u32 *mem = dev->sw_base_addr + reg;
|
||||
|
||||
*mem = val;
|
||||
}
|
||||
|
||||
void rkisp_next_write_reg_cache(struct rkisp_device *dev, u32 reg, u32 val)
|
||||
{
|
||||
u32 offset = RKISP_ISP_SW_MAX_SIZE + reg;
|
||||
u32 *mem = dev->sw_base_addr + offset;
|
||||
|
||||
*mem = val;
|
||||
}
|
||||
|
||||
u32 rkisp_read_reg_cache(struct rkisp_device *dev, u32 reg)
|
||||
{
|
||||
return *(u32 *)(dev->sw_base_addr + reg);
|
||||
}
|
||||
|
||||
u32 rkisp_next_read_reg_cache(struct rkisp_device *dev, u32 reg)
|
||||
{
|
||||
return *(u32 *)(dev->sw_base_addr + RKISP_ISP_SW_MAX_SIZE + reg);
|
||||
}
|
||||
|
||||
void rkisp_set_reg_cache_bits(struct rkisp_device *dev, u32 reg, u32 mask, u32 val)
|
||||
{
|
||||
u32 tmp = rkisp_read_reg_cache(dev, reg) & ~mask;
|
||||
|
||||
rkisp_write_reg_cache(dev, reg, val | tmp);
|
||||
}
|
||||
|
||||
void rkisp_next_set_reg_cache_bits(struct rkisp_device *dev, u32 reg, u32 mask, u32 val)
|
||||
{
|
||||
u32 tmp = rkisp_next_read_reg_cache(dev, reg) & ~mask;
|
||||
|
||||
rkisp_next_write_reg_cache(dev, reg, val | tmp);
|
||||
}
|
||||
|
||||
void rkisp_clear_reg_cache_bits(struct rkisp_device *dev, u32 reg, u32 mask)
|
||||
{
|
||||
u32 tmp = rkisp_read_reg_cache(dev, reg);
|
||||
|
||||
rkisp_write_reg_cache(dev, reg, tmp & ~mask);
|
||||
}
|
||||
|
||||
void rkisp_next_clear_reg_cache_bits(struct rkisp_device *dev, u32 reg, u32 mask)
|
||||
{
|
||||
u32 tmp = rkisp_next_read_reg_cache(dev, reg);
|
||||
|
||||
rkisp_next_write_reg_cache(dev, reg, tmp & ~mask);
|
||||
}
|
||||
|
||||
void rkisp_update_regs(struct rkisp_device *dev, u32 start, u32 end)
|
||||
{
|
||||
void __iomem *base = dev->hw_dev->base_addr;
|
||||
|
||||
@@ -160,16 +160,25 @@ static inline struct vb2_queue *to_vb2_queue(struct file *file)
|
||||
|
||||
void rkisp_write(struct rkisp_device *dev, u32 reg, u32 val, bool is_direct);
|
||||
u32 rkisp_read(struct rkisp_device *dev, u32 reg, bool is_direct);
|
||||
u32 rkisp_read_reg_cache(struct rkisp_device *dev, u32 reg);
|
||||
void rkisp_set_bits(struct rkisp_device *dev, u32 reg, u32 mask, u32 val, bool is_direct);
|
||||
void rkisp_clear_bits(struct rkisp_device *dev, u32 reg, u32 mask, bool is_direct);
|
||||
|
||||
void rkisp_write_reg_cache(struct rkisp_device *dev, u32 reg, u32 val);
|
||||
u32 rkisp_read_reg_cache(struct rkisp_device *dev, u32 reg);
|
||||
void rkisp_set_reg_cache_bits(struct rkisp_device *dev, u32 reg, u32 mask, u32 val);
|
||||
void rkisp_clear_reg_cache_bits(struct rkisp_device *dev, u32 reg, u32 mask);
|
||||
|
||||
/* for dual isp, config for next isp reg */
|
||||
void rkisp_next_write(struct rkisp_device *dev, u32 reg, u32 val, bool is_direct);
|
||||
u32 rkisp_next_read(struct rkisp_device *dev, u32 reg, bool is_direct);
|
||||
u32 rkisp_next_read_reg_cache(struct rkisp_device *dev, u32 reg);
|
||||
void rkisp_next_set_bits(struct rkisp_device *dev, u32 reg, u32 mask, u32 val, bool is_direct);
|
||||
void rkisp_next_clear_bits(struct rkisp_device *dev, u32 reg, u32 mask, bool is_direct);
|
||||
|
||||
void rkisp_next_write_reg_cache(struct rkisp_device *dev, u32 reg, u32 val);
|
||||
u32 rkisp_next_read_reg_cache(struct rkisp_device *dev, u32 reg);
|
||||
void rkisp_next_set_reg_cache_bits(struct rkisp_device *dev, u32 reg, u32 mask, u32 val);
|
||||
void rkisp_next_clear_reg_cache_bits(struct rkisp_device *dev, u32 reg, u32 mask);
|
||||
|
||||
static inline void
|
||||
rkisp_unite_write(struct rkisp_device *dev, u32 reg, u32 val, bool is_direct, bool is_unite)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user