Re: [PATCH v4 02/10] s5p-fimc: Add device tree support for FIMC devices

2013-02-14 Thread Sylwester Nawrocki

On 02/13/2013 09:42 PM, Stephen Warren wrote:

On 02/12/2013 03:39 PM, Sylwester Nawrocki wrote:

[...]

The whole subsystem topology is exposed to user space through the Media
Controller API.


OK, stable user-visible names are a reasonable use for device tree. I
still don't think you should use those user-visible IDs for making any
other kind of decision though.


OK, I will update the bindings so all variant details are placed in the
device tree. Then the routing information would mostly be coming from the
device specific dt properties/the common media bindings and the state of
links between the media entities, set by the user.


It's a bit simpler than that. We would need only to look for the reg
property in a local port subnode. MIPI-CSIS correspond to physical MIPI
CSI-2 bus interface of an SoC, hence it has to have specific reg values
that identify each camera input interface.


Oh I see. I guess if a device is using its own node to determine its own
identify, that's reasonable.


OK, I'm going to post an updated patch series in a week or two.


I thought you were talking about a situation like:

FIMC -- XXX

where FIMC wanted to determine what ID XXX knew that particular FIMC as.


Ah, no. Sorry for the poor explanation. FIMC are on a sort if interconnect
bus and they can be attached to a single data source, even in parallel,
and the data source entity don't even need to be fully aware of it.


I can see aliases used in bindings of multiple devices: uart, spi, sound
interfaces, gpio, ... And all bindings seem to impose some rules on how
their aliases are created.


Do you have specific examples? I really don't think the bindings should
be dictating the alias values.


I just grepped through the existing bindings documentation:

...

I think correctly numbered in the above statements means there are some
specific rules on how the aliases are created, however those seem not
clearly communicated.


A binding specifying that an alias must (or even should) exist for each
node seems odd to me. In the absence of an explicit rule for how to
determine the alias IDs to use, I think the rule would simply be that
the aliases must be unique?


I guess so. Inspecting of_alias_get_id() call sites tells us that most 
drivers

just fail when alias is not present and only rarely it is not treated as an
error condition.


And there is a new patch series that allows I2C bus controller enumeration
by means of the aliases:

http://www.spinics.net/lists/arm-kernel/msg224162.html


That's not enumerating controllers by alias (they're still enumerated by
scanning the DT nodes for buses in the normal way). The change simply
assigns the bus ID of each controller from an alias; exactly what
aliases are for.


OK, that clarifies a bit my understanding of the aliases.

Thanks,
Sylwester
--
To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 02/10] s5p-fimc: Add device tree support for FIMC devices

2013-02-13 Thread Stephen Warren
On 02/12/2013 03:39 PM, Sylwester Nawrocki wrote:
 On 02/11/2013 10:50 PM, Stephen Warren wrote:
 On 02/09/2013 03:29 PM, Sylwester Nawrocki wrote:
 On 02/09/2013 01:32 AM, Stephen Warren wrote:
 On 02/08/2013 05:05 PM, Sylwester Nawrocki wrote:
 On 02/09/2013 12:21 AM, Stephen Warren wrote:
 On 02/08/2013 04:16 PM, Sylwester Nawrocki wrote:
 On 02/07/2013 12:40 AM, Stephen Warren wrote:
 diff --git
 a/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt
 b/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt

 +Samsung S5P/EXYNOS SoC Camera Subsystem (FIMC)
 +--
 ...
 +For every fimc node a numbered alias should be present in the
 aliases node.
 +Aliases are of the form fimcn, wheren is an integer
 (0...N)
 specifying
 +the IP's instance index.
 ...
 Different compatible values might not work, when for example there
 are 3 IPs out of 4 of one type and the fourth one of another type.
 It wouldn't even by really different types, just quirks/little
 differences between them, e.g. no data path routed to one of other
 IPs.

 I was thinking of using feature-/quirk-oriented properties. For
 example,
 if there's a port on 3 of the 4 devices to connect to some other IP
 block, simply include a boolean property to indicate whether that port
 is present. It would be in 3 of the nodes but not the 4th.

 Yes, I could add several properties corresponding to all members of this
 [3] data structure. But still it is needed to clearly identify the IP
 block in a set of the hardware instances.

 Why? What decisions will be made based on the identify of the IP block
 instance that wouldn't be covered by DT properties that describe which
 features/bugs/... the IP block instance has?
 
 The whole subsystem topology is exposed to user space through the Media
 Controller API.

OK, stable user-visible names are a reasonable use for device tree. I
still don't think you should use those user-visible IDs for making any
other kind of decision though.

 Then to connect e.g. MIPI-CSIS.0 to FIMC.2 at run time an index of the
 MIPI-CSIS needs to be written to the FIMC.2 data input control
 register.
 Even though MIPI-CSIS.N are same in terms of hardware structure they
 still
 need to be distinguished as separate instances.

 Oh, so you're using the alias ID as the value to write into the FIMC.2
 register for that. I'm not 100% familiar with aliases, but they seem
 like a more user-oriented naming thing to me, whereas values for
 hooking
 up intra-SoC routing are an unrelated namespace semantically, even if
 the values happen to line up right now. Perhaps rather than a Boolean
 property I mentioned above, use a custom property to indicate the ID
 that the FIMC.2 object knows the MIPI-CSIS.0 object as? While this
 seems

 That could be 'reg' property in the MIPI-CSIS.0 'port' subnode that
 links it to the image sensor node ([4], line 165). Because MIPI-CSIS IP
 blocks are immutably connected to the SoC camera physical MIPI CSI-2
 interfaces, and the physical camera ports have fixed assignment to the
 MIPI-CSIS devices..  This way we could drop alias ID for the MIPI-CSIS
 nodes. And their instance index that is required for the top level
 driver which exposes topology and the routing capabilities to user space
 could be restored from the reg property value by subtracting a fixed
 offset.

 I suppose that would work. It feels a little indirect, and I think means
 that the driver needs to go find some child node defining its end of
 some link, then find the node representing the other end of the link,
 then read properties out of that other node to find the value. That
 seems a little unusual, but I guess it would work. I'm not sure of the
 long-term implications of doing that kind of thing. You'd want to run
 the idea past some DT maintainers/experts.
 
 It's a bit simpler than that. We would need only to look for the reg
 property in a local port subnode. MIPI-CSIS correspond to physical MIPI
 CSI-2 bus interface of an SoC, hence it has to have specific reg values
 that identify each camera input interface.

Oh I see. I guess if a device is using its own node to determine its own
identify, that's reasonable.

I thought you were talking about a situation like:

FIMC -- XXX

where FIMC wanted to determine what ID XXX knew that particular FIMC as.

 I can see aliases used in bindings of multiple devices: uart, spi, sound
 interfaces, gpio, ... And all bindings seem to impose some rules on how
 their aliases are created.

 Do you have specific examples? I really don't think the bindings should
 be dictating the alias values.
 
 I just grepped through the existing bindings documentation:
...
 I think correctly numbered in the above statements means there are some
 specific rules on how the aliases are created, however those seem not
 clearly communicated.

A binding specifying that an alias must (or even should) exist for each
node seems odd to me. In the absence of an explicit 

Re: [PATCH v4 02/10] s5p-fimc: Add device tree support for FIMC devices

2013-02-12 Thread Sylwester Nawrocki

On 02/11/2013 10:50 PM, Stephen Warren wrote:

On 02/09/2013 03:29 PM, Sylwester Nawrocki wrote:

On 02/09/2013 01:32 AM, Stephen Warren wrote:

On 02/08/2013 05:05 PM, Sylwester Nawrocki wrote:

On 02/09/2013 12:21 AM, Stephen Warren wrote:

On 02/08/2013 04:16 PM, Sylwester Nawrocki wrote:

On 02/07/2013 12:40 AM, Stephen Warren wrote:

diff --git
a/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt
b/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt



+Samsung S5P/EXYNOS SoC Camera Subsystem (FIMC)
+--

...

+For every fimc node a numbered alias should be present in the
aliases node.
+Aliases are of the form fimcn, wheren is an integer (0...N)
specifying
+the IP's instance index.

...

Different compatible values might not work, when for example there
are 3 IPs out of 4 of one type and the fourth one of another type.
It wouldn't even by really different types, just quirks/little
differences between them, e.g. no data path routed to one of other IPs.


I was thinking of using feature-/quirk-oriented properties. For example,
if there's a port on 3 of the 4 devices to connect to some other IP
block, simply include a boolean property to indicate whether that port
is present. It would be in 3 of the nodes but not the 4th.


Yes, I could add several properties corresponding to all members of this
[3] data structure. But still it is needed to clearly identify the IP
block in a set of the hardware instances.


Why? What decisions will be made based on the identify of the IP block
instance that wouldn't be covered by DT properties that describe which
features/bugs/... the IP block instance has?


The whole subsystem topology is exposed to user space through the Media
Controller API. Although the user space libraries/applications using
this driver are not much concerned how the hardware is represented
internally in the kernel, some properties of the media entities seen
in user space are derived from the hardware details, e.g. the media entity
names contain index of a corresponding IP block. Please see [1] for
an example of a topology exposed by the driver.

Since different H/W instances have different capabilities, user space
libraries/plugins can be coded to e.g. use one instance for video playback
post-processing and another for camera capture. The capabilities could be
also discovered with the V4L2 API to some level of detail. But still
assigning random entity names to the IP blocks has a potential of breaking
user space or causing some malfunctions.

Perhaps I should just use a custom properties like samsung,fimc-id ?
I tried to represent some intra-soc data routing details with our common
video interfaces bindings and it really looked like a lot of unnecessary
nodes, with 11 camera sub-device nodes required to cover a front a rear
facing camera. Some details can be just coded in the driver, especially
that newer SoCs will get a new driver anyway, since there are huge
differences between the media subsystem architecture across subsequent
SoC revisions.

[1] http://www.spinics.net/lists/linux-media/attachments/psPhA96YX70U.ps


Then to connect e.g. MIPI-CSIS.0 to FIMC.2 at run time an index of the
MIPI-CSIS needs to be written to the FIMC.2 data input control register.
Even though MIPI-CSIS.N are same in terms of hardware structure they
still
need to be distinguished as separate instances.


Oh, so you're using the alias ID as the value to write into the FIMC.2
register for that. I'm not 100% familiar with aliases, but they seem
like a more user-oriented naming thing to me, whereas values for hooking
up intra-SoC routing are an unrelated namespace semantically, even if
the values happen to line up right now. Perhaps rather than a Boolean
property I mentioned above, use a custom property to indicate the ID
that the FIMC.2 object knows the MIPI-CSIS.0 object as? While this seems


That could be 'reg' property in the MIPI-CSIS.0 'port' subnode that
links it to the image sensor node ([4], line 165). Because MIPI-CSIS IP
blocks are immutably connected to the SoC camera physical MIPI CSI-2
interfaces, and the physical camera ports have fixed assignment to the
MIPI-CSIS devices..  This way we could drop alias ID for the MIPI-CSIS
nodes. And their instance index that is required for the top level
driver which exposes topology and the routing capabilities to user space
could be restored from the reg property value by subtracting a fixed
offset.


I suppose that would work. It feels a little indirect, and I think means
that the driver needs to go find some child node defining its end of
some link, then find the node representing the other end of the link,
then read properties out of that other node to find the value. That
seems a little unusual, but I guess it would work. I'm not sure of the
long-term implications of doing that kind of thing. You'd want to run
the idea past some DT maintainers/experts.


It's a bit simpler than that. We would need 

Re: [PATCH v4 02/10] s5p-fimc: Add device tree support for FIMC devices

2013-02-11 Thread Stephen Warren
On 02/09/2013 03:29 PM, Sylwester Nawrocki wrote:
 On 02/09/2013 01:32 AM, Stephen Warren wrote:
 On 02/08/2013 05:05 PM, Sylwester Nawrocki wrote:
 On 02/09/2013 12:21 AM, Stephen Warren wrote:
 On 02/08/2013 04:16 PM, Sylwester Nawrocki wrote:
 On 02/07/2013 12:40 AM, Stephen Warren wrote:
 diff --git
 a/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt
 b/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt

 +Samsung S5P/EXYNOS SoC Camera Subsystem (FIMC)
 +--
 ...
 +For every fimc node a numbered alias should be present in the
 aliases node.
 +Aliases are of the form fimcn, wherenis an integer (0...N)
 specifying
 +the IP's instance index.
...
 Different compatible values might not work, when for example there
 are 3 IPs out of 4 of one type and the fourth one of another type.
 It wouldn't even by really different types, just quirks/little
 differences between them, e.g. no data path routed to one of other IPs.

 I was thinking of using feature-/quirk-oriented properties. For example,
 if there's a port on 3 of the 4 devices to connect to some other IP
 block, simply include a boolean property to indicate whether that port
 is present. It would be in 3 of the nodes but not the 4th.
 
 Yes, I could add several properties corresponding to all members of this
 [3] data structure. But still it is needed to clearly identify the IP
 block in a set of the hardware instances.

Why? What decisions will be made based on the identify of the IP block
instance that wouldn't be covered by DT properties that describe which
features/bugs/... the IP block instance has?

 Then to connect e.g. MIPI-CSIS.0 to FIMC.2 at run time an index of the
 MIPI-CSIS needs to be written to the FIMC.2 data input control register.
 Even though MIPI-CSIS.N are same in terms of hardware structure they
 still
 need to be distinguished as separate instances.

 Oh, so you're using the alias ID as the value to write into the FIMC.2
 register for that. I'm not 100% familiar with aliases, but they seem
 like a more user-oriented naming thing to me, whereas values for hooking
 up intra-SoC routing are an unrelated namespace semantically, even if
 the values happen to line up right now. Perhaps rather than a Boolean
 property I mentioned above, use a custom property to indicate the ID
 that the FIMC.2 object knows the MIPI-CSIS.0 object as? While this seems
 
 That could be 'reg' property in the MIPI-CSIS.0 'port' subnode that
 links it to the image sensor node ([4], line 165). Because MIPI-CSIS IP
 blocks are immutably connected to the SoC camera physical MIPI CSI-2
 interfaces, and the physical camera ports have fixed assignment to the
 MIPI-CSIS devices..  This way we could drop alias ID for the MIPI-CSIS
 nodes. And their instance index that is required for the top level
 driver which exposes topology and the routing capabilities to user space
 could be restored from the reg property value by subtracting a fixed
 offset.

I suppose that would work. It feels a little indirect, and I think means
that the driver needs to go find some child node defining its end of
some link, then find the node representing the other end of the link,
then read properties out of that other node to find the value. That
seems a little unusual, but I guess it would work. I'm not sure of the
long-term implications of doing that kind of thing. You'd want to run
the idea past some DT maintainers/experts.

...
 I can see aliases used in bindings of multiple devices: uart, spi, sound
 interfaces, gpio, ... And all bindings seem to impose some rules on how
 their aliases are created.

Do you have specific examples? I really don't think the bindings should
be dictating the alias values.

 After all, what happens in some later SoC where you have two different
 types of module that feed into the common module, such that type A
 sources have IDs 0..3 in the common module, and type B sources have IDs
 4..7 in the common module - you wouldn't want to require alias ISs 4..7
 for the type B DT nodes.
 
 There is no need to write alias ID directly into registers, and actually
 it doesn't really happen. But we need to know that, for example camera A
 is connected to physical MIPI CSI-2 channel 0 and to capture video with
 DMA engine of FIMC.2 we need to set FIMC.2 input register to link it to
 MIPI-CSIS 0.

OK, so the IDs are selecting which register to write, or which mux
settings to access. That's pretty much semantically the same thing.
--
To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 02/10] s5p-fimc: Add device tree support for FIMC devices

2013-02-09 Thread Sylwester Nawrocki

On 02/09/2013 01:32 AM, Stephen Warren wrote:

On 02/08/2013 05:05 PM, Sylwester Nawrocki wrote:

On 02/09/2013 12:21 AM, Stephen Warren wrote:

On 02/08/2013 04:16 PM, Sylwester Nawrocki wrote:

On 02/07/2013 12:40 AM, Stephen Warren wrote:

diff --git
a/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt
b/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt



+Samsung S5P/EXYNOS SoC Camera Subsystem (FIMC)
+--

...

+For every fimc node a numbered alias should be present in the
aliases node.
+Aliases are of the form fimcn, wherenis an integer (0...N)
specifying
+the IP's instance index.


Why? Isn't it up to the DT author whether they care if each fimc
node is
assigned a specific identification v.s. whether identification is
assigned automatically?


There are at least three different kinds of IPs that come in multiple
instances in an SoC. To activate data links between them each instance
needs to be clearly identified. There are also differences between
instances of same device. Hence it's important these aliases don't have
random values.

Some more details about the SoC can be found at [1]. The aliases are
also already used in the Exynos5 GScaler bindings [2] in a similar way.


Hmmm. I'd expect explicit DT properties to represent the
instance-specific configuration, or even different compatible values.
Relying on the alias ID seems rather indirect; what if in e.g.
Exynos6/... the mapping from instance/alias ID to feature set changes.
With explicit DT properties, that'd just be a .dts change, whereas by
requiring alias IDs now, you'd need a driver change to support this.


In the initial version of this patch series I used cell-index property,
but then Grant pointed out in some other mail thread it should be
avoided. Hence I used the node aliases.


To me, using cell-index is semantically equivalent to using the alias ID.


I can't see significant difference either. I just switched to what
seemed to be used for similar purpose.


Different compatible values might not work, when for example there
are 3 IPs out of 4 of one type and the fourth one of another type.
It wouldn't even by really different types, just quirks/little
differences between them, e.g. no data path routed to one of other IPs.


I was thinking of using feature-/quirk-oriented properties. For example,
if there's a port on 3 of the 4 devices to connect to some other IP
block, simply include a boolean property to indicate whether that port
is present. It would be in 3 of the nodes but not the 4th.


Yes, I could add several properties corresponding to all members of this
[3] data structure. But still it is needed to clearly identify the IP
block in a set of the hardware instances.


Then to connect e.g. MIPI-CSIS.0 to FIMC.2 at run time an index of the
MIPI-CSIS needs to be written to the FIMC.2 data input control register.
Even though MIPI-CSIS.N are same in terms of hardware structure they still
need to be distinguished as separate instances.


Oh, so you're using the alias ID as the value to write into the FIMC.2
register for that. I'm not 100% familiar with aliases, but they seem
like a more user-oriented naming thing to me, whereas values for hooking
up intra-SoC routing are an unrelated namespace semantically, even if
the values happen to line up right now. Perhaps rather than a Boolean
property I mentioned above, use a custom property to indicate the ID
that the FIMC.2 object knows the MIPI-CSIS.0 object as? While this seems


That could be 'reg' property in the MIPI-CSIS.0 'port' subnode that
links it to the image sensor node ([4], line 165). Because MIPI-CSIS IP
blocks are immutably connected to the SoC camera physical MIPI CSI-2
interfaces, and the physical camera ports have fixed assignment to the
MIPI-CSIS devices..  This way we could drop alias ID for the MIPI-CSIS
nodes. And their instance index that is required for the top level
driver which exposes topology and the routing capabilities to user space
could be restored from the reg property value by subtracting a fixed
offset.

Similarly an instance index of FIMC-LITE could be derived from the value
of reg property in a port node that links it to FIMC-IS ISP. I have been
omitting these port/endpoint nodes because it seemed unnecessary to model
explicitly those data paths. However it feels a bit overkill to add them
just for the sake of identifying the IP block instance

Still I can't really see a possibility to drop indexes for the FIMC nodes.


similar to using cell-index, my *guess* is that Grant's objection to
using cell-index was more based on re-using cell-index for something
other than its intended purpose than pushing you to use an alias ID
rather than a property.


The comments to a patch for some other driver I was referring to can be
found at [1]. My first patch series appeared significantly later [2].
I confused things a bit, sorry about that.

I can see aliases used in bindings of multiple 

Re: [PATCH v4 02/10] s5p-fimc: Add device tree support for FIMC devices

2013-02-08 Thread Sylwester Nawrocki

On 02/07/2013 12:40 AM, Stephen Warren wrote:

diff --git a/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt 
b/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt



+Samsung S5P/EXYNOS SoC Camera Subsystem (FIMC)
+--
+
+The Exynos Camera subsystem comprises of multiple sub-devices that are
+represented by separate platform devices. Some of the IPs come in different


platform devices is a rather Linux-centric term, and DT bindings
should be OS-agnostic. Perhaps use device tree nodes here?


Indeed, thank you for the suggestion, I'll change it.


+variants across the SoC revisions (FIMC) and some remain mostly unchanged
+(MIPI CSIS, FIMC-LITE).
+
+All those sub-subdevices are defined as parent nodes of the common device


s/parent nodes/child node/ I think?


Yeah, 'parent nodes' doesn't really make sense. Thanks for catching it.


+For every fimc node a numbered alias should be present in the aliases node.
+Aliases are of the form fimcn, wheren  is an integer (0...N) specifying
+the IP's instance index.


Why? Isn't it up to the DT author whether they care if each fimc node is
assigned a specific identification v.s. whether identification is
assigned automatically?


There are at least three different kinds of IPs that come in multiple
instances in an SoC. To activate data links between them each instance
needs to be clearly identified. There are also differences between
instances of same device. Hence it's important these aliases don't have
random values.

Some more details about the SoC can be found at [1]. The aliases are
also already used in the Exynos5 GScaler bindings [2] in a similar way.


+Optional properties
+
+ - clock-frequency - maximum FIMC local clock (LCLK) frequency


Again, I'd expect a clocks property here instead.


Please see my comment to patch 01/10. Analogously, I needed this clock
frequency to ensure reliable video data pipeline operation.

[1] http://tinyurl.com/anw9udm
[2] http://www.spinics.net/lists/arm-kernel/msg200036.html
--
To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 02/10] s5p-fimc: Add device tree support for FIMC devices

2013-02-08 Thread Stephen Warren
On 02/08/2013 04:16 PM, Sylwester Nawrocki wrote:
 On 02/07/2013 12:40 AM, Stephen Warren wrote:
 diff --git
 a/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt
 b/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt

 +Samsung S5P/EXYNOS SoC Camera Subsystem (FIMC)
 +--
...
 +For every fimc node a numbered alias should be present in the
 aliases node.
 +Aliases are of the form fimcn, wheren  is an integer (0...N)
 specifying
 +the IP's instance index.

 Why? Isn't it up to the DT author whether they care if each fimc node is
 assigned a specific identification v.s. whether identification is
 assigned automatically?
 
 There are at least three different kinds of IPs that come in multiple
 instances in an SoC. To activate data links between them each instance
 needs to be clearly identified. There are also differences between
 instances of same device. Hence it's important these aliases don't have
 random values.
 
 Some more details about the SoC can be found at [1]. The aliases are
 also already used in the Exynos5 GScaler bindings [2] in a similar way.

Hmmm. I'd expect explicit DT properties to represent the
instance-specific configuration, or even different compatible values.
Relying on the alias ID seems rather indirect; what if in e.g.
Exynos6/... the mapping from instance/alias ID to feature set changes.
With explicit DT properties, that'd just be a .dts change, whereas by
requiring alias IDs now, you'd need a driver change to support this.
--
To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 02/10] s5p-fimc: Add device tree support for FIMC devices

2013-02-08 Thread Sylwester Nawrocki

On 02/09/2013 12:21 AM, Stephen Warren wrote:

On 02/08/2013 04:16 PM, Sylwester Nawrocki wrote:

On 02/07/2013 12:40 AM, Stephen Warren wrote:

diff --git
a/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt
b/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt



+Samsung S5P/EXYNOS SoC Camera Subsystem (FIMC)
+--

...

+For every fimc node a numbered alias should be present in the
aliases node.
+Aliases are of the form fimcn, wheren   is an integer (0...N)
specifying
+the IP's instance index.


Why? Isn't it up to the DT author whether they care if each fimc node is
assigned a specific identification v.s. whether identification is
assigned automatically?


There are at least three different kinds of IPs that come in multiple
instances in an SoC. To activate data links between them each instance
needs to be clearly identified. There are also differences between
instances of same device. Hence it's important these aliases don't have
random values.

Some more details about the SoC can be found at [1]. The aliases are
also already used in the Exynos5 GScaler bindings [2] in a similar way.


Hmmm. I'd expect explicit DT properties to represent the
instance-specific configuration, or even different compatible values.
Relying on the alias ID seems rather indirect; what if in e.g.
Exynos6/... the mapping from instance/alias ID to feature set changes.
With explicit DT properties, that'd just be a .dts change, whereas by
requiring alias IDs now, you'd need a driver change to support this.


In the initial version of this patch series I used cell-index property,
but then Grant pointed out in some other mail thread it should be
avoided. Hence I used the node aliases.

Different compatible values might not work, when for example there
are 3 IPs out of 4 of one type and the fourth one of another type.
It wouldn't even by really different types, just quirks/little
differences between them, e.g. no data path routed to one of other IPs.

Then to connect e.g. MIPI-CSIS.0 to FIMC.2 at run time an index of the
MIPI-CSIS needs to be written to the FIMC.2 data input control register.
Even though MIPI-CSIS.N are same in terms of hardware structure they still
need to be distinguished as separate instances.

--
To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 02/10] s5p-fimc: Add device tree support for FIMC devices

2013-02-08 Thread Stephen Warren
On 02/08/2013 05:05 PM, Sylwester Nawrocki wrote:
 On 02/09/2013 12:21 AM, Stephen Warren wrote:
 On 02/08/2013 04:16 PM, Sylwester Nawrocki wrote:
 On 02/07/2013 12:40 AM, Stephen Warren wrote:
 diff --git
 a/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt
 b/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt

 +Samsung S5P/EXYNOS SoC Camera Subsystem (FIMC)
 +--
 ...
 +For every fimc node a numbered alias should be present in the
 aliases node.
 +Aliases are of the form fimcn, wheren   is an integer (0...N)
 specifying
 +the IP's instance index.

 Why? Isn't it up to the DT author whether they care if each fimc
 node is
 assigned a specific identification v.s. whether identification is
 assigned automatically?

 There are at least three different kinds of IPs that come in multiple
 instances in an SoC. To activate data links between them each instance
 needs to be clearly identified. There are also differences between
 instances of same device. Hence it's important these aliases don't have
 random values.

 Some more details about the SoC can be found at [1]. The aliases are
 also already used in the Exynos5 GScaler bindings [2] in a similar way.

 Hmmm. I'd expect explicit DT properties to represent the
 instance-specific configuration, or even different compatible values.
 Relying on the alias ID seems rather indirect; what if in e.g.
 Exynos6/... the mapping from instance/alias ID to feature set changes.
 With explicit DT properties, that'd just be a .dts change, whereas by
 requiring alias IDs now, you'd need a driver change to support this.
 
 In the initial version of this patch series I used cell-index property,
 but then Grant pointed out in some other mail thread it should be
 avoided. Hence I used the node aliases.

To me, using cell-index is semantically equivalent to using the alias ID.

 Different compatible values might not work, when for example there
 are 3 IPs out of 4 of one type and the fourth one of another type.
 It wouldn't even by really different types, just quirks/little
 differences between them, e.g. no data path routed to one of other IPs.

I was thinking of using feature-/quirk-oriented properties. For example,
if there's a port on 3 of the 4 devices to connect to some other IP
block, simply include a boolean property to indicate whether that port
is present. It would be in 3 of the nodes but not the 4th.

 Then to connect e.g. MIPI-CSIS.0 to FIMC.2 at run time an index of the
 MIPI-CSIS needs to be written to the FIMC.2 data input control register.
 Even though MIPI-CSIS.N are same in terms of hardware structure they still
 need to be distinguished as separate instances.

Oh, so you're using the alias ID as the value to write into the FIMC.2
register for that. I'm not 100% familiar with aliases, but they seem
like a more user-oriented naming thing to me, whereas values for hooking
up intra-SoC routing are an unrelated namespace semantically, even if
the values happen to line up right now. Perhaps rather than a Boolean
property I mentioned above, use a custom property to indicate the ID
that the FIMC.2 object knows the MIPI-CSIS.0 object as? While this seems
similar to using cell-index, my *guess* is that Grant's objection to
using cell-index was more based on re-using cell-index for something
other than its intended purpose than pushing you to use an alias ID
rather than a property.

After all, what happens in some later SoC where you have two different
types of module that feed into the common module, such that type A
sources have IDs 0..3 in the common module, and type B sources have IDs
4..7 in the common module - you wouldn't want to require alias ISs 4..7
for the type B DT nodes.
--
To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 02/10] s5p-fimc: Add device tree support for FIMC devices

2013-02-06 Thread Stephen Warren
On 02/01/2013 12:09 PM, Sylwester Nawrocki wrote:
 This patch adds support for FIMC devices instantiated from devicetree
 for S5PV210 and Exynos4 SoCs. The FIMC IP features include colorspace
 conversion and scaling (mem-to-mem) and parallel/MIPI CSI2 bus video
 capture interface.
 
 Multiple SoC revisions specific parameters are defined statically in
 the driver and are used for both dt and non-dt. The driver's static
 data is selected based on the compatible property. Previously the
 platform device name was used to match driver data and a specific
 SoC/IP version.
 
 Aliases are used to determine an index of the IP which is essential
 for linking FIMC IP with other entities, like MIPI-CSIS (the MIPI
 CSI-2 bus frontend) or FIMC-LITE and FIMC-IS ISP.

 diff --git a/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt 
 b/Documentation/devicetree/bindings/media/soc/samsung-fimc.txt

 +Samsung S5P/EXYNOS SoC Camera Subsystem (FIMC)
 +--
 +
 +The Exynos Camera subsystem comprises of multiple sub-devices that are
 +represented by separate platform devices. Some of the IPs come in different

platform devices is a rather Linux-centric term, and DT bindings
should be OS-agnostic. Perhaps use device tree nodes here?

 +variants across the SoC revisions (FIMC) and some remain mostly unchanged
 +(MIPI CSIS, FIMC-LITE).
 +
 +All those sub-subdevices are defined as parent nodes of the common device

s/parent nodes/child node/ I think?

 +For every fimc node a numbered alias should be present in the aliases node.
 +Aliases are of the form fimcn, where n is an integer (0...N) specifying
 +the IP's instance index.

Why? Isn't it up to the DT author whether they care if each fimc node is
assigned a specific identification v.s. whether identification is
assigned automatically?

 +Optional properties
 +
 + - clock-frequency - maximum FIMC local clock (LCLK) frequency

Again, I'd expect a clocks property here instead.
--
To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html