i3c_device_do_xfers(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… i3c_device_do_xfers β€” the kernel API manual, bestie edition

Okay so you're in the i3c subsystem and you need to actually talk to one specific device? That's this one. Pull up a chair. 🫢

✨ NAME ✨

i3c_device_do_xfers β€” do I3C transfers directed to a specific device. That's the whole vibe: transfers, one device, no cap.

✨ SYNOPSIS ✨

int i3c_device_do_xfers (struct i3c_device *dev , struct i3c_xfer *xfers
, int nxfers , enum i3c_xfer_mode mode );

✨ ARGUMENTS ✨

  • dev β€” the device you're doing the transfers with. Your main character, basically. πŸ’–
  • xfers β€” an array of transfers. Yes, an array. Bring friends.
  • nxfers β€” how many transfers are in that array. Please be honest about this number. πŸ™ˆ
  • mode β€” the transfer mode. It's giving options.

✨ DESCRIPTION ✨

So basically this kicks off one or several private SDR transfers with dev. That's it, that's the function. ✨

Big warning, bestie: this function can sleep, and therefore it cannot be called in atomic context. Like, at all. Not the time or the place. 😭

✨ RETURN ✨

  • 0 in case of success β€” slay, you ate. πŸ’…
  • a negative error code otherwise (the page says "core" but we all know what it means 🫠).
  • -EAGAIN: the controller lost address arbitration. The Target (that's IBI, HJ or controller role request) win the bus. The client driver needs to resend the 5.1.2.2.3. Not me getting sniped mid-transfer πŸ’€ β€” just resend, you got this.

✨ SEE ALSO ✨

The kernel file is ./drivers/i3c/device.c, and the whole friend group is here:


And that's the whole page, bestie. πŸ¦‹ It lives in ./drivers/i3c, and this edition is dated October 2026 β€” so if you're reading it, hi from the future, drink some water, and go do those SDR transfers. Periodt. πŸŽ€

πŸ“¦ where this page comes from