[U-Boot,2/5] dm: serial: Adjust serial_getconfig() to use proper API

Message ID 20181205195353.246542-3-sjg@chromium.org
State New
Delegated to: Simon Glass
Headers show
Series
  • dm: serial: Fix up some serial API errors
Related show

Commit Message

Simon Glass Dec. 5, 2018, 7:53 p.m.
All driver-model functions should have a device as the first parameter.
Update this function accordingly.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 arch/x86/lib/acpi_table.c      | 5 ++++-
 drivers/serial/serial-uclass.c | 9 +++------
 include/serial.h               | 2 +-
 test/dm/serial.c               | 4 ++--
 4 files changed, 10 insertions(+), 10 deletions(-)

Patch

diff --git a/arch/x86/lib/acpi_table.c b/arch/x86/lib/acpi_table.c
index 79bc2000bda..bfcf2adbf12 100644
--- a/arch/x86/lib/acpi_table.c
+++ b/arch/x86/lib/acpi_table.c
@@ -342,6 +342,7 @@  static void acpi_create_spcr(struct acpi_spcr *spcr)
 	struct acpi_table_header *header = &(spcr->header);
 	struct serial_device_info serial_info = {0};
 	ulong serial_address, serial_offset;
+	struct udevice *dev;
 	uint serial_config;
 	uint serial_width;
 	int access_size;
@@ -431,7 +432,9 @@  static void acpi_create_spcr(struct acpi_spcr *spcr)
 		break;
 	}
 
-	ret = serial_getconfig(&serial_config);
+	ret = uclass_first_device_err(UCLASS_SERIAL, &dev);
+	if (!ret)
+		ret = serial_getconfig(dev, &serial_config);
 	if (ret)
 		serial_config = SERIAL_DEFAULT_CONFIG;
 
diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c
index ffcd6d15af2..81f1067f422 100644
--- a/drivers/serial/serial-uclass.c
+++ b/drivers/serial/serial-uclass.c
@@ -294,16 +294,13 @@  void serial_setbrg(void)
 		ops->setbrg(gd->cur_serial_dev, gd->baudrate);
 }
 
-int serial_getconfig(uint *config)
+int serial_getconfig(struct udevice *dev, uint *config)
 {
 	struct dm_serial_ops *ops;
 
-	if (!gd->cur_serial_dev)
-		return 0;
-
-	ops = serial_get_ops(gd->cur_serial_dev);
+	ops = serial_get_ops(dev);
 	if (ops->getconfig)
-		return ops->getconfig(gd->cur_serial_dev, config);
+		return ops->getconfig(dev, config);
 
 	return 0;
 }
diff --git a/include/serial.h b/include/serial.h
index fa7e0130bd2..5ba031ab534 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -281,7 +281,7 @@  struct serial_dev_priv {
 /* Access the serial operations for a device */
 #define serial_get_ops(dev)	((struct dm_serial_ops *)(dev)->driver->ops)
 
-int serial_getconfig(uint *config);
+int serial_getconfig(struct udevice *dev, uint *config);
 int serial_setconfig(uint config);
 int serial_getinfo(struct serial_device_info *info);
 
diff --git a/test/dm/serial.c b/test/dm/serial.c
index 19a15d5d952..972755face3 100644
--- a/test/dm/serial.c
+++ b/test/dm/serial.c
@@ -24,7 +24,7 @@  static int dm_test_serial(struct unit_test_state *uts)
 	 * sandbox_serial driver
 	 */
 	ut_assertok(serial_setconfig(SERIAL_DEFAULT_CONFIG));
-	ut_assertok(serial_getconfig(&value_serial));
+	ut_assertok(serial_getconfig(dev_serial, &value_serial));
 	ut_assert(value_serial == SERIAL_DEFAULT_CONFIG);
 	ut_assertok(serial_getinfo(&info_serial));
 	ut_assert(info_serial.type == SERIAL_CHIP_UNKNOWN);
@@ -32,7 +32,7 @@  static int dm_test_serial(struct unit_test_state *uts)
 	/*
 	 * test with a parameter which is NULL pointer
 	 */
-	ut_asserteq(-EINVAL, serial_getconfig(NULL));
+	ut_asserteq(-EINVAL, serial_getconfig(dev_serial, NULL));
 	ut_asserteq(-EINVAL, serial_getinfo(NULL));
 	/*
 	 * test with a serial config which is not supported by