All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Herring <robh@kernel.org>
To: Eric Anholt <eric@anholt.net>
Cc: Dave Stevenson <dave.stevenson@raspberrypi.org>,
	Stefan Wahren <stefan.wahren@i2se.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	"linux-media@vger.kernel.org" <linux-media@vger.kernel.org>,
	Sakari Ailus <sakari.ailus@iki.fi>,
	Hans Verkuil <hans.verkuil@cisco.com>,
	"moderated list:BROADCOM BCM2835 ARM ARCHITECTURE"
	<linux-rpi-kernel@lists.infradead.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>
Subject: Re: [PATCH v3 2/4] [media] dt-bindings: Document BCM283x CSI2/CCP2 receiver
Date: Tue, 21 Nov 2017 13:58:27 -0600	[thread overview]
Message-ID: <CAL_JsqJ51jd8nkYAKvLUEf8n7+eJsd8JxW-8YJ6gfx1_Y1LzdA@mail.gmail.com> (raw)
In-Reply-To: <877euje8mc.fsf@anholt.net>

On Tue, Nov 21, 2017 at 1:26 PM, Eric Anholt <eric@anholt.net> wrote:
> Dave Stevenson <dave.stevenson@raspberrypi.org> writes:
>
>> Hi Rob
>>
>> On 27 September 2017 at 22:51, Rob Herring <robh@kernel.org> wrote:
>>> On Fri, Sep 22, 2017 at 05:07:22PM +0100, Dave Stevenson wrote:
>>>> Hi Stefan
>>>>
>>>> On 22 September 2017 at 07:45, Stefan Wahren <stefan.wahren@i2se.com> wrote:
>>>> > Hi Dave,
>>>> >
>>>> >> Dave Stevenson <dave.stevenson@raspberrypi.org> hat am 20. September 2017 um 18:07 geschrieben:
>>>> >>
>>>> >>
>>>> >> Document the DT bindings for the CSI2/CCP2 receiver peripheral
>>>> >> (known as Unicam) on BCM283x SoCs.
>>>> >>
>>>> >> Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
>>>> >> ---
>>>> >>
>>>> >> Changes since v2
>>>> >> - Removed all references to Linux drivers.
>>>> >> - Reworded section about disabling the firmware driver.
>>>> >> - Renamed clock from "lp_clock" to "lp" in description and example.
>>>> >> - Referred to video-interfaces.txt and stated requirements on remote-endpoint
>>>> >>   and data-lanes.
>>>> >> - Corrected typo in example from csi to csi1.
>>>> >> - Removed unnecessary #address-cells and #size-cells in example.
>>>> >> - Removed setting of status from the example.
>>>> >>
>>>> >>  .../devicetree/bindings/media/bcm2835-unicam.txt   | 85 ++++++++++++++++++++++
>>>> >>  1 file changed, 85 insertions(+)
>>>> >>  create mode 100644 Documentation/devicetree/bindings/media/bcm2835-unicam.txt
>>>> >>
>>>> >> diff --git a/Documentation/devicetree/bindings/media/bcm2835-unicam.txt b/Documentation/devicetree/bindings/media/bcm2835-unicam.txt
>>>> >> new file mode 100644
>>>> >> index 0000000..7714fb3
>>>> >> --- /dev/null
>>>> >> +++ b/Documentation/devicetree/bindings/media/bcm2835-unicam.txt
>>>> >> @@ -0,0 +1,85 @@
>>>> >> +Broadcom BCM283x Camera Interface (Unicam)
>>>> >> +------------------------------------------
>>>> >> +
>>>> >> +The Unicam block on BCM283x SoCs is the receiver for either
>>>> >> +CSI-2 or CCP2 data from image sensors or similar devices.
>>>> >> +
>>>> >> +The main platform using this SoC is the Raspberry Pi family of boards.
>>>> >> +On the Pi the VideoCore firmware can also control this hardware block,
>>>> >> +and driving it from two different processors will cause issues.
>>>> >> +To avoid this, the firmware checks the device tree configuration
>>>> >> +during boot. If it finds device tree nodes called csi0 or csi1 then
>>>> >> +it will stop the firmware accessing the block, and it can then
>>>> >> +safely be used via the device tree binding.
>>>> >> +
>>>> >> +Required properties:
>>>> >> +===================
>>>> >> +- compatible : must be "brcm,bcm2835-unicam".
>>>> >> +- reg                : physical base address and length of the register sets for the
>>>> >> +               device.
>>>> >> +- interrupts : should contain the IRQ line for this Unicam instance.
>>>> >> +- clocks     : list of clock specifiers, corresponding to entries in
>>>> >> +               clock-names property.
>>>> >> +- clock-names        : must contain an "lp" entry, matching entries in the
>>>> >> +               clocks property.
>>>> >> +
>>>> >> +Unicam supports a single port node. It should contain one 'port' child node
>>>> >> +with child 'endpoint' node. Please refer to the bindings defined in
>>>> >> +Documentation/devicetree/bindings/media/video-interfaces.txt.
>>>> >> +
>>>> >> +Within the endpoint node the "remote-endpoint" and "data-lanes" properties
>>>> >> +are mandatory.
>>>> >> +Data lane reordering is not supported so the data lanes must be in order,
>>>> >> +starting at 1. The number of data lanes should represent the number of
>>>> >> +usable lanes for the hardware block. That may be limited by either the SoC or
>>>> >> +how the platform presents the interface, and the lower value must be used.
>>>> >> +
>>>> >> +Lane reordering is not supported on the clock lane either, so the optional
>>>> >> +property "clock-lane" will implicitly be <0>.
>>>> >> +Similarly lane inversion is not supported, therefore "lane-polarities" will
>>>> >> +implicitly be <0 0 0 0 0>.
>>>> >> +Neither of these values will be checked.
>>>> >> +
>>>> >> +Example:
>>>> >> +     csi1: csi1@7e801000 {
>>>> >> +             compatible = "brcm,bcm2835-unicam";
>>>> >> +             reg = <0x7e801000 0x800>,
>>>> >> +                   <0x7e802004 0x4>;
>>>> >
>>>> > sorry, i didn't noticed this before. I'm afraid this is using a small range of the CMI. Are there possible other users of this range? Does it make sense to handle this by a separate clock driver?
>>>>
>>>> CMI (Clock Manager Image) consists of a total of 4 registers.
>>>> 0x7e802000 is CMI_CAM0, with only bits 0-5 used for gating and
>>>> inversion of the clock and data lanes (2 data lanes available on
>>>> CAM0).
>>>> 0x7e802004 is CMI_CAM1, with only bits 0-9 used for gating and
>>>> inversion of the clock and data lanes (4 data lanes available on
>>>> CAM1).
>>>> 0x7e802008 is CMI_CAMTEST which I have no documentation or drivers for.
>>>> 0x7e802010 is CMI_USBCTL. Only bit 6 is documented and is a reset. The
>>>> default value is the required value. Nothing touches it that I can
>>>> find.
>>>>
>>>> The range listed only covers the one register associated with that
>>>> Unicam instance, so no other users. The other two aren't touched.
>>>> Do 16 active register bits solely for camera clock gating really
>>>> warrant a full clock driver?
>>>
>>> You should describe all the registers in DT, not just what the driver
>>> (currently) uses.
>>
>> I'm not clear what you're asking for here.
>>
>> This binding is for the Unicam block, not for CMI (Clock Manager
>> Imaging). In order for a Unicam instance to work, it needs to enable
>> the relevant clock gating via 1 CMI register, and it will only ever be
>> one register.
>
> Rob, the CMI just a small bit of glue required by the crossing of a
> power domain in a unicam instance, and the two unicam instances in this
> HW have their CMI regs next to each other.  It's not really a separate
> block, and I think describing the unicam's CMI reg in the unicam binding
> is appropriate.
>
> What would you need from Dave to ack this binding?

Sorry, had started to reply on this and got distracted.

I guess since there seems to be only 1 other bit that could possibly
be used (CMI_USBCTL) it is fine like this. However, my concern would
be if the CMI registers are integrated in a different way in some
future chip that has the same unicam instances. Or just if the
register bits are rearranged. Those are not an uncommon occurrence.
You would have to provide access to those registers in some other way.
It can be dealt with, but then you have to support both cases in the
driver. If you all are fine with that, then:

Acked-by: Rob Herring <robh@kernel.org>

  reply	other threads:[~2017-11-21 19:58 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-20 16:07 [PATCH v3 0/4] BCM283x Camera Receiver driver Dave Stevenson
     [not found] ` <cover.1505916622.git.dave.stevenson-FnsA7b+Nu9XbIbC87yuRow@public.gmane.org>
2017-09-20 16:07   ` [PATCH v3 1/4] [media] v4l2-common: Add helper function for fourcc to string Dave Stevenson
2017-09-20 16:07     ` Dave Stevenson
2017-10-13 21:09     ` Sakari Ailus
2017-10-17  9:17       ` Dave Stevenson
     [not found]         ` <CAAoAYcN441pVUqCu00hbKmEQWyNaK4jdwkufpJ2P8iXkcQG5KA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-10-17  9:28           ` Hans Verkuil
2017-10-17  9:28             ` Hans Verkuil
     [not found]             ` <8cd44cbf-6751-c3de-1729-c8c1d54e8b00-FYB4Gu1CFyUAvxtiuMwx3w@public.gmane.org>
2017-10-17 10:08               ` Sakari Ailus
2017-10-17 10:08                 ` Sakari Ailus
2017-09-20 16:07 ` [PATCH v3 2/4] [media] dt-bindings: Document BCM283x CSI2/CCP2 receiver Dave Stevenson
     [not found]   ` <fae3d29bba67825030c0077dd9c79534b6888512.1505916622.git.dave.stevenson-FnsA7b+Nu9XbIbC87yuRow@public.gmane.org>
2017-09-22  6:45     ` Stefan Wahren
2017-09-22  6:45       ` Stefan Wahren
     [not found]       ` <1814950930.414004.1506062733728-7tX72C7vayboQLBSYMtkGA@public.gmane.org>
2017-09-22 16:07         ` Dave Stevenson
2017-09-22 16:07           ` Dave Stevenson
     [not found]           ` <CAAoAYcMFm82vo5k-iCCpARbndyrLDt1UMV_kRUDHiHA0iMzhMg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-09-22 17:39             ` Stefan Wahren
2017-09-22 17:39               ` Stefan Wahren
2017-09-22 18:04             ` Eric Anholt
2017-09-22 18:04               ` Eric Anholt
2017-09-27 21:51             ` Rob Herring
2017-09-27 21:51               ` Rob Herring
2017-10-02 10:36               ` Dave Stevenson
     [not found]                 ` <CAAoAYcM0m6Z8hUDn+FuNb-O28geAYJqHWrhKPDP_Jvh2P-YE3A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-11-21 19:26                   ` Eric Anholt
2017-11-21 19:26                     ` Eric Anholt
2017-11-21 19:58                     ` Rob Herring [this message]
2017-11-21 20:54                       ` Eric Anholt
2017-11-21 20:54                         ` Eric Anholt
2017-11-22 16:39                         ` Dave Stevenson
2017-09-20 16:07 ` [PATCH v3 3/4] [media] bcm2835-unicam: Driver for CCP2/CSI2 camera interface Dave Stevenson
2017-09-22 10:37   ` Hans Verkuil
2017-09-20 16:07 ` [PATCH v3 4/4] MAINTAINERS: Add entry for BCM2835 camera driver Dave Stevenson

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=CAL_JsqJ51jd8nkYAKvLUEf8n7+eJsd8JxW-8YJ6gfx1_Y1LzdA@mail.gmail.com \
    --to=robh@kernel.org \
    --cc=dave.stevenson@raspberrypi.org \
    --cc=devicetree@vger.kernel.org \
    --cc=eric@anholt.net \
    --cc=hans.verkuil@cisco.com \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-rpi-kernel@lists.infradead.org \
    --cc=mchehab@kernel.org \
    --cc=sakari.ailus@iki.fi \
    --cc=stefan.wahren@i2se.com \
    /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.