static void __init sbc8560_early_serial_map(void) { struct uart_port uart_req; /* Setup serial port access */ memset(&uart_req, 0, sizeof (uart_req)); uart_req.irq = MPC85xx_IRQ_EXT9; uart_req.flags = STD_COM_FLAGS; uart_req.uartclk = BASE_BAUD * 16; uart_req.iotype = UPIO_MEM; uart_req.mapbase = UARTA_ADDR; uart_req.membase = ioremap(uart_req.mapbase, MPC85xx_UART0_SIZE); uart_req.type = PORT_16650; #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) gen550_init(0, &uart_req); #endif if (early_serial_setup(&uart_req) != 0) printk("Early serial init of port 0 failed\n"); /* Assume early_serial_setup() doesn't modify uart_req */ uart_req.line = 1; uart_req.mapbase = UARTB_ADDR; uart_req.membase = ioremap(uart_req.mapbase, MPC85xx_UART1_SIZE); uart_req.irq = MPC85xx_IRQ_EXT10; #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) gen550_init(1, &uart_req); #endif if (early_serial_setup(&uart_req) != 0) printk("Early serial init of port 1 failed\n"); }
static void __init ppc7d_early_serial_map(void) { #if defined(CONFIG_SERIAL_MPSC_CONSOLE) mv64x60_progress_init(CONFIG_MV64X60_NEW_BASE); #elif defined(CONFIG_SERIAL_8250) struct uart_port serial_req; /* Setup serial port access */ memset(&serial_req, 0, sizeof(serial_req)); serial_req.uartclk = UART_CLK; serial_req.irq = 4; serial_req.flags = STD_COM_FLAGS; serial_req.iotype = UPIO_MEM; serial_req.membase = (u_char *) PPC7D_SERIAL_0; gen550_init(0, &serial_req); if (early_serial_setup(&serial_req) != 0) printk(KERN_ERR "Early serial init of port 0 failed\n"); /* Assume early_serial_setup() doesn't modify serial_req */ serial_req.line = 1; serial_req.irq = 3; serial_req.membase = (u_char *) PPC7D_SERIAL_1; gen550_init(1, &serial_req); if (early_serial_setup(&serial_req) != 0) printk(KERN_ERR "Early serial init of port 1 failed\n"); #else #error CONFIG_KGDB || CONFIG_SERIAL_TEXT_DEBUG has no supported CONFIG_SERIAL_XXX #endif }
void __init mpc83xx_early_serial_map(void) { #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB_8250) struct uart_port serial_req; #endif struct plat_serial8250_port *pdata; bd_t *binfo = (bd_t *) __res; pdata = (struct plat_serial8250_port *) ppc_sys_get_pdata(MPC83xx_DUART); /* Setup serial port access */ pdata[0].uartclk = binfo->bi_busfreq; pdata[0].mapbase += binfo->bi_immr_base; pdata[0].membase = ioremap(pdata[0].mapbase, 0x100); #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB_8250) memset(&serial_req, 0, sizeof (serial_req)); serial_req.iotype = SERIAL_IO_MEM; serial_req.mapbase = pdata[0].mapbase; serial_req.membase = pdata[0].membase; serial_req.regshift = 0; serial_req.uartclk = pdata[0].uartclk; serial_req.irq = pdata[0].irq; serial_req.line = pdata[0].line; serial_req.flags = pdata[0].flags; if (early_serial_setup(&serial_req) != 0) printk("Early serial init of port 0 failed\n"); #if defined(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_8250) /* Assume gen550_init() doesn't modify serial_req */ serial_req.mapbase = pdata[1].mapbase; serial_req.membase = pdata[1].membase; serial_req.line = pdata[1].line; if (early_serial_setup(&serial_req) != 0) printk("Early serial init of port 1 failed\n"); #if defined(CONFIG_SERIAL_TEXT_DEBUG) gen550_init(1, &serial_req); #endif #ifdef CONFIG_KGDB_8250 kgdb8250_add_port(1, &serial_req); #endif #endif }
static void __init ebony_early_serial_map(void) { struct uart_port port; /* Setup ioremapped serial port access */ memset(&port, 0, sizeof(port)); port.membase = ioremap64(PPC440GP_UART0_ADDR, 8); port.irq = 0; port.uartclk = clocks.uart0; port.regshift = 0; port.iotype = SERIAL_IO_MEM; port.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST; port.line = 0; #ifdef CONFIG_SERIAL_8250 if (early_serial_setup(&port) != 0) printk("Early serial init of port 0 failed\n"); #endif #ifdef CONFIG_SERIAL_TEXT_DEBUG /* Configure debug serial access */ gen550_init(0, &port); #endif #ifdef CONFIG_KGDB_8250 kgdb8250_add_port(0, &port); #endif #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB_8250) /* Purge TLB entry added in head_44x.S for early serial access */ _tlbie(UART0_IO_BASE); #endif port.membase = ioremap64(PPC440GP_UART1_ADDR, 8); port.irq = 1; port.uartclk = clocks.uart1; port.line = 1; #ifdef CONFIG_SERIAL_8250 if (early_serial_setup(&port) != 1) printk("Early serial init of port 1 failed\n"); #endif #ifdef CONFIG_SERIAL_TEXT_DEBUG /* Configure debug serial access */ gen550_init(1, &port); #endif #ifdef CONFIG_KGDB_8250 kgdb8250_add_port(1, &port); #endif }
static void __init yosemite_early_serial_map(void) { struct uart_port port; /* Setup ioremapped serial port access */ memset(&port, 0, sizeof(port)); port.mapbase = PPC440EP_UART0_ADDR; port.membase = ioremap64(PPC440EP_UART0_ADDR, 8); port.irq = 0; port.uartclk = clocks.uart0; port.regshift = 0; port.iotype = SERIAL_IO_MEM; port.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST; port.line = 0; if (early_serial_setup(&port) != 0) { printk("Early serial init of port 0 failed\n"); } #if defined(CONFIG_SERIAL_TEXT_DEBUG) /* Configure debug serial access */ gen550_init(0, &port); #endif #ifdef CONFIG_KGDB_8250 kgdb8250_add_port(0, &port); #endif port.mapbase = PPC440EP_UART1_ADDR; port.membase = ioremap64(PPC440EP_UART1_ADDR, 8); port.irq = 1; port.uartclk = clocks.uart1; port.line = 1; if (early_serial_setup(&port) != 0) { printk("Early serial init of port 1 failed\n"); } #if defined(CONFIG_SERIAL_TEXT_DEBUG) /* Configure debug serial access */ gen550_init(1, &port); #endif #ifdef CONFIG_KGDB_8250 kgdb8250_add_port(1, &port); #endif }
static void __init ocotea_early_serial_map(void) { struct uart_port port; /* Setup ioremapped serial port access */ memset(&port, 0, sizeof(port)); port.membase = ioremap64(PPC440GX_UART0_ADDR, 8); port.irq = UART0_INT; port.uartclk = clocks.uart0; port.regshift = 0; port.iotype = UPIO_MEM; port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST; port.line = 0; if (early_serial_setup(&port) != 0) { printk("Early serial init of port 0 failed\n"); } #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) /* Configure debug serial access */ gen550_init(0, &port); /* Purge TLB entry added in head_44x.S for early serial access */ _tlbie(UART0_IO_BASE, 0); #endif port.membase = ioremap64(PPC440GX_UART1_ADDR, 8); port.irq = UART1_INT; port.uartclk = clocks.uart1; port.line = 1; if (early_serial_setup(&port) != 0) { printk("Early serial init of port 1 failed\n"); } #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) /* Configure debug serial access */ gen550_init(1, &port); #endif }
static void __init ocotea_early_serial_map(void) { struct serial_struct serial_req; /* Setup ioremapped serial port access */ memset(&serial_req, 0, sizeof(serial_req)); serial_req.line = 0; serial_req.baud_base = BASE_BAUD; serial_req.port = 0; serial_req.irq = 0; serial_req.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST; serial_req.io_type = SERIAL_IO_MEM; serial_req.iomem_base = ioremap64(PPC440GX_UART0_ADDR, 8); serial_req.iomem_reg_shift = 0; #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) /* Configure debug serial access */ gen550_init(0, &serial_req); #endif if (early_serial_setup(&serial_req) != 0) { printk("Early serial init of port 0 failed\n"); } /* Assume early_serial_setup() doesn't modify serial_req */ serial_req.line = 1; serial_req.port = 1; serial_req.irq = 1; serial_req.iomem_base = ioremap64(PPC440GX_UART1_ADDR, 8); #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) /* Configure debug serial access */ gen550_init(1, &serial_req); #endif if (early_serial_setup(&serial_req) != 0) { printk("Early serial init of port 1 failed\n"); } }
static void __init taiga_early_serial_map(void) { struct uart_port serial_req; /* Setup serial port access */ memset(&serial_req, 0, sizeof(serial_req)); serial_req.uartclk = UART_CLK; serial_req.irq = IRQ_TSI108_UART0; serial_req.flags = STD_COM_FLAGS; serial_req.iotype = SERIAL_IO_MEM; /* CONFIG_TAIGA: remapped */ serial_req.membase = (u_char *) (TAIGA_SERIAL_0 | TSI108_CSR_ADDR_VIRT); #ifdef CONFIG_SERIAL_TEXT_DEBUG gen550_init(0, &serial_req); #endif #ifdef CONFIG_KGDB_8250 kgdb8250_add_port(0, &serial_req); #endif if (early_serial_setup(&serial_req) != 0) printk(KERN_ERR "Early serial init of port 0 failed\n"); /* Assume early_serial_setup() doesn't modify serial_req */ serial_req.line = 1; serial_req.irq = IRQ_TSI108_UART1; /* CONFIG_TAIGA: remapped */ serial_req.membase = (u_char *) (TAIGA_SERIAL_1 | TSI108_CSR_ADDR_VIRT); #ifdef CONFIG_SERIAL_TEXT_DEBUG gen550_init(1, &serial_req); #endif #ifdef CONFIG_KGDB_8250 kgdb8250_add_port(1, &serial_req); #endif if (early_serial_setup(&serial_req) != 0) printk(KERN_ERR "Early serial init of port 1 failed\n"); }
void __init mpc83xx_early_serial_map(void) { #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) struct uart_port serial_req; #endif struct plat_serial8250_port *pdata; bd_t *binfo = (bd_t *) __res; pdata = (struct plat_serial8250_port *) ppc_sys_get_pdata(MPC83xx_DUART); /* Setup serial port access */ pdata[0].uartclk = binfo->bi_busfreq; pdata[0].mapbase += binfo->bi_immr_base; pdata[0].membase = ioremap(pdata[0].mapbase, 0x100); #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) memset(&serial_req, 0, sizeof (serial_req)); serial_req.iotype = SERIAL_IO_MEM; serial_req.mapbase = pdata[0].mapbase; serial_req.membase = pdata[0].membase; serial_req.regshift = 0; gen550_init(0, &serial_req); #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) /* Assume gen550_init() doesn't modify serial_req */ serial_req.mapbase = pdata[1].mapbase; serial_req.membase = pdata[1].membase; gen550_init(1, &serial_req); #endif }
static void __init sandpoint_early_serial_map(void) { struct serial_struct serial_req; /* Setup serial port access */ memset(&serial_req, 0, sizeof (serial_req)); serial_req.baud_base = BASE_BAUD; serial_req.line = 0; serial_req.port = 0; serial_req.irq = 4; serial_req.flags = ASYNC_BOOT_AUTOCONF; serial_req.io_type = SERIAL_IO_MEM; serial_req.iomem_base = (u_char *) SANDPOINT_SERIAL_0; serial_req.iomem_reg_shift = 0; #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) gen550_init(0, &serial_req); #endif if (early_serial_setup(&serial_req) != 0) printk("Early serial init of port 0 failed\n"); /* Assume early_serial_setup() doesn't modify serial_req */ serial_req.line = 1; serial_req.port = 1; serial_req.irq = 3; /* XXXX */ serial_req.iomem_base = (u_char *) SANDPOINT_SERIAL_1; #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) gen550_init(1, &serial_req); #endif if (early_serial_setup(&serial_req) != 0) printk("Early serial init of port 1 failed\n"); }
/* Early serial support functions */ static void __init virtex_early_serial_init(int num, struct plat_serial8250_port *pdata) { #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) struct uart_port serial_req; memset(&serial_req, 0, sizeof(serial_req)); serial_req.mapbase = pdata->mapbase; serial_req.membase = pdata->membase; serial_req.irq = pdata->irq; serial_req.uartclk = pdata->uartclk; serial_req.regshift = pdata->regshift; serial_req.iotype = pdata->iotype; serial_req.flags = pdata->flags; gen550_init(num, &serial_req); #endif }
static void __init bamboo_early_serial_map(void) { struct uart_port port; /* Setup ioremapped serial port access */ memset(&port, 0, sizeof(port)); port.membase = ioremap64(PPC440EP_UART0_ADDR, 8); port.irq = 0; port.uartclk = clocks.uart0; port.regshift = 0; port.iotype = UPIO_MEM; port.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST; port.line = 0; if (early_serial_setup(&port) != 0) { printk("Early serial init of port 0 failed\n"); } #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) /* Configure debug serial access */ gen550_init(0, &port); #endif port.membase = ioremap64(PPC440EP_UART1_ADDR, 8); port.irq = 1; port.uartclk = clocks.uart1; port.line = 1; if (early_serial_setup(&port) != 0) { printk("Early serial init of port 1 failed\n"); } #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) /* Configure debug serial access */ gen550_init(1, &port); #endif port.membase = ioremap64(PPC440EP_UART2_ADDR, 8); port.irq = 3; port.uartclk = clocks.uart2; port.line = 2; if (early_serial_setup(&port) != 0) { printk("Early serial init of port 2 failed\n"); } #if defined(CONFIG_SERIAL_TEXT_DEBUG) || defined(CONFIG_KGDB) /* Configure debug serial access */ gen550_init(2, &port); #endif port.membase = ioremap64(PPC440EP_UART3_ADDR, 8); port.irq = 4; port.uartclk = clocks.uart3; port.line = 3; if (early_serial_setup(&port) != 0) { printk("Early serial init of port 3 failed\n"); } }
/* ************************************************************************ */ void __init platform_init(unsigned long r3, unsigned long r4, unsigned long r5, unsigned long r6, unsigned long r7) { /* parse_bootinfo must always be called first */ parse_bootinfo(find_bootinfo()); /* * If we were passed in a board information, copy it into the * residual data area. */ if (r3) { memcpy((void *) __res, (void *) (r3 + KERNELBASE), sizeof (bd_t)); } #if defined(CONFIG_SERIAL_TEXT_DEBUG) && !defined(CONFIG_MPC8560) { bd_t *binfo = (bd_t *) __res; struct uart_port p; /* Use the last TLB entry to map CCSRBAR to allow access to DUART regs */ settlbcam(num_tlbcam_entries - 1, binfo->bi_immr_base, binfo->bi_immr_base, MPC85xx_CCSRBAR_SIZE, _PAGE_IO, 0); memset(&p, 0, sizeof (p)); p.iotype = UPIO_MEM; p.membase = (void *) binfo->bi_immr_base + MPC85xx_UART0_OFFSET; p.uartclk = binfo->bi_busfreq; gen550_init(0, &p); memset(&p, 0, sizeof (p)); p.iotype = UPIO_MEM; p.membase = (void *) binfo->bi_immr_base + MPC85xx_UART1_OFFSET; p.uartclk = binfo->bi_busfreq; gen550_init(1, &p); } #endif #if defined(CONFIG_BLK_DEV_INITRD) /* * If the init RAM disk has been configured in, and there's a valid * starting address for it, set it up. */ if (r4) { initrd_start = r4 + KERNELBASE; initrd_end = r5 + KERNELBASE; } #endif /* CONFIG_BLK_DEV_INITRD */ /* Copy the kernel command line arguments to a safe place. */ if (r6) { *(char *) (r7 + KERNELBASE) = 0; strcpy(cmd_line, (char *) (r6 + KERNELBASE)); } identify_ppc_sys_by_id(mfspr(SPRN_SVR)); /* setup the PowerPC module struct */ ppc_md.setup_arch = tqm85xx_setup_arch; ppc_md.show_cpuinfo = tqm85xx_show_cpuinfo; ppc_md.init_IRQ = tqm85xx_init_IRQ; ppc_md.get_irq = openpic_get_irq; ppc_md.restart = mpc85xx_restart; ppc_md.power_off = mpc85xx_power_off; ppc_md.halt = mpc85xx_halt; ppc_md.find_end_of_memory = mpc85xx_find_end_of_memory; ppc_md.time_init = NULL; ppc_md.set_rtc_time = NULL; ppc_md.get_rtc_time = NULL; ppc_md.calibrate_decr = mpc85xx_calibrate_decr; #ifndef CONFIG_MPC8560 #if defined(CONFIG_SERIAL_8250) && defined(CONFIG_SERIAL_TEXT_DEBUG) ppc_md.progress = gen550_progress; #endif /* CONFIG_SERIAL_8250 && CONFIG_SERIAL_TEXT_DEBUG */ #if defined(CONFIG_SERIAL_8250) && defined(CONFIG_KGDB) ppc_md.early_serial_map = mpc85xx_early_serial_map; #endif /* CONFIG_SERIAL_8250 && CONFIG_KGDB */ #endif /* CONFIG_MPC8560 */ if (ppc_md.progress) ppc_md.progress("tqm85xx_init(): exit", 0); return; }
void __init platform_init(unsigned long r3, unsigned long r4, unsigned long r5, unsigned long r6, unsigned long r7) { bd_t *binfo = (bd_t *) __res; /* parse_bootinfo must always be called first */ parse_bootinfo(find_bootinfo()); /* * If we were passed in a board information, copy it into the * residual data area. */ if (r3) { memcpy((void *) __res, (void *) (r3 + KERNELBASE), sizeof (bd_t)); } #if defined(CONFIG_BLK_DEV_INITRD) /* * If the init RAM disk has been configured in, and there's a valid * starting address for it, set it up. */ if (r4) { initrd_start = r4 + KERNELBASE; initrd_end = r5 + KERNELBASE; } #endif /* CONFIG_BLK_DEV_INITRD */ /* Copy the kernel command line arguments to a safe place. */ if (r6) { *(char *) (r7 + KERNELBASE) = 0; strcpy(cmd_line, (char *) (r6 + KERNELBASE)); } immrbar = binfo->bi_immr_base; tqm834x_set_bat(); #if defined(CONFIG_SERIAL_8250) && defined(CONFIG_SERIAL_TEXT_DEBUG) { struct uart_port p; memset(&p, 0, sizeof (p)); p.iotype = SERIAL_IO_MEM; p.membase = (unsigned char __iomem *)(VIRT_IMMRBAR + 0x4500); p.uartclk = binfo->bi_busfreq; gen550_init(0, &p); memset(&p, 0, sizeof (p)); p.iotype = SERIAL_IO_MEM; p.membase = (unsigned char __iomem *)(VIRT_IMMRBAR + 0x4600); p.uartclk = binfo->bi_busfreq; gen550_init(1, &p); } #endif identify_ppc_sys_by_id(mfspr(SPRN_SVR)); /* setup the PowerPC module struct */ ppc_md.setup_arch = tqm834x_setup_arch; ppc_md.show_cpuinfo = tqm834x_show_cpuinfo; ppc_md.init_IRQ = tqm834x_init_IRQ; ppc_md.get_irq = ipic_get_irq; ppc_md.restart = mpc83xx_restart; ppc_md.power_off = mpc83xx_power_off; ppc_md.halt = mpc83xx_halt; ppc_md.find_end_of_memory = mpc83xx_find_end_of_memory; ppc_md.setup_io_mappings = tqm834x_map_io; ppc_md.time_init = mpc83xx_time_init; ppc_md.set_rtc_time = NULL; ppc_md.get_rtc_time = NULL; ppc_md.calibrate_decr = mpc83xx_calibrate_decr; ppc_md.early_serial_map = mpc83xx_early_serial_map; #if defined(CONFIG_SERIAL_8250) && defined(CONFIG_SERIAL_TEXT_DEBUG) ppc_md.progress = gen550_progress; #endif /* CONFIG_SERIAL_8250 && CONFIG_SERIAL_TEXT_DEBUG */ #ifdef CONFIG_PCI ppc_md.pci_swizzle = common_swizzle; ppc_md.pci_map_irq = tqm834x_map_irq; ppc_md.pci_exclude_device = tqm834x_exclude_device; ppc_md.pcibios_fixup = mpc834x_pcibios_fixup; #endif /* CONFIG_PCI */ if (ppc_md.progress) ppc_md.progress("tqm834x_init(): exit", 0); return; }