Add/fix KGDB support in arch/ppc/syslib/ppc8[35]xx_setup.c:
- #include <linux/kgdb.h> and <syslib/gen550.h> instead of <asm/kgdb.h>;
- enclose mpc8[35]xx_early_serial_map() functions into
#if defined(CONFIG_SERIAL_8250) || defined(CONFIG_KGDB_8250);
- change CONFIG_KGDB to CONFIG_KGDB_8250 everywhere;
- get .irq, .flags, and .uartclk fileds from the 8250 platform data;
- add the missing calls to kgdb8250_add_port();
- enclose calls to gen550_init() with #ifdef CONFIG_SERIAL_TEXT_DEBUG.
Signed-off-by: Sergey Shtylyov <[EMAIL PROTECTED]>
---
Here's only a part of my fixes to arch/ppc/ from August -- at last!
The patch is against linux2_6_21_uprev branch...
arch/ppc/syslib/ppc83xx_setup.c | 24 +++++++++++++++++++-----
arch/ppc/syslib/ppc85xx_setup.c | 13 +++++++++++--
2 files changed, 30 insertions(+), 7 deletions(-)
Index: linux-2.6/arch/ppc/syslib/ppc83xx_setup.c
===================================================================
--- linux-2.6.orig/arch/ppc/syslib/ppc83xx_setup.c
+++ linux-2.6/arch/ppc/syslib/ppc83xx_setup.c
@@ -30,12 +30,12 @@
#include <linux/tty.h> /* for linux/serial_core.h */
#include <linux/serial_core.h>
#include <linux/serial_8250.h>
+#include <linux/kgdb.h>
#include <asm/time.h>
#include <asm/mpc83xx.h>
#include <asm/mmu.h>
#include <asm/ppc_sys.h>
-#include <asm/kgdb.h>
#include <asm/delay.h>
#include <asm/machdep.h>
@@ -44,6 +44,7 @@
#include <asm/delay.h>
#include <syslib/ppc83xx_pci.h>
#endif
+#include <syslib/gen550.h>
phys_addr_t immrbar;
@@ -87,11 +88,11 @@ mpc83xx_calibrate_decr(void)
tb_to_us = mulhwu_scale_factor(freq / divisor, 1000000);
}
-#ifdef CONFIG_SERIAL_8250
+#if defined(CONFIG_SERIAL_8250) || defined(CONFIG_KGDB_8250)
void __init
mpc83xx_early_serial_map(void)
{
-#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB)
+#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB_8250)
struct uart_port serial_req;
#endif
struct plat_serial8250_port *pdata;
@@ -103,27 +104,40 @@ mpc83xx_early_serial_map(void)
pdata[0].mapbase += binfo->bi_immr_base;
pdata[0].membase = ioremap(pdata[0].mapbase, 0x100);
-#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB)
+#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB_8250)
memset(&serial_req, 0, sizeof (serial_req));
serial_req.iotype = UPIO_MEM;
serial_req.mapbase = pdata[0].mapbase;
serial_req.membase = pdata[0].membase;
serial_req.regshift = 0;
+ serial_req.irq = pdata[0].irq;
+ serial_req.flags = pdata[0].flags;
+ serial_req.uartclk = pdata[0].uartclk;
+#ifdef CONFIG_SERIAL_TEXT_DEBUG
gen550_init(0, &serial_req);
#endif
+#ifdef CONFIG_KGDB_8250
+ kgdb8250_add_port(0, &serial_req);
+#endif
+#endif
pdata[1].uartclk = binfo->bi_busfreq;
pdata[1].mapbase += binfo->bi_immr_base;
pdata[1].membase = ioremap(pdata[1].mapbase, 0x100);
-#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB)
+#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB_8250)
/* Assume gen550_init() doesn't modify serial_req */
serial_req.mapbase = pdata[1].mapbase;
serial_req.membase = pdata[1].membase;
+#ifdef CONFIG_SERIAL_TEXT_DEBUG
gen550_init(1, &serial_req);
#endif
+#ifdef CONFIG_KGDB_8250
+ kgdb8250_add_port(1, &serial_req);
+#endif
+#endif
}
#endif
Index: linux-2.6/arch/ppc/syslib/ppc85xx_setup.c
===================================================================
--- linux-2.6.orig/arch/ppc/syslib/ppc85xx_setup.c
+++ linux-2.6/arch/ppc/syslib/ppc85xx_setup.c
@@ -19,16 +19,17 @@
#include <linux/tty.h> /* for linux/serial_core.h */
#include <linux/serial_core.h>
#include <linux/serial_8250.h>
+#include <linux/kgdb.h>
#include <asm/time.h>
#include <asm/mpc85xx.h>
#include <asm/immap_85xx.h>
#include <asm/mmu.h>
#include <asm/ppc_sys.h>
-#include <asm/kgdb.h>
#include <asm/machdep.h>
#include <syslib/ppc85xx_setup.h>
+#include <syslib/gen550.h>
extern void abort(void);
@@ -69,10 +70,11 @@ mpc85xx_calibrate_decr(void)
mtspr(SPRN_TCR, TCR_DIE);
}
+#if defined(CONFIG_SERIAL_8250) || defined(CONFIG_KGDB_8250)
void __init
mpc85xx_early_serial_map(void)
{
-#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB)
+#if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB_8250)
struct uart_port serial_req;
#endif
struct plat_serial8250_port *pdata;
@@ -90,8 +92,13 @@ mpc85xx_early_serial_map(void)
serial_req.mapbase = pdata[0].mapbase;
serial_req.membase = pdata[0].membase;
serial_req.regshift = 0;
+ serial_req.irq = pdata[0].irq;
+ serial_req.flags = pdata[0].flags;
+ serial_req.uartclk = pdata[0].uartclk;
+#ifdef CONFIG_SERIAL_TEXT_DEBUG
gen550_init(0, &serial_req);
+#endif
#ifdef CONFIG_KGDB_8250
kgdb8250_add_port(0, &serial_req);
#endif
@@ -106,7 +113,9 @@ mpc85xx_early_serial_map(void)
serial_req.mapbase = pdata[1].mapbase;
serial_req.membase = pdata[1].membase;
+#ifdef CONFIG_SERIAL_TEXT_DEBUG
gen550_init(1, &serial_req);
+#endif
#ifdef CONFIG_KGDB_8250
kgdb8250_add_port(1, &serial_req);
#endif
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Kgdb-bugreport mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport