From a61cbad78e67963944e7d719f0aee27b8aef6c02 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Fri, 28 Dec 2018 14:23:10 -0700 Subject: [PATCH] dm: serial: Adjust serial_getinfo() to use proper API All driver-model functions should have a device as the first parameter. Update this function accordingly. Signed-off-by: Simon Glass Reviewed-by: Andy Shevchenko --- arch/x86/lib/acpi_table.c | 11 ++++++----- drivers/serial/serial-uclass.c | 9 +++------ include/serial.h | 2 +- test/dm/serial.c | 4 ++-- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/arch/x86/lib/acpi_table.c b/arch/x86/lib/acpi_table.c index bfcf2adbf1..04058a60d7 100644 --- a/arch/x86/lib/acpi_table.c +++ b/arch/x86/lib/acpi_table.c @@ -354,7 +354,10 @@ static void acpi_create_spcr(struct acpi_spcr *spcr) header->length = sizeof(struct acpi_spcr); header->revision = 2; - ret = serial_getinfo(&serial_info); + /* Read the device once, here. It is reused below */ + ret = uclass_first_device_err(UCLASS_SERIAL, &dev); + if (!ret) + ret = serial_getinfo(dev, &serial_info); if (ret) serial_info.type = SERIAL_CHIP_UNKNOWN; @@ -432,11 +435,9 @@ static void acpi_create_spcr(struct acpi_spcr *spcr) break; } - ret = uclass_first_device_err(UCLASS_SERIAL, &dev); - if (!ret) + serial_config = SERIAL_DEFAULT_CONFIG; + if (dev) ret = serial_getconfig(dev, &serial_config); - if (ret) - serial_config = SERIAL_DEFAULT_CONFIG; spcr->parity = SERIAL_GET_PARITY(serial_config); spcr->stop_bits = SERIAL_GET_STOP(serial_config); diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c index 669c82f379..d4488a2cc2 100644 --- a/drivers/serial/serial-uclass.c +++ b/drivers/serial/serial-uclass.c @@ -316,21 +316,18 @@ int serial_setconfig(struct udevice *dev, uint config) return 0; } -int serial_getinfo(struct serial_device_info *info) +int serial_getinfo(struct udevice *dev, struct serial_device_info *info) { struct dm_serial_ops *ops; - if (!gd->cur_serial_dev) - return -ENODEV; - if (!info) return -EINVAL; info->baudrate = gd->baudrate; - ops = serial_get_ops(gd->cur_serial_dev); + ops = serial_get_ops(dev); if (ops->getinfo) - return ops->getinfo(gd->cur_serial_dev, info); + return ops->getinfo(dev, info); return -EINVAL; } diff --git a/include/serial.h b/include/serial.h index 8a05a09089..8a790ccaaf 100644 --- a/include/serial.h +++ b/include/serial.h @@ -283,7 +283,7 @@ struct serial_dev_priv { int serial_getconfig(struct udevice *dev, uint *config); int serial_setconfig(struct udevice *dev, uint config); -int serial_getinfo(struct serial_device_info *info); +int serial_getinfo(struct udevice *dev, struct serial_device_info *info); void atmel_serial_initialize(void); void mcf_serial_initialize(void); diff --git a/test/dm/serial.c b/test/dm/serial.c index f82b4a19e8..3d741a8c36 100644 --- a/test/dm/serial.c +++ b/test/dm/serial.c @@ -26,14 +26,14 @@ static int dm_test_serial(struct unit_test_state *uts) ut_assertok(serial_setconfig(dev_serial, SERIAL_DEFAULT_CONFIG)); ut_assertok(serial_getconfig(dev_serial, &value_serial)); ut_assert(value_serial == SERIAL_DEFAULT_CONFIG); - ut_assertok(serial_getinfo(&info_serial)); + ut_assertok(serial_getinfo(dev_serial, &info_serial)); ut_assert(info_serial.type == SERIAL_CHIP_UNKNOWN); ut_assert(info_serial.addr == SERIAL_DEFAULT_ADDRESS); /* * test with a parameter which is NULL pointer */ ut_asserteq(-EINVAL, serial_getconfig(dev_serial, NULL)); - ut_asserteq(-EINVAL, serial_getinfo(NULL)); + ut_asserteq(-EINVAL, serial_getinfo(dev_serial, NULL)); /* * test with a serial config which is not supported by * sandbox_serial driver: test with wrong parity -- 2.25.1