drivers/soc/fsl/qbman/qman_ccsr.c
Source file repositories/reference/linux-study-clean/drivers/soc/fsl/qbman/qman_ccsr.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/soc/fsl/qbman/qman_ccsr.c- Extension
.c- Size
- 25238 bytes
- Lines
- 889
- Domain
- Driver Families
- Bucket
- drivers/soc
- Inferred role
- Driver Families: exported/initcall integration point
- Status
- integration 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.
- Exports symbols or registers init work; inspect boot/module ordering and who consumes the exported contract.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
qman_priv.h
Detected Declarations
struct qm_ecirstruct qm_ecir2struct qm_eadrstruct qman_hwerr_txtstruct qman_error_info_mdataenum qm_wq_classenum qm_memoryenum qm_dc_portalfunction qm_ecir_is_dcpfunction qm_ecir_get_pnumfunction qm_ecir_get_fqidfunction qm_ecir2_is_dcpfunction qm_ecir2_get_pnumfunction qm_eadr_get_memidfunction qm_eadr_get_eadrfunction qm_eadr_v3_get_memidfunction qm_eadr_v3_get_eadrfunction qm_ccsr_infunction qm_ccsr_outfunction qm_get_pools_sdqcrfunction qm_set_dcfunction qm_set_wq_schedulingfunction qm_set_hidfunction qm_set_corenet_initiatorfunction qm_get_versionfunction qm_set_memoryfunction qm_set_pfdr_thresholdfunction qm_set_sfdr_thresholdfunction qm_init_pfdrfunction zero_priv_memfunction qm_get_fqid_maxcntfunction log_edata_bitsfunction log_additional_error_infofunction qman_isrfunction qman_init_ccsrfunction __qman_liodn_fixupfunction qman_set_sdestfunction qman_resource_initfunction qman_is_probedfunction qman_requires_cleanupfunction qman_done_cleanupfunction fsl_qman_probeexport qman_ip_revexport qm_channel_pool1export qm_channel_caamexport qman_is_probed
Annotated Snippet
struct qm_ecir {
u32 info; /* res[30-31], ptyp[29], pnum[24-28], fqid[0-23] */
};
static bool qm_ecir_is_dcp(const struct qm_ecir *p)
{
return p->info & BIT(29);
}
static int qm_ecir_get_pnum(const struct qm_ecir *p)
{
return (p->info >> 24) & 0x1f;
}
static int qm_ecir_get_fqid(const struct qm_ecir *p)
{
return p->info & (BIT(24) - 1);
}
struct qm_ecir2 {
u32 info; /* ptyp[31], res[10-30], pnum[0-9] */
};
static bool qm_ecir2_is_dcp(const struct qm_ecir2 *p)
{
return p->info & BIT(31);
}
static int qm_ecir2_get_pnum(const struct qm_ecir2 *p)
{
return p->info & (BIT(10) - 1);
}
struct qm_eadr {
u32 info; /* memid[24-27], eadr[0-11] */
/* v3: memid[24-28], eadr[0-15] */
};
static int qm_eadr_get_memid(const struct qm_eadr *p)
{
return (p->info >> 24) & 0xf;
}
static int qm_eadr_get_eadr(const struct qm_eadr *p)
{
return p->info & (BIT(12) - 1);
}
static int qm_eadr_v3_get_memid(const struct qm_eadr *p)
{
return (p->info >> 24) & 0x1f;
}
static int qm_eadr_v3_get_eadr(const struct qm_eadr *p)
{
return p->info & (BIT(16) - 1);
}
struct qman_hwerr_txt {
u32 mask;
const char *txt;
};
static const struct qman_hwerr_txt qman_hwerr_txts[] = {
{ QM_EIRQ_CIDE, "Corenet Initiator Data Error" },
{ QM_EIRQ_CTDE, "Corenet Target Data Error" },
{ QM_EIRQ_CITT, "Corenet Invalid Target Transaction" },
{ QM_EIRQ_PLWI, "PFDR Low Watermark" },
{ QM_EIRQ_MBEI, "Multi-bit ECC Error" },
{ QM_EIRQ_SBEI, "Single-bit ECC Error" },
{ QM_EIRQ_PEBI, "PFDR Enqueues Blocked Interrupt" },
{ QM_EIRQ_ICVI, "Invalid Command Verb" },
{ QM_EIRQ_IFSI, "Invalid Flow Control State" },
{ QM_EIRQ_IDDI, "Invalid Dequeue (Direct-connect)" },
{ QM_EIRQ_IDFI, "Invalid Dequeue FQ" },
{ QM_EIRQ_IDSI, "Invalid Dequeue Source" },
{ QM_EIRQ_IDQI, "Invalid Dequeue Queue" },
{ QM_EIRQ_IECE, "Invalid Enqueue Configuration" },
{ QM_EIRQ_IEOI, "Invalid Enqueue Overflow" },
{ QM_EIRQ_IESI, "Invalid Enqueue State" },
{ QM_EIRQ_IECI, "Invalid Enqueue Channel" },
{ QM_EIRQ_IEQI, "Invalid Enqueue Queue" },
};
struct qman_error_info_mdata {
u16 addr_mask;
u16 bits;
const char *txt;
};
Annotation
- Immediate include surface: `qman_priv.h`.
- Detected declarations: `struct qm_ecir`, `struct qm_ecir2`, `struct qm_eadr`, `struct qman_hwerr_txt`, `struct qman_error_info_mdata`, `enum qm_wq_class`, `enum qm_memory`, `enum qm_dc_portal`, `function qm_ecir_is_dcp`, `function qm_ecir_get_pnum`.
- Atlas domain: Driver Families / drivers/soc.
- Implementation status: integration implementation candidate.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
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.