linux-tegra.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bjorn Andersson <bjorn.andersson@linaro.org>
To: Philipp Zabel <p.zabel@pengutronix.de>
Cc: linux-kernel@vger.kernel.org,
	Vivek Gautam <vivek.gautam@codeaurora.org>,
	Jon Hunter <jonathanh@nvidia.com>,
	Felipe Balbi <balbi@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Thierry Reding <treding@nvidia.com>,
	linux-tegra@vger.kernel.org, linux-usb@vger.kernel.org,
	linux-arm-msm@vger.kernel.org, kernel@pengutronix.de
Subject: Re: [PATCH v7 1/4] reset: Add APIs to manage array of resets
Date: Wed, 1 Nov 2017 15:24:18 -0700	[thread overview]
Message-ID: <20171101222418.GC28761@minitux> (raw)
In-Reply-To: <1508502022.7455.6.camel@pengutronix.de>

On Fri 20 Oct 05:20 PDT 2017, Philipp Zabel wrote:

> Hi,
> 
> On Thu, 2017-10-19 at 11:54 -0700, Bjorn Andersson wrote:
> > On Wed 19 Jul 08:59 PDT 2017, Philipp Zabel wrote:
> > 
> > > From: Vivek Gautam <vivek.gautam@codeaurora.org>
> > > 
> > > Many devices may want to request a bunch of resets and control them. So
> > > it's better to manage them as an array. Add APIs to _get() an array of
> > > reset_control, reusing the _assert(), _deassert(), and _reset() APIs for
> > > single reset controls. Since reset controls already may control multiple
> > > reset lines with a single hardware bit, from the user perspective, reset
> > > control arrays are not at all different from single reset controls.
> > > Note that these APIs don't guarantee that the reset lines managed in the
> > > array are handled in any particular order.
> > > 
> > > Cc: Felipe Balbi <balbi@kernel.org>
> > > Cc: Jon Hunter <jonathanh@nvidia.com>
> > > Signed-off-by: Vivek Gautam <vivek.gautam@codeaurora.org>
> > > [p.zabel@pengutronix.de: changed API to hide reset control arrays behind
> > >  struct reset_control]
> > > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> > 
> > This looks more or less identical to how regulators and clocks already
> > deals with resources in bulk; see regulator_bulk_data and clk_bulk_data
> > and their associated functions.
> > 
> > I would really like to see that you follow this model, to make it easier
> > for developers to work with and use the various subsystems.
> 
> These APIs have two undesirable (in this case) properties; the driver
> has to know the number of resets and their identifiers in advance, and
> singular resets and bulk reset arrays can't be used interchangeably.

As a writer of device drivers as well as dts files I greatly appreciate
when this expectations is encoded in the kernel, so that it is clear
when the DT node is missing some resource - rather than having random
reboots because of spelling mistakes or variations between hardware
revisions.

We tend to express these things explicitly in the kernel, as magic
interfaces makes things harder to debug.

> Both are not well suited to this use case, which is "triggering one or
> any number of anonymous resets together".
> 

Triggering one is just a special case of N. 


But this does not change the fact that the reset framework interface
looks and function in a fundamentally different way than the clock and
regulator equivalents, which will be confusing - in particular since
most drivers will use 2 or 3 of these.

Regards,
Bjorn

  reply	other threads:[~2017-11-01 22:24 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-19 15:59 [PATCH v7 0/4] reset: APIs to manage a list of resets Philipp Zabel
     [not found] ` <1500479948-29988-1-git-send-email-p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2017-07-19 15:59   ` [PATCH v7 1/4] reset: Add APIs to manage array " Philipp Zabel
2017-10-19 18:54     ` Bjorn Andersson
2017-10-20 12:20       ` Philipp Zabel
2017-11-01 22:24         ` Bjorn Andersson [this message]
2017-11-02 12:57           ` Philipp Zabel
2017-07-19 15:59   ` [PATCH v7 2/4] usb: dwc3: of-simple: Re-order resource handling in remove Philipp Zabel
2017-10-19  9:36     ` Felipe Balbi
2017-07-19 15:59   ` [PATCH v7 4/4] soc/tegra: pmc: Use the new reset APIs to manage reset controllers Philipp Zabel
2017-10-19 15:17     ` Philipp Zabel
     [not found]       ` <1508426260.7665.24.camel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2017-10-20 15:51         ` Jon Hunter
2017-10-23  9:20           ` Philipp Zabel
2018-03-09  8:09     ` Thierry Reding
2017-07-19 15:59 ` [PATCH v7 3/4] usb: dwc3: of-simple: Add support to get resets for the device Philipp Zabel
2017-10-19  9:38   ` Felipe Balbi
     [not found]     ` <87y3o7h3zu.fsf-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-10-19 10:45       ` Philipp Zabel
2017-10-19 11:30         ` Felipe Balbi
     [not found]         ` <1508409939.7665.7.camel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2017-10-19 11:31           ` Felipe Balbi
     [not found]             ` <87shefgyqc.fsf-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2017-10-19 11:47               ` Philipp Zabel

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=20171101222418.GC28761@minitux \
    --to=bjorn.andersson@linaro.org \
    --cc=balbi@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jonathanh@nvidia.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=treding@nvidia.com \
    --cc=vivek.gautam@codeaurora.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).