15ea42859SSylwester Nawrocki // SPDX-License-Identifier: GPL-2.0
25ea42859SSylwester Nawrocki /*
35ea42859SSylwester Nawrocki * Copyright (c) 2019 Samsung Electronics Co., Ltd.
45ea42859SSylwester Nawrocki * http://www.samsung.com/
55ea42859SSylwester Nawrocki *
65ea42859SSylwester Nawrocki * Samsung Exynos 5422 SoC Adaptive Supply Voltage support
75ea42859SSylwester Nawrocki */
85ea42859SSylwester Nawrocki
95ea42859SSylwester Nawrocki #include <linux/bitrev.h>
105ea42859SSylwester Nawrocki #include <linux/errno.h>
115ea42859SSylwester Nawrocki #include <linux/regmap.h>
125ea42859SSylwester Nawrocki #include <linux/soc/samsung/exynos-chipid.h>
135ea42859SSylwester Nawrocki #include <linux/slab.h>
145ea42859SSylwester Nawrocki
155ea42859SSylwester Nawrocki #include "exynos-asv.h"
165ea42859SSylwester Nawrocki #include "exynos5422-asv.h"
175ea42859SSylwester Nawrocki
185ea42859SSylwester Nawrocki #define ASV_GROUPS_NUM 14
195ea42859SSylwester Nawrocki #define ASV_ARM_DVFS_NUM 20
205ea42859SSylwester Nawrocki #define ASV_ARM_BIN2_DVFS_NUM 17
215ea42859SSylwester Nawrocki #define ASV_KFC_DVFS_NUM 14
225ea42859SSylwester Nawrocki #define ASV_KFC_BIN2_DVFS_NUM 12
235ea42859SSylwester Nawrocki
245ea42859SSylwester Nawrocki /*
255ea42859SSylwester Nawrocki * This array is a set of 4 ASV data tables, first column of each ASV table
265ea42859SSylwester Nawrocki * contains frequency value in MHz and subsequent columns contain the CPU
275ea42859SSylwester Nawrocki * cluster's supply voltage values in uV.
285ea42859SSylwester Nawrocki * In order to create a set of OPPs for specific SoC revision one of the voltage
295ea42859SSylwester Nawrocki * columns (1...14) from one of the tables (0...3) is selected during
305ea42859SSylwester Nawrocki * initialization. There are separate ASV tables for the big (ARM) and little
315ea42859SSylwester Nawrocki * (KFC) CPU cluster. Only OPPs which are already defined in devicetree
325ea42859SSylwester Nawrocki * will be updated.
335ea42859SSylwester Nawrocki */
345ea42859SSylwester Nawrocki
355ea42859SSylwester Nawrocki static const u32 asv_arm_table[][ASV_ARM_DVFS_NUM][ASV_GROUPS_NUM + 1] = {
365ea42859SSylwester Nawrocki {
375ea42859SSylwester Nawrocki /* ARM 0, 1 */
385ea42859SSylwester Nawrocki { 2100, 1362500, 1362500, 1350000, 1337500, 1325000, 1312500, 1300000,
395ea42859SSylwester Nawrocki 1275000, 1262500, 1250000, 1237500, 1225000, 1212500, 1200000 },
405ea42859SSylwester Nawrocki { 2000, 1312500, 1312500, 1300000, 1287500, 1275000, 1262500, 1250000,
415ea42859SSylwester Nawrocki 1237500, 1225000, 1237500, 1225000, 1212500, 1200000, 1187500 },
425ea42859SSylwester Nawrocki { 1900, 1250000, 1237500, 1225000, 1212500, 1200000, 1187500, 1175000,
435ea42859SSylwester Nawrocki 1162500, 1150000, 1162500, 1150000, 1137500, 1125000, 1112500 },
445ea42859SSylwester Nawrocki { 1800, 1200000, 1187500, 1175000, 1162500, 1150000, 1137500, 1125000,
455ea42859SSylwester Nawrocki 1112500, 1100000, 1112500, 1100000, 1087500, 1075000, 1062500 },
465ea42859SSylwester Nawrocki { 1700, 1162500, 1150000, 1137500, 1125000, 1112500, 1100000, 1087500,
475ea42859SSylwester Nawrocki 1075000, 1062500, 1075000, 1062500, 1050000, 1037500, 1025000 },
485ea42859SSylwester Nawrocki { 1600, 1125000, 1112500, 1100000, 1087500, 1075000, 1062500, 1050000,
495ea42859SSylwester Nawrocki 1037500, 1025000, 1037500, 1025000, 1012500, 1000000, 987500 },
505ea42859SSylwester Nawrocki { 1500, 1087500, 1075000, 1062500, 1050000, 1037500, 1025000, 1012500,
515ea42859SSylwester Nawrocki 1000000, 987500, 1000000, 987500, 975000, 962500, 950000 },
525ea42859SSylwester Nawrocki { 1400, 1062500, 1050000, 1037500, 1025000, 1012500, 1000000, 987500,
535ea42859SSylwester Nawrocki 975000, 962500, 975000, 962500, 950000, 937500, 925000 },
545ea42859SSylwester Nawrocki { 1300, 1050000, 1037500, 1025000, 1012500, 1000000, 987500, 975000,
555ea42859SSylwester Nawrocki 962500, 950000, 962500, 950000, 937500, 925000, 912500 },
565ea42859SSylwester Nawrocki { 1200, 1025000, 1012500, 1000000, 987500, 975000, 962500, 950000,
575ea42859SSylwester Nawrocki 937500, 925000, 937500, 925000, 912500, 900000, 900000 },
585ea42859SSylwester Nawrocki { 1100, 1000000, 987500, 975000, 962500, 950000, 937500, 925000,
595ea42859SSylwester Nawrocki 912500, 900000, 900000, 900000, 900000, 900000, 900000 },
605ea42859SSylwester Nawrocki { 1000, 975000, 962500, 950000, 937500, 925000, 912500, 900000,
615ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
625ea42859SSylwester Nawrocki { 900, 950000, 937500, 925000, 912500, 900000, 900000, 900000,
635ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
645ea42859SSylwester Nawrocki { 800, 925000, 912500, 900000, 900000, 900000, 900000, 900000,
655ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
665ea42859SSylwester Nawrocki { 700, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
675ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
685ea42859SSylwester Nawrocki { 600, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
695ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
705ea42859SSylwester Nawrocki { 500, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
715ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
725ea42859SSylwester Nawrocki { 400, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
735ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
745ea42859SSylwester Nawrocki { 300, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
755ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
765ea42859SSylwester Nawrocki { 200, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
775ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
785ea42859SSylwester Nawrocki }, {
795ea42859SSylwester Nawrocki /* ARM 2 */
805ea42859SSylwester Nawrocki { 2100, 1362500, 1362500, 1350000, 1337500, 1325000, 1312500, 1300000,
815ea42859SSylwester Nawrocki 1275000, 1262500, 1250000, 1237500, 1225000, 1212500, 1200000 },
825ea42859SSylwester Nawrocki { 2000, 1312500, 1312500, 1312500, 1300000, 1275000, 1262500, 1250000,
835ea42859SSylwester Nawrocki 1237500, 1225000, 1237500, 1225000, 1212500, 1200000, 1187500 },
845ea42859SSylwester Nawrocki { 1900, 1262500, 1250000, 1250000, 1237500, 1212500, 1200000, 1187500,
855ea42859SSylwester Nawrocki 1175000, 1162500, 1175000, 1162500, 1150000, 1137500, 1125000 },
865ea42859SSylwester Nawrocki { 1800, 1212500, 1200000, 1187500, 1175000, 1162500, 1150000, 1137500,
875ea42859SSylwester Nawrocki 1125000, 1112500, 1125000, 1112500, 1100000, 1087500, 1075000 },
885ea42859SSylwester Nawrocki { 1700, 1175000, 1162500, 1150000, 1137500, 1125000, 1112500, 1100000,
895ea42859SSylwester Nawrocki 1087500, 1075000, 1087500, 1075000, 1062500, 1050000, 1037500 },
905ea42859SSylwester Nawrocki { 1600, 1137500, 1125000, 1112500, 1100000, 1087500, 1075000, 1062500,
915ea42859SSylwester Nawrocki 1050000, 1037500, 1050000, 1037500, 1025000, 1012500, 1000000 },
925ea42859SSylwester Nawrocki { 1500, 1100000, 1087500, 1075000, 1062500, 1050000, 1037500, 1025000,
935ea42859SSylwester Nawrocki 1012500, 1000000, 1012500, 1000000, 987500, 975000, 962500 },
945ea42859SSylwester Nawrocki { 1400, 1075000, 1062500, 1050000, 1037500, 1025000, 1012500, 1000000,
955ea42859SSylwester Nawrocki 987500, 975000, 987500, 975000, 962500, 950000, 937500 },
965ea42859SSylwester Nawrocki { 1300, 1050000, 1037500, 1025000, 1012500, 1000000, 987500, 975000,
975ea42859SSylwester Nawrocki 962500, 950000, 962500, 950000, 937500, 925000, 912500 },
985ea42859SSylwester Nawrocki { 1200, 1025000, 1012500, 1000000, 987500, 975000, 962500, 950000,
995ea42859SSylwester Nawrocki 937500, 925000, 937500, 925000, 912500, 900000, 900000 },
1005ea42859SSylwester Nawrocki { 1100, 1000000, 987500, 975000, 962500, 950000, 937500, 925000,
1015ea42859SSylwester Nawrocki 912500, 900000, 900000, 900000, 900000, 900000, 900000 },
1025ea42859SSylwester Nawrocki { 1000, 975000, 962500, 950000, 937500, 925000, 912500, 900000,
1035ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1045ea42859SSylwester Nawrocki { 900, 950000, 937500, 925000, 912500, 900000, 900000, 900000,
1055ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1065ea42859SSylwester Nawrocki { 800, 925000, 912500, 900000, 900000, 900000, 900000, 900000,
1075ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1085ea42859SSylwester Nawrocki { 700, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1095ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1105ea42859SSylwester Nawrocki { 600, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1115ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1125ea42859SSylwester Nawrocki { 500, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1135ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1145ea42859SSylwester Nawrocki { 400, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1155ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1165ea42859SSylwester Nawrocki { 300, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1175ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1185ea42859SSylwester Nawrocki { 200, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1195ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1205ea42859SSylwester Nawrocki }, {
1215ea42859SSylwester Nawrocki /* ARM 3 */
1225ea42859SSylwester Nawrocki { 2100, 1362500, 1362500, 1350000, 1337500, 1325000, 1312500, 1300000,
1235ea42859SSylwester Nawrocki 1275000, 1262500, 1250000, 1237500, 1225000, 1212500, 1200000 },
1245ea42859SSylwester Nawrocki { 2000, 1312500, 1312500, 1300000, 1287500, 1275000, 1262500, 1250000,
1255ea42859SSylwester Nawrocki 1237500, 1225000, 1237500, 1225000, 1212500, 1200000, 1187500 },
1265ea42859SSylwester Nawrocki { 1900, 1262500, 1250000, 1237500, 1225000, 1212500, 1200000, 1187500,
1275ea42859SSylwester Nawrocki 1175000, 1162500, 1175000, 1162500, 1150000, 1137500, 1125000 },
1285ea42859SSylwester Nawrocki { 1800, 1212500, 1200000, 1187500, 1175000, 1162500, 1150000, 1137500,
1295ea42859SSylwester Nawrocki 1125000, 1112500, 1125000, 1112500, 1100000, 1087500, 1075000 },
1305ea42859SSylwester Nawrocki { 1700, 1175000, 1162500, 1150000, 1137500, 1125000, 1112500, 1100000,
1315ea42859SSylwester Nawrocki 1087500, 1075000, 1087500, 1075000, 1062500, 1050000, 1037500 },
1325ea42859SSylwester Nawrocki { 1600, 1137500, 1125000, 1112500, 1100000, 1087500, 1075000, 1062500,
1335ea42859SSylwester Nawrocki 1050000, 1037500, 1050000, 1037500, 1025000, 1012500, 1000000 },
1345ea42859SSylwester Nawrocki { 1500, 1100000, 1087500, 1075000, 1062500, 1050000, 1037500, 1025000,
1355ea42859SSylwester Nawrocki 1012500, 1000000, 1012500, 1000000, 987500, 975000, 962500 },
1365ea42859SSylwester Nawrocki { 1400, 1075000, 1062500, 1050000, 1037500, 1025000, 1012500, 1000000,
1375ea42859SSylwester Nawrocki 987500, 975000, 987500, 975000, 962500, 950000, 937500 },
1385ea42859SSylwester Nawrocki { 1300, 1050000, 1037500, 1025000, 1012500, 1000000, 987500, 975000,
1395ea42859SSylwester Nawrocki 962500, 950000, 962500, 950000, 937500, 925000, 912500 },
1405ea42859SSylwester Nawrocki { 1200, 1025000, 1012500, 1000000, 987500, 975000, 962500, 950000,
1415ea42859SSylwester Nawrocki 937500, 925000, 937500, 925000, 912500, 900000, 900000 },
1425ea42859SSylwester Nawrocki { 1100, 1000000, 987500, 975000, 962500, 950000, 937500, 925000,
1435ea42859SSylwester Nawrocki 912500, 900000, 900000, 900000, 900000, 900000, 900000 },
1445ea42859SSylwester Nawrocki { 1000, 975000, 962500, 950000, 937500, 925000, 912500, 900000,
1455ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1465ea42859SSylwester Nawrocki { 900, 950000, 937500, 925000, 912500, 900000, 900000, 900000,
1475ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1485ea42859SSylwester Nawrocki { 800, 925000, 912500, 900000, 900000, 900000, 900000, 900000,
1495ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1505ea42859SSylwester Nawrocki { 700, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1515ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1525ea42859SSylwester Nawrocki { 600, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1535ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1545ea42859SSylwester Nawrocki { 500, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1555ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1565ea42859SSylwester Nawrocki { 400, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1575ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1585ea42859SSylwester Nawrocki { 300, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1595ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1605ea42859SSylwester Nawrocki { 200, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1615ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1625ea42859SSylwester Nawrocki }, {
1635ea42859SSylwester Nawrocki /* ARM bin 2 */
1645ea42859SSylwester Nawrocki { 1800, 1237500, 1225000, 1212500, 1200000, 1187500, 1175000, 1162500,
1655ea42859SSylwester Nawrocki 1150000, 1137500, 1150000, 1137500, 1125000, 1112500, 1100000 },
1665ea42859SSylwester Nawrocki { 1700, 1200000, 1187500, 1175000, 1162500, 1150000, 1137500, 1125000,
1675ea42859SSylwester Nawrocki 1112500, 1100000, 1112500, 1100000, 1087500, 1075000, 1062500 },
1685ea42859SSylwester Nawrocki { 1600, 1162500, 1150000, 1137500, 1125000, 1112500, 1100000, 1087500,
1695ea42859SSylwester Nawrocki 1075000, 1062500, 1075000, 1062500, 1050000, 1037500, 1025000 },
1705ea42859SSylwester Nawrocki { 1500, 1125000, 1112500, 1100000, 1087500, 1075000, 1062500, 1050000,
1715ea42859SSylwester Nawrocki 1037500, 1025000, 1037500, 1025000, 1012500, 1000000, 987500 },
1725ea42859SSylwester Nawrocki { 1400, 1100000, 1087500, 1075000, 1062500, 1050000, 1037500, 1025000,
1735ea42859SSylwester Nawrocki 1012500, 1000000, 1012500, 1000000, 987500, 975000, 962500 },
1745ea42859SSylwester Nawrocki { 1300, 1087500, 1075000, 1062500, 1050000, 1037500, 1025000, 1012500,
1755ea42859SSylwester Nawrocki 1000000, 987500, 1000000, 987500, 975000, 962500, 950000 },
1765ea42859SSylwester Nawrocki { 1200, 1062500, 1050000, 1037500, 1025000, 1012500, 1000000, 987500,
1775ea42859SSylwester Nawrocki 975000, 962500, 975000, 962500, 950000, 937500, 925000 },
1785ea42859SSylwester Nawrocki { 1100, 1037500, 1025000, 1012500, 1000000, 987500, 975000, 962500,
1795ea42859SSylwester Nawrocki 950000, 937500, 950000, 937500, 925000, 912500, 900000 },
1805ea42859SSylwester Nawrocki { 1000, 1012500, 1000000, 987500, 975000, 962500, 950000, 937500,
1815ea42859SSylwester Nawrocki 925000, 912500, 925000, 912500, 900000, 900000, 900000 },
1825ea42859SSylwester Nawrocki { 900, 987500, 975000, 962500, 950000, 937500, 925000, 912500,
1835ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1845ea42859SSylwester Nawrocki { 800, 962500, 950000, 937500, 925000, 912500, 900000, 900000,
1855ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1865ea42859SSylwester Nawrocki { 700, 937500, 925000, 912500, 900000, 900000, 900000, 900000,
1875ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1885ea42859SSylwester Nawrocki { 600, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1895ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1905ea42859SSylwester Nawrocki { 500, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1915ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1925ea42859SSylwester Nawrocki { 400, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1935ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1945ea42859SSylwester Nawrocki { 300, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1955ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1965ea42859SSylwester Nawrocki { 200, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
1975ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
1985ea42859SSylwester Nawrocki }
1995ea42859SSylwester Nawrocki };
2005ea42859SSylwester Nawrocki
2015ea42859SSylwester Nawrocki static const u32 asv_kfc_table[][ASV_KFC_DVFS_NUM][ASV_GROUPS_NUM + 1] = {
2025ea42859SSylwester Nawrocki {
2035ea42859SSylwester Nawrocki /* KFC 0, 1 */
2045ea42859SSylwester Nawrocki { 1500000, 1300000, 1300000, 1300000, 1287500, 1287500, 1287500, 1275000,
2055ea42859SSylwester Nawrocki 1262500, 1250000, 1237500, 1225000, 1212500, 1200000, 1187500 },
2065ea42859SSylwester Nawrocki { 1400000, 1275000, 1262500, 1250000, 1237500, 1225000, 1212500, 1200000,
2075ea42859SSylwester Nawrocki 1187500, 1175000, 1162500, 1150000, 1137500, 1125000, 1112500 },
2085ea42859SSylwester Nawrocki { 1300000, 1225000, 1212500, 1200000, 1187500, 1175000, 1162500, 1150000,
2095ea42859SSylwester Nawrocki 1137500, 1125000, 1112500, 1100000, 1087500, 1075000, 1062500 },
2105ea42859SSylwester Nawrocki { 1200000, 1175000, 1162500, 1150000, 1137500, 1125000, 1112500, 1100000,
2115ea42859SSylwester Nawrocki 1087500, 1075000, 1062500, 1050000, 1037500, 1025000, 1012500 },
2125ea42859SSylwester Nawrocki { 1100000, 1137500, 1125000, 1112500, 1100000, 1087500, 1075000, 1062500,
2135ea42859SSylwester Nawrocki 1050000, 1037500, 1025000, 1012500, 1000000, 987500, 975000 },
2145ea42859SSylwester Nawrocki { 1000000, 1100000, 1087500, 1075000, 1062500, 1050000, 1037500, 1025000,
2155ea42859SSylwester Nawrocki 1012500, 1000000, 987500, 975000, 962500, 950000, 937500 },
2165ea42859SSylwester Nawrocki { 900000, 1062500, 1050000, 1037500, 1025000, 1012500, 1000000, 987500,
2175ea42859SSylwester Nawrocki 975000, 962500, 950000, 937500, 925000, 912500, 900000 },
2185ea42859SSylwester Nawrocki { 800000, 1025000, 1012500, 1000000, 987500, 975000, 962500, 950000,
2195ea42859SSylwester Nawrocki 937500, 925000, 912500, 900000, 900000, 900000, 900000 },
2205ea42859SSylwester Nawrocki { 700000, 987500, 975000, 962500, 950000, 937500, 925000, 912500,
2215ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2225ea42859SSylwester Nawrocki { 600000, 950000, 937500, 925000, 912500, 900000, 900000, 900000,
2235ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2245ea42859SSylwester Nawrocki { 500000, 912500, 900000, 900000, 900000, 900000, 900000, 900000,
2255ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2265ea42859SSylwester Nawrocki { 400000, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
2275ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2285ea42859SSylwester Nawrocki { 300000, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
2295ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2305ea42859SSylwester Nawrocki { 200000, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
2315ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2325ea42859SSylwester Nawrocki }, {
2335ea42859SSylwester Nawrocki /* KFC 2 */
2345ea42859SSylwester Nawrocki { 1500, 1300000, 1300000, 1300000, 1287500, 1287500, 1287500, 1275000,
2355ea42859SSylwester Nawrocki 1262500, 1250000, 1237500, 1225000, 1212500, 1200000, 1187500 },
2365ea42859SSylwester Nawrocki { 1400, 1275000, 1262500, 1250000, 1237500, 1225000, 1212500, 1200000,
2375ea42859SSylwester Nawrocki 1187500, 1175000, 1162500, 1150000, 1137500, 1125000, 1112500 },
2385ea42859SSylwester Nawrocki { 1300, 1225000, 1212500, 1200000, 1187500, 1175000, 1162500, 1150000,
2395ea42859SSylwester Nawrocki 1137500, 1125000, 1112500, 1100000, 1087500, 1075000, 1062500 },
2405ea42859SSylwester Nawrocki { 1200, 1175000, 1162500, 1150000, 1137500, 1125000, 1112500, 1100000,
2415ea42859SSylwester Nawrocki 1087500, 1075000, 1062500, 1050000, 1037500, 1025000, 1012500 },
2425ea42859SSylwester Nawrocki { 1100, 1137500, 1125000, 1112500, 1100000, 1087500, 1075000, 1062500,
2435ea42859SSylwester Nawrocki 1050000, 1037500, 1025000, 1012500, 1000000, 987500, 975000 },
2445ea42859SSylwester Nawrocki { 1000, 1100000, 1087500, 1075000, 1062500, 1050000, 1037500, 1025000,
2455ea42859SSylwester Nawrocki 1012500, 1000000, 987500, 975000, 962500, 950000, 937500 },
2465ea42859SSylwester Nawrocki { 900, 1062500, 1050000, 1037500, 1025000, 1012500, 1000000, 987500,
2475ea42859SSylwester Nawrocki 975000, 962500, 950000, 937500, 925000, 912500, 900000 },
2485ea42859SSylwester Nawrocki { 800, 1025000, 1012500, 1000000, 987500, 975000, 962500, 950000,
2495ea42859SSylwester Nawrocki 937500, 925000, 912500, 900000, 900000, 900000, 900000 },
2505ea42859SSylwester Nawrocki { 700, 987500, 975000, 962500, 950000, 937500, 925000, 912500,
2515ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2525ea42859SSylwester Nawrocki { 600, 950000, 937500, 925000, 912500, 900000, 900000, 900000,
2535ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2545ea42859SSylwester Nawrocki { 500, 912500, 900000, 900000, 900000, 900000, 900000, 900000,
2555ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2565ea42859SSylwester Nawrocki { 400, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
2575ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2585ea42859SSylwester Nawrocki { 300, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
2595ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2605ea42859SSylwester Nawrocki { 200, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
2615ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2625ea42859SSylwester Nawrocki }, {
2635ea42859SSylwester Nawrocki /* KFC 3 */
2645ea42859SSylwester Nawrocki { 1500, 1300000, 1300000, 1300000, 1287500, 1287500, 1287500, 1275000,
2655ea42859SSylwester Nawrocki 1262500, 1250000, 1237500, 1225000, 1212500, 1200000, 1187500 },
2665ea42859SSylwester Nawrocki { 1400, 1275000, 1262500, 1250000, 1237500, 1225000, 1212500, 1200000,
2675ea42859SSylwester Nawrocki 1187500, 1175000, 1162500, 1150000, 1137500, 1125000, 1112500 },
2685ea42859SSylwester Nawrocki { 1300, 1225000, 1212500, 1200000, 1187500, 1175000, 1162500, 1150000,
2695ea42859SSylwester Nawrocki 1137500, 1125000, 1112500, 1100000, 1087500, 1075000, 1062500 },
2705ea42859SSylwester Nawrocki { 1200, 1175000, 1162500, 1150000, 1137500, 1125000, 1112500, 1100000,
2715ea42859SSylwester Nawrocki 1087500, 1075000, 1062500, 1050000, 1037500, 1025000, 1012500 },
2725ea42859SSylwester Nawrocki { 1100, 1137500, 1125000, 1112500, 1100000, 1087500, 1075000, 1062500,
2735ea42859SSylwester Nawrocki 1050000, 1037500, 1025000, 1012500, 1000000, 987500, 975000 },
2745ea42859SSylwester Nawrocki { 1000, 1100000, 1087500, 1075000, 1062500, 1050000, 1037500, 1025000,
2755ea42859SSylwester Nawrocki 1012500, 1000000, 987500, 975000, 962500, 950000, 937500 },
2765ea42859SSylwester Nawrocki { 900, 1062500, 1050000, 1037500, 1025000, 1012500, 1000000, 987500,
2775ea42859SSylwester Nawrocki 975000, 962500, 950000, 937500, 925000, 912500, 900000 },
2785ea42859SSylwester Nawrocki { 800, 1025000, 1012500, 1000000, 987500, 975000, 962500, 950000,
2795ea42859SSylwester Nawrocki 937500, 925000, 912500, 900000, 900000, 900000, 900000 },
2805ea42859SSylwester Nawrocki { 700, 987500, 975000, 962500, 950000, 937500, 925000, 912500,
2815ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2825ea42859SSylwester Nawrocki { 600, 950000, 937500, 925000, 912500, 900000, 900000, 900000,
2835ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2845ea42859SSylwester Nawrocki { 500, 912500, 900000, 900000, 900000, 900000, 900000, 900000,
2855ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2865ea42859SSylwester Nawrocki { 400, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
2875ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2885ea42859SSylwester Nawrocki { 300, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
2895ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2905ea42859SSylwester Nawrocki { 200, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
2915ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
2925ea42859SSylwester Nawrocki }, {
2935ea42859SSylwester Nawrocki /* KFC bin 2 */
2945ea42859SSylwester Nawrocki { 1300, 1250000, 1237500, 1225000, 1212500, 1200000, 1187500, 1175000,
2955ea42859SSylwester Nawrocki 1162500, 1150000, 1137500, 1125000, 1112500, 1100000, 1087500 },
2965ea42859SSylwester Nawrocki { 1200, 1200000, 1187500, 1175000, 1162500, 1150000, 1137500, 1125000,
2975ea42859SSylwester Nawrocki 1112500, 1100000, 1087500, 1075000, 1062500, 1050000, 1037500 },
2985ea42859SSylwester Nawrocki { 1100, 1162500, 1150000, 1137500, 1125000, 1112500, 1100000, 1087500,
2995ea42859SSylwester Nawrocki 1075000, 1062500, 1050000, 1037500, 1025000, 1012500, 1000000 },
3005ea42859SSylwester Nawrocki { 1000, 1125000, 1112500, 1100000, 1087500, 1075000, 1062500, 1050000,
3015ea42859SSylwester Nawrocki 1037500, 1025000, 1012500, 1000000, 987500, 975000, 962500 },
3025ea42859SSylwester Nawrocki { 900, 1087500, 1075000, 1062500, 1050000, 1037500, 1025000, 1012500,
3035ea42859SSylwester Nawrocki 1000000, 987500, 975000, 962500, 950000, 937500, 925000 },
3045ea42859SSylwester Nawrocki { 800, 1050000, 1037500, 1025000, 1012500, 1000000, 987500, 975000,
3055ea42859SSylwester Nawrocki 962500, 950000, 937500, 925000, 912500, 900000, 900000 },
3065ea42859SSylwester Nawrocki { 700, 1012500, 1000000, 987500, 975000, 962500, 950000, 937500,
3075ea42859SSylwester Nawrocki 925000, 912500, 900000, 900000, 900000, 900000, 900000 },
3085ea42859SSylwester Nawrocki { 600, 975000, 962500, 950000, 937500, 925000, 912500, 900000,
3095ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
3105ea42859SSylwester Nawrocki { 500, 937500, 925000, 912500, 900000, 900000, 900000, 900000,
3115ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
3125ea42859SSylwester Nawrocki { 400, 925000, 912500, 900000, 900000, 900000, 900000, 900000,
3135ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
3145ea42859SSylwester Nawrocki { 300, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
3155ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
3165ea42859SSylwester Nawrocki { 200, 900000, 900000, 900000, 900000, 900000, 900000, 900000,
3175ea42859SSylwester Nawrocki 900000, 900000, 900000, 900000, 900000, 900000, 900000 },
3185ea42859SSylwester Nawrocki }
3195ea42859SSylwester Nawrocki };
3205ea42859SSylwester Nawrocki
3215ea42859SSylwester Nawrocki static const struct asv_limit_entry __asv_limits[ASV_GROUPS_NUM] = {
3225ea42859SSylwester Nawrocki { 13, 55 },
3235ea42859SSylwester Nawrocki { 21, 65 },
3245ea42859SSylwester Nawrocki { 25, 69 },
3255ea42859SSylwester Nawrocki { 30, 72 },
3265ea42859SSylwester Nawrocki { 36, 74 },
3275ea42859SSylwester Nawrocki { 43, 76 },
3285ea42859SSylwester Nawrocki { 51, 78 },
3295ea42859SSylwester Nawrocki { 65, 80 },
3305ea42859SSylwester Nawrocki { 81, 82 },
3315ea42859SSylwester Nawrocki { 98, 84 },
3325ea42859SSylwester Nawrocki { 119, 87 },
3335ea42859SSylwester Nawrocki { 135, 89 },
3345ea42859SSylwester Nawrocki { 150, 92 },
3355ea42859SSylwester Nawrocki { 999, 999 },
3365ea42859SSylwester Nawrocki };
3375ea42859SSylwester Nawrocki
exynos5422_asv_get_group(struct exynos_asv * asv)3385ea42859SSylwester Nawrocki static int exynos5422_asv_get_group(struct exynos_asv *asv)
3395ea42859SSylwester Nawrocki {
3405ea42859SSylwester Nawrocki unsigned int pkgid_reg, auxi_reg;
3415ea42859SSylwester Nawrocki int hpm, ids, i;
3425ea42859SSylwester Nawrocki
3435ea42859SSylwester Nawrocki regmap_read(asv->chipid_regmap, EXYNOS_CHIPID_REG_PKG_ID, &pkgid_reg);
3445ea42859SSylwester Nawrocki regmap_read(asv->chipid_regmap, EXYNOS_CHIPID_REG_AUX_INFO, &auxi_reg);
3455ea42859SSylwester Nawrocki
3465ea42859SSylwester Nawrocki if (asv->use_sg) {
3475ea42859SSylwester Nawrocki u32 sga = (pkgid_reg >> EXYNOS5422_SG_A_OFFSET) &
3485ea42859SSylwester Nawrocki EXYNOS5422_SG_A_MASK;
3495ea42859SSylwester Nawrocki
3505ea42859SSylwester Nawrocki u32 sgb = (pkgid_reg >> EXYNOS5422_SG_B_OFFSET) &
3515ea42859SSylwester Nawrocki EXYNOS5422_SG_B_MASK;
3525ea42859SSylwester Nawrocki
3535ea42859SSylwester Nawrocki if ((pkgid_reg >> EXYNOS5422_SG_BSIGN_OFFSET) &
3545ea42859SSylwester Nawrocki EXYNOS5422_SG_BSIGN_MASK)
3555ea42859SSylwester Nawrocki return sga + sgb;
3565ea42859SSylwester Nawrocki else
3575ea42859SSylwester Nawrocki return sga - sgb;
3585ea42859SSylwester Nawrocki }
3595ea42859SSylwester Nawrocki
3605ea42859SSylwester Nawrocki hpm = (auxi_reg >> EXYNOS5422_TMCB_OFFSET) & EXYNOS5422_TMCB_MASK;
3615ea42859SSylwester Nawrocki ids = (pkgid_reg >> EXYNOS5422_IDS_OFFSET) & EXYNOS5422_IDS_MASK;
3625ea42859SSylwester Nawrocki
3635ea42859SSylwester Nawrocki for (i = 0; i < ASV_GROUPS_NUM; i++) {
3645ea42859SSylwester Nawrocki if (ids <= __asv_limits[i].ids)
3655ea42859SSylwester Nawrocki break;
3665ea42859SSylwester Nawrocki if (hpm <= __asv_limits[i].hpm)
3675ea42859SSylwester Nawrocki break;
3685ea42859SSylwester Nawrocki }
3695ea42859SSylwester Nawrocki if (i < ASV_GROUPS_NUM)
3705ea42859SSylwester Nawrocki return i;
3715ea42859SSylwester Nawrocki
3725ea42859SSylwester Nawrocki return 0;
3735ea42859SSylwester Nawrocki }
3745ea42859SSylwester Nawrocki
__asv_offset_voltage(unsigned int index)3755ea42859SSylwester Nawrocki static int __asv_offset_voltage(unsigned int index)
3765ea42859SSylwester Nawrocki {
3775ea42859SSylwester Nawrocki switch (index) {
3785ea42859SSylwester Nawrocki case 1:
3795ea42859SSylwester Nawrocki return 12500;
3805ea42859SSylwester Nawrocki case 2:
3815ea42859SSylwester Nawrocki return 50000;
3825ea42859SSylwester Nawrocki case 3:
3835ea42859SSylwester Nawrocki return 25000;
3845ea42859SSylwester Nawrocki default:
3855ea42859SSylwester Nawrocki return 0;
38674b01dc3STom Rix }
3875ea42859SSylwester Nawrocki }
3885ea42859SSylwester Nawrocki
exynos5422_asv_offset_voltage_setup(struct exynos_asv * asv)3895ea42859SSylwester Nawrocki static void exynos5422_asv_offset_voltage_setup(struct exynos_asv *asv)
3905ea42859SSylwester Nawrocki {
3915ea42859SSylwester Nawrocki struct exynos_asv_subsys *subsys;
3925ea42859SSylwester Nawrocki unsigned int reg, value;
3935ea42859SSylwester Nawrocki
3945ea42859SSylwester Nawrocki regmap_read(asv->chipid_regmap, EXYNOS_CHIPID_REG_AUX_INFO, ®);
3955ea42859SSylwester Nawrocki
3965ea42859SSylwester Nawrocki /* ARM offset voltage setup */
3975ea42859SSylwester Nawrocki subsys = &asv->subsys[EXYNOS_ASV_SUBSYS_ID_ARM];
3985ea42859SSylwester Nawrocki
3995ea42859SSylwester Nawrocki subsys->base_volt = 1000000;
4005ea42859SSylwester Nawrocki
4015ea42859SSylwester Nawrocki value = (reg >> EXYNOS5422_ARM_UP_OFFSET) & EXYNOS5422_ARM_UP_MASK;
4025ea42859SSylwester Nawrocki subsys->offset_volt_h = __asv_offset_voltage(value);
4035ea42859SSylwester Nawrocki
4045ea42859SSylwester Nawrocki value = (reg >> EXYNOS5422_ARM_DN_OFFSET) & EXYNOS5422_ARM_DN_MASK;
4055ea42859SSylwester Nawrocki subsys->offset_volt_l = __asv_offset_voltage(value);
4065ea42859SSylwester Nawrocki
4075ea42859SSylwester Nawrocki /* KFC offset voltage setup */
4085ea42859SSylwester Nawrocki subsys = &asv->subsys[EXYNOS_ASV_SUBSYS_ID_KFC];
4095ea42859SSylwester Nawrocki
4105ea42859SSylwester Nawrocki subsys->base_volt = 1000000;
4115ea42859SSylwester Nawrocki
4125ea42859SSylwester Nawrocki value = (reg >> EXYNOS5422_KFC_UP_OFFSET) & EXYNOS5422_KFC_UP_MASK;
4135ea42859SSylwester Nawrocki subsys->offset_volt_h = __asv_offset_voltage(value);
4145ea42859SSylwester Nawrocki
4155ea42859SSylwester Nawrocki value = (reg >> EXYNOS5422_KFC_DN_OFFSET) & EXYNOS5422_KFC_DN_MASK;
4165ea42859SSylwester Nawrocki subsys->offset_volt_l = __asv_offset_voltage(value);
4175ea42859SSylwester Nawrocki }
4185ea42859SSylwester Nawrocki
exynos5422_asv_opp_get_voltage(const struct exynos_asv_subsys * subsys,int level,unsigned int volt)4195ea42859SSylwester Nawrocki static int exynos5422_asv_opp_get_voltage(const struct exynos_asv_subsys *subsys,
4205ea42859SSylwester Nawrocki int level, unsigned int volt)
4215ea42859SSylwester Nawrocki {
4225ea42859SSylwester Nawrocki unsigned int asv_volt;
4235ea42859SSylwester Nawrocki
4245ea42859SSylwester Nawrocki if (level >= subsys->table.num_rows)
4255ea42859SSylwester Nawrocki return volt;
4265ea42859SSylwester Nawrocki
4275ea42859SSylwester Nawrocki asv_volt = exynos_asv_opp_get_voltage(subsys, level,
4285ea42859SSylwester Nawrocki subsys->asv->group);
4295ea42859SSylwester Nawrocki
4305ea42859SSylwester Nawrocki if (volt > subsys->base_volt)
4315ea42859SSylwester Nawrocki asv_volt += subsys->offset_volt_h;
4325ea42859SSylwester Nawrocki else
4335ea42859SSylwester Nawrocki asv_volt += subsys->offset_volt_l;
4345ea42859SSylwester Nawrocki
4355ea42859SSylwester Nawrocki return asv_volt;
4365ea42859SSylwester Nawrocki }
4375ea42859SSylwester Nawrocki
exynos5422_asv_parse_table(unsigned int pkg_id)4385ea42859SSylwester Nawrocki static unsigned int exynos5422_asv_parse_table(unsigned int pkg_id)
4395ea42859SSylwester Nawrocki {
4405ea42859SSylwester Nawrocki return (pkg_id >> EXYNOS5422_TABLE_OFFSET) & EXYNOS5422_TABLE_MASK;
4415ea42859SSylwester Nawrocki }
4425ea42859SSylwester Nawrocki
exynos5422_asv_parse_bin2(unsigned int pkg_id)4435ea42859SSylwester Nawrocki static bool exynos5422_asv_parse_bin2(unsigned int pkg_id)
4445ea42859SSylwester Nawrocki {
4455ea42859SSylwester Nawrocki return (pkg_id >> EXYNOS5422_BIN2_OFFSET) & EXYNOS5422_BIN2_MASK;
4465ea42859SSylwester Nawrocki }
4475ea42859SSylwester Nawrocki
exynos5422_asv_parse_sg(unsigned int pkg_id)4485ea42859SSylwester Nawrocki static bool exynos5422_asv_parse_sg(unsigned int pkg_id)
4495ea42859SSylwester Nawrocki {
4505ea42859SSylwester Nawrocki return (pkg_id >> EXYNOS5422_USESG_OFFSET) & EXYNOS5422_USESG_MASK;
4515ea42859SSylwester Nawrocki }
4525ea42859SSylwester Nawrocki
exynos5422_asv_init(struct exynos_asv * asv)4535ea42859SSylwester Nawrocki int exynos5422_asv_init(struct exynos_asv *asv)
4545ea42859SSylwester Nawrocki {
4555ea42859SSylwester Nawrocki struct exynos_asv_subsys *subsys;
4565ea42859SSylwester Nawrocki unsigned int table_index;
4575ea42859SSylwester Nawrocki unsigned int pkg_id;
4585ea42859SSylwester Nawrocki bool bin2;
4595ea42859SSylwester Nawrocki
4605ea42859SSylwester Nawrocki regmap_read(asv->chipid_regmap, EXYNOS_CHIPID_REG_PKG_ID, &pkg_id);
4615ea42859SSylwester Nawrocki
4625ea42859SSylwester Nawrocki if (asv->of_bin == 2) {
4635ea42859SSylwester Nawrocki bin2 = true;
4645ea42859SSylwester Nawrocki asv->use_sg = false;
4655ea42859SSylwester Nawrocki } else {
4665ea42859SSylwester Nawrocki asv->use_sg = exynos5422_asv_parse_sg(pkg_id);
4675ea42859SSylwester Nawrocki bin2 = exynos5422_asv_parse_bin2(pkg_id);
4685ea42859SSylwester Nawrocki }
4695ea42859SSylwester Nawrocki
4705ea42859SSylwester Nawrocki asv->group = exynos5422_asv_get_group(asv);
4715ea42859SSylwester Nawrocki asv->table = exynos5422_asv_parse_table(pkg_id);
4725ea42859SSylwester Nawrocki
4735ea42859SSylwester Nawrocki exynos5422_asv_offset_voltage_setup(asv);
4745ea42859SSylwester Nawrocki
4755ea42859SSylwester Nawrocki if (bin2) {
4765ea42859SSylwester Nawrocki table_index = 3;
4775ea42859SSylwester Nawrocki } else {
4785ea42859SSylwester Nawrocki if (asv->table == 2 || asv->table == 3)
4795ea42859SSylwester Nawrocki table_index = asv->table - 1;
4805ea42859SSylwester Nawrocki else
4815ea42859SSylwester Nawrocki table_index = 0;
4825ea42859SSylwester Nawrocki }
4835ea42859SSylwester Nawrocki
4845ea42859SSylwester Nawrocki subsys = &asv->subsys[EXYNOS_ASV_SUBSYS_ID_ARM];
4855ea42859SSylwester Nawrocki subsys->cpu_dt_compat = "arm,cortex-a15";
4865ea42859SSylwester Nawrocki if (bin2)
4875ea42859SSylwester Nawrocki subsys->table.num_rows = ASV_ARM_BIN2_DVFS_NUM;
4885ea42859SSylwester Nawrocki else
4895ea42859SSylwester Nawrocki subsys->table.num_rows = ASV_ARM_DVFS_NUM;
4905ea42859SSylwester Nawrocki subsys->table.num_cols = ASV_GROUPS_NUM + 1;
4915ea42859SSylwester Nawrocki subsys->table.buf = (u32 *)asv_arm_table[table_index];
4925ea42859SSylwester Nawrocki
4935ea42859SSylwester Nawrocki subsys = &asv->subsys[EXYNOS_ASV_SUBSYS_ID_KFC];
4945ea42859SSylwester Nawrocki subsys->cpu_dt_compat = "arm,cortex-a7";
4955ea42859SSylwester Nawrocki if (bin2)
4965ea42859SSylwester Nawrocki subsys->table.num_rows = ASV_KFC_BIN2_DVFS_NUM;
4975ea42859SSylwester Nawrocki else
4985ea42859SSylwester Nawrocki subsys->table.num_rows = ASV_KFC_DVFS_NUM;
4995ea42859SSylwester Nawrocki subsys->table.num_cols = ASV_GROUPS_NUM + 1;
5005ea42859SSylwester Nawrocki subsys->table.buf = (u32 *)asv_kfc_table[table_index];
5015ea42859SSylwester Nawrocki
5025ea42859SSylwester Nawrocki asv->opp_get_voltage = exynos5422_asv_opp_get_voltage;
5035ea42859SSylwester Nawrocki
5045ea42859SSylwester Nawrocki return 0;
5055ea42859SSylwester Nawrocki }
506*1e3e559fSKrzysztof Kozlowski EXPORT_SYMBOL_GPL(exynos5422_asv_init);
507