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
> 



-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to