linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* MPC8313 and IO mapping a localbus space.
@ 2010-02-24 19:12 Mike Williamson
  0 siblings, 0 replies; only message in thread
From: Mike Williamson @ 2010-02-24 19:12 UTC (permalink / raw)
  To: linuxppc-dev

Hi,

I'm working on implementing a linux 2.6.23 kernel for a machine based
on the MPC8313. It's
basically a clone of the Freescale ERDB dev kit module with the
addition of an FPGA on CS3 of the localbus.
(it also has NAND and a FLASH NOR part on the localbus as well).

All of the code is based off of the ltib BSP kit provided by
Freescale's 2008-12-22 release.

I am able to address the FPGA in u-boot using "md.w" as well as all
the other localbus devices.

However, when I load up linux, I can't seem to map in the FPGA and
read or write to it.  I don't bus error,
I just get zeros.

The driver code is pretty basic (below), and I've verified that the
LBLAWARx and LBLAWBARx registers
match what was set in u-boot.  I've also verified that the eLBC ORx
and BRx registers match.
The only thing that seems to be missing is that there aren't entries
in the BATs for anything
but the SDRAM.  This is a bit confusing because I seem to be able to
read from NAND and NOR
mtd devices without any issues.

Is there more that I need to do beyond an ioremap() to map in the address space?

Thanks.

-Mike


#define HW_FPGA 0xfa000000
#define HW_FPGA_SIZE 32768

static int __init mapfpga_load(void)
{
        u16 tmp;
        int res = 0;

        printk(KERN_ALERT "%s: loading\n", dev_name);
        mapfpga_dev.fpgaimg_res = request_mem_region(HW_FPGA,
HW_FPGA_SIZE, dev_name);
        if (mapfpga_dev.fpgaimg_res == NULL) {
                printk(KERN_ALERT "%s: could not request memory region"
                                " 0x%08x\n", dev_name, HW_FPGA);
                res = -EINVAL;
                goto out;
        }

        mapfpga_dev.fpgaimg = ioremap_nocache(HW_FPGA, HW_FPGA_SIZE);
        if (mapfpga_dev.fpgaimg == NULL) {
                printk(KERN_ALERT "%s: could not map i/o region"
                                " 0x%08x\n", dev_name, HW_FPGA);
                res = -EINVAL;
                goto out;
        }

        /* this should generate a non-zero number, it's a version register */
        tmp = ioread16(mapfpga_dev.fpgaimg); /* always zero... */
        ...
}



-- 
Michael Williamson
315-425-4045x230
www.criticallink.com

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2010-02-24 19:12 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-24 19:12 MPC8313 and IO mapping a localbus space Mike Williamson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).