drivers/hwtracing/coresight/coresight-config.h
Source file repositories/reference/linux-study-clean/drivers/hwtracing/coresight/coresight-config.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/hwtracing/coresight/coresight-config.h- Extension
.h- Size
- 8875 bytes
- Lines
- 263
- Domain
- Driver Families
- Bucket
- drivers/hwtracing
- 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
linux/coresight.hlinux/types.h
Detected Declarations
struct cscfg_parameter_descstruct cscfg_regval_descstruct cscfg_feature_descstruct cscfg_config_descstruct cscfg_regval_csdevstruct cscfg_parameter_csdevstruct cscfg_feature_csdevstruct cscfg_config_csdevstruct cscfg_csdev_feat_ops
Annotated Snippet
struct cscfg_parameter_desc {
const char *name;
u64 value;
};
/**
* Representation of register value and a descriptor of register usage.
*
* Used as a descriptor in the feature descriptors.
* Used as a value in when in a feature loading into a csdev.
*
* Supports full 64 bit register value, or 32 bit value with optional mask
* value.
*
* @type: define register usage and interpretation.
* @offset: the address offset for register in the hardware device (per device specification).
* @hw_info: optional hardware device type specific information. (ETM / CTI specific etc)
* @val64: 64 bit value.
* @val32: 32 bit value.
* @mask32: 32 bit mask when using 32 bit value to access device register - if mask type.
* @param_idx: parameter index value into parameter array if param type.
*/
struct cscfg_regval_desc {
struct {
u32 type:8;
u32 offset:12;
u32 hw_info:12;
};
union {
u64 val64;
struct {
u32 val32;
u32 mask32;
};
u32 param_idx;
};
};
/**
* Device feature descriptor - combination of registers and parameters to
* program a device to implement a specific complex function.
*
* @name: feature name.
* @description: brief description of the feature.
* @item: List entry.
* @match_flags: matching information if loading into a device
* @nr_params: number of parameters used.
* @params_desc: array of parameters used.
* @nr_regs: number of registers used.
* @regs_desc: array of registers used.
* @load_owner: handle to load owner for dynamic load and unload of features.
* @fs_group: reference to configfs group for dynamic unload.
*/
struct cscfg_feature_desc {
const char *name;
const char *description;
struct list_head item;
u32 match_flags;
int nr_params;
struct cscfg_parameter_desc *params_desc;
int nr_regs;
struct cscfg_regval_desc *regs_desc;
void *load_owner;
struct config_group *fs_group;
};
/**
* Configuration descriptor - describes selectable system configuration.
*
* A configuration describes device features in use, and may provide preset
* values for the parameters in those features.
*
* A single set of presets is the sum of the parameters declared by
* all the features in use - this value is @nr_total_params.
*
* @name: name of the configuration - used for selection.
* @description: description of the purpose of the configuration.
* @item: list entry.
* @nr_feat_refs: Number of features used in this configuration.
* @feat_ref_names: references to features used in this configuration.
* @nr_presets: Number of sets of presets supplied by this configuration.
* @nr_total_params: Sum of all parameters declared by used features
* @presets: Array of preset values.
* @event_ea: Extended attribute for perf event value
* @active_cnt: ref count for activate on this configuration.
* @load_owner: handle to load owner for dynamic load and unload of configs.
* @fs_group: reference to configfs group for dynamic unload.
* @available: config can be activated - multi-stage load sets true on completion.
*/
struct cscfg_config_desc {
Annotation
- Immediate include surface: `linux/coresight.h`, `linux/types.h`.
- Detected declarations: `struct cscfg_parameter_desc`, `struct cscfg_regval_desc`, `struct cscfg_feature_desc`, `struct cscfg_config_desc`, `struct cscfg_regval_csdev`, `struct cscfg_parameter_csdev`, `struct cscfg_feature_csdev`, `struct cscfg_config_csdev`, `struct cscfg_csdev_feat_ops`.
- Atlas domain: Driver Families / drivers/hwtracing.
- 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.