diff mbox

gpu: host1x: Add MIPI pad calibration DT bindings

Message ID 1385990934-20809-1-git-send-email-treding@nvidia.com
State Not Applicable, archived
Delegated to: Stephen Warren
Headers show

Commit Message

Thierry Reding Dec. 2, 2013, 1:28 p.m. UTC
Introduce device tree bindings for the MIPI pad calibration controller
found on Tegra SoCs. The controller can be used to perform calibration
of pads used for DSI and CSI peripherals.

Signed-off-by: Thierry Reding <treding@nvidia.com>
---
 .../bindings/misc/nvidia,tegra114-mipi.txt         | 37 ++++++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt

Comments

Kumar Gala Dec. 2, 2013, 5:38 p.m. UTC | #1
On Dec 2, 2013, at 7:28 AM, Thierry Reding <thierry.reding@gmail.com> wrote:

> Introduce device tree bindings for the MIPI pad calibration controller
> found on Tegra SoCs. The controller can be used to perform calibration
> of pads used for DSI and CSI peripherals.
> 
> Signed-off-by: Thierry Reding <treding@nvidia.com>
> ---
> .../bindings/misc/nvidia,tegra114-mipi.txt         | 37 ++++++++++++++++++++++

Should this just be nvidia,tegra-mipi.txt (as you have it supported for tegra<chip>)?

> 1 file changed, 37 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt

Is this really pad control or pin?  I ask as its rare to see pad control.

> 
> diff --git a/Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt b/Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt
> new file mode 100644
> index 000000000000..beb75ec7f6fc
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt
> @@ -0,0 +1,37 @@
> +NVIDIA Tegra MIPI pad calibration controller
> +
> +Required properties:
> +- compatible: "nvidia,tegra<chip>-mipi"
> +- reg: Physical base address and length of the controller's registers.
> +- clocks: The clock consumed by the controller.
> +- #nvidia,mipi-calibrate-cells: Should be 1. The cell is a bitmask of the pads
> +  that need to be calibrated for a given device.

Is there a case that this would not be set to 1?  If so, why bother with the property right now?  One would assume for a non-1 case a new compatible will be required anyways.

> +
> +User nodes need to contain an nvidia,mipi-calibrate property that has a
> +phandle to refer to the calibration controller node and a bitmask of the pads
> +that need to be calibrated.
> +
> +Example:
> +
> +	mipi: mipi@700e3000 {
> +		compatible = "nvidia,tegra114-mipi";
> +		reg = <0x700e3000 0x100>;
> +		clocks = <&tegra_car TEGRA114_CLK_MIPI_CAL>;
> +		#nvidia,mipi-calibrate-cells = <1>;
> +	};
> +
> +	...
> +
> +	host1x@50000000 {
> +		...
> +
> +		dsi@54300000 {
> +			...
> +
> +			nvidia,mipi-calibrate = <&mipi 0x060>;
> +
> +			...
> +		};
> +
> +		...
> +	};
> -- 
> 1.8.4.2
> 
> --
> 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
Thierry Reding Dec. 2, 2013, 9:17 p.m. UTC | #2
On Mon, Dec 02, 2013 at 11:38:59AM -0600, Kumar Gala wrote:
> 
> On Dec 2, 2013, at 7:28 AM, Thierry Reding <thierry.reding@gmail.com> wrote:
> 
> > Introduce device tree bindings for the MIPI pad calibration controller
> > found on Tegra SoCs. The controller can be used to perform calibration
> > of pads used for DSI and CSI peripherals.
> > 
> > Signed-off-by: Thierry Reding <treding@nvidia.com>
> > ---
> > .../bindings/misc/nvidia,tegra114-mipi.txt         | 37 ++++++++++++++++++++++
> 
> Should this just be nvidia,tegra-mipi.txt (as you have it supported
> for tegra<chip>)?

Tegra114 is the first chip to support it. Subsequent chips should be
backwards-compatible. But it's probably safer to change the compatible
property documentation to only include nvidia,tegra114-mipi for now.
Newer SoC generations can always be added when support for them is
added.

> > 1 file changed, 37 insertions(+)
> > create mode 100644 Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt
> 
> Is this really pad control or pin?  I ask as its rare to see pad control.

It's not really control at all. Rather it is a hardware block that
performs calibration to obtain the optimal parameters for a given set of
pads.

Since you mention it, is there a better location for this file? I
couldn't find anything that matched, so I just put it here. I suppose I
could add it to Documentation/devicetree/bindings/gpu where the rest of
the bindings reside for the Tegra GPU, but this block is also used by
CSI, which is a capture interface and not really related to the GPU at
all.

> > diff --git a/Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt b/Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt
> > new file mode 100644
> > index 000000000000..beb75ec7f6fc
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt
> > @@ -0,0 +1,37 @@
> > +NVIDIA Tegra MIPI pad calibration controller
> > +
> > +Required properties:
> > +- compatible: "nvidia,tegra<chip>-mipi"
> > +- reg: Physical base address and length of the controller's registers.
> > +- clocks: The clock consumed by the controller.
> > +- #nvidia,mipi-calibrate-cells: Should be 1. The cell is a bitmask of the pads
> > +  that need to be calibrated for a given device.
> 
> Is there a case that this would not be set to 1?  If so, why bother
> with the property right now?  One would assume for a non-1 case a new
> compatible will be required anyways.

There is no such case now, and I'm not aware of a future chip that has
more than 32 pads and would therefore require this to be anything other
than 1.

However having this property allows the DT to be parsed without specific
knowledge about the hardware block. If this was implied by the value of
the compatible property, a generic parser wouldn't know how to interpret
the data.

A schema validator wouldn't be able to check that the content was
correct either.

Thierry
Thierry Reding Dec. 3, 2013, 9:52 a.m. UTC | #3
On Mon, Dec 02, 2013 at 02:28:54PM +0100, Thierry Reding wrote:
[...]
> +	host1x@50000000 {
> +		...
> +
> +		dsi@54300000 {
> +			...
> +
> +			nvidia,mipi-calibrate = <&mipi 0x060>;

I just occurred to me that perhaps having a list of pad indices here
would be easier to write and parse than a bitmask. So alternatively this
could be:

			nvidia,mipi-calibrate = <&mipi 5>, <&mipi 6>;

Thierry
Stephen Warren Dec. 3, 2013, 8:17 p.m. UTC | #4
On 12/02/2013 06:28 AM, Thierry Reding wrote:
> Introduce device tree bindings for the MIPI pad calibration controller
> found on Tegra SoCs. The controller can be used to perform calibration
> of pads used for DSI and CSI peripherals.

> diff --git a/Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt b/Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt

> +Required properties:
> +- compatible: "nvidia,tegra<chip>-mipi"
> +- reg: Physical base address and length of the controller's registers.
> +- clocks: The clock consumed by the controller.

I'd prefer all our new drivers just use clock-names from the start, so
we never have to specify that certain clocks must be at a certain index
in the clocks property. How about:

+  - clocks: Must contain an entry for each entry in clock-names.
+    See ../clocks/clock-bindings.txt for details.
+  - clock-names: Must include the following entries:
+    - mipi

(or "cal" or whatever makes sense there)
--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Thierry Reding Dec. 4, 2013, 9:42 a.m. UTC | #5
On Tue, Dec 03, 2013 at 01:17:20PM -0700, Stephen Warren wrote:
> On 12/02/2013 06:28 AM, Thierry Reding wrote:
> > Introduce device tree bindings for the MIPI pad calibration controller
> > found on Tegra SoCs. The controller can be used to perform calibration
> > of pads used for DSI and CSI peripherals.
> 
> > diff --git a/Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt b/Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt
> 
> > +Required properties:
> > +- compatible: "nvidia,tegra<chip>-mipi"
> > +- reg: Physical base address and length of the controller's registers.
> > +- clocks: The clock consumed by the controller.
> 
> I'd prefer all our new drivers just use clock-names from the start, so
> we never have to specify that certain clocks must be at a certain index
> in the clocks property. How about:
> 
> +  - clocks: Must contain an entry for each entry in clock-names.
> +    See ../clocks/clock-bindings.txt for details.
> +  - clock-names: Must include the following entries:
> +    - mipi
> 
> (or "cal" or whatever makes sense there)

"mipi-cal" sounds like a good name. That's also what the clock is
called in the TRM.

I'll repost with this fixed up and I'll move this file into the mipi
subdirectory that I need for the MIPI DSI DT bindings anyway.

Thierry
diff mbox

Patch

diff --git a/Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt b/Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt
new file mode 100644
index 000000000000..beb75ec7f6fc
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/nvidia,tegra114-mipi.txt
@@ -0,0 +1,37 @@ 
+NVIDIA Tegra MIPI pad calibration controller
+
+Required properties:
+- compatible: "nvidia,tegra<chip>-mipi"
+- reg: Physical base address and length of the controller's registers.
+- clocks: The clock consumed by the controller.
+- #nvidia,mipi-calibrate-cells: Should be 1. The cell is a bitmask of the pads
+  that need to be calibrated for a given device.
+
+User nodes need to contain an nvidia,mipi-calibrate property that has a
+phandle to refer to the calibration controller node and a bitmask of the pads
+that need to be calibrated.
+
+Example:
+
+	mipi: mipi@700e3000 {
+		compatible = "nvidia,tegra114-mipi";
+		reg = <0x700e3000 0x100>;
+		clocks = <&tegra_car TEGRA114_CLK_MIPI_CAL>;
+		#nvidia,mipi-calibrate-cells = <1>;
+	};
+
+	...
+
+	host1x@50000000 {
+		...
+
+		dsi@54300000 {
+			...
+
+			nvidia,mipi-calibrate = <&mipi 0x060>;
+
+			...
+		};
+
+		...
+	};