[U-Boot] [PATCH] cmd: add ADC cli commands
Neil Armstrong
narmstrong at baylibre.com
Fri Apr 27 10:07:37 UTC 2018
Hi,
On 26/04/2018 16:40, Simon Glass wrote:
> Hi Neil,
>
> On 23 April 2018 at 08:18, Neil Armstrong <narmstrong at baylibre.com> wrote:
>> Add an 'adc' cli command to get adc devices informations and read single
>> shots datas.
>>
>> Signed-off-by: Neil Armstrong <narmstrong at baylibre.com>
>> ---
>> cmd/Kconfig | 7 ++++
>> cmd/Makefile | 1 +
>> cmd/adc.c | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> 3 files changed, 134 insertions(+)
>> create mode 100644 cmd/adc.c
>
> Reviewed-by: Simon Glass <sjg at chromium.org>
>
> Nits below
>
>>
>> diff --git a/cmd/Kconfig b/cmd/Kconfig
>> index bc1d2f3..631daee 100644
>> --- a/cmd/Kconfig
>> +++ b/cmd/Kconfig
>> @@ -601,6 +601,13 @@ config CMD_ARMFLASH
>> help
>> ARM Ltd reference designs flash partition access
>>
>> +config CMD_ADC
>> + bool "adc - Access ADC info and data"
>> + select ADC
>> + select DM_REGULATOR
>> + help
>> + Shows ADC device info and get single shot data;
>
> Please spell out ADC in the help. Also, what is single-shot data?
I'll add more text.
>
>> +
>> config CMD_CLK
>> bool "clk - Show clock frequencies"
>> help
>> diff --git a/cmd/Makefile b/cmd/Makefile
>> index c4269ac..4c66353 100644
>> --- a/cmd/Makefile
>> +++ b/cmd/Makefile
>> @@ -14,6 +14,7 @@ obj-y += version.o
>>
>> # command
>> obj-$(CONFIG_CMD_AES) += aes.o
>> +obj-$(CONFIG_CMD_ADC) += adc.o
>> obj-$(CONFIG_CMD_ARMFLASH) += armflash.o
>> obj-y += blk_common.o
>> obj-$(CONFIG_SOURCE) += source.o
>> diff --git a/cmd/adc.c b/cmd/adc.c
>> new file mode 100644
>> index 0000000..f82305c
>> --- /dev/null
>> +++ b/cmd/adc.c
>> @@ -0,0 +1,126 @@
>> +/*
>> + * Copyright (C) 2018 BayLibre, SAS
>> + * Author: Neil Armstrong <narmstrong at baylibre.com>
>> + *
>> + * SPDX-License-Identifier: GPL-2.0+
>> + */
>> +#include <common.h>
>> +#include <command.h>
>> +#include <dm.h>
>> +#include <adc.h>
>> +
>> +static int do_adc_list(cmd_tbl_t *cmdtp, int flag, int argc,
>> + char *const argv[])
>> +{
>> + struct udevice *dev;
>> + int ret;
>> +
>> + ret = uclass_first_device_err(UCLASS_ADC, &dev);
>
> This will probe the device. Is that what you want?
Is there another way ?
I mean you need to probe to know if the device is actually usable, no ?
>
>> + if (ret || !dev) {
>
> You don't need to check dev, since ret will return -ENODEV if there is
> no device. See the docs for uclass_first_device_err().
Ok
>
>> + printf("No available ADC device\n");
>
> return?
Oops
>
>> + }
>> +
>> + do {
>> + printf("- %s\n", dev->name);
>> +
>> + ret = uclass_next_device(&dev);
>> + if (ret)
>> + return CMD_RET_FAILURE;
>> + } while (dev);
>> +
>> + return CMD_RET_SUCCESS;
>> +}
>> +
>> +static int do_adc_info(cmd_tbl_t *cmdtp, int flag, int argc,
>> + char *const argv[])
>> +{
>> + struct udevice *dev;
>> + unsigned int data_mask;
>> + int ret, vss, vdd;
>> +
>> + if (argc < 2)
>> + return CMD_RET_USAGE;
>> +
>> + ret = uclass_get_device_by_name(UCLASS_ADC, argv[1], &dev);
>> + if (ret) {
>> + printf("Unknown ADC device %s\n", argv[1]);
>> + return CMD_RET_FAILURE;
>> + }
>> +
>> + printf("ADC Device '%s' :\n", argv[1]);
>> +
>> + ret = adc_data_mask(dev, &data_mask);
>> + if (ret)
>> + printf("data mask: Error %d\n", ret);
>> + else
>> + printf("data mask: %x\n", data_mask);
>
> You could perhaps have a function to print the error or the value. I'm
> not sure if it is worth it.
I can drop printing the error, only printing what's available.
>
>> +
>> + ret = adc_vdd_value(dev, &vdd);
>> + if (ret)
>> + printf("vdd: Error %d\n", ret);
>> + else
>> + printf("vdd: %duV\n", vdd);
>> +
>> + ret = adc_vss_value(dev, &vss);
>> + if (ret)
>> + printf("vss: Error %d\n", ret);
>> + else
>> + printf("vss: %duV\n", vss);
>> +
>> + return CMD_RET_SUCCESS;
>> +}
>> +
>
> [..]
>
> Regards,
> Simon
>
Thanks,
Neil
More information about the U-Boot
mailing list