serial: embed the rx buffer in struct serial_dev_priv

The initialization of upriv->buf doesn't check for a NULL return. But
there's actually no point in doing a separate, unconditional malloc()
in post_probe; we can just make serial_dev_priv contain the rx buffer
itself, and let the (larger) allocation be handled by the driver core
when it allocates the ->per_device_auto. The total run-time memory
used is mostly the same, we reduce the code size a little, and as a
bonus, struct serial_dev_priv does not contain the unused members when
!SERIAL_RX_BUFFER.

Signed-off-by: Rasmus Villemoes <ravi@prevas.dk>
Reviewed-by: Simon Glass <sjg@chromium.org>
diff --git a/include/serial.h b/include/serial.h
index 1456323..eabc49f 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -298,9 +298,11 @@
 struct serial_dev_priv {
 	struct stdio_dev *sdev;
 
-	char *buf;
+#if CONFIG_IS_ENABLED(SERIAL_RX_BUFFER)
+	char buf[CONFIG_SERIAL_RX_BUFFER_SIZE];
 	uint rd_ptr;
 	uint wr_ptr;
+#endif
 };
 
 /* Access the serial operations for a device */