From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from n2a.bullet.mail.tp2.yahoo.com (n2a.bullet.mail.tp2.yahoo.com [203.188.202.96]) by ozlabs.org (Postfix) with SMTP id 98407DDDF9 for ; Wed, 28 Nov 2007 09:41:58 +1100 (EST) Date: Tue, 27 Nov 2007 02:47:45 -0800 (PST) From: Dell Query Subject: Unable to Read PPC440EPx Board ID thru Board Control and Status Registers (BCSR) To: linuxppc-embedded@ozlabs.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="0-1391738889-1196160465=:53699" Message-ID: <409454.53699.qm@web45615.mail.sp1.yahoo.com> List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --0-1391738889-1196160465=:53699 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Hi, I am creating a simple program which will try to read the board ID of the PPC440EPx thru BCSR but when I load it, it gives me "Data Read PLB Error". I am not sure if I missed out something. I would really appreciate it if somebody could help me on this. I have posted the source code below, as well as the complete message. Many thanks! SOURCE CODE: ---------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include MODULE_LICENSE("GPL"); #define BCSR_BASE 0xC0002000 #define BCSR0 0 #define BCSR1 1 #define BCSR2 2 #define USER_LED 0x2 #define SIZE_TO_MAP 10 #define LED_ON 0 uint __iomem *bcsrbase = NULL; static int __init initFunction(void) { uint tmp; printk("<1> Calling init function.\n"); printk("<1> bcsrbase value %p...\n",bcsrbase); printk("<1> Remapping %x...\n",BCSR_BASE); /*map*/ bcsrbase = ioremap(BCSR_BASE, SIZE_TO_MAP); printk("<1> bcsrbase new value %p...\n",bcsrbase); /*read value*/ /*based on PPC440EPx document, BCSR0 is BoardID*/ tmp = in_be32(bcsrbase + BCSR0 /* BCSR0 */); printk("<1> BCSR0 %x...\n",tmp); /*try to output something*/ //out_be32(bcsrbase , /*LED_ON*/); return 0; } static void __exit cleanupFunction(void) { printk("<1> Calling cleanup function.\n"); /*unmap*/ iounmap(bcsrbase); } module_init(initFunction); module_exit(cleanupFunction); ---------------------------------------------------------------------- ERROR MESSAGE: ---------------------------------------------------------------------- /mnt/flash_fs/var/ftp # insmod bcsr.ko Calling init function. bcsrbase value 00000000... Remapping c0002000... bcsrbase new value d50fe000... Machine check in kernel mode. Data Read PLB Error OPB to PLB3: BSTAT= 0x00000000 PLB3 to PLB4: BEAR=0xffffffffffff7fff BESR0=0x00000000 BESR1=0x00000000 PLB4 to PLB3: BEAR=0xfd7fffffffffffff BESR0=0x00000000 BESR1=0x00000000 PLB3 to OPB: BEAR=0xffffffff BESR0=0x00000000 BESR1=0x00000000 PLB3 arbiter: BEAR=0xbfffffef ACR=0x90000000 BESR=0x00000000 PLB4 to OPB1: BEAR=0x0000000efffbfffb BESR0=0x00000000 BESR1=0x00000000 PLB40 Arbiter: BEAR=0x00000000c0002000 ACR=0xde000000 BESR0=0x0f000000 PLB41 Arbiter: BEAR=0xfffffffffffffffa ACR=0xdf000000 BESR0=0x00000000 POB0: BEAR=0xc27e3194ffffffff BESR0=0x00000000 BESR1=0x00000000 OPB0: BEAR=0x0000000000000000 BSTAT=0x00000000 Oops: machine check, sig: 7 [#1] NIP: D50FC07C LR: D50FC070 CTR: 00000000 REGS: c02bcf50 TRAP: 0202 Not tainted (2.6.21-rc4) MSR: 00029000 CR: 24004022 XER: 00000000 TASK = c05fe490[115] 'insmod' THREAD: cdc6c000 GPR00: D50FC070 CDC6DE80 C05FE490 00000023 0A00C100 00000001 00000000 00000031 GPR08: 00000000 D50FE000 000017E4 C0290000 04004022 1016F458 00000000 00000000 GPR16: 00000000 00000000 00000030 00000030 00000124 D51132BC 00000000 C0035E2C GPR24: 00000022 D5108000 00000022 D50F7500 CF68A21C D50F0000 CF68A000 C0279CEC NIP [D50FC07C] initFunction+0x7c/0x128 [bcsr] LR [D50FC070] initFunction+0x70/0x128 [bcsr] Call Trace: [CDC6DE80] [D50FC070] initFunction+0x70/0x128 [bcsr] (unreliable) [CDC6DEA0] [C003731C] sys_init_module+0xe4/0x1458 [CDC6DF40] [C0001AC4] ret_from_syscall+0x0/0x3c Instruction dump: 60842000 38600000 48000065 7c601b78 3c60d50f 7c040378 386370e8 901d76a0 4800003d 813d76a0 7c0004ac 80890000 <0c040000> 4c00012c 3c60d50f 38637108 Bus error ---------------------------------------------------------------------- --------------------------------- Be a better pen pal. Text or chat with friends inside Yahoo! Mail. See how. --0-1391738889-1196160465=:53699 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Hi,

I am creating a simple program which will try to read the board ID of the PPC440EPx thru BCSR but when I load it, it gives me "Data Read PLB Error".

I am not sure if I missed out something.

I would really appreciate it if somebody could help me on this.

I have posted the source code below, as well as the complete message.

Many thanks!

SOURCE CODE:
----------------------------------------------------------------------
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/platform_device.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <linux/i2c.h>
#include <linux/i2c-id.h>
#include <asm/ocp.h>
#include <asm/ibm4xx.h>

MODULE_LICENSE("GPL");

#define BCSR_BASE   0xC0002000
#define BCSR0       0
#define BCSR1       1
#define BCSR2       2

#define USER_LED    0x2
#define SIZE_TO_MAP 10

#define LED_ON      0

uint __iomem *bcsrbase = NULL;

static int __init initFunction(void) {
   uint tmp;
   printk("<1> Calling init function.\n");
   printk("<1> bcsrbase value %p...\n",bcsrbase);
   printk("<1> Remapping %x...\n",BCSR_BASE);
   /*map*/
   bcsrbase = ioremap(BCSR_BASE, SIZE_TO_MAP);
   printk("<1> bcsrbase new value %p...\n",bcsrbase);
   /*read value*/
   /*based on PPC440EPx document, BCSR0 is BoardID*/
   tmp = in_be32(bcsrbase + BCSR0 /* BCSR0 */);
   printk("<1> BCSR0 %x...\n",tmp);
   /*try to output something*/
   //out_be32(bcsrbase , /*LED_ON*/);
   return 0;
}
static void __exit cleanupFunction(void) {
   printk("<1> Calling cleanup function.\n");
   /*unmap*/
   iounmap(bcsrbase);
}

module_init(initFunction);
module_exit(cleanupFunction);
----------------------------------------------------------------------
ERROR MESSAGE:
----------------------------------------------------------------------
/mnt/flash_fs/var/ftp # insmod bcsr.ko
 Calling init function.
 bcsrbase value 00000000...
 Remapping c0002000...
 bcsrbase new value d50fe000...
Machine check in kernel mode.
Data Read PLB Error
OPB to PLB3: BSTAT= 0x00000000
PLB3 to PLB4: BEAR=0xffffffffffff7fff BESR0=0x00000000 BESR1=0x00000000
PLB4 to PLB3: BEAR=0xfd7fffffffffffff BESR0=0x00000000 BESR1=0x00000000
PLB3 to OPB: BEAR=0xffffffff BESR0=0x00000000 BESR1=0x00000000
PLB3 arbiter: BEAR=0xbfffffef ACR=0x90000000 BESR=0x00000000
PLB4 to OPB1: BEAR=0x0000000efffbfffb BESR0=0x00000000 BESR1=0x00000000
PLB40 Arbiter: BEAR=0x00000000c0002000 ACR=0xde000000 BESR0=0x0f000000
PLB41 Arbiter: BEAR=0xfffffffffffffffa ACR=0xdf000000 BESR0=0x00000000
POB0: BEAR=0xc27e3194ffffffff BESR0=0x00000000 BESR1=0x00000000
OPB0: BEAR=0x0000000000000000 BSTAT=0x00000000
Oops: machine check, sig: 7 [#1]
NIP: D50FC07C LR: D50FC070 CTR: 00000000
REGS: c02bcf50 TRAP: 0202   Not tainted  (2.6.21-rc4)
MSR: 00029000 <EE,ME>  CR: 24004022  XER: 00000000
TASK = c05fe490[115] 'insmod' THREAD: cdc6c000
GPR00: D50FC070 CDC6DE80 C05FE490 00000023 0A00C100 00000001 00000000 00000031
GPR08: 00000000 D50FE000 000017E4 C0290000 04004022 1016F458 00000000 00000000
GPR16: 00000000 00000000 00000030 00000030 00000124 D51132BC 00000000 C0035E2C
GPR24: 00000022 D5108000 00000022 D50F7500 CF68A21C D50F0000 CF68A000 C0279CEC
NIP [D50FC07C] initFunction+0x7c/0x128 [bcsr]
LR [D50FC070] initFunction+0x70/0x128 [bcsr]
Call Trace:
[CDC6DE80] [D50FC070] initFunction+0x70/0x128 [bcsr] (unreliable)
[CDC6DEA0] [C003731C] sys_init_module+0xe4/0x1458
[CDC6DF40] [C0001AC4] ret_from_syscall+0x0/0x3c
Instruction dump:
60842000 38600000 48000065 7c601b78 3c60d50f 7c040378 386370e8 901d76a0
4800003d 813d76a0 7c0004ac 80890000 <0c040000> 4c00012c 3c60d50f 38637108
Bus error
----------------------------------------------------------------------


Be a better pen pal. Text or chat with friends inside Yahoo! Mail. See how. --0-1391738889-1196160465=:53699--