Texas Instrument's System Control Interface (TI-SCI) Message Protocol is used in Texas Instrument's System on Chip (SoC) such as those in K3 family AM654 SoC to communicate between various compute processors with a central system controller entity. The system controller provides various services including the control of other compute processors within the SoC. Extend the TI-SCI protocol support to add various TI-SCI commands to invoke services associated with power and reset control, and boot vector management of the various compute processors from the Linux kernel.
Showing the changes to include/linux (1 of 3 files). Show all
Unified · Split
| @@ -453,12 +453,42 @@ struct ti_sci_rm_udmap_ops { · 452 unmodified lines | ||
| 453 | 453 | const struct ti_sci_msg_rm_udmap_flow_cfg *params); |
| 454 | 454 | }; |
| 455 | 455 | |
| 456 | +/** | |
| 457 | + * struct ti_sci_proc_ops - Processor Control operations | |
| 458 | + * @request: Request to control a physical processor. The requesting host | |
| 459 | + * should be in the processor access list | |
| 460 | + * @release: Relinquish a physical processor control | |
| 461 | + * @handover: Handover a physical processor control to another host | |
| 462 | + * in the permitted list | |
| 463 | + * @set_config: Set base configuration of a processor | |
| 464 | + * @set_control: Setup limited control flags in specific cases | |
| 465 | + * @get_status: Get the state of physical processor | |
| 466 | + * | |
| 467 | + * NOTE: The following paramteres are generic in nature for all these ops, | |
| 468 | + * -handle: Pointer to TI SCI handle as retrieved by *ti_sci_get_handle | |
| 469 | + * -pid: Processor ID | |
| 470 | + * -hid: Host ID | |
| 471 | + */ | |
| 472 | +struct ti_sci_proc_ops { | |
| 473 | + int (*request)(const struct ti_sci_handle *handle, u8 pid); | |
| 474 | + int (*release)(const struct ti_sci_handle *handle, u8 pid); | |
| 475 | + int (*handover)(const struct ti_sci_handle *handle, u8 pid, u8 hid); | |
| 476 | + int (*set_config)(const struct ti_sci_handle *handle, u8 pid, | |
| 477 | + u64 boot_vector, u32 cfg_set, u32 cfg_clr); | |
| 478 | + int (*set_control)(const struct ti_sci_handle *handle, u8 pid, | |
| 479 | + u32 ctrl_set, u32 ctrl_clr); | |
| 480 | + int (*get_status)(const struct ti_sci_handle *handle, u8 pid, | |
| 481 | + u64 *boot_vector, u32 *cfg_flags, u32 *ctrl_flags, | |
| 482 | + u32 *status_flags); | |
| 483 | +}; | |
| 484 | + | |
| 456 | 485 | /** |
| 457 | 486 | * struct ti_sci_ops - Function support for TI SCI |
| 458 | 487 | * @dev_ops: Device specific operations |
| 459 | 488 | * @clk_ops: Clock specific operations |
| 460 | 489 | * @rm_core_ops: Resource management core operations. |
| 461 | 490 | * @rm_irq_ops: IRQ management specific operations |
| 491 | + * @proc_ops: Processor Control specific operations | |
| 462 | 492 | */ |
| 463 | 493 | struct ti_sci_ops { |
| 464 | 494 | struct ti_sci_core_ops core_ops; |
| @@ -469,6 +499,7 @@ struct ti_sci_ops { · 4 unmodified lines | ||
| 469 | 499 | struct ti_sci_rm_ringacc_ops rm_ring_ops; |
| 470 | 500 | struct ti_sci_rm_psil_ops rm_psil_ops; |
| 471 | 501 | struct ti_sci_rm_udmap_ops rm_udmap_ops; |
| 502 | + struct ti_sci_proc_ops proc_ops; | |
| 472 | 503 | }; |
| 473 | 504 | |
| 474 | 505 | /** |