Commit 7b8f3e2d authored by Andrew F. Davis's avatar Andrew F. Davis
Browse files

ti: k3: drivers: ti_sci: Add support for Core control



Since system controller now has control over SoC power management, core
operation such as reset need to be explicitly requested to reboot the SoC.
Add support for this here.
Signed-off-by: default avatarAndrew F. Davis <afd@ti.com>
Reviewed-by: default avatarAndreas Dannenberg <dannenberg@ti.com>
parent 6d1dfef6
......@@ -1117,6 +1117,41 @@ int ti_sci_clock_get_freq(uint32_t dev_id, uint8_t clk_id, uint64_t *freq)
return 0;
}
/**
* ti_sci_core_reboot() - Command to request system reset
*
* Return: 0 if all goes well, else appropriate error message
*/
int ti_sci_core_reboot(void)
{
struct ti_sci_msg_req_reboot req;
struct ti_sci_msg_hdr resp;
struct ti_sci_xfer xfer;
int ret;
ret = ti_sci_setup_one_xfer(TI_SCI_MSG_SYS_RESET,
TI_SCI_FLAG_REQ_ACK_ON_PROCESSED,
&req, sizeof(req),
&resp, sizeof(resp),
&xfer);
if (ret) {
ERROR("Message alloc failed (%d)\n", ret);
return ret;
}
ret = ti_sci_do_xfer(&xfer);
if (ret) {
ERROR("Transfer send failed (%d)\n", ret);
return ret;
}
if (!ti_sci_is_response_ack(&resp))
return -ENODEV;
return 0;
}
/**
* ti_sci_init() - Basic initialization
*
......
......@@ -152,6 +152,15 @@ int ti_sci_clock_set_freq(uint32_t dev_id, uint8_t clk_id,
uint64_t max_freq);
int ti_sci_clock_get_freq(uint32_t dev_id, uint8_t clk_id, uint64_t *freq);
/**
* Core control operations
*
* - ti_sci_core_reboot() - Command to request system reset
*
* Return: 0 if all went well, else returns appropriate error value.
*/
int ti_sci_core_reboot(void);
/**
* ti_sci_init() - Basic initialization
*
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment