STRUCT TI_SCI_MSG_REQ_SET_CLOCK_STATE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct ti_s..._clock_state(9) β€” Kernel API Manual πŸ’–

okay bestie, this is the Kernel API Manual page for struct ti_sci_msg_req_set_clock_state, and it’s giving β€œformal clock-state request” energy ✨. No cap, every little flag and field is here.

🌸 NAME 🌸

struct ti_sci_msg_req_set_clock_state β€” Request to setup a Clock state πŸŽ€

✨ SYNOPSIS ✨

Here’s the struct layout, exactly as it is, bestie:

       struct ti_sci_msg_req_set_clock_state {
         #define MSG_FLAG_CLOCK_ALLOW_SSC                TI_SCI_MSG_FLAG(8);
         #define MSG_FLAG_CLOCK_ALLOW_FREQ_CHANGE        TI_SCI_MSG_FLAG(9);
         #define MSG_FLAG_CLOCK_INPUT_TERM               TI_SCI_MSG_FLAG(10);
           struct ti_sci_msg_hdr hdr;
           u32 dev_id;
           u8 clk_id;
         #define MSG_CLOCK_SW_STATE_UNREQ        0;
         #define MSG_CLOCK_SW_STATE_AUTO         1;
         #define MSG_CLOCK_SW_STATE_REQ          2;
           u8 request_state;
           u32 clk_id_32;
        };

🧚 Members 🧚

  • hdr β€” Generic Header, Certain flags can be set specific to the clocks:
    • MSG_FLAG_CLOCK_ALLOW_SSC β€” Allow this clock to be modified via spread spectrum clocking.
    • MSG_FLAG_CLOCK_ALLOW_FREQ_CHANGE β€” Allow this clock's frequency to be changed while it is running so long as it is within the min/max limits.
    • MSG_FLAG_CLOCK_INPUT_TERM β€” Enable input termination, this is only applicable to clock inputs on the SoC pseudo-device.
  • dev_id β€” Device identifier this request is for.
  • clk_id β€” Clock identifier for the device for this request. Each device has it's own set of clock inputs. This indexes which clock input to modify. Set to 255 if clock ID is greater than or equal to 255.
  • request_state β€” Request the state for the clock to be set to.
    • MSG_CLOCK_SW_STATE_UNREQ β€” The IP does not require this clock, it can be disabled, regardless of the state of the device.
    • MSG_CLOCK_SW_STATE_AUTO β€” Allow the System Controller to automatically manage the state of this clock. If the device is enabled, then the clock is enabled. If the device is set to off or retention, then the clock is internally set as not being required by the device. (default)
    • MSG_CLOCK_SW_STATE_REQ β€” Configure the clock to be enabled, regardless of the state of the device.
  • clk_id_32 β€” Clock identifier for the device for this request. Only to be used if the clock ID is greater than or equal to 255.

πŸ’… Description πŸ’…

Normally, all required clocks are managed by TISCI entity, this is used only for specific control IF required. Auto managed state is MSG_CLOCK_SW_STATE_AUTO, in other states, TISCI entity assume remote will explicitly control.

Request type is TI_SCI_MSG_SET_CLOCK_STATE, response is a generic ACK or NACK message. 🫢

πŸ‘‘ SEE ALSO πŸ‘‘

Kernel file ./drivers/firmware/ti_sci.h is the whole friend group β€” go say hi to:

  • 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_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_req_query_clock_freq(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)

Mwah πŸ’‹ β€” this page’s source/version is ./drivers/firmware, dated October 2026, and it’s the struct ti_s..._clock_state(9) manual. That’s the footer vibe, bestie β€” slay βœ¨πŸ¦‹πŸ’œ

πŸ“¦ where this page comes from