drivers/media/platform/qcom/camss/camss.h

Source file repositories/reference/linux-study-clean/drivers/media/platform/qcom/camss/camss.h

File Facts

System
Linux kernel
Corpus path
drivers/media/platform/qcom/camss/camss.h
Extension
.h
Size
4551 bytes
Lines
184
Domain
Driver Families
Bucket
drivers/media
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

struct camss_subdev_resources {
	struct regulator_bulk_data regulators[CAMSS_RES_MAX];
	char *clock[CAMSS_RES_MAX];
	char *clock_for_reset[CAMSS_RES_MAX];
	u32 clock_rate[CAMSS_RES_MAX][CAMSS_RES_MAX];
	char *reg[CAMSS_RES_MAX];
	char *interrupt[CAMSS_RES_MAX];
	union {
		struct csiphy_subdev_resources csiphy;
		struct tpg_subdev_resources tpg;
		struct csid_subdev_resources csid;
		struct vfe_subdev_resources vfe;
	};
};

struct icc_bw_tbl {
	u32 avg;
	u32 peak;
};

struct resources_icc {
	char *name;
	struct icc_bw_tbl icc_bw_tbl;
};

struct resources_wrapper {
	char *reg;
};

enum pm_domain {
	PM_DOMAIN_VFE0 = 0,
	PM_DOMAIN_VFE1 = 1,
	PM_DOMAIN_VFELITE = 2,		/* VFELITE / TOP GDSC */
};

enum camss_version {
	CAMSS_660,
	CAMSS_2290,
	CAMSS_6150,
	CAMSS_6350,
	CAMSS_7280,
	CAMSS_8x16,
	CAMSS_8x39,
	CAMSS_8x53,
	CAMSS_8x96,
	CAMSS_8250,
	CAMSS_8280XP,
	CAMSS_8300,
	CAMSS_845,
	CAMSS_8550,
	CAMSS_8650,
	CAMSS_8775P,
	CAMSS_X1E80100,
};

enum icc_count {
	ICC_DEFAULT_COUNT = 0,
	ICC_SM8250_COUNT = 4,
};

struct camss_resources {
	enum camss_version version;
	const char *pd_name;
	const struct camss_subdev_resources *csiphy_res;
	const struct camss_subdev_resources *tpg_res;
	const struct camss_subdev_resources *csid_res;
	const struct camss_subdev_resources *ispif_res;
	const struct camss_subdev_resources *vfe_res;
	const struct resources_wrapper *csid_wrapper_res;
	const struct resources_icc *icc_res;
	const unsigned int icc_path_num;
	const unsigned int csiphy_num;
	const unsigned int tpg_num;
	const unsigned int csid_num;
	const unsigned int vfe_num;
};

struct camss {
	struct v4l2_device v4l2_dev;
	struct v4l2_async_notifier notifier;
	struct media_device media_dev;
	struct device *dev;
	struct csiphy_device *csiphy;
	struct tpg_device *tpg;
	struct csid_device *csid;
	struct ispif_device *ispif;
	struct vfe_device *vfe;
	void __iomem *csid_wrapper_base;
	atomic_t ref_count;
	int genpd_num;

Annotation

Implementation Notes