or this... static int sec_probe(struct device *device) { struct platform_device *pdev = to_platform_device(device); struct resource *r;
sec_irq = platform_get_irq(pdev, 0); rc = request_irq(sc->sc_irq, talitos_intr, 0, "talitos", sc); if (rc) { printk("failed to hook irq %d\n", sec_irq); sec_irq = -1; goto out; } /* we read its hardware registers as memory */ r = platform_get_resource(pdev, IORESOURCE_MEM, 0); sec_base_addr = (ocf_iomem_t) ioremap(r->start, (r->end - r->start)); if (!sec_base_addr) { printk("failed to ioremap 0x%x-0x%x\n", (u32)r->start, (u32)r->end - (u32)r->start); goto out; } ... } Kim On Tue, 09 Aug 2005 17:53:42 +0200 Clemens Koller <clemens.koller at anagramm.de> wrote: > Hi! > > You might want to try that: > > #include <asm/mpc85xx.h> > #include <immap_85xx.h> /* see mail archives for complete > mpc8540 version */ > ... > > void foo(void) > { > volatile ccsr_t *immap; > phys_addr_t ccsrbar; > > ccsrbar=get_ccsrbar(); > immap=ioremap(ccsrbar,sizeof(ccsr_t)); /* is > ioremap_nochache() the same on mpc85xx? */ > if (!immap) { > printk(KERN_ALERT "Failed to ioremap CCSRBAR!\n"); > err = -EIO; > goto out; > } > > /* examples */ > printk(KERN_INFO "CCSRBAR addr %.8lx\n",ccsrbar); > printk(KERN_INFO "IMMAP addr %p\n",immap); > printk(KERN_INFO "BR0 %.8x\n",immap->im_lbc.br0); > printk(KERN_INFO "OR0 %.8x\n",immap->im_lbc.or0); > > /* unmap the ccsr*/ > iounmap(immap); > out: > } > > I hope that's all current code. > Comments are welcome. > > Greets, > > Clemens Koller > _______________________________ > R&D Imaging Devices > Anagramm GmbH > Rupert-Mayer-Str. 45/1 > 81379 Muenchen > Germany > > http://www.anagramm.de > Phone: +49-89-741518-50 > Fax: +49-89-741518-19 > > > Gerhard Jaeger wrote: > > On Tuesday 09 August 2005 16:04, Eric Kampman wrote: > > > >>Trying to port an SEC driver to Linux/PPC8555. Reading > >>the default CCSRBAR @ 0xFF700000 I read 0xFFFFFFFF > >>which is wrong. Looking at Metrowerks init files and > >>uboot code (1.1.2) I see it's likely been moved to > >>0xE0000000, but I get a seg fault when I try to read > >>there. > >> > >>So, what am I doing wrong, and even better, how do I > >>at runtime find out where CCSRBAR is? Thanks in > >>advance, and please forgive the likely ignorance, > >> > >>Eric > >> > > > > > > use the get_ccsrbar() function to get the address, then ioremap() > > will be your friend ;) > > > > HTH > > Gerhard > > _______________________________________________ > Linuxppc-embedded mailing list > Linuxppc-embedded at ozlabs.org > https://ozlabs.org/mailman/listinfo/linuxppc-embedded -- Kim