
On 03.08.20 12:10, Sean Anderson wrote:
On 8/2/20 11:29 PM, Bin Meng wrote:
On Tue, Jul 28, 2020 at 11:52 PM Heinrich Schuchardt xypron.glpk@gmx.de wrote:
The kendryte PLL code uses nop as barrier. The macro is not defined for the sandbox on x86 but is defined on RISC-V.
Is this kendryte PLL driver built for Sandbox?
Yes. I added a unit test for the parameter calculation function.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
include/kendryte/pll.h | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/include/kendryte/pll.h b/include/kendryte/pll.h index c8e3200799..55a40b9c97 100644 --- a/include/kendryte/pll.h +++ b/include/kendryte/pll.h @@ -7,6 +7,7 @@
#include <clk.h> #include <test/export.h> +#include <asm/io.h>
#define K210_PLL_CLKR GENMASK(3, 0) #define K210_PLL_CLKF GENMASK(9, 4) @@ -43,9 +44,13 @@ struct k210_pll_config { #ifdef CONFIG_UNIT_TEST TEST_STATIC int k210_pll_calc_config(u32 rate, u32 rate_in, struct k210_pll_config *best);
+#ifndef nop #define nop() #endif
Maybe we can fix the kendryte PLL driver to use:
asm volatile ("nop");
Is that preferred over the nop macro?
On RISC-V nop is just a synonym for addi x0, x0, 0.
The only use of the nop statements is to guarantee a minimum time that the reset signal is set in k210_pll_enable(). Would udelay(1); be a valid replacement here?
Best regards
Heinrich