MPC8555CDS CCSRBAR

2005-08-09 Thread Eric Kampman
Trying to port an SEC driver to Linux/PPC8555. Reading
the default CCSRBAR @ 0xFF70 I read 0x
which is wrong. Looking at Metrowerks init files and
uboot code (1.1.2) I see it's likely been moved to
0xE000, 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




Start your day with Yahoo! - make it your home page 
http://www.yahoo.com/r/hs 
 



MPC8555CDS CCSRBAR

2005-08-09 Thread Gerhard Jaeger
On Tuesday 09 August 2005 16:04, Eric Kampman wrote:
 Trying to port an SEC driver to Linux/PPC8555. Reading
 the default CCSRBAR @ 0xFF70 I read 0x
 which is wrong. Looking at Metrowerks init files and
 uboot code (1.1.2) I see it's likely been moved to
 0xE000, 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


-- 
Gerhard Jaeger gjaeger at sysgo.com
SYSGO AG  Embedded and Real-Time Software
www.sysgo.com | www.elinos.com | www.pikeos.com | www.osek.de 




MPC8555CDS CCSRBAR

2005-08-09 Thread Kumar Gala

On Aug 9, 2005, at 9:15 AM, 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 @ 0xFF70 I read 0x
 which is wrong. Looking at Metrowerks init files and
 uboot code (1.1.2) I see it's likely been moved to
 0xE000, 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 ;)

Depending on the kernel version you might want to use the driver  
model instead.  There is an entry for the security engine which will  
give you the physical address to ioremap and the interrupt number to  
use.  Doing this will be more portable.  However, this is only in  
newer 2.6 kernels.

- kumar



MPC8555CDS CCSRBAR

2005-08-09 Thread Clemens Koller
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
___
RD 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 @ 0xFF70 I read 0x
which is wrong. Looking at Metrowerks init files and
uboot code (1.1.2) I see it's likely been moved to
0xE000, 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




MPC8555CDS CCSRBAR

2005-08-09 Thread Kim Phillips
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
 ___
 RD 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 @ 0xFF70 I read 0x
 which is wrong. Looking at Metrowerks init files and
 uboot code (1.1.2) I see it's likely been moved to
 0xE000, 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