<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2017-08-21 19:40 GMT+02:00 Gedare Bloom <span dir="ltr"><<a href="mailto:gedare@rtems.org" target="_blank">gedare@rtems.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Mon, Aug 21, 2017 at 12:27 PM, Denis Obrezkov<br>
<<a href="mailto:denisobrezkov@gmail.com">denisobrezkov@gmail.com</a>> wrote:<br>
> 2017-08-17 17:16 GMT+02:00 Gedare Bloom <<a href="mailto:gedare@rtems.org">gedare@rtems.org</a>>:<br>
>><br>
>> On Wed, Aug 16, 2017 at 11:13 AM, Denis Obrezkov<br>
>> <<a href="mailto:denisobrezkov@gmail.com">denisobrezkov@gmail.com</a>> wrote:<br>
>> > ---<br>
>> >  c/src/lib/libbsp/riscv32/<wbr>hifive1/start/bspstart.c | 65<br>
>> > +++++++++++++++++++++++<br>
>> >  1 file changed, 65 insertions(+)<br>
>> >  create mode 100644 c/src/lib/libbsp/riscv32/<wbr>hifive1/start/bspstart.c<br>
>> ><br>
>> > diff --git a/c/src/lib/libbsp/riscv32/<wbr>hifive1/start/bspstart.c<br>
>> > b/c/src/lib/libbsp/riscv32/<wbr>hifive1/start/bspstart.c<br>
>> > new file mode 100644<br>
>> > index 0000000..efef4e0<br>
>> > --- /dev/null<br>
>> > +++ b/c/src/lib/libbsp/riscv32/<wbr>hifive1/start/bspstart.c<br>
>> > @@ -0,0 +1,65 @@<br>
>> > +/*<br>
>> > + *  Copyright (c) 2017<br>
>> > + *  Denis Obrezkov <<a href="mailto:denisobrezkov@gmail.com">denisobrezkov@gmail.com</a>><br>
>> > + *<br>
>> > + *  The license and distribution terms for this file may be<br>
>> > + *  found in the file LICENSE in this distribution or at<br>
>> > + *  <a href="http://www.rtems.org/license/LICENSE" rel="noreferrer" target="_blank">http://www.rtems.org/license/<wbr>LICENSE</a>.<br>
>> > + */<br>
>> > +<br>
>> > +#include <bsp.h><br>
>> > +#include <bsp/bootcard.h><br>
>> > +#include <bsp/prci.h><br>
>> > +#include <bsp/fe310.h><br>
>> > +<br>
>> > +/*<br>
>> > + * This routine make initialization of HiFive1 (FE310) counters.<br>
>> > + */<br>
>> > +<br>
>> > +void bsp_start( void )<br>
>> > +{<br>
>> > +  volatile uint32_t * pll_reg = (volatile uint32_t *) PRCI_PLLCFG;<br>
>> > +  volatile uint32_t * high_freq_reg = (volatile uint32_t *)<br>
>> > PRCI_HFROSCCFG;<br>
>> > +  volatile uint32_t * spi0 = (volatile uint32_t *) 0x10014000;<br>
>> > +<br>
>> > +  volatile uint64_t * mtime_reg = (volatile uint64_t * ) 0x0200bff8;<br>
>> > +  volatile uint64_t * mtimecmp_reg = (volatile uint64_t * ) 0x02004000;<br>
>> > +<br>
>> > +#ifdef USE_HFROSC<br>
>> > +  /* Setting up osc frequency */<br>
>> > +  uint32_t tmp_reg = 0;<br>
>> > +  /* Install divider in high frequency oscillator */<br>
>> > +  tmp_reg |= (HFROSC_DIV_VAL & 0x2f) << HFROSC_DIV_OFFSET;<br>
>> > +  tmp_reg |= (HFROSC_TRIM_VAL & 0x1F) << HFROSC_TRIM_OFFSET;<br>
>> > +  tmp_reg |= (HFROSC_EN_VAL & 0x1) << HFROSC_EN_OFFSET;<br>
>> > +  (*high_freq_reg) = tmp_reg;<br>
>> It would be good to make the above into a function.<br>
><br>
> I agree but in what file should we place it?<br>
> it's not a clock or a timer.<br>
<br>
</div></div>Some utility header for the bsp would be fine.<br>
<div class="HOEnZb"><div class="h5"><br>
>><br>
>><br>
>> > +  while (( (*high_freq_reg) & ((HFROSC_RDY_VAL & 0x1) \<br>
>> > +                  << HFROSC_RDY_OFFSET)) == 0 ) {<br>
>> > +    ;<br>
>> > +  }<br>
>> > +#endif /* USE_HFROSC */<br>
>> > +<br>
>> > +#ifdef USE_HFXOSC<br>
>> > +  volatile uint32_t * ext_freq_reg = (volatile uint32_t *)<br>
>> > PRCI_HFXOSCCFG;<br>
>> > +  (*ext_freq_reg) |= ((HFXOSC_EN_VAL & 0x1) << HFXOSC_EN_OFFSET);<br>
>> > +  while (( (*ext_freq_reg) & ((HFXOSC_RDY_VAL & 0x1) \<br>
>> > +                  << HFXOSC_RDY_OFFSET)) == 0 ) {<br>
>> > +    ;<br>
>> > +  }<br>
>> > +  (*pll_reg) |= (0x1 << 18);<br>
>> > +  (*pll_reg) |= (0x1 << 17);<br>
>> > +  (*pll_reg) |= (0x1 << PLL_SEL_OFFSET);<br>
>> > +  (*high_freq_reg) &= ~(0x1 << HFROSC_EN_OFFSET);<br>
>> > +<br>
>> > +#endif /* USE_HFXOSC */<br>
>> > +#ifndef USE_PLL<br>
>> > +  /* Disable PLL */<br>
>> > +  (*pll_reg) &= ~(0x1 << PLL_SEL_OFFSET);<br>
>> > +#else<br>
>> > +<br>
>> > +#endif<br>
>> > +<br>
>> > +  bsp_interrupt_initialize();<br>
>> > +<br>
>> > +}<br>
>> > +<br>
>> > --<br>
>> > 2.1.4<br>
>> ><br>
>> > ______________________________<wbr>_________________<br>
>> > devel mailing list<br>
>> > <a href="mailto:devel@rtems.org">devel@rtems.org</a><br>
>> > <a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.rtems.org/<wbr>mailman/listinfo/devel</a><br>
><br>
><br>
><br>
><br>
> --<br>
> Regards, Denis Obrezkov<br>
</div></div></blockquote></div><br>Do you mean to make it static inline?<br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Regards, Denis Obrezkov</div>
</div></div>