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.
- 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.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
../../include/linux/atomisp_platform.hlinux/firmware.hlinux/kernel.hlinux/pm_qos.hlinux/idr.hmedia/media-device.hmedia/v4l2-async.hmedia/v4l2-subdev.hia_css_types.hsh_css_legacy.hatomisp_csi2.hatomisp_subdev.hatomisp_compat.hgp_device.hirq.hlinux/vmalloc.h
Detected Declarations
struct atomisp_input_subdevstruct atomisp_regsstruct atomisp_deviceenum atomisp_dfs_mode
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
- Immediate include surface: `../../include/linux/atomisp_platform.h`, `linux/firmware.h`, `linux/kernel.h`, `linux/pm_qos.h`, `linux/idr.h`, `media/media-device.h`, `media/v4l2-async.h`, `media/v4l2-subdev.h`.
- Detected declarations: `struct atomisp_input_subdev`, `struct atomisp_regs`, `struct atomisp_device`, `enum atomisp_dfs_mode`.
- Atlas domain: Driver Families / drivers/staging.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.