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 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 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; 3865ea42859SSylwester Nawrocki }; 3875ea42859SSylwester Nawrocki } 3885ea42859SSylwester Nawrocki 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 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 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 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 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 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