dm: Allow stdio registration to be dropped
Provide a CONFIG_DM_STDIO option to enable registering a serial device with the stdio library. This is seldom useful in SPL, so disable it by default when building for SPL. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Tom Rini <trini@ti.com>
This commit is contained in:
parent
3ac435d33a
commit
236f2bd302
@ -163,10 +163,12 @@ void serial_stdio_init(void)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_DM_STDIO
|
||||||
static void serial_stub_putc(struct stdio_dev *sdev, const char ch)
|
static void serial_stub_putc(struct stdio_dev *sdev, const char ch)
|
||||||
{
|
{
|
||||||
_serial_putc(sdev->priv, ch);
|
_serial_putc(sdev->priv, ch);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void serial_stub_puts(struct stdio_dev *sdev, const char *str)
|
void serial_stub_puts(struct stdio_dev *sdev, const char *str)
|
||||||
{
|
{
|
||||||
@ -246,9 +248,11 @@ U_BOOT_ENV_CALLBACK(baudrate, on_baudrate);
|
|||||||
|
|
||||||
static int serial_post_probe(struct udevice *dev)
|
static int serial_post_probe(struct udevice *dev)
|
||||||
{
|
{
|
||||||
struct stdio_dev sdev;
|
|
||||||
struct dm_serial_ops *ops = serial_get_ops(dev);
|
struct dm_serial_ops *ops = serial_get_ops(dev);
|
||||||
|
#ifdef CONFIG_DM_STDIO
|
||||||
struct serial_dev_priv *upriv = dev->uclass_priv;
|
struct serial_dev_priv *upriv = dev->uclass_priv;
|
||||||
|
struct stdio_dev sdev;
|
||||||
|
#endif
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* Set the baud rate */
|
/* Set the baud rate */
|
||||||
@ -258,9 +262,9 @@ static int serial_post_probe(struct udevice *dev)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_DM_STDIO
|
||||||
if (!(gd->flags & GD_FLG_RELOC))
|
if (!(gd->flags & GD_FLG_RELOC))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
memset(&sdev, '\0', sizeof(sdev));
|
memset(&sdev, '\0', sizeof(sdev));
|
||||||
|
|
||||||
strncpy(sdev.name, dev->name, sizeof(sdev.name));
|
strncpy(sdev.name, dev->name, sizeof(sdev.name));
|
||||||
@ -271,7 +275,7 @@ static int serial_post_probe(struct udevice *dev)
|
|||||||
sdev.getc = serial_stub_getc;
|
sdev.getc = serial_stub_getc;
|
||||||
sdev.tstc = serial_stub_tstc;
|
sdev.tstc = serial_stub_tstc;
|
||||||
stdio_register_dev(&sdev, &upriv->sdev);
|
stdio_register_dev(&sdev, &upriv->sdev);
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#ifndef CONFIG_SPL_BUILD
|
#ifndef CONFIG_SPL_BUILD
|
||||||
#define CONFIG_DM_DEVICE_REMOVE
|
#define CONFIG_DM_DEVICE_REMOVE
|
||||||
|
#define CONFIG_DM_STDIO
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user