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 | const struct ti_sci_msg_rm_udmap_flow_cfg *params); | 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 | * struct ti_sci_ops - Function support for TI SCI | 486 | * struct ti_sci_ops - Function support for TI SCI |
| 458 | * @dev_ops: Device specific operations | 487 | * @dev_ops: Device specific operations |
| 459 | * @clk_ops: Clock specific operations | 488 | * @clk_ops: Clock specific operations |
| 460 | * @rm_core_ops: Resource management core operations. | 489 | * @rm_core_ops: Resource management core operations. |
| 461 | * @rm_irq_ops: IRQ management specific operations | 490 | * @rm_irq_ops: IRQ management specific operations |
| 491 | * @proc_ops: Processor Control specific operations | ||
| 462 | */ | 492 | */ |
| 463 | struct ti_sci_ops { | 493 | struct ti_sci_ops { |
| 464 | struct ti_sci_core_ops core_ops; | 494 | struct ti_sci_core_ops core_ops; |
| @@ -469,6 +499,7 @@ struct ti_sci_ops { · 4 unmodified lines | |||
| 469 | struct ti_sci_rm_ringacc_ops rm_ring_ops; | 499 | struct ti_sci_rm_ringacc_ops rm_ring_ops; |
| 470 | struct ti_sci_rm_psil_ops rm_psil_ops; | 500 | struct ti_sci_rm_psil_ops rm_psil_ops; |
| 471 | struct ti_sci_rm_udmap_ops rm_udmap_ops; | 501 | struct ti_sci_rm_udmap_ops rm_udmap_ops; |
| 502 | struct ti_sci_proc_ops proc_ops; | ||
| 472 | }; | 503 | }; |
| 473 | 504 | ||
| 474 | /** | 505 | /** |