STRUCT EMIF_PLATFORM_DATA(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ struct emif_platform_data(9) πŸŽ€

okay so first things first: this is a page from the Kernel API Manual, section 9, and it's all about struct emif_platform_data β€” bestie, it's the little bundle of info you hand over when an EMIF platform device gets created, and it's literally what the driver reads from. no cap.


✨ NAME ✨

struct emif_platform_data β€” the platform data you pass along when an EMIF platform device is created. the driver is the one using it, so don't give it junk πŸ’…


🌸 SYNOPSIS 🌸

struct emif_platform_data {
    u32 hw_caps;
    struct ddr_device_info *device_info;
    const struct lpddr2_timings *timings;
    u32 timings_arr_size;
    const struct lpddr2_min_tck *min_tck;
    struct emif_custom_configs *custom_configs;
    u32 ip_rev;
    u32 phy_type;
 };

that's the whole squad, right there πŸ‘‘ (yes, the closing brace in the original has a lil extra space before it β€” we keep our faves exactly as they are 🫢)


πŸ’– Members πŸ’–

  • hw_caps β€” the hardware capabilities of the EMIF IP inside whichever SoC you're on. it's giving "know your own specs before you flex" ✨
  • device_info β€” a pointer to the device info structure, packed with the good stuff: type, bus width, density, etc. the whole vibe check on the memory device 🌸
  • timings β€” the timings info straight from the device datasheet, passed as an array of struct lpddr2_timings. it can be NULL if the default timings are fine for you β€” lowkey liberating tbh πŸ¦‹
  • timings_arr_size β€” the size of the timings array. it depends on how many different frequencies you're providing timings data for. number goes up, array goes up, iykyk πŸ”₯
  • min_tck β€” the minimum value of some timing parameters, expressed in number of cycles. also NULL-able if the default values are okay. icon behaviour honestly πŸ’…
  • custom_configs β€” the custom configurations requested by SoC or board code, plus the data for them. can be NULL if the default configurations that the driver does are fine. for the extra detail, the page says to see the documentation for struct emif_custom_configs β€” go read that one too bestie, it's worth it πŸ“–
  • ip_rev β€” a u32 field in the struct. (the page itself doesn't describe it, so i'm not gonna make something up β€” mystery main character energy πŸ•΅οΈβ€β™€οΈ)
  • phy_type β€” another u32 field. same situation, no description in the source. it's giving silent but present πŸ’€
also worth saying: the Members list in the source is declared right inside this struct page, so everything above lives in the struct in the SYNOPSIS. no new fields, no missing fields. periodt.

πŸ” SEE ALSO πŸ”

  • the kernel file ./include/linux/platform_data/emif_plat.h
  • struct ddr_device_info(9)
  • struct emif_custom_configs(9)

and that's the whole page! πŸ’œ little sign-off for you: this one lives under ./include/linux/platform_data, and the date on it is October 2026. go forth and pass your platform data correctly, bestie β€” slay πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from