drivers/staging/media/atomisp/pci/ia_css_3a.h
Source file repositories/reference/linux-study-clean/drivers/staging/media/atomisp/pci/ia_css_3a.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/staging/media/atomisp/pci/ia_css_3a.h- Extension
.h- Size
- 6092 bytes
- Lines
- 187
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/build_bug.hmath_support.htype_support.hia_css_types.hia_css_err.hsystem_global.h
Detected Declarations
struct ia_css_isp_3a_statisticsstruct ia_css_isp_3a_statistics_mapenum ia_css_3a_tables
Annotated Snippet
struct ia_css_isp_3a_statistics {
union {
struct {
ia_css_ptr s3a_tbl;
} dmem;
struct {
ia_css_ptr s3a_tbl_hi;
ia_css_ptr s3a_tbl_lo;
} vmem;
} data;
struct {
ia_css_ptr rgby_tbl;
} data_hmem;
u32 exp_id; /** exposure id, to match statistics to a frame,
see ia_css_event_public.h for more detail. */
u32 isp_config_id;/** Unique ID to track which config was actually applied to a particular frame */
ia_css_ptr data_ptr; /** pointer to base of all data */
u32 size; /** total size of all data */
u32 dmem_size;
u32 vmem_size; /** both lo and hi have this size */
u32 hmem_size;
};
#define SIZE_OF_DMEM_STRUCT \
(SIZE_OF_IA_CSS_PTR)
#define SIZE_OF_VMEM_STRUCT \
(2 * SIZE_OF_IA_CSS_PTR)
#define SIZE_OF_DATA_UNION \
(MAX(SIZE_OF_DMEM_STRUCT, SIZE_OF_VMEM_STRUCT))
#define SIZE_OF_DATA_HMEM_STRUCT \
(SIZE_OF_IA_CSS_PTR)
#define SIZE_OF_IA_CSS_ISP_3A_STATISTICS_STRUCT \
(SIZE_OF_DATA_UNION + \
SIZE_OF_DATA_HMEM_STRUCT + \
sizeof(uint32_t) + \
sizeof(uint32_t) + \
SIZE_OF_IA_CSS_PTR + \
4 * sizeof(uint32_t))
static_assert(sizeof(struct ia_css_isp_3a_statistics) == SIZE_OF_IA_CSS_ISP_3A_STATISTICS_STRUCT);
/* Map with host-side pointers to ISP-format statistics.
* These pointers can either be copies of ISP data or memory mapped
* ISP pointers.
* All of the data behind these pointers is allocated contiguously, the
* allocated pointer is stored in the data_ptr field. The other fields
* point into this one block of data.
*/
struct ia_css_isp_3a_statistics_map {
void *data_ptr; /** Pointer to start of memory */
struct ia_css_3a_output *dmem_stats;
u16 *vmem_stats_hi;
u16 *vmem_stats_lo;
struct ia_css_bh_table *hmem_stats;
u32 size; /** total size in bytes of data_ptr */
u32 data_allocated; /** indicate whether data_ptr
was allocated or not. */
};
/* @brief Copy and translate 3A statistics from an ISP buffer to a host buffer
* @param[out] host_stats Host buffer.
* @param[in] isp_stats ISP buffer.
* @return error value if temporary memory cannot be allocated
*
* This copies 3a statistics from an ISP pointer to a host pointer and then
* translates some of the statistics, details depend on which ISP binary is
* used.
* Always use this function, never copy the buffer directly.
*/
int
ia_css_get_3a_statistics(struct ia_css_3a_statistics *host_stats,
const struct ia_css_isp_3a_statistics *isp_stats);
/* @brief Translate 3A statistics from ISP format to host format.
* @param[out] host_stats host-format statistics
* @param[in] isp_stats ISP-format statistics
* @return None
*
* This function translates statistics from the internal ISP-format to
* the host-format. This function does not include an additional copy
* step.
* */
void
ia_css_translate_3a_statistics(
struct ia_css_3a_statistics *host_stats,
const struct ia_css_isp_3a_statistics_map *isp_stats);
Annotation
- Immediate include surface: `linux/build_bug.h`, `math_support.h`, `type_support.h`, `ia_css_types.h`, `ia_css_err.h`, `system_global.h`.
- Detected declarations: `struct ia_css_isp_3a_statistics`, `struct ia_css_isp_3a_statistics_map`, `enum ia_css_3a_tables`.
- 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.