From 42494a9e0bc3e76a46e8a3418c8f8e1b98d30632 Mon Sep 17 00:00:00 2001 From: Chris Redpath Date: Fri, 13 Nov 2015 10:21:39 +0000 Subject: DTB: Add EAS v5.0 compatible Juno Energy model to 'juno.dts' EAS v5.0 expects the energy model for the CPUs and cluster states to be available in the DTB. The energy model data comes from previous versions. Signed-off-by: Chris Redpath Signed-off-by: Jon Medhurst --- arch/arm64/boot/dts/arm/juno-sched-energy.dtsi | 114 +++++++++++++++++++++++++ arch/arm64/boot/dts/arm/juno.dts | 8 ++ 2 files changed, 122 insertions(+) create mode 100644 arch/arm64/boot/dts/arm/juno-sched-energy.dtsi diff --git a/arch/arm64/boot/dts/arm/juno-sched-energy.dtsi b/arch/arm64/boot/dts/arm/juno-sched-energy.dtsi new file mode 100644 index 000000000000..3f9f10cd5ab5 --- /dev/null +++ b/arch/arm64/boot/dts/arm/juno-sched-energy.dtsi @@ -0,0 +1,114 @@ +/* + * ARM JUNO specific energy cost model data. There are no unit requirements for + * the data. Data can be normalized to any reference point, but the + * normalization must be consistent. That is, one bogo-joule/watt must be the + * same quantity for all data, but we don't care what it is. + */ + +/* static struct idle_state idle_states_cluster_a53[] = { + * { .power = 56 }, + * { .power = 17 }, + * }; + * + * static struct idle_state idle_states_cluster_a57[] = { + * { .power = 65 }, + * { .power = 24 }, + * }; + * + * static struct capacity_state cap_states_cluster_a53[] = { + * { .cap = 235, .power = 26, }, + * { .cap = 303, .power = 30, }, + * { .cap = 368, .power = 39, }, + * { .cap = 406, .power = 47, }, + * { .cap = 447, .power = 57, }, + * }; + * + * static struct capacity_state cap_states_cluster_a57[] = { + * { .cap = 417, .power = 24, }, + * { .cap = 579, .power = 32, }, + * ( .cap = 744, .power = 43, }, + * { .cap = 883, .power = 49, }, + * { .cap = 1024, .power = 64, }, + * }; + * + * static struct idle_state idle_states_core_a53[] = { + * { .power = 6 }, + * { .power = 0 }, + * }; + * + * static struct idle_state idle_states_core_a57[] = { + * { .power = 15 }, + * { .power = 0 }, + * }; + * + * static struct capacity_state cap_states_core_a53[] = { + * { .cap = 235, .power = 33, }, + * { .cap = 302, .power = 46, }, + * { .cap = 368, .power = 61, }, + * { .cap = 406, .power = 76, }, + * { .cap = 447, .power = 93, }, + * }; + * + * static struct capacity_state cap_states_core_a57[] = { + * { .cap = 417, .power = 168, }, + * { .cap = 579, .power = 251, }, + * { .cap = 744, .power = 359, }, + * { .cap = 883, .power = 479, }, + * { .cap = 1024, .power = 616, }, + * }; + */ + +energy-costs { + CPU_COST_A57: core-cost0 { + busy-cost-data = < + 417 168 + 579 251 + 744 359 + 883 479 + 1023 616 + >; + idle-cost-data = < + 15 + 0 + >; + }; + CPU_COST_A53: core-cost1 { + busy-cost-data = < + 235 33 + 302 46 + 368 61 + 406 76 + 447 93 + >; + idle-cost-data = < + 6 + 0 + >; + }; + CLUSTER_COST_A57: cluster-cost0 { + busy-cost-data = < + 417 24 + 579 32 + 744 43 + 883 49 + 1024 64 + >; + idle-cost-data = < + 65 + 24 + >; + }; + CLUSTER_COST_A53: cluster-cost1 { + busy-cost-data = < + 235 26 + 303 30 + 368 39 + 406 47 + 447 57 + >; + idle-cost-data = < + 56 + 17 + >; + }; +}; \ No newline at end of file diff --git a/arch/arm64/boot/dts/arm/juno.dts b/arch/arm64/boot/dts/arm/juno.dts index dae7f930b681..b367d4e07a69 100644 --- a/arch/arm64/boot/dts/arm/juno.dts +++ b/arch/arm64/boot/dts/arm/juno.dts @@ -93,6 +93,7 @@ next-level-cache = <&A57_L2>; clocks = <&scpi_dvfs 0>; cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + sched-energy-costs = <&CPU_COST_A57 &CLUSTER_COST_A57>; }; A57_1: cpu@1 { @@ -103,6 +104,7 @@ next-level-cache = <&A57_L2>; clocks = <&scpi_dvfs 0>; cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + sched-energy-costs = <&CPU_COST_A57 &CLUSTER_COST_A57>; }; A53_0: cpu@100 { @@ -113,6 +115,7 @@ next-level-cache = <&A53_L2>; clocks = <&scpi_dvfs 1>; cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + sched-energy-costs = <&CPU_COST_A53 &CLUSTER_COST_A53>; }; A53_1: cpu@101 { @@ -123,6 +126,7 @@ next-level-cache = <&A53_L2>; clocks = <&scpi_dvfs 1>; cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + sched-energy-costs = <&CPU_COST_A53 &CLUSTER_COST_A53>; }; A53_2: cpu@102 { @@ -133,6 +137,7 @@ next-level-cache = <&A53_L2>; clocks = <&scpi_dvfs 1>; cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + sched-energy-costs = <&CPU_COST_A53 &CLUSTER_COST_A53>; }; A53_3: cpu@103 { @@ -143,6 +148,7 @@ next-level-cache = <&A53_L2>; clocks = <&scpi_dvfs 1>; cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + sched-energy-costs = <&CPU_COST_A53 &CLUSTER_COST_A53>; }; A57_L2: l2-cache0 { @@ -152,6 +158,8 @@ A53_L2: l2-cache1 { compatible = "cache"; }; + + /include/ "juno-sched-energy.dtsi" }; pmu_a57 { -- cgit v1.2.3