Merge mmio and mmap of the KGDB_8250 config string into mmio (with mapping semantic). I see no point in current mmio that accepts pre-mapped addresses from the user. Moreover, this conforms to the interface of 8250_early.
Signed-off-by: Jan Kiszka <[EMAIL PROTECTED]> --- drivers/serial/8250_kgdb.c | 36 ++++++++++++++---------------------- lib/Kconfig.kgdb | 2 +- 2 files changed, 15 insertions(+), 23 deletions(-) Index: b/drivers/serial/8250_kgdb.c =================================================================== --- a/drivers/serial/8250_kgdb.c +++ b/drivers/serial/8250_kgdb.c @@ -208,7 +208,7 @@ static int kgdb8250_uart_init(void) /* * Syntax for this cmdline option is: - * <io|mmio|mmap>,<address>[/<regshift>],<baud rate>,<irq> or + * <io|mmio>,<address>[/<regshift>],<baud rate>,<irq> or * ttyS<n>,<baud rate> */ static int kgdb8250_parse_config(char *str) @@ -225,13 +225,9 @@ static int kgdb8250_parse_config(char *s if (!strncmp(str, "io", 2)) { kgdb8250_port.iotype = UPIO_PORT; str += 2; - } else if (!strncmp(str, "mmap", 4)) { - kgdb8250_port.iotype = UPIO_MEM; - kgdb8250_port.flags |= UPF_IOREMAP; - str += 4; } else if (!strncmp(str, "mmio", 4)) { kgdb8250_port.iotype = UPIO_MEM; - kgdb8250_port.flags &= ~UPF_IOREMAP; + kgdb8250_port.flags = UPF_IOREMAP; str += 4; } else if (!strncmp(str, "ttyS", 4)) { str += 4; @@ -246,7 +242,7 @@ static int kgdb8250_parse_config(char *s if (late_init_passed) return err; printk(KERN_WARNING "kgdb8250: ttyS%d init delayed, " - "use io|mmio|mmap syntax for early init.\n", + "use io/mmio syntax for early init.\n", line); return 0; } @@ -272,14 +268,9 @@ static int kgdb8250_parse_config(char *s if (kgdb8250_port.iotype == UPIO_PORT) kgdb8250_port.iobase = simple_strtoul(str, &str, 16); - else { - if (kgdb8250_port.flags & UPF_IOREMAP) - kgdb8250_port.mapbase = - (unsigned long) simple_strtoul(str, &str, 16); - else - kgdb8250_port.membase = - (void *) simple_strtoul(str, &str, 16); - } + else + kgdb8250_port.mapbase = + (unsigned long)simple_strtoul(str, &str, 16); if (*str == '/') { str++; @@ -362,11 +353,11 @@ static int kgdb8250_late_init(void) kgdb8250_uart_init(); /* Request memory/io regions that we use. */ - if (kgdb8250_port.flags & UPF_IOREMAP) { + if (kgdb8250_port.iotype == UPIO_MEM) { if (!request_mem_region(kgdb8250_port.mapbase, 8 << kgdb8250_port.regshift, "kgdb")) goto rollback; - } else if (kgdb8250_port.iotype == UPIO_PORT) { + } else { if (!request_region(kgdb8250_port.iobase, 8 << kgdb8250_port.regshift, "kgdb")) goto rollback; @@ -423,14 +414,15 @@ static void kgdb8250_cleanup(void) fully_initialized = 0; - if (kgdb8250_port.iotype == UPIO_PORT) { + if (kgdb8250_port.iotype == UPIO_MEM) { + if (kgdb8250_port.flags & UPF_IOREMAP) + iounmap(kgdb8250_port.membase); + release_mem_region(kgdb8250_port.mapbase, + 8 << kgdb8250_port.regshift); + } else { ioport_unmap(ioaddr); release_region(kgdb8250_port.iobase, 8 << kgdb8250_port.regshift); - } else if (kgdb8250_port.flags & UPF_IOREMAP) { - iounmap(kgdb8250_port.membase); - release_mem_region(kgdb8250_port.mapbase, - 8 << kgdb8250_port.regshift); } /* Give the port back to the 8250 driver. */ Index: b/lib/Kconfig.kgdb =================================================================== --- a/lib/Kconfig.kgdb +++ b/lib/Kconfig.kgdb @@ -43,7 +43,7 @@ config KGDB_8250 passed as kernel or module parameter, respectively. The configuration comes in two flavors: - <io|mmio|mmap>,<address>[/<regshift>],<baud rate>,<irq> + <io|mmio>,<address>[/<regshift>],<baud rate>,<irq> or ttyS<n>,<baud rate> ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Kgdb-bugreport mailing list Kgdb-bugreport@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kgdb-bugreport