drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_reg.h

Source file repositories/reference/linux-study-clean/drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_reg.h

File Facts

System
Linux kernel
Corpus path
drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_reg.h
Extension
.h
Size
10220 bytes
Lines
276
Domain
Driver Families
Bucket
drivers/staging
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

#ifndef _SUN6I_ISP_REG_H_
#define _SUN6I_ISP_REG_H_

#include <linux/kernel.h>

#define SUN6I_ISP_ADDR_VALUE(a)			((a) >> 2)

/* Frontend */

#define SUN6I_ISP_SRC_MODE_DRAM			0
#define SUN6I_ISP_SRC_MODE_CSI(n)		(1 + (n))

#define SUN6I_ISP_FE_CFG_REG			0x0
#define SUN6I_ISP_FE_CFG_EN			BIT(0)
#define SUN6I_ISP_FE_CFG_SRC0_MODE(v)		(((v) << 8) & GENMASK(9, 8))
#define SUN6I_ISP_FE_CFG_SRC1_MODE(v)		(((v) << 16) & GENMASK(17, 16))

#define SUN6I_ISP_FE_CTRL_REG			0x4
#define SUN6I_ISP_FE_CTRL_SCAP_EN		BIT(0)
#define SUN6I_ISP_FE_CTRL_VCAP_EN		BIT(1)
#define SUN6I_ISP_FE_CTRL_PARA_READY		BIT(2)
#define SUN6I_ISP_FE_CTRL_LUT_UPDATE		BIT(3)
#define SUN6I_ISP_FE_CTRL_LENS_UPDATE		BIT(4)
#define SUN6I_ISP_FE_CTRL_GAMMA_UPDATE		BIT(5)
#define SUN6I_ISP_FE_CTRL_DRC_UPDATE		BIT(6)
#define SUN6I_ISP_FE_CTRL_DISC_UPDATE		BIT(7)
#define SUN6I_ISP_FE_CTRL_OUTPUT_SPEED_CTRL(v)	(((v) << 16) & GENMASK(17, 16))
#define SUN6I_ISP_FE_CTRL_VCAP_READ_START	BIT(31)

#define SUN6I_ISP_FE_INT_EN_REG			0x8
#define SUN6I_ISP_FE_INT_EN_FINISH		BIT(0)
#define SUN6I_ISP_FE_INT_EN_START		BIT(1)
#define SUN6I_ISP_FE_INT_EN_PARA_SAVE		BIT(2)
#define SUN6I_ISP_FE_INT_EN_PARA_LOAD		BIT(3)
#define SUN6I_ISP_FE_INT_EN_SRC0_FIFO		BIT(4)
#define SUN6I_ISP_FE_INT_EN_SRC1_FIFO		BIT(5)
#define SUN6I_ISP_FE_INT_EN_ROT_FINISH		BIT(6)
#define SUN6I_ISP_FE_INT_EN_LINE_NUM_START	BIT(7)

#define SUN6I_ISP_FE_INT_STA_REG		0xc
#define SUN6I_ISP_FE_INT_STA_CLEAR		0xff
#define SUN6I_ISP_FE_INT_STA_FINISH		BIT(0)
#define SUN6I_ISP_FE_INT_STA_START		BIT(1)
#define SUN6I_ISP_FE_INT_STA_PARA_SAVE		BIT(2)
#define SUN6I_ISP_FE_INT_STA_PARA_LOAD		BIT(3)
#define SUN6I_ISP_FE_INT_STA_SRC0_FIFO		BIT(4)
#define SUN6I_ISP_FE_INT_STA_SRC1_FIFO		BIT(5)
#define SUN6I_ISP_FE_INT_STA_ROT_FINISH		BIT(6)
#define SUN6I_ISP_FE_INT_STA_LINE_NUM_START	BIT(7)

/* Only since sun9i-a80-isp. */
#define SUN6I_ISP_FE_INT_LINE_NUM_REG		0x18
#define SUN6I_ISP_FE_ROT_OF_CFG_REG		0x1c

/* Buffers/tables */

#define SUN6I_ISP_REG_LOAD_ADDR_REG		0x20
#define SUN6I_ISP_REG_SAVE_ADDR_REG		0x24

#define SUN6I_ISP_LUT_TABLE_ADDR_REG		0x28
#define SUN6I_ISP_DRC_TABLE_ADDR_REG		0x2c
#define SUN6I_ISP_STATS_ADDR_REG		0x30

/* SRAM */

#define SUN6I_ISP_SRAM_RW_OFFSET_REG		0x38
#define SUN6I_ISP_SRAM_RW_DATA_REG		0x3c

/* Global */

#define SUN6I_ISP_MODULE_EN_REG			0x40
#define SUN6I_ISP_MODULE_EN_AE			BIT(0)
#define SUN6I_ISP_MODULE_EN_OBC			BIT(1)
#define SUN6I_ISP_MODULE_EN_DPC_LUT		BIT(2)
#define SUN6I_ISP_MODULE_EN_DPC_OTF		BIT(3)
#define SUN6I_ISP_MODULE_EN_BDNF		BIT(4)
#define SUN6I_ISP_MODULE_EN_AWB			BIT(6)
#define SUN6I_ISP_MODULE_EN_WB			BIT(7)
#define SUN6I_ISP_MODULE_EN_LSC			BIT(8)
#define SUN6I_ISP_MODULE_EN_BGC			BIT(9)
#define SUN6I_ISP_MODULE_EN_SAP			BIT(10)
#define SUN6I_ISP_MODULE_EN_AF			BIT(11)
#define SUN6I_ISP_MODULE_EN_RGB2RGB		BIT(12)
#define SUN6I_ISP_MODULE_EN_RGB_DRC		BIT(13)
#define SUN6I_ISP_MODULE_EN_TDNF		BIT(15)
#define SUN6I_ISP_MODULE_EN_AFS			BIT(16)
#define SUN6I_ISP_MODULE_EN_HIST		BIT(17)
#define SUN6I_ISP_MODULE_EN_YUV_GAIN_OFFSET	BIT(18)
#define SUN6I_ISP_MODULE_EN_YUV_DRC		BIT(19)
#define SUN6I_ISP_MODULE_EN_TG			BIT(20)

Annotation

Implementation Notes