STRUCT I3C_CCC_CMD(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct i3c_ccc_cmd(9) β€” like, the CCC command struct, bestie

Okay so this page is from the Kernel API Manual, and it's literally all about struct i3c_ccc_cmd β€” the lil' container that holds one CCC command. Think of it as the main character of an I3C CCC transmission. No cap, it's giving "packet header but make it a struct." πŸŽ€


✨ NAME ✨

struct i3c_ccc_cmd β€” CCC command. That's it, that's the whole name. Short, iconic, to the point. πŸ‘‘


🌸 SYNOPSIS 🌸

struct i3c_ccc_cmd {
    u8 rnw;
    u8 id;
    unsigned int ndests;
    unsigned int retries;
    struct i3c_ccc_cmd_dest *dests;
    enum i3c_error_code err;
 };

Look at her. Six members, all business, zero filler. πŸ¦‹


πŸ’– Members πŸ’–

Okay so here's the breakdown, member by member, no skips:

  • rnw β€” true if the CCC should retrieve data from the device. 🫢 Big important caveat though: this is only valid for unicast commands. Broadcast? Sorry bestie, rnw doesn't apply there, periodt.
  • id β€” the CCC command id. The vibe check of "which command even is this."
  • ndests β€” number of destinations. And listen, for broadcast commands this should always be one. One. That's the whole rule. Don't be out here with ndests = 4 on a broadcast, I'm begging 😭
  • retries β€” number of times to retry a failed Direct GET CCC (see I3C_CCC_RETRIES). Persistence! She tries again! ✨
  • dests β€” array of destinations and associated payload for this CCC. Most of the time, only one destination is provided β€” lowkey the common case fr fr.
  • err β€” the I3C error code. enum i3c_error_code energy. If something goes sideways, this is where the tea gets spilled πŸ’€

πŸ¦‹ SEE ALSO πŸ¦‹

Kernel file ./include/linux/i3c/ccc.h β€” go read it, it's the source of truth, iykyk. Then all these siblings/cousins of the struct:

  • struct i3c_ccc_events(9)
  • struct i3c_ccc_mwl(9)
  • struct i3c_ccc_mrl(9)
  • struct i3c_ccc_dev_desc(9)
  • struct i3c_ccc_defslvs(9)
  • enum i3c_ccc_test_mode(9)
  • struct i3c_ccc_enttm(9)
  • struct i3c_ccc_setda(9)
  • struct i3c_ccc_getpid(9)
  • struct i3c_ccc_getbcr(9)
  • struct i3c_ccc_getdcr(9)
  • struct i3c_ccc_getstatus(9)
  • struct i3c_ccc_getaccmst(9)
  • struct i3c_ccc_bridged_slave_desc(9)
  • struct i3c_ccc_setbrgtgt(9)
  • enum i3c_sdr_max_data_rate(9)
  • enum i3c_tsco(9)
  • struct i3c_ccc_getmxds(9)
  • struct i3c_ccc_gethdrcap(9)
  • enum i3c_ccc_setxtime_subcmd(9)
  • struct i3c_ccc_setxtime(9)
  • struct i3c_ccc_getxtime(9)
  • struct i3c_ccc_cmd_payload(9)
  • struct i3c_ccc_cmd_dest(9)

That's the whole friend group, and honestly? Every single one of them ate. πŸ”₯


πŸ’œ Real talk though: this page is from the kernel tree at ./include/linux/i3c, and it's dated October 2026. So like, mark your calendars bestie, that's the version we're all living in. πŸ—“οΈ

Go forth and send your CCCs correctly, queen. πŸŒˆβ­πŸ’…

πŸ“¦ where this page comes from