/*
 * Copyright (C) 2013 Allwinnertech, wangjx <wangjx@allwinnertech.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * Adjustable factor-based clock implementation
 *
 * freq table from hardware, need follow rules
 * 1)   each table  named as
 *      factor_pll1_tbl
 *      factor_pll2_tbl
 *      ...
 * 2) for each table line
 *      a) follow the format PLLx(n, k, m, p, d1, d2, freq), and keep the
 *         factors order
 *      b) if any factor not used, skip it
 *      c) the factor is the value to write registers, not means factor + 1
 *
 *      example
 *      PLL1(9, 0, 0, 2, 60000000) means PLL1(n, k, m, p, freq)
 *      PLLVIDEO0(3, 0, 96000000) means PLLVIDEO0(n, m, freq)
 *
 */

#include "clk-sun8iw5.h"


 /* F_N8X8_P16x1 */


struct sunxi_clk_factor_freq factor_pllcpu_tbl[] = {
PLLCPU(9 , 0 , 3 , 0 , 60000000U),
PLLCPU(10 , 0 , 3  , 0 ,	66000000U),
PLLCPU(11 , 0 , 3 , 0 ,	72000000U),
PLLCPU(12 , 0 , 3 , 0 ,	78000000U),
PLLCPU(4 , 1 , 2 , 0 ,	80000000U),
PLLCPU(13 , 0 , 3 , 0 ,	84000000U),
PLLCPU(10 , 0 , 2 , 0 ,	88000000U),
PLLCPU(14 , 0 , 3 , 0 ,	90000000U),
PLLCPU(15 , 0 , 3 , 0 ,	96000000U),
PLLCPU(16 , 0 , 3 , 0 ,	102000000U),
PLLCPU(12 , 0 , 2 , 0 ,	104000000U),
PLLCPU(17 , 0 , 3 , 0 ,	108000000U),
PLLCPU(6 , 1 , 2  , 0 ,	112000000U),
PLLCPU(18 , 0 , 3 , 0 ,	114000000U),
PLLCPU(19 , 0 , 3 , 0 ,	120000000U),
PLLCPU(20 , 0 , 3 , 0 ,	126000000U),
PLLCPU(7 , 1 , 2 , 0 ,	128000000U),
PLLCPU(21 , 0 , 3 , 0,	132000000U),
PLLCPU(16 , 0 , 2 , 0,	136000000U),
PLLCPU(22 , 0 , 3 , 0,	138000000U),
PLLCPU(23 , 0 , 3 , 0,	144000000U),
PLLCPU(24 , 0 , 3 , 0,	150000000U),
PLLCPU(18 , 0 , 2 , 0,	152000000U),
PLLCPU(12 , 1 , 3 , 0,	156000000U),
PLLCPU(19 , 0 , 2 , 0,	160000000U),
PLLCPU(8 , 2 , 3 , 0,	162000000U),
PLLCPU(27 , 0 , 3 , 0,	168000000U),
PLLCPU(28 , 0 , 3 , 0 ,	174000000U),
PLLCPU(10 , 1 , 2 , 0,	176000000U),
PLLCPU(14 , 1 , 3 , 0,	180000000U),
PLLCPU(22 , 0 , 2 , 0,	184000000U),
PLLCPU(30 , 0 , 3 , 0,	186000000U),
PLLCPU(15 , 1 , 3 , 0,	192000000U),
PLLCPU(10 , 2 , 3 , 0,	198000000U),
PLLCPU(24 , 0 , 2 , 0,	200000000U),
PLLCPU(16 , 1 , 3 , 0,	204000000U),
PLLCPU(25 , 0 , 2 , 0,	208000000U),
PLLCPU(17 , 1 , 3 , 0,	216000000U),
PLLCPU(27 , 0 ,  2 , 0,	224000000U),
PLLCPU(18 , 1 , 3 , 0,	228000000U),
PLLCPU(28 , 0 , 2 , 0,	232000000U),
PLLCPU(12 , 2 , 3 , 0,	234000000U),
PLLCPU(19 , 1 , 3 , 0,	240000000U),
PLLCPU(30 , 0 , 2 , 0,	248000000U),
PLLCPU(20 , 1 , 3 , 0,	252000000U),
PLLCPU(15 , 1 , 2 , 0,	256000000U),
PLLCPU(21 , 1 , 3 , 0,	264000000U),
PLLCPU(14 , 2 , 3 , 0,	270000000U),
PLLCPU(16 , 1 , 2 , 0,	272000000U),
PLLCPU(22 , 1 , 3 , 0,	276000000U),
PLLCPU(23 , 1 , 3 , 0,	288000000U),
PLLCPU(24 , 1 , 3 , 0,	300000000U),
PLLCPU(18 , 1 , 2 , 0,	304000000U),
PLLCPU(16 , 2 , 3 , 0,	306000000U),
PLLCPU(25 , 1 , 3 , 0,	312000000U),
PLLCPU(9 , 3  , 2  , 0,	320000000U),
PLLCPU(26 , 1 , 3 , 0,	324000000U),
PLLCPU(27 , 1 , 3 , 0,	336000000U),
PLLCPU(18 , 2 , 3 , 0,	342000000U),
PLLCPU(28 , 1 , 3 , 0,	348000000U),
PLLCPU(21 , 1 , 2 , 0,	352000000U),
PLLCPU(29 , 1 , 3 , 0,	360000000U),
PLLCPU(22 , 1 , 2 , 0,	368000000U),
PLLCPU(30 , 1 , 3 , 0,	372000000U),
PLLCPU(20 ,  2 , 3 , 0,	378000000U),
PLLCPU(11 , 3 , 2 , 0,	384000000U),
PLLCPU(21 , 2 , 3 , 0,	396000000U),
PLLCPU(24 , 1 , 2 , 0,	400000000U),
PLLCPU(16 , 3 , 3 , 0,	408000000U),
PLLCPU(22 , 2 , 3 , 0,	414000000U),
PLLCPU(25 , 1 , 2 , 0,	416000000U),
PLLCPU(23 , 2 , 3 , 0,	432000000U),
PLLCPU(13 , 3 , 2 , 0,	448000000U),
PLLCPU(24 , 2 , 3 , 0,	450000000U),
PLLCPU(18 , 3 , 3 , 0,	456000000U),
PLLCPU(28 , 1 , 2 , 0,	464000000U),
PLLCPU(25 , 2 , 3 , 0,	468000000U),
PLLCPU(19 , 3 , 3 , 0,	480000000U),
PLLCPU(26 , 2 , 3 , 0,	486000000U),
PLLCPU(30 , 1 , 2 , 0,	496000000U),
PLLCPU(20 , 3 , 3 , 0,	504000000U),
PLLCPU(15 , 3 , 2 , 0,	512000000U),
PLLCPU(28 , 2 , 3 , 0,	522000000U),
PLLCPU(21 , 3 , 3 , 0,	528000000U),
PLLCPU(14 , 2 , 1 , 0,	540000000U),
PLLCPU(16 , 3 , 2 , 0,	544000000U),
PLLCPU(22 , 3 , 3 , 0,	552000000U),
PLLCPU(30 , 2 , 3 , 0,	558000000U),
PLLCPU(17 , 3 , 2 , 0,	576000000U),
PLLCPU(24 , 2 , 2 , 0,	600000000U),
PLLCPU(18 , 3 , 2 , 0,	608000000U),
PLLCPU(16 , 2 , 1 , 0,	612000000U),
PLLCPU(25 , 2 , 2 , 0,	624000000U),
PLLCPU(19 , 3 , 2 , 0,	640000000U),
PLLCPU(26 , 2 , 2 , 0,	648000000U),
PLLCPU(20 , 3 , 2 , 0,	672000000U),
PLLCPU(18 , 2 , 1 , 0,	684000000U),
PLLCPU(28 , 2 , 2 , 0,	696000000U),
PLLCPU(21 , 3 , 2 , 0,	704000000U),
PLLCPU(19 , 2 , 1 , 0,	720000000U),
PLLCPU(22 , 3 , 2 , 0,	736000000U),
PLLCPU(30 , 2  , 2 , 0,	744000000U),
PLLCPU(20 , 2 , 1 , 0,	756000000U),
PLLCPU(15 , 3 , 1 , 0,	768000000U),
PLLCPU(21 , 2 , 1 , 0,	792000000U),
PLLCPU(16 ,  3 , 1 , 0,	816000000U),
PLLCPU(22 , 2 , 1 , 0,	828000000U),
PLLCPU(17 , 3 , 1 , 0,	864000000U),
PLLCPU(24 , 2 , 1 , 0,	900000000U),
PLLCPU(18 , 3 , 1 , 0,	912000000U),
PLLCPU(25 , 2 , 1 , 0,	936000000U),
PLLCPU(19 , 3 , 1 , 0,	960000000U),
PLLCPU(26 , 2 , 1 , 0,	972000000U),
PLLCPU(20 , 3 , 1 , 0,	1008000000U),
PLLCPU(28 , 2 , 1 , 0,	1044000000U),
PLLCPU(21 , 3 , 1 , 0,	1056000000U),
PLLCPU(14 , 2 , 0 , 0,	1080000000U),
PLLCPU(22 , 1 , 0 , 0,	1104000000U),
PLLCPU(30 , 2 , 1 , 0,	1116000000U),
PLLCPU(23 , 1 , 0 , 0,	1152000000U),
PLLCPU(24 , 1 , 0 , 0,	1200000000U),
PLLCPU(16 , 2  , 0 , 0,	1224000000U),
PLLCPU(25 , 1 , 0 , 0,	1248000000U),
PLLCPU(26 , 1 , 0 , 0,	1296000000U),
PLLCPU(27 , 1 , 0 , 0,	1344000000U),
PLLCPU(18 , 2 , 0 , 0,	1368000000U),
PLLCPU(28 , 1 , 0 , 0,	1392000000U),
PLLCPU(19 , 2 , 0 , 0,	1440000000U),
PLLCPU(30 , 1 , 0 , 0,	1488000000U),
PLLCPU(20 , 2 , 0 , 0,	1512000000U),
PLLCPU(15 , 3 , 0 , 0,	1536000000U),
PLLCPU(21 , 2 , 0 , 0,	1584000000U),
PLLCPU(16 , 3 , 0 , 0,	1632000000U),
PLLCPU(22 , 2 , 0 , 0,	1656000000U),
PLLCPU(23 , 2 , 0 , 0,	1728000000U),
PLLCPU(24 , 2  , 0 , 0,	1800000000U),
PLLCPU(18 , 3 , 0 , 0,	1824000000U),
PLLCPU(25 , 2 , 0 , 0,	1872000000U),
PLLCPU(19 , 3 , 0 , 0,	1920000000U),
PLLCPU(26 , 2 , 0 , 0,	1944000000U),
PLLCPU(20 , 3 , 0 , 0,	2016000000U),
PLLCPU(28 , 2 , 0 , 0,	2088000000U),
PLLCPU(21 , 3 , 0 , 0,	2112000000U),
PLLCPU(29 , 2 , 0 , 0,	2160000000U),
PLLCPU(22 , 3 , 0 , 0,	2208000000U),
PLLCPU(30 , 2 , 0 , 0,	2232000000U),
PLLCPU(23 , 3 , 0 , 0,	2304000000U),
};
/*n, m, freq */
struct sunxi_clk_factor_freq factor_pllvideo_tbl[] = {
PLLVIDEO(4 , 0, 120000000U),
PLLVIDEO(10 , 1, 132000000U),
PLLVIDEO(5 , 0, 144000000U),
PLLVIDEO(24 , 3, 150000000U),
PLLVIDEO(18 , 2, 152000000U),
PLLVIDEO(12 , 1, 156000000U),
PLLVIDEO(19 , 2, 160000000U),
PLLVIDEO(26 , 3, 162000000U),
PLLVIDEO(6 , 0, 168000000U),
PLLVIDEO(28 , 3, 174000000U),
PLLVIDEO(21 , 2, 176000000U),
PLLVIDEO(14 , 1, 180000000U),
PLLVIDEO(60 , 7, 183000000U),
PLLVIDEO(22 , 2, 184000000U),
PLLVIDEO(30 , 3, 186000000U),
PLLVIDEO(62 , 7, 189000000U),
PLLVIDEO(31 , 3, 192000000U),
PLLVIDEO(64 , 7, 195000000U),
PLLVIDEO(32 , 3, 198000000U),
PLLVIDEO(24 , 2, 200000000U),
PLLVIDEO(66 , 7, 201000000U),
PLLVIDEO(16 , 1, 204000000U),
PLLVIDEO(68 , 7, 207000000U),
PLLVIDEO(25 , 2, 208000000U),
PLLVIDEO(34 , 3, 210000000U),
PLLVIDEO(70 , 7, 213000000U),
PLLVIDEO(35 , 3, 216000000U),
PLLVIDEO(72 , 7, 219000000U),
PLLVIDEO(36 , 3, 222000000U),
PLLVIDEO(27 , 2, 224000000U),
PLLVIDEO(74 , 7, 225000000U),
PLLVIDEO(18 , 1, 228000000U),
PLLVIDEO(76 , 7, 231000000U),
PLLVIDEO(28 , 2, 232000000U),
PLLVIDEO(38 , 3, 234000000U),
PLLVIDEO(78 , 7, 237000000U),
PLLVIDEO(9 , 0, 240000000U),
PLLVIDEO(80 , 7, 243000000U),
PLLVIDEO(40 , 3, 246000000U),
PLLVIDEO(30 , 2, 248000000U),
PLLVIDEO(82 , 7, 249000000U),
PLLVIDEO(20 , 1, 252000000U),
PLLVIDEO(84 , 7, 255000000U),
PLLVIDEO(31 , 2, 256000000U),
PLLVIDEO(42 , 3, 258000000U),
PLLVIDEO(86 , 7, 261000000U),
PLLVIDEO(10 , 0, 264000000U),
PLLVIDEO(88 , 7, 267000000U),
PLLVIDEO(44 , 3, 270000000U),
PLLVIDEO(33 , 2, 272000000U),
PLLVIDEO(90 , 7, 273000000U),
PLLVIDEO(22 , 1, 276000000U),
PLLVIDEO(92 , 7, 279000000U),
PLLVIDEO(34 , 2, 280000000U),
PLLVIDEO(46 , 3, 282000000U),
PLLVIDEO(94 , 7, 285000000U),
PLLVIDEO(11 , 0, 288000000U),
PLLVIDEO(96 , 7, 291000000U),
PLLVIDEO(48 , 3, 294000000U),
PLLVIDEO(36 , 2, 296000000U),
PLLVIDEO(98 , 7, 297000000U),
PLLVIDEO(24 , 1, 300000000U),
PLLVIDEO(100 , 7, 303000000U),
PLLVIDEO(37 , 2, 304000000U),
PLLVIDEO(50 , 3, 306000000U),
PLLVIDEO(102 , 7, 309000000U),
PLLVIDEO(12 , 0, 312000000U),
PLLVIDEO(104 , 7, 315000000U),
PLLVIDEO(52 , 3, 318000000U),
PLLVIDEO(39 , 2, 320000000U),
PLLVIDEO(106 , 7, 321000000U),
PLLVIDEO(26 , 1, 324000000U),
PLLVIDEO(108 , 7, 327000000U),
PLLVIDEO(40 , 2, 328000000U),
PLLVIDEO(54 , 3 , 330000000U),
PLLVIDEO(110 , 7, 333000000U),
PLLVIDEO(13 , 0, 336000000U),
PLLVIDEO(112 , 7, 339000000U),
PLLVIDEO(56 , 3, 342000000U),
PLLVIDEO(114 , 7, 345000000U),
PLLVIDEO(28 , 1, 348000000U),
PLLVIDEO(116 , 7, 351000000U),
PLLVIDEO(58 , 3, 354000000U),
PLLVIDEO(118  , 7, 357000000U),
PLLVIDEO(14 , 0, 360000000U),
PLLVIDEO(120 , 7, 363000000U),
PLLVIDEO(60 , 3, 366000000U),
PLLVIDEO(122 , 7, 369000000U),
PLLVIDEO(30 , 1, 372000000U),
PLLVIDEO(124 , 7, 375000000U),
PLLVIDEO(62 , 3, 378000000U),
PLLVIDEO(126 , 7, 381000000U),
PLLVIDEO(15 , 0, 384000000U),
PLLVIDEO(64 , 3, 390000000U),
PLLVIDEO(32 , 1, 396000000U),
PLLVIDEO(66 , 3, 402000000U),
PLLVIDEO(16 , 0, 408000000U),
PLLVIDEO(68 , 3, 414000000U),
PLLVIDEO(34 , 1, 420000000U),
PLLVIDEO(70 , 3, 426000000U),
PLLVIDEO(17 , 0, 432000000U),
PLLVIDEO(72 , 3, 438000000U),
PLLVIDEO(36 , 1, 444000000U),
PLLVIDEO(74 , 3, 450000000U),
PLLVIDEO(18 , 0, 456000000U),
PLLVIDEO(76 , 3, 462000000U),
PLLVIDEO(38 , 1, 468000000U),
PLLVIDEO(78 , 3, 474000000U),
PLLVIDEO(19 , 0, 480000000U),
PLLVIDEO(80 , 3, 486000000U),
PLLVIDEO(40 , 1, 492000000U),
PLLVIDEO(82 , 3, 498000000U),
PLLVIDEO(20 , 0, 504000000U),
PLLVIDEO(84 , 3, 510000000U),
PLLVIDEO(85 , 3, 516000000U),
PLLVIDEO(86 , 3, 522000000U),
PLLVIDEO(21 , 0, 528000000U),
PLLVIDEO(88 , 3, 534000000U),
PLLVIDEO(89 , 3, 540000000U),
PLLVIDEO(90 , 3, 546000000U),
PLLVIDEO(22 , 0, 552000000U),
PLLVIDEO(92 , 3, 558000000U),
PLLVIDEO(93 , 3, 564000000U),
PLLVIDEO(94 , 3, 570000000U),
PLLVIDEO(23 , 0, 576000000U),
PLLVIDEO(96 , 3, 582000000U),
PLLVIDEO(97 , 3, 588000000U),
PLLVIDEO(98 , 3, 594000000U),
PLLVIDEO(24 , 0, 600000000U),
PLLVIDEO(100 , 3, 606000000U),
PLLVIDEO(101 , 3, 612000000U),
PLLVIDEO(102 , 3, 618000000U),
PLLVIDEO(25 , 0, 624000000U),
PLLVIDEO(104 , 3, 630000000U),
PLLVIDEO(105 , 3, 636000000U),
PLLVIDEO(106 , 3, 642000000U),
PLLVIDEO(26 , 0, 648000000U),
PLLVIDEO(108 , 3, 654000000U),
PLLVIDEO(109 , 3, 660000000U),
PLLVIDEO(110 , 3, 666000000U),
PLLVIDEO(27 , 0, 672000000U),
PLLVIDEO(112 , 3, 678000000U),
PLLVIDEO(113 , 3, 684000000U),
PLLVIDEO(114 , 3, 690000000U),
PLLVIDEO(28 , 0, 696000000U),
PLLVIDEO(116 , 3, 702000000U),
PLLVIDEO(117 , 3, 708000000U),
PLLVIDEO(118 , 3, 714000000U),
PLLVIDEO(29 , 0, 720000000U),
PLLVIDEO(120 , 3, 726000000U),
PLLVIDEO(121 , 3, 732000000U),
PLLVIDEO(122 , 3, 738000000U),
PLLVIDEO(30 , 0, 744000000U),
PLLVIDEO(124 , 3, 750000000U),
PLLVIDEO(125 , 3, 756000000U),
PLLVIDEO(126  , 3, 762000000U),
PLLVIDEO(31 , 0, 768000000U),
PLLVIDEO(32 , 0, 792000000U),
PLLVIDEO(33 , 0, 816000000U),
PLLVIDEO(34 , 0, 840000000U),
PLLVIDEO(35 , 0, 864000000U),
PLLVIDEO(36 , 0, 888000000U),
};
/*n,m,freq */
struct sunxi_clk_factor_freq factor_pllve_tbl[] = {
PLLVE(4, 0, 120000000U),
PLLVE(10, 1, 132000000U),
PLLVE(22, 3, 138000000U),
PLLVE(11, 1, 144000000U),
PLLVE(24, 3, 150000000U),
PLLVE(18, 2, 152000000U),
PLLVE(12, 1, 156000000U),
PLLVE(19, 2, 160000000U),
PLLVE(26, 3, 162000000U),
PLLVE(13, 1, 168000000U),
PLLVE(56, 7, 171000000U),
PLLVE(57, 7, 174000000U),
PLLVE(21, 2, 176000000U),
PLLVE(58, 7, 177000000U),
PLLVE(14, 1, 180000000U),
PLLVE(60, 7, 183000000U),
PLLVE(22, 2, 184000000U),
PLLVE(30, 3, 186000000U),
PLLVE(62, 7, 189000000U),
PLLVE(15, 1, 192000000U),
PLLVE(64, 7, 195000000U),
PLLVE(32, 3, 198000000U),
PLLVE(24, 2, 200000000U),
PLLVE(66, 7, 201000000U),
PLLVE(16, 1, 204000000U),
PLLVE(68, 7, 207000000U),
PLLVE(25, 2, 208000000U),
PLLVE(34, 3, 210000000U),
PLLVE(70, 7, 213000000U),
PLLVE(17, 1, 216000000U),
PLLVE(72, 7, 219000000U),
PLLVE(36, 3, 222000000U),
PLLVE(27, 2, 224000000U),
PLLVE(74, 7, 225000000U),
PLLVE(37, 3, 228000000U),
PLLVE(76, 7, 231000000U),
PLLVE(28, 2, 232000000U),
PLLVE(38, 3, 234000000U),
PLLVE(78, 7, 237000000U),
PLLVE(39, 3, 240000000U),
PLLVE(80, 7, 243000000U),
PLLVE(81, 7, 246000000U),
PLLVE(30, 2, 248000000U),
PLLVE(82, 7, 249000000U),
PLLVE(20, 1, 252000000U),
PLLVE(84, 7, 255000000U),
PLLVE(31, 2, 256000000U),
PLLVE(85, 7, 258000000U),
PLLVE(86, 7, 261000000U),
PLLVE(43, 3, 264000000U),
PLLVE(88, 7, 267000000U),
PLLVE(44, 3, 270000000U),
PLLVE(33, 2, 272000000U),
PLLVE(90, 7, 273000000U),
PLLVE(45, 3, 276000000U),
PLLVE(92, 7, 279000000U),
PLLVE(34, 2, 280000000U),
PLLVE(46, 3, 282000000U),
PLLVE(94, 7, 285000000U),
PLLVE(95, 7, 288000000U),
PLLVE(96, 7, 291000000U),
PLLVE(97, 7, 294000000U),
PLLVE(36, 2, 296000000U),
PLLVE(98, 7, 297000000U),
PLLVE(99, 7, 300000000U),
PLLVE(100, 7, 303000000U),
PLLVE(37, 2, 304000000U),
PLLVE(50, 3, 306000000U),
PLLVE(102, 7, 309000000U),
PLLVE(25, 1, 312000000U),
PLLVE(104, 7, 315000000U),
PLLVE(52, 3, 318000000U),
PLLVE(39, 2, 320000000U),
PLLVE(106, 7, 321000000U),
PLLVE(26, 1, 324000000U),
PLLVE(108, 7, 327000000U),
PLLVE(40, 2, 328000000U),
PLLVE(54, 3, 330000000U),
PLLVE(110, 7, 333000000U),
PLLVE(55, 3, 336000000U),
PLLVE(112, 7, 339000000U),
PLLVE(56, 3, 342000000U),
PLLVE(114, 7, 345000000U),
PLLVE(57, 3, 348000000U),
PLLVE(116, 7, 351000000U),
PLLVE(58, 3, 354000000U),
PLLVE(118, 7, 357000000U),
PLLVE(59, 3, 360000000U),
PLLVE(120, 7, 363000000U),
PLLVE(121, 7, 366000000U),
PLLVE(122, 7, 369000000U),
PLLVE(61, 3, 372000000U),
PLLVE(124, 7, 375000000U),
PLLVE(62, 3, 378000000U),
PLLVE(126, 7, 381000000U),
PLLVE(63, 3, 384000000U),
PLLVE(64, 3, 390000000U),
PLLVE(65, 3, 396000000U),
PLLVE(66, 3, 402000000U),
PLLVE(67, 3, 408000000U),
PLLVE(68, 3, 414000000U),
PLLVE(69, 3, 420000000U),
PLLVE(70, 3, 426000000U),
PLLVE(71, 3, 432000000U),
PLLVE(72, 3, 438000000U),
PLLVE(73, 3, 444000000U),
PLLVE(74, 3, 450000000U),
PLLVE(75, 3, 456000000U),
PLLVE(76, 3, 462000000U),
PLLVE(77, 3, 468000000U),
PLLVE(78, 3, 474000000U),
PLLVE(79, 3, 480000000U),
PLLVE(80, 3, 486000000U),
PLLVE(81, 3, 492000000U),
PLLVE(82, 3, 498000000U),
PLLVE(83, 3, 504000000U),
PLLVE(84, 3, 510000000U),
PLLVE(85, 3, 516000000U),
PLLVE(86, 3, 522000000U),
PLLVE(87, 3, 528000000U),
PLLVE(88, 3, 534000000U),
PLLVE(89, 3, 540000000U),
PLLVE(90, 3, 546000000U),
PLLVE(91, 3, 552000000U),
PLLVE(92, 3, 558000000U),
PLLVE(93, 3, 564000000U),
PLLVE(94, 3, 570000000U),
PLLVE(95, 3, 576000000U),
PLLVE(96, 3, 582000000U),
PLLVE(97, 3, 588000000U),
PLLVE(98, 3, 594000000U),
PLLVE(99, 3, 600000000U),
PLLVE(100, 3, 606000000U),
PLLVE(101, 3, 612000000U),
PLLVE(102, 3, 618000000U),
PLLVE(103, 3, 624000000U),
PLLVE(104, 3, 630000000U),
PLLVE(105, 3, 636000000U),
PLLVE(106, 3, 642000000U),
PLLVE(107, 3, 648000000U),
PLLVE(108, 3, 654000000U),
PLLVE(109, 3, 660000000U),
PLLVE(110, 3, 666000000U),
PLLVE(111, 3, 672000000U),
PLLVE(112, 3, 678000000U),
PLLVE(113, 3, 684000000U),
PLLVE(114, 3, 690000000U),
PLLVE(115, 3, 696000000U),
PLLVE(116, 3, 702000000U),
PLLVE(117, 3, 708000000U),
PLLVE(118, 3, 714000000U),
PLLVE(119, 3, 720000000U),
PLLVE(120, 3, 726000000U),
PLLVE(121, 3, 732000000U),
PLLVE(122, 3, 738000000U),
PLLVE(123, 3, 744000000U),
PLLVE(124, 3, 750000000U),
PLLVE(125, 3, 756000000U),
PLLVE(126, 3, 762000000U),
PLLVE(127, 3, 768000000U),
PLLVE(32, 0, 792000000U),
PLLVE(33, 0 , 816000000U),
PLLVE(34, 0, 840000000U),
PLLVE(35, 0, 864000000U),
PLLVE(36, 0, 888000000U),
};
/* n,k,m,freq */
struct sunxi_clk_factor_freq factor_pllddr0_tbl[] = {
PLLDDR0(7	, 0 ,	3 ,	48000000U),
PLLDDR0(8	, 0 ,	3 ,	54000000U),
PLLDDR0(6	, 0 ,	2 ,	56000000U),
PLLDDR0(9	, 0 ,	3 ,	60000000U),
PLLDDR0(7	, 0 ,	2 ,	64000000U),
PLLDDR0(10	, 0 ,	3 ,	66000000U),
PLLDDR0(11	, 0 ,	3 ,	72000000U),
PLLDDR0(12	, 0 ,	3 ,	78000000U),
PLLDDR0(9	, 0 ,	2 ,	80000000U),
PLLDDR0(13	, 0 ,	3 ,	84000000U),
PLLDDR0(10	, 0 ,	2 ,	88000000U),
PLLDDR0(14	, 0 ,	3 ,	90000000U),
PLLDDR0(15	, 0 ,	3 ,	96000000U),
PLLDDR0(16	, 0 ,	3 ,	102000000U),
PLLDDR0(12	, 0 ,	2 ,	104000000U),
PLLDDR0(17	, 0 ,	3 ,	108000000U),
PLLDDR0(6	, 1 ,	2 ,	112000000U),
PLLDDR0(18	, 0 ,	3 ,	114000000U),
PLLDDR0(4	, 3 ,	3 ,	120000000U),
PLLDDR0(6	, 2 ,	3 ,	126000000U),
PLLDDR0(15	, 0 ,	2 ,	128000000U),
PLLDDR0(21	, 0 ,	3 ,	132000000U),
PLLDDR0(16	, 0 ,	2 ,	136000000U),
PLLDDR0(22	, 0 ,	3 ,	138000000U),
PLLDDR0(5	, 3 ,	3 ,	144000000U),
PLLDDR0(24	, 0 ,	3 ,	150000000U),
PLLDDR0(18	, 0 ,	2 ,	152000000U),
PLLDDR0(25	, 0 ,	3 ,	156000000U),
PLLDDR0(19	, 0 ,	2 ,	160000000U),
PLLDDR0(26	, 0 ,	3 ,	162000000U),
PLLDDR0(27	, 0 ,	3 ,	168000000U),
PLLDDR0(28	, 0 ,	3 ,	174000000U),
PLLDDR0(10	, 1 ,	2 ,	176000000U),
PLLDDR0(9	, 2 ,	3 ,	180000000U),
PLLDDR0(22	, 0 ,	2 ,	184000000U),
PLLDDR0(30	, 0 ,	3 ,	186000000U),
PLLDDR0(7	, 3 ,	3 ,	192000000U),
PLLDDR0(10	, 2 ,	3 ,	198000000U),
PLLDDR0(24	, 0  ,	2 ,	200000000U),
PLLDDR0(16	, 1 ,	3 ,	204000000U),
PLLDDR0(12	, 1 ,	2 ,	208000000U),
PLLDDR0(11	, 2 ,	3 ,	216000000U),
PLLDDR0(13	, 1 ,	2 ,	224000000U),
PLLDDR0(18	, 1 ,	3 ,	228000000U),
PLLDDR0(28	, 0 ,	2 ,	232000000U),
PLLDDR0(12	, 2 ,	3 ,	234000000U),
PLLDDR0(19	, 1 ,	3 ,	240000000U),
PLLDDR0(30	, 0 ,	2 ,	248000000U),
PLLDDR0(20	, 1 ,	3,	252000000U),
PLLDDR0(15	, 1 ,	2,	256000000U),
PLLDDR0(21	, 1 ,	3,	264000000U),
PLLDDR0(14	, 2 ,	3,	270000000U),
PLLDDR0(16	, 1 ,	2,	272000000U),
PLLDDR0(22	, 1 ,	3,	276000000U),
PLLDDR0(23	, 1 ,	3,	288000000U),
PLLDDR0(24	, 1 ,	3,	300000000U),
PLLDDR0(18	, 1 ,	2,	304000000U),
PLLDDR0(16	, 2 ,	3,	306000000U),
PLLDDR0(25	, 1 ,	3,	312000000U),
PLLDDR0(19	, 1 ,	2,	320000000U),
PLLDDR0(26	, 1 ,	3,	324000000U),
PLLDDR0(27	, 1 ,	3,	336000000U),
PLLDDR0(18	, 2 ,	3,	342000000U),
PLLDDR0(28	, 1 ,	3,	348000000U),
PLLDDR0(21	, 1 ,	2,	352000000U),
PLLDDR0(29	, 1 ,	3,	360000000U),
PLLDDR0(22	, 1 ,	2,	368000000U),
PLLDDR0(30	, 1 ,	3,	372000000U),
PLLDDR0(20	, 2 ,	3,	378000000U),
PLLDDR0(15	, 2,	2,	384000000U),
PLLDDR0(21	, 2,	3,	396000000U),
PLLDDR0(24	, 1 ,	2,	400000000U),
PLLDDR0(16	, 3 ,	3,	408000000U),
PLLDDR0(22	,  2,	3,	414000000U),
PLLDDR0(25	, 1 ,	2,	416000000U),
PLLDDR0(26	, 1 ,	2,	432000000U),
PLLDDR0(27	, 1 ,	2,	448000000U),
PLLDDR0(24	, 2 ,	3,	450000000U),
PLLDDR0(18	, 2 ,	2,	456000000U),
PLLDDR0(28	, 1 ,	2,	464000000U),
PLLDDR0(25	, 2 ,	3,	468000000U),
PLLDDR0(19	, 2 ,	2,	480000000U),
PLLDDR0(26	, 2 ,	3,	486000000U),
PLLDDR0(30	, 1 ,	2 ,	496000000U),
PLLDDR0(20	, 2 ,	2 ,	504000000U),
PLLDDR0(15	, 3 ,	2 ,	512000000U),
PLLDDR0(21	, 2 ,	2 ,	528000000U),
PLLDDR0(14	, 2 ,	1 ,	540000000U),
PLLDDR0(16	, 3 ,	2 ,	544000000U),
PLLDDR0(22	, 2 ,	2 ,	552000000U),
PLLDDR0(23	, 0 ,	0 ,	576000000U),
PLLDDR0(24	, 2 ,	2 ,	600000000U),
PLLDDR0(18	, 3 ,	2 ,	608000000U),
PLLDDR0(16	, 2  ,	1 ,	612000000U),
PLLDDR0(25	, 2 ,	2 ,	624000000U),
PLLDDR0(19	, 3 ,	2 ,	640000000U),
PLLDDR0(26	, 2 ,	2 ,	648000000U),
PLLDDR0(27	, 2 ,	2 ,	672000000U),
PLLDDR0(18	, 2 ,	1 ,	684000000U),
PLLDDR0(28	, 1 ,	1 ,	696000000U),
PLLDDR0(19	, 2 ,	1 ,	720000000U),
PLLDDR0(30	, 1 ,	1 ,	744000000U),
PLLDDR0(20	, 2 ,	1 ,	756000000U),
PLLDDR0(15	, 3 ,	1 ,	768000000U),
PLLDDR0(21	, 2 ,	1 ,	792000000U),
PLLDDR0(16	, 3 ,	1 ,	816000000U),
PLLDDR0(22	, 2 ,	1 ,	828000000U),
PLLDDR0(23	, 2 ,	1 ,	864000000U),
PLLDDR0(24	, 2 ,	1 ,	900000000U),
PLLDDR0(18	, 3 ,	1 ,	912000000U),
PLLDDR0(25	, 2 ,	1 ,	936000000U),
PLLDDR0(19	, 3 ,	1 ,	960000000U),
PLLDDR0(26	, 2 ,	1 ,	972000000U),
PLLDDR0(27	, 2 ,	1 ,	1008000000U),
PLLDDR0(10	, 3 ,	0 ,	1056000000U),
PLLDDR0(14	, 2 ,	0 ,	1080000000U),
PLLDDR0(22	, 1 ,	0 ,	1104000000U),
PLLDDR0(11	, 3 ,	0 ,	1152000000U),
PLLDDR0(24	, 1  ,	0 ,	1200000000U),
PLLDDR0(16	, 2 ,	0 ,	1224000000U),
PLLDDR0(12	, 3 ,	0 ,	1248000000U),
PLLDDR0(17	, 2 ,	0 ,	1296000000U),
PLLDDR0(13	, 3 ,	0 ,	1344000000U),
PLLDDR0(18	, 2 ,	0 ,	1368000000U),
PLLDDR0(28	, 1 ,	0 ,	1392000000U),
PLLDDR0(14	, 3 ,	0 ,	1440000000U),
PLLDDR0(30	, 1 ,	0 ,	1488000000U),
PLLDDR0(20	, 2 ,	0 ,	1512000000U),
PLLDDR0(15	, 3 ,	0 ,	1536000000U),
PLLDDR0(21	, 2 ,	0 ,	1584000000U),
PLLDDR0(16	, 3 ,	0 ,	1632000000U),
PLLDDR0(22	, 2 ,	0 ,	1656000000U),
PLLDDR0(17	, 3 ,	0 ,	1728000000U),
PLLDDR0(24	, 2 ,	0 ,	1800000000U),
PLLDDR0(18	, 3 ,	0 ,	1824000000U),
PLLDDR0(25	, 2 ,	0 ,	1872000000U),
PLLDDR0(19	, 3 ,	0 ,	1920000000U),
PLLDDR0(26	, 2 ,	0 ,	1944000000U),
PLLDDR0(20	, 3 ,	0 ,	2016000000U),
};
/* n,k,freq */
struct sunxi_clk_factor_freq factor_pllperiph_tbl[] = {
PLLPERIPH(7,  0 ,	96000000U),
PLLPERIPH(9,  0 ,	120000000U),
PLLPERIPH(10, 0 ,	132000000U),
PLLPERIPH(11, 0 ,	144000000U),
PLLPERIPH(12, 0 ,	156000000U),
PLLPERIPH(13, 0 ,	168000000U),
PLLPERIPH(14, 0 ,	180000000U),
PLLPERIPH(15, 0 ,	192000000U),
PLLPERIPH(16, 0 ,	204000000U),
PLLPERIPH(17, 0 ,	216000000U),
PLLPERIPH(18, 0 ,	228000000U),
PLLPERIPH(9, 1 ,	240000000U),
PLLPERIPH(20, 0 ,	252000000U),
PLLPERIPH(21, 0 ,	264000000U),
PLLPERIPH(22, 0 ,	276000000U),
PLLPERIPH(23, 0 ,	288000000U),
PLLPERIPH(24, 0 ,	300000000U),
PLLPERIPH(25, 0 ,	312000000U),
PLLPERIPH(26, 0 ,	324000000U),
PLLPERIPH(27, 0 ,	336000000U),
PLLPERIPH(28, 0 ,	348000000U),
PLLPERIPH(14, 1 ,	360000000U),
PLLPERIPH(30, 0 ,	372000000U),
PLLPERIPH(15, 1 ,	384000000U),
PLLPERIPH(10, 2 ,	396000000U),
PLLPERIPH(16, 1 ,	408000000U),
PLLPERIPH(17, 1 ,	432000000U),
PLLPERIPH(18, 1 ,	456000000U),
PLLPERIPH(12, 2 ,	468000000U),
PLLPERIPH(19,  1 ,	480000000U),
PLLPERIPH(20, 1 ,	504000000U),
PLLPERIPH(21, 1 ,	528000000U),
PLLPERIPH(14, 2 ,	540000000U),
PLLPERIPH(22, 1 ,	552000000U),
PLLPERIPH(23, 1 ,	576000000U),
PLLPERIPH(24,  1 ,	600000000U),
PLLPERIPH(16, 2 ,	612000000U),
PLLPERIPH(25, 1 ,	624000000U),
PLLPERIPH(26, 1 ,	648000000U),
PLLPERIPH(27, 1  ,	672000000U),
PLLPERIPH(18, 2 ,	684000000U),
PLLPERIPH(28, 1 ,	696000000U),
PLLPERIPH(29, 1 ,	720000000U),
PLLPERIPH(30, 1 ,	744000000U),
};
/* n,m,freq */
struct sunxi_clk_factor_freq factor_pllgpu_tbl[] = {
PLLGPU(4  , 0 ,	120000000U),
PLLGPU(15 , 2 ,	128000000U),
PLLGPU(10 , 1 ,	132000000U),
PLLGPU(16 , 2 ,	136000000U),
PLLGPU(11 , 1 ,	144000000U),
PLLGPU(18 , 2 ,	152000000U),
PLLGPU(12 , 1 ,	156000000U),
PLLGPU(19 , 2 ,	160000000U),
PLLGPU(26 , 3 ,	162000000U),
PLLGPU(54 , 7 ,	165000000U),
PLLGPU(6 , 0 ,	168000000U),
PLLGPU(56 , 7 ,	171000000U),
PLLGPU(28 , 3 ,	174000000U),
PLLGPU(21 , 2 ,	176000000U),
PLLGPU(58 , 7 ,	177000000U),
PLLGPU(29 , 3 ,	180000000U),
PLLGPU(60 , 7 ,	183000000U),
PLLGPU(22 , 2 ,	184000000U),
PLLGPU(30 , 3 ,	186000000U),
PLLGPU(62 , 7 ,	189000000U),
PLLGPU(31 , 3 ,	192000000U),
PLLGPU(64 , 7 ,	195000000U),
PLLGPU(32 , 3 ,	198000000U),
PLLGPU(24 , 2 ,	200000000U),
PLLGPU(66 , 7 ,	201000000U),
PLLGPU(33 , 3 ,	204000000U),
PLLGPU(68 , 7 ,	207000000U),
PLLGPU(25 , 2 ,	208000000U),
PLLGPU(34 , 3 ,	210000000U),
PLLGPU(70 , 7 ,	213000000U),
PLLGPU(35 , 3 ,	216000000U),
PLLGPU(72 , 7 ,	219000000U),
PLLGPU(36 , 3 ,	222000000U),
PLLGPU(27 , 2 ,	224000000U),
PLLGPU(74 , 7,	225000000U),
PLLGPU(37 , 3 ,	228000000U),
PLLGPU(76 , 7 ,	231000000U),
PLLGPU(28 , 2 ,	232000000U),
PLLGPU(38 , 3 ,	234000000U),
PLLGPU(78 , 7 ,	237000000U),
PLLGPU(39 , 3 ,	240000000U),
PLLGPU(80 , 7 ,	243000000U),
PLLGPU(40 , 3 ,	246000000U),
PLLGPU(30 , 2 ,	248000000U),
PLLGPU(82 , 7 ,	249000000U),
PLLGPU(20 , 1 ,	252000000U),
PLLGPU(84 , 7 ,	255000000U),
PLLGPU(31 , 2 ,	256000000U),
PLLGPU(42 , 3 ,	258000000U),
PLLGPU(86 , 7 ,	261000000U),
PLLGPU(43 , 3 ,	264000000U),
PLLGPU(88 , 7 ,	267000000U),
PLLGPU(44 , 3 ,	270000000U),
PLLGPU(33 , 2 ,	272000000U),
PLLGPU(90 , 7 ,	273000000U),
PLLGPU(45 , 3 ,	276000000U),
PLLGPU(92 , 7 ,	279000000U),
PLLGPU(34 , 2 ,	280000000U),
PLLGPU(46 , 3 ,	282000000U),
PLLGPU(94 , 7 ,	285000000U),
PLLGPU(47 , 3 ,	288000000U),
PLLGPU(96 , 7 ,	291000000U),
PLLGPU(48 , 3 ,	294000000U),
PLLGPU(36 , 2 ,	296000000U),
PLLGPU(98 , 7 ,	297000000U),
PLLGPU(49 , 3 ,	300000000U),
PLLGPU(100 , 7 ,	303000000U),
PLLGPU(37 , 2 ,		304000000U),
PLLGPU(50 , 3 ,		306000000U),
PLLGPU(102 , 7 ,	309000000U),
PLLGPU(51 , 3 ,		312000000U),
PLLGPU(104 , 7 ,	315000000U),
PLLGPU(52 , 3 ,		318000000U),
PLLGPU(39 , 2 ,		320000000U),
PLLGPU(106 , 7 ,	321000000U),
PLLGPU(53 , 3 ,		324000000U),
PLLGPU(108 , 7 ,	327000000U),
PLLGPU(40 , 2 ,		328000000U),
PLLGPU(54 , 3 ,		330000000U),
PLLGPU(110 , 7 ,	333000000U),
PLLGPU(55 , 3 ,		336000000U),
PLLGPU(112   , 7 ,	339000000U),
PLLGPU(56 , 3 ,		342000000U),
PLLGPU(114 , 7 ,	345000000U),
PLLGPU(57 , 3 ,		348000000U),
PLLGPU(116 , 7 ,	351000000U),
PLLGPU(58 , 3 ,		354000000U),
PLLGPU(118 , 7 ,	357000000U),
PLLGPU(59 , 3  ,	360000000U),
PLLGPU(120 , 7 ,	363000000U),
PLLGPU(60 , 3  ,	366000000U),
PLLGPU(122 , 7 ,	369000000U),
PLLGPU(61 , 3 ,	372000000U),
PLLGPU(124, 7 ,	375000000U),
PLLGPU(62 , 3,	378000000U),
PLLGPU(126, 7,	381000000U),
PLLGPU(63 , 3 ,	384000000U),
PLLGPU(64 , 3 ,	390000000U),
PLLGPU(65 , 3 ,	396000000U),
PLLGPU(66 , 3 ,	402000000U),
PLLGPU(33 , 1 ,	408000000U),
PLLGPU(68 , 3 , 414000000U),
PLLGPU(69 , 3 ,	420000000U),
PLLGPU(70 , 3 ,	426000000U),
PLLGPU(71 , 3 ,	432000000U),
PLLGPU(72 , 3 ,	438000000U),
PLLGPU(73 , 3 ,	444000000U),
PLLGPU(74 , 3 ,	450000000U),
PLLGPU(75 , 3 ,	456000000U),
PLLGPU(76 , 3 ,	462000000U),
PLLGPU(77 , 3 ,	468000000U),
PLLGPU(78 , 3 ,	474000000U),
PLLGPU(79 , 3 ,	480000000U),
PLLGPU(80 , 3 ,	486000000U),
PLLGPU(81 , 3 ,	492000000U),
PLLGPU(82 , 3 ,	498000000U),
PLLGPU(83 , 3 ,	504000000U),
PLLGPU(84 , 3 ,	510000000U),
PLLGPU(85 , 3 ,	516000000U),
PLLGPU(86 , 3 ,	522000000U),
PLLGPU(87 , 3 ,	528000000U),
PLLGPU(88 , 3 ,	534000000U),
PLLGPU(89 , 3 ,	540000000U),
PLLGPU(90 , 3 ,	546000000U),
PLLGPU(91 , 3 ,	552000000U),
PLLGPU(92 , 3 ,	558000000U),
PLLGPU(93 , 3 ,	564000000U),
PLLGPU(94 , 3 ,	570000000U),
PLLGPU(95 , 3 ,	576000000U),
PLLGPU(96 , 3 ,	582000000U),
PLLGPU(97 , 3 ,	588000000U),
PLLGPU(98 , 3 , 594000000U),
PLLGPU(99 , 3 , 600000000U),
PLLGPU(100 , 3 , 606000000U),
PLLGPU(101 , 3 , 612000000U),
PLLGPU(102 , 3 ,	618000000U),
PLLGPU(103 , 3 ,	624000000U),
PLLGPU(104 , 3 ,	630000000U),
PLLGPU(105 , 3 ,	636000000U),
PLLGPU(106 , 3 ,	642000000U),
PLLGPU(107 , 3 ,	648000000U),
PLLGPU(108 , 3 ,	654000000U),
PLLGPU(109 , 3 ,	660000000U),
PLLGPU(110 , 3 ,	666000000U),
PLLGPU(111 , 3 ,	672000000U),
PLLGPU(112 , 3 ,	678000000U),
PLLGPU(113 , 3 ,	684000000U),
PLLGPU(114 , 3 ,	690000000U),
PLLGPU(115 , 3 ,	696000000U),
PLLGPU(116 , 3 ,	702000000U),
PLLGPU(117 , 3 ,	708000000U),
PLLGPU(118 , 3 ,	714000000U),
PLLGPU(119 , 3 ,	720000000U),
PLLGPU(120 , 3 ,	726000000U),
PLLGPU(121 , 3 ,	732000000U),
PLLGPU(122 , 3 ,	738000000U),
PLLGPU(123 , 3 ,	744000000U),
PLLGPU(124 , 3 ,	750000000U),
PLLGPU(125 , 3 ,	756000000U),
PLLGPU(126 , 3 ,	 762000000U),
PLLGPU(127 , 3 ,	768000000U),
PLLGPU(32 , 0 ,		792000000U),
PLLGPU(33 , 0 ,		816000000U),
PLLGPU(34 , 0 ,		840000000U),
PLLGPU(35 , 0 ,		864000000U),
PLLGPU(36 , 0 ,		888000000U),
};
/* n,m,freq */
struct sunxi_clk_factor_freq factor_pllhsic_tbl[] = {
PLLHSIC(19	, 3 ,	120000000U),
PLLHSIC(20	, 3 ,	126000000U),
PLLHSIC(15	, 2 ,	128000000U),
PLLHSIC(10	, 1 ,	132000000U),
PLLHSIC(16	, 2 ,	136000000U),
PLLHSIC(22	, 3 ,	138000000U),
PLLHSIC(11	, 1 ,	144000000U),
PLLHSIC(24	, 3 ,	150000000U),
PLLHSIC(18	, 2 ,	152000000U),
PLLHSIC(12	, 1 ,	156000000U),
PLLHSIC(52	, 7 ,	159000000U),
PLLHSIC(19	, 2 ,	160000000U),
PLLHSIC(26	, 3 ,	162000000U),
PLLHSIC(54	, 7 ,	165000000U),
PLLHSIC(13	, 1 ,	168000000U),
PLLHSIC(56	, 7 ,	171000000U),
PLLHSIC(28	, 3 ,	174000000U),
PLLHSIC(21	, 2 ,	176000000U),
PLLHSIC(58	, 7 ,	177000000U),
PLLHSIC(29	, 3 ,	180000000U),
PLLHSIC(60	, 7 ,	183000000U),
PLLHSIC(22	, 2 ,	184000000U),
PLLHSIC(30	, 3  ,	186000000U),
PLLHSIC(62	, 7 ,	189000000U),
PLLHSIC(31	, 3 ,	192000000U),
PLLHSIC(64	, 7 ,	195000000U),
PLLHSIC(32	, 3 ,	198000000U),
PLLHSIC(24	, 2 ,	200000000U),
PLLHSIC(66	, 7 ,	201000000U),
PLLHSIC(33	, 3 ,	204000000U),
PLLHSIC(68	, 7 ,	207000000U),
PLLHSIC(25	, 2 ,	208000000U),
PLLHSIC(34	, 3 ,	210000000U),
PLLHSIC(70	, 7 ,	213000000U),
PLLHSIC(35	, 3  ,	216000000U),
PLLHSIC(72	, 7 ,	219000000U),
PLLHSIC(36	,  3,	222000000U),
PLLHSIC(27	, 2 ,	224000000U),
PLLHSIC(74	, 7 ,	225000000U),
PLLHSIC(37	, 3 ,	228000000U),
PLLHSIC(76	, 7 ,	231000000U),
PLLHSIC(28	, 2 ,	232000000U),
PLLHSIC(38	, 3 ,	234000000U),
PLLHSIC(78	, 7 ,	237000000U),
PLLHSIC(39	, 3 ,	240000000U),
PLLHSIC(80	, 7 ,	243000000U),
PLLHSIC(40	, 3 ,	246000000U),
PLLHSIC(30	, 2 ,	248000000U),
PLLHSIC(82	, 7 ,	249000000U),
PLLHSIC(41	, 3 ,	252000000U),
PLLHSIC(84	, 7 ,	255000000U),
PLLHSIC(31	, 2 ,	256000000U),
PLLHSIC(42	, 3 ,	258000000U),
PLLHSIC(86	, 7 ,	261000000U),
PLLHSIC(43	,  3 ,	264000000U),
PLLHSIC(88	, 7 ,	267000000U),
PLLHSIC(44	, 3 ,	270000000U),
PLLHSIC(33	, 2 ,	272000000U),
PLLHSIC(90	, 7 ,	273000000U),
PLLHSIC(45	, 3 ,	276000000U),
PLLHSIC(92	, 7 ,	279000000U),
PLLHSIC(34	, 2 ,	280000000U),
PLLHSIC(46	, 3 ,	282000000U),
PLLHSIC(94	, 7 ,	285000000U),
PLLHSIC(47	, 3 ,	288000000U),
PLLHSIC(96	, 7 ,	291000000U),
PLLHSIC(48	, 3 ,	294000000U),
PLLHSIC(36	, 2 ,	296000000U),
PLLHSIC(98	, 7 ,	297000000U),
PLLHSIC(49	, 3 ,	300000000U),
PLLHSIC(100	, 7 ,	303000000U),
PLLHSIC(37	, 2 ,	304000000U),
PLLHSIC(50	, 3 ,	306000000U),
PLLHSIC(102	, 7 ,	309000000U),
PLLHSIC(51	, 3 ,	312000000U),
PLLHSIC(104	, 7 ,	315000000U),
PLLHSIC(52	, 3 ,	318000000U),
PLLHSIC(39	, 2,	320000000U),
PLLHSIC(106	, 7 ,	321000000U),
PLLHSIC(53	, 3 ,	324000000U),
PLLHSIC(108	, 7 ,	327000000U),
PLLHSIC(40	, 2 ,	328000000U),
PLLHSIC(54	, 3 ,	330000000U),
PLLHSIC(110	, 7 ,	333000000U),
PLLHSIC(55	, 3 ,	336000000U),
PLLHSIC(112	, 7 ,	339000000U),
PLLHSIC(56	, 3 ,	342000000U),
PLLHSIC(114	, 7 ,	345000000U),
PLLHSIC(57	, 3 ,	348000000U),
PLLHSIC(116	, 7 ,	351000000U),
PLLHSIC(58	, 3 ,	354000000U),
PLLHSIC(118	, 7 ,	357000000U),
PLLHSIC(59	, 3 ,	360000000U),
PLLHSIC(120	, 7 ,	363000000U),
PLLHSIC(60	, 3 ,	366000000U),
PLLHSIC(122	, 7 ,	369000000U),
PLLHSIC(61	, 3 ,	372000000U),
PLLHSIC(124	, 7 ,	375000000U),
PLLHSIC(62	, 3 ,	378000000U),
PLLHSIC(126	, 7 ,	381000000U),
PLLHSIC(63	, 3 ,	384000000U),
PLLHSIC(64	, 3 ,	390000000U),
PLLHSIC(65	, 3 ,	396000000U),
PLLHSIC(66	, 3 ,	402000000U),
PLLHSIC(67	, 3 ,	408000000U),
PLLHSIC(68	, 3 ,	414000000U),
PLLHSIC(69	, 3 ,	420000000U),
PLLHSIC(70	, 3 ,	426000000U),
PLLHSIC(71	, 3 ,	432000000U),
PLLHSIC(72	, 3 ,	438000000U),
PLLHSIC(73	, 3 ,	444000000U),
PLLHSIC(74	, 3 ,	450000000U),
PLLHSIC(75	, 3 ,	456000000U),
PLLHSIC(76	, 3 ,	462000000U),
PLLHSIC(77	, 3 ,	468000000U),
PLLHSIC(78	, 3 ,	474000000U),
PLLHSIC(79	, 3 ,	480000000U),
PLLHSIC(80	, 3 ,	486000000U),
PLLHSIC(81	, 3 ,	492000000U),
PLLHSIC(82	, 3 ,	498000000U),
PLLHSIC(83	, 3 ,	504000000U),
PLLHSIC(84	, 3 ,	510000000U),
PLLHSIC(85	, 3 ,	516000000U),
PLLHSIC(86	, 3 ,	522000000U),
PLLHSIC(87	, 3 ,	528000000U),
PLLHSIC(88	, 3 ,	534000000U),
PLLHSIC(89	, 3 ,	540000000U),
PLLHSIC(90	, 3 ,	546000000U),
PLLHSIC(91	, 3 ,	552000000U),
PLLHSIC(92	, 3 ,	558000000U),
PLLHSIC(93	, 3 ,	564000000U),
PLLHSIC(94	, 3 ,	570000000U),
PLLHSIC(95	, 3 ,	576000000U),
PLLHSIC(96	, 3 ,	582000000U),
PLLHSIC(97	, 3 ,	588000000U),
PLLHSIC(98	, 3 ,	594000000U),
PLLHSIC(99	, 3 ,	600000000U),
PLLHSIC(100	, 3 ,	606000000U),
PLLHSIC(101	, 3 ,	612000000U),
PLLHSIC(102	, 3 ,	618000000U),
PLLHSIC(103	, 3 ,	624000000U),
PLLHSIC(104	, 3 ,	630000000U),
PLLHSIC(105	, 3 ,	636000000U),
PLLHSIC(106	, 3 ,	642000000U),
PLLHSIC(107	, 3 ,	648000000U),
PLLHSIC(108	, 3 ,	654000000U),
PLLHSIC(109	, 3 ,	660000000U),
PLLHSIC(110	, 3 ,	666000000U),
PLLHSIC(111	, 3 ,	672000000U),
PLLHSIC(112	, 3 ,	678000000U),
PLLHSIC(113	, 3 ,	684000000U),
PLLHSIC(114	, 3 ,	690000000U),
PLLHSIC(115	, 3 ,	696000000U),
PLLHSIC(116	, 3,	702000000U),
PLLHSIC(117	, 3,	708000000U),
PLLHSIC(118	, 3,	714000000U),
PLLHSIC(119	, 3,	720000000U),
PLLHSIC(120	,  3,	726000000U),
PLLHSIC(121	, 3,	732000000U),
PLLHSIC(122	, 3,	738000000U),
PLLHSIC(123	, 3,	744000000U),
PLLHSIC(124	, 3,	750000000U),
PLLHSIC(125	, 3,	756000000U),
PLLHSIC(126	, 3,	762000000U),
PLLHSIC(127	, 3,	768000000U),
PLLHSIC(32	, 0,	792000000U),
PLLHSIC(33	, 0,	816000000U),
PLLHSIC(34	, 0,	840000000U),
PLLHSIC(35	, 0,	864000000U),
PLLHSIC(36	, 0 ,	888000000U),
};
/* n,m,freq */
struct sunxi_clk_factor_freq factor_pllde_tbl[] = {
PLLDE(4 , 0 , 120000000U),
PLLDE(15 , 2 , 128000000U),
PLLDE(10 , 1 , 132000000U),
PLLDE(16 , 2 , 136000000U),
PLLDE(11 , 1 , 144000000U),
PLLDE(24 ,  3 , 150000000U),
PLLDE(18 , 2 , 152000000U),
PLLDE(12 , 1 , 156000000U),
PLLDE(19 , 2 , 160000000U),
PLLDE(26 , 3 , 162000000U),
PLLDE(13 , 1 , 168000000U),
PLLDE(28 , 3 , 174000000U),
PLLDE(21 , 2 , 176000000U),
PLLDE(14 , 1 , 180000000U),
PLLDE(22 , 2 , 184000000U),
PLLDE(30 , 3 , 186000000U),
PLLDE(15 , 1 , 192000000U),
PLLDE(64 , 7 , 195000000U),
PLLDE(32 , 3 , 198000000U),
PLLDE(24 , 2 , 200000000U),
PLLDE(66 , 7 , 201000000U),
PLLDE(16 , 1 , 204000000U),
PLLDE(68 , 7 , 207000000U),
PLLDE(25 , 2 , 208000000U),
PLLDE(34 , 3 , 210000000U),
PLLDE(70 , 7 , 213000000U),
PLLDE(17 , 1 , 216000000U),
PLLDE(72 , 7 , 219000000U),
PLLDE(36 , 3 , 222000000U),
PLLDE(27 , 2 , 224000000U),
PLLDE(74 , 7 , 225000000U),
PLLDE(18 , 1 , 228000000U),
PLLDE(76 , 7 , 231000000U),
PLLDE(28 , 2 , 232000000U),
PLLDE(38 , 3 , 234000000U),
PLLDE(78 , 7 , 237000000U),
PLLDE(19 , 1 , 240000000U),
PLLDE(80 , 7 , 243000000U),
PLLDE(40 , 3 , 246000000U),
PLLDE(30 , 2 , 248000000U),
PLLDE(82 , 7 , 249000000U),
PLLDE(20 , 1 , 252000000U),
PLLDE(84 , 7 , 255000000U),
PLLDE(31 , 2 , 256000000U),
PLLDE(42 , 3 , 258000000U),
PLLDE(86 , 7 , 261000000U),
PLLDE(21 , 1 , 264000000U),
PLLDE(88 , 7 , 267000000U),
PLLDE(44 , 3 , 270000000U),
PLLDE(33 , 2 , 272000000U),
PLLDE(90 , 7 , 273000000U),
PLLDE(22 , 1 , 276000000U),
PLLDE(92 , 7 , 279000000U),
PLLDE(34 , 2 , 280000000U),
PLLDE(46 , 3 , 282000000U),
PLLDE(94 , 7 , 285000000U),
PLLDE(23 , 1 , 288000000U),
PLLDE(96 , 7 , 291000000U),
PLLDE(48 , 3 , 294000000U),
PLLDE(36 , 2 , 296000000U),
PLLDE(98 , 7 , 297000000U),
PLLDE(24 , 1 , 300000000U),
PLLDE(100 , 7 , 303000000U),
PLLDE(37 , 2 , 304000000U),
PLLDE(50 , 3 , 306000000U),
PLLDE(102 , 7 , 309000000U),
PLLDE(25 , 1 , 312000000U),
PLLDE(104 , 7 , 315000000U),
PLLDE(52 , 3 , 318000000U),
PLLDE(39 , 2 , 320000000U),
PLLDE(106 , 7 , 321000000U),
PLLDE(26 , 1 , 324000000U),
PLLDE(108 , 7 , 327000000U),
PLLDE(40 , 2 , 328000000U),
PLLDE(54 , 3 , 330000000U),
PLLDE(110 , 7 , 333000000U),
PLLDE(27 , 1 , 336000000U),
PLLDE(112 , 7 , 339000000U),
PLLDE(56 , 3 , 342000000U),
PLLDE(114 , 7 , 345000000U),
PLLDE(28 , 1 , 348000000U),
PLLDE(116 , 7 , 351000000U),
PLLDE(58 , 3 , 354000000U),
PLLDE(118 , 7 , 357000000U),
PLLDE(29 , 1 , 360000000U),
PLLDE(120 , 7 , 363000000U),
PLLDE(60 , 3 , 366000000U),
PLLDE(122 , 7 , 369000000U),
PLLDE(30 , 1 , 372000000U),
PLLDE(124 , 7 , 375000000U),
PLLDE(62 , 3 , 378000000U),
PLLDE(126 , 7 , 381000000U),
PLLDE(31 , 1 , 384000000U),
PLLDE(64 , 3 , 390000000U),
PLLDE(32 , 1 , 396000000U),
PLLDE(66 , 3 , 402000000U),
PLLDE(33 , 1 , 408000000U),
PLLDE(68 , 3 , 414000000U),
PLLDE(34 , 1 , 420000000U),
PLLDE(70 ,  3 , 426000000U),
PLLDE(35 , 1 , 432000000U),
PLLDE(72 , 3 , 438000000U),
PLLDE(36 , 1 , 444000000U),
PLLDE(74 , 3 , 450000000U),
PLLDE(37 , 1 , 456000000U),
PLLDE(76 , 3 , 462000000U),
PLLDE(77 , 3 , 468000000U),
PLLDE(78 , 3 , 474000000U),
PLLDE(39 , 1 , 480000000U),
PLLDE(80 , 3 , 486000000U),
PLLDE(40  , 1 , 492000000U),
PLLDE(82 , 3 , 498000000U),
PLLDE(41 , 1 , 504000000U),
PLLDE(84 , 3 , 510000000U),
PLLDE(85 , 3 , 516000000U),
PLLDE(86 , 3 , 522000000U),
PLLDE(87 , 3 , 528000000U),
PLLDE(88 , 3 , 534000000U),
PLLDE(89 , 3 , 540000000U),
PLLDE(90 , 3 , 546000000U),
PLLDE(91 , 3 , 552000000U),
PLLDE(92 , 3 , 558000000U),
PLLDE(93 , 3 , 564000000U),
PLLDE(94 , 3 , 570000000U),
PLLDE(23 , 0 , 576000000U),
PLLDE(96 , 3 , 582000000U),
PLLDE(97 , 3 , 588000000U),
PLLDE(98 , 3 , 594000000U),
PLLDE(24 , 0 , 600000000U),
PLLDE(100 , 3 , 606000000U),
PLLDE(101 , 3 , 612000000U),
PLLDE(102 , 3 , 618000000U),
PLLDE(25 , 0 , 624000000U),
PLLDE(104 , 3 , 630000000U),
PLLDE(105 , 3 , 636000000U),
PLLDE(106 , 3 , 642000000U),
PLLDE(26 , 0 , 648000000U),
PLLDE(108 , 3 , 654000000U),
PLLDE(109 , 3 , 660000000U),
PLLDE(110 , 3 , 666000000U),
PLLDE(27 , 0 , 672000000U),
PLLDE(112 , 3 , 678000000U),
PLLDE(113 , 3 , 684000000U),
PLLDE(114 , 3 , 690000000U),
PLLDE(28 , 0 , 696000000U),
PLLDE(116 , 3 , 702000000U),
PLLDE(117 , 3 , 708000000U),
PLLDE(118 , 3 , 714000000U),
PLLDE(29 , 0 , 720000000U),
PLLDE(120 , 3 , 726000000U),
PLLDE(121 , 3 , 732000000U),
PLLDE(122 , 3 , 738000000U),
PLLDE(30 , 0 , 744000000U),
PLLDE(124 , 3 , 750000000U),
PLLDE(125 , 3 , 756000000U),
PLLDE(126 , 3 , 762000000U),
PLLDE(31 , 0 , 768000000U),
PLLDE(32 , 0 , 792000000U),
PLLDE(33 , 0 , 816000000U),
PLLDE(34 , 0 , 840000000U),
PLLDE(35 , 0 , 864000000U),
PLLDE(36 , 0 , 888000000U),
};
/* n,freq */
struct sunxi_clk_factor_freq factor_pllddr1_tbl[] = {
PLLDDR1(11	, 288000000U),
PLLDDR1(12	, 312000000U),
PLLDDR1(13	, 336000000U),
PLLDDR1(14	, 360000000U),
PLLDDR1(15	, 384000000U),
PLLDDR1(16	, 408000000U),
PLLDDR1(17	, 432000000U),
PLLDDR1(18	, 456000000U),
PLLDDR1(19	, 480000000U),
PLLDDR1(20	, 504000000U),
PLLDDR1(21	, 528000000U),
PLLDDR1(22	, 552000000U),
PLLDDR1(23	, 576000000U),
PLLDDR1(24	, 600000000U),
PLLDDR1(25	, 624000000U),
PLLDDR1(26	, 648000000U),
PLLDDR1(27	, 672000000U),
PLLDDR1(28	, 696000000U),
PLLDDR1(29	, 720000000U),
PLLDDR1(30	, 744000000U),
PLLDDR1(31	, 768000000U),
PLLDDR1(32	, 792000000U),
PLLDDR1(33	, 816000000U),
PLLDDR1(34	, 840000000U),
PLLDDR1(35	, 864000000U),
PLLDDR1(36	, 888000000U),
PLLDDR1(37	, 912000000U),
PLLDDR1(38	, 936000000U),
PLLDDR1(39	, 960000000U),
PLLDDR1(40	, 984000000U),
PLLDDR1(41	, 1008000000U),
PLLDDR1(42	, 1032000000U),
PLLDDR1(43	, 1056000000U),
PLLDDR1(44	, 1080000000U),
PLLDDR1(45	, 1104000000U),
PLLDDR1(46	, 1128000000U),
PLLDDR1(47	, 1152000000U),
PLLDDR1(48	, 1176000000U),
PLLDDR1(49	, 1200000000U),
PLLDDR1(50	, 1224000000U),
};
static unsigned int pllcpu_max , pllvideo_max;
static unsigned int pllve_max , pllddr0_max;
static unsigned int pllperiph_max , pllgpu_max;
static unsigned int pllhsic_max , pllde_max , pllddr1_max;
void sunxi_clk_factor_initlimits(void)
{
	pllcpu_max = factor_pllcpu_tbl[ARRAY_SIZE(factor_pllcpu_tbl)-1].freq;
	pllvideo_max = factor_pllvideo_tbl[ARRAY_SIZE(factor_pllvideo_tbl)-1].freq;
	pllve_max = factor_pllve_tbl[ARRAY_SIZE(factor_pllve_tbl)-1].freq;
	pllddr0_max = factor_pllddr0_tbl[ARRAY_SIZE(factor_pllddr0_tbl)-1].freq;
	pllperiph_max = factor_pllperiph_tbl[ARRAY_SIZE(factor_pllperiph_tbl)-1].freq;
	pllgpu_max = factor_pllgpu_tbl[ARRAY_SIZE(factor_pllgpu_tbl)-1].freq;
	pllhsic_max = factor_pllhsic_tbl[ARRAY_SIZE(factor_pllhsic_tbl)-1].freq;
	pllde_max = factor_pllde_tbl[ARRAY_SIZE(factor_pllde_tbl)-1].freq;
	pllddr1_max = factor_pllddr1_tbl[ARRAY_SIZE(factor_pllddr1_tbl)-1].freq;
}