static int serial_post_probe(struct udevice *dev) { struct dm_serial_ops *ops = serial_get_ops(dev); #ifdef CONFIG_DM_STDIO struct serial_dev_priv *upriv = dev->uclass_priv; struct stdio_dev sdev; #endif int ret; /* Set the baud rate */ if (ops->setbrg) { ret = ops->setbrg(dev, gd->baudrate); if (ret) return ret; } #ifdef CONFIG_DM_STDIO if (!(gd->flags & GD_FLG_RELOC)) return 0; memset(&sdev, '\0', sizeof(sdev)); strncpy(sdev.name, dev->name, sizeof(sdev.name)); sdev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT; sdev.priv = dev; sdev.putc = serial_stub_putc; sdev.puts = serial_stub_puts; sdev.getc = serial_stub_getc; sdev.tstc = serial_stub_tstc; stdio_register_dev(&sdev, &upriv->sdev); #endif return 0; }
static int serial_post_probe(struct udevice *dev) { struct dm_serial_ops *ops = serial_get_ops(dev); #ifdef CONFIG_DM_STDIO struct serial_dev_priv *upriv = dev_get_uclass_priv(dev); struct stdio_dev sdev; #endif int ret; #if defined(CONFIG_NEEDS_MANUAL_RELOC) if (ops->setbrg) ops->setbrg += gd->reloc_off; if (ops->getc) ops->getc += gd->reloc_off; if (ops->putc) ops->putc += gd->reloc_off; if (ops->pending) ops->pending += gd->reloc_off; if (ops->clear) ops->clear += gd->reloc_off; if (ops->getconfig) ops->getconfig += gd->reloc_off; if (ops->setconfig) ops->setconfig += gd->reloc_off; #if CONFIG_POST & CONFIG_SYS_POST_UART if (ops->loop) ops->loop += gd->reloc_off; #endif if (ops->getinfo) ops->getinfo += gd->reloc_off; #endif /* Set the baud rate */ if (ops->setbrg) { ret = ops->setbrg(dev, gd->baudrate); if (ret) return ret; } #ifdef CONFIG_DM_STDIO if (!(gd->flags & GD_FLG_RELOC)) return 0; memset(&sdev, '\0', sizeof(sdev)); strncpy(sdev.name, dev->name, sizeof(sdev.name)); sdev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT | DEV_FLAGS_DM; sdev.priv = dev; sdev.putc = serial_stub_putc; sdev.puts = serial_stub_puts; sdev.getc = serial_stub_getc; sdev.tstc = serial_stub_tstc; #if CONFIG_IS_ENABLED(SERIAL_RX_BUFFER) /* Allocate the RX buffer */ upriv->buf = malloc(CONFIG_SERIAL_RX_BUFFER_SIZE); #endif stdio_register_dev(&sdev, &upriv->sdev); #endif return 0; }