All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anand Ashok Dumbre <ANANDASH@xilinx.com>
To: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
Cc: Jonathan Cameron <jic23@kernel.org>,
	"lars@metafoo.de" <lars@metafoo.de>,
	"linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>,
	Michal Simek <michals@xilinx.com>,
	"pmeerw@pmeerw.net" <pmeerw@pmeerw.net>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Manish Narani <MNARANI@xilinx.com>, git <git@xilinx.com>
Subject: RE: [PATCH v6 2/4] iio: adc: Add Xilinx AMS driver
Date: Mon, 19 Jul 2021 07:49:35 +0000	[thread overview]
Message-ID: <BY5PR02MB6916EE8DDB6EBDFDAF50DD41A9E19@BY5PR02MB6916.namprd02.prod.outlook.com> (raw)
In-Reply-To: <20210715135221.00001d4f@Huawei.com>



> -----Original Message-----
> From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
> Sent: Thursday 15 July 2021 1:52 PM
> To: Anand Ashok Dumbre <ANANDASH@xilinx.com>
> Cc: Jonathan Cameron <jic23@kernel.org>; lars@metafoo.de; linux-
> iio@vger.kernel.org; git-dev <git-dev@xilinx.com>; Michal Simek
> <michals@xilinx.com>; pmeerw@pmeerw.net; devicetree@vger.kernel.org;
> linux-kernel@vger.kernel.org; Manish Narani <MNARANI@xilinx.com>
> Subject: Re: [PATCH v6 2/4] iio: adc: Add Xilinx AMS driver
> 
> ...
> 
> > >
> > > > +	if (IS_ERR(ams->base))
> > > > +		return PTR_ERR(ams->base);
> > > > +
> > > > +	ams->clk = devm_clk_get(&pdev->dev, NULL);
> > > > +	if (IS_ERR(ams->clk))
> > > > +		return PTR_ERR(ams->clk);
> > > > +	clk_prepare_enable(ams->clk);
> > > > +	devm_add_action_or_reset(&pdev->dev, (void
> > > *)clk_disable_unprepare,
> > > > +				 ams->clk);
> > > > +
> > > > +	INIT_DELAYED_WORK(&ams->ams_unmask_work,
> > > ams_unmask_worker);
> > > > +	devm_add_action_or_reset(&pdev->dev, (void
> > > *)cancel_delayed_work,
> > >
> > > I'm not keen on casting away the function pointer type.  Normally
> > > we'd just wrap it in a local function, to make it clear it was
> > > deliberate and avoid potential nasty problems if the signature of the
> function ever changes.
> > >
> > > It's 3 lines of boilerplate, but will give me warm fuzzy feelings!
> > > Same for the other case above.  The fact this isn't done in exising
> > > kernel code make this particularly risky.
> >
> > Makes sense. I will revert the code back to its original and handle
> > the cases using goto and inside remove()
> Ah.  Not what I meant.  I was suggesting you add a little function locally that
> has the right type and in turn calls cancel_delayed_work().
> 
> As that directly exposes the actual function calls, any signature change in
> future will cause compile breakage (or be picked up any automated tools
> doing that refactor).

Now I understand.
Will fix it in the next series.

> 
> >
> > >
> > > > +				 &ams->ams_unmask_work);
> > > > +
> > > > +	ret = ams_init_device(ams);
> > > > +	if (ret) {
> > > > +		dev_err(&pdev->dev, "failed to initialize AMS\n");
> > > > +		return ret;
> > > > +	}
> > > > +
> > > > +	ret = ams_parse_dt(indio_dev, pdev);
> > > > +	if (ret) {
> > > > +		dev_err(&pdev->dev, "failure in parsing DT\n");
> > > > +		return ret;
> > > > +	}
> > > > +
> > > > +	ams_enable_channel_sequence(indio_dev);
> > > > +
> > > > +	ams->irq = platform_get_irq(pdev, 0);
> > >
> > > platform_get_irq () can return errors, in particular -EPROBE_DEFER
> > > so I'd check that and return before you call devm_request_irq() I'm
> > > not sure
> > > devm_request_irq() will not eat that error code.
> > >
> >
> > Will fix this in next series.
> >
> > >
> > > > +	ret = devm_request_irq(&pdev->dev, ams->irq, &ams_irq, 0, "ams-
> > > irq",
> > > > +			       indio_dev);
> > > > +	if (ret < 0) {
> > > > +		dev_err(&pdev->dev, "failed to register interrupt\n");
> > > > +		return ret;
> > > > +	}
> > > > +
> > > > +	platform_set_drvdata(pdev, indio_dev);
> > > > +
> > > > +	return iio_device_register(indio_dev); }
> > > > +
> > > > +static int ams_remove(struct platform_device *pdev) {
> > > > +	struct iio_dev *indio_dev = platform_get_drvdata(pdev);
> > > > +
> > > > +	iio_device_unregister(indio_dev);
> > >
> > > If this is all you have in remove, then you can use
> > > devm_iio_device_register() in probe() and not need an remove() callback
> at all.
> >
> > I think remove will have more functions since I am getting rid of
> > devm_add_action_or_reset()
> 
> See above.
> 
> J
> 
> >
> > >
> > > > +
> > > > +	return 0;
> > > > +}
> > > > +
> > >
> > > ...

Thanks,
Anand


  reply	other threads:[~2021-07-19  7:49 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-24 18:29 [PATCH v6 0/4] Add Xilinx AMS Driver Anand Ashok Dumbre
2021-06-24 18:29 ` [PATCH v6 1/4] arm64: zynqmp: DT: Add Xilinx AMS node Anand Ashok Dumbre
2021-06-24 18:29 ` [PATCH v6 2/4] iio: adc: Add Xilinx AMS driver Anand Ashok Dumbre
2021-06-25 10:49   ` kernel test robot
2021-06-25 10:49     ` kernel test robot
2021-07-01  8:00   ` kernel test robot
2021-07-01  8:00     ` kernel test robot
2021-07-04 18:31   ` Jonathan Cameron
2021-07-15  7:48     ` Anand Ashok Dumbre
2021-07-15 12:52       ` Jonathan Cameron
2021-07-19  7:49         ` Anand Ashok Dumbre [this message]
2021-06-24 18:29 ` [PATCH v6 3/4] dt-bindings: iio: adc: Add Xilinx AMS binding documentation Anand Ashok Dumbre
2021-07-04 18:08   ` Jonathan Cameron
2021-07-13 22:31   ` Rob Herring
2021-07-15  6:58     ` Anand Ashok Dumbre
2021-06-24 18:29 ` [PATCH v6 4/4] MAINTAINERS: Add maintainer for xilinx-ams Anand Ashok Dumbre
2021-06-28 21:45 [PATCH v6 2/4] iio: adc: Add Xilinx AMS driver kernel test robot
2021-06-29  8:32 ` Dan Carpenter
2021-06-29  8:32 ` Dan Carpenter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BY5PR02MB6916EE8DDB6EBDFDAF50DD41A9E19@BY5PR02MB6916.namprd02.prod.outlook.com \
    --to=anandash@xilinx.com \
    --cc=Jonathan.Cameron@Huawei.com \
    --cc=MNARANI@xilinx.com \
    --cc=devicetree@vger.kernel.org \
    --cc=git@xilinx.com \
    --cc=jic23@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michals@xilinx.com \
    --cc=pmeerw@pmeerw.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.