[coreboot] SuperI/O Access (Kernelspace)
Jeremy Moles
cubicool at gmail.com
Tue Apr 19 16:25:51 CEST 2011
On Fri, 2011-04-15 at 02:07 +0200, Peter Stuge wrote:
> Jeremy Moles wrote:
> > working great now .. via userspace
> ..
> > However, I'd like to be able to toggle the power on via a kernel
> > driver as well,
>
> Why?
>
>
> > but I'm having trouble accessing the same memory range from
> > kernelspace.
> >
> > For example:
> >
> > iotools io_read8 0xA00
>
> io_read8 is not a memory access, it is an I/O access. x86 has two
> different address spaces on the bus, and different instructions to
> access them.
>
> The superio is not memory mapped..
>
>
> > When I try to do the same thing in the kernel:
> >
> > unsigned short b;
> > unsigned short* ptr = (unsigned short*)(0xA00);
> >
> > if(access_ok(VERIFY_READ, ptr, 8)) {
> > get_user(b, ptr);
> >
> > ...I immediately get a segfault.
>
> ..so that's not the way to reach it. Last time I did this I used
> inb() and outb(). Remember to use barriers as neccessary and also
> make sure that request_region() succeeds before you touch any
> hardware.
>
> The proper way to implement GPIO support is btw to write a gpio class
> driver for it. There are lots of gpio drivers already in the kernel.
> I would actually not be surprised if your chip is already supported
> by one of them, and if not one could probably be extended easily. The
> GPIO drivers are exposed to userspace via sysfs.
>
> Again; why does your other kernel driver need to deal with this GPIO?
> This smells like a questionable design decision was made somewhere in
> the chain. Better fix that sooner than later in that case..
It's really just an exercise to see whether it can be done or not. I
thought it might be interesting to continue to experiment with the
hardware a bit more. The real code to control the device is just a bash
script using iotools.
However, using inb() doesn't change anything; it still panics the kernel
immediately. There must be some kernel setup I'm mising... oh well.
> //Peter
>
More information about the coreboot
mailing list