Writing a driver: how do I get resources?
Gavin Atkinson
gavin at FreeBSD.org
Tue Sep 23 17:21:26 UTC 2008
On Tue, 2008-09-23 at 10:36 -0400, John Baldwin wrote:
> On Tuesday 23 September 2008 08:38:25 am Gavin Atkinson wrote:
> > Hi all,
> >
> > Please forgive me if this email makes very little sense: I've never
> > really looked at how ACPI works from a driver's perspective, so don't
> > really know if what I'm trying to do is even correct.
> >
> > I'm expanding the acpi_sony driver to cover the PNP ID SNY6001. When I
> > simply claim it by returning 0 from the probe, I get the following I/O
> range:
> >
> > acpi_sony0: <Sony programmable I/O> port 0-0x1f on acpi0
> >
> > However, if I'm reading the AML[1] and Linux drivers[2] correctly, this
> > is not the correct range. It appears that the _PRS method offers a
> > choice of four I/O ranges and four IRQs, one of which is then selected
> > by evaluating _SRS. None of them are 0-0x1f.
> >
> > Firstly, does that make sense? Secondly, how do I do this from a
> > driver? I can't see any other drivers that seem to get this involved in
> > ACPI, indeed the only mention of evaluating _PRS is within the ACPI code
> > itself.
> >
> > Lastly, I only have intermittent access to this laptop, so I apologise
> > if I can't test things quickly.
>
> Our ACPI driver isn't smart enough yet (AFAIK) to allocate new resources for a
> device that doesn't have any. That logic should be in acpi_alloc_resource()
> and once that is present then your driver just needs to do the usual
> bus_alloc_resource() stuff to work.
Thanks. So I guess there's no easy way to do it at the moment?
Gavin
More information about the freebsd-acpi
mailing list