diff mbox

[PATCHv2] dt: bindings: Add support for CSI1 bus

Message ID 20170111225335.GA21553@amd
State Changes Requested, archived
Headers show

Commit Message

Pavel Machek Jan. 11, 2017, 10:53 p.m. UTC
From: Sakari Ailus <sakari.ailus@iki.fi>

In the vast majority of cases the bus type is known to the driver(s)
since a receiver or transmitter can only support a single one. There
are cases however where different options are possible.

The existing V4L2 OF support tries to figure out the bus type and
parse the bus parameters based on that. This does not scale too well
as there are multiple serial busses that share common properties.

Some hardware also supports multiple types of busses on the same
interfaces.

Document the CSI1/CCP2 property strobe. It signifies the clock or
strobe mode.
 
Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
Signed-off-by: Pavel Machek <pavel@ucw.cz>

Comments

Sebastian Reichel Jan. 11, 2017, 11:55 p.m. UTC | #1
Hi,

On Wed, Jan 11, 2017 at 11:53:35PM +0100, Pavel Machek wrote:
> From: Sakari Ailus <sakari.ailus@iki.fi>
> 
> In the vast majority of cases the bus type is known to the driver(s)
> since a receiver or transmitter can only support a single one. There
> are cases however where different options are possible.
> 
> The existing V4L2 OF support tries to figure out the bus type and
> parse the bus parameters based on that. This does not scale too well
> as there are multiple serial busses that share common properties.
> 
> Some hardware also supports multiple types of busses on the same
> interfaces.
> 
> Document the CSI1/CCP2 property strobe. It signifies the clock or
> strobe mode.
>  
> Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
> Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
> Signed-off-by: Pavel Machek <pavel@ucw.cz>
> 
> diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt
> index 9cd2a36..08c4498 100644
> --- a/Documentation/devicetree/bindings/media/video-interfaces.txt
> +++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
> @@ -76,6 +76,11 @@ Optional endpoint properties
>    mode horizontal and vertical synchronization signals are provided to the
>    slave device (data source) by the master device (data sink). In the master
>    mode the data source device is also the source of the synchronization signals.
> +- bus-type: data bus type. Possible values are:
> +  0 - MIPI CSI2
> +  1 - parallel / Bt656
> +  2 - MIPI CSI1
> +  3 - CCP2
>  - bus-width: number of data lines actively used, valid for the parallel busses.
>  - data-shift: on the parallel data busses, if bus-width is used to specify the
>    number of data lines, data-shift can be used to specify which data lines are
> @@ -112,7 +117,8 @@ Optional endpoint properties
>    should be the combined length of data-lanes and clock-lanes properties.
>    If the lane-polarities property is omitted, the value must be interpreted
>    as 0 (normal). This property is valid for serial busses only.
> -
> +- strobe: Whether the clock signal is used as clock or strobe. Used
> +  with CCP2, for instance.
>  
>  Example
>  -------
> 
> 

Reviewed-By: Sebastian Reichel <sre@kernel.org>

-- Sebastian
Baruch Siach Jan. 12, 2017, 12:06 p.m. UTC | #2
Hi Pavel,

On Wed, Jan 11, 2017 at 11:53:35PM +0100, Pavel Machek wrote:
> From: Sakari Ailus <sakari.ailus@iki.fi>
> 
> In the vast majority of cases the bus type is known to the driver(s)
> since a receiver or transmitter can only support a single one. There
> are cases however where different options are possible.
> 
> The existing V4L2 OF support tries to figure out the bus type and
> parse the bus parameters based on that. This does not scale too well
> as there are multiple serial busses that share common properties.
> 
> Some hardware also supports multiple types of busses on the same
> interfaces.
> 
> Document the CSI1/CCP2 property strobe. It signifies the clock or
> strobe mode.
>  
> Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
> Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
> Signed-off-by: Pavel Machek <pavel@ucw.cz>
> 
> diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt
> index 9cd2a36..08c4498 100644
> --- a/Documentation/devicetree/bindings/media/video-interfaces.txt
> +++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
> @@ -76,6 +76,11 @@ Optional endpoint properties
>    mode horizontal and vertical synchronization signals are provided to the
>    slave device (data source) by the master device (data sink). In the master
>    mode the data source device is also the source of the synchronization signals.
> +- bus-type: data bus type. Possible values are:
> +  0 - MIPI CSI2
> +  1 - parallel / Bt656

Why not have separate values for parallel and BT.656?

baruch

> +  2 - MIPI CSI1
> +  3 - CCP2
>  - bus-width: number of data lines actively used, valid for the parallel busses.
>  - data-shift: on the parallel data busses, if bus-width is used to specify the
>    number of data lines, data-shift can be used to specify which data lines are
> @@ -112,7 +117,8 @@ Optional endpoint properties
>    should be the combined length of data-lanes and clock-lanes properties.
>    If the lane-polarities property is omitted, the value must be interpreted
>    as 0 (normal). This property is valid for serial busses only.
> -
> +- strobe: Whether the clock signal is used as clock or strobe. Used
> +  with CCP2, for instance.
>  
>  Example
>  -------
Sakari Ailus Jan. 19, 2017, 9:37 p.m. UTC | #3
Hi Baruch,

On Thu, Jan 12, 2017 at 02:06:03PM +0200, Baruch Siach wrote:
> Hi Pavel,
> 
> On Wed, Jan 11, 2017 at 11:53:35PM +0100, Pavel Machek wrote:
> > From: Sakari Ailus <sakari.ailus@iki.fi>
> > 
> > In the vast majority of cases the bus type is known to the driver(s)
> > since a receiver or transmitter can only support a single one. There
> > are cases however where different options are possible.
> > 
> > The existing V4L2 OF support tries to figure out the bus type and
> > parse the bus parameters based on that. This does not scale too well
> > as there are multiple serial busses that share common properties.
> > 
> > Some hardware also supports multiple types of busses on the same
> > interfaces.
> > 
> > Document the CSI1/CCP2 property strobe. It signifies the clock or
> > strobe mode.
> >  
> > Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
> > Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
> > Signed-off-by: Pavel Machek <pavel@ucw.cz>
> > 
> > diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt
> > index 9cd2a36..08c4498 100644
> > --- a/Documentation/devicetree/bindings/media/video-interfaces.txt
> > +++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
> > @@ -76,6 +76,11 @@ Optional endpoint properties
> >    mode horizontal and vertical synchronization signals are provided to the
> >    slave device (data source) by the master device (data sink). In the master
> >    mode the data source device is also the source of the synchronization signals.
> > +- bus-type: data bus type. Possible values are:
> > +  0 - MIPI CSI2
> > +  1 - parallel / Bt656
> 
> Why not have separate values for parallel and BT.656?

The current implementation of V4L2 OF support digs the information from
other properties (hsync-active, vsync-active and field-even-active). If any
of them are present, the bus is considered to be a regular parallel bus ---
the Bt.656 has no such signals.

CSI-2 bus is assumed if CSI-2 specific properties can be found. However,
explicit bus type is needed as the type of the bus isn't anymore implicitly
determinable with the addition of CSI-1 and CCP2 busses: they use the same
properties.
Sakari Ailus Jan. 19, 2017, 9:49 p.m. UTC | #4
Hi Pavel,

On Wed, Jan 11, 2017 at 11:53:35PM +0100, Pavel Machek wrote:
> From: Sakari Ailus <sakari.ailus@iki.fi>
> 
> In the vast majority of cases the bus type is known to the driver(s)
> since a receiver or transmitter can only support a single one. There
> are cases however where different options are possible.
> 
> The existing V4L2 OF support tries to figure out the bus type and
> parse the bus parameters based on that. This does not scale too well
> as there are multiple serial busses that share common properties.
> 
> Some hardware also supports multiple types of busses on the same
> interfaces.
> 
> Document the CSI1/CCP2 property strobe. It signifies the clock or
> strobe mode.
>  
> Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
> Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
> Signed-off-by: Pavel Machek <pavel@ucw.cz>
> 
> diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt
> index 9cd2a36..08c4498 100644
> --- a/Documentation/devicetree/bindings/media/video-interfaces.txt
> +++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
> @@ -76,6 +76,11 @@ Optional endpoint properties
>    mode horizontal and vertical synchronization signals are provided to the
>    slave device (data source) by the master device (data sink). In the master
>    mode the data source device is also the source of the synchronization signals.
> +- bus-type: data bus type. Possible values are:
> +  0 - MIPI CSI2
> +  1 - parallel / Bt656
> +  2 - MIPI CSI1
> +  3 - CCP2

Actually, thinking about this again --- we only need to explictly specify
busses if we're dealing with either CCP2 or CSI-1. The vast majority of the
actual busses are and continue to be CSI-2 or either parallel or Bt.656. As
they can be implicitly detected, we would have an option to just drop values
0 and 1 from above, i.e. only leave CSI-1 and CCP2. For now, specifying
CSI-2 or parallel / Bt.656 adds no value as the old DT binaries without
bus-type will need to be supported anyway.

>  - bus-width: number of data lines actively used, valid for the parallel busses.
>  - data-shift: on the parallel data busses, if bus-width is used to specify the
>    number of data lines, data-shift can be used to specify which data lines are
> @@ -112,7 +117,8 @@ Optional endpoint properties
>    should be the combined length of data-lanes and clock-lanes properties.
>    If the lane-polarities property is omitted, the value must be interpreted
>    as 0 (normal). This property is valid for serial busses only.
> -
> +- strobe: Whether the clock signal is used as clock or strobe. Used
> +  with CCP2, for instance.

How about the "ti,strobe-clock-inv" I proposed? No-one seems to know what
this really truly means... or just drop it if it's not really needed.
Ivaylo Dimitrov Jan. 20, 2017, 7:59 a.m. UTC | #5
Hi,

On 19.01.2017 23:49, Sakari Ailus wrote:
> Hi Pavel,
>
> On Wed, Jan 11, 2017 at 11:53:35PM +0100, Pavel Machek wrote:
>> From: Sakari Ailus <sakari.ailus@iki.fi>
>>
>> In the vast majority of cases the bus type is known to the driver(s)
>> since a receiver or transmitter can only support a single one. There
>> are cases however where different options are possible.
>>
>> The existing V4L2 OF support tries to figure out the bus type and
>> parse the bus parameters based on that. This does not scale too well
>> as there are multiple serial busses that share common properties.
>>
>> Some hardware also supports multiple types of busses on the same
>> interfaces.
>>
>> Document the CSI1/CCP2 property strobe. It signifies the clock or
>> strobe mode.
>>
>> Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
>> Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
>> Signed-off-by: Pavel Machek <pavel@ucw.cz>
>>
>> diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt
>> index 9cd2a36..08c4498 100644
>> --- a/Documentation/devicetree/bindings/media/video-interfaces.txt
>> +++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
>> @@ -76,6 +76,11 @@ Optional endpoint properties
>>    mode horizontal and vertical synchronization signals are provided to the
>>    slave device (data source) by the master device (data sink). In the master
>>    mode the data source device is also the source of the synchronization signals.
>> +- bus-type: data bus type. Possible values are:
>> +  0 - MIPI CSI2
>> +  1 - parallel / Bt656
>> +  2 - MIPI CSI1
>> +  3 - CCP2
>
> Actually, thinking about this again --- we only need to explictly specify
> busses if we're dealing with either CCP2 or CSI-1. The vast majority of the
> actual busses are and continue to be CSI-2 or either parallel or Bt.656. As
> they can be implicitly detected, we would have an option to just drop values
> 0 and 1 from above, i.e. only leave CSI-1 and CCP2. For now, specifying
> CSI-2 or parallel / Bt.656 adds no value as the old DT binaries without
> bus-type will need to be supported anyway.
>
>>  - bus-width: number of data lines actively used, valid for the parallel busses.
>>  - data-shift: on the parallel data busses, if bus-width is used to specify the
>>    number of data lines, data-shift can be used to specify which data lines are
>> @@ -112,7 +117,8 @@ Optional endpoint properties
>>    should be the combined length of data-lanes and clock-lanes properties.
>>    If the lane-polarities property is omitted, the value must be interpreted
>>    as 0 (normal). This property is valid for serial busses only.
>> -
>> +- strobe: Whether the clock signal is used as clock or strobe. Used
>> +  with CCP2, for instance.
>
> How about the "ti,strobe-clock-inv" I proposed? No-one seems to know what
> this really truly means... or just drop it if it's not really needed.
>

Not really :), see 
https://www.spinics.net/lists/linux-media/msg99802.html and 
https://www.spinics.net/lists/linux-media/msg99800.html

"clock/strobe", and "strobe-inv" are two distinct properties, see 
CSI1B_CTRL description in OMAP TRM. BTW there is another property that 
is needed for both n900 cameras to operate correctly (VP_CLK_POL, bit 12 
from the same reg), but that can be added later on when we have the 
other bits in place.

Ivo
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sakari Ailus Jan. 20, 2017, 11:46 a.m. UTC | #6
Hi Ivaylo,

On Fri, Jan 20, 2017 at 09:59:13AM +0200, Ivaylo Dimitrov wrote:
> Hi,
> 
> On 19.01.2017 23:49, Sakari Ailus wrote:
> >Hi Pavel,
> >
> >On Wed, Jan 11, 2017 at 11:53:35PM +0100, Pavel Machek wrote:
> >>From: Sakari Ailus <sakari.ailus@iki.fi>
> >>
> >>In the vast majority of cases the bus type is known to the driver(s)
> >>since a receiver or transmitter can only support a single one. There
> >>are cases however where different options are possible.
> >>
> >>The existing V4L2 OF support tries to figure out the bus type and
> >>parse the bus parameters based on that. This does not scale too well
> >>as there are multiple serial busses that share common properties.
> >>
> >>Some hardware also supports multiple types of busses on the same
> >>interfaces.
> >>
> >>Document the CSI1/CCP2 property strobe. It signifies the clock or
> >>strobe mode.
> >>
> >>Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
> >>Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com>
> >>Signed-off-by: Pavel Machek <pavel@ucw.cz>
> >>
> >>diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt
> >>index 9cd2a36..08c4498 100644
> >>--- a/Documentation/devicetree/bindings/media/video-interfaces.txt
> >>+++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
> >>@@ -76,6 +76,11 @@ Optional endpoint properties
> >>   mode horizontal and vertical synchronization signals are provided to the
> >>   slave device (data source) by the master device (data sink). In the master
> >>   mode the data source device is also the source of the synchronization signals.
> >>+- bus-type: data bus type. Possible values are:
> >>+  0 - MIPI CSI2
> >>+  1 - parallel / Bt656
> >>+  2 - MIPI CSI1
> >>+  3 - CCP2
> >
> >Actually, thinking about this again --- we only need to explictly specify
> >busses if we're dealing with either CCP2 or CSI-1. The vast majority of the
> >actual busses are and continue to be CSI-2 or either parallel or Bt.656. As
> >they can be implicitly detected, we would have an option to just drop values
> >0 and 1 from above, i.e. only leave CSI-1 and CCP2. For now, specifying
> >CSI-2 or parallel / Bt.656 adds no value as the old DT binaries without
> >bus-type will need to be supported anyway.
> >
> >> - bus-width: number of data lines actively used, valid for the parallel busses.
> >> - data-shift: on the parallel data busses, if bus-width is used to specify the
> >>   number of data lines, data-shift can be used to specify which data lines are
> >>@@ -112,7 +117,8 @@ Optional endpoint properties
> >>   should be the combined length of data-lanes and clock-lanes properties.
> >>   If the lane-polarities property is omitted, the value must be interpreted
> >>   as 0 (normal). This property is valid for serial busses only.
> >>-
> >>+- strobe: Whether the clock signal is used as clock or strobe. Used
> >>+  with CCP2, for instance.
> >
> >How about the "ti,strobe-clock-inv" I proposed? No-one seems to know what
> >this really truly means... or just drop it if it's not really needed.
> >
> 
> Not really :), see https://www.spinics.net/lists/linux-media/msg99802.html
> and https://www.spinics.net/lists/linux-media/msg99800.html
> 
> "clock/strobe", and "strobe-inv" are two distinct properties, see CSI1B_CTRL
> description in OMAP TRM. BTW there is another property that is needed for
> both n900 cameras to operate correctly (VP_CLK_POL, bit 12 from the same
> reg), but that can be added later on when we have the other bits in place.

Oh, indeed, my mistake. Please ignore that comment.
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt
index 9cd2a36..08c4498 100644
--- a/Documentation/devicetree/bindings/media/video-interfaces.txt
+++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
@@ -76,6 +76,11 @@  Optional endpoint properties
   mode horizontal and vertical synchronization signals are provided to the
   slave device (data source) by the master device (data sink). In the master
   mode the data source device is also the source of the synchronization signals.
+- bus-type: data bus type. Possible values are:
+  0 - MIPI CSI2
+  1 - parallel / Bt656
+  2 - MIPI CSI1
+  3 - CCP2
 - bus-width: number of data lines actively used, valid for the parallel busses.
 - data-shift: on the parallel data busses, if bus-width is used to specify the
   number of data lines, data-shift can be used to specify which data lines are
@@ -112,7 +117,8 @@  Optional endpoint properties
   should be the combined length of data-lanes and clock-lanes properties.
   If the lane-polarities property is omitted, the value must be interpreted
   as 0 (normal). This property is valid for serial busses only.
-
+- strobe: Whether the clock signal is used as clock or strobe. Used
+  with CCP2, for instance.
 
 Example
 -------