of_serial and device trees
Simon Kagstrom
simon.kagstrom at ericsson.com
Thu Mar 26 01:51:13 EST 2009
Hi Scott!
Thanks a lot for all your help with the device tree! As you suspected,
I'm writing for a fairly old kernel (2.6.21, WindRiver). I know, I know.
On Tue, 24 Mar 2009 10:55:45 -0500
Scott Wood <scottwood at freescale.com> wrote:
> Add compatible = "simple-bus". This lets children of this node be probed
> by of_platform drivers (make sure you list simple-bus when calling
> of_platform_bus_probe), and in a few other places (like legacy_serial.c).
Right, thanks. I've added this of_platform_bus_probe as an initcall,
and it now tries to configure the serial ports as expected (and with
some other issues).
> Compatible should be of the form "vendor,device" -- and does "isf"
> uniquely identify the specific FPGA logic, or are there other versions
> out there (or likely to exist in the future)? Note that there are some
> bad examples in existing device trees that have yet to be fixed.
There are no other versions yet, but I suppose there will be (it's
implemented in a FPGA after all!). So what is the general handling of
versions, should it be something like
compatible = "ericsson,isf-pic", "ericsson,isf-pic-v2"
etc if we'd make new revisions of the device?
> I'm guessing that your FPGA PIC driver isn't getting its register address
> from the device tree, given that it works without the ranges property?
It is, but I didn't check it for correctness yet, so I suppose I might
have mapped the wrong thing. The code looks like this:
struct resource phys_addr;
if (of_address_to_resource(np, 0, &phys_addr) != 0) {
printk(KERN_ERR": Could not get ISF PIC memory resource\n");
return NULL;
}
spin_lock_init(&isf->lock);
isf->ioaddr = ioremap(phys_addr.start,
phys_addr.end - phys_addr.start);
So I should use the reg property and platform_get_resource() instead?
// Simon
More information about the Linuxppc-dev
mailing list