UART driver as kld - how?
Milan Obuch
freebsd-hackers at dino.sk
Sun Nov 3 12:01:23 UTC 2019
On Sat, 2 Nov 2019 21:23:21 -0700
Oleksandr Tymoshenko <gonzo at bluezbox.com> wrote:
> Milan Obuch (freebsd-hackers at dino.sk) wrote:
[ snip ]
> > After studying other uart_dev_xxx.c files I am able to create
> > working skeleton uart driver. I can compile it, kldload, and get
> > some console output. Right now, I hit another problem - uart
> > framework is not documented well, at least no man page is found in
> > share/man directory.
> >
> > My probe function is similar to that in uart_dev_snps.c file,
> > simplified, and I need to know what arguments should uart_bus_probe
> > function be invoked with. In many device drivers there are mostly
> > zeros, but this does not work for me.
> >
> > Currently I am getting error 6, ENXIO, so I am not correctly
> > attaching my driver to device. Putting some printf here and there,
> > I found test at line 508, file uart_core.c, fails - sc->sc_class is
> > null. Question is, now, where and how should this field in this
> > structure be initialized...
> >
> > I am sure I need docs/description for other functions as well, so if
> > anybody knows where good uart framework description could be found,
> > please advice. Or if somebody already has good understanding of it
> > and could help me with my issues, it wil be greatly appreciated.
>
> if you follow uart_dev_snsps.c template, the sc_class is set in
> probe function:
>
> uart_class = (struct uart_class
> *)ofw_bus_search_compatible(dev, compat_data)->ocd_data;
> if (uart_class == NULL)
> return (ENXIO);
>
> freq = 0;
> sc = device_get_softc(dev);
> sc->ns8250.base.sc_class = uart_class;
>
*facepalm*
I totally overlooked the obvious... yes, you are right.
[ snip ]
> In your case, my guess would be: you either do not set the sc_class
> member var in probe function or your base var is not the first in the
> struct.
>
Back to testing... probe function now does work, so I am going to
analyze what should be done in attach... and why I am getting now
panic... I'll write again when I find another obstacle I do not
understand or I have working driver, whatever comes first :)
Regards,
Milan
More information about the freebsd-hackers
mailing list