[RFC PATCH] iio: adc: Add Xilinx AMS driver

Geert Uytterhoeven geert at linux-m68k.org
Tue Mar 20 02:44:21 PDT 2018


On Sat, Mar 17, 2018 at 7:19 PM, Jonathan Cameron <jic23 at kernel.org> wrote:
> On Sat, 17 Mar 2018 01:49:25 +0530
> Himanshu Jha <himanshujha199640 at gmail.com> wrote:
>
>> On Thu, Mar 15, 2018 at 08:12:27PM +0530, Manish Narani wrote:
>> > The AMS includes an ADC as well as on-chip sensors that can be used to
>> > sample external voltages and monitor on-die operating conditions, such as
>> > temperature and supply voltage levels. The AMS has two SYSMON blocks.
>> > PL-SYSMON block is capable of monitoring off chip voltage and temperature.
>> > PL-SYSMON block has DRP, JTAG and I2C interface to enable monitoring from
>> > external master. Out of these interface currently only DRP is supported.
>> > Other block PS-SYSMON is memory mapped to PS.
>> >
>> > The AMS can use internal channels to monitor voltage and temperature
>> > as well as one primary and up to 16 auxiliary channels for measuring
>> > external voltages.
>> >
>> > The voltage and temperature monitoring channels also have event
>> > capability which allows to generate an interrupt when their value
>> > falls below or raises above a set threshold.
>> >
>> > Signed-off-by: Manish Narani <mnarani at xilinx.com>
>> > ---
>>
>> [..]
>>
>> > +static const struct of_device_id ams_of_match_table[] = {
>> > +       { .compatible = "xlnx,zynqmp-ams", &ams_pl_apb },
>> > +       { }
>> > +};
>> > +MODULE_DEVICE_TABLE(of, ams_of_match_table);
>>
>> [..]
>>
>> > +static int ams_probe(struct platform_device *pdev)
>> > +{
>> > +       struct iio_dev *indio_dev;
>> > +       struct ams *ams;
>> > +       struct resource *res;
>> > +       const struct of_device_id *id;
>> > +       int ret;
>> > +
>> > +       if (!pdev->dev.of_node)
>> > +               return -ENODEV;
>> > +
>> > +       id = of_match_node(ams_of_match_table, pdev->dev.of_node);
>> > +       if (!id)
>> > +               return -ENODEV;
>>
>> Is the above check required ?
>>
>> Isn't the probe function called if and only if a match is found in
>> ams_of_match_table[] since it is a pure OF driver ?
>>
>> And therefore the above condition would never happen!
> Agreed in principle.  However, from a reviewer point of view, it is sometimes
> easier to have an error check that can never happen than have to check whether
> or not it can.  Hence I'd keep this in place (well actually not because there
> are better ways of doing this block of code, but that is unconnected to your
> comment Himanshu!)

You can avoid the intermediate (and avoid reviewers wondering ;-) by just
writing instead:

    ams->pl_bus = of_device_get_match_data(&pdev->dev);


Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds



More information about the linux-arm-kernel mailing list