本文整理汇总了C++中early_serial_setup函数的典型用法代码示例。如果您正苦于以下问题:C++ early_serial_setup函数的具体用法?C++ early_serial_setup怎么用?C++ early_serial_setup使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了early_serial_setup函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: ppc7d_early_serial_map
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
}
开发者ID:BackupTheBerlios,项目名称:arp2-svn,代码行数:31,代码来源:radstone_ppc7d.c
示例2: jz_serial_setup
static void __init jz_serial_setup(void)
{
#ifdef CONFIG_SERIAL_8250
struct uart_port s;
REG8(UART0_FCR) |= UARTFCR_UUE; /* enable UART module */
memset(&s, 0, sizeof(s));
s.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST;
s.iotype = SERIAL_IO_MEM;
s.regshift = 2;
s.uartclk = jz4740_clock_bdata.ext_rate;
s.line = 0;
s.membase = (u8 *)UART0_BASE;
s.irq = JZ_IRQ_UART0;
if (early_serial_setup(&s) != 0) {
printk(KERN_ERR "Serial ttyS0 setup failed!\n");
}
s.line = 1;
s.membase = (u8 *)UART1_BASE;
s.irq = JZ_IRQ_UART1;
if (early_serial_setup(&s) != 0) {
printk(KERN_ERR "Serial ttyS1 setup failed!\n");
}
#endif
}
开发者ID:Cribstone,项目名称:linino,代码行数:26,代码来源:setup.c
示例3: ixdp2x01_map_io
static void __init ixdp2x01_map_io(void)
{
ixp2000_map_io();
iotable_init(&ixdp2x01_io_desc, 1);
early_serial_setup(&ixdp2x01_serial_ports[0]);
early_serial_setup(&ixdp2x01_serial_ports[1]);
}
开发者ID:kzlin129,项目名称:tt-gpl,代码行数:9,代码来源:ixdp2x01.c
示例4: serial_init
void __init serial_init(void)
{
#ifdef CONFIG_SERIAL_8250
struct uart_port s, u, k;
memset(&s, 0, sizeof(s));
s.type = PORT_16550;
s.iobase = 0xFD201300; //virtual RIU_BASE = 0xFD000000
s.irq = E_IRQ_UART0;
#ifdef CONFIG_MSTAR_ARM_BD_FPGA
s.uartclk = 12000000; //FPGA
#elif defined(CONFIG_MSTAR_ARM_BD_GENERIC)
s.uartclk = 123000000; //real chip
#endif
s.iotype = 0;
s.regshift = 0;
s.fifosize = 16 ; // use the 8 byte depth FIFO well
s.line = 0;
if (early_serial_setup(&s) != 0) {
printk(KERN_ERR "Serial(0) setup failed!\n");
}
memset(&u, 0, sizeof(u));
u.type = PORT_16550;
u.iobase = 0xFD220C00;
u.irq = E_IRQEXPL_UART1;
u.uartclk = 108000000;
u.iotype = 0;
u.regshift = 0;
u.fifosize = 16 ; // use the 8 byte depth FIFO well
u.line = 1;
if (early_serial_setup(&u) != 0) {
printk(KERN_ERR "Serial piu_uart1 setup failed!\n");
}
memset(&k, 0, sizeof(k));
k.type = PORT_16550;
k.iobase = 0xFD220D00;
k.irq = E_IRQEXPH_UART2MCU;
k.uartclk = 123000000;
k.iotype = 0;
k.regshift = 0;
k.fifosize = 16 ; // use the 8 byte depth FIFO well
k.line = 2;
if (early_serial_setup(&k) != 0) {
printk(KERN_ERR "Serial fuart setup failed!\n");
}
#endif
}
开发者ID:Scorpio92,项目名称:mstar6a918,代码行数:53,代码来源:chip_arch.c
示例5: ixdp2x01_map_io
static void __init ixdp2x01_map_io(void)
{
ixp2000_map_io();
iotable_init(&ixdp2x01_io_desc, 1);
early_serial_setup(&ixdp2x01_serial_ports[0]);
early_serial_setup(&ixdp2x01_serial_ports[1]);
#ifdef CONFIG_KGDB_8250
kgdb8250_add_port(0, &ixdp2x01_serial_ports[0]);
kgdb8250_add_port(1, &ixdp2x01_serial_ports[1]);
#endif
}
开发者ID:GodFox,项目名称:magx_kernel_xpixl,代码行数:14,代码来源:ixdp2x01.c
示例6: serial_init
void __init serial_init(void)
{
#ifdef CONFIG_SERIAL_8250
struct uart_port s;
struct uart_port u1;
memset(&s, 0, sizeof(s));
s.type = PORT_16550;
s.iobase = 0xFD201300; //virtual RIU_BASE = 0xFD000000
s.membase = (unsigned char __iomem *) 0xFD201300;
s.mapbase = 0xFD201300;
s.irq = E_IRQ_UART0;
#ifdef CONFIG_MSTAR_EAGLE_BD_FPGA
s.uartclk = 12000000; //FPGA
#else
s.uartclk = 123000000; //real chip
#endif
s.iotype = 0;
s.regshift = 0;
s.fifosize = 16 ; // use the 8 byte depth FIFO well
s.line = 0;
if (early_serial_setup(&s) != 0) {
printk(KERN_ERR "Serial(0) setup failed!\n");
}
//UART1
memset(&u1, 0, sizeof(u1));
u1.type = PORT_16550;
u1.iobase = 0xFD220c00; //virtual RIU_BASE = 0xFD000000
u1.membase = (unsigned char __iomem *) 0xFD220c00;
u1.mapbase = 0xFD220c00;
u1.irq = E_IRQEXPL_UART1;
u1.uartclk = 123000000; //real chip
u1.iotype = 0;
u1.regshift = 0;
u1.fifosize = 16 ; // use the 8 byte depth FIFO well
u1.line = 1;
if (early_serial_setup(&u1) != 0) {
printk(KERN_ERR "Serial(0) uart1 setup failed!\n");
}
#endif
}
开发者ID:nightcap79,项目名称:kogan-tv-gpl,代码行数:49,代码来源:eagle_arch.c
示例7: luan_early_serial_map
static void __init
luan_early_serial_map(void)
{
struct uart_port port;
/* Setup ioremapped serial port access */
memset(&port, 0, sizeof(port));
port.membase = ioremap64(PPC440SP_UART0_ADDR, 8);
port.irq = UART0_INT;
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");
}
#ifdef CONFIG_KGDB_8250
kgdb8250_add_port(0, &port);
#endif
port.membase = ioremap64(PPC440SP_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");
}
#ifdef CONFIG_KGDB_8250
kgdb8250_add_port(1, &port);
#endif
/* Enable UART2 */
SDR_WRITE(DCRN_SDR_PFC1, SDR_READ(DCRN_SDR_PFC1) | 0x01000000);
port.membase = ioremap64(PPC440SP_UART2_ADDR, 8);
port.irq = UART2_INT;
port.uartclk = clocks.uart2;
port.line = 2;
if (early_serial_setup(&port) != 0) {
printk("Early serial init of port 2 failed\n");
}
#ifdef CONFIG_KGDB_8250
kgdb8250_add_port(2, &port);
#endif
}
开发者ID:prime5711,项目名称:blackbox,代码行数:49,代码来源:luan.c
示例8: excite_init_console
static int __init excite_init_console(void)
{
#if defined(CONFIG_SERIAL_8250)
static __initdata char serr[] =
KERN_ERR "Serial port #%u setup failed\n";
struct uart_port up;
/* Take the DUART out of reset */
titan_writel(0x00ff1cff, CPRR);
#if defined(CONFIG_KGDB) || (CONFIG_SERIAL_8250_NR_UARTS > 1)
/* Enable both ports */
titan_writel(MASK_SER0 | MASK_SER1, UACFG);
#else
/* Enable port #0 only */
titan_writel(MASK_SER0, UACFG);
#endif /* defined(CONFIG_KGDB) */
/*
* Set up serial port #0. Do not use autodetection; the result is
* not what we want.
*/
memset(&up, 0, sizeof(up));
up.membase = (char *) titan_addr(REGBASE_SER0);
up.irq = TITAN_IRQ;
up.uartclk = TITAN_UART_CLK;
up.regshift = 0;
up.iotype = UPIO_RM9000;
up.type = PORT_RM9000;
up.flags = UPF_SHARE_IRQ;
up.line = 0;
if (early_serial_setup(&up))
printk(serr, up.line);
#if CONFIG_SERIAL_8250_NR_UARTS > 1
/* And now for port #1. */
up.membase = (char *) titan_addr(REGBASE_SER1);
up.line = 1;
if (early_serial_setup(&up))
printk(serr, up.line);
#endif /* CONFIG_SERIAL_8250_NR_UARTS > 1 */
#else
/* Leave the DUART in reset */
titan_writel(0x00ff3cff, CPRR);
#endif /* defined(CONFIG_SERIAL_8250) */
return 0;
}
开发者ID:ForayJones,项目名称:iods,代码行数:48,代码来源:excite_setup.c
示例9: do_serial_add
static void
do_serial_add(serial_port *port)
{
void *regs;
uint irq;
uint baud_base;
uint reg_shift;
struct serial_struct s;
regs = port->regs;
irq = port->irq;
baud_base = port->baud_base;
reg_shift = port->reg_shift;
memset(&s, 0, sizeof(s));
s.line = ser_line++;
s.iomem_base = regs;
s.irq = irq + 2;
s.baud_base = baud_base / 16;
s.flags = ASYNC_BOOT_AUTOCONF;
s.io_type = SERIAL_IO_MEM;
s.iomem_reg_shift = reg_shift;
if (early_serial_setup(&s) != 0) {
printk(KERN_ERR "Serial setup failed!\n");
}
}
开发者ID:anchowee,项目名称:linino,代码行数:28,代码来源:setup.c
示例10: bsp_serial_init
void __init bsp_serial_init(void)
{
struct uart_port s;
/* clear memory */
memset(&s, 0, sizeof(s));
/*
* UART0
*/
s.line = 0;
s.type = PORT_16550A;
s.irq = BSP_UART0_IRQ;
s.iotype = UPIO_MEM;
s.regshift = 2;
#if 1
s.uartclk = BSP_SYS_CLK_RATE;
s.fifosize = 16;
s.flags = UPF_SKIP_TEST | UPF_LOW_LATENCY;
s.mapbase = BSP_UART0_MAP_BASE;
//s.membase = ioremap_nocache(s.mapbase, BSP_UART0_MAPSIZE);
s.membase = ioremap_nocache(s.mapbase, 0x20);
#else
s.uartclk = BSP_SYS_CLK_RATE - BSP_BAUDRATE * 24; //???
s.fifosize = 1; //???
s.flags = UPF_SKIP_TEST | UPF_LOW_LATENCY | UPF_SPD_CUST;
s.membase = (unsigned char *)BSP_UART0_BASE;
s.custom_divisor = BSP_SYS_CLK_RATE / (BSP_BAUDRATE * 16) - 1;
#endif
if (early_serial_setup(&s) != 0) {
panic("RTL8196B: bsp_serial_init failed!");
}
}
开发者ID:appleorange1,项目名称:asus-rt-n12-lx,代码行数:34,代码来源:serial.c
示例11: cns3420_early_serial_setup
/*
* UART
*/
static void __init cns3420_early_serial_setup(void)
{
#ifdef CONFIG_SERIAL_8250_CONSOLE
static struct uart_port cns3420_serial_port = {
.membase = (void __iomem *)CNS3XXX_UART0_BASE_VIRT,
.mapbase = CNS3XXX_UART0_BASE,
.irq = IRQ_CNS3XXX_UART0,
.iotype = UPIO_MEM,
.flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE,
.regshift = 2,
.uartclk = 24000000,
.line = 0,
.type = PORT_16550A,
.fifosize = 16,
};
early_serial_setup(&cns3420_serial_port);
#endif
}
/*
* Initialization
*/
static struct platform_device *cns3420_pdevs[] __initdata = {
&cns3420_nor_pdev,
};
static void __init cns3420_init(void)
{
platform_add_devices(cns3420_pdevs, ARRAY_SIZE(cns3420_pdevs));
pm_power_off = cns3xxx_power_off;
}
开发者ID:0-t,项目名称:samsung-kernel-msm7x30,代码行数:36,代码来源:cns3420vb.c
示例12: cns3420_early_serial_setup
/*
* UART
*/
static void __init cns3420_early_serial_setup(void)
{
#ifdef CONFIG_SERIAL_8250_CONSOLE
static struct uart_port cns3420_serial_port = {
.membase = (void __iomem *)CNS3XXX_UART0_BASE_VIRT,
.mapbase = CNS3XXX_UART0_BASE,
.irq = IRQ_CNS3XXX_UART0,
.iotype = UPIO_MEM,
.flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE,
.regshift = 2,
.uartclk = 24000000,
.line = 0,
.type = PORT_16550A,
.fifosize = 16,
};
early_serial_setup(&cns3420_serial_port);
#endif
}
/*
* USB
*/
static struct resource cns3xxx_usb_ehci_resources[] = {
[0] = {
.start = CNS3XXX_USB_BASE,
.end = CNS3XXX_USB_BASE + SZ_16M - 1,
.flags = IORESOURCE_MEM,
},
开发者ID:BorisTw,项目名称:BBB-kernel,代码行数:32,代码来源:cns3420vb.c
示例13: ixp2000_map_io
void __init ixp2000_map_io(void)
{
extern unsigned int processor_id;
/*
* On IXP2400 CPUs we need to use MT_IXP2000_DEVICE for
* tweaking the PMDs so XCB=101. On IXP2800s we use the normal
* PMD flags.
*/
if ((processor_id & 0xfffffff0) == 0x69054190) {
int i;
printk(KERN_INFO "Enabling IXP2400 erratum #66 workaround\n");
for(i=0;i<ARRAY_SIZE(ixp2000_io_desc);i++)
ixp2000_io_desc[i].type = MT_IXP2000_DEVICE;
}
iotable_init(ixp2000_io_desc, ARRAY_SIZE(ixp2000_io_desc));
early_serial_setup(&ixp2000_serial_port);
#ifdef CONFIG_KGDB_8250
kgdb8250_add_port(0, &ixp2000_serial_port);
#endif
/* Set slowport to 8-bit mode. */
ixp2000_reg_write(IXP2000_SLOWPORT_FRM, 1);
}
开发者ID:foxsat-hdr,项目名称:linux-kernel,代码行数:28,代码来源:core.c
示例14: str9100_map_io
void __init str9100_map_io(void)
{
iotable_init(str9100_std_desc, ARRAY_SIZE(str9100_std_desc));
str9100_register_map_desc(str9100_std_desc, ARRAY_SIZE(str9100_std_desc));
#ifdef EARLY_REGISTER_CONSOLE
early_serial_setup(&str9100_serial_ports[0]);
#endif
}
开发者ID:cnm,项目名称:ts7500_kernel,代码行数:8,代码来源:str9100_setup.c
示例15: yosemite_early_serial_map
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
}
开发者ID:prime5711,项目名称:blackbox,代码行数:46,代码来源:yosemite.c
示例16: ar7_register_uarts
/*****************************************************************************
* Init
****************************************************************************/
static int __init ar7_register_uarts(void)
{
#ifdef CONFIG_SERIAL_8250
static struct uart_port uart_port __initdata;
struct clk *bus_clk;
int res;
memset(&uart_port, 0, sizeof(struct uart_port));
bus_clk = clk_get(NULL, "bus");
if (IS_ERR(bus_clk))
panic("unable to get bus clk");
uart_port.type = PORT_AR7;
uart_port.uartclk = clk_get_rate(bus_clk) / 2;
uart_port.iotype = UPIO_MEM32;
uart_port.regshift = 2;
uart_port.line = 0;
uart_port.irq = AR7_IRQ_UART0;
uart_port.mapbase = AR7_REGS_UART0;
uart_port.membase = ioremap(uart_port.mapbase, 256);
res = early_serial_setup(&uart_port);
if (res)
return res;
/* Only TNETD73xx have a second serial port */
if (ar7_has_second_uart()) {
uart_port.line = 1;
uart_port.irq = AR7_IRQ_UART1;
uart_port.mapbase = UR8_REGS_UART1;
uart_port.membase = ioremap(uart_port.mapbase, 256);
res = early_serial_setup(&uart_port);
if (res)
return res;
}
#endif
return 0;
}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:45,代码来源:platform.c
示例17: jz_serial_setup
static void __init jz_serial_setup(void)
{
#ifdef CONFIG_SERIAL_8250
struct uart_port s;
memset(&s, 0, sizeof(s));
s.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST;
s.iotype = UPIO_MEM;
s.regshift = 2;
s.uartclk = jz_clocks.uartclk;
s.line = 0;
s.membase = (u8 *)UART0_BASE;
s.irq = IRQ_UART0;
if (early_serial_setup(&s) != 0) {
printk(KERN_ERR "Serial ttyS0 setup failed!\n");
}
s.line = 1;
s.membase = (u8 *)UART1_BASE;
s.irq = IRQ_UART1;
if (early_serial_setup(&s) != 0) {
printk(KERN_ERR "Serial ttyS1 setup failed!\n");
}
s.line = 2;
s.membase = (u8 *)UART2_BASE;
s.irq = IRQ_UART2;
if (early_serial_setup(&s) != 0) {
printk(KERN_ERR "Serial ttyS2 setup failed!\n");
}
s.line = 3;
s.membase = (u8 *)UART3_BASE;
s.irq = IRQ_UART3;
if (early_serial_setup(&s) != 0) {
printk(KERN_ERR "Serial ttyS3 setup failed!\n");
}
#endif
}
开发者ID:YJBeetle,项目名称:virtualnoah,代码行数:41,代码来源:setup.c
示例18: ocotea_early_serial_map
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
}
开发者ID:274914765,项目名称:C,代码行数:41,代码来源:ocotea.c
示例19: ocotea_early_serial_map
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");
}
}
开发者ID:iPodLinux,项目名称:linux-2.4.24-ipod,代码行数:40,代码来源:ocotea.c
示例20: plat_mem_setup
void __init plat_mem_setup(void)
{
int i, err;
char *s;
struct ssb_mipscore *mcore;
err = ssb_bus_ssbbus_register(&ssb, SSB_ENUM_BASE, bcm47xx_fill_sprom);
if (err) {
const char *msg = "Failed to initialize SSB bus (err %d)\n";
cfe_printk(msg, err); /* Make sure the message gets out of the box. */
panic(msg, err);
}
mcore = &ssb.mipscore;
/* FIXME: the nvram init depends on the ssb being fully initializes,
* can't use the fill_sprom callback yet! */
bcm47xx_fill_sprom_nvram(&ssb.sprom);
s = nvram_get("kernel_args");
if (s && !strncmp(s, "console=ttyS1", 13)) {
struct ssb_serial_port port;
cfe_printk("Swapping serial ports!\n");
/* swap serial ports */
memcpy(&port, &mcore->serial_ports[0], sizeof(port));
memcpy(&mcore->serial_ports[0], &mcore->serial_ports[1], sizeof(port));
memcpy(&mcore->serial_ports[1], &port, sizeof(port));
}
for (i = 0; i < mcore->nr_serial_ports; i++) {
struct ssb_serial_port *port = &(mcore->serial_ports[i]);
struct uart_port s;
memset(&s, 0, sizeof(s));
s.line = i;
s.membase = port->regs;
s.irq = port->irq + 2;//FIXME?
s.uartclk = port->baud_base;
s.flags = UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ;
s.iotype = SERIAL_IO_MEM;
s.regshift = port->reg_shift;
early_serial_setup(&s);
}
cfe_printk("Serial init done.\n");
_machine_restart = bcm47xx_machine_restart;
_machine_halt = bcm47xx_machine_halt;
pm_power_off = bcm47xx_machine_halt;
board_time_init = bcm47xx_time_init;//FIXME move into ssb
}
开发者ID:anchowee,项目名称:linino,代码行数:52,代码来源:setup.c
注:本文中的early_serial_setup函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论