drivers/staging/media/atomisp/pci/atomisp_internal.h

Source file repositories/reference/linux-study-clean/drivers/staging/media/atomisp/pci/atomisp_internal.h

File Facts

System
Linux kernel
Corpus path
drivers/staging/media/atomisp/pci/atomisp_internal.h
Extension
.h
Size
5728 bytes
Lines
218
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

struct atomisp_input_subdev {
	enum atomisp_camera_port port;
	u32 code; /* MEDIA_BUS_FMT_* */
	bool binning_support;
	bool crop_support;
	bool sensor_on;
	struct v4l2_subdev *sensor;
	struct v4l2_subdev *sensor_isp;
	struct v4l2_subdev *csi_port;
	struct v4l2_subdev *csi_remote_source;
	/* Sensor rects for sensors which support crop */
	struct v4l2_rect native_rect;
	struct v4l2_rect active_rect;
	/* Sensor state for which == V4L2_SUBDEV_FORMAT_TRY calls */
	struct v4l2_subdev_state *try_sd_state;
};

enum atomisp_dfs_mode {
	ATOMISP_DFS_MODE_AUTO = 0,
	ATOMISP_DFS_MODE_LOW,
	ATOMISP_DFS_MODE_MAX,
};

struct atomisp_regs {
	/* PCI config space info */
	u16 pcicmdsts;
	u32 ispmmadr;
	u32 msicap;
	u32 msi_addr;
	u16 msi_data;
	u8 intr;
	u32 interrupt_control;
	u32 pmcs;
	u32 cg_dis;
	u32 i_control;

	/* I-Unit PHY related info */
	u32 csi_rcomp_config;
	u32 csi_afe_dly;
	u32 csi_control;

	/* New for MRFLD */
	u32 csi_afe_rcomp_config;
	u32 csi_afe_hs_control;
	u32 csi_deadline_control;
	u32 csi_access_viol;
};

/*
 * ci device struct
 */
struct atomisp_device {
	struct device *dev;
	struct v4l2_device v4l2_dev;
	struct media_device media_dev;
	struct atomisp_sub_device asd;
	struct v4l2_async_notifier notifier;
	void *mmu_l1_base;
	void __iomem *base;
	const struct firmware *firmware;

	struct dev_pm_domain pm_domain;
	struct pm_qos_request pm_qos;
	s32 max_isr_latency;
	bool pm_only;

	struct atomisp_mipi_csi2_device csi2_port[ATOMISP_CAMERA_NR_PORTS];

	/* Purpose of mutex is to protect and serialize use of isp data
	 * structures and css API calls. */
	struct mutex mutex;

	/*
	 * Number of lanes used by each sensor per port.
	 * Note this is indexed by mipi_port_id not atomisp_camera_port.
	 */
	int sensor_lanes[N_MIPI_PORT_ID];
	struct v4l2_subdev *sensor_subdevs[ATOMISP_CAMERA_NR_PORTS];
	unsigned int input_cnt;
	struct atomisp_input_subdev inputs[ATOM_ISP_MAX_INPUTS];

	struct atomisp_regs saved_regs;
	struct atomisp_css_env css_env;

	bool isp_fatal_error;
	struct work_struct assert_recovery_work;

	spinlock_t lock; /* Protects asd.streaming */

	const struct atomisp_dfs_config *dfs;

Annotation

Implementation Notes