drivers/media/platform/ti/omap3isp/isp.h
Source file repositories/reference/linux-study-clean/drivers/media/platform/ti/omap3isp/isp.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/platform/ti/omap3isp/isp.h- Extension
.h- Size
- 10820 bytes
- Lines
- 368
- 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.
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
media/media-entity.hmedia/v4l2-async.hmedia/v4l2-device.hlinux/clk-provider.hlinux/device.hlinux/io.hlinux/platform_device.hlinux/wait.homap3isp.hispstat.hispccdc.hispreg.hispresizer.hisppreview.hispcsiphy.hispcsi2.hispccp2.h
Detected Declarations
struct regmapstruct isp_res_mappingstruct isp_regstruct isp_xclkstruct isp_devicestruct isp_async_subdevenum isp_mem_resourcesenum isp_sbl_resourceenum isp_subclk_resourceenum isp_xclk_idfunction v4l2_subdev_to_bus_cfgfunction isp_reg_readlfunction isp_reg_writelfunction isp_reg_clrfunction isp_reg_setfunction isp_reg_clr_setfunction isp_pad_buffer_type
Annotated Snippet
struct isp_res_mapping {
u32 isp_rev;
u32 offset[OMAP3_ISP_IOMEM_LAST];
u32 phy_type;
};
/*
* struct isp_reg - Structure for ISP register values.
* @reg: 32-bit Register address.
* @val: 32-bit Register value.
*/
struct isp_reg {
enum isp_mem_resources mmio_range;
u32 reg;
u32 val;
};
enum isp_xclk_id {
ISP_XCLK_A,
ISP_XCLK_B,
};
struct isp_xclk {
struct isp_device *isp;
struct clk_hw hw;
struct clk *clk;
enum isp_xclk_id id;
spinlock_t lock; /* Protects enabled and divider */
bool enabled;
unsigned int divider;
};
/*
* struct isp_device - ISP device structure.
* @dev: Device pointer specific to the OMAP3 ISP.
* @revision: Stores current ISP module revision.
* @irq_num: Currently used IRQ number.
* @mmio_base: Array with kernel base addresses for ioremapped ISP register
* regions.
* @mmio_hist_base_phys: Physical L4 bus address for ISP hist block register
* region.
* @syscon: Regmap for the syscon register space
* @syscon_offset: Offset of the CSIPHY control register in syscon
* @phy_type: ISP_PHY_TYPE_{3430,3630}
* @mapping: IOMMU mapping
* @stat_lock: Spinlock for handling statistics
* @isp_mutex: Mutex for serializing requests to ISP.
* @stop_failure: Indicates that an entity failed to stop.
* @crashed: Crashed ent_enum
* @has_context: Context has been saved at least once and can be restored.
* @ref_count: Reference count for handling multiple ISP requests.
* @cam_ick: Pointer to camera interface clock structure.
* @cam_mclk: Pointer to camera functional clock structure.
* @csi2_fck: Pointer to camera CSI2 complexIO clock structure.
* @l3_ick: Pointer to OMAP3 L3 bus interface clock.
* @xclks: External clocks provided by the ISP
* @irq: Currently attached ISP ISR callbacks information structure.
* @isp_af: Pointer to current settings for ISP AutoFocus SCM.
* @isp_hist: Pointer to current settings for ISP Histogram SCM.
* @isp_h3a: Pointer to current settings for ISP Auto Exposure and
* White Balance SCM.
* @isp_res: Pointer to current settings for ISP Resizer.
* @isp_prev: Pointer to current settings for ISP Preview.
* @isp_ccdc: Pointer to current settings for ISP CCDC.
* @platform_cb: ISP driver callback function pointers for platform code
*
* This structure is used to store the OMAP ISP Information.
*/
struct isp_device {
struct v4l2_device v4l2_dev;
struct v4l2_async_notifier notifier;
struct media_device media_dev;
struct device *dev;
u32 revision;
/* platform HW resources */
unsigned int irq_num;
void __iomem *mmio_base[OMAP3_ISP_IOMEM_LAST];
unsigned long mmio_hist_base_phys;
struct regmap *syscon;
u32 syscon_offset;
u32 phy_type;
struct dma_iommu_mapping *mapping;
/* ISP Obj */
spinlock_t stat_lock; /* common lock for statistic drivers */
struct mutex isp_mutex; /* For handling ref_count field */
Annotation
- Immediate include surface: `media/media-entity.h`, `media/v4l2-async.h`, `media/v4l2-device.h`, `linux/clk-provider.h`, `linux/device.h`, `linux/io.h`, `linux/platform_device.h`, `linux/wait.h`.
- Detected declarations: `struct regmap`, `struct isp_res_mapping`, `struct isp_reg`, `struct isp_xclk`, `struct isp_device`, `struct isp_async_subdev`, `enum isp_mem_resources`, `enum isp_sbl_resource`, `enum isp_subclk_resource`, `enum isp_xclk_id`.
- Atlas domain: Driver Families / drivers/media.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
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.