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

Configure Feed

Select the types of activity you want to include in your feed.

at master 145 lines 3.1 kB view raw
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * Copyright (c) 2013 Samsung Electronics Co., Ltd. 4 * Copyright (c) 2013 Linaro Ltd. 5 * 6 * Common Clock Framework support for all PLL's in Samsung platforms 7*/ 8 9#ifndef __SAMSUNG_CLK_PLL_H 10#define __SAMSUNG_CLK_PLL_H 11 12enum samsung_pll_type { 13 pll_2126, 14 pll_3000, 15 pll_35xx, 16 pll_36xx, 17 pll_2550, 18 pll_2650, 19 pll_4500, 20 pll_4502, 21 pll_4508, 22 pll_4600, 23 pll_4650, 24 pll_4650c, 25 pll_6552, 26 pll_6552_s3c2416, 27 pll_6553, 28 pll_2550x, 29 pll_2550xx, 30 pll_2650x, 31 pll_2650xx, 32 pll_1417x, 33 pll_1418x, 34 pll_1450x, 35 pll_1451x, 36 pll_1452x, 37 pll_1460x, 38 pll_0818x, 39 pll_0822x, 40 pll_0831x, 41 pll_142xx, 42 pll_0516x, 43 pll_0517x, 44 pll_0518x, 45 pll_531x, 46 pll_1051x, 47 pll_1052x, 48 pll_0717x, 49 pll_0718x, 50 pll_0732x, 51 pll_4311, 52 pll_1017x, 53 pll_1031x, 54 pll_a9fracm, 55 pll_a9fraco, 56}; 57 58#define PLL_RATE(_fin, _m, _p, _s, _k, _ks) \ 59 ((u64)(_fin) * (BIT(_ks) * (_m) + (_k)) / BIT(_ks) / ((_p) << (_s))) 60#define PLL_VALID_RATE(_fin, _fout, _m, _p, _s, _k, _ks) ((_fout) + \ 61 BUILD_BUG_ON_ZERO(PLL_RATE(_fin, _m, _p, _s, _k, _ks) != (_fout))) 62 63#define PLL_FRACO_RATE(_fin, _m, _p, _s, _k, _ks) \ 64 ((u64)(_fin) * (BIT(_ks) * (_m) + (_k)) / BIT(_ks) / ((_p) * ((_s) + 1))) 65#define PLL_FRACO_VALID_RATE(_fin, _fout, _m, _p, _s, _k, _ks) ((_fout) + \ 66 BUILD_BUG_ON_ZERO(PLL_FRACO_RATE(_fin, _m, _p, _s, _k, _ks) != (_fout))) 67 68#define PLL_35XX_RATE(_fin, _rate, _m, _p, _s) \ 69 { \ 70 .rate = PLL_VALID_RATE(_fin, _rate, \ 71 _m, _p, _s, 0, 16), \ 72 .mdiv = (_m), \ 73 .pdiv = (_p), \ 74 .sdiv = (_s), \ 75 } 76 77#define PLL_36XX_RATE(_fin, _rate, _m, _p, _s, _k) \ 78 { \ 79 .rate = PLL_VALID_RATE(_fin, _rate, \ 80 _m, _p, _s, _k, 16), \ 81 .mdiv = (_m), \ 82 .pdiv = (_p), \ 83 .sdiv = (_s), \ 84 .kdiv = (_k), \ 85 } 86 87#define PLL_4508_RATE(_fin, _rate, _m, _p, _s, _afc) \ 88 { \ 89 .rate = PLL_VALID_RATE(_fin, _rate, \ 90 _m, _p, _s - 1, 0, 16), \ 91 .mdiv = (_m), \ 92 .pdiv = (_p), \ 93 .sdiv = (_s), \ 94 .afc = (_afc), \ 95 } 96 97#define PLL_4600_RATE(_fin, _rate, _m, _p, _s, _k, _vsel) \ 98 { \ 99 .rate = PLL_VALID_RATE(_fin, _rate, \ 100 _m, _p, _s, _k, 16), \ 101 .mdiv = (_m), \ 102 .pdiv = (_p), \ 103 .sdiv = (_s), \ 104 .kdiv = (_k), \ 105 .vsel = (_vsel), \ 106 } 107 108#define PLL_4650_RATE(_fin, _rate, _m, _p, _s, _k, _mfr, _mrr, _vsel) \ 109 { \ 110 .rate = PLL_VALID_RATE(_fin, _rate, \ 111 _m, _p, _s, _k, 10), \ 112 .mdiv = (_m), \ 113 .pdiv = (_p), \ 114 .sdiv = (_s), \ 115 .kdiv = (_k), \ 116 .mfr = (_mfr), \ 117 .mrr = (_mrr), \ 118 .vsel = (_vsel), \ 119 } 120 121#define PLL_A9FRACO_RATE(_fin, _rate, _m, _p, _s, _k) \ 122 { \ 123 .rate = PLL_FRACO_VALID_RATE(_fin, _rate, \ 124 _m, _p, _s, _k, 24), \ 125 .mdiv = (_m), \ 126 .pdiv = (_p), \ 127 .sdiv = (_s), \ 128 .kdiv = (_k), \ 129 } 130 131/* NOTE: Rate table should be kept sorted in descending order. */ 132 133struct samsung_pll_rate_table { 134 unsigned int rate; 135 unsigned int pdiv; 136 unsigned int mdiv; 137 unsigned int sdiv; 138 unsigned int kdiv; 139 unsigned int afc; 140 unsigned int mfr; 141 unsigned int mrr; 142 unsigned int vsel; 143}; 144 145#endif /* __SAMSUNG_CLK_PLL_H */