diff options
author | Tom Rini <trini@konsulko.com> | 2020-07-06 15:46:38 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2020-07-06 15:46:38 -0400 |
commit | 6e7d7aa2e2062995c1cbc3af81cf40c04c50ad30 (patch) | |
tree | 3c560d567a76e9850e0195fb892d7e1fbaeed198 /include/kendryte/pll.h | |
parent | 2f5fbb5b39f7b67044dda5c35e4a4b31685a3109 (diff) | |
parent | 621e09cb3bf7e6d4fce9dd5e6de97e057adebc3a (diff) | |
download | u-boot-6e7d7aa2e2062995c1cbc3af81cf40c04c50ad30.tar.gz |
Merge branch 'next'
Merge all outstanding changes from the current next branch in now that
we have released.
Diffstat (limited to 'include/kendryte/pll.h')
-rw-r--r-- | include/kendryte/pll.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/include/kendryte/pll.h b/include/kendryte/pll.h new file mode 100644 index 0000000000..c8e3200799 --- /dev/null +++ b/include/kendryte/pll.h @@ -0,0 +1,57 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +/* + * Copyright (C) 2019-20 Sean Anderson <seanga2@gmail.com> + */ +#ifndef K210_PLL_H +#define K210_PLL_H + +#include <clk.h> +#include <test/export.h> + +#define K210_PLL_CLKR GENMASK(3, 0) +#define K210_PLL_CLKF GENMASK(9, 4) +#define K210_PLL_CLKOD GENMASK(13, 10) /* Output Divider */ +#define K210_PLL_BWADJ GENMASK(19, 14) /* BandWidth Adjust */ +#define K210_PLL_RESET BIT(20) +#define K210_PLL_PWRD BIT(21) /* PoWeReD */ +#define K210_PLL_INTFB BIT(22) /* Internal FeedBack */ +#define K210_PLL_BYPASS BIT(23) +#define K210_PLL_TEST BIT(24) +#define K210_PLL_EN BIT(25) +#define K210_PLL_TEST_EN BIT(26) + +#define K210_PLL_LOCK 0 +#define K210_PLL_CLEAR_SLIP 2 +#define K210_PLL_TEST_OUT 3 + +struct k210_pll { + struct clk clk; + void __iomem *reg; /* Base PLL register */ + void __iomem *lock; /* Common PLL lock register */ + u8 shift; /* Offset of bits in lock register */ + u8 width; /* Width of lock bits to test against */ +}; + +#define to_k210_pll(_clk) container_of(_clk, struct k210_pll, clk) + +struct k210_pll_config { + u8 r; + u8 f; + u8 od; +}; + +#ifdef CONFIG_UNIT_TEST +TEST_STATIC int k210_pll_calc_config(u32 rate, u32 rate_in, + struct k210_pll_config *best); +#define nop() +#endif + +extern const struct clk_ops k210_pll_ops; + +struct clk *k210_register_pll_struct(const char *name, const char *parent_name, + struct k210_pll *pll); +struct clk *k210_register_pll(const char *name, const char *parent_name, + void __iomem *reg, void __iomem *lock, u8 shift, + u8 width); + +#endif /* K210_PLL_H */ |