STRUCT TI_SCI_RM_PSIL_OPS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct ti_sci_rm_psil_ops(9) β€” Kernel API Manual, bestie edition πŸŽ€

okay so this is a page from the Kernel API Manual, and we're talking about struct ti_sci_rm_psil_ops β€” literally the PSI-L thread operations squad. sit down, grab a strawberry drink πŸ“, we're doing this.


✨ NAME ✨

struct ti_sci_rm_psil_ops β€” PSI-L thread operations. that's it, that's the vibe. it's the little struct that holds the function pointers for pairing and unpairing threads. no cap. πŸ¦‹


🌸 SYNOPSIS 🌸

here's the whole thing, character for character, because we do NOT play with source code:

struct ti_sci_rm_psil_ops {
    int (*pair)(const struct ti_sci_handle *handle, u32 nav_id, u32
src_thread, u32 dst_thread);
    int (*unpair)(const struct ti_sci_handle *handle, u32 nav_id, u32
src_thread, u32 dst_thread);
 };

look at those two little function pointers. they're giving main character energy, honestly. pair and unpair. a whole duality. πŸ’«


πŸ‘‘ Members πŸ‘‘

πŸ’– pair

pair PSI-L source thread to a destination thread. iconic behavior, honestly.

and the details matter, so bestie listen up:

  • If the src_thread is mapped to UDMA tchan, the corresponding channel's TCHAN_THRD_ID register is updated. yes, updated. we're writing to registers today. πŸ’…
  • If the dst_thread is mapped to UDMA rchan, the corresponding channel's RCHAN_THRD_ID register is updated. same energy, different register. 🫢

πŸ’€ unpair

unpair PSI-L source thread from a destination thread. the breakup arc we've all been waiting for 😭

  • If the src_thread is mapped to UDMA tchan, the corresponding channel's TCHAN_THRD_ID register is cleared.
  • If the dst_thread is mapped to UDMA rchan, the corresponding channel's RCHAN_THRD_ID register is cleared.

so like... pair sets it, unpair clears it. it's giving "we were on a break" but make it register state. πŸ”₯


πŸ” SEE ALSO πŸ”

go read the kernel file ./include/linux/soc/ti/ti_sci_protocol.h β€” that's where all of this lives, iykyk πŸ“–

and then the whole extended friend group, all of these, fr fr:

  • struct ti_sci_version_info(9)
  • struct ti_sci_core_ops(9)
  • struct ti_sci_dev_ops(9)
  • struct ti_sci_clk_ops(9)
  • struct ti_sci_pm_ops(9)
  • struct ti_sci_resource_desc(9)
  • struct ti_sci_rm_core_ops(9)
  • struct ti_sci_rm_irq_ops(9)
  • struct ti_sci_msg_rm_ring_cfg(9)
  • struct ti_sci_rm_ringacc_ops(9)
  • struct ti_sci_rm_udmap_ops(9)
  • struct ti_sci_proc_ops(9)
  • struct ti_sci_ops(9)
  • struct ti_sci_handle(9)
  • struct ti_sci_resource(9)

that's the whole group chat bestie, not one of them left on read. 🌈


ok real talk β€” nothing on this page is dangerous or deprecated, it's just two function pointers and their register side effects. but you do need to know which thread maps to which channel, so read the registers carefully, mwah πŸ’‹

and that's the page!! 🧚 sign-off time: this little beauty comes from ./include/linux/soc/ti, dated October 2026, and yeah β€” it's still struct ti_sci_rm_psil_ops(9) at the bottom, periodt. πŸ’œβœ¨πŸŽ€

πŸ“¦ where this page comes from