History

firmware: ti_sci: Add support for processor control

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.

Suman Anna committed 7 years ago

Commit 1e407f31 parent 68608b53 files · +516 −0Browse files

Showing the changes to include/linux (1 of 3 files). Show all

Unified · Split

include/linux/soc/ti/ti_sci_protocol.h+31−0
@@ -453,12 +453,42 @@ struct ti_sci_rm_udmap_ops { · 452 unmodified lines
453453 const struct ti_sci_msg_rm_udmap_flow_cfg *params);
454454 };
455455
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+
456485 /**
457486 * struct ti_sci_ops - Function support for TI SCI
458487 * @dev_ops: Device specific operations
459488 * @clk_ops: Clock specific operations
460489 * @rm_core_ops: Resource management core operations.
461490 * @rm_irq_ops: IRQ management specific operations
491+ * @proc_ops: Processor Control specific operations
462492 */
463493 struct ti_sci_ops {
464494 struct ti_sci_core_ops core_ops;
@@ -469,6 +499,7 @@ struct ti_sci_ops { · 4 unmodified lines
469499 struct ti_sci_rm_ringacc_ops rm_ring_ops;
470500 struct ti_sci_rm_psil_ops rm_psil_ops;
471501 struct ti_sci_rm_udmap_ops rm_udmap_ops;
502+ struct ti_sci_proc_ops proc_ops;
472503 };
473504
474505 /**

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t