• 検索結果がありません。

関数 ID は、EEMI API 関数の名称ま たは ID 番号であ り 、 それぞれに文字列ま たは整数を入力 し ます。

引数

引数の数や型は、 選択 し た API 関数に依存 し ます。 すべての引数は整数型で指定 し 、EEMI 引数 リ ス ト にあ る その特 定引数の型の序数にな る 必要があ り ます。 関数の説明、 引数の型、 お よ び引数の数の詳細は、EEMI API の仕様を参 照 し て く だ さ い。

第 9 章: 電力管理 フ レームワー クの概要

$ echo "REQUEST_NODE 22 1 100 1" > /sys/kernel/debug/zynqmp_pm/power

コ マ ン ド リ ス ト

Get API Version

API バージ ョ ン を取得 し ます。

$ echo get_api_version > /sys/kernel/debug/zynqmp_pm/power

Request Suspend

別の PU にセルフ サ スペン ド す る よ う に要求 し ます。

$ echo request_suspend <node> > /sys/kernel/debug/zynqmp_pm/power

Self Suspend

こ の PU がセルフ サ スペン ド す る こ と を PMU に通知 し ます。

$ echo self_suspend <node> > /sys/kernel/debug/zynqmp_pm/power

Force Power Down

別の PU の電源を強制的にオ フ に し ます。

$ echo force_powerdown <node> > /sys/kernel/debug/zynqmp_pm/power

Abort Suspend

サ スペン ド 処理が中断 さ れた こ と を PMU に通知 し ます。

$ echo abort_suspend > /sys/kernel/debug/zynqmp_pm/power

Request Wake-up

別の PU に対 し て、 サ スペン ド 状態か ら 復帰す る こ と を要求 し ます。

$ echo request_wakeup <node> <set_address> <address> >

/sys/kernel/debug/zynqmp_pm/power

Set Wake-up Source

ノ ー ド を ウ ェー ク ア ッ プ ソ ース と し て設定 し ます。

$ echo set_wakeup_source <target> <wkup_node> <enable> >

/sys/kernel/debug/zynqmp_pm/power

Request Node

ノ ー ド の使用を要求 し ます。

$ echo request_node <node> > /sys/kernel/debug/zynqmp_pm/power

Release Node

使用 し ない ノ ー ド を リ リ ース し ます。

第 9 章: 電力管理 フ レームワー クの概要

$ echo release_node <node> > /sys/kernel/debug/zynqmp_pm/power

Set Requirement

ノ ー ド 上の電源要件を設定 し ます。

$ echo set_requirement <node> <capabilities> > /sys/kernel/debug/zynqmp_pm/power

Set Max Latency

ノ ー ド の最大 ウ ェー ク ア ッ プレ イ テ ン シ要件を設定 し ます。

$ echo set_max_latency <node> <latency> > /sys/kernel/debug/zynqmp_pm/power

Get Node Status

ノ ー ド の ス テー タ ス情報を取得 し ます。(ノ ー ド の割 り 当てにかかわ ら ず、 すべての PU が任意の ノ ー ド の ス テー タ ス を確認で き ます。)

$ echo get_node_status <node> > /sys/kernel/debug/zynqmp_pm/power

Get Operating Characteristic

ノ ー ド の動作特性を取得 し ます。

$ echo get_operating_characteristic <node> > /sys/kernel/debug/zynqmp_pm/power

Reset Assert

特定の リ セ ッ ト ラ イ ンでアサー ト/デ ィ アサー ト し ます。

$ echo reset_assert <reset> <action> > /sys/kernel/debug/zynqmp_pm/power

Reset Get Status

リ セ ッ ト ラ イ ンの ス テー タ ス を取得 し ます。

$ echo reset_get_status <reset> > /sys/kernel/debug/zynqmp_pm/power

MMIO Read

メ モ リ マ ッ プ さ れた I/O ア ド レ ス か ら の読み出 し を実行 し ます。

$ echo mmio_read <address> > /sys/kernel/debug/zynqmp_pm/power 注記:ア ド レ ス は 16 進数形式です (例: 0xFFFF0000)。

MMIO Write

メ モ リ マ ッ プ さ れた I/O ア ド レ スへの書 き 込みを実行 し ます。

$ echo mmio_write <mask> <address> <value> > /sys/kernel/debug/zynqmp_pm/power マ ス ク 、 ア ド レ ス、 値は 16 進数形式です (例: 0xFFFF0000)。

第 9 章: 電力管理 フ レームワー クの概要

PM プ ラ ッ ト フ ォ ーム ド ラ イバー

Linux 用 Zynq UltraScale+ MPSoC 電力管理機能は、PM プ ラ ッ ト フ ォーム ド ラ イ バーにカプセル化 さ れてい ます。 シ

ス テ ム レベルの API 関数 (UG1200 の EEMI API 仕様の SPI 層を参照) はエ ク ス ポー ト さ れ る ため、GPL 互換の ラ イ セ ン ス を使用 し て別の Linux モジ ュ ールで呼び出す こ と が可能です。 関数の宣言は、

include/linux/soc/xilinx/zynqmp/pm.h にあ り ます。 関数の イ ンプ リ メ ン テーシ ョ ンは、

drivers/soc/xilinx/zynqmp/pm.c にあ り ます。

ド ラ イ バーを適切に初期化す る には、Linux デバ イ ス ツ リ ーに正 し い ノ ー ド が指定 さ れてい る 必要があ り ます。PM API ド ラ イ バーは、 フ ァ ーム ウ ェ ア ノ ー ド を頼 り に し て PMU フ ァ ーム ウ ェ アの存在を検出 し 、PM フ レーム ワー ク フ ァ ーム ウ ェ ア層への呼び出 し メ ソ ッ ド ( 「smc」 ま たは 「hvc」 ) を決定 し 、 コ ールバ ッ ク 割 り 込み番号を レ ジ ス タ に格納 し ます。

フ ァ ーム ウ ェ ア ノ ー ド には、 次のプ ロ パテ ィ が含まれてい ます。

1. compatible: xlnx,zynqmp-pm を必ず含む。

2. method: PM フ レーム ワ ー ク フ ァ ーム ウ ェ ア を呼び出す メ ソ ッ ド 。 「smc」 にす る 必要があ る 。 注記:その他の情報は、Linux の資料を参照 し て く だ さ い。

Documentation/devicetree/bindings/soc/xilinx/zynq_mpsoc.txt 例:

zynqmp-firmware {

compatible = "xlnx,zynqmp-pm";

method = "smc";

interrupt-parent = <&gic>;

interrupts = <0 35 4>;

};

ARM ト ラ ス テ ッ ド フ ァ ームウ ェ ア (ATF)

ARM Trusted Firmware (ATF) は EL3 で実行 さ れます。EEMI API をサポー ト し 、IPI ベース の通信手段を介 し て、PMU へ PM 要求を送信す る こ と に よ っ て ス レーブ ノ ー ド の電源ス テー ト を管理 し ます。

ATF ア プ リ ケーシ ョ ン バイ ナ リ イ ン タ ー フ ェ イ ス

APU で実行可能な EL3 以下のすべての層は、ATF を介 し て PMU と 間接的に通信可能です。ATF は、 下位層 EL か ら

のすべての呼び出 し を受信 し 、 すべての要求を統合 し て、PMU にそれ ら を送信 し ます。

ARM の SMC 呼び出 し 規約に従 う ため、 非セキ ュ ア ワ ール ド か ら ATF への PM 通信は、 呼び出 し 規約で指定 さ れて

い る よ う に事前定義 さ れた SMC 関数識別子 と SMC サブ レ ン ジ所有権を使用 し て SiP のサービ ス コ ール と し て実行 さ れます。

APU 用 EEMI API の実装は、SMC64 呼び出 し 規約にのみ準拠 し てい る こ と に注意 し て く だ さ い。

OS ま たはハ イ パーバ イ ザー ソ フ ト ウ ェ ア レベルで作成 さ れた EEMI API 呼び出 し は、32 ビ ッ ト の API ID を SMC 関 数識別子 と し て渡 し 、 最大 4 つの 32 ビ ッ ト 引数 も 渡 し ます。PM の引数はすべて 32 ビ ッ ト 値であ る ため、2 つのペ アが結合 さ れて 1 つの 64 ビ ッ ト 値を構成 し ます。

ATF は 最大 5 つの 32 ビ ッ ト 戻 り 値を返 し ます。

第 9 章: 電力管理 フ レームワー クの概要

• 処理完了ま たはエ ラ ー と その理由のいずれかを示すス テー タ ス を返す

• PM コ ン ト ロ ー ラ ーか ら のその他の情報

API バージ ョ ンの確認

EEMI API を使用 し て ス レーブ ノ ー ド を管理す る 前に、ATF に実装 さ れてい る EEMI API バージ ョ ンが PMU フ ァ ー ム ウ ェ アに実装 さ れてい る バージ ョ ン と 一致 し てい る こ と を確認す る 必要があ り ます。EEMI API バージ ョ ンは、 メ ジ ャ ー バージ ョ ン を示す上位 16 ビ ッ ト と マ イ ナー バージ ョ ン を示す下位 16 ビ ッ ト に分離 さ れた 32 ビ ッ ト 値です。

こ れ ら 両方の フ ィ ール ド が ATF と PMU フ ァ ーム ウ ェ アで同 じ にな る 必要があ り ます。

EEMI API バージ ョ ンの確認方法

ATF に実装 さ れてい る EEMI バージ ョ ンは、 ロ ーカルの EEMI_API_VERSON フ ラ グに定義 さ れてい ます。ATF と

PMU フ ァ ーム ウ ェ アの EEMI API バージ ョ ン を確認す る には、 ロ ーカル関数 XPm_GetApiVersion() を使用で き ます。 こ れ ら のバージ ョ ンが異な る 場合、 こ の呼び出 し でエ ラ ーが レ ポー ト さ れます。

注記:こ の EEMI API 呼び出 し はバージ ョ ンに依存 し ません。 つま り 、 すべての EEMI バージ ョ ンに こ の呼び出 し が 実装 さ れてい ます。

関連したドキュメント