Commit 5a9652f6 authored by Nishanth Menon's avatar Nishanth Menon Committed by Rob Herring
Browse files

dt-bindings: arm: keystone: Convert ti,sci to json schema



Convert the ti,sci to json schema for better checks and documentation.

NOTE: This change does introduce a stricter naming convention for
TI-SCI controller nodes.

Signed-off-by: default avatarNishanth Menon <nm@ti.com>
Reviewed-by: default avatarTero Kristo <kristo@kernel.org>
Acked-by: default avatarStephen Boyd <sboyd@kernel.org>
Link: https://lore.kernel.org/r/20210426155457.21221-5-nm@ti.com


Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent fda55c72
Loading
Loading
Loading
Loading
+0 −86
Original line number Diff line number Diff line
Texas Instruments System Control Interface (TI-SCI) Message Protocol
--------------------------------------------------------------------

Texas Instrument's processors including those belonging to Keystone generation
of processors have separate hardware entity which is now responsible for the
management of the System on Chip (SoC) system. These include various system
level functions as well.

An example of such an SoC is K2G, which contains the system control hardware
block called Power Management Micro Controller (PMMC). This hardware block is
initialized early into boot process and provides services to Operating Systems
on multiple processors including ones running Linux.

See http://processors.wiki.ti.com/index.php/TISCI for protocol definition.

TI-SCI controller Device Node:
=============================

The TI-SCI node describes the Texas Instrument's System Controller entity node.
This parent node may optionally have additional children nodes which describe
specific functionality such as clocks, power domain, reset or additional
functionality as may be required for the SoC. This hierarchy also describes the
relationship between the TI-SCI parent node to the child node.

Required properties:
-------------------
- compatible:	should be "ti,k2g-sci" for TI 66AK2G SoC
		should be "ti,am654-sci" for for TI AM654 SoC
- mbox-names:
	"rx" - Mailbox corresponding to receive path
	"tx" - Mailbox corresponding to transmit path

- mboxes: Mailboxes corresponding to the mbox-names. Each value of the mboxes
	  property should contain a phandle to the mailbox controller device
	  node and an args specifier that will be the phandle to the intended
	  sub-mailbox child node to be used for communication.

See Documentation/devicetree/bindings/mailbox/mailbox.txt for more details
about the generic mailbox controller and client driver bindings. Also see
Documentation/devicetree/bindings/mailbox/ti,message-manager.txt for typical
controller that is used to communicate with this System controllers.

Optional Properties:
-------------------
- reg-names:
	debug_messages - Map the Debug message region
- reg:  register space corresponding to the debug_messages
- ti,system-reboot-controller: If system reboot can be triggered by SoC reboot
- ti,host-id: Integer value corresponding to the host ID assigned by Firmware
	for identification of host processing entities such as virtual
	machines

Example (K2G):
-------------
	pmmc: pmmc {
		compatible = "ti,k2g-sci";
		ti,host-id = <2>;
		mbox-names = "rx", "tx";
		mboxes= <&msgmgr &msgmgr_proxy_pmmc_rx>,
			<&msgmgr &msgmgr_proxy_pmmc_tx>;
		reg-names = "debug_messages";
		reg = <0x02921800 0x800>;
	};


TI-SCI Client Device Node:
=========================

Client nodes are maintained as children of the relevant TI-SCI device node.

Example (K2G):
-------------
	pmmc: pmmc {
		compatible = "ti,k2g-sci";
		...

		my_clk_node: clk_node {
			...
			...
		};

		my_pd_node: pd_node {
			...
			...
		};
	};
+129 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/keystone/ti,sci.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: TI-SCI controller device node bindings

maintainers:
  - Nishanth Menon <nm@ti.com>

description: |
  Texas Instrument's processors including those belonging to Keystone generation
  of processors have separate hardware entity which is now responsible for the
  management of the System on Chip (SoC) system. These include various system
  level functions as well.

  An example of such an SoC is K2G, which contains the system control hardware
  block called Power Management Micro Controller (PMMC). This hardware block is
  initialized early into boot process and provides services to Operating Systems
  on multiple processors including ones running Linux.

  See http://processors.wiki.ti.com/index.php/TISCI for protocol definition.

  The TI-SCI node describes the Texas Instrument's System Controller entity node.
  This parent node may optionally have additional children nodes which describe
  specific functionality such as clocks, power domain, reset or additional
  functionality as may be required for the SoC. This hierarchy also describes the
  relationship between the TI-SCI parent node to the child node.

properties:
  $nodename:
    pattern: "^system-controller@[0-9a-f]+$"

  compatible:
    oneOf:
      - description: System controller on TI 66AK2G SoC and other K3 SoCs
        items:
          - const: ti,k2g-sci
      - description: System controller on TI AM654 SoC
        items:
          - const: ti,am654-sci

  reg-names:
    description: |
      Specifies the debug messages memory mapped region that is optionally
      made available from TI-SCI controller.
    const: debug_messages

  reg:
    minItems: 1

  mbox-names:
    description: |
      Specifies the mailboxes used to communicate with TI-SCI Controller
      made available from TI-SCI controller.
    items:
      - const: rx
      - const: tx

  mboxes:
    minItems: 2

  ti,system-reboot-controller:
    description: Determines If system reboot can be triggered by SoC reboot
    type: boolean

  ti,host-id:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: |
      Value corresponding to the host ID assigned by Firmware
      for identification of host processing entities such as virtual machines.

  power-controller:
    type: object
    $ref: /schemas/soc/ti/sci-pm-domain.yaml#

  clock-controller:
    type: object
    $ref: /schemas/clock/ti,sci-clk.yaml#

  reset-controller:
    type: object
    $ref: /schemas/reset/ti,sci-reset.yaml#

required:
  - compatible
  - mbox-names
  - mboxes

additionalProperties: false

examples:
  - |
    pmmc: system-controller@2921800 {
      compatible = "ti,k2g-sci";
      ti,system-reboot-controller;
      mbox-names = "rx", "tx";
      mboxes= <&msgmgr 5 2>,
              <&msgmgr 0 0>;
      reg-names = "debug_messages";
      reg = <0x02921800 0x800>;
    };

  - |
    dmsc: system-controller@44083000 {
      compatible = "ti,k2g-sci";
      ti,host-id = <12>;
      mbox-names = "rx", "tx";
      mboxes= <&secure_proxy_main 11>,
              <&secure_proxy_main 13>;
      reg-names = "debug_messages";
      reg = <0x44083000 0x1000>;

      k3_pds: power-controller {
        compatible = "ti,sci-pm-domain";
        #power-domain-cells = <2>;
      };

      k3_clks: clock-controller {
        compatible = "ti,k2g-sci-clk";
        #clock-cells = <2>;
      };

      k3_reset: reset-controller {
        compatible = "ti,sci-reset";
        #reset-cells = <2>;
      };
    };