Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: exynos: Add all CPUs in cooling maps

Each CPU can (and does) participate in cooling down the system but the
DT only captures a handful of them, normally CPU0, in the cooling maps.
Things work by chance currently as under normal circumstances its the
first CPU of each cluster which is used by the operating systems to
probe the cooling devices. But as soon as this CPU ordering changes and
any other CPU is used to bring up the cooling device, we will start
seeing failures.

Also the DT is rather incomplete when we list only one CPU in the
cooling maps, as the hardware doesn't have any such limitations.

Update cooling maps to include all devices affected by individual trip
points.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>

authored by

Viresh Kumar and committed by
Krzysztof Kozlowski
670734f5 6e2422ff

+178 -113
+4 -2
arch/arm/boot/dts/exynos3250-artik5.dtsi
··· 36 36 cooling-maps { 37 37 map0 { 38 38 /* Corresponds to 500MHz */ 39 - cooling-device = <&cpu0 5 5>; 39 + cooling-device = <&cpu0 5 5>, 40 + <&cpu1 5 5>; 40 41 }; 41 42 map1 { 42 43 /* Corresponds to 200MHz */ 43 - cooling-device = <&cpu0 8 8>; 44 + cooling-device = <&cpu0 8 8>, 45 + <&cpu1 8 8>; 44 46 }; 45 47 }; 46 48 };
+4 -2
arch/arm/boot/dts/exynos3250-monk.dts
··· 121 121 cooling-maps { 122 122 map0 { 123 123 /* Correspond to 500MHz at freq_table */ 124 - cooling-device = <&cpu0 5 5>; 124 + cooling-device = <&cpu0 5 5>, 125 + <&cpu1 5 5>; 125 126 }; 126 127 map1 { 127 128 /* Correspond to 200MHz at freq_table */ 128 - cooling-device = <&cpu0 8 8>; 129 + cooling-device = <&cpu0 8 8>, 130 + <&cpu1 8 8>; 129 131 }; 130 132 }; 131 133 };
+4 -2
arch/arm/boot/dts/exynos3250-rinato.dts
··· 116 116 cooling-maps { 117 117 map0 { 118 118 /* Corresponds to 500MHz */ 119 - cooling-device = <&cpu0 5 5>; 119 + cooling-device = <&cpu0 5 5>, 120 + <&cpu1 5 5>; 120 121 }; 121 122 map1 { 122 123 /* Corresponds to 200MHz */ 123 - cooling-device = <&cpu0 8 8>; 124 + cooling-device = <&cpu0 8 8>, 125 + <&cpu1 8 8>; 124 126 }; 125 127 }; 126 128 };
+2 -2
arch/arm/boot/dts/exynos4210-trats.dts
··· 138 138 cooling-maps { 139 139 map0 { 140 140 /* Corresponds to 800MHz at freq_table */ 141 - cooling-device = <&cpu0 2 2>; 141 + cooling-device = <&cpu0 2 2>, <&cpu1 2 2>; 142 142 }; 143 143 map1 { 144 144 /* Corresponds to 200MHz at freq_table */ 145 - cooling-device = <&cpu0 4 4>; 145 + cooling-device = <&cpu0 4 4>, <&cpu1 4 4>; 146 146 }; 147 147 }; 148 148 };
+1 -1
arch/arm/boot/dts/exynos4210.dtsi
··· 51 51 #cooling-cells = <2>; /* min followed by max */ 52 52 }; 53 53 54 - cpu@901 { 54 + cpu1: cpu@901 { 55 55 device_type = "cpu"; 56 56 compatible = "arm,cortex-a9"; 57 57 reg = <0x901>;
+6 -2
arch/arm/boot/dts/exynos4412-itop-scp-core.dtsi
··· 45 45 cooling-maps { 46 46 map0 { 47 47 /* Corresponds to 800MHz at freq_table */ 48 - cooling-device = <&cpu0 7 7>; 48 + cooling-device = <&cpu0 7 7>, <&cpu1 7 7>, 49 + <&cpu2 7 7>, <&cpu3 7 7>; 49 50 }; 50 51 map1 { 51 52 /* Corresponds to 200MHz at freq_table */ 52 - cooling-device = <&cpu0 13 13>; 53 + cooling-device = <&cpu0 13 13>, 54 + <&cpu1 13 13>, 55 + <&cpu2 13 13>, 56 + <&cpu3 13 13>; 53 57 }; 54 58 }; 55 59 };
+6 -2
arch/arm/boot/dts/exynos4412-midas.dtsi
··· 267 267 cooling-maps { 268 268 map0 { 269 269 /* Corresponds to 800MHz at freq_table */ 270 - cooling-device = <&cpu0 7 7>; 270 + cooling-device = <&cpu0 7 7>, <&cpu1 7 7>, 271 + <&cpu2 7 7>, <&cpu3 7 7>; 271 272 }; 272 273 map1 { 273 274 /* Corresponds to 200MHz at freq_table */ 274 - cooling-device = <&cpu0 13 13>; 275 + cooling-device = <&cpu0 13 13>, 276 + <&cpu1 13 13>, 277 + <&cpu2 13 13>, 278 + <&cpu3 13 13>; 275 279 }; 276 280 }; 277 281 };
+6 -2
arch/arm/boot/dts/exynos4412-odroid-common.dtsi
··· 72 72 cooling-maps { 73 73 cooling_map0: map0 { 74 74 /* Corresponds to 800MHz at freq_table */ 75 - cooling-device = <&cpu0 7 7>; 75 + cooling-device = <&cpu0 7 7>, <&cpu1 7 7>, 76 + <&cpu2 7 7>, <&cpu3 7 7>; 76 77 }; 77 78 cooling_map1: map1 { 78 79 /* Corresponds to 200MHz at freq_table */ 79 - cooling-device = <&cpu0 13 13>; 80 + cooling-device = <&cpu0 13 13>, 81 + <&cpu1 13 13>, 82 + <&cpu2 13 13>, 83 + <&cpu3 13 13>; 80 84 }; 81 85 }; 82 86 };
+8 -10
arch/arm/boot/dts/exynos4412-odroidu3.dts
··· 45 45 cooling-maps { 46 46 map0 { 47 47 trip = <&cpu_alert1>; 48 - cooling-device = <&cpu0 9 9>; 48 + cooling-device = <&cpu0 9 9>, <&cpu1 9 9>, 49 + <&cpu2 9 9>, <&cpu3 9 9>, 50 + <&fan0 1 2>; 49 51 }; 50 52 map1 { 51 53 trip = <&cpu_alert2>; 52 - cooling-device = <&cpu0 15 15>; 54 + cooling-device = <&cpu0 15 15>, 55 + <&cpu1 15 15>, 56 + <&cpu2 15 15>, 57 + <&cpu3 15 15>, 58 + <&fan0 2 3>; 53 59 }; 54 60 map2 { 55 61 trip = <&cpu_alert0>; 56 62 cooling-device = <&fan0 0 1>; 57 - }; 58 - map3 { 59 - trip = <&cpu_alert1>; 60 - cooling-device = <&fan0 1 2>; 61 - }; 62 - map4 { 63 - trip = <&cpu_alert2>; 64 - cooling-device = <&fan0 2 3>; 65 63 }; 66 64 }; 67 65 };
+3 -3
arch/arm/boot/dts/exynos4412.dtsi
··· 45 45 #cooling-cells = <2>; /* min followed by max */ 46 46 }; 47 47 48 - cpu@a01 { 48 + cpu1: cpu@a01 { 49 49 device_type = "cpu"; 50 50 compatible = "arm,cortex-a9"; 51 51 reg = <0xA01>; ··· 55 55 #cooling-cells = <2>; /* min followed by max */ 56 56 }; 57 57 58 - cpu@a02 { 58 + cpu2: cpu@a02 { 59 59 device_type = "cpu"; 60 60 compatible = "arm,cortex-a9"; 61 61 reg = <0xA02>; ··· 65 65 #cooling-cells = <2>; /* min followed by max */ 66 66 }; 67 67 68 - cpu@a03 { 68 + cpu3: cpu@a03 { 69 69 device_type = "cpu"; 70 70 compatible = "arm,cortex-a9"; 71 71 reg = <0xA03>;
+4 -3
arch/arm/boot/dts/exynos5250.dtsi
··· 59 59 operating-points-v2 = <&cpu0_opp_table>; 60 60 #cooling-cells = <2>; /* min followed by max */ 61 61 }; 62 - cpu@1 { 62 + cpu1: cpu@1 { 63 63 device_type = "cpu"; 64 64 compatible = "arm,cortex-a15"; 65 65 reg = <1>; ··· 1087 1087 cooling-maps { 1088 1088 map0 { 1089 1089 /* Corresponds to 800MHz at freq_table */ 1090 - cooling-device = <&cpu0 9 9>; 1090 + cooling-device = <&cpu0 9 9>, <&cpu1 9 9>; 1091 1091 }; 1092 1092 map1 { 1093 1093 /* Corresponds to 200MHz at freq_table */ 1094 - cooling-device = <&cpu0 15 15>; 1094 + cooling-device = <&cpu0 15 15>, 1095 + <&cpu1 15 15>; 1095 1096 }; 1096 1097 }; 1097 1098 };
+65 -41
arch/arm/boot/dts/exynos5422-odroidhc1.dts
··· 56 56 */ 57 57 map0 { 58 58 trip = <&cpu0_alert0>; 59 - cooling-device = <&cpu0 0 2>; 60 - }; 61 - map1 { 62 - trip = <&cpu0_alert0>; 63 - cooling-device = <&cpu4 0 2>; 59 + cooling-device = <&cpu0 0 2>, 60 + <&cpu1 0 2>, 61 + <&cpu2 0 2>, 62 + <&cpu3 0 2>, 63 + <&cpu4 0 2>, 64 + <&cpu5 0 2>, 65 + <&cpu6 0 2>, 66 + <&cpu7 0 2>; 64 67 }; 65 68 /* 66 69 * When reaching cpu0_alert1, reduce CPU 67 70 * further, down to 600 MHz (12 steps for big, 68 71 * 7 steps for LITTLE). 69 72 */ 70 - map2 { 73 + map1 { 71 74 trip = <&cpu0_alert1>; 72 - cooling-device = <&cpu0 3 7>; 73 - }; 74 - map3 { 75 - trip = <&cpu0_alert1>; 76 - cooling-device = <&cpu4 3 12>; 75 + cooling-device = <&cpu0 3 7>, 76 + <&cpu1 3 7>, 77 + <&cpu2 3 7>, 78 + <&cpu3 3 7>, 79 + <&cpu4 3 12>, 80 + <&cpu5 3 12>, 81 + <&cpu6 3 12>, 82 + <&cpu7 3 12>; 77 83 }; 78 84 }; 79 85 }; ··· 105 99 cooling-maps { 106 100 map0 { 107 101 trip = <&cpu1_alert0>; 108 - cooling-device = <&cpu0 0 2>; 102 + cooling-device = <&cpu0 0 2>, 103 + <&cpu1 0 2>, 104 + <&cpu2 0 2>, 105 + <&cpu3 0 2>, 106 + <&cpu4 0 2>, 107 + <&cpu5 0 2>, 108 + <&cpu6 0 2>, 109 + <&cpu7 0 2>; 109 110 }; 110 111 map1 { 111 - trip = <&cpu1_alert0>; 112 - cooling-device = <&cpu4 0 2>; 113 - }; 114 - map2 { 115 112 trip = <&cpu1_alert1>; 116 - cooling-device = <&cpu0 3 7>; 117 - }; 118 - map3 { 119 - trip = <&cpu1_alert1>; 120 - cooling-device = <&cpu4 3 12>; 113 + cooling-device = <&cpu0 3 7>, 114 + <&cpu1 3 7>, 115 + <&cpu2 3 7>, 116 + <&cpu3 3 7>, 117 + <&cpu4 3 12>, 118 + <&cpu5 3 12>, 119 + <&cpu6 3 12>, 120 + <&cpu7 3 12>; 121 121 }; 122 122 }; 123 123 }; ··· 149 137 cooling-maps { 150 138 map0 { 151 139 trip = <&cpu2_alert0>; 152 - cooling-device = <&cpu0 0 2>; 140 + cooling-device = <&cpu0 0 2>, 141 + <&cpu1 0 2>, 142 + <&cpu2 0 2>, 143 + <&cpu3 0 2>, 144 + <&cpu4 0 2>, 145 + <&cpu5 0 2>, 146 + <&cpu6 0 2>, 147 + <&cpu7 0 2>; 153 148 }; 154 149 map1 { 155 - trip = <&cpu2_alert0>; 156 - cooling-device = <&cpu4 0 2>; 157 - }; 158 - map2 { 159 150 trip = <&cpu2_alert1>; 160 - cooling-device = <&cpu0 3 7>; 161 - }; 162 - map3 { 163 - trip = <&cpu2_alert1>; 164 - cooling-device = <&cpu4 3 12>; 151 + cooling-device = <&cpu0 3 7>, 152 + <&cpu1 3 7>, 153 + <&cpu2 3 7>, 154 + <&cpu3 3 7>, 155 + <&cpu4 3 12>, 156 + <&cpu5 3 12>, 157 + <&cpu6 3 12>, 158 + <&cpu7 3 12>; 165 159 }; 166 160 }; 167 161 }; ··· 193 175 cooling-maps { 194 176 map0 { 195 177 trip = <&cpu3_alert0>; 196 - cooling-device = <&cpu0 0 2>; 178 + cooling-device = <&cpu0 0 2>, 179 + <&cpu1 0 2>, 180 + <&cpu2 0 2>, 181 + <&cpu3 0 2>, 182 + <&cpu4 0 2>, 183 + <&cpu5 0 2>, 184 + <&cpu6 0 2>, 185 + <&cpu7 0 2>; 197 186 }; 198 187 map1 { 199 - trip = <&cpu3_alert0>; 200 - cooling-device = <&cpu4 0 2>; 201 - }; 202 - map2 { 203 188 trip = <&cpu3_alert1>; 204 - cooling-device = <&cpu0 3 7>; 205 - }; 206 - map3 { 207 - trip = <&cpu3_alert1>; 208 - cooling-device = <&cpu4 3 12>; 189 + cooling-device = <&cpu0 3 7>, 190 + <&cpu1 3 7>, 191 + <&cpu2 3 7>, 192 + <&cpu3 3 7>, 193 + <&cpu4 3 12>, 194 + <&cpu5 3 12>, 195 + <&cpu6 3 12>, 196 + <&cpu7 3 12>; 209 197 }; 210 198 }; 211 199 };
+65 -41
arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi
··· 113 113 */ 114 114 map3 { 115 115 trip = <&cpu0_alert3>; 116 - cooling-device = <&cpu0 0 2>; 117 - }; 118 - map4 { 119 - trip = <&cpu0_alert3>; 120 - cooling-device = <&cpu4 0 2>; 116 + cooling-device = <&cpu0 0 2>, 117 + <&cpu1 0 2>, 118 + <&cpu2 0 2>, 119 + <&cpu3 0 2>, 120 + <&cpu4 0 2>, 121 + <&cpu5 0 2>, 122 + <&cpu6 0 2>, 123 + <&cpu7 0 2>; 121 124 }; 122 125 /* 123 126 * When reaching cpu0_alert4, reduce CPU 124 127 * further, down to 600 MHz (12 steps for big, 125 128 * 7 steps for LITTLE). 126 129 */ 127 - map5 { 130 + map4 { 128 131 trip = <&cpu0_alert4>; 129 - cooling-device = <&cpu0 3 7>; 130 - }; 131 - map6 { 132 - trip = <&cpu0_alert4>; 133 - cooling-device = <&cpu4 3 12>; 132 + cooling-device = <&cpu0 3 7>, 133 + <&cpu1 3 7>, 134 + <&cpu2 3 7>, 135 + <&cpu3 3 7>, 136 + <&cpu4 3 12>, 137 + <&cpu5 3 12>, 138 + <&cpu6 3 12>, 139 + <&cpu7 3 12>; 134 140 }; 135 141 }; 136 142 }; ··· 191 185 }; 192 186 map3 { 193 187 trip = <&cpu1_alert3>; 194 - cooling-device = <&cpu0 0 2>; 188 + cooling-device = <&cpu0 0 2>, 189 + <&cpu1 0 2>, 190 + <&cpu2 0 2>, 191 + <&cpu3 0 2>, 192 + <&cpu4 0 2>, 193 + <&cpu5 0 2>, 194 + <&cpu6 0 2>, 195 + <&cpu7 0 2>; 195 196 }; 196 197 map4 { 197 - trip = <&cpu1_alert3>; 198 - cooling-device = <&cpu4 0 2>; 199 - }; 200 - map5 { 201 198 trip = <&cpu1_alert4>; 202 - cooling-device = <&cpu0 3 7>; 203 - }; 204 - map6 { 205 - trip = <&cpu1_alert4>; 206 - cooling-device = <&cpu4 3 12>; 199 + cooling-device = <&cpu0 3 7>, 200 + <&cpu1 3 7>, 201 + <&cpu2 3 7>, 202 + <&cpu3 3 7>, 203 + <&cpu4 3 12>, 204 + <&cpu5 3 12>, 205 + <&cpu6 3 12>, 206 + <&cpu7 3 12>; 207 207 }; 208 208 }; 209 209 }; ··· 264 252 }; 265 253 map3 { 266 254 trip = <&cpu2_alert3>; 267 - cooling-device = <&cpu0 0 2>; 255 + cooling-device = <&cpu0 0 2>, 256 + <&cpu1 0 2>, 257 + <&cpu2 0 2>, 258 + <&cpu3 0 2>, 259 + <&cpu4 0 2>, 260 + <&cpu5 0 2>, 261 + <&cpu6 0 2>, 262 + <&cpu7 0 2>; 268 263 }; 269 264 map4 { 270 - trip = <&cpu2_alert3>; 271 - cooling-device = <&cpu4 0 2>; 272 - }; 273 - map5 { 274 265 trip = <&cpu2_alert4>; 275 - cooling-device = <&cpu0 3 7>; 276 - }; 277 - map6 { 278 - trip = <&cpu2_alert4>; 279 - cooling-device = <&cpu4 3 12>; 266 + cooling-device = <&cpu0 3 7>, 267 + <&cpu1 3 7>, 268 + <&cpu2 3 7>, 269 + <&cpu3 3 7>, 270 + <&cpu4 3 12>, 271 + <&cpu5 3 12>, 272 + <&cpu6 3 12>, 273 + <&cpu7 3 12>; 280 274 }; 281 275 }; 282 276 }; ··· 337 319 }; 338 320 map3 { 339 321 trip = <&cpu3_alert3>; 340 - cooling-device = <&cpu0 0 2>; 322 + cooling-device = <&cpu0 0 2>, 323 + <&cpu1 0 2>, 324 + <&cpu2 0 2>, 325 + <&cpu3 0 2>, 326 + <&cpu4 0 2>, 327 + <&cpu5 0 2>, 328 + <&cpu6 0 2>, 329 + <&cpu7 0 2>; 341 330 }; 342 331 map4 { 343 - trip = <&cpu3_alert3>; 344 - cooling-device = <&cpu4 0 2>; 345 - }; 346 - map5 { 347 332 trip = <&cpu3_alert4>; 348 - cooling-device = <&cpu0 3 7>; 349 - }; 350 - map6 { 351 - trip = <&cpu3_alert4>; 352 - cooling-device = <&cpu4 3 12>; 333 + cooling-device = <&cpu0 3 7>, 334 + <&cpu1 3 7>, 335 + <&cpu2 3 7>, 336 + <&cpu3 3 7>, 337 + <&cpu4 3 12>, 338 + <&cpu5 3 12>, 339 + <&cpu6 3 12>, 340 + <&cpu7 3 12>; 353 341 }; 354 342 }; 355 343 };