<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small">On Tue, May 5, 2020 at 11:44 PM Christian Mauderer <<a href="mailto:oss@c-mauderer.de" target="_blank">oss@c-mauderer.de</a>> wrote:<br></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello Niteesh,<br>
<br>
On 05/05/2020 19:10, Niteesh G. S. wrote:<br>
> This is thread is about implementing OFW functions in RTEMS as part<br>
> of my GSoC project. I would like to start off with this part since the<br>
> refactoring<br>
> work will somewhat depend on this.<br>
<br>
I'm not sure whether everyone on the list is already fully aware of what<br>
your project is. For some of us the GSoC preparation phase is more of a<br>
background noise. So maybe you want to give a short (only a few<br>
sentences) overview of your target and what is the gain for the RTEMS<br>
project.<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">I am sorry. I'll make sure that I do that from the next mail onwards.</div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> <br>
> Implementing these functions into RTEMS will make porting drivers from<br>
> FreeBSD to RTEMS easy. Currently, the drivers ported from freebsd implement<br>
> the functions using libfdt variants but this causes a lot of code<br>
> duplication.<br>
> eg: bsps/arm/imx/start/imx_iomux.c<br>
> <br>
> My initial thoughts were to implement these functions one by one. But then<br>
> Christian and Vijay mentioned about porting them from libbsd.<br>
<br>
Yes, there has been an offlist discussion whether the approach of a<br>
reimplementing them is a good idea.<br></blockquote><div class="gmail_default" style="font-size:small">Can you forward those mails if possible? Maybe I could gather some ideas</div><div class="gmail_default" style="font-size:small">from it.</div><div class="gmail_default" style="font-size:small"></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
> I went<br>
> through the OFW code in libbsd and have described my porting process below.<br>
<br>
If that can be ported, it would be a better approach then reimplementing.<br>
<br>
> Please have a look at it and let me know if I have missed something or you<br>
> would like to improve things.<br>
> <br>
> The following files will be ported from libbsd<br>
> prefix = freebsd/sys/dev/ofw<br>
> <prefix>/openfirm.c<br>
> <prefix>/openfirm.h<br>
> <prefix>/ofw_fdt.c<br>
> <prefix>/ofwvar.h<br>
> <br>
> The main idea is to port openfirm.h but the other files are dependencies<br>
> of openfirm.h<br>
> <br>
> After going through some open firmware documentation. I guess as far as<br>
> RTEMS is <br>
> concerned we could avoid many functions like OF_init, OF_putchar, OF_test<br>
> and only care about functions defined under openfirm.h:105-142<br>
<br>
OK. Note that these functions often have a "node". Think about what that<br>
is and from where you would get it in an RTEMS driver. I think a lot of<br>
FreeBSD drivers get it from their (logical) bus system like ofwbus.<br></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">Yes, the FreeBSD drivers do get their node handles from the buses.</div><div class="gmail_default" style="font-size:small">One way(hackish) to accomplish this would be to create a dummy dev</div><div class="gmail_default" style="font-size:small">structure which will be initialized during driver initialization. And then the</div><div class="gmail_default" style="font-size:small">drivers could query the node handles from it. But as mentioned this would</div><div class="gmail_default" style="font-size:small">be hackish and I don't think will scale well.</div></div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">Another approach will be to import ofwbus itself, but then it would be a huge</div><div class="gmail_default" style="font-size:small">diversion from my current project. I don't mind working on this if this is the</div><div class="gmail_default" style="font-size:small">cleanest way to do it. But then we should also consider re-working on the</div><div class="gmail_default" style="font-size:small">objectives.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> <br>
> But these functions have dependency on the automatically generated<br>
> ofw_if.h and KOBJS.<br>
> But after a close inspection, I guess the KOBJSLOOKUP macro in ofw_if.h<br>
> can be<br>
> redefined or replaced for RTEMS. Since all it does is call the<br>
> respective functions defined in ofw_fdt_methods(ofw_fdt.c).<br>
<br>
Note that the automatically generated interface is used for the FreeBSD<br>
device driver structure (or rather the bus interface). If you port the<br>
stuff to RTEMS you should think about whether</blockquote><div class="gmail_default" style="font-size:small"></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
a) it should replace the libbsd stuff. In that case: What changes would<br>
be necessary to libbsd<span class="gmail_default" style="font-size:small">.</span></blockquote><div><br></div><div class="gmail_default" style="font-size:small"></div><div class="gmail_default">I don't get this point. By RTEMS do you mean rtems.git and not rtems-libbsd.git</div><div class="gmail_default">right? Because it is already there in rtems-libbsd.</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail_default" style="font-size:small"></span><span class="gmail_default"></span> <br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
b) or whether it should live side by side.<br></blockquote><div><div class="gmail_default" style="font-size:small"></div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> <br>
> I had just spent a few hours going through the code. If I had missed<br>
> something<br>
> please let me know.<br>
> <br>
> Thanks,<br>
> Niteesh.<br>
<br>
Best regards<br>
<br>
Christian<br>
</blockquote></div></div>