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

Reply via email to