STRUCT TI_SCI_MSG_REQ_QUERY_CLOCK_FREQ(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct ti_sci_msg_req_query_clock_freq(9) ✨

okay bestie, so this is a page straight out of the Kernel API Manual, and it's literally all about one little struct that goes "hey, what's your frequency?" πŸŽ€ Yes, we're being that kind of nosy and it's iconic.


🌸 NAME 🌸

struct ti_sci_msg_req_query_clock_freq β€” the request you send when you wanna query a frequency, no cap πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

struct ti_sci_msg_req_query_clock_freq {
    struct ti_sci_msg_hdr hdr;
    u32 dev_id;
    u64 min_freq_hz;
    u64 target_freq_hz;
    u64 max_freq_hz;
    u8 clk_id;
    u32 clk_id_32;
 };

like… look at her. she's giving structured data main character energy πŸ‘‘


✨ DESCRIPTION ✨

πŸ’– Members πŸ’–

here's the cast, one by one, and yes every single one matters:

  • hdr β€” the Generic Header, aka the boring-but-essential opening act 🫢
  • dev_id β€” Device identifier this request is for. like, which device are we talking to, bestie? πŸ”
  • min_freq_hz β€” The minimum allowable frequency in Hz. and read this carefully: this is the minimum allowable programmed frequency, and it does not account for clock tolerances and jitter. so don't come for it later, okay? 😭
  • target_freq_hz β€” The target clock frequency. the system will find a frequency as close to this target frequency as possible β€” she tries her best, and honestly? that's all we ask πŸ’…
  • max_freq_hz β€” The maximum allowable frequency in Hz. same disclaimer as min: this is the maximum allowable programmed frequency and it does not account for clock tolerances and jitter. periodt ⚠️
  • clk_id β€” Clock identifier for the device for this request. Set to 255 if the clock identifier is greater than or equal to 255 πŸ•
  • clk_id_32 β€” the Clock identifier if clk_id is set to 255. that's the backup dancer for when the u8 can't hold the whole vibe 🩰

πŸ’€ NOTE πŸ’€

Normally, clock frequency management is automatically done by the TISCI entity β€” like, it handles itself, she's independent, we love that for her ✨

But in the case of specific requests, TISCI evaluates capability to achieve the requested frequency within the provided range and responds with a result message. so if you do come knocking, she checks whether she can actually deliver before she commits πŸ™ˆ

Request type is TI_SCI_MSG_QUERY_CLOCK_FREQ, and the response is the appropriate message β€” or a NACK in case of inability to satisfy the request. yes, a NACK. it's a no. take it gracefully bestie πŸ’”

πŸ”₯ SEE ALSO πŸ”₯

the whole friend group πŸ«‚ β€” Kernel file ./drivers/firmware/ti_sci.h, plus:

  • struct ti_sci_msg_hdr(9)
  • struct ti_sci_msg_resp_version(9)
  • struct ti_sci_msg_req_reboot(9)
  • struct ti_sci_msg_resp_query_fw_caps(9)
  • struct ti_sci_msg_req_set_device_state(9)
  • struct ti_sci_msg_req_get_device_state(9)
  • struct ti_sci_msg_resp_get_device_state(9)
  • struct ti_sci_msg_req_set_device_resets(9)
  • struct ti_sci_msg_req_set_clock_state(9)
  • struct ti_sci_msg_req_get_clock_state(9)
  • struct ti_sci_msg_resp_get_clock_state(9)
  • struct ti_sci_msg_req_set_clock_parent(9)
  • struct ti_sci_msg_req_get_clock_parent(9)
  • struct ti_sci_msg_resp_get_clock_parent(9)
  • struct ti_sci_msg_req_get_clock_num_parents(9)
  • struct ti_sci_msg_resp_get_clock_num_parents(9)
  • struct ti_sci_msg_resp_query_clock_freq(9)
  • struct ti_sci_msg_req_set_clock_freq(9)
  • struct ti_sci_msg_req_get_clock_freq(9)
  • struct ti_sci_msg_resp_get_clock_freq(9)
  • struct ti_sci_msg_req_prepare_sleep(9)
  • struct ti_sci_msg_req_set_io_isolation(9)
  • struct ti_sci_msg_resp_lpm_wake_reason(9)
  • struct ti_sci_msg_req_lpm_set_device_constraint(9)
  • struct ti_sci_msg_req_lpm_set_latency_constraint(9)
  • struct ti_sci_msg_req_get_resource_range(9)
  • struct ti_sci_msg_resp_get_resource_range(9)
  • struct ti_sci_msg_req_manage_irq(9)
  • struct ti_sci_msg_rm_ring_cfg_req(9)
  • struct ti_sci_msg_psil_pair(9)
  • struct ti_sci_msg_psil_unpair(9)
  • struct ti_sci_msg_udmap_rx_flow_cfg(9)
  • struct rm_ti_sci_msg_udmap_rx_flow_opt_cfg(9)
  • struct ti_sci_msg_rm_udmap_tx_ch_cfg_req(9)
  • struct ti_sci_msg_rm_udmap_rx_ch_cfg_req(9)
  • struct ti_sci_msg_rm_udmap_flow_cfg_req(9)
  • struct ti_sci_msg_req_proc_request(9)
  • struct ti_sci_msg_req_proc_release(9)
  • struct ti_sci_msg_req_proc_handover(9)
  • struct ti_sci_msg_req_set_config(9)
  • struct ti_sci_msg_req_set_ctrl(9)
  • struct ti_sci_msg_req_get_status(9)
  • struct ti_sci_msg_resp_get_status(9)

iykyk, that's a lot of structs and every single one is invited to the function πŸŽ‰


and that's the whole page, bestie πŸ“ she lives in ./drivers/firmware, she's dated October 2026, and the footer goes struct ti_sc...y_clock_freq(9) β€” so yeah, the abbreviated header showed up one last time to say bye πŸ’œ go query some frequencies, you got this 🧚✨

πŸ“¦ where this page comes from