diff options
author | Peter De Schrijver <pdeschrijver@nvidia.com> | 2013-11-26 06:48:09 -0500 |
---|---|---|
committer | Peter De Schrijver <pdeschrijver@nvidia.com> | 2013-11-26 11:43:55 -0500 |
commit | 252d0d2bb07119296e215de7dc9afa8d12746b80 (patch) | |
tree | 647d68b71bc1ed08b2b372c9a5b5a0e2a607cbe8 | |
parent | fc20eeff6c03fcdbb2b5ac21472778b573850e77 (diff) |
clk: tegra: add TEGRA_DIVIDER_ROUND_UP for periph clks
Perform upwards rounding when calculating dividers for periph clks on Tegra30
and Tegra114.
Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com>
-rw-r--r-- | drivers/clk/tegra/clk-tegra114.c | 53 | ||||
-rw-r--r-- | drivers/clk/tegra/clk-tegra30.c | 19 |
2 files changed, 39 insertions, 33 deletions
diff --git a/drivers/clk/tegra/clk-tegra114.c b/drivers/clk/tegra/clk-tegra114.c index 76611289b8e6..e3904923005b 100644 --- a/drivers/clk/tegra/clk-tegra114.c +++ b/drivers/clk/tegra/clk-tegra114.c | |||
@@ -791,50 +791,53 @@ static unsigned long tegra114_input_freq[] = { | |||
791 | #define TEGRA_INIT_DATA_MUX(_name, _con_id, _dev_id, _parents, _offset, \ | 791 | #define TEGRA_INIT_DATA_MUX(_name, _con_id, _dev_id, _parents, _offset, \ |
792 | _clk_num, _regs, _gate_flags, _clk_id) \ | 792 | _clk_num, _regs, _gate_flags, _clk_id) \ |
793 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ | 793 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ |
794 | 30, MASK(2), 0, 0, 8, 1, 0, _regs, _clk_num, \ | 794 | 30, MASK(2), 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP, \ |
795 | periph_clk_enb_refcnt, _gate_flags, _clk_id, \ | 795 | _regs, _clk_num, periph_clk_enb_refcnt, _gate_flags,\ |
796 | _parents##_idx, 0) | 796 | _clk_id, _parents##_idx, 0) |
797 | 797 | ||
798 | #define TEGRA_INIT_DATA_MUX_FLAGS(_name, _con_id, _dev_id, _parents, _offset,\ | 798 | #define TEGRA_INIT_DATA_MUX_FLAGS(_name, _con_id, _dev_id, _parents, _offset,\ |
799 | _clk_num, _regs, _gate_flags, _clk_id, flags)\ | 799 | _clk_num, _regs, _gate_flags, _clk_id, flags)\ |
800 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ | 800 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ |
801 | 30, MASK(2), 0, 0, 8, 1, 0, _regs, _clk_num, \ | 801 | 30, MASK(2), 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP,\ |
802 | periph_clk_enb_refcnt, _gate_flags, _clk_id, \ | 802 | _regs, _clk_num, periph_clk_enb_refcnt, _gate_flags,\ |
803 | _parents##_idx, flags) | 803 | _clk_id, _parents##_idx, flags) |
804 | 804 | ||
805 | #define TEGRA_INIT_DATA_MUX8(_name, _con_id, _dev_id, _parents, _offset, \ | 805 | #define TEGRA_INIT_DATA_MUX8(_name, _con_id, _dev_id, _parents, _offset, \ |
806 | _clk_num, _regs, _gate_flags, _clk_id) \ | 806 | _clk_num, _regs, _gate_flags, _clk_id) \ |
807 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ | 807 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ |
808 | 29, MASK(3), 0, 0, 8, 1, 0, _regs, _clk_num, \ | 808 | 29, MASK(3), 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP,\ |
809 | periph_clk_enb_refcnt, _gate_flags, _clk_id, \ | 809 | _regs, _clk_num, periph_clk_enb_refcnt, _gate_flags,\ |
810 | _parents##_idx, 0) | 810 | _clk_id, _parents##_idx, 0) |
811 | 811 | ||
812 | #define TEGRA_INIT_DATA_INT_FLAGS(_name, _con_id, _dev_id, _parents, _offset,\ | 812 | #define TEGRA_INIT_DATA_INT_FLAGS(_name, _con_id, _dev_id, _parents, _offset,\ |
813 | _clk_num, _regs, _gate_flags, _clk_id, flags)\ | 813 | _clk_num, _regs, _gate_flags, _clk_id, flags)\ |
814 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ | 814 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ |
815 | 30, MASK(2), 0, 0, 8, 1, TEGRA_DIVIDER_INT, _regs,\ | 815 | 30, MASK(2), 0, 0, 8, 1, TEGRA_DIVIDER_INT | \ |
816 | _clk_num, periph_clk_enb_refcnt, _gate_flags, \ | 816 | TEGRA_DIVIDER_ROUND_UP, _regs, _clk_num, \ |
817 | _clk_id, _parents##_idx, flags) | 817 | periph_clk_enb_refcnt, _gate_flags, _clk_id, \ |
818 | _parents##_idx, flags) | ||
818 | 819 | ||
819 | #define TEGRA_INIT_DATA_INT8(_name, _con_id, _dev_id, _parents, _offset,\ | 820 | #define TEGRA_INIT_DATA_INT8(_name, _con_id, _dev_id, _parents, _offset,\ |
820 | _clk_num, _regs, _gate_flags, _clk_id) \ | 821 | _clk_num, _regs, _gate_flags, _clk_id) \ |
821 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ | 822 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ |
822 | 29, MASK(3), 0, 0, 8, 1, TEGRA_DIVIDER_INT, _regs,\ | 823 | 29, MASK(3), 0, 0, 8, 1, TEGRA_DIVIDER_INT | \ |
823 | _clk_num, periph_clk_enb_refcnt, _gate_flags, \ | 824 | TEGRA_DIVIDER_ROUND_UP, _regs, _clk_num, \ |
824 | _clk_id, _parents##_idx, 0) | 825 | periph_clk_enb_refcnt, _gate_flags, _clk_id, \ |
826 | _parents##_idx, 0) | ||
825 | 827 | ||
826 | #define TEGRA_INIT_DATA_UART(_name, _con_id, _dev_id, _parents, _offset,\ | 828 | #define TEGRA_INIT_DATA_UART(_name, _con_id, _dev_id, _parents, _offset,\ |
827 | _clk_num, _regs, _clk_id) \ | 829 | _clk_num, _regs, _clk_id) \ |
828 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ | 830 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ |
829 | 30, MASK(2), 0, 0, 16, 1, TEGRA_DIVIDER_UART, _regs,\ | 831 | 30, MASK(2), 0, 0, 16, 1, TEGRA_DIVIDER_UART | \ |
830 | _clk_num, periph_clk_enb_refcnt, 0, _clk_id, \ | 832 | TEGRA_DIVIDER_ROUND_UP, _regs, _clk_num, \ |
831 | _parents##_idx, 0) | 833 | periph_clk_enb_refcnt, 0, _clk_id, _parents##_idx, 0) |
832 | 834 | ||
833 | #define TEGRA_INIT_DATA_I2C(_name, _con_id, _dev_id, _parents, _offset,\ | 835 | #define TEGRA_INIT_DATA_I2C(_name, _con_id, _dev_id, _parents, _offset,\ |
834 | _clk_num, _regs, _clk_id) \ | 836 | _clk_num, _regs, _clk_id) \ |
835 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ | 837 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset,\ |
836 | 30, MASK(2), 0, 0, 16, 0, 0, _regs, _clk_num, \ | 838 | 30, MASK(2), 0, 0, 16, 0, TEGRA_DIVIDER_ROUND_UP,\ |
837 | periph_clk_enb_refcnt, 0, _clk_id, _parents##_idx, 0) | 839 | _regs, _clk_num, periph_clk_enb_refcnt, 0, _clk_id,\ |
840 | _parents##_idx, 0) | ||
838 | 841 | ||
839 | #define TEGRA_INIT_DATA_NODIV(_name, _con_id, _dev_id, _parents, _offset, \ | 842 | #define TEGRA_INIT_DATA_NODIV(_name, _con_id, _dev_id, _parents, _offset, \ |
840 | _mux_shift, _mux_mask, _clk_num, _regs, \ | 843 | _mux_shift, _mux_mask, _clk_num, _regs, \ |
@@ -847,14 +850,16 @@ static unsigned long tegra114_input_freq[] = { | |||
847 | #define TEGRA_INIT_DATA_XUSB(_name, _con_id, _dev_id, _parents, _offset, \ | 850 | #define TEGRA_INIT_DATA_XUSB(_name, _con_id, _dev_id, _parents, _offset, \ |
848 | _clk_num, _regs, _gate_flags, _clk_id) \ | 851 | _clk_num, _regs, _gate_flags, _clk_id) \ |
849 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset, \ | 852 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, _parents, _offset, \ |
850 | 29, MASK(3), 0, 0, 8, 1, TEGRA_DIVIDER_INT, _regs, \ | 853 | 29, MASK(3), 0, 0, 8, 1, TEGRA_DIVIDER_INT | \ |
851 | _clk_num, periph_clk_enb_refcnt, _gate_flags, \ | 854 | TEGRA_DIVIDER_ROUND_UP, _regs, _clk_num, \ |
852 | _clk_id, _parents##_idx, 0) | 855 | periph_clk_enb_refcnt, _gate_flags, _clk_id, \ |
856 | _parents##_idx, 0) | ||
853 | 857 | ||
854 | #define TEGRA_INIT_DATA_AUDIO(_name, _con_id, _dev_id, _offset, _clk_num,\ | 858 | #define TEGRA_INIT_DATA_AUDIO(_name, _con_id, _dev_id, _offset, _clk_num,\ |
855 | _regs, _gate_flags, _clk_id) \ | 859 | _regs, _gate_flags, _clk_id) \ |
856 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, mux_d_audio_clk, \ | 860 | TEGRA_INIT_DATA_TABLE(_name, _con_id, _dev_id, mux_d_audio_clk, \ |
857 | _offset, 16, 0xE01F, 0, 0, 8, 1, 0, _regs, _clk_num, \ | 861 | _offset, 16, 0xE01F, 0, 0, 8, 1, \ |
862 | TEGRA_DIVIDER_ROUND_UP, _regs, _clk_num, \ | ||
858 | periph_clk_enb_refcnt, _gate_flags , _clk_id, \ | 863 | periph_clk_enb_refcnt, _gate_flags , _clk_id, \ |
859 | mux_d_audio_clk_idx, 0) | 864 | mux_d_audio_clk_idx, 0) |
860 | 865 | ||
diff --git a/drivers/clk/tegra/clk-tegra30.c b/drivers/clk/tegra/clk-tegra30.c index dbe7c8003c5c..147f5b9fed11 100644 --- a/drivers/clk/tegra/clk-tegra30.c +++ b/drivers/clk/tegra/clk-tegra30.c | |||
@@ -282,8 +282,8 @@ static DEFINE_SPINLOCK(sysrate_lock); | |||
282 | #define TEGRA_INIT_DATA_MUX(_name, _con_id, _dev_id, _parents, _offset, \ | 282 | #define TEGRA_INIT_DATA_MUX(_name, _con_id, _dev_id, _parents, _offset, \ |
283 | _clk_num, _regs, _gate_flags, _clk_id) \ | 283 | _clk_num, _regs, _gate_flags, _clk_id) \ |
284 | TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ | 284 | TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ |
285 | 30, 2, 0, 0, 8, 1, 0, _regs, _clk_num, \ | 285 | 30, 2, 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP, _regs, \ |
286 | periph_clk_enb_refcnt, _gate_flags, _clk_id) | 286 | _clk_num, periph_clk_enb_refcnt, _gate_flags, _clk_id) |
287 | 287 | ||
288 | #define TEGRA_INIT_DATA_DIV16(_name, _con_id, _dev_id, _parents, _offset, \ | 288 | #define TEGRA_INIT_DATA_DIV16(_name, _con_id, _dev_id, _parents, _offset, \ |
289 | _clk_num, _regs, _gate_flags, _clk_id) \ | 289 | _clk_num, _regs, _gate_flags, _clk_id) \ |
@@ -295,21 +295,22 @@ static DEFINE_SPINLOCK(sysrate_lock); | |||
295 | #define TEGRA_INIT_DATA_MUX8(_name, _con_id, _dev_id, _parents, _offset, \ | 295 | #define TEGRA_INIT_DATA_MUX8(_name, _con_id, _dev_id, _parents, _offset, \ |
296 | _clk_num, _regs, _gate_flags, _clk_id) \ | 296 | _clk_num, _regs, _gate_flags, _clk_id) \ |
297 | TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ | 297 | TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ |
298 | 29, 3, 0, 0, 8, 1, 0, _regs, _clk_num, \ | 298 | 29, 3, 0, 0, 8, 1, TEGRA_DIVIDER_ROUND_UP, _regs,\ |
299 | periph_clk_enb_refcnt, _gate_flags, _clk_id) | 299 | _clk_num, periph_clk_enb_refcnt, _gate_flags, _clk_id) |
300 | 300 | ||
301 | #define TEGRA_INIT_DATA_INT(_name, _con_id, _dev_id, _parents, _offset, \ | 301 | #define TEGRA_INIT_DATA_INT(_name, _con_id, _dev_id, _parents, _offset, \ |
302 | _clk_num, _regs, _gate_flags, _clk_id) \ | 302 | _clk_num, _regs, _gate_flags, _clk_id) \ |
303 | TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ | 303 | TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ |
304 | 30, 2, 0, 0, 8, 1, TEGRA_DIVIDER_INT, _regs, \ | 304 | 30, 2, 0, 0, 8, 1, TEGRA_DIVIDER_INT | \ |
305 | _clk_num, periph_clk_enb_refcnt, _gate_flags, \ | 305 | TEGRA_DIVIDER_ROUND_UP, _regs, _clk_num, \ |
306 | _clk_id) | 306 | periph_clk_enb_refcnt, _gate_flags, _clk_id) |
307 | 307 | ||
308 | #define TEGRA_INIT_DATA_UART(_name, _con_id, _dev_id, _parents, _offset,\ | 308 | #define TEGRA_INIT_DATA_UART(_name, _con_id, _dev_id, _parents, _offset,\ |
309 | _clk_num, _regs, _clk_id) \ | 309 | _clk_num, _regs, _clk_id) \ |
310 | TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ | 310 | TEGRA_INIT_DATA(_name, _con_id, _dev_id, _parents, _offset, \ |
311 | 30, 2, 0, 0, 16, 1, TEGRA_DIVIDER_UART, _regs, \ | 311 | 30, 2, 0, 0, 16, 1, TEGRA_DIVIDER_UART | \ |
312 | _clk_num, periph_clk_enb_refcnt, 0, _clk_id) | 312 | TEGRA_DIVIDER_ROUND_UP, _regs, _clk_num, \ |
313 | periph_clk_enb_refcnt, 0, _clk_id) | ||
313 | 314 | ||
314 | #define TEGRA_INIT_DATA_NODIV(_name, _con_id, _dev_id, _parents, _offset, \ | 315 | #define TEGRA_INIT_DATA_NODIV(_name, _con_id, _dev_id, _parents, _offset, \ |
315 | _mux_shift, _mux_width, _clk_num, _regs, \ | 316 | _mux_shift, _mux_width, _clk_num, _regs, \ |