Hi, Julien. I created a new patch set (v3) and pushed.
Also I created a standalone patch according to your suggestion above: http://lists.xen.org/archives/html/xen-devel/2015-01/msg02964.html I checked it on Lager board on current master. On Thu, Jan 22, 2015 at 8:33 PM, Oleksandr Tyshchenko < oleksandr.tyshche...@globallogic.com> wrote: > On Thu, Jan 22, 2015 at 8:09 PM, Julien Grall <julien.gr...@linaro.org> > wrote: > > On 22/01/15 17:43, Oleksandr Tyshchenko wrote: > >> On Thu, Jan 22, 2015 at 7:27 PM, Oleksandr Tyshchenko > >> <oleksandr.tyshche...@globallogic.com> wrote: > >>> On Thu, Jan 22, 2015 at 7:02 PM, Julien Grall <julien.gr...@linaro.org> > wrote: > >>>> On 22/01/15 16:55, Oleksandr Tyshchenko wrote: > >>>>> On Thu, Jan 22, 2015 at 6:49 PM, Julien Grall < > julien.gr...@linaro.org> wrote: > >>>>>> On 22/01/15 16:44, Oleksandr Tyshchenko wrote: > >>>>>>> I understand, then I will implement local delay func in uart driver > >>>>>>> based on READ_SYSREG64(CNTPCT_EL0). > >>>>>> > >>>>>> Unless I miss something, udelay should work in your case even if the > >>>>>> xen_init_time is not called. > >>>>> Unfortunately, no. If I understand correctly the var "cpu_khz" (used > >>>>> in ticks_to_ns()) is initialized in init_xen_time(). > >>>> > >>>> Hrm, right. I looked too quickly to the function. > >>>> > >>>> I don't like the idea to use READ_SYSREG64(CNTPCT_EL0) in the UART > drivers. > >>>> > >>>> Does the udelay necessary here? If yes, maybe we should either split > the > >>>> xen_init_time in 2 parts or create a udelay_tick function to use when > >>>> timer is not set. > >>>> > >>>> I'm not sure what is the best one. > >>>> > >>>> Regards, > >>>> > >>>> -- > >>>> Julien Grall > >>> > >>> According to the TRM for this family we need to add delay after > >>> changing baudrate before continuing init sequence. > >>> I tried without udelay and it is worked fine. But, if the TRM says we > >>> need to follow this. > >>> > >>> -- > >>> > >>> Oleksandr Tyshchenko | Embedded Dev > >>> GlobalLogic > >>> www.globallogic.com > >> > >> I would prefer a first variant. In xen_init_time_1() initialize > >> "cpu_khz" and "boot_count" only. > >> > >> cpu_khz = READ_SYSREG32(CNTFRQ_EL0) / 1000; > >> boot_count = READ_SYSREG64(CNTPCT_EL0); > >> > >> In xen_init_time_2() perform all initialization as it was done for > >> this moment and correct "cpu_khz" if node is present. > >> > >> What do you think? > >> > > > > The clock-frequency property is usually present when CNTFRQ_EL0 is > > invalid. So the udelay won't work correctly for those board. > > > > Also, some platform may need to have specific initialization for timer > > before been able to access it. (see platform_init_time). > > > > So we need to move at least to move preinit_xen_time: > > platform_init() > > read property clock-frequency > > cpu_khz = ... > > boot_count = ... > > > > init_xen_time would contain: > > retrieve IRQs > > print messages > > > > Regards, > > > > -- > > Julien Grall > > It is clear. I will try. > Thank you > > > > -- > > Oleksandr Tyshchenko | Embedded Dev > GlobalLogic > www.globallogic.com > -- Oleksandr Tyshchenko | Embedded Dev GlobalLogic www.globallogic.com <http://www.globallogic.com/>
_______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel