STRUCT FSL_MC_DEVICE(9)
π NAME π
okay so bestie, welcome to the struct fsl_mc_device(9) glow-up β this is the MC object device object. that's it, that's the name, it's giving "device object for MC object devices" and honestly she ate π
this page lives in the Kernel API Manual and it's all about one little struct, so grab a strawberry drink π and let's go.
β¨ SYNOPSIS β¨
struct fsl_mc_device {
struct device dev;
u64 dma_mask;
u16 flags;
u32 icid;
u16 mc_handle;
struct fsl_mc_io *mc_io;
struct fsl_mc_obj_desc obj_desc;
struct resource *regions;
struct fsl_mc_device_irq **irqs;
struct fsl_mc_resource *resource;
struct device_link *consumer_link;
};
look at her. all those fields. main character energy fr fr π
π Members π
every field gets her moment, no crumbs:
devβ the Linux driver model device object. the literal foundation of the whole thing, iconic.dma_maskβ the default DMA mask. yes ma'am, set your mask πflagsβ MC object device flags. little flags, big vibes.icidβ the isolation context ID for the device. think of it as her designated safe space πmc_handleβ the MC handle for the corresponding MC object opened. it's the handle, bestie, hold it gently π«Άmc_ioβ pointer to the MC IO object assigned to this device, orNULLif none. so like... it might be there, it might not be, no pressure.obj_descβ the MC description of the DPAA device. it's giving "describe yourself in one struct" β¨regionsβ pointer to an array of MMIO region entries. plural. an array. a whole lil collection πΈirqsβ pointer to an array of pointers to interrupts allocated to this device. pointer-to-pointer-to-interrupt realness, we love a nested situation πresourceβ the generic resource associated with this MC object device, if any. "if any" β she's flexible, she's chill.
π¦ Description π¦
this is the generic device object for MC object devices that are "attached" to an MC bus. that's the whole vibe: generic, attached, living her MC bus life π
π₯ NOTES π₯
okay bestie, these are the important bits, pay attention, i'm serious π
- For a non-DPRC object, its
icidis the same as its parent DPRC'sicid. so she literally inherited it. generational π - The SMMU notifier callback gets invoked after
device_addhas been called for an MC object device, but before the device-specific probe callback gets called. timing is everything, ngl β get that order wrong and it's not cute. DP_OBJ_DPRCobjects are the only MC objects that have built-in MC portals. for all other MC objects, their device drivers are responsible for allocating MC portals for them by callingfsl_mc_portal_allocate. like, no portal for you unless you build one yourself, sorry babe π- Some types of MC objects (e.g.,
DP_OBJ_DPBP,DP_OBJ_DPCON) are treated as resources that can be allocated/deallocated from the corresponding resource pool in the object's parent DPRC, using thefsl_mc_object_allocate/fsl_mc_object_freefunctions. these MC objects are known as "allocatable" objects. For them, the correspondingfsl_mc_device's'resource'points to the associated resource object. For MC objects that are not allocatable (e.g.,DP_OBJ_DPRC,DP_OBJ_DPNI),
yeah π the page itself cuts off right there, mid-sentence, with that trailing comma. that's genuinely all the original gives us β no cap, i'm not hiding anything from you bestie. if it's not in the source, it's not in my rewrite. periodt. π
β SEE ALSO β
go read these next, i'm obsessed with a well-linked manpage:
- Kernel file
./include/linux/fsl/mc.h struct fsl_mc_driver(9)enum fsl_mc_pool_type(9)struct fsl_mc_resource(9)struct fsl_mc_device_irq(9)struct fsl_mc_obj_desc(9)struct fsl_mc_io(9)struct fsl_mc_version(9)struct dpbp_attr(9)struct dpcon_attr(9)struct dpcon_notification_cfg(9)
and that's the page!! π§ source is ./include/linux/fsl, dated October 2026, and she's filed right back under struct fsl_mc_device(9) β slay, bye bestie πβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms