MPC8555CDS & CCSRBAR
Kim Phillips
kim.phillips at freescale.com
Wed Aug 10 02:04:59 EST 2005
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
More information about the Linuxppc-embedded
mailing list