mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-19 19:34:35 +00:00
firmware: ti_sci: Modify auth_boot TI-SCI API to match new version
SYSFW version 2019.01 introduces a slightly modified version of this API, add support for it here. Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Andreas Dannenberg <dannenberg@ti.com>
This commit is contained in:
parent
32ca8ffd5b
commit
ff6043a5fd
3 changed files with 25 additions and 13 deletions
|
@ -1915,16 +1915,19 @@ static int ti_sci_cmd_set_proc_boot_ctrl(const struct ti_sci_handle *handle,
|
||||||
* ti_sci_cmd_proc_auth_boot_image() - Command to authenticate and load the
|
* ti_sci_cmd_proc_auth_boot_image() - Command to authenticate and load the
|
||||||
* image and then set the processor configuration flags.
|
* image and then set the processor configuration flags.
|
||||||
* @handle: Pointer to TI SCI handle
|
* @handle: Pointer to TI SCI handle
|
||||||
* @proc_id: Processor ID this request is for
|
* @image_addr: Memory address at which payload image and certificate is
|
||||||
* @cert_addr: Memory address at which payload image certificate is located.
|
* located in memory, this is updated if the image data is
|
||||||
|
* moved during authentication.
|
||||||
|
* @image_size: This is updated with the final size of the image after
|
||||||
|
* authentication.
|
||||||
*
|
*
|
||||||
* Return: 0 if all went well, else returns appropriate error value.
|
* Return: 0 if all went well, else returns appropriate error value.
|
||||||
*/
|
*/
|
||||||
static int ti_sci_cmd_proc_auth_boot_image(const struct ti_sci_handle *handle,
|
static int ti_sci_cmd_proc_auth_boot_image(const struct ti_sci_handle *handle,
|
||||||
u8 proc_id, u64 cert_addr)
|
u64 *image_addr, u32 *image_size)
|
||||||
{
|
{
|
||||||
struct ti_sci_msg_req_proc_auth_boot_image req;
|
struct ti_sci_msg_req_proc_auth_boot_image req;
|
||||||
struct ti_sci_msg_hdr *resp;
|
struct ti_sci_msg_resp_proc_auth_boot_image *resp;
|
||||||
struct ti_sci_info *info;
|
struct ti_sci_info *info;
|
||||||
struct ti_sci_xfer *xfer;
|
struct ti_sci_xfer *xfer;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
@ -1944,9 +1947,8 @@ static int ti_sci_cmd_proc_auth_boot_image(const struct ti_sci_handle *handle,
|
||||||
dev_err(info->dev, "Message alloc failed(%d)\n", ret);
|
dev_err(info->dev, "Message alloc failed(%d)\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
req.processor_id = proc_id;
|
req.cert_addr_low = *image_addr & TISCI_ADDR_LOW_MASK;
|
||||||
req.cert_addr_low = cert_addr & TISCI_ADDR_LOW_MASK;
|
req.cert_addr_high = (*image_addr & TISCI_ADDR_HIGH_MASK) >>
|
||||||
req.cert_addr_high = (cert_addr & TISCI_ADDR_HIGH_MASK) >>
|
|
||||||
TISCI_ADDR_HIGH_SHIFT;
|
TISCI_ADDR_HIGH_SHIFT;
|
||||||
|
|
||||||
ret = ti_sci_do_xfer(info, xfer);
|
ret = ti_sci_do_xfer(info, xfer);
|
||||||
|
@ -1955,10 +1957,15 @@ static int ti_sci_cmd_proc_auth_boot_image(const struct ti_sci_handle *handle,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
resp = (struct ti_sci_msg_hdr *)xfer->tx_message.buf;
|
resp = (struct ti_sci_msg_resp_proc_auth_boot_image *)xfer->tx_message.buf;
|
||||||
|
|
||||||
if (!ti_sci_is_response_ack(resp))
|
if (!ti_sci_is_response_ack(resp))
|
||||||
ret = -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
|
*image_addr = (resp->image_addr_low & TISCI_ADDR_LOW_MASK) |
|
||||||
|
(((u64)resp->image_addr_high <<
|
||||||
|
TISCI_ADDR_HIGH_SHIFT) & TISCI_ADDR_HIGH_MASK);
|
||||||
|
*image_size = resp->image_size;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -708,7 +708,6 @@ struct ti_sci_msg_req_set_proc_boot_ctrl {
|
||||||
/**
|
/**
|
||||||
* struct ti_sci_msg_req_proc_auth_start_image - Authenticate and start image
|
* struct ti_sci_msg_req_proc_auth_start_image - Authenticate and start image
|
||||||
* @hdr: Generic Header
|
* @hdr: Generic Header
|
||||||
* @processor_id: ID of processor
|
|
||||||
* @cert_addr_low: Lower 32bit (Little Endian) of certificate
|
* @cert_addr_low: Lower 32bit (Little Endian) of certificate
|
||||||
* @cert_addr_high: Higher 32bit (Little Endian) of certificate
|
* @cert_addr_high: Higher 32bit (Little Endian) of certificate
|
||||||
*
|
*
|
||||||
|
@ -717,11 +716,17 @@ struct ti_sci_msg_req_set_proc_boot_ctrl {
|
||||||
*/
|
*/
|
||||||
struct ti_sci_msg_req_proc_auth_boot_image {
|
struct ti_sci_msg_req_proc_auth_boot_image {
|
||||||
struct ti_sci_msg_hdr hdr;
|
struct ti_sci_msg_hdr hdr;
|
||||||
u8 processor_id;
|
|
||||||
u32 cert_addr_low;
|
u32 cert_addr_low;
|
||||||
u32 cert_addr_high;
|
u32 cert_addr_high;
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
|
struct ti_sci_msg_resp_proc_auth_boot_image {
|
||||||
|
struct ti_sci_msg_hdr hdr;
|
||||||
|
u32 image_addr_low;
|
||||||
|
u32 image_addr_high;
|
||||||
|
u32 image_size;
|
||||||
|
} __packed;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct ti_sci_msg_req_get_proc_boot_status - Get processor boot status
|
* struct ti_sci_msg_req_get_proc_boot_status - Get processor boot status
|
||||||
* @hdr: Generic Header
|
* @hdr: Generic Header
|
||||||
|
|
|
@ -279,8 +279,8 @@ struct ti_sci_proc_ops {
|
||||||
u64 bv, u32 cfg_set, u32 cfg_clr);
|
u64 bv, u32 cfg_set, u32 cfg_clr);
|
||||||
int (*set_proc_boot_ctrl)(const struct ti_sci_handle *handle, u8 pid,
|
int (*set_proc_boot_ctrl)(const struct ti_sci_handle *handle, u8 pid,
|
||||||
u32 ctrl_set, u32 ctrl_clr);
|
u32 ctrl_set, u32 ctrl_clr);
|
||||||
int (*proc_auth_boot_image)(const struct ti_sci_handle *handle, u8 pid,
|
int (*proc_auth_boot_image)(const struct ti_sci_handle *handle,
|
||||||
u64 caddr);
|
u64 *image_addr, u32 *image_size);
|
||||||
int (*get_proc_boot_status)(const struct ti_sci_handle *handle, u8 pid,
|
int (*get_proc_boot_status)(const struct ti_sci_handle *handle, u8 pid,
|
||||||
u64 *bv, u32 *cfg_flags, u32 *ctrl_flags,
|
u64 *bv, u32 *cfg_flags, u32 *ctrl_flags,
|
||||||
u32 *sts_flags);
|
u32 *sts_flags);
|
||||||
|
|
Loading…
Add table
Reference in a new issue