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.g...@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.g...@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