diff options
Diffstat (limited to 'Documentation/devicetree')
657 files changed, 22630 insertions, 3412 deletions
diff --git a/Documentation/devicetree/00-INDEX b/Documentation/devicetree/00-INDEX index b78f691fd84..8c4102c6a5e 100644 --- a/Documentation/devicetree/00-INDEX +++ b/Documentation/devicetree/00-INDEX @@ -8,3 +8,5 @@ https://lists.ozlabs.org/listinfo/devicetree-discuss  	- this file  booting-without-of.txt  	- Booting Linux without Open Firmware, describes history and format of device trees. +usage-model.txt +	- How Linux uses DT and what DT aims to solve.
\ No newline at end of file diff --git a/Documentation/devicetree/bindings/ABI.txt b/Documentation/devicetree/bindings/ABI.txt new file mode 100644 index 00000000000..d25f8d37968 --- /dev/null +++ b/Documentation/devicetree/bindings/ABI.txt @@ -0,0 +1,39 @@ + +  Devicetree (DT) ABI + +I. Regarding stable bindings/ABI, we quote from the 2013 ARM mini-summit +   summary document: + +     "That still leaves the question of, what does a stable binding look +     like?  Certainly a stable binding means that a newer kernel will not +     break on an older device tree, but that doesn't mean the binding is +     frozen for all time. Grant said there are ways to change bindings that +     don't result in breakage. For instance, if a new property is added, +     then default to the previous behaviour if it is missing. If a binding +     truly needs an incompatible change, then change the compatible string +     at the same time.  The driver can bind against both the old and the +     new. These guidelines aren't new, but they desperately need to be +     documented." + +II.  General binding rules + +  1) Maintainers, don't let perfect be the enemy of good.  Don't hold up a +     binding because it isn't perfect. + +  2) Use specific compatible strings so that if we need to add a feature (DMA) +     in the future, we can create a new compatible string.  See I. + +  3) Bindings can be augmented, but the driver shouldn't break when given +     the old binding. ie. add additional properties, but don't change the +     meaning of an existing property. For drivers, default to the original +     behaviour when a newly added property is missing. + +  4) Don't submit bindings for staging or unstable.  That will be decided by +     the devicetree maintainers *after* discussion on the mailinglist. + +III. Notes + +  1) This document is intended as a general familiarization with the process as +     decided at the 2013 Kernel Summit.  When in doubt, the current word of the +     devicetree maintainers overrules this document.  In that situation, a patch +     updating this document would be appreciated. diff --git a/Documentation/devicetree/bindings/arc/pmu.txt b/Documentation/devicetree/bindings/arc/pmu.txt new file mode 100644 index 00000000000..49d517340de --- /dev/null +++ b/Documentation/devicetree/bindings/arc/pmu.txt @@ -0,0 +1,24 @@ +* ARC Performance Monitor Unit + +The ARC 700 can be configured with a pipeline performance monitor for counting +CPU and cache events like cache misses and hits. + +Note that: + * ARC 700 refers to a family of ARC processor cores; +   - There is only one type of PMU available for the whole family; +   - The PMU may support different sets of events; supported events are probed +     at boot time, as required by the reference manual. + + * The ARC 700 PMU does not support interrupts; although HW events may be +   counted, the HW events themselves cannot serve as a trigger for a sample. + +Required properties: + +- compatible : should contain +	"snps,arc700-pmu" + +Example: + +pmu { +        compatible = "snps,arc700-pmu"; +}; diff --git a/Documentation/devicetree/bindings/arm/arch_timer.txt b/Documentation/devicetree/bindings/arm/arch_timer.txt index 06fc7602593..37b2cafa4e5 100644 --- a/Documentation/devicetree/bindings/arm/arch_timer.txt +++ b/Documentation/devicetree/bindings/arm/arch_timer.txt @@ -19,6 +19,9 @@ to deliver its interrupts via SPIs.  - clock-frequency : The frequency of the main counter, in Hz. Optional. +- always-on : a boolean property. If present, the timer is powered through an +  always-on power domain, therefore it never loses context. +  Example:  	timer { diff --git a/Documentation/devicetree/bindings/arm/arm-boards b/Documentation/devicetree/bindings/arm/arm-boards index db5858e32d3..3509707f932 100644 --- a/Documentation/devicetree/bindings/arm/arm-boards +++ b/Documentation/devicetree/bindings/arm/arm-boards @@ -9,9 +9,61 @@ Required properties (in root node):  FPGA type interrupt controllers, see the versatile-fpga-irq binding doc. -In the root node the Integrator/CP must have a /cpcon node pointing -to the CP control registers, and the Integrator/AP must have a -/syscon node pointing to the Integrator/AP system controller. +Required nodes: + +- core-module: the root node to the Integrator platforms must have +  a core-module with regs and the compatible string +  "arm,core-module-integrator" +- external-bus-interface: the root node to the Integrator platforms +  must have an external bus interface with regs and the +  compatible-string "arm,external-bus-interface" + +  Required properties for the core module: +  - regs: the location and size of the core module registers, one +    range of 0x200 bytes. + +- syscon: the root node of the Integrator platforms must have a +  system controller node pointong to the control registers, +  with the compatible string +  "arm,integrator-ap-syscon" +  "arm,integrator-cp-syscon" +  respectively. + +  Required properties for the system controller: +  - regs: the location and size of the system controller registers, +    one range of 0x100 bytes. + +  Required properties for the AP system controller: +  - interrupts: the AP syscon node must include the logical module +    interrupts, stated in order of module instance <module 0>, +    <module 1>, <module 2> ... for the CP system controller this +    is not required not of any use. + +/dts-v1/; +/include/ "integrator.dtsi" + +/ { +	model = "ARM Integrator/AP"; +	compatible = "arm,integrator-ap"; + +	core-module@10000000 { +		compatible = "arm,core-module-integrator"; +		reg = <0x10000000 0x200>; +	}; + +	ebi@12000000 { +		compatible = "arm,external-bus-interface"; +		reg = <0x12000000 0x100>; +	}; + +	syscon { +		compatible = "arm,integrator-ap-syscon"; +		reg = <0x11000000 0x100>; +		interrupt-parent = <&pic>; +		/* These are the logic module IRQs */ +		interrupts = <9>, <10>, <11>, <12>; +	}; +};  ARM Versatile Application and Platform Baseboards diff --git a/Documentation/devicetree/bindings/arm/armada-370-xp-pmsu.txt b/Documentation/devicetree/bindings/arm/armada-370-xp-pmsu.txt index 926b4d6aae7..26799ef562d 100644 --- a/Documentation/devicetree/bindings/arm/armada-370-xp-pmsu.txt +++ b/Documentation/devicetree/bindings/arm/armada-370-xp-pmsu.txt @@ -1,20 +1,21 @@  Power Management Service Unit(PMSU)  ----------------------------------- -Available on Marvell SOCs: Armada 370 and Armada XP +Available on Marvell SOCs: Armada 370, Armada 38x and Armada XP  Required properties: -- compatible: "marvell,armada-370-xp-pmsu" +- compatible: should be one of: +  - "marvell,armada-370-pmsu" for Armada 370 or Armada XP +  - "marvell,armada-380-pmsu" for Armada 38x +  - "marvell,armada-370-xp-pmsu" was used for Armada 370/XP but is now +    deprecated and will be removed -- reg: Should contain PMSU registers location and length. First pair -  for the per-CPU SW Reset Control registers, second pair for the -  Power Management Service Unit. +- reg: Should contain PMSU registers location and length.  Example: -armada-370-xp-pmsu@d0022000 { -	compatible = "marvell,armada-370-xp-pmsu"; -	reg = <0xd0022100 0x430>, -	      <0xd0020800 0x20>; +armada-370-xp-pmsu@22000 { +	compatible = "marvell,armada-370-pmsu"; +	reg = <0x22000 0x1000>;  }; diff --git a/Documentation/devicetree/bindings/arm/armada-375.txt b/Documentation/devicetree/bindings/arm/armada-375.txt new file mode 100644 index 00000000000..867d0b80cb8 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/armada-375.txt @@ -0,0 +1,9 @@ +Marvell Armada 375 Platforms Device Tree Bindings +------------------------------------------------- + +Boards with a SoC of the Marvell Armada 375 family shall have the +following property: + +Required root node property: + +compatible: must contain "marvell,armada375" diff --git a/Documentation/devicetree/bindings/arm/armada-38x.txt b/Documentation/devicetree/bindings/arm/armada-38x.txt new file mode 100644 index 00000000000..ad9f8ed4d9b --- /dev/null +++ b/Documentation/devicetree/bindings/arm/armada-38x.txt @@ -0,0 +1,20 @@ +Marvell Armada 38x Platforms Device Tree Bindings +------------------------------------------------- + +Boards with a SoC of the Marvell Armada 38x family shall have the +following property: + +Required root node property: + + - compatible: must contain "marvell,armada380" + +In addition, boards using the Marvell Armada 385 SoC shall have the +following property before the previous one: + +Required root node property: + +compatible: must contain "marvell,armada385" + +Example: + +compatible = "marvell,a385-rd", "marvell,armada385", "marvell,armada380"; diff --git a/Documentation/devicetree/bindings/arm/armada-cpu-reset.txt b/Documentation/devicetree/bindings/arm/armada-cpu-reset.txt new file mode 100644 index 00000000000..b63a7b6ab99 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/armada-cpu-reset.txt @@ -0,0 +1,14 @@ +Marvell Armada CPU reset controller +=================================== + +Required properties: + +- compatible: Should be "marvell,armada-370-cpu-reset". + +- reg: should be register base and length as documented in the +  datasheet for the CPU reset registers + +cpurst: cpurst@20800 { +       compatible = "marvell,armada-370-cpu-reset"; +       reg = <0x20800 0x20>; +}; diff --git a/Documentation/devicetree/bindings/arm/atmel-aic.txt b/Documentation/devicetree/bindings/arm/atmel-aic.txt index ad031211b5b..2742e9cfd6b 100644 --- a/Documentation/devicetree/bindings/arm/atmel-aic.txt +++ b/Documentation/devicetree/bindings/arm/atmel-aic.txt @@ -2,6 +2,7 @@  Required properties:  - compatible: Should be "atmel,<chip>-aic" +  <chip> can be "at91rm9200" or "sama5d3"  - interrupt-controller: Identifies the node as an interrupt controller.  - interrupt-parent: For single AIC system, it is an empty property.  - #interrupt-cells: The number of cells to define the interrupts. It should be 3. diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt index 1196290082d..16f60b41c14 100644 --- a/Documentation/devicetree/bindings/arm/atmel-at91.txt +++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt @@ -20,6 +20,10 @@ TC/TCLIB Timer required properties:  - interrupts: Should contain all interrupts for the TC block    Note that you can specify several interrupt cells if the TC    block has one interrupt per channel. +- clock-names: tuple listing input clock names. +	Required elements: "t0_clk" +	Optional elements: "t1_clk", "t2_clk" +- clocks: phandles to input clocks.  Examples: @@ -28,6 +32,8 @@ One interrupt per TC block:  		compatible = "atmel,at91rm9200-tcb";  		reg = <0xfff7c000 0x100>;  		interrupts = <18 4>; +		clocks = <&tcb0_clk>; +		clock-names = "t0_clk";  	};  One interrupt per TC channel in a TC block: @@ -35,6 +41,8 @@ One interrupt per TC channel in a TC block:  		compatible = "atmel,at91rm9200-tcb";  		reg = <0xfffdc000 0x100>;  		interrupts = <26 4 27 4 28 4>; +		clocks = <&tcb1_clk>; +		clock-names = "t0_clk";  	};  RSTC Reset Controller required properties: @@ -50,7 +58,8 @@ Example:  	};  RAMC SDRAM/DDR Controller required properties: -- compatible: Should be "atmel,at91sam9260-sdramc", +- compatible: Should be "atmel,at91rm9200-sdramc", +			"atmel,at91sam9260-sdramc",  			"atmel,at91sam9g45-ddramc",  - reg: Should contain registers location and length    For at91sam9263 and at91sam9g45 you must specify 2 entries. diff --git a/Documentation/devicetree/bindings/arm/axxia.txt b/Documentation/devicetree/bindings/arm/axxia.txt new file mode 100644 index 00000000000..7b4ef9c0769 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/axxia.txt @@ -0,0 +1,12 @@ +Axxia AXM55xx device tree bindings + +Boards using the AXM55xx SoC need to have the following properties: + +Required root node property: + +  - compatible = "lsi,axm5516" + +Boards: + +  LSI AXM5516 Validation board (Amarillo) +	compatible = "lsi,axm5516-amarillo", "lsi,axm5516" diff --git a/Documentation/devicetree/bindings/arm/bcm/bcm21664.txt b/Documentation/devicetree/bindings/arm/bcm/bcm21664.txt new file mode 100644 index 00000000000..e0774255e1a --- /dev/null +++ b/Documentation/devicetree/bindings/arm/bcm/bcm21664.txt @@ -0,0 +1,15 @@ +Broadcom BCM21664 device tree bindings +-------------------------------------- + +This document describes the device tree bindings for boards with the BCM21664 +SoC. + +Required root node property: +  - compatible: brcm,bcm21664 + +Example: +	/ { +		model = "BCM21664 SoC"; +		compatible = "brcm,bcm21664"; +		[...] +	} diff --git a/Documentation/devicetree/bindings/arm/bcm/kona-resetmgr.txt b/Documentation/devicetree/bindings/arm/bcm/kona-resetmgr.txt new file mode 100644 index 00000000000..93f31ca1ef4 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/bcm/kona-resetmgr.txt @@ -0,0 +1,14 @@ +Broadcom Kona Family Reset Manager +---------------------------------- + +The reset manager is used on the Broadcom BCM21664 SoC. + +Required properties: +  - compatible: brcm,bcm21664-resetmgr +  - reg: memory address & range + +Example: +	brcm,resetmgr@35001f00 { +		compatible = "brcm,bcm21664-resetmgr"; +		reg = <0x35001f00 0x24>; +	}; diff --git a/Documentation/devicetree/bindings/arm/bcm/kona-timer.txt b/Documentation/devicetree/bindings/arm/bcm/kona-timer.txt index 17d88b233d1..39adf54b438 100644 --- a/Documentation/devicetree/bindings/arm/bcm/kona-timer.txt +++ b/Documentation/devicetree/bindings/arm/bcm/kona-timer.txt @@ -8,13 +8,18 @@ Required properties:  - DEPRECATED: compatible : "bcm,kona-timer"  - reg : Register range for the timer  - interrupts : interrupt for the timer +- clocks: phandle + clock specifier pair of the external clock  - clock-frequency: frequency that the clock operates +Only one of clocks or clock-frequency should be specified. + +Refer to clocks/clock-bindings.txt for generic clock consumer properties. +  Example:  	timer@35006000 {  		compatible = "brcm,kona-timer";  		reg = <0x35006000 0x1000>;  		interrupts = <0x0 7 0x4>; -		clock-frequency = <32768>; +		clocks = <&hub_timer_clk>;  	}; diff --git a/Documentation/devicetree/bindings/arm/bcm4708.txt b/Documentation/devicetree/bindings/arm/bcm4708.txt new file mode 100644 index 00000000000..6b0f49f6f49 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/bcm4708.txt @@ -0,0 +1,8 @@ +Broadcom BCM4708 device tree bindings +------------------------------------------- + +Boards with the BCM4708 SoC shall have the following properties: + +Required root node property: + +compatible = "brcm,bcm4708"; diff --git a/Documentation/devicetree/bindings/arm/calxeda/mem-ctrlr.txt b/Documentation/devicetree/bindings/arm/calxeda/mem-ctrlr.txt index f770ac0893d..049675944b7 100644 --- a/Documentation/devicetree/bindings/arm/calxeda/mem-ctrlr.txt +++ b/Documentation/devicetree/bindings/arm/calxeda/mem-ctrlr.txt @@ -1,7 +1,9 @@  Calxeda DDR memory controller  Properties: -- compatible : Should be "calxeda,hb-ddr-ctrl" +- compatible : Should be: +  - "calxeda,hb-ddr-ctrl" for ECX-1000 +  - "calxeda,ecx-2000-ddr-ctrl" for ECX-2000  - reg : Address and size for DDR controller registers.  - interrupts : Interrupt for DDR controller. diff --git a/Documentation/devicetree/bindings/arm/cci.txt b/Documentation/devicetree/bindings/arm/cci.txt index 92d36e2aa87..f28d82bbbc5 100644 --- a/Documentation/devicetree/bindings/arm/cci.txt +++ b/Documentation/devicetree/bindings/arm/cci.txt @@ -36,14 +36,18 @@ specific to ARM.  	- reg  		Usage: required -		Value type: <prop-encoded-array> +		Value type: Integer cells. A register entry, expressed as a pair +			    of cells, containing base and size.  		Definition: A standard property. Specifies base physical  			    address of CCI control registers common to all  			    interfaces.  	- ranges:  		Usage: required -		Value type: <prop-encoded-array> +		Value type: Integer cells. An array of range entries, expressed +			    as a tuple of cells, containing child address, +			    parent address and the size of the region in the +			    child address space.  		Definition: A standard property. Follow rules in the ePAPR for  			    hierarchical bus addressing. CCI interfaces  			    addresses refer to the parent node addressing @@ -74,11 +78,49 @@ specific to ARM.  		- reg:  			Usage: required -			Value type: <prop-encoded-array> +			Value type: Integer cells. A register entry, expressed +				    as a pair of cells, containing base and +				    size.  			Definition: the base address and size of the  				    corresponding interface programming  				    registers. +	- CCI PMU node + +		Parent node must be CCI interconnect node. + +		A CCI pmu node must contain the following properties: + +		- compatible +			Usage: required +			Value type: <string> +			Definition: must be "arm,cci-400-pmu" + +		- reg: +			Usage: required +			Value type: Integer cells. A register entry, expressed +				    as a pair of cells, containing base and +				    size. +			Definition: the base address and size of the +				    corresponding interface programming +				    registers. + +		- interrupts: +			Usage: required +			Value type: Integer cells. Array of interrupt specifier +				    entries, as defined in +				    ../interrupt-controller/interrupts.txt. +			Definition: list of counter overflow interrupts, one per +				    counter. The interrupts must be specified +				    starting with the cycle counter overflow +				    interrupt, followed by counter0 overflow +				    interrupt, counter1 overflow interrupt,... +				    ,counterN overflow interrupt. + +				    The CCI PMU has an interrupt signal for each +				    counter. The number of interrupts must be +				    equal to the number of counters. +  * CCI interconnect bus masters  	Description: masters in the device tree connected to a CCI port @@ -144,7 +186,7 @@ Example:  		#address-cells = <1>;  		#size-cells = <1>;  		reg = <0x0 0x2c090000 0 0x1000>; -		ranges = <0x0 0x0 0x2c090000 0x6000>; +		ranges = <0x0 0x0 0x2c090000 0x10000>;  		cci_control0: slave-if@1000 {  			compatible = "arm,cci-400-ctrl-if"; @@ -163,6 +205,16 @@ Example:  			interface-type = "ace";  			reg = <0x5000 0x1000>;  		}; + +		pmu@9000 { +			 compatible = "arm,cci-400-pmu"; +			 reg = <0x9000 0x5000>; +			 interrupts = <0 101 4>, +				      <0 102 4>, +				      <0 103 4>, +				      <0 104 4>, +				      <0 105 4>; +		};  	};  This CCI node corresponds to a CCI component whose control registers sits diff --git a/Documentation/devicetree/bindings/arm/coherency-fabric.txt b/Documentation/devicetree/bindings/arm/coherency-fabric.txt index 17d8cd10755..8dd46617c88 100644 --- a/Documentation/devicetree/bindings/arm/coherency-fabric.txt +++ b/Documentation/devicetree/bindings/arm/coherency-fabric.txt @@ -1,16 +1,33 @@  Coherency fabric  ---------------- -Available on Marvell SOCs: Armada 370 and Armada XP +Available on Marvell SOCs: Armada 370, Armada 375, Armada 38x and Armada XP  Required properties: -- compatible: "marvell,coherency-fabric" +- compatible: the possible values are: + + * "marvell,coherency-fabric", to be used for the coherency fabric of +   the Armada 370 and Armada XP. + + * "marvell,armada-375-coherency-fabric", for the Armada 375 coherency +   fabric. + + * "marvell,armada-380-coherency-fabric", for the Armada 38x coherency +   fabric.  - reg: Should contain coherency fabric registers location and -  length. First pair for the coherency fabric registers, second pair -  for the per-CPU fabric registers registers. +  length. + + * For "marvell,coherency-fabric", the first pair for the coherency +   fabric registers, second pair for the per-CPU fabric registers. -Example: + * For "marvell,armada-375-coherency-fabric", only one pair is needed +   for the per-CPU fabric registers. + + * For "marvell,armada-380-coherency-fabric", only one pair is needed +   for the per-CPU fabric registers. + +Examples:  coherency-fabric@d0020200 {  	compatible = "marvell,coherency-fabric"; @@ -19,3 +36,8 @@ coherency-fabric@d0020200 {  }; +coherency-fabric@21810 { +	compatible = "marvell,armada-375-coherency-fabric"; +	reg = <0x21810 0x1c>; +}; + diff --git a/Documentation/devicetree/bindings/arm/cpus.txt b/Documentation/devicetree/bindings/arm/cpus.txt index f32494dbfe1..1fe72a0778c 100644 --- a/Documentation/devicetree/bindings/arm/cpus.txt +++ b/Documentation/devicetree/bindings/arm/cpus.txt @@ -1,77 +1,413 @@ -* ARM CPUs binding description +================= +ARM CPUs bindings +=================  The device tree allows to describe the layout of CPUs in a system through  the "cpus" node, which in turn contains a number of subnodes (ie "cpu")  defining properties for every cpu. -Bindings for CPU nodes follow the ePAPR standard, available from: - -http://devicetree.org - -For the ARM architecture every CPU node must contain the following properties: - -- device_type:	must be "cpu" -- reg:		property matching the CPU MPIDR[23:0] register bits -		reg[31:24] bits must be set to 0 -- compatible:	should be one of: -		"arm,arm1020" -		"arm,arm1020e" -		"arm,arm1022" -		"arm,arm1026" -		"arm,arm720" -		"arm,arm740" -		"arm,arm7tdmi" -		"arm,arm920" -		"arm,arm922" -		"arm,arm925" -		"arm,arm926" -		"arm,arm940" -		"arm,arm946" -		"arm,arm9tdmi" -		"arm,cortex-a5" -		"arm,cortex-a7" -		"arm,cortex-a8" -		"arm,cortex-a9" -		"arm,cortex-a15" -		"arm,arm1136" -		"arm,arm1156" -		"arm,arm1176" -		"arm,arm11mpcore" -		"faraday,fa526" -		"intel,sa110" -		"intel,sa1100" -		"marvell,feroceon" -		"marvell,mohawk" -		"marvell,xsc3" -		"marvell,xscale" - -Example: +Bindings for CPU nodes follow the ePAPR v1.1 standard, available from: + +https://www.power.org/documentation/epapr-version-1-1/ + +with updates for 32-bit and 64-bit ARM systems provided in this document. + +================================ +Convention used in this document +================================ + +This document follows the conventions described in the ePAPR v1.1, with +the addition: + +- square brackets define bitfields, eg reg[7:0] value of the bitfield in +  the reg property contained in bits 7 down to 0 + +===================================== +cpus and cpu node bindings definition +===================================== + +The ARM architecture, in accordance with the ePAPR, requires the cpus and cpu +nodes to be present and contain the properties described below. + +- cpus node + +	Description: Container of cpu nodes + +	The node name must be "cpus". + +	A cpus node must define the following properties: + +	- #address-cells +		Usage: required +		Value type: <u32> + +		Definition depends on ARM architecture version and +		configuration: + +			# On uniprocessor ARM architectures previous to v7 +			  value must be 1, to enable a simple enumeration +			  scheme for processors that do not have a HW CPU +			  identification register. +			# On 32-bit ARM 11 MPcore, ARM v7 or later systems +			  value must be 1, that corresponds to CPUID/MPIDR +			  registers sizes. +			# On ARM v8 64-bit systems value should be set to 2, +			  that corresponds to the MPIDR_EL1 register size. +			  If MPIDR_EL1[63:32] value is equal to 0 on all CPUs +			  in the system, #address-cells can be set to 1, since +			  MPIDR_EL1[63:32] bits are not used for CPUs +			  identification. +	- #size-cells +		Usage: required +		Value type: <u32> +		Definition: must be set to 0 + +- cpu node + +	Description: Describes a CPU in an ARM based system + +	PROPERTIES + +	- device_type +		Usage: required +		Value type: <string> +		Definition: must be "cpu" +	- reg +		Usage and definition depend on ARM architecture version and +		configuration: + +			# On uniprocessor ARM architectures previous to v7 +			  this property is required and must be set to 0. + +			# On ARM 11 MPcore based systems this property is +			  required and matches the CPUID[11:0] register bits. + +			  Bits [11:0] in the reg cell must be set to +			  bits [11:0] in CPU ID register. + +			  All other bits in the reg cell must be set to 0. + +			# On 32-bit ARM v7 or later systems this property is +			  required and matches the CPU MPIDR[23:0] register +			  bits. + +			  Bits [23:0] in the reg cell must be set to +			  bits [23:0] in MPIDR. + +			  All other bits in the reg cell must be set to 0. + +			# On ARM v8 64-bit systems this property is required +			  and matches the MPIDR_EL1 register affinity bits. + +			  * If cpus node's #address-cells property is set to 2 + +			    The first reg cell bits [7:0] must be set to +			    bits [39:32] of MPIDR_EL1. + +			    The second reg cell bits [23:0] must be set to +			    bits [23:0] of MPIDR_EL1. + +			  * If cpus node's #address-cells property is set to 1 + +			    The reg cell bits [23:0] must be set to bits [23:0] +			    of MPIDR_EL1. + +			  All other bits in the reg cells must be set to 0. + +	- compatible: +		Usage: required +		Value type: <string> +		Definition: should be one of: +			    "arm,arm710t" +			    "arm,arm720t" +			    "arm,arm740t" +			    "arm,arm7ej-s" +			    "arm,arm7tdmi" +			    "arm,arm7tdmi-s" +			    "arm,arm9es" +			    "arm,arm9ej-s" +			    "arm,arm920t" +			    "arm,arm922t" +			    "arm,arm925" +			    "arm,arm926e-s" +			    "arm,arm926ej-s" +			    "arm,arm940t" +			    "arm,arm946e-s" +			    "arm,arm966e-s" +			    "arm,arm968e-s" +			    "arm,arm9tdmi" +			    "arm,arm1020e" +			    "arm,arm1020t" +			    "arm,arm1022e" +			    "arm,arm1026ej-s" +			    "arm,arm1136j-s" +			    "arm,arm1136jf-s" +			    "arm,arm1156t2-s" +			    "arm,arm1156t2f-s" +			    "arm,arm1176jzf" +			    "arm,arm1176jz-s" +			    "arm,arm1176jzf-s" +			    "arm,arm11mpcore" +			    "arm,cortex-a5" +			    "arm,cortex-a7" +			    "arm,cortex-a8" +			    "arm,cortex-a9" +			    "arm,cortex-a15" +			    "arm,cortex-a53" +			    "arm,cortex-a57" +			    "arm,cortex-m0" +			    "arm,cortex-m0+" +			    "arm,cortex-m1" +			    "arm,cortex-m3" +			    "arm,cortex-m4" +			    "arm,cortex-r4" +			    "arm,cortex-r5" +			    "arm,cortex-r7" +			    "faraday,fa526" +			    "intel,sa110" +			    "intel,sa1100" +			    "marvell,feroceon" +			    "marvell,mohawk" +			    "marvell,pj4a" +			    "marvell,pj4b" +			    "marvell,sheeva-v5" +			    "qcom,krait" +			    "qcom,scorpion" +	- enable-method +		Value type: <stringlist> +		Usage and definition depend on ARM architecture version. +			# On ARM v8 64-bit this property is required and must +			  be one of: +			     "psci" +			     "spin-table" +			# On ARM 32-bit systems this property is optional and +			  can be one of: +			    "allwinner,sun6i-a31" +			    "arm,psci" +			    "marvell,armada-375-smp" +			    "marvell,armada-380-smp" +			    "marvell,armada-xp-smp" +			    "qcom,gcc-msm8660" +			    "qcom,kpss-acc-v1" +			    "qcom,kpss-acc-v2" +			    "rockchip,rk3066-smp" + +	- cpu-release-addr +		Usage: required for systems that have an "enable-method" +		       property value of "spin-table". +		Value type: <prop-encoded-array> +		Definition: +			# On ARM v8 64-bit systems must be a two cell +			  property identifying a 64-bit zero-initialised +			  memory location. + +	- qcom,saw +		Usage: required for systems that have an "enable-method" +		       property value of "qcom,kpss-acc-v1" or +		       "qcom,kpss-acc-v2" +		Value type: <phandle> +		Definition: Specifies the SAW[1] node associated with this CPU. + +	- qcom,acc +		Usage: required for systems that have an "enable-method" +		       property value of "qcom,kpss-acc-v1" or +		       "qcom,kpss-acc-v2" +		Value type: <phandle> +		Definition: Specifies the ACC[2] node associated with this CPU. + + +Example 1 (dual-cluster big.LITTLE system 32-bit):  	cpus {  		#size-cells = <0>;  		#address-cells = <1>; -		CPU0: cpu@0 { +		cpu@0 {  			device_type = "cpu";  			compatible = "arm,cortex-a15";  			reg = <0x0>;  		}; -		CPU1: cpu@1 { +		cpu@1 {  			device_type = "cpu";  			compatible = "arm,cortex-a15";  			reg = <0x1>;  		}; -		CPU2: cpu@100 { +		cpu@100 {  			device_type = "cpu";  			compatible = "arm,cortex-a7";  			reg = <0x100>;  		}; -		CPU3: cpu@101 { +		cpu@101 {  			device_type = "cpu";  			compatible = "arm,cortex-a7";  			reg = <0x101>;  		};  	}; + +Example 2 (Cortex-A8 uniprocessor 32-bit system): + +	cpus { +		#size-cells = <0>; +		#address-cells = <1>; + +		cpu@0 { +			device_type = "cpu"; +			compatible = "arm,cortex-a8"; +			reg = <0x0>; +		}; +	}; + +Example 3 (ARM 926EJ-S uniprocessor 32-bit system): + +	cpus { +		#size-cells = <0>; +		#address-cells = <1>; + +		cpu@0 { +			device_type = "cpu"; +			compatible = "arm,arm926ej-s"; +			reg = <0x0>; +		}; +	}; + +Example 4 (ARM Cortex-A57 64-bit system): + +cpus { +	#size-cells = <0>; +	#address-cells = <2>; + +	cpu@0 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x0>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	cpu@1 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x1>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	cpu@100 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x100>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	cpu@101 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x101>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	cpu@10000 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x10000>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	cpu@10001 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x10001>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	cpu@10100 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x10100>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	cpu@10101 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x10101>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	cpu@100000000 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x0>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	cpu@100000001 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x1>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	cpu@100000100 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x100>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	cpu@100000101 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x101>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	cpu@100010000 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x10000>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	cpu@100010001 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x10001>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	cpu@100010100 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x10100>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	cpu@100010101 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x10101>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; +}; + +-- +[1] arm/msm/qcom,saw2.txt +[2] arm/msm/qcom,kpss-acc.txt diff --git a/Documentation/devicetree/bindings/arm/davinci/nand.txt b/Documentation/devicetree/bindings/arm/davinci/nand.txt deleted file mode 100644 index 3545ea704b5..00000000000 --- a/Documentation/devicetree/bindings/arm/davinci/nand.txt +++ /dev/null @@ -1,46 +0,0 @@ -* Texas Instruments Davinci NAND - -This file provides information, what the device node for the -davinci nand interface contain. - -Required properties: -- compatible: "ti,davinci-nand"; -- reg : contain 2 offset/length values: -        - offset and length for the access window -        - offset and length for accessing the aemif control registers -- ti,davinci-chipselect: Indicates on the davinci_nand driver which -                         chipselect is used for accessing the nand. - -Recommended properties : -- ti,davinci-mask-ale: mask for ale -- ti,davinci-mask-cle: mask for cle -- ti,davinci-mask-chipsel: mask for chipselect -- ti,davinci-ecc-mode: ECC mode valid values for davinci driver: -		- "none" -		- "soft" -		- "hw" -- ti,davinci-ecc-bits: used ECC bits, currently supported 1 or 4. -- ti,davinci-nand-buswidth: buswidth 8 or 16 -- ti,davinci-nand-use-bbt: use flash based bad block table support. - -nand device bindings may contain additional sub-nodes describing -partitions of the address space. See partition.txt for more detail. - -Example(da850 EVM ): -nand_cs3@62000000 { -	compatible = "ti,davinci-nand"; -	reg = <0x62000000 0x807ff -		0x68000000 0x8000>; -	ti,davinci-chipselect = <1>; -	ti,davinci-mask-ale = <0>; -	ti,davinci-mask-cle = <0>; -	ti,davinci-mask-chipsel = <0>; -	ti,davinci-ecc-mode = "hw"; -	ti,davinci-ecc-bits = <4>; -	ti,davinci-nand-use-bbt; - -	partition@180000 { -		label = "ubifs"; -		reg = <0x180000 0x7e80000>; -	}; -}; diff --git a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt index 5216b419016..8b4f7b7fe88 100644 --- a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt +++ b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt @@ -9,6 +9,18 @@ Required Properties:  - reg: physical base address of the controller and length of memory mapped      region. +Optional Properties: +- clocks: List of clock handles. The parent clocks of the input clocks to the +	devices in this power domain are set to oscclk before power gating +	and restored back after powering on a domain. This is required for +	all domains which are powered on and off and not required for unused +	domains. +- clock-names: The following clocks can be specified: +	- oscclk: Oscillator clock. +	- pclkN, clkN: Pairs of parent of input clock and input clock to the +		devices in this power domain. Maximum of 4 pairs (N = 0 to 3) +		are supported currently. +  Node of a device using power domains must have a samsung,power-domain property  defined with a phandle to respective power domain. @@ -19,6 +31,14 @@ Example:  		reg = <0x10023C00 0x10>;  	}; +	mfc_pd: power-domain@10044060 { +		compatible = "samsung,exynos4210-pd"; +		reg = <0x10044060 0x20>; +		clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MOUT_SW_ACLK333>, +			<&clock CLK_MOUT_USER_ACLK333>; +		clock-names = "oscclk", "pclk0", "clk0"; +	}; +  Example of the node using power domain:  	node { diff --git a/Documentation/devicetree/bindings/arm/exynos/smp-sysram.txt b/Documentation/devicetree/bindings/arm/exynos/smp-sysram.txt new file mode 100644 index 00000000000..4a0a4f70a0c --- /dev/null +++ b/Documentation/devicetree/bindings/arm/exynos/smp-sysram.txt @@ -0,0 +1,38 @@ +Samsung Exynos SYSRAM for SMP bringup: +------------------------------------ + +Samsung SMP-capable Exynos SoCs use part of the SYSRAM for the bringup +of the secondary cores. Once the core gets powered up it executes the +code that is residing at some specific location of the SYSRAM. + +Therefore reserved section sub-nodes have to be added to the mmio-sram +declaration. These nodes are of two types depending upon secure or +non-secure execution environment. + +Required sub-node properties: +- compatible : depending upon boot mode, should be +		"samsung,exynos4210-sysram" : for Secure SYSRAM +		"samsung,exynos4210-sysram-ns" : for Non-secure SYSRAM + +The rest of the properties should follow the generic mmio-sram discription +found in ../../misc/sysram.txt + +Example: + +	sysram@02020000 { +		compatible = "mmio-sram"; +		reg = <0x02020000 0x54000>; +		#address-cells = <1>; +		#size-cells = <1>; +		ranges = <0 0x02020000 0x54000>; + +		smp-sysram@0 { +			compatible = "samsung,exynos4210-sysram"; +			reg = <0x0 0x1000>; +		}; + +		smp-sysram@53000 { +			compatible = "samsung,exynos4210-sysram-ns"; +			reg = <0x53000 0x1000>; +		}; +	}; diff --git a/Documentation/devicetree/bindings/arm/firmware/tlm,trusted-foundations.txt b/Documentation/devicetree/bindings/arm/firmware/tlm,trusted-foundations.txt new file mode 100644 index 00000000000..780d0392a66 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/firmware/tlm,trusted-foundations.txt @@ -0,0 +1,20 @@ +Trusted Foundations +------------------- + +Boards that use the Trusted Foundations secure monitor can signal its +presence by declaring a node compatible with "tlm,trusted-foundations" +under the /firmware/ node + +Required properties: +- compatible: "tlm,trusted-foundations" +- tlm,version-major: major version number of Trusted Foundations firmware +- tlm,version-minor: minor version number of Trusted Foundations firmware + +Example: +	firmware { +		trusted-foundations { +			compatible = "tlm,trusted-foundations"; +			tlm,version-major = <2>; +			tlm,version-minor = <8>; +		}; +	}; diff --git a/Documentation/devicetree/bindings/arm/gic.txt b/Documentation/devicetree/bindings/arm/gic.txt index 3dfb0c0384f..5573c08d318 100644 --- a/Documentation/devicetree/bindings/arm/gic.txt +++ b/Documentation/devicetree/bindings/arm/gic.txt @@ -11,6 +11,7 @@ have PPIs or SGIs.  Main node required properties:  - compatible : should be one of: +	"arm,gic-400"  	"arm,cortex-a15-gic"  	"arm,cortex-a9-gic"  	"arm,cortex-a7-gic" @@ -49,6 +50,11 @@ Optional    regions, used when the GIC doesn't have banked registers. The offset is    cpu-offset * cpu-nr. +- arm,routable-irqs : Total number of gic irq inputs which are not directly +		  connected from the peripherals, but are routed dynamically +		  by a crossbar/multiplexer preceding the GIC. The GIC irq +		  input line is assigned dynamically when the corresponding +		  peripheral's crossbar line is mapped.  Example:  	intc: interrupt-controller@fff11000 { @@ -56,6 +62,7 @@ Example:  		#interrupt-cells = <3>;  		#address-cells = <1>;  		interrupt-controller; +		arm,routable-irqs = <160>;  		reg = <0xfff11000 0x1000>,  		      <0xfff10100 0x100>;  	}; diff --git a/Documentation/devicetree/bindings/arm/global_timer.txt b/Documentation/devicetree/bindings/arm/global_timer.txt index 1e548981eda..bdae3a81879 100644 --- a/Documentation/devicetree/bindings/arm/global_timer.txt +++ b/Documentation/devicetree/bindings/arm/global_timer.txt @@ -4,8 +4,11 @@  ** Timer node required properties: -- compatible : Should be "arm,cortex-a9-global-timer" -		Driver supports versions r2p0 and above. +- compatible : should contain +	     * "arm,cortex-a5-global-timer" for Cortex-A5 global timers. +	     * "arm,cortex-a9-global-timer" for Cortex-A9 global +	         timers or any compatible implementation. Note: driver +	         supports versions r2p0 and above.  - interrupts : One interrupt to each core diff --git a/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt b/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt new file mode 100644 index 00000000000..df0a452b852 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt @@ -0,0 +1,46 @@ +Hisilicon Platforms Device Tree Bindings +---------------------------------------------------- + +Hi4511 Board +Required root node properties: +	- compatible = "hisilicon,hi3620-hi4511"; + +Hisilicon system controller + +Required properties: +- compatible : "hisilicon,sysctrl" +- reg : Register address and size + +Optional properties: +- smp-offset : offset in sysctrl for notifying slave cpu booting +		cpu 1, reg; +		cpu 2, reg + 0x4; +		cpu 3, reg + 0x8; +		If reg value is not zero, cpun exit wfi and go +- resume-offset : offset in sysctrl for notifying cpu0 when resume +- reboot-offset : offset in sysctrl for system reboot + +Example: + +	/* for Hi3620 */ +	sysctrl: system-controller@fc802000 { +		compatible = "hisilicon,sysctrl"; +		reg = <0xfc802000 0x1000>; +		smp-offset = <0x31c>; +		resume-offset = <0x308>; +		reboot-offset = <0x4>; +	}; + +PCTRL: Peripheral misc control register + +Required Properties: +- compatible: "hisilicon,pctrl" +- reg: Address and size of pctrl. + +Example: + +	/* for Hi3620 */ +	pctrl: pctrl@fca09000 { +		compatible = "hisilicon,pctrl"; +		reg = <0xfca09000 0x1000>; +	}; diff --git a/Documentation/devicetree/bindings/arm/keystone/keystone.txt b/Documentation/devicetree/bindings/arm/keystone/keystone.txt index 63c0e6ae5cf..59d7a46f85e 100644 --- a/Documentation/devicetree/bindings/arm/keystone/keystone.txt +++ b/Documentation/devicetree/bindings/arm/keystone/keystone.txt @@ -8,3 +8,13 @@ Required properties:   - compatible: All TI specific devices present in Keystone SOC should be in     the form "ti,keystone-*". Generic devices like gic, arch_timers, ns16550     type UART should use the specified compatible for those devices. + +Boards: +-  Keystone 2 Hawking/Kepler EVM +   compatible = "ti,k2hk-evm","ti,keystone" + +-  Keystone 2 Lamarr EVM +   compatible = "ti,k2l-evm","ti,keystone" + +-  Keystone 2 Edison EVM +   compatible = "ti,k2e-evm","ti,keystone" diff --git a/Documentation/devicetree/bindings/arm/l2cc.txt b/Documentation/devicetree/bindings/arm/l2cc.txt index c0c7626fd0f..af527ee111c 100644 --- a/Documentation/devicetree/bindings/arm/l2cc.txt +++ b/Documentation/devicetree/bindings/arm/l2cc.txt @@ -7,20 +7,21 @@ The ARM L2 cache representation in the device tree should be done as follows:  Required properties:  - compatible : should be one of: -	"arm,pl310-cache" -	"arm,l220-cache" -	"arm,l210-cache" -	"marvell,aurora-system-cache": Marvell Controller designed to be +  "arm,pl310-cache" +  "arm,l220-cache" +  "arm,l210-cache" +  "bcm,bcm11351-a2-pl310-cache": DEPRECATED by "brcm,bcm11351-a2-pl310-cache" +  "brcm,bcm11351-a2-pl310-cache": For Broadcom bcm11351 chipset where an +     offset needs to be added to the address before passing down to the L2 +     cache controller +  "marvell,aurora-system-cache": Marvell Controller designed to be       compatible with the ARM one, with system cache mode (meaning       maintenance operations on L1 are broadcasted to the L2 and L2       performs the same operation). -	"marvell,"aurora-outer-cache: Marvell Controller designed to be -	 compatible with the ARM one with outer cache mode. -	"brcm,bcm11351-a2-pl310-cache": For Broadcom bcm11351 chipset where an -	offset needs to be added to the address before passing down to the L2 -	cache controller -	"bcm,bcm11351-a2-pl310-cache": DEPRECATED by -	                               "brcm,bcm11351-a2-pl310-cache" +  "marvell,aurora-outer-cache": Marvell Controller designed to be +     compatible with the ARM one with outer cache mode. +  "marvell,tauros3-cache": Marvell Tauros3 cache controller, compatible +     with arm,pl310-cache controller.  - cache-unified : Specifies the cache is a unified cache.  - cache-level : Should be set to 2 for a level 2 cache.  - reg : Physical base address and size of cache controller's memory mapped @@ -39,6 +40,9 @@ Optional properties:  - arm,filter-ranges : <start length> Starting address and length of window to    filter. Addresses in the filter window are directed to the M1 port. Other    addresses will go to the M0 port. +- arm,io-coherent : indicates that the system is operating in an hardware +  I/O coherent mode. Valid only when the arm,pl310-cache compatible +  string is used.  - interrupts : 1 combined interrupt.  - cache-id-part: cache id part number to be used if it is not present    on hardware diff --git a/Documentation/devicetree/bindings/arm/marvell,berlin.txt b/Documentation/devicetree/bindings/arm/marvell,berlin.txt new file mode 100644 index 00000000000..94013a9a876 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/marvell,berlin.txt @@ -0,0 +1,126 @@ +Marvell Berlin SoC Family Device Tree Bindings +--------------------------------------------------------------- + +Boards with a SoC of the Marvell Berlin family, e.g. Armada 1500 +shall have the following properties: + +* Required root node properties: +compatible: must contain "marvell,berlin" + +In addition, the above compatible shall be extended with the specific +SoC and board used. Currently known SoC compatibles are: +    "marvell,berlin2"      for Marvell Armada 1500 (BG2, 88DE3100), +    "marvell,berlin2cd"    for Marvell Armada 1500-mini (BG2CD, 88DE3005) +    "marvell,berlin2ct"    for Marvell Armada ? (BG2CT, 88DE????) +    "marvell,berlin2q"     for Marvell Armada 1500-pro (BG2Q, 88DE3114) +    "marvell,berlin3"      for Marvell Armada ? (BG3, 88DE????) + +* Example: + +/ { +	model = "Sony NSZ-GS7"; +	compatible = "sony,nsz-gs7", "marvell,berlin2", "marvell,berlin"; + +	... +} + +* Marvell Berlin2 chip control binding + +Marvell Berlin SoCs have a chip control register set providing several +individual registers dealing with pinmux, padmux, clock, reset, and secondary +CPU boot address. Unfortunately, the individual registers are spread among the +chip control registers, so there should be a single DT node only providing the +different functions which are described below. + +Required properties: +- compatible: shall be one of +	"marvell,berlin2-chip-ctrl" for BG2 +	"marvell,berlin2cd-chip-ctrl" for BG2CD +	"marvell,berlin2q-chip-ctrl" for BG2Q +- reg: address and length of following register sets for +  BG2/BG2CD: chip control register set +  BG2Q: chip control register set and cpu pll registers + +* Marvell Berlin2 system control binding + +Marvell Berlin SoCs have a system control register set providing several +individual registers dealing with pinmux, padmux, and reset. + +Required properties: +- compatible: should be one of +	"marvell,berlin2-system-ctrl" for BG2 +	"marvell,berlin2cd-system-ctrl" for BG2CD +	"marvell,berlin2q-system-ctrl" for BG2Q +- reg: address and length of the system control register set + +* Clock provider binding + +As clock related registers are spread among the chip control registers, the +chip control node also provides the clocks. Marvell Berlin2 (BG2, BG2CD, BG2Q) +SoCs share the same IP for PLLs and clocks, with some minor differences in +features and register layout. + +Required properties: +- #clock-cells: shall be set to 1 +- clocks: clock specifiers referencing the core clock input clocks +- clock-names: array of strings describing the input clock specifiers above. +    Allowed clock-names for the reference clocks are +      "refclk" for the SoCs osciallator input on all SoCs, +    and SoC-specific input clocks for +      BG2/BG2CD: "video_ext0" for the external video clock input + +Clocks provided by core clocks shall be referenced by a clock specifier +indexing one of the provided clocks. Refer to dt-bindings/clock/berlin<soc>.h +for the corresponding index mapping. + +* Pin controller binding + +Pin control registers are part of both register sets, chip control and system +control. The pins controlled are organized in groups, so no actual pin +information is needed. + +A pin-controller node should contain subnodes representing the pin group +configurations, one per function. Each subnode has the group name and the muxing +function used. + +Be aware the Marvell Berlin datasheets use the keyword 'mode' for what is called +a 'function' in the pin-controller subsystem. + +Required subnode-properties: +- groups: a list of strings describing the group names. +- function: a string describing the function used to mux the groups. + +Example: + +chip: chip-control@ea0000 { +	compatible = "marvell,berlin2-chip-ctrl"; +	#clock-cells = <1>; +	reg = <0xea0000 0x400>; +	clocks = <&refclk>, <&externaldev 0>; +	clock-names = "refclk", "video_ext0"; + +	spi1_pmux: spi1-pmux { +		groups = "G0"; +		function = "spi1"; +	}; +}; + +sysctrl: system-controller@d000 { +	compatible = "marvell,berlin2-system-ctrl"; +	reg = <0xd000 0x100>; + +	uart0_pmux: uart0-pmux { +		groups = "GSM4"; +		function = "uart0"; +	}; + +	uart1_pmux: uart1-pmux { +		groups = "GSM5"; +		function = "uart1"; +	}; + +	uart2_pmux: uart2-pmux { +		groups = "GSM3"; +		function = "uart2"; +	}; +}; diff --git a/Documentation/devicetree/bindings/arm/marvell,dove.txt b/Documentation/devicetree/bindings/arm/marvell,dove.txt new file mode 100644 index 00000000000..aaaf64c56e4 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/marvell,dove.txt @@ -0,0 +1,22 @@ +Marvell Dove Platforms Device Tree Bindings +----------------------------------------------- + +Boards with a Marvell Dove SoC shall have the following properties: + +Required root node property: +- compatible: must contain "marvell,dove"; + +* Global Configuration registers + +Global Configuration registers of Dove SoC are shared by a syscon node. + +Required properties: +- compatible: must contain "marvell,dove-global-config" and "syscon". +- reg: base address and size of the Global Configuration registers. + +Example: + +gconf: global-config@e802c { +	compatible = "marvell,dove-global-config", "syscon"; +	reg = <0xe802c 0x14>; +}; diff --git a/Documentation/devicetree/bindings/arm/marvell,kirkwood.txt b/Documentation/devicetree/bindings/arm/marvell,kirkwood.txt new file mode 100644 index 00000000000..925ecbf6e7b --- /dev/null +++ b/Documentation/devicetree/bindings/arm/marvell,kirkwood.txt @@ -0,0 +1,97 @@ +Marvell Kirkwood SoC Family Device Tree Bindings +------------------------------------------------ + +Boards with a SoC of the Marvell Kirkwook family, eg 88f6281 + +* Required root node properties: +compatible: must contain "marvell,kirkwood" + +In addition, the above compatible shall be extended with the specific +SoC. Currently known SoC compatibles are: + +"marvell,kirkwood-88f6192" +"marvell,kirkwood-88f6281" +"marvell,kirkwood-88f6282" +"marvell,kirkwood-88f6283" +"marvell,kirkwood-88f6702" +"marvell,kirkwood-98DX4122" + +And in addition, the compatible shall be extended with the specific +board. Currently known boards are: + +"buffalo,lschlv2" +"buffalo,lsxhl" +"buffalo,lsxl" +"dlink,dns-320" +"dlink,dns-320-a1" +"dlink,dns-325" +"dlink,dns-325-a1" +"dlink,dns-kirkwood" +"excito,b3" +"globalscale,dreamplug-003-ds2001" +"globalscale,guruplug" +"globalscale,guruplug-server-plus" +"globalscale,sheevaplug" +"globalscale,sheevaplug" +"globalscale,sheevaplug-esata" +"globalscale,sheevaplug-esata-rev13" +"iom,iconnect" +"iom,iconnect-1.1" +"iom,ix2-200" +"keymile,km_kirkwood" +"lacie,cloudbox" +"lacie,inetspace_v2" +"lacie,laplug" +"lacie,netspace_lite_v2" +"lacie,netspace_max_v2" +"lacie,netspace_mini_v2" +"lacie,netspace_v2" +"marvell,db-88f6281-bp" +"marvell,db-88f6282-bp" +"marvell,mv88f6281gtw-ge" +"marvell,rd88f6281" +"marvell,rd88f6281" +"marvell,rd88f6281-a0" +"marvell,rd88f6281-a1" +"mpl,cec4" +"mpl,cec4-10" +"netgear,readynas" +"netgear,readynas" +"netgear,readynas-duo-v2" +"netgear,readynas-nv+-v2" +"plathome,openblocks-a6" +"plathome,openblocks-a7" +"raidsonic,ib-nas6210" +"raidsonic,ib-nas6210-b" +"raidsonic,ib-nas6220" +"raidsonic,ib-nas6220-b" +"raidsonic,ib-nas62x0" +"seagate,dockstar" +"seagate,goflexnet" +"synology,ds109" +"synology,ds110jv10" +"synology,ds110jv20" +"synology,ds110jv30" +"synology,ds111" +"synology,ds209" +"synology,ds210jv10" +"synology,ds210jv20" +"synology,ds212" +"synology,ds212jv10" +"synology,ds212jv20" +"synology,ds212pv10" +"synology,ds409" +"synology,ds409slim" +"synology,ds410j" +"synology,ds411" +"synology,ds411j" +"synology,ds411slim" +"synology,ds413jv10" +"synology,rs212" +"synology,rs409" +"synology,rs411" +"synology,rs812" +"usi,topkick" +"usi,topkick-1281P2" +"zyxel,nsa310" +"zyxel,nsa310a" diff --git a/Documentation/devicetree/bindings/arm/moxart.txt b/Documentation/devicetree/bindings/arm/moxart.txt new file mode 100644 index 00000000000..11087edb065 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/moxart.txt @@ -0,0 +1,12 @@ +MOXA ART device tree bindings + +Boards with the MOXA ART SoC shall have the following properties: + +Required root node property: + +compatible = "moxa,moxart"; + +Boards: + +- UC-7112-LX: embedded computer +  compatible = "moxa,moxart-uc-7112-lx", "moxa,moxart" diff --git a/Documentation/devicetree/bindings/arm/mrvl/feroceon.txt b/Documentation/devicetree/bindings/arm/mrvl/feroceon.txt new file mode 100644 index 00000000000..0d244b999d1 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/mrvl/feroceon.txt @@ -0,0 +1,16 @@ +* Marvell Feroceon Cache + +Required properties: +- compatible : Should be either "marvell,feroceon-cache" or +  	       "marvell,kirkwood-cache". + +Optional properties: +- reg        : Address of the L2 cache control register. Mandatory for +  	       "marvell,kirkwood-cache", not used by "marvell,feroceon-cache" + + +Example: +		l2: l2-cache@20128 { +			compatible = "marvell,kirkwood-cache"; +			reg = <0x20128 0x4>; +		}; diff --git a/Documentation/devicetree/bindings/arm/msm/qcom,kpss-acc.txt b/Documentation/devicetree/bindings/arm/msm/qcom,kpss-acc.txt new file mode 100644 index 00000000000..1333db9acfe --- /dev/null +++ b/Documentation/devicetree/bindings/arm/msm/qcom,kpss-acc.txt @@ -0,0 +1,30 @@ +Krait Processor Sub-system (KPSS) Application Clock Controller (ACC) + +The KPSS ACC provides clock, power domain, and reset control to a Krait CPU. +There is one ACC register region per CPU within the KPSS remapped region as +well as an alias register region that remaps accesses to the ACC associated +with the CPU accessing the region. + +PROPERTIES + +- compatible: +	Usage: required +	Value type: <string> +	Definition: should be one of: +			"qcom,kpss-acc-v1" +			"qcom,kpss-acc-v2" + +- reg: +	Usage: required +	Value type: <prop-encoded-array> +	Definition: the first element specifies the base address and size of +		    the register region. An optional second element specifies +		    the base address and size of the alias register region. + +Example: + +	clock-controller@2088000 { +		compatible = "qcom,kpss-acc-v2"; +		reg = <0x02088000 0x1000>, +		      <0x02008000 0x1000>; +	}; diff --git a/Documentation/devicetree/bindings/arm/msm/qcom,saw2.txt b/Documentation/devicetree/bindings/arm/msm/qcom,saw2.txt new file mode 100644 index 00000000000..1505fb8e131 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/msm/qcom,saw2.txt @@ -0,0 +1,35 @@ +SPM AVS Wrapper 2 (SAW2) + +The SAW2 is a wrapper around the Subsystem Power Manager (SPM) and the +Adaptive Voltage Scaling (AVS) hardware. The SPM is a programmable +micro-controller that transitions a piece of hardware (like a processor or +subsystem) into and out of low power modes via a direct connection to +the PMIC. It can also be wired up to interact with other processors in the +system, notifying them when a low power state is entered or exited. + +PROPERTIES + +- compatible: +	Usage: required +	Value type: <string> +	Definition: shall contain "qcom,saw2". A more specific value should be +		    one of: +			 "qcom,saw2-v1" +			 "qcom,saw2-v1.1" +			 "qcom,saw2-v2" +			 "qcom,saw2-v2.1" + +- reg: +	Usage: required +	Value type: <prop-encoded-array> +	Definition: the first element specifies the base address and size of +		    the register region. An optional second element specifies +		    the base address and size of the alias register region. + + +Example: + +	regulator@2099000 { +		compatible = "qcom,saw2"; +		reg = <0x02099000 0x1000>, <0x02009000 0x1000>; +	}; diff --git a/Documentation/devicetree/bindings/arm/mvebu-system-controller.txt b/Documentation/devicetree/bindings/arm/mvebu-system-controller.txt index 081c6a786c8..d24ab2ebf8a 100644 --- a/Documentation/devicetree/bindings/arm/mvebu-system-controller.txt +++ b/Documentation/devicetree/bindings/arm/mvebu-system-controller.txt @@ -1,12 +1,13 @@  MVEBU System Controller  ----------------------- -MVEBU (Marvell SOCs: Armada 370/XP, Dove, mv78xx0, Kirkwood, Orion5x) +MVEBU (Marvell SOCs: Armada 370/375/XP, Dove, mv78xx0, Kirkwood, Orion5x)  Required properties:  - compatible: one of:  	- "marvell,orion-system-controller"  	- "marvell,armada-370-xp-system-controller" +	- "marvell,armada-375-system-controller"  - reg: Should contain system controller registers location and length.  Example: diff --git a/Documentation/devicetree/bindings/arm/omap/crossbar.txt b/Documentation/devicetree/bindings/arm/omap/crossbar.txt new file mode 100644 index 00000000000..fb88585cfb9 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/omap/crossbar.txt @@ -0,0 +1,27 @@ +Some socs have a large number of interrupts requests to service +the needs of its many peripherals and subsystems. All of the +interrupt lines from the subsystems are not needed at the same +time, so they have to be muxed to the irq-controller appropriately. +In such places a interrupt controllers are preceded by an CROSSBAR +that provides flexibility in muxing the device requests to the controller +inputs. + +Required properties: +- compatible : Should be "ti,irq-crossbar" +- reg: Base address and the size of the crossbar registers. +- ti,max-irqs: Total number of irqs available at the interrupt controller. +- ti,reg-size: Size of a individual register in bytes. Every individual +	    register is assumed to be of same size. Valid sizes are 1, 2, 4. +- ti,irqs-reserved: List of the reserved irq lines that are not muxed using +		 crossbar. These interrupt lines are reserved in the soc, +		 so crossbar bar driver should not consider them as free +		 lines. + +Examples: +		crossbar_mpu: @4a020000 { +			compatible = "ti,irq-crossbar"; +			reg = <0x4a002a48 0x130>; +			ti,max-irqs = <160>; +			ti,reg-size = <2>; +			ti,irqs-reserved = <0 1 2 3 5 6 131 132 139 140>; +		}; diff --git a/Documentation/devicetree/bindings/arm/omap/dmm.txt b/Documentation/devicetree/bindings/arm/omap/dmm.txt new file mode 100644 index 00000000000..8bd6d0a238a --- /dev/null +++ b/Documentation/devicetree/bindings/arm/omap/dmm.txt @@ -0,0 +1,22 @@ +OMAP Dynamic Memory Manager (DMM) bindings + +The dynamic memory manager (DMM) is a module located immediately in front of the +SDRAM controllers (called EMIFs on OMAP). DMM manages various aspects of memory +accesses such as priority generation amongst initiators, configuration of SDRAM +interleaving, optimizing transfer of 2D block objects, and provide MMU-like page +translation for initiators which need contiguous dma bus addresses. + +Required properties: +- compatible:	Should contain "ti,omap4-dmm" for OMAP4 family +		Should contain "ti,omap5-dmm" for OMAP5 and DRA7x family +- reg:		Contains DMM register address range (base address and length) +- interrupts:	Should contain an interrupt-specifier for DMM_IRQ. +- ti,hwmods:	Name of the hwmod associated to DMM, which is typically "dmm" + +Example: + +dmm@4e000000 { +	compatible = "ti,omap4-dmm"; +	reg = <0x4e000000 0x800>; +	ti,hwmods = "dmm"; +}; diff --git a/Documentation/devicetree/bindings/arm/omap/l3-noc.txt b/Documentation/devicetree/bindings/arm/omap/l3-noc.txt index c0105de55cb..974624ea68f 100644 --- a/Documentation/devicetree/bindings/arm/omap/l3-noc.txt +++ b/Documentation/devicetree/bindings/arm/omap/l3-noc.txt @@ -6,6 +6,8 @@ provided by Arteris.  Required properties:  - compatible : Should be "ti,omap3-l3-smx" for OMAP3 family                 Should be "ti,omap4-l3-noc" for OMAP4 family +	       Should be "ti,dra7-l3-noc" for DRA7 family +               Should be "ti,am4372-l3-noc" for AM43 family  - reg:	Contains L3 register address range for each noc domain.  - ti,hwmods: "l3_main_1", ... One hwmod for each noc domain. diff --git a/Documentation/devicetree/bindings/arm/omap/mpu.txt b/Documentation/devicetree/bindings/arm/omap/mpu.txt index 1a5a42ce21b..83f405bde13 100644 --- a/Documentation/devicetree/bindings/arm/omap/mpu.txt +++ b/Documentation/devicetree/bindings/arm/omap/mpu.txt @@ -7,10 +7,18 @@ The MPU contain CPUs, GIC, L2 cache and a local PRCM.  Required properties:  - compatible : Should be "ti,omap3-mpu" for OMAP3                 Should be "ti,omap4-mpu" for OMAP4 +	       Should be "ti,omap5-mpu" for OMAP5  - ti,hwmods: "mpu"  Examples: +- For an OMAP5 SMP system: + +mpu { +    compatible = "ti,omap5-mpu"; +    ti,hwmods = "mpu" +}; +  - For an OMAP4 SMP system:  mpu { diff --git a/Documentation/devicetree/bindings/arm/omap/omap.txt b/Documentation/devicetree/bindings/arm/omap/omap.txt index 91b7049affa..d22b216f5d2 100644 --- a/Documentation/devicetree/bindings/arm/omap/omap.txt +++ b/Documentation/devicetree/bindings/arm/omap/omap.txt @@ -21,7 +21,8 @@ Required properties:  Optional properties:  - ti,no_idle_on_suspend: When present, it prevents the PM to idle the module    during suspend. - +- ti,no-reset-on-init: When present, the module should not be reset at init +- ti,no-idle-on-init: When present, the module should not be idled at init  Example: @@ -30,6 +31,62 @@ spinlock@1 {      ti,hwmods = "spinlock";  }; +SoC Type (optional): + +- General Purpose devices +  compatible = "ti,gp" +- High Security devices +  compatible = "ti,hs" + +SoC Families: + +- OMAP2 generic - defaults to OMAP2420 +  compatible = "ti,omap2" +- OMAP3 generic - defaults to OMAP3430 +  compatible = "ti,omap3" +- OMAP4 generic - defaults to OMAP4430 +  compatible = "ti,omap4" +- OMAP5 generic - defaults to OMAP5430 +  compatible = "ti,omap5" +- DRA7 generic - defaults to DRA742 +  compatible = "ti,dra7" +- AM43x generic - defaults to AM4372 +  compatible = "ti,am43" + +SoCs: + +- OMAP2420 +  compatible = "ti,omap2420", "ti,omap2" +- OMAP2430 +  compatible = "ti,omap2430", "ti,omap2" + +- OMAP3430 +  compatible = "ti,omap3430", "ti,omap3" +- AM3517 +  compatible = "ti,am3517", "ti,omap3" +- OMAP3630 +  compatible = "ti,omap36xx", "ti,omap3" +- AM33xx +  compatible = "ti,am33xx", "ti,omap3" + +- OMAP4430 +  compatible = "ti,omap4430", "ti,omap4" +- OMAP4460 +  compatible = "ti,omap4460", "ti,omap4" + +- OMAP5430 +  compatible = "ti,omap5430", "ti,omap5" +- OMAP5432 +  compatible = "ti,omap5432", "ti,omap5" + +- DRA742 +  compatible = "ti,dra742", "ti,dra74", "ti,dra7" + +- DRA722 +  compatible = "ti,dra722", "ti,dra72", "ti,dra7" + +- AM4372 +  compatible = "ti,am4372", "ti,am43"  Boards: @@ -37,7 +94,7 @@ Boards:    compatible = "ti,omap3-beagle", "ti,omap3"  - OMAP3 Tobi with Overo : Commercial expansion board with daughter board -  compatible = "ti,omap3-tobi", "ti,omap3-overo", "ti,omap3" +  compatible = "gumstix,omap3-overo-tobi", "gumstix,omap3-overo", "ti,omap3"  - OMAP4 SDP : Software Development Board    compatible = "ti,omap4-sdp", "ti,omap4430" @@ -45,6 +102,15 @@ Boards:  - OMAP4 PandaBoard : Low cost community board    compatible = "ti,omap4-panda", "ti,omap4430" +- OMAP4 DuoVero with Parlor : Commercial expansion board with daughter board +  compatible = "gumstix,omap4-duovero-parlor", "gumstix,omap4-duovero", "ti,omap4430", "ti,omap4"; + +- OMAP4 VAR-STK-OM44 : Commercial dev kit with VAR-OM44CustomBoard and VAR-SOM-OM44 w/WLAN +  compatible = "variscite,var-stk-om44", "variscite,var-som-om44", "ti,omap4460", "ti,omap4"; + +- OMAP4 VAR-DVK-OM44 : Commercial dev kit with VAR-OM44CustomBoard, VAR-SOM-OM44 w/WLAN and LCD touchscreen +  compatible = "variscite,var-dvk-om44", "variscite,var-som-om44", "ti,omap4460", "ti,omap4"; +  - OMAP3 EVM : Software Development Board for OMAP35x, AM/DM37x    compatible = "ti,omap3-evm", "ti,omap3" @@ -60,5 +126,11 @@ Boards:  - AM43x EPOS EVM    compatible = "ti,am43x-epos-evm", "ti,am4372", "ti,am43" -- DRA7 EVM:  Software Developement Board for DRA7XX -  compatible = "ti,dra7-evm", "ti,dra7" +- AM437x GP EVM +  compatible = "ti,am437x-gp-evm", "ti,am4372", "ti,am43" + +- DRA742 EVM:  Software Development Board for DRA742 +  compatible = "ti,dra7-evm", "ti,dra742", "ti,dra74", "ti,dra7" + +- DRA722 EVM: Software Development Board for DRA722 +  compatible = "ti,dra72-evm", "ti,dra722", "ti,dra72", "ti,dra7" diff --git a/Documentation/devicetree/bindings/arm/pmu.txt b/Documentation/devicetree/bindings/arm/pmu.txt index 343781b9f24..75ef91d08f3 100644 --- a/Documentation/devicetree/bindings/arm/pmu.txt +++ b/Documentation/devicetree/bindings/arm/pmu.txt @@ -7,7 +7,10 @@ representation in the device tree should be done as under:-  Required properties:  - compatible : should be one of +	"arm,armv8-pmuv3" +	"arm,cortex-a17-pmu"  	"arm,cortex-a15-pmu" +	"arm,cortex-a12-pmu"  	"arm,cortex-a9-pmu"  	"arm,cortex-a8-pmu"  	"arm,cortex-a7-pmu" @@ -15,7 +18,14 @@ Required properties:  	"arm,arm11mpcore-pmu"  	"arm,arm1176-pmu"  	"arm,arm1136-pmu" -- interrupts : 1 combined interrupt or 1 per core. +	"qcom,krait-pmu" +- interrupts : 1 combined interrupt or 1 per core. If the interrupt is a per-cpu +               interrupt (PPI) then 1 interrupt should be specified. + +Optional properties: + +- qcom,no-pc-write : Indicates that this PMU doesn't support the 0xc and 0xd +                     events.  Example: diff --git a/Documentation/devicetree/bindings/arm/psci.txt b/Documentation/devicetree/bindings/arm/psci.txt index 433afe9cb59..b4a58f39223 100644 --- a/Documentation/devicetree/bindings/arm/psci.txt +++ b/Documentation/devicetree/bindings/arm/psci.txt @@ -21,7 +21,15 @@ to #0.  Main node required properties: - - compatible    : Must be "arm,psci" + - compatible    : should contain at least one of: + +				 * "arm,psci" : for implementations complying to PSCI versions prior to +					0.2. For these cases function IDs must be provided. + +				 * "arm,psci-0.2" : for implementations complying to PSCI 0.2. Function +					IDs are not required and should be ignored by an OS with PSCI 0.2 +					support, but are permitted to be present for compatibility with +					existing software when "arm,psci" is later in the compatible list.   - method        : The method of calling the PSCI firmware. Permitted                     values are: @@ -45,6 +53,8 @@ Main node optional properties:  Example: +Case 1: PSCI v0.1 only. +  	psci {  		compatible	= "arm,psci";  		method		= "smc"; @@ -53,3 +63,28 @@ Example:  		cpu_on		= <0x95c10002>;  		migrate		= <0x95c10003>;  	}; + + +Case 2: PSCI v0.2 only + +	psci { +		compatible	= "arm,psci-0.2"; +		method		= "smc"; +	}; + +Case 3: PSCI v0.2 and PSCI v0.1. + +	A DTB may provide IDs for use by kernels without PSCI 0.2 support, +	enabling firmware and hypervisors to support existing and new kernels. +	These IDs will be ignored by kernels with PSCI 0.2 support, which will +	use the standard PSCI 0.2 IDs exclusively. + +	psci { +		compatible = "arm,psci-0.2", "arm,psci"; +		method = "hvc"; + +		cpu_on = < arbitrary value >; +		cpu_off = < arbitrary value >; + +		... +	}; diff --git a/Documentation/devicetree/bindings/arm/rockchip.txt b/Documentation/devicetree/bindings/arm/rockchip.txt new file mode 100644 index 00000000000..857f12636eb --- /dev/null +++ b/Documentation/devicetree/bindings/arm/rockchip.txt @@ -0,0 +1,10 @@ +Rockchip platforms device tree bindings +--------------------------------------- + +- bq Curie 2 tablet: +    Required root node properties: +      - compatible = "mundoreader,bq-curie2", "rockchip,rk3066a"; + +- Radxa Rock board: +    Required root node properties: +      - compatible = "radxa,rock", "rockchip,rk3188"; diff --git a/Documentation/devicetree/bindings/arm/rockchip/pmu.txt b/Documentation/devicetree/bindings/arm/rockchip/pmu.txt new file mode 100644 index 00000000000..3ee9b428b2f --- /dev/null +++ b/Documentation/devicetree/bindings/arm/rockchip/pmu.txt @@ -0,0 +1,16 @@ +Rockchip power-management-unit: +------------------------------- + +The pmu is used to turn off and on different power domains of the SoCs +This includes the power to the CPU cores. + +Required node properties: +- compatible value : = "rockchip,rk3066-pmu"; +- reg : physical base address and the size of the registers window + +Example: + +	pmu@20004000 { +		compatible = "rockchip,rk3066-pmu"; +		reg = <0x20004000 0x100>; +	}; diff --git a/Documentation/devicetree/bindings/arm/rockchip/smp-sram.txt b/Documentation/devicetree/bindings/arm/rockchip/smp-sram.txt new file mode 100644 index 00000000000..d9416fb8db6 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/rockchip/smp-sram.txt @@ -0,0 +1,30 @@ +Rockchip SRAM for smp bringup: +------------------------------ + +Rockchip's smp-capable SoCs use the first part of the sram for the bringup +of the cores. Once the core gets powered up it executes the code that is +residing at the very beginning of the sram. + +Therefore a reserved section sub-node has to be added to the mmio-sram +declaration. + +Required sub-node properties: +- compatible : should be "rockchip,rk3066-smp-sram" + +The rest of the properties should follow the generic mmio-sram discription +found in ../../misc/sram.txt + +Example: + +	sram: sram@10080000 { +		compatible = "mmio-sram"; +		reg = <0x10080000 0x10000>; +		#address-cells = <1>; +		#size-cells = <1>; +		ranges; + +		smp-sram@10080000 { +			compatible = "rockchip,rk3066-smp-sram"; +			reg = <0x10080000 0x50>; +		}; +	}; diff --git a/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt b/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt index 47ada1dff21..832fe8cc24d 100644 --- a/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt +++ b/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt @@ -48,8 +48,8 @@ adc@12D10000 {  	/* NTC thermistor is a hwmon device */  	ncp15wb473@0 { -		compatible = "ntc,ncp15wb473"; -		pullup-uV = <1800000>; +		compatible = "murata,ncp15wb473"; +		pullup-uv = <1800000>;  		pullup-ohm = <47000>;  		pulldown-ohm = <0>;  		io-channels = <&adc 4>; diff --git a/Documentation/devicetree/bindings/arm/samsung/pmu.txt b/Documentation/devicetree/bindings/arm/samsung/pmu.txt new file mode 100644 index 00000000000..2a4ab046a8a --- /dev/null +++ b/Documentation/devicetree/bindings/arm/samsung/pmu.txt @@ -0,0 +1,19 @@ +SAMSUNG Exynos SoC series PMU Registers + +Properties: + - compatible : should contain two values. First value must be one from following list: +		   - "samsung,exynos3250-pmu" - for Exynos3250 SoC, +		   - "samsung,exynos4210-pmu" - for Exynos4210 SoC, +		   - "samsung,exynos4212-pmu" - for Exynos4212 SoC, +		   - "samsung,exynos4412-pmu" - for Exynos4412 SoC, +		   - "samsung,exynos5250-pmu" - for Exynos5250 SoC, +		   - "samsung,exynos5420-pmu" - for Exynos5420 SoC. +		second value must be always "syscon". + + - reg : offset and length of the register set. + +Example : +pmu_system_controller: system-controller@10040000 { +	compatible = "samsung,exynos5250-pmu", "syscon"; +	reg = <0x10040000 0x5000>; +}; diff --git a/Documentation/devicetree/bindings/arm/samsung/sysreg.txt b/Documentation/devicetree/bindings/arm/samsung/sysreg.txt index 5039c0a12f5..4fced6e9d5e 100644 --- a/Documentation/devicetree/bindings/arm/samsung/sysreg.txt +++ b/Documentation/devicetree/bindings/arm/samsung/sysreg.txt @@ -1,7 +1,19 @@  SAMSUNG S5P/Exynos SoC series System Registers (SYSREG)  Properties: - - name : should be 'sysreg'; - - compatible : should contain "samsung,<chip name>-sysreg", "syscon"; -   For Exynos4 SoC series it should be "samsung,exynos4-sysreg", "syscon"; + - compatible : should contain two values. First value must be one from following list: +		- "samsung,exynos4-sysreg" - for Exynos4 based SoCs, +		- "samsung,exynos5-sysreg" - for Exynos5 based SoCs. +		second value must be always "syscon".   - reg : offset and length of the register set. + +Example: +	syscon@10010000 { +		compatible = "samsung,exynos4-sysreg", "syscon"; +		reg = <0x10010000 0x400>; +	}; + +	syscon@10050000 { +		compatible = "samsung,exynos5-sysreg", "syscon"; +		reg = <0x10050000 0x5000>; +	}; diff --git a/Documentation/devicetree/bindings/arm/sti.txt b/Documentation/devicetree/bindings/arm/sti.txt new file mode 100644 index 00000000000..92f16c78bb6 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/sti.txt @@ -0,0 +1,15 @@ +ST STi Platforms Device Tree Bindings +--------------------------------------- + +Boards with the ST STiH415 SoC shall have the following properties: +Required root node property: +compatible = "st,stih415"; + +Boards with the ST STiH416 SoC shall have the following properties: +Required root node property: +compatible = "st,stih416"; + +Boards with the ST STiH407 SoC shall have the following properties: +Required root node property: +compatible = "st,stih407"; + diff --git a/Documentation/devicetree/bindings/arm/tegra.txt b/Documentation/devicetree/bindings/arm/tegra.txt index ed9c8533443..558ed4b4ef3 100644 --- a/Documentation/devicetree/bindings/arm/tegra.txt +++ b/Documentation/devicetree/bindings/arm/tegra.txt @@ -32,3 +32,8 @@ board-specific compatible values:    nvidia,whistler    toradex,colibri_t20-512    toradex,iris + +Trusted Foundations +------------------------------------------- +Tegra supports the Trusted Foundation secure monitor. See the +"tlm,trusted-foundations" binding's documentation for more details. diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt index 1608a54e90e..68ac65f82a1 100644 --- a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt +++ b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.txt @@ -9,6 +9,7 @@ Required properties:  - compatible : Should contain "nvidia,tegra<chip>-pmc".  - reg : Offset and length of the register set for the device  - 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:    "pclk" (The Tegra clock of that name),    "clk32k_in" (The 32KHz clock input to Tegra). diff --git a/Documentation/devicetree/bindings/arm/topology.txt b/Documentation/devicetree/bindings/arm/topology.txt new file mode 100644 index 00000000000..1061faf5f60 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/topology.txt @@ -0,0 +1,475 @@ +=========================================== +ARM topology binding description +=========================================== + +=========================================== +1 - Introduction +=========================================== + +In an ARM system, the hierarchy of CPUs is defined through three entities that +are used to describe the layout of physical CPUs in the system: + +- cluster +- core +- thread + +The cpu nodes (bindings defined in [1]) represent the devices that +correspond to physical CPUs and are to be mapped to the hierarchy levels. + +The bottom hierarchy level sits at core or thread level depending on whether +symmetric multi-threading (SMT) is supported or not. + +For instance in a system where CPUs support SMT, "cpu" nodes represent all +threads existing in the system and map to the hierarchy level "thread" above. +In systems where SMT is not supported "cpu" nodes represent all cores present +in the system and map to the hierarchy level "core" above. + +ARM topology bindings allow one to associate cpu nodes with hierarchical groups +corresponding to the system hierarchy; syntactically they are defined as device +tree nodes. + +The remainder of this document provides the topology bindings for ARM, based +on the ePAPR standard, available from: + +http://www.power.org/documentation/epapr-version-1-1/ + +If not stated otherwise, whenever a reference to a cpu node phandle is made its +value must point to a cpu node compliant with the cpu node bindings as +documented in [1]. +A topology description containing phandles to cpu nodes that are not compliant +with bindings standardized in [1] is therefore considered invalid. + +=========================================== +2 - cpu-map node +=========================================== + +The ARM CPU topology is defined within the cpu-map node, which is a direct +child of the cpus node and provides a container where the actual topology +nodes are listed. + +- cpu-map node + +	Usage: Optional - On ARM SMP systems provide CPUs topology to the OS. +			  ARM uniprocessor systems do not require a topology +			  description and therefore should not define a +			  cpu-map node. + +	Description: The cpu-map node is just a container node where its +		     subnodes describe the CPU topology. + +	Node name must be "cpu-map". + +	The cpu-map node's parent node must be the cpus node. + +	The cpu-map node's child nodes can be: + +	- one or more cluster nodes + +	Any other configuration is considered invalid. + +The cpu-map node can only contain three types of child nodes: + +- cluster node +- core node +- thread node + +whose bindings are described in paragraph 3. + +The nodes describing the CPU topology (cluster/core/thread) can only +be defined within the cpu-map node and every core/thread in the system +must be defined within the topology.  Any other configuration is +invalid and therefore must be ignored. + +=========================================== +2.1 - cpu-map child nodes naming convention +=========================================== + +cpu-map child nodes must follow a naming convention where the node name +must be "clusterN", "coreN", "threadN" depending on the node type (ie +cluster/core/thread) (where N = {0, 1, ...} is the node number; nodes which +are siblings within a single common parent node must be given a unique and +sequential N value, starting from 0). +cpu-map child nodes which do not share a common parent node can have the same +name (ie same number N as other cpu-map child nodes at different device tree +levels) since name uniqueness will be guaranteed by the device tree hierarchy. + +=========================================== +3 - cluster/core/thread node bindings +=========================================== + +Bindings for cluster/cpu/thread nodes are defined as follows: + +- cluster node + +	 Description: must be declared within a cpu-map node, one node +		      per cluster. A system can contain several layers of +		      clustering and cluster nodes can be contained in parent +		      cluster nodes. + +	The cluster node name must be "clusterN" as described in 2.1 above. +	A cluster node can not be a leaf node. + +	A cluster node's child nodes must be: + +	- one or more cluster nodes; or +	- one or more core nodes + +	Any other configuration is considered invalid. + +- core node + +	Description: must be declared in a cluster node, one node per core in +		     the cluster. If the system does not support SMT, core +		     nodes are leaf nodes, otherwise they become containers of +		     thread nodes. + +	The core node name must be "coreN" as described in 2.1 above. + +	A core node must be a leaf node if SMT is not supported. + +	Properties for core nodes that are leaf nodes: + +	- cpu +		Usage: required +		Value type: <phandle> +		Definition: a phandle to the cpu node that corresponds to the +			    core node. + +	If a core node is not a leaf node (CPUs supporting SMT) a core node's +	child nodes can be: + +	- one or more thread nodes + +	Any other configuration is considered invalid. + +- thread node + +	Description: must be declared in a core node, one node per thread +		     in the core if the system supports SMT. Thread nodes are +		     always leaf nodes in the device tree. + +	The thread node name must be "threadN" as described in 2.1 above. + +	A thread node must be a leaf node. + +	A thread node must contain the following property: + +	- cpu +		Usage: required +		Value type: <phandle> +		Definition: a phandle to the cpu node that corresponds to +			    the thread node. + +=========================================== +4 - Example dts +=========================================== + +Example 1 (ARM 64-bit, 16-cpu system, two clusters of clusters): + +cpus { +	#size-cells = <0>; +	#address-cells = <2>; + +	cpu-map { +		cluster0 { +			cluster0 { +				core0 { +					thread0 { +						cpu = <&CPU0>; +					}; +					thread1 { +						cpu = <&CPU1>; +					}; +				}; + +				core1 { +					thread0 { +						cpu = <&CPU2>; +					}; +					thread1 { +						cpu = <&CPU3>; +					}; +				}; +			}; + +			cluster1 { +				core0 { +					thread0 { +						cpu = <&CPU4>; +					}; +					thread1 { +						cpu = <&CPU5>; +					}; +				}; + +				core1 { +					thread0 { +						cpu = <&CPU6>; +					}; +					thread1 { +						cpu = <&CPU7>; +					}; +				}; +			}; +		}; + +		cluster1 { +			cluster0 { +				core0 { +					thread0 { +						cpu = <&CPU8>; +					}; +					thread1 { +						cpu = <&CPU9>; +					}; +				}; +				core1 { +					thread0 { +						cpu = <&CPU10>; +					}; +					thread1 { +						cpu = <&CPU11>; +					}; +				}; +			}; + +			cluster1 { +				core0 { +					thread0 { +						cpu = <&CPU12>; +					}; +					thread1 { +						cpu = <&CPU13>; +					}; +				}; +				core1 { +					thread0 { +						cpu = <&CPU14>; +					}; +					thread1 { +						cpu = <&CPU15>; +					}; +				}; +			}; +		}; +	}; + +	CPU0: cpu@0 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x0>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	CPU1: cpu@1 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x1>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	CPU2: cpu@100 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x100>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	CPU3: cpu@101 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x101>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	CPU4: cpu@10000 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x10000>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	CPU5: cpu@10001 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x10001>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	CPU6: cpu@10100 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x10100>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	CPU7: cpu@10101 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x0 0x10101>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	CPU8: cpu@100000000 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x0>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	CPU9: cpu@100000001 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x1>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	CPU10: cpu@100000100 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x100>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	CPU11: cpu@100000101 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x101>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	CPU12: cpu@100010000 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x10000>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	CPU13: cpu@100010001 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x10001>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	CPU14: cpu@100010100 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x10100>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; + +	CPU15: cpu@100010101 { +		device_type = "cpu"; +		compatible = "arm,cortex-a57"; +		reg = <0x1 0x10101>; +		enable-method = "spin-table"; +		cpu-release-addr = <0 0x20000000>; +	}; +}; + +Example 2 (ARM 32-bit, dual-cluster, 8-cpu system, no SMT): + +cpus { +	#size-cells = <0>; +	#address-cells = <1>; + +	cpu-map { +		cluster0 { +			core0 { +				cpu = <&CPU0>; +			}; +			core1 { +				cpu = <&CPU1>; +			}; +			core2 { +				cpu = <&CPU2>; +			}; +			core3 { +				cpu = <&CPU3>; +			}; +		}; + +		cluster1 { +			core0 { +				cpu = <&CPU4>; +			}; +			core1 { +				cpu = <&CPU5>; +			}; +			core2 { +				cpu = <&CPU6>; +			}; +			core3 { +				cpu = <&CPU7>; +			}; +		}; +	}; + +	CPU0: cpu@0 { +		device_type = "cpu"; +		compatible = "arm,cortex-a15"; +		reg = <0x0>; +	}; + +	CPU1: cpu@1 { +		device_type = "cpu"; +		compatible = "arm,cortex-a15"; +		reg = <0x1>; +	}; + +	CPU2: cpu@2 { +		device_type = "cpu"; +		compatible = "arm,cortex-a15"; +		reg = <0x2>; +	}; + +	CPU3: cpu@3 { +		device_type = "cpu"; +		compatible = "arm,cortex-a15"; +		reg = <0x3>; +	}; + +	CPU4: cpu@100 { +		device_type = "cpu"; +		compatible = "arm,cortex-a7"; +		reg = <0x100>; +	}; + +	CPU5: cpu@101 { +		device_type = "cpu"; +		compatible = "arm,cortex-a7"; +		reg = <0x101>; +	}; + +	CPU6: cpu@102 { +		device_type = "cpu"; +		compatible = "arm,cortex-a7"; +		reg = <0x102>; +	}; + +	CPU7: cpu@103 { +		device_type = "cpu"; +		compatible = "arm,cortex-a7"; +		reg = <0x103>; +	}; +}; + +=============================================================================== +[1] ARM Linux kernel documentation +    Documentation/devicetree/bindings/arm/cpus.txt diff --git a/Documentation/devicetree/bindings/arm/versatile-fpga-irq.txt b/Documentation/devicetree/bindings/arm/versatile-fpga-irq.txt index 9989eda755d..c9cf605bb99 100644 --- a/Documentation/devicetree/bindings/arm/versatile-fpga-irq.txt +++ b/Documentation/devicetree/bindings/arm/versatile-fpga-irq.txt @@ -29,3 +29,8 @@ pic: pic@14000000 {          clear-mask = <0xffffffff>;          valid-mask = <0x003fffff>;  }; + +Optional properties: +- interrupts: if the FPGA IRQ controller is cascaded, i.e. if its IRQ +  output is simply connected to the input of another IRQ controller, +  then the parent IRQ shall be specified in this property. diff --git a/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt b/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt index 5580e9c4bd8..00318d083c9 100644 --- a/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt +++ b/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt @@ -8,6 +8,8 @@ interrupt generation, MMC and NOR Flash control etc.  Required node properties:  - compatible value : = "arm,vexpress,sysreg";  - reg : physical base address and the size of the registers window + +Deprecated properties, replaced by GPIO subnodes (see below):  - gpio-controller : specifies that the node is a GPIO controller  - #gpio-cells : size of the GPIO specifier, should be 2:    - first cell is the pseudo-GPIO line number: @@ -16,35 +18,86 @@ Required node properties:      2 - NOR FLASH WPn    - second cell can take standard GPIO flags (currently ignored). +Control registers providing pseudo-GPIO lines must be represented +by subnodes, each of them requiring the following properties: +- compatible value : one of +			"arm,vexpress-sysreg,sys_led" +			"arm,vexpress-sysreg,sys_mci" +			"arm,vexpress-sysreg,sys_flash" +- gpio-controller : makes the node a GPIO controller +- #gpio-cells : size of the GPIO specifier, must be 2: +  - first cell is the function number: +    - for sys_led : 0..7 = LED 0..7 +    - for sys_mci : 0 = MMC CARDIN, 1 = MMC WPROT +    - for sys_flash : 0 = NOR FLASH WPn +  - second cell can take standard GPIO flags (currently ignored). +  Example:  	v2m_sysreg: sysreg@10000000 {   		compatible = "arm,vexpress-sysreg";   		reg = <0x10000000 0x1000>; -		gpio-controller; -		#gpio-cells = <2>; + +		v2m_led_gpios: sys_led@08 { +			compatible = "arm,vexpress-sysreg,sys_led"; +			gpio-controller; +			#gpio-cells = <2>; +		}; + +		v2m_mmc_gpios: sys_mci@48 { +			compatible = "arm,vexpress-sysreg,sys_mci"; +			gpio-controller; +			#gpio-cells = <2>; +		}; + +		v2m_flash_gpios: sys_flash@4c { +			compatible = "arm,vexpress-sysreg,sys_flash"; +			gpio-controller; +			#gpio-cells = <2>; +		};   	};  This block also can also act a bridge to the platform's configuration  bus via "system control" interface, addressing devices with site number,  position in the board stack, config controller, function and device -numbers - see motherboard's TRM for more details. - -The node describing a config device must refer to the sysreg node via -"arm,vexpress,config-bridge" phandle (can be also defined in the node's -parent) and relies on the board topology properties - see main vexpress -node documentation for more details. It must also define the following -property: -- arm,vexpress-sysreg,func : must contain two cells: -  - first cell defines function number (eg. 1 for clock generator, -    2 for voltage regulators etc.) -  - device number (eg. osc 0, osc 1 etc.) +numbers - see motherboard's TRM for more details. All configuration +controller accessible via this interface must reference the sysreg +node via "arm,vexpress,config-bridge" phandle and define appropriate +topology properties - see main vexpress node documentation for more +details. Each child of such node describes one function and must +define the following properties: +- compatible value : must be one of (corresponding to the TRM): +	"arm,vexpress-amp" +	"arm,vexpress-dvimode" +	"arm,vexpress-energy" +	"arm,vexpress-muxfpga" +	"arm,vexpress-osc" +	"arm,vexpress-power" +	"arm,vexpress-reboot" +	"arm,vexpress-reset" +	"arm,vexpress-scc" +	"arm,vexpress-shutdown" +	"arm,vexpress-temp" +	"arm,vexpress-volt" +- arm,vexpress-sysreg,func : must contain a set of two cells long groups: +  - first cell of each group defines the function number +    (eg. 1 for clock generator, 2 for voltage regulators etc.) +  - second cell of each group defines device number (eg. osc 0, +    osc 1 etc.) +  - some functions (eg. energy meter, with its 64 bit long counter) +    are using more than one function/device number pair  Example:  	mcc { +		compatible = "arm,vexpress,config-bus";  		arm,vexpress,config-bridge = <&v2m_sysreg>;  		osc@0 {  			compatible = "arm,vexpress-osc";  			arm,vexpress-sysreg,func = <1 0>;  		}; + +		energy@0 { +			compatible = "arm,vexpress-energy"; +			arm,vexpress-sysreg,func = <13 0>, <13 1>; +		};  	}; diff --git a/Documentation/devicetree/bindings/arm/vexpress.txt b/Documentation/devicetree/bindings/arm/vexpress.txt index ae49161e478..39844cd0bcc 100644 --- a/Documentation/devicetree/bindings/arm/vexpress.txt +++ b/Documentation/devicetree/bindings/arm/vexpress.txt @@ -80,12 +80,17 @@ but also control clock generators, voltage regulators, gather  environmental data like temperature, power consumption etc. Even  the video output switch (FPGA) is controlled that way. -Nodes describing devices controlled by this infrastructure should -point at the bridge device node: +The controllers are not mapped into normal memory address space +and must be accessed through bridges - other devices capable +of generating transactions on the configuration bus. + +The nodes describing configuration controllers must define +the following properties: +- compatible value: +	compatible = "arm,vexpress,config-bus";  - bridge phandle:  	arm,vexpress,config-bridge = <phandle>; -This property can be also defined in a parent node (eg. for a DCC) -and is effective for all children. +and children describing available functions.  Platform topology @@ -197,7 +202,7 @@ Example of a VE tile description (simplified)  	};  	dcc { -		compatible = "simple-bus"; +		compatible = "arm,vexpress,config-bus";  		arm,vexpress,config-bridge = <&v2m_sysreg>;  		osc@0 { diff --git a/Documentation/devicetree/bindings/arm/vic.txt b/Documentation/devicetree/bindings/arm/vic.txt index 266716b2343..dd527216c5f 100644 --- a/Documentation/devicetree/bindings/arm/vic.txt +++ b/Documentation/devicetree/bindings/arm/vic.txt @@ -18,6 +18,15 @@ Required properties:  Optional properties:  - interrupts : Interrupt source for parent controllers if the VIC is nested. +- valid-mask : A one cell big bit mask of valid interrupt sources. Each bit +  represents single interrupt source, starting from source 0 at LSb and ending +  at source 31 at MSb. A bit that is set means that the source is wired and +  clear means otherwise. If unspecified, defaults to all valid. +- valid-wakeup-mask : A one cell big bit mask of interrupt sources that can be +  configured as wake up source for the system. Order of bits is the same as for +  valid-mask property. A set bit means that this interrupt source can be +  configured as a wake up source for the system. If unspecied, defaults to all +  interrupt sources configurable as wake up sources.  Example: @@ -26,4 +35,7 @@ Example:  		interrupt-controller;  		#interrupt-cells = <1>;  		reg = <0x60000 0x1000>; + +		valid-mask = <0xffffff7f>; +		valid-wakeup-mask = <0x0000ff7f>;  	}; diff --git a/Documentation/devicetree/bindings/ata/ahci-platform.txt b/Documentation/devicetree/bindings/ata/ahci-platform.txt index 89de1564950..c96d8dcf98f 100644 --- a/Documentation/devicetree/bindings/ata/ahci-platform.txt +++ b/Documentation/devicetree/bindings/ata/ahci-platform.txt @@ -4,17 +4,39 @@ SATA nodes are defined to describe on-chip Serial ATA controllers.  Each SATA controller should have its own node.  Required properties: -- compatible        : compatible list, contains "snps,spear-ahci" +- compatible        : compatible string, one of: +  - "allwinner,sun4i-a10-ahci" +  - "fsl,imx53-ahci" +  - "fsl,imx6q-ahci" +  - "hisilicon,hisi-ahci" +  - "ibm,476gtr-ahci" +  - "marvell,armada-380-ahci" +  - "snps,dwc-ahci" +  - "snps,exynos5440-ahci" +  - "snps,spear-ahci"  - interrupts        : <interrupt mapping for SATA IRQ>  - reg               : <registers mapping>  Optional properties:  - dma-coherent      : Present if dma operations are coherent +- clocks            : a list of phandle + clock specifier pairs +- target-supply     : regulator for SATA target power -Example: +"fsl,imx53-ahci", "fsl,imx6q-ahci" required properties: +- clocks            : must contain the sata, sata_ref and ahb clocks +- clock-names       : must contain "ahb" for the ahb clock + +Examples:          sata@ffe08000 {  		compatible = "snps,spear-ahci";  		reg = <0xffe08000 0x1000>;  		interrupts = <115>; -          }; + +	ahci: sata@01c18000 { +		compatible = "allwinner,sun4i-a10-ahci"; +		reg = <0x01c18000 0x1000>; +		interrupts = <56>; +		clocks = <&pll6 0>, <&ahb_gates 25>; +		target-supply = <®_ahci_5v>; +	}; diff --git a/Documentation/devicetree/bindings/ata/apm-xgene.txt b/Documentation/devicetree/bindings/ata/apm-xgene.txt new file mode 100644 index 00000000000..a668f0e7d00 --- /dev/null +++ b/Documentation/devicetree/bindings/ata/apm-xgene.txt @@ -0,0 +1,79 @@ +* APM X-Gene 6.0 Gb/s SATA host controller nodes + +SATA host controller nodes are defined to describe on-chip Serial ATA +controllers. Each SATA controller (pair of ports) have its own node. + +Required properties: +- compatible		: Shall contain: +  * "apm,xgene-ahci" +- reg			: First memory resource shall be the AHCI memory +			  resource. +			  Second memory resource shall be the host controller +			  core memory resource. +			  Third memory resource shall be the host controller +			  diagnostic memory resource. +			  4th memory resource shall be the host controller +			  AXI memory resource. +			  5th optional memory resource shall be the host +			  controller MUX memory resource if required. +- interrupts		: Interrupt-specifier for SATA host controller IRQ. +- clocks		: Reference to the clock entry. +- phys			: A list of phandles + phy-specifiers, one for each +			  entry in phy-names. +- phy-names		: Should contain: +  * "sata-phy" for the SATA 6.0Gbps PHY + +Optional properties: +- dma-coherent		: Present if dma operations are coherent +- status		: Shall be "ok" if enabled or "disabled" if disabled. +			  Default is "ok". + +Example: +		sataclk: sataclk { +			compatible = "fixed-clock"; +			#clock-cells = <1>; +			clock-frequency = <100000000>; +			clock-output-names = "sataclk"; +		}; + +		phy2: phy@1f22a000 { +			compatible = "apm,xgene-phy"; +			reg = <0x0 0x1f22a000 0x0 0x100>; +			#phy-cells = <1>; +		}; + +		phy3: phy@1f23a000 { +			compatible = "apm,xgene-phy"; +			reg = <0x0 0x1f23a000 0x0 0x100>; +			#phy-cells = <1>; +		}; + +		sata2: sata@1a400000 { +			compatible = "apm,xgene-ahci"; +			reg = <0x0 0x1a400000 0x0 0x1000>, +			      <0x0 0x1f220000 0x0 0x1000>, +			      <0x0 0x1f22d000 0x0 0x1000>, +			      <0x0 0x1f22e000 0x0 0x1000>, +			      <0x0 0x1f227000 0x0 0x1000>; +			interrupts = <0x0 0x87 0x4>; +			dma-coherent; +			status = "ok"; +			clocks = <&sataclk 0>; +			phys = <&phy2 0>; +			phy-names = "sata-phy"; +		}; + +		sata3: sata@1a800000 { +			compatible = "apm,xgene-ahci-pcie"; +			reg = <0x0 0x1a800000 0x0 0x1000>, +			      <0x0 0x1f230000 0x0 0x1000>, +			      <0x0 0x1f23d000 0x0 0x1000>, +			      <0x0 0x1f23e000 0x0 0x1000>, +			      <0x0 0x1f237000 0x0 0x1000>; +			interrupts = <0x0 0x88 0x4>; +			dma-coherent; +			status = "ok"; +			clocks = <&sataclk 0>; +			phys = <&phy3 0>; +			phy-names = "sata-phy"; +		}; diff --git a/Documentation/devicetree/bindings/ata/exynos-sata-phy.txt b/Documentation/devicetree/bindings/ata/exynos-sata-phy.txt deleted file mode 100644 index 37824fac688..00000000000 --- a/Documentation/devicetree/bindings/ata/exynos-sata-phy.txt +++ /dev/null @@ -1,14 +0,0 @@ -* Samsung SATA PHY Controller - -SATA PHY nodes are defined to describe on-chip SATA Physical layer controllers. -Each SATA PHY controller should have its own node. - -Required properties: -- compatible        : compatible list, contains "samsung,exynos5-sata-phy" -- reg               : <registers mapping> - -Example: -        sata@ffe07000 { -                compatible = "samsung,exynos5-sata-phy"; -                reg = <0xffe07000 0x1000>; -        }; diff --git a/Documentation/devicetree/bindings/ata/exynos-sata.txt b/Documentation/devicetree/bindings/ata/exynos-sata.txt index 0849f1025e3..cb48448247e 100644 --- a/Documentation/devicetree/bindings/ata/exynos-sata.txt +++ b/Documentation/devicetree/bindings/ata/exynos-sata.txt @@ -4,14 +4,27 @@ SATA nodes are defined to describe on-chip Serial ATA controllers.  Each SATA controller should have its own node.  Required properties: -- compatible        : compatible list, contains "samsung,exynos5-sata" -- interrupts        : <interrupt mapping for SATA IRQ> -- reg               : <registers mapping> -- samsung,sata-freq : <frequency in MHz> +- compatible		: compatible list, contains "samsung,exynos5-sata" +- interrupts		: <interrupt mapping for SATA IRQ> +- reg			: <registers mapping> +- samsung,sata-freq	: <frequency in MHz> +- phys			: Must contain exactly one entry as specified +			  in phy-bindings.txt +- phy-names		: Must be "sata-phy" + +Optional properties: +- clocks		: Must contain an entry for each entry in clock-names. +- clock-names		: Shall be "sata" for the external SATA bus clock, +			  and "sclk_sata" for the internal controller clock.  Example: -        sata@ffe08000 { -                compatible = "samsung,exynos5-sata"; -                reg = <0xffe08000 0x1000>; -                interrupts = <115>; -        }; +	sata@122f0000 { +		compatible = "snps,dwc-ahci"; +		samsung,sata-freq = <66>; +		reg = <0x122f0000 0x1ff>; +		interrupts = <0 115 0>; +		clocks = <&clock 277>, <&clock 143>; +		clock-names = "sata", "sclk_sata"; +		phys = <&sata_phy>; +		phy-names = "sata-phy"; +	}; diff --git a/Documentation/devicetree/bindings/ata/marvell.txt b/Documentation/devicetree/bindings/ata/marvell.txt index b5cdd20cde9..1c8351604d3 100644 --- a/Documentation/devicetree/bindings/ata/marvell.txt +++ b/Documentation/devicetree/bindings/ata/marvell.txt @@ -1,7 +1,7 @@  * Marvell Orion SATA  Required Properties: -- compatibility : "marvell,orion-sata" +- compatibility : "marvell,orion-sata" or "marvell,armada-370-sata"  - reg           : Address range of controller  - interrupts    : Interrupt controller is using  - nr-ports      : Number of SATA ports in use. diff --git a/Documentation/devicetree/bindings/ata/sata_rcar.txt b/Documentation/devicetree/bindings/ata/sata_rcar.txt new file mode 100644 index 00000000000..1e6111333fa --- /dev/null +++ b/Documentation/devicetree/bindings/ata/sata_rcar.txt @@ -0,0 +1,18 @@ +* Renesas R-Car SATA + +Required properties: +- compatible		: should contain one of the following: +			  - "renesas,sata-r8a7779" for R-Car H1 +			  - "renesas,sata-r8a7790" for R-Car H2 +			  - "renesas,sata-r8a7791" for R-Car M2 +- reg			: address and length of the SATA registers; +- interrupts		: must consist of one interrupt specifier. + +Example: + +sata: sata@fc600000 { +	compatible = "renesas,sata-r8a7779"; +	reg = <0xfc600000 0x2000>; +	interrupt-parent = <&gic>; +	interrupts = <0 100 IRQ_TYPE_LEVEL_HIGH>; +}; diff --git a/Documentation/devicetree/bindings/bus/brcm,gisb-arb.txt b/Documentation/devicetree/bindings/bus/brcm,gisb-arb.txt new file mode 100644 index 00000000000..e2d501d20c9 --- /dev/null +++ b/Documentation/devicetree/bindings/bus/brcm,gisb-arb.txt @@ -0,0 +1,30 @@ +Broadcom GISB bus Arbiter controller + +Required properties: + +- compatible: should be "brcm,gisb-arb" +- reg: specifies the base physical address and size of the registers +- interrupt-parent: specifies the phandle to the parent interrupt controller +  this arbiter gets interrupt line from +- interrupts: specifies the two interrupts (timeout and TEA) to be used from +  the parent interrupt controller + +Optional properties: + +- brcm,gisb-arb-master-mask: 32-bits wide bitmask used to specify which GISB +  masters are valid at the system level +- brcm,gisb-arb-master-names: string list of the litteral name of the GISB +  masters. Should match the number of bits set in brcm,gisb-master-mask and +  the order in which they appear + +Example: + +gisb-arb@f0400000 { +	compatible = "brcm,gisb-arb"; +	reg = <0xf0400000 0x800>; +	interrupts = <0>, <2>; +	interrupt-parent = <&sun_l2_intc>; + +	brcm,gisb-arb-master-mask = <0x7>; +	brcm,gisb-arb-master-names = "bsp_0", "scpu_0", "cpu_0"; +}; diff --git a/Documentation/devicetree/bindings/bus/imx-weim.txt b/Documentation/devicetree/bindings/bus/imx-weim.txt index 0fd76c40520..6630d842c7a 100644 --- a/Documentation/devicetree/bindings/bus/imx-weim.txt +++ b/Documentation/devicetree/bindings/bus/imx-weim.txt @@ -8,7 +8,12 @@ The actual devices are instantiated from the child nodes of a WEIM node.  Required properties: - - compatible:		Should be set to "fsl,<soc>-weim" + - compatible:		Should contain one of the following: +			  "fsl,imx1-weim" +			  "fsl,imx27-weim" +			  "fsl,imx51-weim" +			  "fsl,imx50-weim" +			  "fsl,imx6q-weim"   - reg:			A resource specifier for the register space  			(see the example below)   - clocks:		the clock, see the example below. @@ -19,6 +24,26 @@ Required properties:  			   <cs-number> 0 <physical address of mapping> <size> +Optional properties: + + - fsl,weim-cs-gpr:	For "fsl,imx50-weim" and "fsl,imx6q-weim" type of +			devices, it should be the phandle to the system General +			Purpose Register controller that contains WEIM CS GPR +			register, e.g. IOMUXC_GPR1 on i.MX6Q.  IOMUXC_GPR1[11:0] +			should be set up as one of the following 4 possible +			values depending on the CS space configuration. + +			IOMUXC_GPR1[11:0]    CS0    CS1    CS2    CS3 +			--------------------------------------------- +				05	    128M     0M     0M     0M +				033          64M    64M     0M     0M +				0113         64M    32M    32M     0M +				01111        32M    32M    32M    32M + +			In case that the property is absent, the reset value or +			what bootloader sets up in IOMUXC_GPR1[11:0] will be +			used. +  Timing property for child nodes. It is mandatory, not optional.   - fsl,weim-cs-timing:	The timing array, contains timing values for the @@ -43,6 +68,7 @@ Example for an imx6q-sabreauto board, the NOR flash connected to the WEIM:  		#address-cells = <2>;  		#size-cells = <1>;  		ranges = <0 0 0x08000000 0x08000000>; +		fsl,weim-cs-gpr = <&gpr>;  		nor@0,0 {  			compatible = "cfi-flash"; diff --git a/Documentation/devicetree/bindings/bus/mvebu-mbus.txt b/Documentation/devicetree/bindings/bus/mvebu-mbus.txt index 7586fb68c07..5fa44f52a0b 100644 --- a/Documentation/devicetree/bindings/bus/mvebu-mbus.txt +++ b/Documentation/devicetree/bindings/bus/mvebu-mbus.txt @@ -197,7 +197,7 @@ to be set by the operating system and that are guaranteed to be free of overlaps  with one another or with the system memory ranges.  Each entry in the property refers to exactly one window. If the operating system -choses to use a different set of mbus windows, it must ensure that any address +chooses to use a different set of mbus windows, it must ensure that any address  translations performed from downstream devices are adapted accordingly.  The operating system may insert additional mbus windows that do not conflict diff --git a/Documentation/devicetree/bindings/clock/altr_socfpga.txt b/Documentation/devicetree/bindings/clock/altr_socfpga.txt index 0045433eae1..f72e80e0dad 100644 --- a/Documentation/devicetree/bindings/clock/altr_socfpga.txt +++ b/Documentation/devicetree/bindings/clock/altr_socfpga.txt @@ -21,5 +21,10 @@ Optional properties:  - fixed-divider : If clocks have a fixed divider value, use this property.  - clk-gate : For "socfpga-gate-clk", clk-gate contains the gating register          and the bit index. -- div-reg : For "socfpga-gate-clk", div-reg contains the divider register, bit shift, -        and width. +- div-reg : For "socfpga-gate-clk" and "socfpga-periph-clock", div-reg contains +	the divider register, bit shift, and width. +- clk-phase : For the sdmmc_clk, contains the value of the clock phase that controls +	the SDMMC CIU clock. The first value is the clk_sample(smpsel), and the second +	value is the cclk_in_drv(drvsel). The clk-phase is used to enable the correct +	hold/delay times that is needed for the SD/MMC CIU clock. The values of both +	can be 0-315 degrees, in 45 degree increments. diff --git a/Documentation/devicetree/bindings/clock/arm-integrator.txt b/Documentation/devicetree/bindings/clock/arm-integrator.txt new file mode 100644 index 00000000000..652914b17b9 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/arm-integrator.txt @@ -0,0 +1,34 @@ +Clock bindings for ARM Integrator Core Module clocks + +Auxilary Oscillator Clock + +This is a configurable clock fed from a 24 MHz chrystal, +used for generating e.g. video clocks. It is located on the +core module and there is only one of these. + +This clock node *must* be a subnode of the core module, since +it obtains the base address for it's address range from its +parent node. + + +Required properties: +- compatible: must be "arm,integrator-cm-auxosc" +- #clock-cells: must be <0> + +Optional properties: +- clocks: parent clock(s) + +Example: + +core-module@10000000 { +	xtal24mhz: xtal24mhz@24M { +		#clock-cells = <0>; +		compatible = "fixed-clock"; +		clock-frequency = <24000000>; +	}; +	auxosc: cm_aux_osc@25M { +		#clock-cells = <0>; +		compatible = "arm,integrator-cm-auxosc"; +		clocks = <&xtal24mhz>; +	}; +}; diff --git a/Documentation/devicetree/bindings/clock/at91-clock.txt b/Documentation/devicetree/bindings/clock/at91-clock.txt new file mode 100644 index 00000000000..b3d544ca522 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/at91-clock.txt @@ -0,0 +1,449 @@ +Device Tree Clock bindings for arch-at91 + +This binding uses the common clock binding[1]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- compatible : shall be one of the following: +	"atmel,at91sam9x5-sckc": +		at91 SCKC (Slow Clock Controller) +		This node contains the slow clock definitions. + +	"atmel,at91sam9x5-clk-slow-osc": +		at91 slow oscillator + +	"atmel,at91sam9x5-clk-slow-rc-osc": +		at91 internal slow RC oscillator + +	"atmel,at91rm9200-pmc" or +	"atmel,at91sam9g45-pmc" or +	"atmel,at91sam9n12-pmc" or +	"atmel,at91sam9x5-pmc" or +	"atmel,sama5d3-pmc": +		at91 PMC (Power Management Controller) +		All at91 specific clocks (clocks defined below) must be child +		node of the PMC node. + +	"atmel,at91sam9x5-clk-slow" (under sckc node) +	or +	"atmel,at91sam9260-clk-slow" (under pmc node): +		at91 slow clk + +	"atmel,at91rm9200-clk-main-osc" +	"atmel,at91sam9x5-clk-main-rc-osc" +		at91 main clk sources + +	"atmel,at91sam9x5-clk-main" +	"atmel,at91rm9200-clk-main": +		at91 main clock + +	"atmel,at91rm9200-clk-master" or +	"atmel,at91sam9x5-clk-master": +		at91 master clock + +	"atmel,at91sam9x5-clk-peripheral" or +	"atmel,at91rm9200-clk-peripheral": +		at91 peripheral clocks + +	"atmel,at91rm9200-clk-pll" or +	"atmel,at91sam9g45-clk-pll" or +	"atmel,at91sam9g20-clk-pllb" or +	"atmel,sama5d3-clk-pll": +		at91 pll clocks + +	"atmel,at91sam9x5-clk-plldiv": +		at91 plla divisor + +	"atmel,at91rm9200-clk-programmable" or +	"atmel,at91sam9g45-clk-programmable" or +	"atmel,at91sam9x5-clk-programmable": +		at91 programmable clocks + +	"atmel,at91sam9x5-clk-smd": +		at91 SMD (Soft Modem) clock + +	"atmel,at91rm9200-clk-system": +		at91 system clocks + +	"atmel,at91rm9200-clk-usb" or +	"atmel,at91sam9x5-clk-usb" or +	"atmel,at91sam9n12-clk-usb": +		at91 usb clock + +	"atmel,at91sam9x5-clk-utmi": +		at91 utmi clock + +Required properties for SCKC node: +- reg : defines the IO memory reserved for the SCKC. +- #size-cells : shall be 0 (reg is used to encode clk id). +- #address-cells : shall be 1 (reg is used to encode clk id). + + +For example: +	sckc: sckc@fffffe50 { +		compatible = "atmel,sama5d3-pmc"; +		reg = <0xfffffe50 0x4> +		#size-cells = <0>; +		#address-cells = <1>; + +		/* put at91 slow clocks here */ +	}; + + +Required properties for internal slow RC oscillator: +- #clock-cells : from common clock binding; shall be set to 0. +- clock-frequency : define the internal RC oscillator frequency. + +Optional properties: +- clock-accuracy : define the internal RC oscillator accuracy. + +For example: +	slow_rc_osc: slow_rc_osc { +		compatible = "atmel,at91sam9x5-clk-slow-rc-osc"; +		clock-frequency = <32768>; +		clock-accuracy = <50000000>; +	}; + +Required properties for slow oscillator: +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : shall encode the main osc source clk sources (see atmel datasheet). + +Optional properties: +- atmel,osc-bypass : boolean property. Set this when a clock signal is directly +  provided on XIN. + +For example: +	slow_osc: slow_osc { +		compatible = "atmel,at91rm9200-clk-slow-osc"; +		#clock-cells = <0>; +		clocks = <&slow_xtal>; +	}; + +Required properties for slow clock: +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : shall encode the slow clk sources (see atmel datasheet). + +For example: +	clk32k: slck { +		compatible = "atmel,at91sam9x5-clk-slow"; +		#clock-cells = <0>; +		clocks = <&slow_rc_osc &slow_osc>; +	}; + +Required properties for PMC node: +- reg : defines the IO memory reserved for the PMC. +- #size-cells : shall be 0 (reg is used to encode clk id). +- #address-cells : shall be 1 (reg is used to encode clk id). +- interrupts : shall be set to PMC interrupt line. +- interrupt-controller : tell that the PMC is an interrupt controller. +- #interrupt-cells : must be set to 1. The first cell encodes the interrupt id, +	and reflect the bit position in the PMC_ER/DR/SR registers. +	You can use the dt macros defined in dt-bindings/clock/at91.h. +	0 (AT91_PMC_MOSCS) -> main oscillator ready +	1 (AT91_PMC_LOCKA) -> PLL A ready +	2 (AT91_PMC_LOCKB) -> PLL B ready +	3 (AT91_PMC_MCKRDY) -> master clock ready +	6 (AT91_PMC_LOCKU) -> UTMI PLL clock ready +	8 .. 15 (AT91_PMC_PCKRDY(id)) -> programmable clock ready +	16 (AT91_PMC_MOSCSELS) -> main oscillator selected +	17 (AT91_PMC_MOSCRCS) -> RC main oscillator stabilized +	18 (AT91_PMC_CFDEV) -> clock failure detected + +For example: +	pmc: pmc@fffffc00 { +		compatible = "atmel,sama5d3-pmc"; +		interrupts = <1 4 7>; +		interrupt-controller; +		#interrupt-cells = <2>; +		#size-cells = <0>; +		#address-cells = <1>; + +		/* put at91 clocks here */ +	}; + +Required properties for main clock internal RC oscillator: +- interrupt-parent : must reference the PMC node. +- interrupts : shall be set to "<0>". +- clock-frequency : define the internal RC oscillator frequency. + +Optional properties: +- clock-accuracy : define the internal RC oscillator accuracy. + +For example: +	main_rc_osc: main_rc_osc { +		compatible = "atmel,at91sam9x5-clk-main-rc-osc"; +		interrupt-parent = <&pmc>; +		interrupts = <0>; +		clock-frequency = <12000000>; +		clock-accuracy = <50000000>; +	}; + +Required properties for main clock oscillator: +- interrupt-parent : must reference the PMC node. +- interrupts : shall be set to "<0>". +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : shall encode the main osc source clk sources (see atmel datasheet). + +Optional properties: +- atmel,osc-bypass : boolean property. Specified if a clock signal is provided +  on XIN. + +  clock signal is directly provided on XIN pin. + +For example: +	main_osc: main_osc { +		compatible = "atmel,at91rm9200-clk-main-osc"; +		interrupt-parent = <&pmc>; +		interrupts = <0>; +		#clock-cells = <0>; +		clocks = <&main_xtal>; +	}; + +Required properties for main clock: +- interrupt-parent : must reference the PMC node. +- interrupts : shall be set to "<0>". +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : shall encode the main clk sources (see atmel datasheet). + +For example: +	main: mainck { +		compatible = "atmel,at91sam9x5-clk-main"; +		interrupt-parent = <&pmc>; +		interrupts = <0>; +		#clock-cells = <0>; +		clocks = <&main_rc_osc &main_osc>; +	}; + +Required properties for master clock: +- interrupt-parent : must reference the PMC node. +- interrupts : shall be set to "<3>". +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : shall be the master clock sources (see atmel datasheet) phandles. +	e.g. "<&ck32k>, <&main>, <&plla>, <&pllb>". +- atmel,clk-output-range : minimum and maximum clock frequency (two u32 +			   fields). +	   e.g. output = <0 133000000>; <=> 0 to 133MHz. +- atmel,clk-divisors : master clock divisors table (four u32 fields). +		0 <=> reserved value. +		e.g. divisors = <1 2 4 6>; +- atmel,master-clk-have-div3-pres : some SoC use the reserved value 7 in the +				    PRES field as CLOCK_DIV3 (e.g sam9x5). + +For example: +	mck: mck { +		compatible = "atmel,at91rm9200-clk-master"; +		interrupt-parent = <&pmc>; +		interrupts = <3>; +		#clock-cells = <0>; +		atmel,clk-output-range = <0 133000000>; +		atmel,clk-divisors = <1 2 4 0>; +	}; + +Required properties for peripheral clocks: +- #size-cells : shall be 0 (reg is used to encode clk id). +- #address-cells : shall be 1 (reg is used to encode clk id). +- clocks : shall be the master clock phandle. +	e.g. clocks = <&mck>; +- name: device tree node describing a specific system clock. +	* #clock-cells : from common clock binding; shall be set to 0. +	* reg: peripheral id. See Atmel's datasheets to get a full +	  list of peripheral ids. +	* atmel,clk-output-range : minimum and maximum clock frequency +	  (two u32 fields). Only valid on at91sam9x5-clk-peripheral +	  compatible IPs. + +For example: +	periph: periphck { +		compatible = "atmel,at91sam9x5-clk-peripheral"; +		#size-cells = <0>; +		#address-cells = <1>; +		clocks = <&mck>; + +		ssc0_clk { +			#clock-cells = <0>; +			reg = <2>; +			atmel,clk-output-range = <0 133000000>; +		}; + +		usart0_clk { +			#clock-cells = <0>; +			reg = <3>; +			atmel,clk-output-range = <0 66000000>; +		}; +	}; + + +Required properties for pll clocks: +- interrupt-parent : must reference the PMC node. +- interrupts : shall be set to "<1>". +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : shall be the main clock phandle. +- reg : pll id. +	0 -> PLL A +	1 -> PLL B +- atmel,clk-input-range : minimum and maximum source clock frequency (two u32 +			  fields). +	  e.g. input = <1 32000000>; <=> 1 to 32MHz. +- #atmel,pll-clk-output-range-cells : number of cells reserved for pll output +				      range description. Sould be set to 2, 3 +				      or 4. +	* 1st and 2nd cells represent the frequency range (min-max). +	* 3rd cell is optional and represents the OUT field value for the given +	  range. +	* 4th cell is optional and represents the ICPLL field (PLLICPR +	  register) +- atmel,pll-clk-output-ranges : pll output frequency ranges + optional parameter +				depending on #atmel,pll-output-range-cells +				property value. + +For example: +	plla: pllack { +		compatible = "atmel,at91sam9g45-clk-pll"; +		interrupt-parent = <&pmc>; +		interrupts = <1>; +		#clock-cells = <0>; +		clocks = <&main>; +		reg = <0>; +		atmel,clk-input-range = <2000000 32000000>; +		#atmel,pll-clk-output-range-cells = <4>; +		atmel,pll-clk-output-ranges = <74500000 800000000 0 0 +					       69500000 750000000 1 0 +					       64500000 700000000 2 0 +					       59500000 650000000 3 0 +					       54500000 600000000 0 1 +					       49500000 550000000 1 1 +					       44500000 500000000 2 1 +					       40000000 450000000 3 1>; +	}; + +Required properties for plldiv clocks (plldiv = pll / 2): +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : shall be the plla clock phandle. + +The pll divisor is equal to 2 and cannot be changed. + +For example: +	plladiv: plladivck { +		compatible = "atmel,at91sam9x5-clk-plldiv"; +		#clock-cells = <0>; +		clocks = <&plla>; +	}; + +Required properties for programmable clocks: +- interrupt-parent : must reference the PMC node. +- #size-cells : shall be 0 (reg is used to encode clk id). +- #address-cells : shall be 1 (reg is used to encode clk id). +- clocks : shall be the programmable clock source phandles. +	e.g. clocks = <&clk32k>, <&main>, <&plla>, <&pllb>; +- name: device tree node describing a specific prog clock. +	* #clock-cells : from common clock binding; shall be set to 0. +	* reg : programmable clock id (register offset from  PCKx +			 register). +	* interrupts : shall be set to "<(8 + id)>". + +For example: +	prog: progck { +		compatible = "atmel,at91sam9g45-clk-programmable"; +		#size-cells = <0>; +		#address-cells = <1>; +		interrupt-parent = <&pmc>; +		clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>, <&mck>; + +		prog0 { +			#clock-cells = <0>; +			reg = <0>; +			interrupts = <8>; +		}; + +		prog1 { +			#clock-cells = <0>; +			reg = <1>; +			interrupts = <9>; +		}; +	}; + + +Required properties for smd clock: +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : shall be the smd clock source phandles. +	e.g. clocks = <&plladiv>, <&utmi>; + +For example: +	smd: smdck { +		compatible = "atmel,at91sam9x5-clk-smd"; +		#clock-cells = <0>; +		clocks = <&plladiv>, <&utmi>; +	}; + +Required properties for system clocks: +- #size-cells : shall be 0 (reg is used to encode clk id). +- #address-cells : shall be 1 (reg is used to encode clk id). +- name: device tree node describing a specific system clock. +	* #clock-cells : from common clock binding; shall be set to 0. +	* reg: system clock id (bit position in SCER/SCDR/SCSR registers). +	      See Atmel's datasheet to get a full list of system clock ids. + +For example: +	system: systemck { +		compatible = "atmel,at91rm9200-clk-system"; +		#address-cells = <1>; +		#size-cells = <0>; + +		ddrck { +			#clock-cells = <0>; +			reg = <2>; +			clocks = <&mck>; +		}; + +		uhpck { +			#clock-cells = <0>; +			reg = <6>; +			clocks = <&usb>; +		}; + +		udpck { +			#clock-cells = <0>; +			reg = <7>; +			clocks = <&usb>; +		}; +	}; + + +Required properties for usb clock: +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : shall be the smd clock source phandles. +	e.g. clocks = <&pllb>; +- atmel,clk-divisors (only available for "atmel,at91rm9200-clk-usb"): +	usb clock divisor table. +	e.g. divisors = <1 2 4 0>; + +For example: +	usb: usbck { +		compatible = "atmel,at91sam9x5-clk-usb"; +		#clock-cells = <0>; +		clocks = <&plladiv>, <&utmi>; +	}; + +	usb: usbck { +		compatible = "atmel,at91rm9200-clk-usb"; +		#clock-cells = <0>; +		clocks = <&pllb>; +		atmel,clk-divisors = <1 2 4 0>; +	}; + + +Required properties for utmi clock: +- interrupt-parent : must reference the PMC node. +- interrupts : shall be set to "<AT91_PMC_LOCKU IRQ_TYPE_LEVEL_HIGH>". +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : shall be the main clock source phandle. + +For example: +	utmi: utmick { +		compatible = "atmel,at91sam9x5-clk-utmi"; +		interrupt-parent = <&pmc>; +		interrupts = <AT91_PMC_LOCKU IRQ_TYPE_LEVEL_HIGH>; +		#clock-cells = <0>; +		clocks = <&main>; +	}; diff --git a/Documentation/devicetree/bindings/clock/axi-clkgen.txt b/Documentation/devicetree/bindings/clock/axi-clkgen.txt index 028b493e97f..20e1704e7df 100644 --- a/Documentation/devicetree/bindings/clock/axi-clkgen.txt +++ b/Documentation/devicetree/bindings/clock/axi-clkgen.txt @@ -5,7 +5,7 @@ This binding uses the common clock binding[1].  [1] Documentation/devicetree/bindings/clock/clock-bindings.txt  Required properties: -- compatible : shall be "adi,axi-clkgen". +- compatible : shall be "adi,axi-clkgen-1.00.a" or "adi,axi-clkgen-2.00.a".  - #clock-cells : from common clock binding; Should always be set to 0.  - reg : Address and length of the axi-clkgen register set.  - clocks : Phandle and clock specifier for the parent clock. diff --git a/Documentation/devicetree/bindings/clock/bcm-kona-clock.txt b/Documentation/devicetree/bindings/clock/bcm-kona-clock.txt new file mode 100644 index 00000000000..5286e260fca --- /dev/null +++ b/Documentation/devicetree/bindings/clock/bcm-kona-clock.txt @@ -0,0 +1,139 @@ +Broadcom Kona Family Clocks + +This binding is associated with Broadcom SoCs having "Kona" style +clock control units (CCUs).  A CCU is a clock provider that manages +a set of clock signals.  Each CCU is represented by a node in the +device tree. + +This binding uses the common clock binding: +    Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- compatible +	Shall have a value of the form "brcm,<model>-<which>-ccu", +	where <model> is a Broadcom SoC model number and <which> is +	the name of a defined CCU.  For example: +	    "brcm,bcm11351-root-ccu" +	The compatible strings used for each supported SoC family +	are defined below. +- reg +	Shall define the base and range of the address space +	containing clock control registers +- #clock-cells +	Shall have value <1>.  The permitted clock-specifier values +	are defined below. +- clock-output-names +	Shall be an ordered list of strings defining the names of +	the clocks provided by the CCU. + +Device tree example: + +	slave_ccu: slave_ccu { +		compatible = "brcm,bcm11351-slave-ccu"; +		reg = <0x3e011000 0x0f00>; +		#clock-cells = <1>; +		clock-output-names = "uartb", +				     "uartb2", +				     "uartb3", +				     "uartb4"; +	}; + +	ref_crystal_clk: ref_crystal { +		#clock-cells = <0>; +		compatible = "fixed-clock"; +		clock-frequency = <26000000>; +	}; + +	uart@3e002000 { +		compatible = "brcm,bcm11351-dw-apb-uart", "snps,dw-apb-uart"; +		status = "disabled"; +		reg = <0x3e002000 0x1000>; +		clocks = <&slave_ccu BCM281XX_SLAVE_CCU_UARTB3>; +		interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; +		reg-shift = <2>; +		reg-io-width = <4>; +	}; + +BCM281XX family +--------------- +CCU compatible string values for SoCs in the BCM281XX family are: +    "brcm,bcm11351-root-ccu" +    "brcm,bcm11351-aon-ccu" +    "brcm,bcm11351-hub-ccu" +    "brcm,bcm11351-master-ccu" +    "brcm,bcm11351-slave-ccu" + +The following table defines the set of CCUs and clock specifiers for +BCM281XX family clocks.  When a clock consumer references a clocks, +its symbolic specifier (rather than its numeric index value) should +be used.  These specifiers are defined in: +    "include/dt-bindings/clock/bcm281xx.h" + +    CCU     Clock           Type    Index   Specifier +    ---     -----           ----    -----   --------- +    root    frac_1m         peri      0     BCM281XX_ROOT_CCU_FRAC_1M + +    aon     hub_timer       peri      0     BCM281XX_AON_CCU_HUB_TIMER +    aon     pmu_bsc         peri      1     BCM281XX_AON_CCU_PMU_BSC +    aon     pmu_bsc_var     peri      2     BCM281XX_AON_CCU_PMU_BSC_VAR + +    hub     tmon_1m         peri      0     BCM281XX_HUB_CCU_TMON_1M + +    master  sdio1           peri      0     BCM281XX_MASTER_CCU_SDIO1 +    master  sdio2           peri      1     BCM281XX_MASTER_CCU_SDIO2 +    master  sdio3           peri      2     BCM281XX_MASTER_CCU_SDIO3 +    master  sdio4           peri      3     BCM281XX_MASTER_CCU_SDIO4 +    master  dmac            peri      4     BCM281XX_MASTER_CCU_DMAC +    master  usb_ic          peri      5     BCM281XX_MASTER_CCU_USB_IC +    master  hsic2_48m       peri      6     BCM281XX_MASTER_CCU_HSIC_48M +    master  hsic2_12m       peri      7     BCM281XX_MASTER_CCU_HSIC_12M + +    slave   uartb           peri      0     BCM281XX_SLAVE_CCU_UARTB +    slave   uartb2          peri      1     BCM281XX_SLAVE_CCU_UARTB2 +    slave   uartb3          peri      2     BCM281XX_SLAVE_CCU_UARTB3 +    slave   uartb4          peri      3     BCM281XX_SLAVE_CCU_UARTB4 +    slave   ssp0            peri      4     BCM281XX_SLAVE_CCU_SSP0 +    slave   ssp2            peri      5     BCM281XX_SLAVE_CCU_SSP2 +    slave   bsc1            peri      6     BCM281XX_SLAVE_CCU_BSC1 +    slave   bsc2            peri      7     BCM281XX_SLAVE_CCU_BSC2 +    slave   bsc3            peri      8     BCM281XX_SLAVE_CCU_BSC3 +    slave   pwm             peri      9     BCM281XX_SLAVE_CCU_PWM + + +BCM21664 family +--------------- +CCU compatible string values for SoCs in the BCM21664 family are: +    "brcm,bcm21664-root-ccu" +    "brcm,bcm21664-aon-ccu" +    "brcm,bcm21664-master-ccu" +    "brcm,bcm21664-slave-ccu" + +The following table defines the set of CCUs and clock specifiers for +BCM21664 family clocks.  When a clock consumer references a clocks, +its symbolic specifier (rather than its numeric index value) should +be used.  These specifiers are defined in: +    "include/dt-bindings/clock/bcm21664.h" + +    CCU     Clock           Type    Index   Specifier +    ---     -----           ----    -----   --------- +    root    frac_1m         peri      0     BCM21664_ROOT_CCU_FRAC_1M + +    aon     hub_timer       peri      0     BCM21664_AON_CCU_HUB_TIMER + +    master  sdio1           peri      0     BCM21664_MASTER_CCU_SDIO1 +    master  sdio2           peri      1     BCM21664_MASTER_CCU_SDIO2 +    master  sdio3           peri      2     BCM21664_MASTER_CCU_SDIO3 +    master  sdio4           peri      3     BCM21664_MASTER_CCU_SDIO4 +    master  sdio1_sleep     peri      4     BCM21664_MASTER_CCU_SDIO1_SLEEP +    master  sdio2_sleep     peri      5     BCM21664_MASTER_CCU_SDIO2_SLEEP +    master  sdio3_sleep     peri      6     BCM21664_MASTER_CCU_SDIO3_SLEEP +    master  sdio4_sleep     peri      7     BCM21664_MASTER_CCU_SDIO4_SLEEP + +    slave   uartb           peri      0     BCM21664_SLAVE_CCU_UARTB +    slave   uartb2          peri      1     BCM21664_SLAVE_CCU_UARTB2 +    slave   uartb3          peri      2     BCM21664_SLAVE_CCU_UARTB3 +    slave   uartb4          peri      3     BCM21664_SLAVE_CCU_UARTB4 +    slave   bsc1            peri      4     BCM21664_SLAVE_CCU_BSC1 +    slave   bsc2            peri      5     BCM21664_SLAVE_CCU_BSC2 +    slave   bsc3            peri      6     BCM21664_SLAVE_CCU_BSC3 +    slave   bsc4            peri      7     BCM21664_SLAVE_CCU_BSC4 diff --git a/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt b/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt index 75e2e1999f8..180e8835569 100644 --- a/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt +++ b/Documentation/devicetree/bindings/clock/clk-exynos-audss.txt @@ -8,12 +8,29 @@ Required Properties:  - compatible: should be one of the following:    - "samsung,exynos4210-audss-clock" - controller compatible with all Exynos4 SoCs. -  - "samsung,exynos5250-audss-clock" - controller compatible with all Exynos5 SoCs. - +  - "samsung,exynos5250-audss-clock" - controller compatible with Exynos5250 +    SoCs. +  - "samsung,exynos5420-audss-clock" - controller compatible with Exynos5420 +    SoCs.  - reg: physical base address and length of the controller's register set.  - #clock-cells: should be 1. +- clocks: +  - pll_ref: Fixed rate PLL reference clock, parent of mout_audss. "fin_pll" +    is used if not specified. +  - pll_in: Input PLL to the AudioSS block, parent of mout_audss. "fout_epll" +    is used if not specified. +  - cdclk: External i2s clock, parent of mout_i2s. "cdclk0" is used if not +    specified. +  - sclk_audio: Audio bus clock, parent of mout_i2s. "sclk_audio0" is used if +    not specified. +  - sclk_pcm_in: PCM clock, parent of sclk_pcm.  "sclk_pcm0" is used if not +    specified. + +- clock-names: Aliases for the above clocks. They should be "pll_ref", +  "pll_in", "cdclk", "sclk_audio", and "sclk_pcm_in" respectively. +  The following is the list of clocks generated by the controller. Each clock is  assigned an identifier and client nodes use this identifier to specify the  clock which they consume. Some of the clocks are available only on a particular @@ -34,16 +51,30 @@ i2s_bus         6  sclk_i2s        7  pcm_bus         8  sclk_pcm        9 +adma            10      Exynos5420 + +Example 1: An example of a clock controller node using the default input +	   clock names is listed below. + +clock_audss: audss-clock-controller@3810000 { +	compatible = "samsung,exynos5250-audss-clock"; +	reg = <0x03810000 0x0C>; +	#clock-cells = <1>; +}; -Example 1: An example of a clock controller node is listed below. +Example 2: An example of a clock controller node with the input clocks +           specified.  clock_audss: audss-clock-controller@3810000 {  	compatible = "samsung,exynos5250-audss-clock";  	reg = <0x03810000 0x0C>;  	#clock-cells = <1>; +	clocks = <&clock 1>, <&clock 7>, <&clock 138>, <&clock 160>, +		<&ext_i2s_clk>; +	clock-names = "pll_ref", "pll_in", "sclk_audio", "sclk_pcm_in", "cdclk";  }; -Example 2: I2S controller node that consumes the clock generated by the clock +Example 3: I2S controller node that consumes the clock generated by the clock             controller. Refer to the standard clock bindings for information             about 'clocks' and 'clock-names' property. diff --git a/Documentation/devicetree/bindings/clock/clock-bindings.txt b/Documentation/devicetree/bindings/clock/clock-bindings.txt index eb65d417f8c..f15787817d6 100644 --- a/Documentation/devicetree/bindings/clock/clock-bindings.txt +++ b/Documentation/devicetree/bindings/clock/clock-bindings.txt @@ -5,7 +5,7 @@ Sources of clock signal can be represented by any node in the device  tree.  Those nodes are designated as clock providers.  Clock consumer  nodes use a phandle and clock specifier pair to connect clock provider  outputs to clock inputs.  Similar to the gpio specifiers, a clock -specifier is an array of one more more cells identifying the clock +specifier is an array of zero, one or more cells identifying the clock  output on a device.  The length of a clock specifier is defined by the  value of a #clock-cells property in the clock provider node. @@ -44,6 +44,22 @@ For example:    clocks by index. The names should reflect the clock output signal    names for the device. +clock-indices:	   If the identifying number for the clocks in the node +		   is not linear from zero, then this allows the mapping of +		   identifiers into the clock-output-names array. + +For example, if we have two clocks <&oscillator 1> and <&oscillator 3>: + +	oscillator { +		compatible = "myclocktype"; +		#clock-cells = <1>; +		clock-indices = <1>, <3>; +		clock-output-names = "clka", "clkb"; +	} + +	This ensures we do not have any empty strings in clock-output-names + +  ==Clock consumers==  Required properties: diff --git a/Documentation/devicetree/bindings/clock/efm32-clock.txt b/Documentation/devicetree/bindings/clock/efm32-clock.txt new file mode 100644 index 00000000000..263d293f6a1 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/efm32-clock.txt @@ -0,0 +1,11 @@ +* Clock bindings for Energy Micro efm32 Giant Gecko's Clock Management Unit + +Required properties: +- compatible: Should be "efm32gg,cmu" +- reg: Base address and length of the register set +- interrupts: Interrupt used by the CMU +- #clock-cells: Should be <1> + +The clock consumer should specify the desired clock by having the clock ID in +its "clocks" phandle cell. The header efm32-clk.h contains a list of available +IDs. diff --git a/Documentation/devicetree/bindings/clock/emev2-clock.txt b/Documentation/devicetree/bindings/clock/emev2-clock.txt new file mode 100644 index 00000000000..60bbb1a8c69 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/emev2-clock.txt @@ -0,0 +1,98 @@ +Device tree Clock bindings for Renesas EMMA Mobile EV2 + +This binding uses the common clock binding. + +* SMU +System Management Unit described in user's manual R19UH0037EJ1000_SMU. +This is not a clock provider, but clocks under SMU depend on it. + +Required properties: +- compatible: Should be "renesas,emev2-smu" +- reg: Address and Size of SMU registers + +* SMU_CLKDIV +Function block with an input mux and a divider, which corresponds to +"Serial clock generator" in fig."Clock System Overview" of the manual, +and "xxx frequency division setting register" (XXXCLKDIV) registers. +This makes internal (neither input nor output) clock that is provided +to input of xxxGCLK block. + +Required properties: +- compatible: Should be "renesas,emev2-smu-clkdiv" +- reg: Byte offset from SMU base and Bit position in the register +- clocks: Parent clocks. Input clocks as described in clock-bindings.txt +- #clock-cells: Should be <0> + +* SMU_GCLK +Clock gating node shown as "Clock stop processing block" in the +fig."Clock System Overview" of the manual. +Registers are "xxx clock gate control register" (XXXGCLKCTRL). + +Required properties: +- compatible: Should be "renesas,emev2-smu-gclk" +- reg: Byte offset from SMU base and Bit position in the register +- clocks: Input clock as described in clock-bindings.txt +- #clock-cells: Should be <0> + +Example of provider: + +usia_u0_sclkdiv: usia_u0_sclkdiv { +	compatible = "renesas,emev2-smu-clkdiv"; +	reg = <0x610 0>; +	clocks = <&pll3_fo>, <&pll4_fo>, <&pll1_fo>, <&osc1_fo>; +	#clock-cells = <0>; +}; + +usia_u0_sclk: usia_u0_sclk { +	compatible = "renesas,emev2-smu-gclk"; +	reg = <0x4a0 1>; +	clocks = <&usia_u0_sclkdiv>; +	#clock-cells = <0>; +}; + +Example of consumer: + +uart@e1020000 { +	compatible = "renesas,em-uart"; +	reg = <0xe1020000 0x38>; +	interrupts = <0 8 0>; +	clocks = <&usia_u0_sclk>; +	clock-names = "sclk"; +}; + +Example of clock-tree description: + + This describes a clock path in the clock tree +  c32ki -> pll3_fo -> usia_u0_sclkdiv -> usia_u0_sclk + +smu@e0110000 { +	compatible = "renesas,emev2-smu"; +	reg = <0xe0110000 0x10000>; +	#address-cells = <2>; +	#size-cells = <0>; + +	c32ki: c32ki { +		compatible = "fixed-clock"; +		clock-frequency = <32768>; +		#clock-cells = <0>; +	}; +	pll3_fo: pll3_fo { +		compatible = "fixed-factor-clock"; +		clocks = <&c32ki>; +		clock-div = <1>; +		clock-mult = <7000>; +		#clock-cells = <0>; +	}; +	usia_u0_sclkdiv: usia_u0_sclkdiv { +		compatible = "renesas,emev2-smu-clkdiv"; +		reg = <0x610 0>; +		clocks = <&pll3_fo>; +		#clock-cells = <0>; +	}; +	usia_u0_sclk: usia_u0_sclk { +		compatible = "renesas,emev2-smu-gclk"; +		reg = <0x4a0 1>; +		clocks = <&usia_u0_sclkdiv>; +		#clock-cells = <0>; +	}; +}; diff --git a/Documentation/devicetree/bindings/clock/exynos3250-clock.txt b/Documentation/devicetree/bindings/clock/exynos3250-clock.txt new file mode 100644 index 00000000000..aadc9c59e2d --- /dev/null +++ b/Documentation/devicetree/bindings/clock/exynos3250-clock.txt @@ -0,0 +1,41 @@ +* Samsung Exynos3250 Clock Controller + +The Exynos3250 clock controller generates and supplies clock to various +controllers within the Exynos3250 SoC. + +Required Properties: + +- compatible: should be one of the following. +  - "samsung,exynos3250-cmu" - controller compatible with Exynos3250 SoC. + +- reg: physical base address of the controller and length of memory mapped +  region. + +- #clock-cells: should be 1. + +Each clock is assigned an identifier and client nodes can use this identifier +to specify the clock which they consume. + +All available clocks are defined as preprocessor macros in +dt-bindings/clock/exynos3250.h header and can be used in device +tree sources. + +Example 1: An example of a clock controller node is listed below. + +	cmu: clock-controller@10030000 { +		compatible = "samsung,exynos3250-cmu"; +		reg = <0x10030000 0x20000>; +		#clock-cells = <1>; +	}; + +Example 2: UART controller node that consumes the clock generated by the clock +	   controller. Refer to the standard clock bindings for information +	   about 'clocks' and 'clock-names' property. + +	serial@13800000 { +		compatible = "samsung,exynos4210-uart"; +		reg = <0x13800000 0x100>; +		interrupts = <0 109 0>; +		clocks = <&cmu CLK_UART0>, <&cmu CLK_SCLK_UART0>; +		clock-names = "uart", "clk_uart_baud0"; +	}; diff --git a/Documentation/devicetree/bindings/clock/exynos4-clock.txt b/Documentation/devicetree/bindings/clock/exynos4-clock.txt index c6bf8a6c8f5..f5a5b19ed3b 100644 --- a/Documentation/devicetree/bindings/clock/exynos4-clock.txt +++ b/Documentation/devicetree/bindings/clock/exynos4-clock.txt @@ -6,7 +6,7 @@ SoC's in the Exynos4 family.  Required Properties: -- comptible: should be one of the following. +- compatible: should be one of the following.    - "samsung,exynos4210-clock" - controller compatible with Exynos4210 SoC.    - "samsung,exynos4412-clock" - controller compatible with Exynos4412 SoC. @@ -15,259 +15,12 @@ Required Properties:  - #clock-cells: should be 1. -The following is the list of clocks generated by the controller. Each clock is -assigned an identifier and client nodes use this identifier to specify the -clock which they consume. Some of the clocks are available only on a particular -Exynos4 SoC and this is specified where applicable. - - -		 [Core Clocks] - -  Clock               ID      SoC (if specific) -  ----------------------------------------------- - -  xxti                1 -  xusbxti             2 -  fin_pll             3 -  fout_apll           4 -  fout_mpll           5 -  fout_epll           6 -  fout_vpll           7 -  sclk_apll           8 -  sclk_mpll           9 -  sclk_epll           10 -  sclk_vpll           11 -  arm_clk             12 -  aclk200             13 -  aclk100             14 -  aclk160             15 -  aclk133             16 -  mout_mpll_user_t    17      Exynos4x12 -  mout_mpll_user_c    18      Exynos4x12 -  mout_core           19 -  mout_apll           20 - - -            [Clock Gate for Special Clocks] - -  Clock               ID      SoC (if specific) -  ----------------------------------------------- - -  sclk_fimc0          128 -  sclk_fimc1          129 -  sclk_fimc2          130 -  sclk_fimc3          131 -  sclk_cam0           132 -  sclk_cam1           133 -  sclk_csis0          134 -  sclk_csis1          135 -  sclk_hdmi           136 -  sclk_mixer          137 -  sclk_dac            138 -  sclk_pixel          139 -  sclk_fimd0          140 -  sclk_mdnie0         141     Exynos4412 -  sclk_mdnie_pwm0 12  142     Exynos4412 -  sclk_mipi0          143 -  sclk_audio0         144 -  sclk_mmc0           145 -  sclk_mmc1           146 -  sclk_mmc2           147 -  sclk_mmc3           148 -  sclk_mmc4           149 -  sclk_sata           150     Exynos4210 -  sclk_uart0          151 -  sclk_uart1          152 -  sclk_uart2          153 -  sclk_uart3          154 -  sclk_uart4          155 -  sclk_audio1         156 -  sclk_audio2         157 -  sclk_spdif          158 -  sclk_spi0           159 -  sclk_spi1           160 -  sclk_spi2           161 -  sclk_slimbus        162 -  sclk_fimd1          163     Exynos4210 -  sclk_mipi1          164     Exynos4210 -  sclk_pcm1           165 -  sclk_pcm2           166 -  sclk_i2s1           167 -  sclk_i2s2           168 -  sclk_mipihsi        169     Exynos4412 -  sclk_mfc            170 -  sclk_pcm0           171 -  sclk_g3d            172 -  sclk_pwm_isp        173     Exynos4x12 -  sclk_spi0_isp       174     Exynos4x12 -  sclk_spi1_isp       175     Exynos4x12 -  sclk_uart_isp       176     Exynos4x12 -  sclk_fimg2d         177 - -	      [Peripheral Clock Gates] - -  Clock               ID      SoC (if specific) -  ----------------------------------------------- - -  fimc0               256 -  fimc1               257 -  fimc2               258 -  fimc3               259 -  csis0               260 -  csis1               261 -  jpeg                262 -  smmu_fimc0          263 -  smmu_fimc1          264 -  smmu_fimc2          265 -  smmu_fimc3          266 -  smmu_jpeg           267 -  vp                  268 -  mixer               269 -  tvenc               270     Exynos4210 -  hdmi                271 -  smmu_tv             272 -  mfc                 273 -  smmu_mfcl           274 -  smmu_mfcr           275 -  g3d                 276 -  g2d                 277 -  rotator             278     Exynos4210 -  mdma                279     Exynos4210 -  smmu_g2d            280     Exynos4210 -  smmu_rotator        281     Exynos4210 -  smmu_mdma           282     Exynos4210 -  fimd0               283 -  mie0                284 -  mdnie0              285     Exynos4412 -  dsim0               286 -  smmu_fimd0          287 -  fimd1               288     Exynos4210 -  mie1                289     Exynos4210 -  dsim1               290     Exynos4210 -  smmu_fimd1          291     Exynos4210 -  pdma0               292 -  pdma1               293 -  pcie_phy            294 -  sata_phy            295     Exynos4210 -  tsi                 296 -  sdmmc0              297 -  sdmmc1              298 -  sdmmc2              299 -  sdmmc3              300 -  sdmmc4              301 -  sata                302     Exynos4210 -  sromc               303 -  usb_host            304 -  usb_device          305 -  pcie                306 -  onenand             307 -  nfcon               308 -  smmu_pcie           309 -  gps                 310 -  smmu_gps            311 -  uart0               312 -  uart1               313 -  uart2               314 -  uart3               315 -  uart4               316 -  i2c0                317 -  i2c1                318 -  i2c2                319 -  i2c3                320 -  i2c4                321 -  i2c5                322 -  i2c6                323 -  i2c7                324 -  i2c_hdmi            325 -  tsadc               326 -  spi0                327 -  spi1                328 -  spi2                329 -  i2s1                330 -  i2s2                331 -  pcm0                332 -  i2s0                333 -  pcm1                334 -  pcm2                335 -  pwm                 336 -  slimbus             337 -  spdif               338 -  ac97                339 -  modemif             340 -  chipid              341 -  sysreg              342 -  hdmi_cec            343 -  mct                 344 -  wdt                 345 -  rtc                 346 -  keyif               347 -  audss               348 -  mipi_hsi            349     Exynos4210 -  mdma2               350     Exynos4210 -  pixelasyncm0        351 -  pixelasyncm1        352 -  fimc_lite0          353     Exynos4x12 -  fimc_lite1          354     Exynos4x12 -  ppmuispx            355     Exynos4x12 -  ppmuispmx           356     Exynos4x12 -  fimc_isp            357     Exynos4x12 -  fimc_drc            358     Exynos4x12 -  fimc_fd             359     Exynos4x12 -  mcuisp              360     Exynos4x12 -  gicisp              361     Exynos4x12 -  smmu_isp            362     Exynos4x12 -  smmu_drc            363     Exynos4x12 -  smmu_fd             364     Exynos4x12 -  smmu_lite0          365     Exynos4x12 -  smmu_lite1          366     Exynos4x12 -  mcuctl_isp          367     Exynos4x12 -  mpwm_isp            368     Exynos4x12 -  i2c0_isp            369     Exynos4x12 -  i2c1_isp            370     Exynos4x12 -  mtcadc_isp          371     Exynos4x12 -  pwm_isp             372     Exynos4x12 -  wdt_isp             373     Exynos4x12 -  uart_isp            374     Exynos4x12 -  asyncaxim           375     Exynos4x12 -  smmu_ispcx          376     Exynos4x12 -  spi0_isp            377     Exynos4x12 -  spi1_isp            378     Exynos4x12 -  pwm_isp_sclk        379     Exynos4x12 -  spi0_isp_sclk       380     Exynos4x12 -  spi1_isp_sclk       381     Exynos4x12 -  uart_isp_sclk       382     Exynos4x12 -  tmu_apbif           383 - -		[Mux Clocks] - -  Clock			ID	SoC (if specific) -  ----------------------------------------------- - -  mout_fimc0		384 -  mout_fimc1		385 -  mout_fimc2		386 -  mout_fimc3		387 -  mout_cam0		388 -  mout_cam1		389 -  mout_csis0		390 -  mout_csis1		391 -  mout_g3d0		392 -  mout_g3d1		393 -  mout_g3d		394 -  aclk400_mcuisp	395	Exynos4x12 - -		[Div Clocks] - -  Clock			ID	SoC (if specific) -  ----------------------------------------------- - -  div_isp0		450	Exynos4x12 -  div_isp1		451	Exynos4x12 -  div_mcuisp0		452	Exynos4x12 -  div_mcuisp1		453	Exynos4x12 -  div_aclk200		454	Exynos4x12 -  div_aclk400_mcuisp	455	Exynos4x12 +Each clock is assigned an identifier and client nodes can use this identifier +to specify the clock which they consume. +All available clocks are defined as preprocessor macros in +dt-bindings/clock/exynos4.h header and can be used in device +tree sources.  Example 1: An example of a clock controller node is listed below. @@ -285,6 +38,6 @@ Example 2: UART controller node that consumes the clock generated by the clock  		compatible = "samsung,exynos4210-uart";  		reg = <0x13820000 0x100>;  		interrupts = <0 54 0>; -		clocks = <&clock 314>, <&clock 153>; +		clocks = <&clock CLK_UART2>, <&clock CLK_SCLK_UART2>;  		clock-names = "uart", "clk_uart_baud0";  	}; diff --git a/Documentation/devicetree/bindings/clock/exynos5250-clock.txt b/Documentation/devicetree/bindings/clock/exynos5250-clock.txt index 24765c146e3..536eacd1063 100644 --- a/Documentation/devicetree/bindings/clock/exynos5250-clock.txt +++ b/Documentation/devicetree/bindings/clock/exynos5250-clock.txt @@ -5,7 +5,7 @@ controllers within the Exynos5250 SoC.  Required Properties: -- comptible: should be one of the following. +- compatible: should be one of the following.    - "samsung,exynos5250-clock" - controller compatible with Exynos5250 SoC.  - reg: physical base address of the controller and length of memory mapped @@ -13,160 +13,12 @@ Required Properties:  - #clock-cells: should be 1. -The following is the list of clocks generated by the controller. Each clock is -assigned an identifier and client nodes use this identifier to specify the -clock which they consume. - - -       [Core Clocks] - -  Clock			ID -  ---------------------------- - -  fin_pll		1 - -  [Clock Gate for Special Clocks] - -  Clock			ID -  ---------------------------- - -  sclk_cam_bayer	128 -  sclk_cam0		129 -  sclk_cam1		130 -  sclk_gscl_wa		131 -  sclk_gscl_wb		132 -  sclk_fimd1		133 -  sclk_mipi1		134 -  sclk_dp		135 -  sclk_hdmi		136 -  sclk_pixel		137 -  sclk_audio0		138 -  sclk_mmc0		139 -  sclk_mmc1		140 -  sclk_mmc2		141 -  sclk_mmc3		142 -  sclk_sata		143 -  sclk_usb3		144 -  sclk_jpeg		145 -  sclk_uart0		146 -  sclk_uart1		147 -  sclk_uart2		148 -  sclk_uart3		149 -  sclk_pwm		150 -  sclk_audio1		151 -  sclk_audio2		152 -  sclk_spdif		153 -  sclk_spi0		154 -  sclk_spi1		155 -  sclk_spi2		156 -  div_i2s1		157 -  div_i2s2		158 -  sclk_hdmiphy		159 - - -   [Peripheral Clock Gates] - -  Clock			ID -  ---------------------------- - -  gscl0			256 -  gscl1			257 -  gscl2			258 -  gscl3			259 -  gscl_wa		260 -  gscl_wb		261 -  smmu_gscl0		262 -  smmu_gscl1		263 -  smmu_gscl2		264 -  smmu_gscl3		265 -  mfc			266 -  smmu_mfcl		267 -  smmu_mfcr		268 -  rotator		269 -  jpeg			270 -  mdma1			271 -  smmu_rotator		272 -  smmu_jpeg		273 -  smmu_mdma1		274 -  pdma0			275 -  pdma1			276 -  sata			277 -  usbotg		278 -  mipi_hsi		279 -  sdmmc0		280 -  sdmmc1		281 -  sdmmc2		282 -  sdmmc3		283 -  sromc			284 -  usb2			285 -  usb3			286 -  sata_phyctrl		287 -  sata_phyi2c		288 -  uart0			289 -  uart1			290 -  uart2			291 -  uart3			292 -  uart4			293 -  i2c0			294 -  i2c1			295 -  i2c2			296 -  i2c3			297 -  i2c4			298 -  i2c5			299 -  i2c6			300 -  i2c7			301 -  i2c_hdmi		302 -  adc			303 -  spi0			304 -  spi1			305 -  spi2			306 -  i2s1			307 -  i2s2			308 -  pcm1			309 -  pcm2			310 -  pwm			311 -  spdif			312 -  ac97			313 -  hsi2c0		314 -  hsi2c1		315 -  hs12c2		316 -  hs12c3		317 -  chipid		318 -  sysreg		319 -  pmu			320 -  cmu_top		321 -  cmu_core		322 -  cmu_mem		323 -  tzpc0			324 -  tzpc1			325 -  tzpc2			326 -  tzpc3			327 -  tzpc4			328 -  tzpc5			329 -  tzpc6			330 -  tzpc7			331 -  tzpc8			332 -  tzpc9			333 -  hdmi_cec		334 -  mct			335 -  wdt			336 -  rtc			337 -  tmu			338 -  fimd1			339 -  mie1			340 -  dsim0			341 -  dp			342 -  mixer			343 -  hdmi			344 -  g2d			345 - - -   [Clock Muxes] - -  Clock			ID -  ---------------------------- -  mout_hdmi		1024 +Each clock is assigned an identifier and client nodes can use this identifier +to specify the clock which they consume. +All available clocks are defined as preprocessor macros in +dt-bindings/clock/exynos5250.h header and can be used in device +tree sources.  Example 1: An example of a clock controller node is listed below. @@ -184,6 +36,6 @@ Example 2: UART controller node that consumes the clock generated by the clock  		compatible = "samsung,exynos4210-uart";  		reg = <0x13820000 0x100>;  		interrupts = <0 54 0>; -		clocks = <&clock 314>, <&clock 153>; +		clocks = <&clock CLK_UART2>, <&clock CLK_SCLK_UART2>;  		clock-names = "uart", "clk_uart_baud0";  	}; diff --git a/Documentation/devicetree/bindings/clock/exynos5260-clock.txt b/Documentation/devicetree/bindings/clock/exynos5260-clock.txt new file mode 100644 index 00000000000..5496b2fac48 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/exynos5260-clock.txt @@ -0,0 +1,190 @@ +* Samsung Exynos5260 Clock Controller + +Exynos5260 has 13 clock controllers which are instantiated +independently from the device-tree. These clock controllers +generate and supply clocks to various hardware blocks within +the SoC. + +Each clock is assigned an identifier and client nodes can use +this identifier to specify the clock which they consume. All +available clocks are defined as preprocessor macros in +dt-bindings/clock/exynos5260-clk.h header and can be used in +device tree sources. + +External clocks: + +There are several clocks that are generated outside the SoC. It +is expected that they are defined using standard clock bindings +with following clock-output-names: + + - "fin_pll" - PLL input clock from XXTI + - "xrtcxti" - input clock from XRTCXTI + - "ioclk_pcm_extclk" - pcm external operation clock + - "ioclk_spdif_extclk" - spdif external operation clock + - "ioclk_i2s_cdclk" - i2s0 codec clock + +Phy clocks: + +There are several clocks which are generated by specific PHYs. +These clocks are fed into the clock controller and then routed to +the hardware blocks. These clocks are defined as fixed clocks in the +driver with following names: + + - "phyclk_dptx_phy_ch3_txd_clk" - dp phy clock for channel 3 + - "phyclk_dptx_phy_ch2_txd_clk" - dp phy clock for channel 2 + - "phyclk_dptx_phy_ch1_txd_clk" - dp phy clock for channel 1 + - "phyclk_dptx_phy_ch0_txd_clk" - dp phy clock for channel 0 + - "phyclk_hdmi_phy_tmds_clko" - hdmi phy tmds clock + - "phyclk_hdmi_phy_pixel_clko" - hdmi phy pixel clock + - "phyclk_hdmi_link_o_tmds_clkhi" - hdmi phy for hdmi link + - "phyclk_dptx_phy_o_ref_clk_24m" - dp phy reference clock + - "phyclk_dptx_phy_clk_div2" + - "phyclk_mipi_dphy_4l_m_rxclkesc0" + - "phyclk_usbhost20_phy_phyclock" - usb 2.0 phy clock + - "phyclk_usbhost20_phy_freeclk" + - "phyclk_usbhost20_phy_clk48mohci" + - "phyclk_usbdrd30_udrd30_pipe_pclk" + - "phyclk_usbdrd30_udrd30_phyclock" - usb 3.0 phy clock + +Required Properties for Clock Controller: + + - compatible: should be one of the following. +	1) "samsung,exynos5260-clock-top" +	2) "samsung,exynos5260-clock-peri" +	3) "samsung,exynos5260-clock-egl" +	4) "samsung,exynos5260-clock-kfc" +	5) "samsung,exynos5260-clock-g2d" +	6) "samsung,exynos5260-clock-mif" +	7) "samsung,exynos5260-clock-mfc" +	8) "samsung,exynos5260-clock-g3d" +	9) "samsung,exynos5260-clock-fsys" +	10) "samsung,exynos5260-clock-aud" +	11) "samsung,exynos5260-clock-isp" +	12) "samsung,exynos5260-clock-gscl" +	13) "samsung,exynos5260-clock-disp" + + - reg: physical base address of the controller and the length of +	memory mapped region. + + - #clock-cells: should be 1. + + - clocks: list of clock identifiers which are fed as the input to +	the given clock controller. Please refer the next section to find +	the input clocks for a given controller. + + - clock-names: list of names of clocks which are fed as the input +	to the given clock controller. + +Input clocks for top clock controller: +	- fin_pll +	- dout_mem_pll +	- dout_bus_pll +	- dout_media_pll + +Input clocks for peri clock controller: +	- fin_pll +	- ioclk_pcm_extclk +	- ioclk_i2s_cdclk +	- ioclk_spdif_extclk +	- phyclk_hdmi_phy_ref_cko +	- dout_aclk_peri_66 +	- dout_sclk_peri_uart0 +	- dout_sclk_peri_uart1 +	- dout_sclk_peri_uart2 +	- dout_sclk_peri_spi0_b +	- dout_sclk_peri_spi1_b +	- dout_sclk_peri_spi2_b +	- dout_aclk_peri_aud +	- dout_sclk_peri_spi0_b + +Input clocks for egl clock controller: +	- fin_pll +	- dout_bus_pll + +Input clocks for kfc clock controller: +	- fin_pll +	- dout_media_pll + +Input clocks for g2d clock controller: +	- fin_pll +	- dout_aclk_g2d_333 + +Input clocks for mif clock controller: +	- fin_pll + +Input clocks for mfc clock controller: +	- fin_pll +	- dout_aclk_mfc_333 + +Input clocks for g3d clock controller: +	- fin_pll + +Input clocks for fsys clock controller: +	- fin_pll +	- phyclk_usbhost20_phy_phyclock +	- phyclk_usbhost20_phy_freeclk +	- phyclk_usbhost20_phy_clk48mohci +	- phyclk_usbdrd30_udrd30_pipe_pclk +	- phyclk_usbdrd30_udrd30_phyclock +	- dout_aclk_fsys_200 + +Input clocks for aud clock controller: +	- fin_pll +	- fout_aud_pll +	- ioclk_i2s_cdclk +	- ioclk_pcm_extclk + +Input clocks for isp clock controller: +	- fin_pll +	- dout_aclk_isp1_266 +	- dout_aclk_isp1_400 +	- mout_aclk_isp1_266 + +Input clocks for gscl clock controller: +	- fin_pll +	- dout_aclk_gscl_400 +	- dout_aclk_gscl_333 + +Input clocks for disp clock controller: +	- fin_pll +	- phyclk_dptx_phy_ch3_txd_clk +	- phyclk_dptx_phy_ch2_txd_clk +	- phyclk_dptx_phy_ch1_txd_clk +	- phyclk_dptx_phy_ch0_txd_clk +	- phyclk_hdmi_phy_tmds_clko +	- phyclk_hdmi_phy_ref_clko +	- phyclk_hdmi_phy_pixel_clko +	- phyclk_hdmi_link_o_tmds_clkhi +	- phyclk_mipi_dphy_4l_m_txbyte_clkhs +	- phyclk_dptx_phy_o_ref_clk_24m +	- phyclk_dptx_phy_clk_div2 +	- phyclk_mipi_dphy_4l_m_rxclkesc0 +	- phyclk_hdmi_phy_ref_cko +	- ioclk_spdif_extclk +	- dout_aclk_peri_aud +	- dout_aclk_disp_222 +	- dout_sclk_disp_pixel +	- dout_aclk_disp_333 + +Example 1: An example of a clock controller node is listed below. + +	clock_mfc: clock-controller@11090000 { +		compatible = "samsung,exynos5260-clock-mfc"; +		clock = <&fin_pll>, <&clock_top TOP_DOUT_ACLK_MFC_333>; +		clock-names = "fin_pll", "dout_aclk_mfc_333"; +		reg = <0x11090000 0x10000>; +		#clock-cells = <1>; +	}; + +Example 2: UART controller node that consumes the clock generated by the +		peri clock controller. Refer to the standard clock bindings for +		information about 'clocks' and 'clock-names' property. + +	serial@12C00000 { +		compatible = "samsung,exynos4210-uart"; +		reg = <0x12C00000 0x100>; +		interrupts = <0 146 0>; +		clocks = <&clock_peri PERI_PCLK_UART0>, <&clock_peri PERI_SCLK_UART0>; +		clock-names = "uart", "clk_uart_baud0"; +	}; + diff --git a/Documentation/devicetree/bindings/clock/exynos5410-clock.txt b/Documentation/devicetree/bindings/clock/exynos5410-clock.txt new file mode 100644 index 00000000000..aeab635b07b --- /dev/null +++ b/Documentation/devicetree/bindings/clock/exynos5410-clock.txt @@ -0,0 +1,45 @@ +* Samsung Exynos5410 Clock Controller + +The Exynos5410 clock controller generates and supplies clock to various +controllers within the Exynos5410 SoC. + +Required Properties: + +- compatible: should be "samsung,exynos5410-clock" + +- reg: physical base address of the controller and length of memory mapped +  region. + +- #clock-cells: should be 1. + +All available clocks are defined as preprocessor macros in +dt-bindings/clock/exynos5410.h header and can be used in device +tree sources. + +External clock: + +There is clock that is generated outside the SoC. It +is expected that it is defined using standard clock bindings +with following clock-output-name: + + - "fin_pll" - PLL input clock from XXTI + +Example 1: An example of a clock controller node is listed below. + +	clock: clock-controller@0x10010000 { +		compatible = "samsung,exynos5410-clock"; +		reg = <0x10010000 0x30000>; +		#clock-cells = <1>; +	}; + +Example 2: UART controller node that consumes the clock generated by the clock +	   controller. Refer to the standard clock bindings for information +	   about 'clocks' and 'clock-names' property. + +	serial@12C20000 { +		compatible = "samsung,exynos4210-uart"; +		reg = <0x12C00000 0x100>; +		interrupts = <0 51 0>; +		clocks = <&clock CLK_UART0>, <&clock CLK_SCLK_UART0>; +		clock-names = "uart", "clk_uart_baud0"; +	}; diff --git a/Documentation/devicetree/bindings/clock/exynos5420-clock.txt b/Documentation/devicetree/bindings/clock/exynos5420-clock.txt index 32aa34ecad3..d54f42cf044 100644 --- a/Documentation/devicetree/bindings/clock/exynos5420-clock.txt +++ b/Documentation/devicetree/bindings/clock/exynos5420-clock.txt @@ -1,196 +1,25 @@  * Samsung Exynos5420 Clock Controller  The Exynos5420 clock controller generates and supplies clock to various -controllers within the Exynos5420 SoC. +controllers within the Exynos5420 SoC and for the Exynos5800 SoC.  Required Properties: -- comptible: should be one of the following. +- compatible: should be one of the following.    - "samsung,exynos5420-clock" - controller compatible with Exynos5420 SoC. +  - "samsung,exynos5800-clock" - controller compatible with Exynos5800 SoC.  - reg: physical base address of the controller and length of memory mapped    region.  - #clock-cells: should be 1. -The following is the list of clocks generated by the controller. Each clock is -assigned an identifier and client nodes use this identifier to specify the -clock which they consume. +Each clock is assigned an identifier and client nodes can use this identifier +to specify the clock which they consume. - -       [Core Clocks] - -  Clock			ID -  ---------------------------- - -  fin_pll		1 - -  [Clock Gate for Special Clocks] - -  Clock			ID -  ---------------------------- -  sclk_uart0		128 -  sclk_uart1		129 -  sclk_uart2		130 -  sclk_uart3		131 -  sclk_mmc0		132 -  sclk_mmc1		133 -  sclk_mmc2		134 -  sclk_spi0		135 -  sclk_spi1		136 -  sclk_spi2		137 -  sclk_i2s1		138 -  sclk_i2s2		139 -  sclk_pcm1		140 -  sclk_pcm2		141 -  sclk_spdif		142 -  sclk_hdmi		143 -  sclk_pixel		144 -  sclk_dp1		145 -  sclk_mipi1		146 -  sclk_fimd1		147 -  sclk_maudio0		148 -  sclk_maupcm0		149 -  sclk_usbd300		150 -  sclk_usbd301		151 -  sclk_usbphy300	152 -  sclk_usbphy301	153 -  sclk_unipro		154 -  sclk_pwm		155 -  sclk_gscl_wa		156 -  sclk_gscl_wb		157 -  sclk_hdmiphy		158 - -   [Peripheral Clock Gates] - -  Clock			ID -  ---------------------------- - -  aclk66_peric		256 -  uart0			257 -  uart1			258 -  uart2			259 -  uart3			260 -  i2c0			261 -  i2c1			262 -  i2c2			263 -  i2c3			264 -  i2c4			265 -  i2c5			266 -  i2c6			267 -  i2c7			268 -  i2c_hdmi		269 -  tsadc			270 -  spi0			271 -  spi1			272 -  spi2			273 -  keyif			274 -  i2s1			275 -  i2s2			276 -  pcm1			277 -  pcm2			278 -  pwm			279 -  spdif			280 -  i2c8			281 -  i2c9			282 -  i2c10			283 -  aclk66_psgen		300 -  chipid		301 -  sysreg		302 -  tzpc0			303 -  tzpc1			304 -  tzpc2			305 -  tzpc3			306 -  tzpc4			307 -  tzpc5			308 -  tzpc6			309 -  tzpc7			310 -  tzpc8			311 -  tzpc9			312 -  hdmi_cec		313 -  seckey		314 -  mct			315 -  wdt			316 -  rtc			317 -  tmu			318 -  tmu_gpu		319 -  pclk66_gpio		330 -  aclk200_fsys2		350 -  mmc0			351 -  mmc1			352 -  mmc2			353 -  sromc			354 -  ufs			355 -  aclk200_fsys		360 -  tsi			361 -  pdma0			362 -  pdma1			363 -  rtic			364 -  usbh20		365 -  usbd300		366 -  usbd301		377 -  aclk400_mscl		380 -  mscl0			381 -  mscl1			382 -  mscl2			383 -  smmu_mscl0		384 -  smmu_mscl1		385 -  smmu_mscl2		386 -  aclk333		400 -  mfc			401 -  smmu_mfcl		402 -  smmu_mfcr		403 -  aclk200_disp1		410 -  dsim1			411 -  dp1			412 -  hdmi			413 -  aclk300_disp1		420 -  fimd1			421 -  smmu_fimd1		422 -  aclk166		430 -  mixer			431 -  aclk266		440 -  rotator		441 -  mdma1			442 -  smmu_rotator		443 -  smmu_mdma1		444 -  aclk300_jpeg		450 -  jpeg			451 -  jpeg2			452 -  smmu_jpeg		453 -  aclk300_gscl		460 -  smmu_gscl0		461 -  smmu_gscl1		462 -  gscl_wa		463 -  gscl_wb		464 -  gscl0			465 -  gscl1			466 -  clk_3aa		467 -  aclk266_g2d		470 -  sss			471 -  slim_sss		472 -  mdma0			473 -  aclk333_g2d		480 -  g2d			481 -  aclk333_432_gscl	490 -  smmu_3aa		491 -  smmu_fimcl0		492 -  smmu_fimcl1		493 -  smmu_fimcl3		494 -  fimc_lite3		495 -  aclk_g3d		500 -  g3d			501 -  smmu_mixer		502 - -  Mux			ID -  ---------------------------- - -  mout_hdmi		640 - -  Divider		ID -  ---------------------------- - -  dout_pixel		768 +All available clocks are defined as preprocessor macros in +dt-bindings/clock/exynos5420.h header and can be used in device +tree sources.  Example 1: An example of a clock controller node is listed below. @@ -208,6 +37,6 @@ Example 2: UART controller node that consumes the clock generated by the clock  		compatible = "samsung,exynos4210-uart";  		reg = <0x13820000 0x100>;  		interrupts = <0 54 0>; -		clocks = <&clock 259>, <&clock 130>; +		clocks = <&clock CLK_UART2>, <&clock CLK_SCLK_UART2>;  		clock-names = "uart", "clk_uart_baud0";  	}; diff --git a/Documentation/devicetree/bindings/clock/exynos5440-clock.txt b/Documentation/devicetree/bindings/clock/exynos5440-clock.txt index 4499e9966bc..5f7005f7305 100644 --- a/Documentation/devicetree/bindings/clock/exynos5440-clock.txt +++ b/Documentation/devicetree/bindings/clock/exynos5440-clock.txt @@ -5,52 +5,19 @@ controllers within the Exynos5440 SoC.  Required Properties: -- comptible: should be "samsung,exynos5440-clock". +- compatible: should be "samsung,exynos5440-clock".  - reg: physical base address of the controller and length of memory mapped    region.  - #clock-cells: should be 1. -The following is the list of clocks generated by the controller. Each clock is -assigned an identifier and client nodes use this identifier to specify the -clock which they consume. - - -       [Core Clocks] - -  Clock			ID -  ---------------------------- - -  xtal			1 -  arm_clk		2 - -   [Peripheral Clock Gates] - -  Clock			ID -  ---------------------------- - -  spi_baud		16 -  pb0_250		17 -  pr0_250		18 -  pr1_250		19 -  b_250			20 -  b_125			21 -  b_200			22 -  sata			23 -  usb			24 -  gmac0			25 -  cs250			26 -  pb0_250_o		27 -  pr0_250_o		28 -  pr1_250_o		29 -  b_250_o		30 -  b_125_o		31 -  b_200_o		32 -  sata_o		33 -  usb_o			34 -  gmac0_o		35 -  cs250_o		36 +Each clock is assigned an identifier and client nodes can use this identifier +to specify the clock which they consume. + +All available clocks are defined as preprocessor macros in +dt-bindings/clock/exynos5440.h header and can be used in device +tree sources.  Example: An example of a clock controller node is listed below. diff --git a/Documentation/devicetree/bindings/clock/fixed-clock.txt b/Documentation/devicetree/bindings/clock/fixed-clock.txt index 0b1fe782409..0641a663ad6 100644 --- a/Documentation/devicetree/bindings/clock/fixed-clock.txt +++ b/Documentation/devicetree/bindings/clock/fixed-clock.txt @@ -10,7 +10,8 @@ Required properties:  - clock-frequency : frequency of clock in Hz. Should be a single cell.  Optional properties: -- gpios : From common gpio binding; gpio connection to clock enable pin. +- clock-accuracy : accuracy of clock in ppb (parts per billion). +		   Should be a single cell.  - clock-output-names : From common clock binding.  Example: @@ -18,4 +19,5 @@ Example:  		compatible = "fixed-clock";  		#clock-cells = <0>;  		clock-frequency = <1000000000>; +		clock-accuracy = <100>;  	}; diff --git a/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt b/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt index 5757f9abfc2..1bae8527eb9 100644 --- a/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt +++ b/Documentation/devicetree/bindings/clock/fixed-factor-clock.txt @@ -19,6 +19,6 @@ Example:  		compatible = "fixed-factor-clock";  		clocks = <&parentclk>;  		#clock-cells = <0>; -		div = <2>; -		mult = <1>; +		clock-div = <2>; +		clock-mult = <1>;  	}; diff --git a/Documentation/devicetree/bindings/clock/hi3620-clock.txt b/Documentation/devicetree/bindings/clock/hi3620-clock.txt new file mode 100644 index 00000000000..dad6269f52c --- /dev/null +++ b/Documentation/devicetree/bindings/clock/hi3620-clock.txt @@ -0,0 +1,20 @@ +* Hisilicon Hi3620 Clock Controller + +The Hi3620 clock controller generates and supplies clock to various +controllers within the Hi3620 SoC. + +Required Properties: + +- compatible: should be one of the following. +  - "hisilicon,hi3620-clock" - controller compatible with Hi3620 SoC. +  - "hisilicon,hi3620-mmc-clock" - controller specific for Hi3620 mmc. + +- reg: physical base address of the controller and length of memory mapped +  region. + +- #clock-cells: should be 1. + +Each clock is assigned an identifier and client nodes use this identifier +to specify the clock which they consume. + +All these identifier could be found in <dt-bindings/clock/hi3620-clock.h>. diff --git a/Documentation/devicetree/bindings/clock/hix5hd2-clock.txt b/Documentation/devicetree/bindings/clock/hix5hd2-clock.txt new file mode 100644 index 00000000000..7894a64887c --- /dev/null +++ b/Documentation/devicetree/bindings/clock/hix5hd2-clock.txt @@ -0,0 +1,31 @@ +* Hisilicon Hix5hd2 Clock Controller + +The hix5hd2 clock controller generates and supplies clock to various +controllers within the hix5hd2 SoC. + +Required Properties: + +- compatible: should be "hisilicon,hix5hd2-clock" +- reg: Address and length of the register set +- #clock-cells: Should be <1> + +Each clock is assigned an identifier and client nodes use this identifier +to specify the clock which they consume. + +All these identifier could be found in <dt-bindings/clock/hix5hd2-clock.h>. + +Examples: +	clock: clock@f8a22000 { +		compatible = "hisilicon,hix5hd2-clock"; +		reg = <0xf8a22000 0x1000>; +		#clock-cells = <1>; +	}; + +	uart0: uart@f8b00000 { +		compatible = "arm,pl011", "arm,primecell"; +		reg = <0xf8b00000 0x1000>; +		interrupts = <0 49 4>; +		clocks = <&clock HIX5HD2_FIXED_83M>; +		clock-names = "apb_pclk"; +		status = "disabled"; +	}; diff --git a/Documentation/devicetree/bindings/clock/imx25-clock.txt b/Documentation/devicetree/bindings/clock/imx25-clock.txt index db4f2f05c4d..ba6b312ff8a 100644 --- a/Documentation/devicetree/bindings/clock/imx25-clock.txt +++ b/Documentation/devicetree/bindings/clock/imx25-clock.txt @@ -139,6 +139,9 @@ clocks and IDs.  	uart5_ipg		124  	reserved		125  	wdt_ipg			126 +	cko_div			127 +	cko_sel			128 +	cko			129  Examples: diff --git a/Documentation/devicetree/bindings/clock/imx27-clock.txt b/Documentation/devicetree/bindings/clock/imx27-clock.txt index 7a207039373..6bc9fd2c663 100644 --- a/Documentation/devicetree/bindings/clock/imx27-clock.txt +++ b/Documentation/devicetree/bindings/clock/imx27-clock.txt @@ -98,7 +98,12 @@ clocks and IDs.  	fpm                  83  	mpll_osc_sel         84  	mpll_sel             85 -	spll_gate	     86 +	spll_gate            86 +	mshc_div             87 +	rtic_ipg_gate        88 +	mshc_ipg_gate        89 +	rtic_ahb_gate        90 +	mshc_baud_gate       91  Examples: diff --git a/Documentation/devicetree/bindings/clock/imx35-clock.txt b/Documentation/devicetree/bindings/clock/imx35-clock.txt new file mode 100644 index 00000000000..a70356452a8 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/imx35-clock.txt @@ -0,0 +1,113 @@ +* Clock bindings for Freescale i.MX35 + +Required properties: +- compatible: Should be "fsl,imx35-ccm" +- reg: Address and length of the register set +- interrupts: Should contain CCM interrupt +- #clock-cells: Should be <1> + +The clock consumer should specify the desired clock by having the clock +ID in its "clocks" phandle cell.  The following is a full list of i.MX35 +clocks and IDs. + +	Clock			ID +	--------------------------- +	ckih			0 +	mpll			1 +	ppll			2 +	mpll_075		3 +	arm			4 +	hsp			5 +	hsp_div			6 +	hsp_sel			7 +	ahb			8 +	ipg			9 +	arm_per_div		10 +	ahb_per_div		11 +	ipg_per			12 +	uart_sel		13 +	uart_div		14 +	esdhc_sel		15 +	esdhc1_div		16 +	esdhc2_div		17 +	esdhc3_div		18 +	spdif_sel		19 +	spdif_div_pre		20 +	spdif_div_post		21 +	ssi_sel			22 +	ssi1_div_pre		23 +	ssi1_div_post		24 +	ssi2_div_pre		25 +	ssi2_div_post		26 +	usb_sel			27 +	usb_div			28 +	nfc_div			29 +	asrc_gate		30 +	pata_gate		31 +	audmux_gate		32 +	can1_gate		33 +	can2_gate		34 +	cspi1_gate		35 +	cspi2_gate		36 +	ect_gate		37 +	edio_gate		38 +	emi_gate		39 +	epit1_gate		40 +	epit2_gate		41 +	esai_gate		42 +	esdhc1_gate		43 +	esdhc2_gate		44 +	esdhc3_gate		45 +	fec_gate		46 +	gpio1_gate		47 +	gpio2_gate		48 +	gpio3_gate		49 +	gpt_gate		50 +	i2c1_gate		51 +	i2c2_gate		52 +	i2c3_gate		53 +	iomuxc_gate		54 +	ipu_gate		55 +	kpp_gate		56 +	mlb_gate		57 +	mshc_gate		58 +	owire_gate		59 +	pwm_gate		60 +	rngc_gate		61 +	rtc_gate		62 +	rtic_gate		63 +	scc_gate		64 +	sdma_gate		65 +	spba_gate		66 +	spdif_gate		67 +	ssi1_gate		68 +	ssi2_gate		69 +	uart1_gate		70 +	uart2_gate		71 +	uart3_gate		72 +	usbotg_gate		73 +	wdog_gate		74 +	max_gate		75 +	admux_gate		76 +	csi_gate		77 +	csi_div			78 +	csi_sel			79 +	iim_gate		80 +	gpu2d_gate		81 + +Examples: + +clks: ccm@53f80000 { +	compatible = "fsl,imx35-ccm"; +	reg = <0x53f80000 0x4000>; +	interrupts = <31>; +	#clock-cells = <1>; +}; + +esdhc1: esdhc@53fb4000 { +	compatible = "fsl,imx35-esdhc"; +	reg = <0x53fb4000 0x4000>; +	interrupts = <7>; +	clocks = <&clks 9>, <&clks 8>, <&clks 43>; +	clock-names = "ipg", "ahb", "per"; +}; diff --git a/Documentation/devicetree/bindings/clock/imx5-clock.txt b/Documentation/devicetree/bindings/clock/imx5-clock.txt index 4c029a8739d..cadc4d29ada 100644 --- a/Documentation/devicetree/bindings/clock/imx5-clock.txt +++ b/Documentation/devicetree/bindings/clock/imx5-clock.txt @@ -7,197 +7,8 @@ Required properties:  - #clock-cells: Should be <1>  The clock consumer should specify the desired clock by having the clock -ID in its "clocks" phandle cell.  The following is a full list of i.MX5 -clocks and IDs. - -	Clock			ID -	--------------------------- -	dummy			0 -	ckil			1 -	osc			2 -	ckih1			3 -	ckih2			4 -	ahb			5 -	ipg			6 -	axi_a			7 -	axi_b			8 -	uart_pred		9 -	uart_root		10 -	esdhc_a_pred		11 -	esdhc_b_pred		12 -	esdhc_c_s		13 -	esdhc_d_s		14 -	emi_sel			15 -	emi_slow_podf		16 -	nfc_podf		17 -	ecspi_pred		18 -	ecspi_podf		19 -	usboh3_pred		20 -	usboh3_podf		21 -	usb_phy_pred		22 -	usb_phy_podf		23 -	cpu_podf		24 -	di_pred			25 -	tve_s			27 -	uart1_ipg_gate		28 -	uart1_per_gate		29 -	uart2_ipg_gate		30 -	uart2_per_gate		31 -	uart3_ipg_gate		32 -	uart3_per_gate		33 -	i2c1_gate		34 -	i2c2_gate		35 -	gpt_ipg_gate		36 -	pwm1_ipg_gate		37 -	pwm1_hf_gate		38 -	pwm2_ipg_gate		39 -	pwm2_hf_gate		40 -	gpt_hf_gate		41 -	fec_gate		42 -	usboh3_per_gate		43 -	esdhc1_ipg_gate		44 -	esdhc2_ipg_gate		45 -	esdhc3_ipg_gate		46 -	esdhc4_ipg_gate		47 -	ssi1_ipg_gate		48 -	ssi2_ipg_gate		49 -	ssi3_ipg_gate		50 -	ecspi1_ipg_gate		51 -	ecspi1_per_gate		52 -	ecspi2_ipg_gate		53 -	ecspi2_per_gate		54 -	cspi_ipg_gate		55 -	sdma_gate		56 -	emi_slow_gate		57 -	ipu_s			58 -	ipu_gate		59 -	nfc_gate		60 -	ipu_di1_gate		61 -	vpu_s			62 -	vpu_gate		63 -	vpu_reference_gate	64 -	uart4_ipg_gate		65 -	uart4_per_gate		66 -	uart5_ipg_gate		67 -	uart5_per_gate		68 -	tve_gate		69 -	tve_pred		70 -	esdhc1_per_gate		71 -	esdhc2_per_gate		72 -	esdhc3_per_gate		73 -	esdhc4_per_gate		74 -	usb_phy_gate		75 -	hsi2c_gate		76 -	mipi_hsc1_gate		77 -	mipi_hsc2_gate		78 -	mipi_esc_gate		79 -	mipi_hsp_gate		80 -	ldb_di1_div_3_5		81 -	ldb_di1_div		82 -	ldb_di0_div_3_5		83 -	ldb_di0_div		84 -	ldb_di1_gate		85 -	can2_serial_gate	86 -	can2_ipg_gate		87 -	i2c3_gate		88 -	lp_apm			89 -	periph_apm		90 -	main_bus		91 -	ahb_max			92 -	aips_tz1		93 -	aips_tz2		94 -	tmax1			95 -	tmax2			96 -	tmax3			97 -	spba			98 -	uart_sel		99 -	esdhc_a_sel		100 -	esdhc_b_sel		101 -	esdhc_a_podf		102 -	esdhc_b_podf		103 -	ecspi_sel		104 -	usboh3_sel		105 -	usb_phy_sel		106 -	iim_gate		107 -	usboh3_gate		108 -	emi_fast_gate		109 -	ipu_di0_gate		110 -	gpc_dvfs		111 -	pll1_sw			112 -	pll2_sw			113 -	pll3_sw			114 -	ipu_di0_sel		115 -	ipu_di1_sel		116 -	tve_ext_sel		117 -	mx51_mipi		118 -	pll4_sw			119 -	ldb_di1_sel		120 -	di_pll4_podf		121 -	ldb_di0_sel		122 -	ldb_di0_gate		123 -	usb_phy1_gate		124 -	usb_phy2_gate		125 -	per_lp_apm		126 -	per_pred1		127 -	per_pred2		128 -	per_podf		129 -	per_root		130 -	ssi_apm			131 -	ssi1_root_sel		132 -	ssi2_root_sel		133 -	ssi3_root_sel		134 -	ssi_ext1_sel		135 -	ssi_ext2_sel		136 -	ssi_ext1_com_sel	137 -	ssi_ext2_com_sel	138 -	ssi1_root_pred		139 -	ssi1_root_podf		140 -	ssi2_root_pred		141 -	ssi2_root_podf		142 -	ssi_ext1_pred		143 -	ssi_ext1_podf		144 -	ssi_ext2_pred		145 -	ssi_ext2_podf		146 -	ssi1_root_gate		147 -	ssi2_root_gate		148 -	ssi3_root_gate		149 -	ssi_ext1_gate		150 -	ssi_ext2_gate		151 -	epit1_ipg_gate		152 -	epit1_hf_gate		153 -	epit2_ipg_gate		154 -	epit2_hf_gate		155 -	can_sel			156 -	can1_serial_gate	157 -	can1_ipg_gate		158 -	owire_gate		159 -	gpu3d_s			160 -	gpu2d_s			161 -	gpu3d_gate		162 -	gpu2d_gate		163 -	garb_gate		164 -	cko1_sel		165 -	cko1_podf		166 -	cko1			167 -	cko2_sel		168 -	cko2_podf		169 -	cko2			170 -	srtc_gate		171 -	pata_gate		172 -	sata_gate		173 -	spdif_xtal_sel		174 -	spdif0_sel		175 -	spdif1_sel		176 -	spdif0_pred		177 -	spdif0_podf		178 -	spdif1_pred		179 -	spdif1_podf		180 -	spdif0_com_sel		181 -	spdif1_com_sel		182 -	spdif0_gate		183 -	spdif1_gate		184 -	spdif_ipg_gate		185 -	ocram			186 +ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx5-clock.h +for the full list of i.MX5 clock IDs.  Examples (for mx53): @@ -212,7 +23,7 @@ can1: can@53fc8000 {  	compatible = "fsl,imx53-flexcan", "fsl,p1010-flexcan";  	reg = <0x53fc8000 0x4000>;  	interrupts = <82>; -	clocks = <&clks 158>, <&clks 157>; +	clocks = <&clks IMX5_CLK_CAN1_IPG_GATE>, <&clks IMX5_CLK_CAN1_SERIAL_GATE>;  	clock-names = "ipg", "per";  	status = "disabled";  }; diff --git a/Documentation/devicetree/bindings/clock/imx6q-clock.txt b/Documentation/devicetree/bindings/clock/imx6q-clock.txt index 5a90a724b52..90ec91fe5ce 100644 --- a/Documentation/devicetree/bindings/clock/imx6q-clock.txt +++ b/Documentation/devicetree/bindings/clock/imx6q-clock.txt @@ -215,6 +215,12 @@ clocks and IDs.  	cko2      		200  	cko      		201  	vdoa      		202 +	pll4_audio_div		203 +	lvds1_sel		204 +	lvds2_sel		205 +	lvds1_gate		206 +	lvds2_gate		207 +	esai_ahb		208  Examples: diff --git a/Documentation/devicetree/bindings/clock/imx6sx-clock.txt b/Documentation/devicetree/bindings/clock/imx6sx-clock.txt new file mode 100644 index 00000000000..22362b9b7ba --- /dev/null +++ b/Documentation/devicetree/bindings/clock/imx6sx-clock.txt @@ -0,0 +1,13 @@ +* Clock bindings for Freescale i.MX6 SoloX + +Required properties: +- compatible: Should be "fsl,imx6sx-ccm" +- reg: Address and length of the register set +- #clock-cells: Should be <1> +- clocks: list of clock specifiers, must contain an entry for each required +  entry in clock-names +- clock-names: should include entries "ckil", "osc", "ipp_di0" and "ipp_di1" + +The clock consumer should specify the desired clock by having the clock +ID in its "clocks" phandle cell.  See include/dt-bindings/clock/imx6sx-clock.h +for the full list of i.MX6 SoloX clock IDs. diff --git a/Documentation/devicetree/bindings/clock/keystone-gate.txt b/Documentation/devicetree/bindings/clock/keystone-gate.txt new file mode 100644 index 00000000000..c5aa187026e --- /dev/null +++ b/Documentation/devicetree/bindings/clock/keystone-gate.txt @@ -0,0 +1,29 @@ +Status: Unstable - ABI compatibility may be broken in the future + +Binding for Keystone gate control driver which uses PSC controller IP. + +This binding uses the common clock binding[1]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- compatible : shall be "ti,keystone,psc-clock". +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : parent clock phandle +- reg :	psc control and domain address address space +- reg-names : psc control and domain registers +- domain-id : psc domain id needed to check the transition state register + +Optional properties: +- clock-output-names : From common clock binding to override the +			default output clock name +Example: +	clkusb: clkusb { +		#clock-cells = <0>; +		compatible = "ti,keystone,psc-clock"; +		clocks = <&chipclk16>; +		clock-output-names = "usb"; +		reg = <0x02350008 0xb00>, <0x02350000 0x400>; +		reg-names = "control", "domain"; +		domain-id = <0>; +	}; diff --git a/Documentation/devicetree/bindings/clock/keystone-pll.txt b/Documentation/devicetree/bindings/clock/keystone-pll.txt new file mode 100644 index 00000000000..225990f79b7 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/keystone-pll.txt @@ -0,0 +1,84 @@ +Status: Unstable - ABI compatibility may be broken in the future + +Binding for keystone PLLs. The main PLL IP typically has a multiplier, +a divider and a post divider. The additional PLL IPs like ARMPLL, DDRPLL +and PAPLL are controlled by the memory mapped register where as the Main +PLL is controlled by a PLL controller registers along with memory mapped +registers. + +This binding uses the common clock binding[1]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- #clock-cells : from common clock binding; shall be set to 0. +- compatible : shall be "ti,keystone,main-pll-clock" or "ti,keystone,pll-clock" +- clocks : parent clock phandle +- reg - pll control0 and pll multipler registers +- reg-names : control and multiplier. The multiplier is applicable only for +		main pll clock +- fixed-postdiv : fixed post divider value. If absent, use clkod register bits +		for postdiv + +Example: +	mainpllclk: mainpllclk@2310110 { +		#clock-cells = <0>; +		compatible = "ti,keystone,main-pll-clock"; +		clocks = <&refclksys>; +		reg = <0x02620350 4>, <0x02310110 4>; +		reg-names = "control", "multiplier"; +		fixed-postdiv = <2>; +	}; + +	papllclk: papllclk@2620358 { +		#clock-cells = <0>; +		compatible = "ti,keystone,pll-clock"; +		clocks = <&refclkpass>; +		clock-output-names = "pa-pll-clk"; +		reg = <0x02620358 4>; +		reg-names = "control"; +	}; + +Required properties: +- #clock-cells : from common clock binding; shall be set to 0. +- compatible : shall be "ti,keystone,pll-mux-clock" +- clocks : link phandles of parent clocks +- reg - pll mux register +- bit-shift : number of bits to shift the bit-mask +- bit-mask : arbitrary bitmask for programming the mux + +Optional properties: +- clock-output-names : From common clock binding. + +Example: +	mainmuxclk: mainmuxclk@2310108 { +		#clock-cells = <0>; +		compatible = "ti,keystone,pll-mux-clock"; +		clocks = <&mainpllclk>, <&refclkmain>; +		reg = <0x02310108 4>; +		bit-shift = <23>; +		bit-mask = <1>; +		clock-output-names = "mainmuxclk"; +	}; + +Required properties: +- #clock-cells : from common clock binding; shall be set to 0. +- compatible : shall be "ti,keystone,pll-divider-clock" +- clocks : parent clock phandle +- reg - pll mux register +- bit-shift : number of bits to shift the bit-mask +- bit-mask : arbitrary bitmask for programming the divider + +Optional properties: +- clock-output-names : From common clock binding. + +Example: +	gemtraceclk: gemtraceclk@2310120 { +		#clock-cells = <0>; +		compatible = "ti,keystone,pll-divider-clock"; +		clocks = <&mainmuxclk>; +		reg = <0x02310120 4>; +		bit-shift = <0>; +		bit-mask = <8>; +		clock-output-names = "gemtraceclk"; +	}; diff --git a/Documentation/devicetree/bindings/clock/lsi,axm5516-clks.txt b/Documentation/devicetree/bindings/clock/lsi,axm5516-clks.txt new file mode 100644 index 00000000000..3ce97cfe999 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/lsi,axm5516-clks.txt @@ -0,0 +1,29 @@ +AXM5516 clock driver bindings +----------------------------- + +Required properties : +- compatible : shall contain "lsi,axm5516-clks" +- reg : shall contain base register location and length +- #clock-cells : shall contain 1 + +The consumer specifies the desired clock by having the clock ID in its "clocks" +phandle cell. See <dt-bindings/clock/lsi,axxia-clock.h> for the list of +supported clock IDs. + +Example: + +	clks: clock-controller@2010020000 { +		compatible = "lsi,axm5516-clks"; +		#clock-cells = <1>; +		reg = <0x20 0x10020000 0 0x20000>; +	}; + +	serial0: uart@2010080000 { +		compatible = "arm,pl011", "arm,primecell"; +		reg = <0x20 0x10080000 0 0x1000>; +		interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&clks AXXIA_CLK_PER>; +		clock-names = "apb_pclk"; +	}; +																																}; + diff --git a/Documentation/devicetree/bindings/clock/maxim,max77686.txt b/Documentation/devicetree/bindings/clock/maxim,max77686.txt new file mode 100644 index 00000000000..96ce71bbd74 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/maxim,max77686.txt @@ -0,0 +1,38 @@ +Binding for Maxim MAX77686 32k clock generator block + +This is a part of device tree bindings of MAX77686 multi-function device. +More information can be found in bindings/mfd/max77686.txt file. + +The MAX77686 contains three 32.768khz clock outputs that can be controlled +(gated/ungated) over I2C. + +Following properties should be presend in main device node of the MFD chip. + +Required properties: +- #clock-cells: simple one-cell clock specifier format is used, where the +  only cell is used as an index of the clock inside the provider. Following +  indices are allowed: +    - 0: 32khz_ap clock, +    - 1: 32khz_cp clock, +    - 2: 32khz_pmic clock. + +Example: Node of the MFD chip + +	max77686: max77686@09 { +		compatible = "maxim,max77686"; +		interrupt-parent = <&wakeup_eint>; +		interrupts = <26 0>; +		reg = <0x09>; +		#clock-cells = <1>; + +		/* ... */ +	}; + +Example: Clock consumer node + +	foo@0 { +		compatible = "bar,foo"; +		/* ... */ +		clock-names = "my-clock"; +		clocks = <&max77686 2>; +	}; diff --git a/Documentation/devicetree/bindings/clock/moxa,moxart-clock.txt b/Documentation/devicetree/bindings/clock/moxa,moxart-clock.txt new file mode 100644 index 00000000000..fedea84314a --- /dev/null +++ b/Documentation/devicetree/bindings/clock/moxa,moxart-clock.txt @@ -0,0 +1,48 @@ +Device Tree Clock bindings for arch-moxart + +This binding uses the common clock binding[1]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +MOXA ART SoCs allow to determine PLL output and APB frequencies +by reading registers holding multiplier and divisor information. + + +PLL: + +Required properties: +- compatible : Must be "moxa,moxart-pll-clock" +- #clock-cells : Should be 0 +- reg : Should contain registers location and length +- clocks : Should contain phandle + clock-specifier for the parent clock + +Optional properties: +- clock-output-names : Should contain clock name + + +APB: + +Required properties: +- compatible : Must be "moxa,moxart-apb-clock" +- #clock-cells : Should be 0 +- reg : Should contain registers location and length +- clocks : Should contain phandle + clock-specifier for the parent clock + +Optional properties: +- clock-output-names : Should contain clock name + + +For example: + +	clk_pll: clk_pll@98100000 { +		compatible = "moxa,moxart-pll-clock"; +		#clock-cells = <0>; +		reg = <0x98100000 0x34>; +	}; + +	clk_apb: clk_apb@98100000 { +		compatible = "moxa,moxart-apb-clock"; +		#clock-cells = <0>; +		reg = <0x98100000 0x34>; +		clocks = <&clk_pll>; +	}; diff --git a/Documentation/devicetree/bindings/clock/mvebu-core-clock.txt b/Documentation/devicetree/bindings/clock/mvebu-core-clock.txt index 1e662948661..dc5ea5b22da 100644 --- a/Documentation/devicetree/bindings/clock/mvebu-core-clock.txt +++ b/Documentation/devicetree/bindings/clock/mvebu-core-clock.txt @@ -11,19 +11,41 @@ The following is a list of provided IDs and clock names on Armada 370/XP:   3 = hclk    (DRAM control clock)   4 = dramclk (DDR clock) +The following is a list of provided IDs and clock names on Armada 375: + 0 = tclk    (Internal Bus clock) + 1 = cpuclk  (CPU clock) + 2 = l2clk   (L2 Cache clock) + 3 = ddrclk  (DDR clock) + +The following is a list of provided IDs and clock names on Armada 380/385: + 0 = tclk    (Internal Bus clock) + 1 = cpuclk  (CPU clock) + 2 = l2clk   (L2 Cache clock) + 3 = ddrclk  (DDR clock) +  The following is a list of provided IDs and clock names on Kirkwood and Dove:   0 = tclk   (Internal Bus clock)   1 = cpuclk (CPU0 clock)   2 = l2clk  (L2 Cache clock derived from CPU0 clock)   3 = ddrclk (DDR controller clock derived from CPU0 clock) +The following is a list of provided IDs and clock names on Orion5x: + 0 = tclk   (Internal Bus clock) + 1 = cpuclk (CPU0 clock) + 2 = ddrclk (DDR controller clock derived from CPU0 clock) +  Required properties:  - compatible : shall be one of the following:  	"marvell,armada-370-core-clock" - For Armada 370 SoC core clocks +	"marvell,armada-375-core-clock" - For Armada 375 SoC core clocks +	"marvell,armada-380-core-clock" - For Armada 380/385 SoC core clocks  	"marvell,armada-xp-core-clock" - For Armada XP SoC core clocks  	"marvell,dove-core-clock" - for Dove SoC core clocks  	"marvell,kirkwood-core-clock" - for Kirkwood SoC (except mv88f6180)  	"marvell,mv88f6180-core-clock" - for Kirkwood MV88f6180 SoC +	"marvell,mv88f5182-core-clock" - for Orion MV88F5182 SoC +	"marvell,mv88f5281-core-clock" - for Orion MV88F5281 SoC +	"marvell,mv88f6183-core-clock" - for Orion MV88F6183 SoC  - reg : shall be the register address of the Sample-At-Reset (SAR) register  - #clock-cells : from common clock binding; shall be set to 1 diff --git a/Documentation/devicetree/bindings/clock/mvebu-corediv-clock.txt b/Documentation/devicetree/bindings/clock/mvebu-corediv-clock.txt new file mode 100644 index 00000000000..520562a7dc2 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/mvebu-corediv-clock.txt @@ -0,0 +1,22 @@ +* Core Divider Clock bindings for Marvell MVEBU SoCs + +The following is a list of provided IDs and clock names on Armada 370/XP: + 0 = nand (NAND clock) + +Required properties: +- compatible : must be "marvell,armada-370-corediv-clock", +		       "marvell,armada-375-corediv-clock", +		       "marvell,armada-380-corediv-clock", + +- reg : must be the register address of Core Divider control register +- #clock-cells : from common clock binding; shall be set to 1 +- clocks : must be set to the parent's phandle + +Example: + +corediv_clk: corediv-clocks@18740 { +	compatible = "marvell,armada-370-corediv-clock"; +	reg = <0x18740 0xc>; +	#clock-cells = <1>; +	clocks = <&pll>; +}; diff --git a/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt b/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt index cffc93d97f5..76477be742b 100644 --- a/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt +++ b/Documentation/devicetree/bindings/clock/mvebu-gated-clock.txt @@ -1,10 +1,11 @@ -* Gated Clock bindings for Marvell Orion SoCs +* Gated Clock bindings for Marvell EBU SoCs -Marvell Dove and Kirkwood allow some peripheral clocks to be gated to save -some power. The clock consumer should specify the desired clock by having -the clock ID in its "clocks" phandle cell. The clock ID is directly mapped to -the corresponding clock gating control bit in HW to ease manual clock lookup -in datasheet. +Marvell Armada 370/375/380/385/XP, Dove and Kirkwood allow some +peripheral clocks to be gated to save some power. The clock consumer +should specify the desired clock by having the clock ID in its +"clocks" phandle cell. The clock ID is directly mapped to the +corresponding clock gating control bit in HW to ease manual clock +lookup in datasheet.  The following is a list of provided IDs for Armada 370:  ID	Clock	Peripheral @@ -22,6 +23,60 @@ ID	Clock	Peripheral  28	ddr	DDR Cntrl  30	sata1	SATA Host 0 +The following is a list of provided IDs for Armada 375: +ID	Clock		Peripheral +----------------------------------- +2	mu		Management Unit +3	pp		Packet Processor +4	ptp		PTP +5	pex0		PCIe 0 Clock out +6	pex1		PCIe 1 Clock out +8	audio		Audio Cntrl +11	nd_clk		Nand Flash Cntrl +14	sata0_link	SATA 0 Link +15	sata0_core	SATA 0 Core +16	usb3		USB3 Host +17	sdio		SDHCI Host +18	usb		USB Host +19	gop		Gigabit Ethernet MAC +20	sata1_link	SATA 1 Link +21	sata1_core	SATA 1 Core +22	xor0		XOR DMA 0 +23	xor1		XOR DMA 0 +24	copro		Coprocessor +25	tdm		Time Division Mplx +28	crypto0_enc	Cryptographic Unit Port 0 Encryption +29	crypto0_core	Cryptographic Unit Port 0 Core +30	crypto1_enc	Cryptographic Unit Port 1 Encryption +31	crypto1_core	Cryptographic Unit Port 1 Core + +The following is a list of provided IDs for Armada 380/385: +ID	Clock		Peripheral +----------------------------------- +0	audio		Audio +2	ge2		Gigabit Ethernet 2 +3	ge1		Gigabit Ethernet 1 +4	ge0		Gigabit Ethernet 0 +5	pex1		PCIe 1 +6	pex2		PCIe 2 +7	pex3		PCIe 3 +8	pex0		PCIe 0 +9	usb3h0		USB3 Host 0 +10	usb3h1		USB3 Host 1 +11	usb3d		USB3 Device +13	bm		Buffer Management +14	crypto0z	Cryptographic 0 Z +15	sata0		SATA 0 +16	crypto1z	Cryptographic 1 Z +17	sdio		SDIO +18	usb2		USB 2 +21	crypto1		Cryptographic 1 +22	xor0		XOR 0 +23	crypto0		Cryptographic 0 +25	tdm		Time Division Multiplexing +28	xor1		XOR 1 +30	sata1		SATA 1 +  The following is a list of provided IDs for Armada XP:  ID	Clock	Peripheral  ----------------------------------- @@ -94,6 +149,10 @@ ID	Clock	Peripheral  Required properties:  - compatible : shall be one of the following: +	"marvell,armada-370-gating-clock" - for Armada 370 SoC clock gating +	"marvell,armada-375-gating-clock" - for Armada 375 SoC clock gating +	"marvell,armada-380-gating-clock" - for Armada 380/385 SoC clock gating +	"marvell,armada-xp-gating-clock" - for Armada XP SoC clock gating  	"marvell,dove-gating-clock" - for Dove SoC clock gating  	"marvell,kirkwood-gating-clock" - for Kirkwood SoC clock gating  - reg : shall be the register address of the Clock Gating Control register diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra114-car.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra114-car.txt index 0c80c267710..9acea9d9316 100644 --- a/Documentation/devicetree/bindings/clock/nvidia,tegra114-car.txt +++ b/Documentation/devicetree/bindings/clock/nvidia,tegra114-car.txt @@ -15,6 +15,9 @@ Required properties :    In clock consumers, this cell represents the clock ID exposed by the    CAR. The assignments may be found in header file    <dt-bindings/clock/tegra114-car.h>. +- #reset-cells : Should be 1. +  In clock consumers, this cell represents the bit number in the CAR's +  array of CLK_RST_CONTROLLER_RST_DEVICES_* registers.  Example SoC include file: @@ -23,6 +26,7 @@ Example SoC include file:  		compatible = "nvidia,tegra114-car";  		reg = <0x60006000 0x1000>;  		#clock-cells = <1>; +		#reset-cells = <1>;  	};  	usb@c5004000 { diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt new file mode 100644 index 00000000000..ded5d6212c8 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/nvidia,tegra124-car.txt @@ -0,0 +1,63 @@ +NVIDIA Tegra124 Clock And Reset Controller + +This binding uses the common clock binding: +Documentation/devicetree/bindings/clock/clock-bindings.txt + +The CAR (Clock And Reset) Controller on Tegra is the HW module responsible +for muxing and gating Tegra's clocks, and setting their rates. + +Required properties : +- compatible : Should be "nvidia,tegra124-car" +- reg : Should contain CAR registers location and length +- clocks : Should contain phandle and clock specifiers for two clocks: +  the 32 KHz "32k_in", and the board-specific oscillator "osc". +- #clock-cells : Should be 1. +  In clock consumers, this cell represents the clock ID exposed by the +  CAR. The assignments may be found in header file +  <dt-bindings/clock/tegra124-car.h>. +- #reset-cells : Should be 1. +  In clock consumers, this cell represents the bit number in the CAR's +  array of CLK_RST_CONTROLLER_RST_DEVICES_* registers. + +Example SoC include file: + +/ { +	tegra_car: clock { +		compatible = "nvidia,tegra124-car"; +		reg = <0x60006000 0x1000>; +		#clock-cells = <1>; +		#reset-cells = <1>; +	}; + +	usb@c5004000 { +		clocks = <&tegra_car TEGRA124_CLK_USB2>; +	}; +}; + +Example board file: + +/ { +	clocks { +		compatible = "simple-bus"; +		#address-cells = <1>; +		#size-cells = <0>; + +		osc: clock@0 { +			compatible = "fixed-clock"; +			reg = <0>; +			#clock-cells = <0>; +			clock-frequency = <112400000>; +		}; + +		clk_32k: clock@1 { +			compatible = "fixed-clock"; +			reg = <1>; +			#clock-cells = <0>; +			clock-frequency = <32768>; +		}; +	}; + +	&tegra_car { +		clocks = <&clk_32k> <&osc>; +	}; +}; diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra20-car.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra20-car.txt index fcfed5bf73f..6c5901b503d 100644 --- a/Documentation/devicetree/bindings/clock/nvidia,tegra20-car.txt +++ b/Documentation/devicetree/bindings/clock/nvidia,tegra20-car.txt @@ -15,6 +15,9 @@ Required properties :    In clock consumers, this cell represents the clock ID exposed by the    CAR. The assignments may be found in header file    <dt-bindings/clock/tegra20-car.h>. +- #reset-cells : Should be 1. +  In clock consumers, this cell represents the bit number in the CAR's +  array of CLK_RST_CONTROLLER_RST_DEVICES_* registers.  Example SoC include file: @@ -23,6 +26,7 @@ Example SoC include file:  		compatible = "nvidia,tegra20-car";  		reg = <0x60006000 0x1000>;  		#clock-cells = <1>; +		#reset-cells = <1>;  	};  	usb@c5004000 { diff --git a/Documentation/devicetree/bindings/clock/nvidia,tegra30-car.txt b/Documentation/devicetree/bindings/clock/nvidia,tegra30-car.txt index 0f714081e98..63618cde12d 100644 --- a/Documentation/devicetree/bindings/clock/nvidia,tegra30-car.txt +++ b/Documentation/devicetree/bindings/clock/nvidia,tegra30-car.txt @@ -15,6 +15,9 @@ Required properties :    In clock consumers, this cell represents the clock ID exposed by the    CAR. The assignments may be found in header file    <dt-bindings/clock/tegra30-car.h>. +- #reset-cells : Should be 1. +  In clock consumers, this cell represents the bit number in the CAR's +  array of CLK_RST_CONTROLLER_RST_DEVICES_* registers.  Example SoC include file: @@ -23,6 +26,7 @@ Example SoC include file:  		compatible = "nvidia,tegra30-car";  		reg = <0x60006000 0x1000>;  		#clock-cells = <1>; +		#reset-cells = <1>;  	};  	usb@c5004000 { diff --git a/Documentation/devicetree/bindings/clock/qcom,gcc.txt b/Documentation/devicetree/bindings/clock/qcom,gcc.txt new file mode 100644 index 00000000000..9cfcb4f2bc9 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/qcom,gcc.txt @@ -0,0 +1,24 @@ +Qualcomm Global Clock & Reset Controller Binding +------------------------------------------------ + +Required properties : +- compatible : shall contain only one of the following: + +			"qcom,gcc-apq8064" +			"qcom,gcc-msm8660" +			"qcom,gcc-msm8960" +			"qcom,gcc-msm8974" +			"qcom,gcc-msm8974pro" +			"qcom,gcc-msm8974pro-ac" + +- reg : shall contain base register location and length +- #clock-cells : shall contain 1 +- #reset-cells : shall contain 1 + +Example: +	clock-controller@900000 { +		compatible = "qcom,gcc-msm8960"; +		reg = <0x900000 0x4000>; +		#clock-cells = <1>; +		#reset-cells = <1>; +	}; diff --git a/Documentation/devicetree/bindings/clock/qcom,mmcc.txt b/Documentation/devicetree/bindings/clock/qcom,mmcc.txt new file mode 100644 index 00000000000..d572e9964c5 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/qcom,mmcc.txt @@ -0,0 +1,21 @@ +Qualcomm Multimedia Clock & Reset Controller Binding +---------------------------------------------------- + +Required properties : +- compatible : shall contain only one of the following: + +			"qcom,mmcc-msm8660" +			"qcom,mmcc-msm8960" +			"qcom,mmcc-msm8974" + +- reg : shall contain base register location and length +- #clock-cells : shall contain 1 +- #reset-cells : shall contain 1 + +Example: +	clock-controller@4000000 { +		compatible = "qcom,mmcc-msm8960"; +		reg = <0x4000000 0x1000>; +		#clock-cells = <1>; +		#reset-cells = <1>; +	}; diff --git a/Documentation/devicetree/bindings/clock/qoriq-clock.txt b/Documentation/devicetree/bindings/clock/qoriq-clock.txt new file mode 100644 index 00000000000..5666812fc42 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/qoriq-clock.txt @@ -0,0 +1,142 @@ +* Clock Block on Freescale CoreNet Platforms + +Freescale CoreNet chips take primary clocking input from the external +SYSCLK signal. The SYSCLK input (frequency) is multiplied using +multiple phase locked loops (PLL) to create a variety of frequencies +which can then be passed to a variety of internal logic, including +cores and peripheral IP blocks. +Please refer to the Reference Manual for details. + +All references to "1.0" and "2.0" refer to the QorIQ chassis version to +which the chip complies. + +Chassis Version		Example Chips +---------------		------------- +1.0			p4080, p5020, p5040 +2.0			t4240, b4860, t1040 + +1. Clock Block Binding + +Required properties: +- compatible: Should contain a specific clock block compatible string +	and a single chassis clock compatible string. +	Clock block strings include, but not limited to, one of the: +	* "fsl,p2041-clockgen" +	* "fsl,p3041-clockgen" +	* "fsl,p4080-clockgen" +	* "fsl,p5020-clockgen" +	* "fsl,p5040-clockgen" +	* "fsl,t4240-clockgen" +	* "fsl,b4420-clockgen" +	* "fsl,b4860-clockgen" +	Chassis clock strings include: +	* "fsl,qoriq-clockgen-1.0": for chassis 1.0 clocks +	* "fsl,qoriq-clockgen-2.0": for chassis 2.0 clocks +- reg: Describes the address of the device's resources within the +	address space defined by its parent bus, and resource zero +	represents the clock register set +- clock-frequency: Input system clock frequency + +Recommended properties: +- ranges: Allows valid translation between child's address space and +	parent's. Must be present if the device has sub-nodes. +- #address-cells: Specifies the number of cells used to represent +	physical base addresses.  Must be present if the device has +	sub-nodes and set to 1 if present +- #size-cells: Specifies the number of cells used to represent +	the size of an address. Must be present if the device has +	sub-nodes and set to 1 if present + +2. Clock Provider/Consumer Binding + +Most of the bindings are from the common clock binding[1]. + [1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- compatible : Should include one of the following: +	* "fsl,qoriq-core-pll-1.0" for core PLL clocks (v1.0) +	* "fsl,qoriq-core-pll-2.0" for core PLL clocks (v2.0) +	* "fsl,qoriq-core-mux-1.0" for core mux clocks (v1.0) +	* "fsl,qoriq-core-mux-2.0" for core mux clocks (v2.0) +	* "fsl,qoriq-sysclk-1.0": for input system clock (v1.0). +		It takes parent's clock-frequency as its clock. +	* "fsl,qoriq-sysclk-2.0": for input system clock (v2.0). +		It takes parent's clock-frequency as its clock. +- #clock-cells: From common clock binding. The number of cells in a +	clock-specifier. Should be <0> for "fsl,qoriq-sysclk-[1,2].0" +	clocks, or <1> for "fsl,qoriq-core-pll-[1,2].0" clocks. +	For "fsl,qoriq-core-pll-[1,2].0" clocks, the single +	clock-specifier cell may take the following values: +	* 0 - equal to the PLL frequency +	* 1 - equal to the PLL frequency divided by 2 +	* 2 - equal to the PLL frequency divided by 4 + +Recommended properties: +- clocks: Should be the phandle of input parent clock +- clock-names: From common clock binding, indicates the clock name +- clock-output-names: From common clock binding, indicates the names of +	output clocks +- reg: Should be the offset and length of clock block base address. +	The length should be 4. + +Example for clock block and clock provider: +/ { +	clockgen: global-utilities@e1000 { +		compatible = "fsl,p5020-clockgen", "fsl,qoriq-clockgen-1.0"; +		ranges = <0x0 0xe1000 0x1000>; +		clock-frequency = <133333333>; +		reg = <0xe1000 0x1000>; +		#address-cells = <1>; +		#size-cells = <1>; + +		sysclk: sysclk { +			#clock-cells = <0>; +			compatible = "fsl,qoriq-sysclk-1.0"; +			clock-output-names = "sysclk"; +		}; + +		pll0: pll0@800 { +			#clock-cells = <1>; +			reg = <0x800 0x4>; +			compatible = "fsl,qoriq-core-pll-1.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll0", "pll0-div2"; +		}; + +		pll1: pll1@820 { +			#clock-cells = <1>; +			reg = <0x820 0x4>; +			compatible = "fsl,qoriq-core-pll-1.0"; +			clocks = <&sysclk>; +			clock-output-names = "pll1", "pll1-div2"; +		}; + +		mux0: mux0@0 { +			#clock-cells = <0>; +			reg = <0x0 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux0"; +		}; + +		mux1: mux1@20 { +			#clock-cells = <0>; +			reg = <0x20 0x4>; +			compatible = "fsl,qoriq-core-mux-1.0"; +			clocks = <&pll0 0>, <&pll0 1>, <&pll1 0>, <&pll1 1>; +			clock-names = "pll0", "pll0-div2", "pll1", "pll1-div2"; +			clock-output-names = "cmux1"; +		}; +	}; +  } + +Example for clock consumer: + +/ { +	cpu0: PowerPC,e5500@0 { +		... +		clocks = <&mux0>; +		... +	}; +  } diff --git a/Documentation/devicetree/bindings/clock/renesas,cpg-div6-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,cpg-div6-clocks.txt new file mode 100644 index 00000000000..952e373178d --- /dev/null +++ b/Documentation/devicetree/bindings/clock/renesas,cpg-div6-clocks.txt @@ -0,0 +1,28 @@ +* Renesas CPG DIV6 Clock + +The CPG DIV6 clocks are variable factor clocks provided by the Clock Pulse +Generator (CPG). They clock input is divided by a configurable factor from 1 +to 64. + +Required Properties: + +  - compatible: Must be one of the following +    - "renesas,r8a7790-div6-clock" for R8A7790 (R-Car H2) DIV6 clocks +    - "renesas,r8a7791-div6-clock" for R8A7791 (R-Car M2) DIV6 clocks +    - "renesas,cpg-div6-clock" for generic DIV6 clocks +  - reg: Base address and length of the memory resource used by the DIV6 clock +  - clocks: Reference to the parent clock +  - #clock-cells: Must be 0 +  - clock-output-names: The name of the clock as a free-form string + + +Example +------- + +	sd2_clk: sd2_clk@e6150078 { +		compatible = "renesas,r8a7790-div6-clock", "renesas,cpg-div6-clock"; +		reg = <0 0xe6150078 0 4>; +		clocks = <&pll1_div2_clk>; +		#clock-cells = <0>; +		clock-output-names = "sd2"; +	}; diff --git a/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt new file mode 100644 index 00000000000..8a92b5fb354 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt @@ -0,0 +1,53 @@ +* Renesas CPG Module Stop (MSTP) Clocks + +The CPG can gate SoC device clocks. The gates are organized in groups of up to +32 gates. + +This device tree binding describes a single 32 gate clocks group per node. +Clocks are referenced by user nodes by the MSTP node phandle and the clock +index in the group, from 0 to 31. + +Required Properties: + +  - compatible: Must be one of the following +    - "renesas,r7s72100-mstp-clocks" for R7S72100 (RZ) MSTP gate clocks +    - "renesas,r8a7779-mstp-clocks" for R8A7779 (R-Car H1) MSTP gate clocks +    - "renesas,r8a7790-mstp-clocks" for R8A7790 (R-Car H2) MSTP gate clocks +    - "renesas,r8a7791-mstp-clocks" for R8A7791 (R-Car M2) MSTP gate clocks +    - "renesas,cpg-mstp-clock" for generic MSTP gate clocks +  - reg: Base address and length of the I/O mapped registers used by the MSTP +    clocks. The first register is the clock control register and is mandatory. +    The second register is the clock status register and is optional when not +    implemented in hardware. +  - clocks: Reference to the parent clocks, one per output clock. The parents +    must appear in the same order as the output clocks. +  - #clock-cells: Must be 1 +  - clock-output-names: The name of the clocks as free-form strings +  - renesas,clock-indices: Indices of the gate clocks into the group (0 to 31) + +The clocks, clock-output-names and renesas,clock-indices properties contain one +entry per gate clock. The MSTP groups are sparsely populated. Unimplemented +gate clocks must not be declared. + + +Example +------- + +	#include <dt-bindings/clock/r8a7790-clock.h> + +	mstp3_clks: mstp3_clks@e615013c { +		compatible = "renesas,r8a7790-mstp-clocks", "renesas,cpg-mstp-clocks"; +		reg = <0 0xe615013c 0 4>, <0 0xe6150048 0 4>; +		clocks = <&cp_clk>, <&mmc1_clk>, <&sd3_clk>, <&sd2_clk>, +			 <&cpg_clocks R8A7790_CLK_SD1>, <&cpg_clocks R8A7790_CLK_SD0>, +			 <&mmc0_clk>; +		#clock-cells = <1>; +		clock-output-names = +			"tpu0", "mmcif1", "sdhi3", "sdhi2", +			 "sdhi1", "sdhi0", "mmcif0"; +		clock-indices = < +			R8A7790_CLK_TPU0 R8A7790_CLK_MMCIF1 R8A7790_CLK_SDHI3 +			R8A7790_CLK_SDHI2 R8A7790_CLK_SDHI1 R8A7790_CLK_SDHI0 +			R8A7790_CLK_MMCIF0 +		>; +	}; diff --git a/Documentation/devicetree/bindings/clock/renesas,r8a7740-cpg-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,r8a7740-cpg-clocks.txt new file mode 100644 index 00000000000..2c03302f86e --- /dev/null +++ b/Documentation/devicetree/bindings/clock/renesas,r8a7740-cpg-clocks.txt @@ -0,0 +1,41 @@ +These bindings should be considered EXPERIMENTAL for now. + +* Renesas R8A7740  Clock Pulse Generator (CPG) + +The CPG generates core clocks for the R8A7740 SoC. It includes three PLLs +and several fixed ratio and variable ratio dividers. + +Required Properties: + +  - compatible: Must be "renesas,r8a7740-cpg-clocks" + +  - reg: Base address and length of the memory resource used by the CPG + +  - clocks: Reference to the three parent clocks +  - #clock-cells: Must be 1 +  - clock-output-names: The names of the clocks. Supported clocks are +    "system", "pllc0", "pllc1", "pllc2", "r", "usb24s", "i", "zg", "b", +    "m1", "hp", "hpp", "usbp", "s", "zb", "m3", and "cp". + +  - renesas,mode: board-specific settings of the MD_CK* bits + + +Example +------- + +cpg_clocks: cpg_clocks@e6150000 { +        compatible = "renesas,r8a7740-cpg-clocks"; +        reg = <0xe6150000 0x10000>; +        clocks = <&extal1_clk>, <&extal2_clk>, <&extalr_clk>; +        #clock-cells = <1>; +        clock-output-names = "system", "pllc0", "pllc1", +                             "pllc2", "r", +                             "usb24s", +                             "i", "zg", "b", "m1", "hp", +                             "hpp", "usbp", "s", "zb", "m3", +                             "cp"; +}; + +&cpg_clocks { +	renesas,mode = <0x05>; +}; diff --git a/Documentation/devicetree/bindings/clock/renesas,r8a7779-cpg-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,r8a7779-cpg-clocks.txt new file mode 100644 index 00000000000..ed3c8cb12f4 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/renesas,r8a7779-cpg-clocks.txt @@ -0,0 +1,27 @@ +* Renesas R8A7779 Clock Pulse Generator (CPG) + +The CPG generates core clocks for the R8A7779. It includes one PLL and +several fixed ratio dividers + +Required Properties: + +  - compatible: Must be "renesas,r8a7779-cpg-clocks" +  - reg: Base address and length of the memory resource used by the CPG + +  - clocks: Reference to the parent clock +  - #clock-cells: Must be 1 +  - clock-output-names: The names of the clocks. Supported clocks are "plla", +    "z", "zs", "s", "s1", "p", "b", "out". + + +Example +------- + +	cpg_clocks: cpg_clocks@ffc80000 { +		compatible = "renesas,r8a7779-cpg-clocks"; +		reg = <0 0xffc80000 0 0x30>; +		clocks = <&extal_clk>; +		#clock-cells = <1>; +		clock-output-names = "plla", "z", "zs", "s", "s1", "p", +		                     "b", "out"; +	}; diff --git a/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt new file mode 100644 index 00000000000..7b41c2fe54d --- /dev/null +++ b/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt @@ -0,0 +1,32 @@ +* Renesas R-Car Gen2 Clock Pulse Generator (CPG) + +The CPG generates core clocks for the R-Car Gen2 SoCs. It includes three PLLs +and several fixed ratio dividers. + +Required Properties: + +  - compatible: Must be one of +    - "renesas,r8a7790-cpg-clocks" for the r8a7790 CPG +    - "renesas,r8a7791-cpg-clocks" for the r8a7791 CPG +    - "renesas,rcar-gen2-cpg-clocks" for the generic R-Car Gen2 CPG + +  - reg: Base address and length of the memory resource used by the CPG + +  - clocks: Reference to the parent clock +  - #clock-cells: Must be 1 +  - clock-output-names: The names of the clocks. Supported clocks are "main", +    "pll0", "pll1", "pll3", "lb", "qspi", "sdh", "sd0", "sd1" and "z" + + +Example +------- + +	cpg_clocks: cpg_clocks@e6150000 { +		compatible = "renesas,r8a7790-cpg-clocks", +			     "renesas,rcar-gen2-cpg-clocks"; +		reg = <0 0xe6150000 0 0x1000>; +		clocks = <&extal_clk>; +		#clock-cells = <1>; +		clock-output-names = "main", "pll0, "pll1", "pll3", +				     "lb", "qspi", "sdh", "sd0", "sd1", "z"; +	}; diff --git a/Documentation/devicetree/bindings/clock/renesas,rz-cpg-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,rz-cpg-clocks.txt new file mode 100644 index 00000000000..98a25749252 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/renesas,rz-cpg-clocks.txt @@ -0,0 +1,29 @@ +* Renesas RZ Clock Pulse Generator (CPG) + +The CPG generates core clocks for the RZ SoCs. It includes the PLL, variable +CPU and GPU clocks, and several fixed ratio dividers. + +Required Properties: + +  - compatible: Must be one of +    - "renesas,r7s72100-cpg-clocks" for the r7s72100 CPG +    - "renesas,rz-cpg-clocks" for the generic RZ CPG +  - reg: Base address and length of the memory resource used by the CPG +  - clocks: References to possible parent clocks. Order must match clock modes +    in the datasheet. For the r7s72100, this is extal, usb_x1. +  - #clock-cells: Must be 1 +  - clock-output-names: The names of the clocks. Supported clocks are "pll", +    "i", and "g" + + +Example +------- + +	cpg_clocks: cpg_clocks@fcfe0000 { +		#clock-cells = <1>; +		compatible = "renesas,r7s72100-cpg-clocks", +			     "renesas,rz-cpg-clocks"; +		reg = <0xfcfe0000 0x18>; +		clocks = <&extal_clk>, <&usb_x1_clk>; +		clock-output-names = "pll", "i", "g"; +	}; diff --git a/Documentation/devicetree/bindings/clock/samsung,s3c2410-clock.txt b/Documentation/devicetree/bindings/clock/samsung,s3c2410-clock.txt new file mode 100644 index 00000000000..822505e715a --- /dev/null +++ b/Documentation/devicetree/bindings/clock/samsung,s3c2410-clock.txt @@ -0,0 +1,50 @@ +* Samsung S3C2410 Clock Controller + +The S3C2410 clock controller generates and supplies clock to various controllers +within the SoC. The clock binding described here is applicable to the s3c2410, +s3c2440 and s3c2442 SoCs in the s3c24x family. + +Required Properties: + +- compatible: should be one of the following. +  - "samsung,s3c2410-clock" - controller compatible with S3C2410 SoC. +  - "samsung,s3c2440-clock" - controller compatible with S3C2440 SoC. +  - "samsung,s3c2442-clock" - controller compatible with S3C2442 SoC. +- reg: physical base address of the controller and length of memory mapped +  region. +- #clock-cells: should be 1. + +Each clock is assigned an identifier and client nodes can use this identifier +to specify the clock which they consume. Some of the clocks are available only +on a particular SoC. + +All available clocks are defined as preprocessor macros in +dt-bindings/clock/s3c2410.h header and can be used in device +tree sources. + +External clocks: + +The xti clock used as input for the plls is generated outside the SoC. It is +expected that is are defined using standard clock bindings with a +clock-output-names value of "xti". + +Example: Clock controller node: + +	clocks: clock-controller@4c000000 { +		compatible = "samsung,s3c2410-clock"; +		reg = <0x4c000000 0x20>; +		#clock-cells = <1>; +	}; + +Example: UART controller node that consumes the clock generated by the clock +  controller (refer to the standard clock bindings for information about +  "clocks" and "clock-names" properties): + +	serial@50004000 { +		compatible = "samsung,s3c2440-uart"; +		reg = <0x50004000 0x4000>; +		interrupts = <1 23 3 4>, <1 23 4 4>; +		clock-names = "uart", "clk_uart_baud2"; +		clocks = <&clocks PCLK_UART0>, <&clocks PCLK_UART0>; +		status = "disabled"; +	}; diff --git a/Documentation/devicetree/bindings/clock/samsung,s3c2412-clock.txt b/Documentation/devicetree/bindings/clock/samsung,s3c2412-clock.txt new file mode 100644 index 00000000000..2b430960ba4 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/samsung,s3c2412-clock.txt @@ -0,0 +1,50 @@ +* Samsung S3C2412 Clock Controller + +The S3C2412 clock controller generates and supplies clock to various controllers +within the SoC. The clock binding described here is applicable to the s3c2412 +and s3c2413 SoCs in the s3c24x family. + +Required Properties: + +- compatible: should be "samsung,s3c2412-clock" +- reg: physical base address of the controller and length of memory mapped +  region. +- #clock-cells: should be 1. + +Each clock is assigned an identifier and client nodes can use this identifier +to specify the clock which they consume. Some of the clocks are available only +on a particular SoC. + +All available clocks are defined as preprocessor macros in +dt-bindings/clock/s3c2412.h header and can be used in device +tree sources. + +External clocks: + +There are several clocks that are generated outside the SoC. It is expected +that they are defined using standard clock bindings with following +clock-output-names: + - "xti" - crystal input - required, + - "ext" - external clock source - optional, + +Example: Clock controller node: + +	clocks: clock-controller@4c000000 { +		compatible = "samsung,s3c2412-clock"; +		reg = <0x4c000000 0x20>; +		#clock-cells = <1>; +	}; + +Example: UART controller node that consumes the clock generated by the clock +  controller (refer to the standard clock bindings for information about +  "clocks" and "clock-names" properties): + +	serial@50004000 { +		compatible = "samsung,s3c2412-uart"; +		reg = <0x50004000 0x4000>; +		interrupts = <1 23 3 4>, <1 23 4 4>; +		clock-names = "uart", "clk_uart_baud2", "clk_uart_baud3"; +		clocks = <&clocks PCLK_UART0>, <&clocks PCLK_UART0>, +			 <&clocks SCLK_UART>; +		status = "disabled"; +	}; diff --git a/Documentation/devicetree/bindings/clock/samsung,s3c2443-clock.txt b/Documentation/devicetree/bindings/clock/samsung,s3c2443-clock.txt new file mode 100644 index 00000000000..e67bb05478a --- /dev/null +++ b/Documentation/devicetree/bindings/clock/samsung,s3c2443-clock.txt @@ -0,0 +1,56 @@ +* Samsung S3C2443 Clock Controller + +The S3C2443 clock controller generates and supplies clock to various controllers +within the SoC. The clock binding described here is applicable to all SoCs in +the s3c24x family starting with the s3c2443. + +Required Properties: + +- compatible: should be one of the following. +  - "samsung,s3c2416-clock" - controller compatible with S3C2416 SoC. +  - "samsung,s3c2443-clock" - controller compatible with S3C2443 SoC. +  - "samsung,s3c2450-clock" - controller compatible with S3C2450 SoC. +- reg: physical base address of the controller and length of memory mapped +  region. +- #clock-cells: should be 1. + +Each clock is assigned an identifier and client nodes can use this identifier +to specify the clock which they consume. Some of the clocks are available only +on a particular SoC. + +All available clocks are defined as preprocessor macros in +dt-bindings/clock/s3c2443.h header and can be used in device +tree sources. + +External clocks: + +There are several clocks that are generated outside the SoC. It is expected +that they are defined using standard clock bindings with following +clock-output-names: + - "xti" - crystal input - required, + - "ext" - external clock source - optional, + - "ext_i2s" - external I2S clock - optional, + - "ext_uart" - external uart clock - optional, + +Example: Clock controller node: + +	clocks: clock-controller@4c000000 { +		compatible = "samsung,s3c2416-clock"; +		reg = <0x4c000000 0x40>; +		#clock-cells = <1>; +	}; + +Example: UART controller node that consumes the clock generated by the clock +  controller (refer to the standard clock bindings for information about +  "clocks" and "clock-names" properties): + +	serial@50004000 { +		compatible = "samsung,s3c2440-uart"; +		reg = <0x50004000 0x4000>; +		interrupts = <1 23 3 4>, <1 23 4 4>; +		clock-names = "uart", "clk_uart_baud2", +				"clk_uart_baud3"; +		clocks = <&clocks PCLK_UART0>, <&clocks PCLK_UART0>, +				<&clocks SCLK_UART>; +		status = "disabled"; +	}; diff --git a/Documentation/devicetree/bindings/clock/silabs,si570.txt b/Documentation/devicetree/bindings/clock/silabs,si570.txt new file mode 100644 index 00000000000..c09f21e1d98 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/silabs,si570.txt @@ -0,0 +1,39 @@ +Binding for Silicon Labs 570, 571, 598 and 599 programmable +I2C clock generators. + +Reference +This binding uses the common clock binding[1]. Details about the devices can be +found in the data sheets[2][3]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt +[2] Si570/571 Data Sheet +    http://www.silabs.com/Support%20Documents/TechnicalDocs/si570.pdf +[3] Si598/599 Data Sheet +    http://www.silabs.com/Support%20Documents/TechnicalDocs/si598-99.pdf + +Required properties: + - compatible: Shall be one of "silabs,si570", "silabs,si571", +			       "silabs,si598", "silabs,si599" + - reg: I2C device address. + - #clock-cells: From common clock bindings: Shall be 0. + - factory-fout: Factory set default frequency. This frequency is part specific. +		 The correct frequency for the part used has to be provided in +		 order to generate the correct output frequencies. For more +		 details, please refer to the data sheet. + - temperature-stability: Temperature stability of the device in PPM. Should be +			  one of: 7, 20, 50 or 100. + +Optional properties: + - clock-output-names: From common clock bindings. Recommended to be "si570". + - clock-frequency: Output frequency to generate. This defines the output +		    frequency set during boot. It can be reprogrammed during +		    runtime through the common clock framework. + +Example: +	si570: clock-generator@5d { +		#clock-cells = <0>; +		compatible = "silabs,si570"; +		temperature-stability = <50>; +		reg = <0x5d>; +		factory-fout = <156250000>; +	}; diff --git a/Documentation/devicetree/bindings/clock/st/st,clkgen-divmux.txt b/Documentation/devicetree/bindings/clock/st/st,clkgen-divmux.txt new file mode 100644 index 00000000000..ae56315fcec --- /dev/null +++ b/Documentation/devicetree/bindings/clock/st/st,clkgen-divmux.txt @@ -0,0 +1,49 @@ +Binding for a ST divider and multiplexer clock driver. + +This binding uses the common clock binding[1]. +Base address is located to the parent node. See clock binding[2] + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt +[2] Documentation/devicetree/bindings/clock/st/st,clkgen.txt + +Required properties: + +- compatible : shall be: +	"st,clkgena-divmux-c65-hs",	"st,clkgena-divmux" +	"st,clkgena-divmux-c65-ls",	"st,clkgena-divmux" +	"st,clkgena-divmux-c32-odf0",	"st,clkgena-divmux" +	"st,clkgena-divmux-c32-odf1",	"st,clkgena-divmux" +	"st,clkgena-divmux-c32-odf2",	"st,clkgena-divmux" +	"st,clkgena-divmux-c32-odf3",	"st,clkgena-divmux" + +- #clock-cells : From common clock binding; shall be set to 1. + +- clocks : From common clock binding + +- clock-output-names : From common clock binding. + +Example: + +	clockgenA@fd345000 { +		reg = <0xfd345000 0xb50>; + +		CLK_M_A1_DIV1: CLK_M_A1_DIV1 { +			#clock-cells = <1>; +			compatible = "st,clkgena-divmux-c32-odf1", +				     "st,clkgena-divmux"; + +			clocks = <&CLK_M_A1_OSC_PREDIV>, +				 <&CLK_M_A1_PLL0 1>, /* PLL0 PHI1 */ +				 <&CLK_M_A1_PLL1 1>; /* PLL1 PHI1 */ + +			clock-output-names = "CLK_M_RX_ICN_TS", +					     "CLK_M_RX_ICN_VDP_0", +					     "", /* Unused */ +					     "CLK_M_PRV_T1_BUS", +					     "CLK_M_ICN_REG_12", +					     "CLK_M_ICN_REG_10", +					     "", /* Unused */ +					     "CLK_M_ICN_ST231"; +		}; +	}; + diff --git a/Documentation/devicetree/bindings/clock/st/st,clkgen-mux.txt b/Documentation/devicetree/bindings/clock/st/st,clkgen-mux.txt new file mode 100644 index 00000000000..943e0808e21 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/st/st,clkgen-mux.txt @@ -0,0 +1,36 @@ +Binding for a ST multiplexed clock driver. + +This binding supports only simple indexed multiplexers, it does not +support table based parent index to hardware value translations. + +This binding uses the common clock binding[1]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: + +- compatible : shall be: +	"st,stih416-clkgenc-vcc-hd",	"st,clkgen-mux" +	"st,stih416-clkgenf-vcc-fvdp",	"st,clkgen-mux" +	"st,stih416-clkgenf-vcc-hva", 	"st,clkgen-mux" +	"st,stih416-clkgenf-vcc-hd",	"st,clkgen-mux" +	"st,stih416-clkgenf-vcc-sd",	"st,clkgen-mux" +	"st,stih415-clkgen-a9-mux",	"st,clkgen-mux" +	"st,stih416-clkgen-a9-mux",	"st,clkgen-mux" + + +- #clock-cells : from common clock binding; shall be set to 0. + +- reg : A Base address and length of the register set. + +- clocks : from common clock binding + +Example: + +	CLK_M_HVA: CLK_M_HVA { +		#clock-cells = <0>; +		compatible = "st,stih416-clkgenf-vcc-hva", "st,clkgen-mux"; +		reg = <0xfd690868 4>; + +		clocks = <&CLOCKGEN_F 1>, <&CLK_M_A1_DIV0 3>; +	}; diff --git a/Documentation/devicetree/bindings/clock/st/st,clkgen-pll.txt b/Documentation/devicetree/bindings/clock/st/st,clkgen-pll.txt new file mode 100644 index 00000000000..81eb3855ab9 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/st/st,clkgen-pll.txt @@ -0,0 +1,48 @@ +Binding for a ST pll clock driver. + +This binding uses the common clock binding[1]. +Base address is located to the parent node. See clock binding[2] + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt +[2] Documentation/devicetree/bindings/clock/st/st,clkgen.txt + +Required properties: + +- compatible : shall be: +	"st,clkgena-prediv-c65",	"st,clkgena-prediv" +	"st,clkgena-prediv-c32",	"st,clkgena-prediv" + +	"st,clkgena-plls-c65" +	"st,plls-c32-a1x-0",		"st,clkgen-plls-c32" +	"st,plls-c32-a1x-1",		"st,clkgen-plls-c32" +	"st,stih415-plls-c32-a9",	"st,clkgen-plls-c32" +	"st,stih415-plls-c32-ddr",	"st,clkgen-plls-c32" +	"st,stih416-plls-c32-a9",	"st,clkgen-plls-c32" +	"st,stih416-plls-c32-ddr",	"st,clkgen-plls-c32" + +	"st,stih415-gpu-pll-c32",	"st,clkgengpu-pll-c32" +	"st,stih416-gpu-pll-c32",	"st,clkgengpu-pll-c32" + + +- #clock-cells : From common clock binding; shall be set to 1. + +- clocks : From common clock binding + +- clock-output-names : From common clock binding. + +Example: + +	clockgenA@fee62000 { +		reg = <0xfee62000 0xb48>; + +		CLK_S_A0_PLL: CLK_S_A0_PLL { +			#clock-cells = <1>; +			compatible = "st,clkgena-plls-c65"; + +			clocks = <&CLK_SYSIN>; + +			clock-output-names = "CLK_S_A0_PLL0_HS", +					     "CLK_S_A0_PLL0_LS", +					     "CLK_S_A0_PLL1"; +		}; +	}; diff --git a/Documentation/devicetree/bindings/clock/st/st,clkgen-prediv.txt b/Documentation/devicetree/bindings/clock/st/st,clkgen-prediv.txt new file mode 100644 index 00000000000..566c9d79ed3 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/st/st,clkgen-prediv.txt @@ -0,0 +1,36 @@ +Binding for a ST pre-divider clock driver. + +This binding uses the common clock binding[1]. +Base address is located to the parent node. See clock binding[2] + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt +[2] Documentation/devicetree/bindings/clock/st/st,clkgen.txt + +Required properties: + +- compatible : shall be: +	"st,clkgena-prediv-c65",	"st,clkgena-prediv" +	"st,clkgena-prediv-c32",	"st,clkgena-prediv" + +- #clock-cells : From common clock binding; shall be set to 0. + +- clocks : From common clock binding + +- clock-output-names : From common clock binding. + +Example: + +	clockgenA@fd345000 { +		reg = <0xfd345000 0xb50>; + +		CLK_M_A2_OSC_PREDIV: CLK_M_A2_OSC_PREDIV { +			#clock-cells = <0>; +			compatible = "st,clkgena-prediv-c32", +				     "st,clkgena-prediv"; + +			clocks = <&CLK_SYSIN>; + +			clock-output-names = "CLK_M_A2_OSC_PREDIV"; +		}; +	}; + diff --git a/Documentation/devicetree/bindings/clock/st/st,clkgen-vcc.txt b/Documentation/devicetree/bindings/clock/st/st,clkgen-vcc.txt new file mode 100644 index 00000000000..4e3ff28b04c --- /dev/null +++ b/Documentation/devicetree/bindings/clock/st/st,clkgen-vcc.txt @@ -0,0 +1,53 @@ +Binding for a type of STMicroelectronics clock crossbar (VCC). + +The crossbar can take up to 4 input clocks and control up to 16 +output clocks. Not all inputs or outputs have to be in use in a +particular instantiation. Each output can be individually enabled, +select any of the input clocks and apply a divide (by 1,2,4 or 8) to +that selected clock. + +This binding uses the common clock binding[1]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: + +- compatible : shall be: +	"st,stih416-clkgenc",		"st,vcc" +	"st,stih416-clkgenf",		"st,vcc" + +- #clock-cells : from common clock binding; shall be set to 1. + +- reg : A Base address and length of the register set. + +- clocks : from common clock binding + +- clock-output-names : From common clock binding. The block has 16 +                       clock outputs but not all of them in a specific instance +                       have to be used in the SoC. If a clock name is left as +                       an empty string then no clock will be created for the +                       output associated with that string index. If fewer than +                       16 strings are provided then no clocks will be created +                       for the remaining outputs. + +Example: + +	CLOCKGEN_C_VCC: CLOCKGEN_C_VCC { +		#clock-cells = <1>; +		compatible = "st,stih416-clkgenc", "st,clkgen-vcc"; +		reg = <0xfe8308ac 12>; + +		clocks = <&CLK_S_VCC_HD>, <&CLOCKGEN_C 1>, +			<&CLK_S_TMDS_FROMPHY>, <&CLOCKGEN_C 2>; + +		clock-output-names  = +			"CLK_S_PIX_HDMI",  "CLK_S_PIX_DVO", +			"CLK_S_OUT_DVO",   "CLK_S_PIX_HD", +			"CLK_S_HDDAC",     "CLK_S_DENC", +			"CLK_S_SDDAC",     "CLK_S_PIX_MAIN", +			"CLK_S_PIX_AUX",   "CLK_S_STFE_FRC_0", +			"CLK_S_REF_MCRU",  "CLK_S_SLAVE_MCRU", +			"CLK_S_TMDS_HDMI", "CLK_S_HDMI_REJECT_PLL", +			"CLK_S_THSENS"; +	}; + diff --git a/Documentation/devicetree/bindings/clock/st/st,clkgen.txt b/Documentation/devicetree/bindings/clock/st/st,clkgen.txt new file mode 100644 index 00000000000..49ec5ae18b5 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/st/st,clkgen.txt @@ -0,0 +1,83 @@ +Binding for a Clockgen hardware block found on +certain STMicroelectronics consumer electronics SoC devices. + +A Clockgen node can contain pll, diviser or multiplexer nodes. + +We will find only the base address of the Clockgen, this base +address is common of all subnode. + +	clockgen_node { +		reg = <>; + +		pll_node { +			... +		}; + +		prediv_node { +			... +		}; + +		divmux_node { +			... +		}; + +		quadfs_node { +			... +		}; +		... +	}; + +This binding uses the common clock binding[1]. +Each subnode should use the binding discribe in [2]..[4] + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt +[2] Documentation/devicetree/bindings/clock/st,quadfs.txt +[3] Documentation/devicetree/bindings/clock/st,quadfs.txt +[4] Documentation/devicetree/bindings/clock/st,quadfs.txt + +Required properties: +- reg : A Base address and length of the register set. + +Example: + +	clockgenA@fee62000 { + +		reg = <0xfee62000 0xb48>; + +		CLK_S_A0_PLL: CLK_S_A0_PLL { +			#clock-cells = <1>; +			compatible = "st,clkgena-plls-c65"; + +			clocks = <&CLK_SYSIN>; + +			clock-output-names = "CLK_S_A0_PLL0_HS", +					     "CLK_S_A0_PLL0_LS", +					     "CLK_S_A0_PLL1"; +		}; + +		CLK_S_A0_OSC_PREDIV: CLK_S_A0_OSC_PREDIV { +			#clock-cells = <0>; +			compatible = "st,clkgena-prediv-c65", +				     "st,clkgena-prediv"; + +			clocks = <&CLK_SYSIN>; + +			clock-output-names = "CLK_S_A0_OSC_PREDIV"; +		}; + +		CLK_S_A0_HS: CLK_S_A0_HS { +			#clock-cells = <1>; +			compatible = "st,clkgena-divmux-c65-hs", +				     "st,clkgena-divmux"; + +			clocks = <&CLK_S_A0_OSC_PREDIV>, +				 <&CLK_S_A0_PLL 0>, /* PLL0 HS */ +				 <&CLK_S_A0_PLL 2>; /* PLL1 */ + +			clock-output-names = "CLK_S_FDMA_0", +					     "CLK_S_FDMA_1", +					     ""; /* CLK_S_JIT_SENSE */ +					     /* Fourth output unused */ +		}; +	}; + diff --git a/Documentation/devicetree/bindings/clock/st/st,quadfs.txt b/Documentation/devicetree/bindings/clock/st/st,quadfs.txt new file mode 100644 index 00000000000..ec86d62ca28 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/st/st,quadfs.txt @@ -0,0 +1,45 @@ +Binding for a type of quad channel digital frequency synthesizer found on +certain STMicroelectronics consumer electronics SoC devices. + +This version contains a programmable PLL which can generate up to 216, 432 +or 660MHz (from a 30MHz oscillator input) as the input to the digital +synthesizers. + +This binding uses the common clock binding[1]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- compatible : shall be: +  "st,stih416-quadfs216",	"st,quadfs" +  "st,stih416-quadfs432",	"st,quadfs" +  "st,stih416-quadfs660-E",	"st,quadfs" +  "st,stih416-quadfs660-F",	"st,quadfs" + +- #clock-cells : from common clock binding; shall be set to 1. + +- reg : A Base address and length of the register set. + +- clocks : from common clock binding + +- clock-output-names : From common clock binding. The block has 4 +                       clock outputs but not all of them in a specific instance +                       have to be used in the SoC. If a clock name is left as +                       an empty string then no clock will be created for the +                       output associated with that string index. If fewer than +                       4 strings are provided then no clocks will be created +                       for the remaining outputs. + +Example: + +	CLOCKGEN_E: CLOCKGEN_E { +                #clock-cells = <1>; +                compatible = "st,stih416-quadfs660-E", "st,quadfs"; +                reg = <0xfd3208bc 0xB0>; + +                clocks = <&CLK_SYSIN>; +                clock-output-names = "CLK_M_PIX_MDTP_0", +                                        "CLK_M_PIX_MDTP_1", +                                        "CLK_M_PIX_MDTP_2", +                                        "CLK_M_MPELPC"; +        }; diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt index 00a5c26454e..b9ec668bfe6 100644 --- a/Documentation/devicetree/bindings/clock/sunxi.txt +++ b/Documentation/devicetree/bindings/clock/sunxi.txt @@ -6,67 +6,133 @@ This binding uses the common clock binding[1].  Required properties:  - compatible : shall be one of the following: -	"allwinner,sun4i-osc-clk" - for a gatable oscillator -	"allwinner,sun4i-pll1-clk" - for the main PLL clock +	"allwinner,sun4i-a10-osc-clk" - for a gatable oscillator +	"allwinner,sun4i-a10-pll1-clk" - for the main PLL clock and PLL4  	"allwinner,sun6i-a31-pll1-clk" - for the main PLL clock on A31 -	"allwinner,sun4i-cpu-clk" - for the CPU multiplexer clock -	"allwinner,sun4i-axi-clk" - for the AXI clock -	"allwinner,sun4i-axi-gates-clk" - for the AXI gates -	"allwinner,sun4i-ahb-clk" - for the AHB clock -	"allwinner,sun4i-ahb-gates-clk" - for the AHB gates on A10 +	"allwinner,sun4i-a10-pll5-clk" - for the PLL5 clock +	"allwinner,sun4i-a10-pll6-clk" - for the PLL6 clock +	"allwinner,sun6i-a31-pll6-clk" - for the PLL6 clock on A31 +	"allwinner,sun4i-a10-cpu-clk" - for the CPU multiplexer clock +	"allwinner,sun4i-a10-axi-clk" - for the AXI clock +	"allwinner,sun4i-a10-axi-gates-clk" - for the AXI gates +	"allwinner,sun4i-a10-ahb-clk" - for the AHB clock +	"allwinner,sun4i-a10-ahb-gates-clk" - for the AHB gates on A10  	"allwinner,sun5i-a13-ahb-gates-clk" - for the AHB gates on A13  	"allwinner,sun5i-a10s-ahb-gates-clk" - for the AHB gates on A10s  	"allwinner,sun7i-a20-ahb-gates-clk" - for the AHB gates on A20 +	"allwinner,sun6i-a31-ar100-clk" - for the AR100 on A31  	"allwinner,sun6i-a31-ahb1-mux-clk" - for the AHB1 multiplexer on A31  	"allwinner,sun6i-a31-ahb1-gates-clk" - for the AHB1 gates on A31 -	"allwinner,sun4i-apb0-clk" - for the APB0 clock -	"allwinner,sun4i-apb0-gates-clk" - for the APB0 gates on A10 +	"allwinner,sun4i-a10-apb0-clk" - for the APB0 clock +	"allwinner,sun6i-a31-apb0-clk" - for the APB0 clock on A31 +	"allwinner,sun4i-a10-apb0-gates-clk" - for the APB0 gates on A10  	"allwinner,sun5i-a13-apb0-gates-clk" - for the APB0 gates on A13  	"allwinner,sun5i-a10s-apb0-gates-clk" - for the APB0 gates on A10s +	"allwinner,sun6i-a31-apb0-gates-clk" - for the APB0 gates on A31  	"allwinner,sun7i-a20-apb0-gates-clk" - for the APB0 gates on A20 -	"allwinner,sun4i-apb1-clk" - for the APB1 clock -	"allwinner,sun4i-apb1-mux-clk" - for the APB1 clock muxing -	"allwinner,sun4i-apb1-gates-clk" - for the APB1 gates on A10 +	"allwinner,sun4i-a10-apb1-clk" - for the APB1 clock +	"allwinner,sun4i-a10-apb1-mux-clk" - for the APB1 clock muxing +	"allwinner,sun4i-a10-apb1-gates-clk" - for the APB1 gates on A10  	"allwinner,sun5i-a13-apb1-gates-clk" - for the APB1 gates on A13  	"allwinner,sun5i-a10s-apb1-gates-clk" - for the APB1 gates on A10s  	"allwinner,sun6i-a31-apb1-gates-clk" - for the APB1 gates on A31  	"allwinner,sun7i-a20-apb1-gates-clk" - for the APB1 gates on A20  	"allwinner,sun6i-a31-apb2-div-clk" - for the APB2 gates on A31  	"allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31 +	"allwinner,sun4i-a10-mod0-clk" - for the module 0 family of clocks +	"allwinner,sun7i-a20-out-clk" - for the external output clocks +	"allwinner,sun7i-a20-gmac-clk" - for the GMAC clock module on A20/A31 +	"allwinner,sun4i-a10-usb-clk" - for usb gates + resets on A10 / A20 +	"allwinner,sun5i-a13-usb-clk" - for usb gates + resets on A13 +	"allwinner,sun6i-a31-usb-clk" - for usb gates + resets on A31  Required properties for all clocks:  - reg : shall be the control register address for the clock. -- clocks : shall be the input parent clock(s) phandle for the clock +- clocks : shall be the input parent clock(s) phandle for the clock. For +	multiplexed clocks, the list order must match the hardware +	programming order.  - #clock-cells : from common clock binding; shall be set to 0 except for -	"allwinner,*-gates-clk" where it shall be set to 1 +	"allwinner,*-gates-clk", "allwinner,sun4i-pll5-clk" and +	"allwinner,sun4i-pll6-clk" where it shall be set to 1 +- clock-output-names : shall be the corresponding names of the outputs. +	If the clock module only has one output, the name shall be the +	module name. -Additionally, "allwinner,*-gates-clk" clocks require: -- clock-output-names : the corresponding gate names that the clock controls +And "allwinner,*-usb-clk" clocks also require: +- reset-cells : shall be set to 1 + +For "allwinner,sun7i-a20-gmac-clk", the parent clocks shall be fixed rate +dummy clocks at 25 MHz and 125 MHz, respectively. See example.  Clock consumers should specify the desired clocks they use with a  "clocks" phandle cell. Consumers that are using a gated clock should -provide an additional ID in their clock property. The values of this -ID are documented in sunxi/<soc>-gates.txt. +provide an additional ID in their clock property. This ID is the +offset of the bit controlling this particular gate in the register.  For example: -osc24M: osc24M@01c20050 { +osc24M: clk@01c20050 {  	#clock-cells = <0>; -	compatible = "allwinner,sun4i-osc-clk"; +	compatible = "allwinner,sun4i-a10-osc-clk";  	reg = <0x01c20050 0x4>;  	clocks = <&osc24M_fixed>; +	clock-output-names = "osc24M";  }; -pll1: pll1@01c20000 { +pll1: clk@01c20000 {  	#clock-cells = <0>; -	compatible = "allwinner,sun4i-pll1-clk"; +	compatible = "allwinner,sun4i-a10-pll1-clk";  	reg = <0x01c20000 0x4>;  	clocks = <&osc24M>; +	clock-output-names = "pll1"; +}; + +pll5: clk@01c20020 { +	#clock-cells = <1>; +	compatible = "allwinner,sun4i-pll5-clk"; +	reg = <0x01c20020 0x4>; +	clocks = <&osc24M>; +	clock-output-names = "pll5_ddr", "pll5_other";  };  cpu: cpu@01c20054 {  	#clock-cells = <0>; -	compatible = "allwinner,sun4i-cpu-clk"; +	compatible = "allwinner,sun4i-a10-cpu-clk";  	reg = <0x01c20054 0x4>;  	clocks = <&osc32k>, <&osc24M>, <&pll1>; +	clock-output-names = "cpu"; +}; + +mmc0_clk: clk@01c20088 { +	#clock-cells = <0>; +	compatible = "allwinner,sun4i-mod0-clk"; +	reg = <0x01c20088 0x4>; +	clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; +	clock-output-names = "mmc0"; +}; + +mii_phy_tx_clk: clk@2 { +	#clock-cells = <0>; +	compatible = "fixed-clock"; +	clock-frequency = <25000000>; +	clock-output-names = "mii_phy_tx"; +}; + +gmac_int_tx_clk: clk@3 { +	#clock-cells = <0>; +	compatible = "fixed-clock"; +	clock-frequency = <125000000>; +	clock-output-names = "gmac_int_tx"; +}; + +gmac_clk: clk@01c20164 { +	#clock-cells = <0>; +	compatible = "allwinner,sun7i-a20-gmac-clk"; +	reg = <0x01c20164 0x4>; +	/* +	 * The first clock must be fixed at 25MHz; +	 * the second clock must be fixed at 125MHz +	 */ +	clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>; +	clock-output-names = "gmac";  }; diff --git a/Documentation/devicetree/bindings/clock/sunxi/sun4i-a10-gates.txt b/Documentation/devicetree/bindings/clock/sunxi/sun4i-a10-gates.txt deleted file mode 100644 index 6a03475bbfe..00000000000 --- a/Documentation/devicetree/bindings/clock/sunxi/sun4i-a10-gates.txt +++ /dev/null @@ -1,93 +0,0 @@ -Gate clock outputs ------------------- - -  * AXI gates ("allwinner,sun4i-axi-gates-clk") - -    DRAM					0 - -  * AHB gates ("allwinner,sun4i-ahb-gates-clk") - -    USB0					0 -    EHCI0					1 -    OHCI0					2* -    EHCI1					3 -    OHCI1					4* -    SS						5 -    DMA						6 -    BIST					7 -    MMC0					8 -    MMC1					9 -    MMC2					10 -    MMC3					11 -    MS						12** -    NAND					13 -    SDRAM					14 - -    ACE						16 -    EMAC					17 -    TS						18 - -    SPI0					20 -    SPI1					21 -    SPI2					22 -    SPI3					23 -    PATA					24 -    SATA					25** -    GPS						26* - -    VE						32 -    TVD						33 -    TVE0					34 -    TVE1					35 -    LCD0					36 -    LCD1					37 - -    CSI0					40 -    CSI1					41 - -    HDMI					43 -    DE_BE0					44 -    DE_BE1					45 -    DE_FE1					46 -    DE_FE1					47 - -    MP						50 - -    MALI400					52 - -  * APB0 gates ("allwinner,sun4i-apb0-gates-clk") - -    CODEC					0 -    SPDIF					1* -    AC97					2 -    IIS						3 - -    PIO						5 -    IR0						6 -    IR1						7 - -    KEYPAD					10 - -  * APB1 gates ("allwinner,sun4i-apb1-gates-clk") - -    I2C0					0 -    I2C1					1 -    I2C2					2 - -    CAN						4 -    SCR						5 -    PS20					6 -    PS21					7 - -    UART0					16 -    UART1					17 -    UART2					18 -    UART3					19 -    UART4					20 -    UART5					21 -    UART6					22 -    UART7					23 - -Notation: - [*]:  The datasheet didn't mention these, but they are present on AW code - [**]: The datasheet had this marked as "NC" but they are used on AW code diff --git a/Documentation/devicetree/bindings/clock/sunxi/sun5i-a10s-gates.txt b/Documentation/devicetree/bindings/clock/sunxi/sun5i-a10s-gates.txt deleted file mode 100644 index d24279fe142..00000000000 --- a/Documentation/devicetree/bindings/clock/sunxi/sun5i-a10s-gates.txt +++ /dev/null @@ -1,75 +0,0 @@ -Gate clock outputs ------------------- - -  * AXI gates ("allwinner,sun4i-axi-gates-clk") - -    DRAM					0 - -  * AHB gates ("allwinner,sun5i-a10s-ahb-gates-clk") - -    USB0					0 -    EHCI0					1 -    OHCI0					2 - -    SS						5 -    DMA						6 -    BIST					7 -    MMC0					8 -    MMC1					9 -    MMC2					10 - -    NAND					13 -    SDRAM					14 - -    EMAC					17 -    TS						18 - -    SPI0					20 -    SPI1					21 -    SPI2					22 - -    GPS						26 - -    HSTIMER					28 - -    VE						32 - -    TVE						34 - -    LCD						36 - -    CSI						40 - -    HDMI					43 -    DE_BE					44 - -    DE_FE					46 - -    IEP						51 -    MALI400					52 - -  * APB0 gates ("allwinner,sun5i-a10s-apb0-gates-clk") - -    CODEC					0 - -    IIS						3 - -    PIO						5 -    IR						6 - -    KEYPAD					10 - -  * APB1 gates ("allwinner,sun5i-a10s-apb1-gates-clk") - -    I2C0					0 -    I2C1					1 -    I2C2					2 - -    UART0					16 -    UART1					17 -    UART2					18 -    UART3					19 - -Notation: - [*]:  The datasheet didn't mention these, but they are present on AW code - [**]: The datasheet had this marked as "NC" but they are used on AW code diff --git a/Documentation/devicetree/bindings/clock/sunxi/sun5i-a13-gates.txt b/Documentation/devicetree/bindings/clock/sunxi/sun5i-a13-gates.txt deleted file mode 100644 index 006b6dfc470..00000000000 --- a/Documentation/devicetree/bindings/clock/sunxi/sun5i-a13-gates.txt +++ /dev/null @@ -1,58 +0,0 @@ -Gate clock outputs ------------------- - -  * AXI gates ("allwinner,sun4i-axi-gates-clk") - -    DRAM					0 - -  * AHB gates ("allwinner,sun5i-a13-ahb-gates-clk") - -    USBOTG					0 -    EHCI					1 -    OHCI					2 - -    SS						5 -    DMA						6 -    BIST					7 -    MMC0					8 -    MMC1					9 -    MMC2					10 - -    NAND					13 -    SDRAM					14 - -    SPI0					20 -    SPI1					21 -    SPI2					22 - -    STIMER					28 - -    VE						32 - -    LCD						36 - -    CSI						40 - -    DE_BE					44 - -    DE_FE					46 - -    IEP						51 -    MALI400					52 - -  * APB0 gates ("allwinner,sun5i-a13-apb0-gates-clk") - -    CODEC					0 - -    PIO						5 -    IR						6 - -  * APB1 gates ("allwinner,sun5i-a13-apb1-gates-clk") - -    I2C0					0 -    I2C1					1 -    I2C2					2 - -    UART1					17 - -    UART3					19 diff --git a/Documentation/devicetree/bindings/clock/sunxi/sun6i-a31-gates.txt b/Documentation/devicetree/bindings/clock/sunxi/sun6i-a31-gates.txt deleted file mode 100644 index fe44932b5c6..00000000000 --- a/Documentation/devicetree/bindings/clock/sunxi/sun6i-a31-gates.txt +++ /dev/null @@ -1,83 +0,0 @@ -Gate clock outputs ------------------- - -  * AHB1 gates ("allwinner,sun6i-a31-ahb1-gates-clk") - -    MIPI DSI					1 - -    SS						5 -    DMA						6 - -    MMC0					8 -    MMC1					9 -    MMC2					10 -    MMC3					11 - -    NAND1					12 -    NAND0					13 -    SDRAM					14 - -    GMAC					17 -    TS						18 -    HSTIMER					19 -    SPI0					20 -    SPI1					21 -    SPI2					22 -    SPI3					23 -    USB_OTG					24 - -    EHCI0					26 -    EHCI1					27 - -    OHCI0					29 -    OHCI1					30 -    OHCI2					31 -    VE						32 - -    LCD0					36 -    LCD1					37 - -    CSI						40 - -    HDMI					43 -    DE_BE0					44 -    DE_BE1					45 -    DE_FE1					46 -    DE_FE1					47 - -    MP						50 - -    GPU						52 - -    DEU0					55 -    DEU1					56 -    DRC0					57 -    DRC1					58 - -  * APB1 gates ("allwinner,sun6i-a31-apb1-gates-clk") - -    CODEC					0 - -    DIGITAL MIC					4 -    PIO						5 - -    DAUDIO0					12 -    DAUDIO1					13 - -  * APB2 gates ("allwinner,sun6i-a31-apb2-gates-clk") - -    I2C0					0 -    I2C1					1 -    I2C2					2 -    I2C3					3 - -    UART0					16 -    UART1					17 -    UART2					18 -    UART3					19 -    UART4					20 -    UART5					21 - -Notation: - [*]:  The datasheet didn't mention these, but they are present on AW code - [**]: The datasheet had this marked as "NC" but they are used on AW code diff --git a/Documentation/devicetree/bindings/clock/sunxi/sun7i-a20-gates.txt b/Documentation/devicetree/bindings/clock/sunxi/sun7i-a20-gates.txt deleted file mode 100644 index 357f4fdc02e..00000000000 --- a/Documentation/devicetree/bindings/clock/sunxi/sun7i-a20-gates.txt +++ /dev/null @@ -1,98 +0,0 @@ -Gate clock outputs ------------------- - -  * AXI gates ("allwinner,sun4i-axi-gates-clk") - -    DRAM					0 - -  * AHB gates ("allwinner,sun7i-a20-ahb-gates-clk") - -    USB0					0 -    EHCI0					1 -    OHCI0					2 -    EHCI1					3 -    OHCI1					4 -    SS						5 -    DMA						6 -    BIST					7 -    MMC0					8 -    MMC1					9 -    MMC2					10 -    MMC3					11 -    MS						12 -    NAND					13 -    SDRAM					14 - -    ACE						16 -    EMAC					17 -    TS						18 - -    SPI0					20 -    SPI1					21 -    SPI2					22 -    SPI3					23 - -    SATA					25 - -    HSTIMER					28 - -    VE						32 -    TVD						33 -    TVE0					34 -    TVE1					35 -    LCD0					36 -    LCD1					37 - -    CSI0					40 -    CSI1					41 - -    HDMI1					42 -    HDMI0					43 -    DE_BE0					44 -    DE_BE1					45 -    DE_FE1					46 -    DE_FE1					47 - -    GMAC					49 -    MP						50 - -    MALI400					52 - -  * APB0 gates ("allwinner,sun7i-a20-apb0-gates-clk") - -    CODEC					0 -    SPDIF					1 -    AC97					2 -    IIS0					3 -    IIS1					4 -    PIO						5 -    IR0						6 -    IR1						7 -    IIS2					8 - -    KEYPAD					10 - -  * APB1 gates ("allwinner,sun7i-a20-apb1-gates-clk") - -    I2C0					0 -    I2C1					1 -    I2C2					2 -    I2C3					3 -    CAN						4 -    SCR						5 -    PS20					6 -    PS21					7 - -    I2C4					15 -    UART0					16 -    UART1					17 -    UART2					18 -    UART3					19 -    UART4					20 -    UART5					21 -    UART6					22 -    UART7					23 - -Notation: - [*]:  The datasheet didn't mention these, but they are present on AW code - [**]: The datasheet had this marked as "NC" but they are used on AW code diff --git a/Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt b/Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt new file mode 100644 index 00000000000..3e6a81e9980 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti-keystone-pllctrl.txt @@ -0,0 +1,20 @@ +* Device tree bindings for Texas Instruments keystone pll controller + +The main pll controller used to drive theC66x CorePacs, the switch fabric, +and a majority of the peripheral clocks (all but the ARM CorePacs, DDR3 and +the NETCP modules) requires a PLL Controller to manage the various clock +divisions, gating, and synchronization. + +Required properties: + +- compatible:		"ti,keystone-pllctrl", "syscon" + +- reg:			contains offset/length value for pll controller +			registers space. + +Example: + +pllctrl: pll-controller@0x02310000 { +	compatible = "ti,keystone-pllctrl", "syscon"; +	reg = <0x02310000 0x200>; +}; diff --git a/Documentation/devicetree/bindings/clock/ti/apll.txt b/Documentation/devicetree/bindings/clock/ti/apll.txt new file mode 100644 index 00000000000..ade4dd4c30f --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/apll.txt @@ -0,0 +1,45 @@ +Binding for Texas Instruments APLL clock. + +Binding status: Unstable - ABI compatibility may be broken in the future + +This binding uses the common clock binding[1].  It assumes a +register-mapped APLL with usually two selectable input clocks +(reference clock and bypass clock), with analog phase locked +loop logic for multiplying the input clock to a desired output +clock. This clock also typically supports different operation +modes (locked, low power stop etc.) APLL mostly behaves like +a subtype of a DPLL [2], although a simplified one at that. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt +[2] Documentation/devicetree/bindings/clock/ti/dpll.txt + +Required properties: +- compatible : shall be "ti,dra7-apll-clock" or "ti,omap2-apll-clock" +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : link phandles of parent clocks (clk-ref and clk-bypass) +- reg : address and length of the register set for controlling the APLL. +  It contains the information of registers in the following order: +	"control" - contains the control register offset +	"idlest" - contains the idlest register offset +	"autoidle" - contains the autoidle register offset (OMAP2 only) +- ti,clock-frequency : static clock frequency for the clock (OMAP2 only) +- ti,idlest-shift : bit-shift for the idlest field (OMAP2 only) +- ti,bit-shift : bit-shift for enable and autoidle fields (OMAP2 only) + +Examples: +	apll_pcie_ck: apll_pcie_ck { +		#clock-cells = <0>; +		clocks = <&apll_pcie_in_clk_mux>, <&dpll_pcie_ref_ck>; +		reg = <0x021c>, <0x0220>; +		compatible = "ti,dra7-apll-clock"; +	}; + +	apll96_ck: apll96_ck { +		#clock-cells = <0>; +		compatible = "ti,omap2-apll-clock"; +		clocks = <&sys_ck>; +		ti,bit-shift = <2>; +		ti,idlest-shift = <8>; +		ti,clock-frequency = <96000000>; +		reg = <0x0500>, <0x0530>, <0x0520>; +	}; diff --git a/Documentation/devicetree/bindings/clock/ti/autoidle.txt b/Documentation/devicetree/bindings/clock/ti/autoidle.txt new file mode 100644 index 00000000000..7c735dde9fe --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/autoidle.txt @@ -0,0 +1,39 @@ +Binding for Texas Instruments autoidle clock. + +Binding status: Unstable - ABI compatibility may be broken in the future + +This binding uses the common clock binding[1]. It assumes a register mapped +clock which can be put to idle automatically by hardware based on the usage +and a configuration bit setting. Autoidle clock is never an individual +clock, it is always a derivative of some basic clock like a gate, divider, +or fixed-factor. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- reg : offset for the register controlling the autoidle +- ti,autoidle-shift : bit shift of the autoidle enable bit +- ti,invert-autoidle-bit : autoidle is enabled by setting the bit to 0 + +Examples: +	dpll_core_m4_ck: dpll_core_m4_ck { +		#clock-cells = <0>; +		compatible = "ti,divider-clock"; +		clocks = <&dpll_core_x2_ck>; +		ti,max-div = <31>; +		ti,autoidle-shift = <8>; +		reg = <0x2d38>; +		ti,index-starts-at-one; +		ti,invert-autoidle-bit; +	}; + +	dpll_usb_clkdcoldo_ck: dpll_usb_clkdcoldo_ck { +		#clock-cells = <0>; +		compatible = "ti,fixed-factor-clock"; +		clocks = <&dpll_usb_ck>; +		ti,clock-div = <1>; +		ti,autoidle-shift = <8>; +		reg = <0x01b4>; +		ti,clock-mult = <1>; +		ti,invert-autoidle-bit; +	}; diff --git a/Documentation/devicetree/bindings/clock/ti/clockdomain.txt b/Documentation/devicetree/bindings/clock/ti/clockdomain.txt new file mode 100644 index 00000000000..cb76b3f2b34 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/clockdomain.txt @@ -0,0 +1,24 @@ +Binding for Texas Instruments clockdomain. + +Binding status: Unstable - ABI compatibility may be broken in the future + +This binding uses the common clock binding[1] in consumer role. +Every clock on TI SoC belongs to one clockdomain, but software +only needs this information for specific clocks which require +their parent clockdomain to be controlled when the clock is +enabled/disabled. This binding doesn't define a new clock +binding type, it is used to group existing clock nodes under +hardware hierarchy. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- compatible : shall be "ti,clockdomain" +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : link phandles of clocks within this domain + +Examples: +	dss_clkdm: dss_clkdm { +		compatible = "ti,clockdomain"; +		clocks = <&dss1_alwon_fck_3430es2>, <&dss_ick_3430es2>; +	}; diff --git a/Documentation/devicetree/bindings/clock/ti/composite.txt b/Documentation/devicetree/bindings/clock/ti/composite.txt new file mode 100644 index 00000000000..5f43c4706b0 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/composite.txt @@ -0,0 +1,54 @@ +Binding for TI composite clock. + +Binding status: Unstable - ABI compatibility may be broken in the future + +This binding uses the common clock binding[1]. It assumes a +register-mapped composite clock with multiple different sub-types; + +a multiplexer clock with multiple input clock signals or parents, one +of which can be selected as output, this behaves exactly as [2] + +an adjustable clock rate divider, this behaves exactly as [3] + +a gating function which can be used to enable and disable the output +clock, this behaves exactly as [4] + +The binding must provide a list of the component clocks that shall be +merged to this clock. The component clocks shall be of one of the +"ti,*composite*-clock" types. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt +[2] Documentation/devicetree/bindings/clock/ti/mux.txt +[3] Documentation/devicetree/bindings/clock/ti/divider.txt +[4] Documentation/devicetree/bindings/clock/ti/gate.txt + +Required properties: +- compatible : shall be: "ti,composite-clock" +- clocks : link phandles of component clocks +- #clock-cells : from common clock binding; shall be set to 0. + +Examples: + +usb_l4_gate_ick: usb_l4_gate_ick { +	#clock-cells = <0>; +	compatible = "ti,composite-interface-clock"; +	clocks = <&l4_ick>; +	ti,bit-shift = <5>; +	reg = <0x0a10>; +}; + +usb_l4_div_ick: usb_l4_div_ick { +	#clock-cells = <0>; +	compatible = "ti,composite-divider-clock"; +	clocks = <&l4_ick>; +	ti,bit-shift = <4>; +	ti,max-div = <1>; +	reg = <0x0a40>; +	ti,index-starts-at-one; +}; + +usb_l4_ick: usb_l4_ick { +	#clock-cells = <0>; +	compatible = "ti,composite-clock"; +	clocks = <&usb_l4_gate_ick>, <&usb_l4_div_ick>; +}; diff --git a/Documentation/devicetree/bindings/clock/ti/divider.txt b/Documentation/devicetree/bindings/clock/ti/divider.txt new file mode 100644 index 00000000000..35a6f5c7e5c --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/divider.txt @@ -0,0 +1,114 @@ +Binding for TI divider clock + +Binding status: Unstable - ABI compatibility may be broken in the future + +This binding uses the common clock binding[1].  It assumes a +register-mapped adjustable clock rate divider that does not gate and has +only one input clock or parent.  By default the value programmed into +the register is one less than the actual divisor value.  E.g: + +register value		actual divisor value +0			1 +1			2 +2			3 + +This assumption may be modified by the following optional properties: + +ti,index-starts-at-one - valid divisor values start at 1, not the default +of 0.  E.g: +register value		actual divisor value +1			1 +2			2 +3			3 + +ti,index-power-of-two - valid divisor values are powers of two.  E.g: +register value		actual divisor value +0			1 +1			2 +2			4 + +Additionally an array of valid dividers may be supplied like so: + +	ti,dividers = <4>, <8>, <0>, <16>; + +Which will map the resulting values to a divisor table by their index: +register value		actual divisor value +0			4 +1			8 +2			<invalid divisor, skipped> +3			16 + +Any zero value in this array means the corresponding bit-value is invalid +and must not be used. + +The binding must also provide the register to control the divider and +unless the divider array is provided, min and max dividers. Optionally +the number of bits to shift that mask, if necessary. If the shift value +is missing it is the same as supplying a zero shift. + +This binding can also optionally provide support to the hardware autoidle +feature, see [2]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt +[2] Documentation/devicetree/bindings/clock/ti/autoidle.txt + +Required properties: +- compatible : shall be "ti,divider-clock" or "ti,composite-divider-clock". +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : link to phandle of parent clock +- reg : offset for register controlling adjustable divider + +Optional properties: +- clock-output-names : from common clock binding. +- ti,dividers : array of integers defining divisors +- ti,bit-shift : number of bits to shift the divider value, defaults to 0 +- ti,min-div : min divisor for dividing the input clock rate, only +  needed if the first divisor is offset from the default value (1) +- ti,max-div : max divisor for dividing the input clock rate, only needed +  if ti,dividers is not defined. +- ti,index-starts-at-one : valid divisor programming starts at 1, not zero, +  only valid if ti,dividers is not defined. +- ti,index-power-of-two : valid divisor programming must be a power of two, +  only valid if ti,dividers is not defined. +- ti,autoidle-shift : bit shift of the autoidle enable bit for the clock, +  see [2] +- ti,invert-autoidle-bit : autoidle is enabled by setting the bit to 0, +  see [2] +- ti,set-rate-parent : clk_set_rate is propagated to parent + +Examples: +dpll_usb_m2_ck: dpll_usb_m2_ck@4a008190 { +	#clock-cells = <0>; +	compatible = "ti,divider-clock"; +	clocks = <&dpll_usb_ck>; +	ti,max-div = <127>; +	reg = <0x190>; +	ti,index-starts-at-one; +}; + +aess_fclk: aess_fclk@4a004528 { +	#clock-cells = <0>; +	compatible = "ti,divider-clock"; +	clocks = <&abe_clk>; +	ti,bit-shift = <24>; +	reg = <0x528>; +	ti,max-div = <2>; +}; + +dpll_core_m3x2_div_ck: dpll_core_m3x2_div_ck { +	#clock-cells = <0>; +	compatible = "ti,composite-divider-clock"; +	clocks = <&dpll_core_x2_ck>; +	ti,max-div = <31>; +	reg = <0x0134>; +	ti,index-starts-at-one; +}; + +ssi_ssr_div_fck_3430es2: ssi_ssr_div_fck_3430es2 { +	#clock-cells = <0>; +	compatible = "ti,composite-divider-clock"; +	clocks = <&corex2_fck>; +	ti,bit-shift = <8>; +	reg = <0x0a40>; +	ti,dividers = <0>, <1>, <2>, <3>, <4>, <0>, <6>, <0>, <8>; +}; diff --git a/Documentation/devicetree/bindings/clock/ti/dpll.txt b/Documentation/devicetree/bindings/clock/ti/dpll.txt new file mode 100644 index 00000000000..df57009ff8e --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/dpll.txt @@ -0,0 +1,85 @@ +Binding for Texas Instruments DPLL clock. + +Binding status: Unstable - ABI compatibility may be broken in the future + +This binding uses the common clock binding[1].  It assumes a +register-mapped DPLL with usually two selectable input clocks +(reference clock and bypass clock), with digital phase locked +loop logic for multiplying the input clock to a desired output +clock. This clock also typically supports different operation +modes (locked, low power stop etc.) This binding has several +sub-types, which effectively result in slightly different setup +for the actual DPLL clock. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- compatible : shall be one of: +		"ti,omap3-dpll-clock", +		"ti,omap3-dpll-core-clock", +		"ti,omap3-dpll-per-clock", +		"ti,omap3-dpll-per-j-type-clock", +		"ti,omap4-dpll-clock", +		"ti,omap4-dpll-x2-clock", +		"ti,omap4-dpll-core-clock", +		"ti,omap4-dpll-m4xen-clock", +		"ti,omap4-dpll-j-type-clock", +		"ti,omap5-mpu-dpll-clock", +		"ti,am3-dpll-no-gate-clock", +		"ti,am3-dpll-j-type-clock", +		"ti,am3-dpll-no-gate-j-type-clock", +		"ti,am3-dpll-clock", +		"ti,am3-dpll-core-clock", +		"ti,am3-dpll-x2-clock", +		"ti,omap2-dpll-core-clock", + +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : link phandles of parent clocks, first entry lists reference clock +  and second entry bypass clock +- reg : offsets for the register set for controlling the DPLL. +  Registers are listed in following order: +	"control" - contains the control register base address +	"idlest" - contains the idle status register base address +	"mult-div1" - contains the multiplier / divider register base address +	"autoidle" - contains the autoidle register base address (optional) +  ti,am3-* dpll types do not have autoidle register +  ti,omap2-* dpll type does not support idlest / autoidle registers + +Optional properties: +- DPLL mode setting - defining any one or more of the following overrides +  default setting. +	- ti,low-power-stop : DPLL supports low power stop mode, gating output +	- ti,low-power-bypass : DPLL output matches rate of parent bypass clock +	- ti,lock : DPLL locks in programmed rate + +Examples: +	dpll_core_ck: dpll_core_ck@44e00490 { +		#clock-cells = <0>; +		compatible = "ti,omap4-dpll-core-clock"; +		clocks = <&sys_clkin_ck>, <&sys_clkin_ck>; +		reg = <0x490>, <0x45c>, <0x488>, <0x468>; +	}; + +	dpll2_ck: dpll2_ck@48004004 { +		#clock-cells = <0>; +		compatible = "ti,omap3-dpll-clock"; +		clocks = <&sys_ck>, <&dpll2_fck>; +		ti,low-power-stop; +		ti,low-power-bypass; +		ti,lock; +		reg = <0x4>, <0x24>, <0x34>, <0x40>; +	}; + +	dpll_core_ck: dpll_core_ck@44e00490 { +		#clock-cells = <0>; +		compatible = "ti,am3-dpll-core-clock"; +		clocks = <&sys_clkin_ck>, <&sys_clkin_ck>; +		reg = <0x90>, <0x5c>, <0x68>; +	}; + +	dpll_ck: dpll_ck { +		#clock-cells = <0>; +		compatible = "ti,omap2-dpll-core-clock"; +		clocks = <&sys_ck>, <&sys_ck>; +		reg = <0x0500>, <0x0540>; +	}; diff --git a/Documentation/devicetree/bindings/clock/ti/dra7-atl.txt b/Documentation/devicetree/bindings/clock/ti/dra7-atl.txt new file mode 100644 index 00000000000..585e8c191f5 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/dra7-atl.txt @@ -0,0 +1,96 @@ +Device Tree Clock bindings for ATL (Audio Tracking Logic) of DRA7 SoC. + +The ATL IP is used to generate clock to be used to synchronize baseband and +audio codec. A single ATL IP provides four ATL clock instances sharing the same +functional clock but can be configured to provide different clocks. +ATL can maintain a clock averages to some desired frequency based on the bws/aws +signals - can compensate the drift between the two ws signal. + +In order to provide the support for ATL and it's output clocks (which can be used +internally within the SoC or external components) two sets of bindings is needed: + +Clock tree binding: +This binding uses the common clock binding[1]. +To be able to integrate the ATL clocks with DT clock tree. +Provides ccf level representation of the ATL clocks to be used by drivers. +Since the clock instances are part of a single IP this binding is used as a node +for the DT clock tree, the IP driver is needed to handle the actual configuration +of the IP. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- compatible : shall be "ti,dra7-atl-clock" +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : link phandles to functional clock of ATL + +Binding for the IP driver: +This binding is used to configure the IP driver which is going to handle the +configuration of the IP for the ATL clock instances. + +Required properties: +- compatible : shall be "ti,dra7-atl" +- reg : base address for the ATL IP +- ti,provided-clocks : List of phandles to the clocks associated with the ATL +- clocks : link phandles to functional clock of ATL +- clock-names : Shall be set to "fck" +- ti,hwmods : Shall be set to "atl" + +Optional properties: +Configuration of ATL instances: +- atl{0/1/2/3} { +	- bws : Baseband word select signal selection +	- aws : Audio word select signal selection +}; + +For valid word select signals, see the dt-bindings/clk/ti-dra7-atl.h include +file. + +Examples: +/* clock bindings for atl provided clocks */ +atl_clkin0_ck: atl_clkin0_ck { +	#clock-cells = <0>; +	compatible = "ti,dra7-atl-clock"; +	clocks = <&atl_gfclk_mux>; +}; + +atl_clkin1_ck: atl_clkin1_ck { +	#clock-cells = <0>; +	compatible = "ti,dra7-atl-clock"; +	clocks = <&atl_gfclk_mux>; +}; + +atl_clkin2_ck: atl_clkin2_ck { +	#clock-cells = <0>; +	compatible = "ti,dra7-atl-clock"; +	clocks = <&atl_gfclk_mux>; +}; + +atl_clkin3_ck: atl_clkin3_ck { +	#clock-cells = <0>; +	compatible = "ti,dra7-atl-clock"; +	clocks = <&atl_gfclk_mux>; +}; + +/* binding for the IP */ +atl: atl@4843c000 { +	compatible = "ti,dra7-atl"; +	reg = <0x4843c000 0x3ff>; +	ti,hwmods = "atl"; +	ti,provided-clocks = <&atl_clkin0_ck>, <&atl_clkin1_ck>, +				<&atl_clkin2_ck>, <&atl_clkin3_ck>; +	clocks = <&atl_gfclk_mux>; +	clock-names = "fck"; +	status = "disabled"; +}; + +#include <dt-bindings/clk/ti-dra7-atl.h> + +&atl { +	status = "okay"; + +	atl2 { +		bws = <DRA7_ATL_WS_MCASP2_FSX>; +		aws = <DRA7_ATL_WS_MCASP3_FSX>; +	}; +}; diff --git a/Documentation/devicetree/bindings/clock/ti/fixed-factor-clock.txt b/Documentation/devicetree/bindings/clock/ti/fixed-factor-clock.txt new file mode 100644 index 00000000000..662b36d53bf --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/fixed-factor-clock.txt @@ -0,0 +1,43 @@ +Binding for TI fixed factor rate clock sources. + +Binding status: Unstable - ABI compatibility may be broken in the future + +This binding uses the common clock binding[1], and also uses the autoidle +support from TI autoidle clock [2]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt +[2] Documentation/devicetree/bindings/clock/ti/autoidle.txt + +Required properties: +- compatible : shall be "ti,fixed-factor-clock". +- #clock-cells : from common clock binding; shall be set to 0. +- ti,clock-div: fixed divider. +- ti,clock-mult: fixed multiplier. +- clocks: parent clock. + +Optional properties: +- ti,autoidle-shift: bit shift of the autoidle enable bit for the clock, +  see [2] +- reg: offset for the autoidle register of this clock, see [2] +- ti,invert-autoidle-bit: autoidle is enabled by setting the bit to 0, see [2] +- ti,set-rate-parent: clk_set_rate is propagated to parent + +Example: +	clock { +		compatible = "ti,fixed-factor-clock"; +		clocks = <&parentclk>; +		#clock-cells = <0>; +		ti,clock-div = <2>; +		ti,clock-mult = <1>; +	}; + +	dpll_usb_clkdcoldo_ck: dpll_usb_clkdcoldo_ck { +		#clock-cells = <0>; +		compatible = "ti,fixed-factor-clock"; +		clocks = <&dpll_usb_ck>; +		ti,clock-div = <1>; +		ti,autoidle-shift = <8>; +		reg = <0x01b4>; +		ti,clock-mult = <1>; +		ti,invert-autoidle-bit; +	}; diff --git a/Documentation/devicetree/bindings/clock/ti/gate.txt b/Documentation/devicetree/bindings/clock/ti/gate.txt new file mode 100644 index 00000000000..03f8fdee62a --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/gate.txt @@ -0,0 +1,106 @@ +Binding for Texas Instruments gate clock. + +Binding status: Unstable - ABI compatibility may be broken in the future + +This binding uses the common clock binding[1]. This clock is +quite much similar to the basic gate-clock [2], however, +it supports a number of additional features. If no register +is provided for this clock, the code assumes that a clockdomain +will be controlled instead and the corresponding hw-ops for +that is used. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt +[2] Documentation/devicetree/bindings/clock/gate-clock.txt +[3] Documentation/devicetree/bindings/clock/ti/clockdomain.txt + +Required properties: +- compatible : shall be one of: +  "ti,gate-clock" - basic gate clock +  "ti,wait-gate-clock" - gate clock which waits until clock is active before +			 returning from clk_enable() +  "ti,dss-gate-clock" - gate clock with DSS specific hardware handling +  "ti,am35xx-gate-clock" - gate clock with AM35xx specific hardware handling +  "ti,clkdm-gate-clock" - clockdomain gate clock, which derives its functional +			  clock directly from a clockdomain, see [3] how +			  to map clockdomains properly +  "ti,hsdiv-gate-clock" - gate clock with OMAP36xx specific hardware handling, +			  required for a hardware errata +  "ti,composite-gate-clock" - composite gate clock, to be part of composite +			      clock +  "ti,composite-no-wait-gate-clock" - composite gate clock that does not wait +				      for clock to be active before returning +				      from clk_enable() +- #clock-cells : from common clock binding; shall be set to 0 +- clocks : link to phandle of parent clock +- reg : offset for register controlling adjustable gate, not needed for +	ti,clkdm-gate-clock type + +Optional properties: +- ti,bit-shift : bit shift for programming the clock gate, invalid for +		 ti,clkdm-gate-clock type +- ti,set-bit-to-disable : inverts default gate programming. Setting the bit +  gates the clock and clearing the bit ungates the clock. + +Examples: +	mmchs2_fck: mmchs2_fck@48004a00 { +		#clock-cells = <0>; +		compatible = "ti,gate-clock"; +		clocks = <&core_96m_fck>; +		reg = <0x0a00>; +		ti,bit-shift = <25>; +	}; + +	uart4_fck_am35xx: uart4_fck_am35xx { +		#clock-cells = <0>; +		compatible = "ti,wait-gate-clock"; +		clocks = <&core_48m_fck>; +		reg = <0x0a00>; +		ti,bit-shift = <23>; +	}; + +	dss1_alwon_fck_3430es2: dss1_alwon_fck_3430es2@48004e00 { +		#clock-cells = <0>; +		compatible = "ti,dss-gate-clock"; +		clocks = <&dpll4_m4x2_ck>; +		reg = <0x0e00>; +		ti,bit-shift = <0>; +	}; + +	emac_ick: emac_ick@4800259c { +		#clock-cells = <0>; +		compatible = "ti,am35xx-gate-clock"; +		clocks = <&ipss_ick>; +		reg = <0x059c>; +		ti,bit-shift = <1>; +	}; + +	emu_src_ck: emu_src_ck { +		#clock-cells = <0>; +		compatible = "ti,clkdm-gate-clock"; +		clocks = <&emu_src_mux_ck>; +	}; + +	dpll4_m2x2_ck: dpll4_m2x2_ck@48004d00 { +		#clock-cells = <0>; +		compatible = "ti,hsdiv-gate-clock"; +		clocks = <&dpll4_m2x2_mul_ck>; +		ti,bit-shift = <0x1b>; +		reg = <0x0d00>; +		ti,set-bit-to-disable; +	}; + +	vlynq_gate_fck: vlynq_gate_fck { +		#clock-cells = <0>; +		compatible = "ti,composite-gate-clock"; +		clocks = <&core_ck>; +		ti,bit-shift = <3>; +		reg = <0x0200>; +	}; + +	sys_clkout2_src_gate: sys_clkout2_src_gate { +		#clock-cells = <0>; +		compatible = "ti,composite-no-wait-gate-clock"; +		clocks = <&core_ck>; +		ti,bit-shift = <15>; +		reg = <0x0070>; +	}; diff --git a/Documentation/devicetree/bindings/clock/ti/interface.txt b/Documentation/devicetree/bindings/clock/ti/interface.txt new file mode 100644 index 00000000000..3111a409fea --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/interface.txt @@ -0,0 +1,56 @@ +Binding for Texas Instruments interface clock. + +Binding status: Unstable - ABI compatibility may be broken in the future + +This binding uses the common clock binding[1]. This clock is +quite much similar to the basic gate-clock [2], however, +it supports a number of additional features, including +companion clock finding (match corresponding functional gate +clock) and hardware autoidle enable / disable. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt +[2] Documentation/devicetree/bindings/clock/gate-clock.txt + +Required properties: +- compatible : shall be one of: +  "ti,omap3-interface-clock" - basic OMAP3 interface clock +  "ti,omap3-no-wait-interface-clock" - interface clock which has no hardware +				       capability for waiting clock to be ready +  "ti,omap3-hsotgusb-interface-clock" - interface clock with USB specific HW +					handling +  "ti,omap3-dss-interface-clock" - interface clock with DSS specific HW handling +  "ti,omap3-ssi-interface-clock" - interface clock with SSI specific HW handling +  "ti,am35xx-interface-clock" - interface clock with AM35xx specific HW handling +  "ti,omap2430-interface-clock" - interface clock with OMAP2430 specific HW +				  handling +- #clock-cells : from common clock binding; shall be set to 0 +- clocks : link to phandle of parent clock +- reg : base address for the control register + +Optional properties: +- ti,bit-shift : bit shift for the bit enabling/disabling the clock (default 0) + +Examples: +	aes1_ick: aes1_ick@48004a14 { +		#clock-cells = <0>; +		compatible = "ti,omap3-interface-clock"; +		clocks = <&security_l4_ick2>; +		reg = <0x48004a14 0x4>; +		ti,bit-shift = <3>; +	}; + +	cam_ick: cam_ick@48004f10 { +		#clock-cells = <0>; +		compatible = "ti,omap3-no-wait-interface-clock"; +		clocks = <&l4_ick>; +		reg = <0x48004f10 0x4>; +		ti,bit-shift = <0>; +	}; + +	ssi_ick_3430es2: ssi_ick_3430es2@48004a10 { +		#clock-cells = <0>; +		compatible = "ti,omap3-ssi-interface-clock"; +		clocks = <&ssi_l4_ick>; +		reg = <0x48004a10 0x4>; +		ti,bit-shift = <0>; +	}; diff --git a/Documentation/devicetree/bindings/clock/ti/mux.txt b/Documentation/devicetree/bindings/clock/ti/mux.txt new file mode 100644 index 00000000000..2d0d170f800 --- /dev/null +++ b/Documentation/devicetree/bindings/clock/ti/mux.txt @@ -0,0 +1,76 @@ +Binding for TI mux clock. + +Binding status: Unstable - ABI compatibility may be broken in the future + +This binding uses the common clock binding[1].  It assumes a +register-mapped multiplexer with multiple input clock signals or +parents, one of which can be selected as output.  This clock does not +gate or adjust the parent rate via a divider or multiplier. + +By default the "clocks" property lists the parents in the same order +as they are programmed into the regster.  E.g: + +	clocks = <&foo_clock>, <&bar_clock>, <&baz_clock>; + +results in programming the register as follows: + +register value		selected parent clock +0			foo_clock +1			bar_clock +2			baz_clock + +Some clock controller IPs do not allow a value of zero to be programmed +into the register, instead indexing begins at 1.  The optional property +"index-starts-at-one" modified the scheme as follows: + +register value		selected clock parent +1			foo_clock +2			bar_clock +3			baz_clock + +The binding must provide the register to control the mux. Optionally +the number of bits to shift the control field in the register can be +supplied. If the shift value is missing it is the same as supplying +a zero shift. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- compatible : shall be "ti,mux-clock" or "ti,composite-mux-clock". +- #clock-cells : from common clock binding; shall be set to 0. +- clocks : link phandles of parent clocks +- reg : register offset for register controlling adjustable mux + +Optional properties: +- ti,bit-shift : number of bits to shift the bit-mask, defaults to +  0 if not present +- ti,index-starts-at-one : valid input select programming starts at 1, not +  zero +- ti,set-rate-parent : clk_set_rate is propagated to parent clock, +  not supported by the composite-mux-clock subtype + +Examples: + +sys_clkin_ck: sys_clkin_ck@4a306110 { +	#clock-cells = <0>; +	compatible = "ti,mux-clock"; +	clocks = <&virt_12000000_ck>, <&virt_13000000_ck>, <&virt_16800000_ck>, <&virt_19200000_ck>, <&virt_26000000_ck>, <&virt_27000000_ck>, <&virt_38400000_ck>; +	reg = <0x0110>; +	ti,index-starts-at-one; +}; + +abe_dpll_bypass_clk_mux_ck: abe_dpll_bypass_clk_mux_ck@4a306108 { +	#clock-cells = <0>; +	compatible = "ti,mux-clock"; +	clocks = <&sys_clkin_ck>, <&sys_32k_ck>; +	ti,bit-shift = <24>; +	reg = <0x0108>; +}; + +mcbsp5_mux_fck: mcbsp5_mux_fck { +	#clock-cells = <0>; +	compatible = "ti,composite-mux-clock"; +	clocks = <&core_96m_fck>, <&mcbsp_clks>; +	ti,bit-shift = <4>; +	reg = <0x02d8>; +}; diff --git a/Documentation/devicetree/bindings/clock/xgene.txt b/Documentation/devicetree/bindings/clock/xgene.txt new file mode 100644 index 00000000000..1c4ef773fee --- /dev/null +++ b/Documentation/devicetree/bindings/clock/xgene.txt @@ -0,0 +1,111 @@ +Device Tree Clock bindings for APM X-Gene + +This binding uses the common clock binding[1]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- compatible : shall be one of the following: +	"apm,xgene-socpll-clock" - for a X-Gene SoC PLL clock +	"apm,xgene-pcppll-clock" - for a X-Gene PCP PLL clock +	"apm,xgene-device-clock" - for a X-Gene device clock + +Required properties for SoC or PCP PLL clocks: +- reg : shall be the physical PLL register address for the pll clock. +- clocks : shall be the input parent clock phandle for the clock. This should +	be the reference clock. +- #clock-cells : shall be set to 1. +- clock-output-names : shall be the name of the PLL referenced by derive +  clock. +Optional properties for PLL clocks: +- clock-names : shall be the name of the PLL. If missing, use the device name. + +Required properties for device clocks: +- reg : shall be a list of address and length pairs describing the CSR +         reset and/or the divider. Either may be omitted, but at least +         one must be present. + - reg-names : shall be a string list describing the reg resource. This +               may include "csr-reg" and/or "div-reg". If this property +               is not present, the reg property is assumed to describe +               only "csr-reg". +- clocks : shall be the input parent clock phandle for the clock. +- #clock-cells : shall be set to 1. +- clock-output-names : shall be the name of the device referenced. +Optional properties for device clocks: +- clock-names : shall be the name of the device clock. If missing, use the +                device name. +- csr-offset : Offset to the CSR reset register from the reset address base. +               Default is 0. +- csr-mask : CSR reset mask bit. Default is 0xF. +- enable-offset : Offset to the enable register from the reset address base. +                  Default is 0x8. +- enable-mask : CSR enable mask bit. Default is 0xF. +- divider-offset : Offset to the divider CSR register from the divider base. +                   Default is 0x0. +- divider-width : Width of the divider register. Default is 0. +- divider-shift : Bit shift of the divider register. Default is 0. + +For example: + +	pcppll: pcppll@17000100 { +		compatible = "apm,xgene-pcppll-clock"; +		#clock-cells = <1>; +		clocks = <&refclk 0>; +		clock-names = "pcppll"; +		reg = <0x0 0x17000100 0x0 0x1000>; +		clock-output-names = "pcppll"; +		type = <0>; +	}; + +	socpll: socpll@17000120 { +		compatible = "apm,xgene-socpll-clock"; +		#clock-cells = <1>; +		clocks = <&refclk 0>; +		clock-names = "socpll"; +		reg = <0x0 0x17000120 0x0 0x1000>; +		clock-output-names = "socpll"; +		type = <1>; +	}; + +	qmlclk: qmlclk { +		compatible = "apm,xgene-device-clock"; +		#clock-cells = <1>; +		clocks = <&socplldiv2 0>; +		clock-names = "qmlclk"; +		reg = <0x0 0x1703C000 0x0 0x1000>; +		reg-name = "csr-reg"; +		clock-output-names = "qmlclk"; +	}; + +	ethclk: ethclk { +		compatible = "apm,xgene-device-clock"; +		#clock-cells = <1>; +		clocks = <&socplldiv2 0>; +		clock-names = "ethclk"; +		reg = <0x0 0x17000000 0x0 0x1000>; +		reg-names = "div-reg"; +		divider-offset = <0x238>; +		divider-width = <0x9>; +		divider-shift = <0x0>; +		clock-output-names = "ethclk"; +	}; + +	apbclk: apbclk { +		compatible = "apm,xgene-device-clock"; +		#clock-cells = <1>; +		clocks = <&ahbclk 0>; +		clock-names = "apbclk"; +		reg = <0x0 0x1F2AC000 0x0 0x1000 +			0x0 0x1F2AC000 0x0 0x1000>; +		reg-names = "csr-reg", "div-reg"; +		csr-offset = <0x0>; +		csr-mask = <0x200>; +		enable-offset = <0x8>; +		enable-mask = <0x200>; +		divider-offset = <0x10>; +		divider-width = <0x2>; +		divider-shift = <0x0>; +		flags = <0x8>; +		clock-output-names = "apbclk"; +	}; + diff --git a/Documentation/devicetree/bindings/clock/zynq-7000.txt b/Documentation/devicetree/bindings/clock/zynq-7000.txt index d99af878f5d..d93746cf297 100644 --- a/Documentation/devicetree/bindings/clock/zynq-7000.txt +++ b/Documentation/devicetree/bindings/clock/zynq-7000.txt @@ -14,6 +14,7 @@ for all clock consumers of PS clocks.  Required properties:   - #clock-cells : Must be 1   - compatible : "xlnx,ps7-clkc" + - reg : SLCR offset and size taken via syscon < 0x100 0x100 >   - ps-clk-frequency : Frequency of the oscillator providing ps_clk in HZ  		      (usually 33 MHz oscillators are used for Zynq platforms)   - clock-output-names : List of strings used to name the clock outputs. Shall be @@ -22,6 +23,10 @@ Required properties:  Optional properties:   - clocks : as described in the clock bindings   - clock-names : as described in the clock bindings + - fclk-enable : Bit mask to enable FCLKs statically at boot time. +		 Bit [0..3] correspond to FCLK0..FCLK3. The corresponding +		 FCLK will only be enabled if it is actually running at +		 boot time.  Clock inputs:  The following strings are optional parameters to the 'clock-names' property in @@ -83,10 +88,11 @@ Clock outputs:   47: dbg_apb  Example: -	clkc: clkc { +	clkc: clkc@100 {  		#clock-cells = <1>;  		compatible = "xlnx,ps7-clkc";  		ps-clk-frequency = <33333333>; +		reg = <0x100 0x100>;  		clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x",  				"cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x",  				"dci", "lqspi", "smc", "pcap", "gem0", "gem1", diff --git a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt index 051f764bedb..366690cb86a 100644 --- a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt +++ b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt @@ -8,13 +8,19 @@ Both required and optional properties listed below must be defined  under node /cpus/cpu@0.  Required properties: -- operating-points: Refer to Documentation/devicetree/bindings/power/opp.txt -  for details +- None  Optional properties: +- operating-points: Refer to Documentation/devicetree/bindings/power/opp.txt for +  details. OPPs *must* be supplied either via DT, i.e. this property, or +  populated at runtime.  - clock-latency: Specify the possible maximum transition latency for clock,    in unit of nanoseconds.  - voltage-tolerance: Specify the CPU voltage tolerance in percentage. +- #cooling-cells: +- cooling-min-level: +- cooling-max-level: +     Please refer to Documentation/devicetree/bindings/thermal/thermal.txt.  Examples: @@ -33,6 +39,9 @@ cpus {  			198000  850000  		>;  		clock-latency = <61036>; /* two CLK32 periods */ +		#cooling-cells = <2>; +		cooling-min-level = <0>; +		cooling-max-level = <2>;  	};  	cpu@1 { diff --git a/Documentation/devicetree/bindings/crypto/atmel-crypto.txt b/Documentation/devicetree/bindings/crypto/atmel-crypto.txt new file mode 100644 index 00000000000..f2aab3dc2b5 --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/atmel-crypto.txt @@ -0,0 +1,68 @@ +* Atmel HW cryptographic accelerators + +These are the HW cryptographic accelerators found on some Atmel products. + +* Advanced Encryption Standard (AES) + +Required properties: +- compatible : Should be "atmel,at91sam9g46-aes". +- reg: Should contain AES registers location and length. +- interrupts: Should contain the IRQ line for the AES. +- dmas: List of two DMA specifiers as described in +        atmel-dma.txt and dma.txt files. +- dma-names: Contains one identifier string for each DMA specifier +             in the dmas property. + +Example: +aes@f8038000 { +	compatible = "atmel,at91sam9g46-aes"; +	reg = <0xf8038000 0x100>; +	interrupts = <43 4 0>; +	dmas = <&dma1 2 18>, +	       <&dma1 2 19>; +	dma-names = "tx", "rx"; + +* Triple Data Encryption Standard (Triple DES) + +Required properties: +- compatible : Should be "atmel,at91sam9g46-tdes". +- reg: Should contain TDES registers location and length. +- interrupts: Should contain the IRQ line for the TDES. + +Optional properties: +- dmas: List of two DMA specifiers as described in +        atmel-dma.txt and dma.txt files. +- dma-names: Contains one identifier string for each DMA specifier +             in the dmas property. + +Example: +tdes@f803c000 { +	compatible = "atmel,at91sam9g46-tdes"; +	reg = <0xf803c000 0x100>; +	interrupts = <44 4 0>; +	dmas = <&dma1 2 20>, +	       <&dma1 2 21>; +	dma-names = "tx", "rx"; +}; + +* Secure Hash Algorithm (SHA) + +Required properties: +- compatible : Should be "atmel,at91sam9g46-sha". +- reg: Should contain SHA registers location and length. +- interrupts: Should contain the IRQ line for the SHA. + +Optional properties: +- dmas: One DMA specifiers as described in +        atmel-dma.txt and dma.txt files. +- dma-names: Contains one identifier string for each DMA specifier +             in the dmas property. Only one "tx" string needed. + +Example: +sha@f8034000 { +	compatible = "atmel,at91sam9g46-sha"; +	reg = <0xf8034000 0x100>; +	interrupts = <42 4 0>; +	dmas = <&dma1 2 17>; +	dma-names = "tx"; +}; diff --git a/Documentation/devicetree/bindings/crypto/fsl-dcp.txt b/Documentation/devicetree/bindings/crypto/fsl-dcp.txt new file mode 100644 index 00000000000..6949e50f1f1 --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/fsl-dcp.txt @@ -0,0 +1,17 @@ +Freescale DCP (Data Co-Processor) found on i.MX23/i.MX28 . + +Required properties: +- compatible : Should be "fsl,<soc>-dcp" +- reg : Should contain MXS DCP registers location and length +- interrupts : Should contain MXS DCP interrupt numbers, VMI IRQ and DCP IRQ +               must be supplied, optionally Secure IRQ can be present, but +	       is currently not implemented and not used. + +Example: + +dcp@80028000 { +	compatible = "fsl,imx28-dcp", "fsl,imx23-dcp"; +	reg = <0x80028000 0x2000>; +	interrupts = <52 53>; +	status = "okay"; +}; diff --git a/Documentation/devicetree/bindings/crypto/omap-aes.txt b/Documentation/devicetree/bindings/crypto/omap-aes.txt new file mode 100644 index 00000000000..fd9717653cb --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/omap-aes.txt @@ -0,0 +1,31 @@ +OMAP SoC AES crypto Module + +Required properties: + +- compatible : Should contain entries for this and backward compatible +  AES versions: +  - "ti,omap2-aes" for OMAP2. +  - "ti,omap3-aes" for OMAP3. +  - "ti,omap4-aes" for OMAP4 and AM33XX. +  Note that the OMAP2 and 3 versions are compatible (OMAP3 supports +  more algorithms) but they are incompatible with OMAP4. +- ti,hwmods: Name of the hwmod associated with the AES module +- reg : Offset and length of the register set for the module +- interrupts : the interrupt-specifier for the AES module. + +Optional properties: +- dmas: DMA specifiers for tx and rx dma. See the DMA client binding, +	Documentation/devicetree/bindings/dma/dma.txt +- dma-names: DMA request names should include "tx" and "rx" if present. + +Example: +	/* AM335x */ +	aes: aes@53500000 { +		compatible = "ti,omap4-aes"; +		ti,hwmods = "aes"; +		reg = <0x53500000 0xa0>; +		interrupts = <102>; +		dmas = <&edma 6>, +		       <&edma 5>; +		dma-names = "tx", "rx"; +	}; diff --git a/Documentation/devicetree/bindings/crypto/omap-des.txt b/Documentation/devicetree/bindings/crypto/omap-des.txt new file mode 100644 index 00000000000..e8c63bf2e16 --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/omap-des.txt @@ -0,0 +1,30 @@ +OMAP SoC DES crypto Module + +Required properties: + +- compatible : Should contain "ti,omap4-des" +- ti,hwmods: Name of the hwmod associated with the DES module +- reg : Offset and length of the register set for the module +- interrupts : the interrupt-specifier for the DES module +- clocks : A phandle to the functional clock node of the DES module +           corresponding to each entry in clock-names +- clock-names : Name of the functional clock, should be "fck" + +Optional properties: +- dmas: DMA specifiers for tx and rx dma. See the DMA client binding, +	Documentation/devicetree/bindings/dma/dma.txt +	Each entry corresponds to an entry in dma-names +- dma-names: DMA request names should include "tx" and "rx" if present + +Example: +	/* DRA7xx SoC */ +	des: des@480a5000 { +		compatible = "ti,omap4-des"; +		ti,hwmods = "des"; +		reg = <0x480a5000 0xa0>; +		interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; +		dmas = <&sdma 117>, <&sdma 116>; +		dma-names = "tx", "rx"; +		clocks = <&l3_iclk_div>; +		clock-names = "fck"; +	}; diff --git a/Documentation/devicetree/bindings/crypto/omap-sham.txt b/Documentation/devicetree/bindings/crypto/omap-sham.txt new file mode 100644 index 00000000000..ad911556961 --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/omap-sham.txt @@ -0,0 +1,28 @@ +OMAP SoC SHA crypto Module + +Required properties: + +- compatible : Should contain entries for this and backward compatible +  SHAM versions: +  - "ti,omap2-sham" for OMAP2 & OMAP3. +  - "ti,omap4-sham" for OMAP4 and AM33XX. +  - "ti,omap5-sham" for OMAP5, DRA7 and AM43XX. +- ti,hwmods: Name of the hwmod associated with the SHAM module +- reg : Offset and length of the register set for the module +- interrupts : the interrupt-specifier for the SHAM module. + +Optional properties: +- dmas: DMA specifiers for the rx dma. See the DMA client binding, +	Documentation/devicetree/bindings/dma/dma.txt +- dma-names: DMA request name. Should be "rx" if a dma is present. + +Example: +	/* AM335x */ +	sham: sham@53100000 { +		compatible = "ti,omap4-sham"; +		ti,hwmods = "sham"; +		reg = <0x53100000 0x200>; +		interrupts = <109>; +		dmas = <&edma 36>; +		dma-names = "rx"; +	}; diff --git a/Documentation/devicetree/bindings/crypto/samsung-sss.txt b/Documentation/devicetree/bindings/crypto/samsung-sss.txt new file mode 100644 index 00000000000..a6dafa83c6d --- /dev/null +++ b/Documentation/devicetree/bindings/crypto/samsung-sss.txt @@ -0,0 +1,34 @@ +Samsung SoC SSS (Security SubSystem) module + +The SSS module in S5PV210 SoC supports the following: +-- Feeder (FeedCtrl) +-- Advanced Encryption Standard (AES) +-- Data Encryption Standard (DES)/3DES +-- Public Key Accelerator (PKA) +-- SHA-1/SHA-256/MD5/HMAC (SHA-1/SHA-256/MD5)/PRNG +-- PRNG: Pseudo Random Number Generator + +The SSS module in Exynos4 (Exynos4210) and +Exynos5 (Exynos5420 and Exynos5250) SoCs +supports the following also: +-- ARCFOUR (ARC4) +-- True Random Number Generator (TRNG) +-- Secure Key Manager + +Required properties: + +- compatible : Should contain entries for this and backward compatible +  SSS versions: +  - "samsung,s5pv210-secss" for S5PV210 SoC. +  - "samsung,exynos4210-secss" for Exynos4210, Exynos4212, Exynos4412, Exynos5250, +		Exynos5260 and Exynos5420 SoCs. +- reg : Offset and length of the register set for the module +- interrupts : interrupt specifiers of SSS module interrupts, should contain +		following entries: +		- first : feed control interrupt (required for all variants), +		- second : hash interrupt (required only for samsung,s5pv210-secss). + +- clocks : list of clock phandle and specifier pairs for all clocks  listed in +		clock-names property. +- clock-names : list of device clock input names; should contain one entry +		"secss". diff --git a/Documentation/devicetree/bindings/dma/atmel-dma.txt b/Documentation/devicetree/bindings/dma/atmel-dma.txt index e1f343c7a34..f69bcf5a634 100644 --- a/Documentation/devicetree/bindings/dma/atmel-dma.txt +++ b/Documentation/devicetree/bindings/dma/atmel-dma.txt @@ -28,7 +28,7 @@ The three cells in order are:  dependent:    - bit 7-0: peripheral identifier for the hardware handshaking interface. The    identifier can be different for tx and rx. -  - bit 11-8: FIFO configuration. 0 for half FIFO, 1 for ALAP, 1 for ASAP. +  - bit 11-8: FIFO configuration. 0 for half FIFO, 1 for ALAP, 2 for ASAP.  Example: diff --git a/Documentation/devicetree/bindings/dma/bcm2835-dma.txt b/Documentation/devicetree/bindings/dma/bcm2835-dma.txt new file mode 100644 index 00000000000..1396078d15a --- /dev/null +++ b/Documentation/devicetree/bindings/dma/bcm2835-dma.txt @@ -0,0 +1,57 @@ +* BCM2835 DMA controller + +The BCM2835 DMA controller has 16 channels in total. +Only the lower 13 channels have an associated IRQ. +Some arbitrary channels are used by the firmware +(1,3,6,7 in the current firmware version). +The channels 0,2 and 3 have special functionality +and should not be used by the driver. + +Required properties: +- compatible: Should be "brcm,bcm2835-dma". +- reg: Should contain DMA registers location and length. +- interrupts: Should contain the DMA interrupts associated +		to the DMA channels in ascending order. +- #dma-cells: Must be <1>, the cell in the dmas property of the +		client device represents the DREQ number. +- brcm,dma-channel-mask: Bit mask representing the channels +			 not used by the firmware in ascending order, +			 i.e. first channel corresponds to LSB. + +Example: + +dma: dma@7e007000 { +	compatible = "brcm,bcm2835-dma"; +	reg = <0x7e007000 0xf00>; +	interrupts = <1 16>, +		     <1 17>, +		     <1 18>, +		     <1 19>, +		     <1 20>, +		     <1 21>, +		     <1 22>, +		     <1 23>, +		     <1 24>, +		     <1 25>, +		     <1 26>, +		     <1 27>, +		     <1 28>; + +	#dma-cells = <1>; +	brcm,dma-channel-mask = <0x7f35>; +}; + +DMA clients connected to the BCM2835 DMA controller must use the format +described in the dma.txt file, using a two-cell specifier for each channel. + +Example: + +bcm2835_i2s: i2s@7e203000 { +	compatible = "brcm,bcm2835-i2s"; +	reg = <	0x7e203000 0x20>, +	      < 0x7e101098 0x02>; + +	dmas = <&dma 2>, +	       <&dma 3>; +	dma-names = "tx", "rx"; +}; diff --git a/Documentation/devicetree/bindings/dma/dma.txt b/Documentation/devicetree/bindings/dma/dma.txt index 8f504e6bae1..82104271e75 100644 --- a/Documentation/devicetree/bindings/dma/dma.txt +++ b/Documentation/devicetree/bindings/dma/dma.txt @@ -14,7 +14,7 @@ Required property:  Optional properties:  - dma-channels: 	Number of DMA channels supported by the controller. -- dma-requests: 	Number of DMA requests signals supported by the +- dma-requests: 	Number of DMA request signals supported by the  			controller.  Example: @@ -44,7 +44,7 @@ Required property:  			  #dma-cells property in the node referenced by phandle  			  containing DMA controller specific information. This  			  typically contains a DMA request line number or a -			  channel number, but can contain any data that is used +			  channel number, but can contain any data that is  			  required for configuring a channel.  - dma-names: 		Contains one identifier string for each DMA specifier in  			the dmas property. The specific strings that can be used diff --git a/Documentation/devicetree/bindings/dma/fsl-edma.txt b/Documentation/devicetree/bindings/dma/fsl-edma.txt new file mode 100644 index 00000000000..191d7bd8a6f --- /dev/null +++ b/Documentation/devicetree/bindings/dma/fsl-edma.txt @@ -0,0 +1,76 @@ +* Freescale enhanced Direct Memory Access(eDMA) Controller + +  The eDMA channels have multiplex capability by programmble memory-mapped +registers. channels are split into two groups, called DMAMUX0 and DMAMUX1, +specific DMA request source can only be multiplexed by any channel of certain +group, DMAMUX0 or DMAMUX1, but not both. + +* eDMA Controller +Required properties: +- compatible : +	- "fsl,vf610-edma" for eDMA used similar to that on Vybrid vf610 SoC +- reg : Specifies base physical address(s) and size of the eDMA registers. +	The 1st region is eDMA control register's address and size. +	The 2nd and the 3rd regions are programmable channel multiplexing +	control register's address and size. +- interrupts : A list of interrupt-specifiers, one for each entry in +	interrupt-names. +- interrupt-names : Should contain: +	"edma-tx" - the transmission interrupt +	"edma-err" - the error interrupt +- #dma-cells : Must be <2>. +	The 1st cell specifies the DMAMUX(0 for DMAMUX0 and 1 for DMAMUX1). +	Specific request source can only be multiplexed by specific channels +	group called DMAMUX. +	The 2nd cell specifies the request source(slot) ID. +	See the SoC's reference manual for all the supported request sources. +- dma-channels : Number of channels supported by the controller +- clock-names : A list of channel group clock names. Should contain: +	"dmamux0" - clock name of mux0 group +	"dmamux1" - clock name of mux1 group +- clocks : A list of phandle and clock-specifier pairs, one for each entry in +	clock-names. + +Optional properties: +- big-endian: If present registers and hardware scatter/gather descriptors +	of the eDMA are implemented in big endian mode, otherwise in little +	mode. + + +Examples: + +edma0: dma-controller@40018000 { +	#dma-cells = <2>; +	compatible = "fsl,vf610-edma"; +	reg = <0x40018000 0x2000>, +		<0x40024000 0x1000>, +		<0x40025000 0x1000>; +	interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>, +		<0 9 IRQ_TYPE_LEVEL_HIGH>; +	interrupt-names = "edma-tx", "edma-err"; +	dma-channels = <32>; +	clock-names = "dmamux0", "dmamux1"; +	clocks = <&clks VF610_CLK_DMAMUX0>, +		<&clks VF610_CLK_DMAMUX1>; +}; + + +* DMA clients +DMA client drivers that uses the DMA function must use the format described +in the dma.txt file, using a two-cell specifier for each channel: the 1st +specifies the channel group(DMAMUX) in which this request can be multiplexed, +and the 2nd specifies the request source. + +Examples: + +sai2: sai@40031000 { +	compatible = "fsl,vf610-sai"; +	reg = <0x40031000 0x1000>; +	interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>; +	clock-names = "sai"; +	clocks = <&clks VF610_CLK_SAI2>; +	dma-names = "tx", "rx"; +	dmas = <&edma0 0 21>, +		<&edma0 0 20>; +	status = "disabled"; +}; diff --git a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt index 4fa814d3832..e577196a12c 100644 --- a/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt +++ b/Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt @@ -1,12 +1,16 @@  * Freescale Smart Direct Memory Access (SDMA) Controller for i.MX  Required properties: -- compatible : Should be "fsl,imx31-sdma", "fsl,imx31-to1-sdma", -  "fsl,imx31-to2-sdma", "fsl,imx35-sdma", "fsl,imx35-to1-sdma", -  "fsl,imx35-to2-sdma", "fsl,imx51-sdma", "fsl,imx53-sdma" or -  "fsl,imx6q-sdma". The -to variants should be preferred since they -  allow to determnine the correct ROM script addresses needed for -  the driver to work without additional firmware. +- compatible : Should be one of +      "fsl,imx25-sdma" +      "fsl,imx31-sdma", "fsl,imx31-to1-sdma", "fsl,imx31-to2-sdma" +      "fsl,imx35-sdma", "fsl,imx35-to1-sdma", "fsl,imx35-to2-sdma" +      "fsl,imx51-sdma" +      "fsl,imx53-sdma" +      "fsl,imx6q-sdma" +  The -to variants should be preferred since they allow to determine the +  correct ROM script addresses needed for the driver to work without additional +  firmware.  - reg : Should contain SDMA registers location and length  - interrupts : Should contain SDMA interrupt  - #dma-cells : Must be <3>. @@ -42,6 +46,7 @@ The full ID of peripheral types can be found below.  	19	IPU Memory  	20	ASRC  	21	ESAI +	22	SSI Dual FIFO	(needs firmware ver >= 2)  The third cell specifies the transfer priority as below. diff --git a/Documentation/devicetree/bindings/dma/mmp-dma.txt b/Documentation/devicetree/bindings/dma/mmp-dma.txt index a4fa4efa1d8..7a802f64e5b 100644 --- a/Documentation/devicetree/bindings/dma/mmp-dma.txt +++ b/Documentation/devicetree/bindings/dma/mmp-dma.txt @@ -1,17 +1,20 @@  * MARVELL MMP DMA controller  Marvell Peripheral DMA Controller -Used platfroms: pxa688, pxa910, pxa3xx, etc +Used platforms: pxa688, pxa910, pxa3xx, etc  Required properties:  - compatible: Should be "marvell,pdma-1.0"  - reg: Should contain DMA registers location and length.  - interrupts: Either contain all of the per-channel DMA interrupts  		or one irq for pdma device -- #dma-channels: Number of DMA channels supported by the controller. + +Optional properties: +- #dma-channels: Number of DMA channels supported by the controller (defaults +  to 32 when not specified)  "marvell,pdma-1.0" -Used platfroms: pxa25x, pxa27x, pxa3xx, pxa93x, pxa168, pxa910, pxa688. +Used platforms: pxa25x, pxa27x, pxa3xx, pxa93x, pxa168, pxa910, pxa688.  Examples: @@ -45,7 +48,7 @@ pdma: dma-controller@d4000000 {  Marvell Two Channel DMA Controller used specifically for audio -Used platfroms: pxa688, pxa910 +Used platforms: pxa688, pxa910  Required properties:  - compatible: Should be "marvell,adma-1.0" or "marvell,pxa910-squ" diff --git a/Documentation/devicetree/bindings/dma/moxa,moxart-dma.txt b/Documentation/devicetree/bindings/dma/moxa,moxart-dma.txt new file mode 100644 index 00000000000..8a9f3559335 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/moxa,moxart-dma.txt @@ -0,0 +1,45 @@ +MOXA ART DMA Controller + +See dma.txt first + +Required properties: + +- compatible :	Must be "moxa,moxart-dma" +- reg :		Should contain registers location and length +- interrupts :	Should contain an interrupt-specifier for the sole +		interrupt generated by the device +- #dma-cells :	Should be 1, a single cell holding a line request number + +Example: + +	dma: dma@90500000 { +		compatible = "moxa,moxart-dma"; +		reg = <0x90500080 0x40>; +		interrupts = <24 0>; +		#dma-cells = <1>; +	}; + + +Clients: + +DMA clients connected to the MOXA ART DMA controller must use the format +described in the dma.txt file, using a two-cell specifier for each channel: +a phandle plus one integer cells. +The two cells in order are: + +1. A phandle pointing to the DMA controller. +2. Peripheral identifier for the hardware handshaking interface. + +Example: +Use specific request line passing from dma +For example, MMC request line is 5 + +	sdhci: sdhci@98e00000 { +		compatible = "moxa,moxart-sdhci"; +		reg = <0x98e00000 0x5C>; +		interrupts = <5 0>; +		clocks = <&clk_apb>; +		dmas =  <&dma 5>, +			<&dma 5>; +		dma-names = "tx", "rx"; +	}; diff --git a/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt b/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt new file mode 100644 index 00000000000..d75a9d76702 --- /dev/null +++ b/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt @@ -0,0 +1,41 @@ +QCOM BAM DMA controller + +Required properties: +- compatible: must contain "qcom,bam-v1.4.0" for MSM8974 +- reg: Address range for DMA registers +- interrupts: Should contain the one interrupt shared by all channels +- #dma-cells: must be <1>, the cell in the dmas property of the client device +  represents the channel number +- clocks: required clock +- clock-names: must contain "bam_clk" entry +- qcom,ee : indicates the active Execution Environment identifier (0-7) used in +  the secure world. + +Example: + +	uart-bam: dma@f9984000 = { +		compatible = "qcom,bam-v1.4.0"; +		reg = <0xf9984000 0x15000>; +		interrupts = <0 94 0>; +		clocks = <&gcc GCC_BAM_DMA_AHB_CLK>; +		clock-names = "bam_clk"; +		#dma-cells = <1>; +		qcom,ee = <0>; +	}; + +DMA clients must use the format described in the dma.txt file, using a two cell +specifier for each channel. + +Example: +	serial@f991e000 { +		compatible = "qcom,msm-uart"; +		reg = <0xf991e000 0x1000> +			<0xf9944000 0x19000>; +		interrupts = <0 108 0>; +		clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, +			<&gcc GCC_BLSP1_AHB_CLK>; +		clock-names = "core", "iface"; + +		dmas = <&uart-bam 0>, <&uart-bam 1>; +		dma-names = "rx", "tx"; +	}; diff --git a/Documentation/devicetree/bindings/dma/sirfsoc-dma.txt b/Documentation/devicetree/bindings/dma/sirfsoc-dma.txt new file mode 100644 index 00000000000..ecbc96ad36f --- /dev/null +++ b/Documentation/devicetree/bindings/dma/sirfsoc-dma.txt @@ -0,0 +1,43 @@ +* CSR SiRFSoC DMA controller + +See dma.txt first + +Required properties: +- compatible: Should be "sirf,prima2-dmac" or "sirf,marco-dmac" +- reg: Should contain DMA registers location and length. +- interrupts: Should contain one interrupt shared by all channel +- #dma-cells: must be <1>. used to represent the number of integer +    cells in the dmas property of client device. +- clocks: clock required + +Example: + +Controller: +dmac0: dma-controller@b00b0000 { +	compatible = "sirf,prima2-dmac"; +	reg = <0xb00b0000 0x10000>; +	interrupts = <12>; +	clocks = <&clks 24>; +	#dma-cells = <1>; +}; + + +Client: +Fill the specific dma request line in dmas. In the below example, spi0 read +channel request line is 9 of the 2nd dma controller, while write channel uses +4 of the 2nd dma controller; spi1 read channel request line is 12 of the 1st +dma controller, while write channel uses 13 of the 1st dma controller: + +spi0: spi@b00d0000 { +	compatible = "sirf,prima2-spi"; +	dmas = <&dmac1 9>, +		<&dmac1 4>; +	dma-names = "rx", "tx"; +}; + +spi1: spi@b0170000 { +	compatible = "sirf,prima2-spi"; +	dmas = <&dmac0 12>, +		<&dmac0 13>; +	dma-names = "rx", "tx"; +}; diff --git a/Documentation/devicetree/bindings/dma/ste-dma40.txt b/Documentation/devicetree/bindings/dma/ste-dma40.txt index a8c21c256ba..1f5729f1062 100644 --- a/Documentation/devicetree/bindings/dma/ste-dma40.txt +++ b/Documentation/devicetree/bindings/dma/ste-dma40.txt @@ -50,6 +50,9 @@ Each dmas request consists of 4 cells:          0x00000008: Use fixed channel:                  Use automatic channel selection when unset                  Use DMA request line number when set +        0x00000010: Set channel as high priority: +                Normal priority when unset +                High priority when set  Example: diff --git a/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt b/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt index 90fa7da525b..c6908e7c42c 100644 --- a/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt +++ b/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt @@ -5,6 +5,16 @@ Required properties:  - reg: Should contain DMA registers location and length. This shuld include    all of the per-channel registers.  - interrupts: Should contain all of the per-channel DMA interrupts. +- clocks: Must contain one entry, for the module clock. +  See ../clocks/clock-bindings.txt for details. +- resets : Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names : Must include the following entries: +  - dma +- #dma-cells : Must be <1>. This dictates the length of DMA specifiers in +  client nodes' dmas properties. The specifier represents the DMA request +  select value for the peripheral. For more details, consult the Tegra TRM's +  documentation of the APB DMA channel control register REQ_SEL field.  Examples: @@ -27,4 +37,8 @@ apbdma: dma@6000a000 {  		       0 149 0x04  		       0 150 0x04  		       0 151 0x04 >; +	clocks = <&tegra_car 34>; +	resets = <&tegra_car 34>; +	reset-names = "dma"; +	#dma-cells = <1>;  }; diff --git a/Documentation/devicetree/bindings/dma/ti-edma.txt b/Documentation/devicetree/bindings/dma/ti-edma.txt index 9fbbdb783a7..5ba525a1003 100644 --- a/Documentation/devicetree/bindings/dma/ti-edma.txt +++ b/Documentation/devicetree/bindings/dma/ti-edma.txt @@ -2,11 +2,8 @@ TI EDMA  Required properties:  - compatible : "ti,edma3" -- ti,edma-regions: Number of regions -- ti,edma-slots: Number of slots  - #dma-cells: Should be set to <1>                Clients should use a single channel number per DMA request. -- dma-channels: Specify total DMA channels per CC  - reg: Memory map for accessing module  - interrupt-parent: Interrupt controller the interrupt is routed through  - interrupts: Exactly 3 interrupts need to be specified in the order: @@ -17,6 +14,13 @@ Optional properties:  - ti,hwmods: Name of the hwmods associated to the EDMA  - ti,edma-xbar-event-map: Crossbar event to channel map +Deprecated properties: +Listed here in case one wants to boot an old kernel with new DTB. These +properties might need to be added to the new DTS files. +- ti,edma-regions: Number of regions +- ti,edma-slots: Number of slots +- dma-channels: Specify total DMA channels per CC +  Example:  edma: edma@49000000 { @@ -26,9 +30,6 @@ edma: edma@49000000 {  	compatible = "ti,edma3";  	ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";  	#dma-cells = <1>; -	dma-channels = <64>; -	ti,edma-regions = <4>; -	ti,edma-slots = <256>; -	ti,edma-xbar-event-map = <1 12 -				  2 13>; +	ti,edma-xbar-event-map = /bits/ 16 <1 12 +					    2 13>;  }; diff --git a/Documentation/devicetree/bindings/dma/xilinx/xilinx_vdma.txt b/Documentation/devicetree/bindings/dma/xilinx/xilinx_vdma.txt new file mode 100644 index 00000000000..1405ed071bb --- /dev/null +++ b/Documentation/devicetree/bindings/dma/xilinx/xilinx_vdma.txt @@ -0,0 +1,75 @@ +Xilinx AXI VDMA engine, it does transfers between memory and video devices. +It can be configured to have one channel or two channels. If configured +as two channels, one is to transmit to the video device and another is +to receive from the video device. + +Required properties: +- compatible: Should be "xlnx,axi-vdma-1.00.a" +- #dma-cells: Should be <1>, see "dmas" property below +- reg: Should contain VDMA registers location and length. +- xlnx,num-fstores: Should be the number of framebuffers as configured in h/w. +- dma-channel child node: Should have at least one channel and can have up to +	two channels per device. This node specifies the properties of each +	DMA channel (see child node properties below). + +Optional properties: +- xlnx,include-sg: Tells configured for Scatter-mode in +	the hardware. +- xlnx,flush-fsync: Tells which channel to Flush on Frame sync. +	It takes following values: +	{1}, flush both channels +	{2}, flush mm2s channel +	{3}, flush s2mm channel + +Required child node properties: +- compatible: It should be either "xlnx,axi-vdma-mm2s-channel" or +	"xlnx,axi-vdma-s2mm-channel". +- interrupts: Should contain per channel VDMA interrupts. +- xlnx,data-width: Should contain the stream data width, take values +	{32,64...1024}. + +Optional child node properties: +- xlnx,include-dre: Tells hardware is configured for Data +	Realignment Engine. +- xlnx,genlock-mode: Tells Genlock synchronization is +	enabled/disabled in hardware. + +Example: +++++++++ + +axi_vdma_0: axivdma@40030000 { +	compatible = "xlnx,axi-vdma-1.00.a"; +	#dma_cells = <1>; +	reg = < 0x40030000 0x10000 >; +	xlnx,num-fstores = <0x8>; +	xlnx,flush-fsync = <0x1>; +	dma-channel@40030000 { +		compatible = "xlnx,axi-vdma-mm2s-channel"; +		interrupts = < 0 54 4 >; +		xlnx,datawidth = <0x40>; +	} ; +	dma-channel@40030030 { +		compatible = "xlnx,axi-vdma-s2mm-channel"; +		interrupts = < 0 53 4 >; +		xlnx,datawidth = <0x40>; +	} ; +} ; + + +* DMA client + +Required properties: +- dmas: a list of <[Video DMA device phandle] [Channel ID]> pairs, +	where Channel ID is '0' for write/tx and '1' for read/rx +	channel. +- dma-names: a list of DMA channel names, one per "dmas" entry + +Example: +++++++++ + +vdmatest_0: vdmatest@0 { +	compatible ="xlnx,axi-vdma-test-1.00.a"; +	dmas = <&axi_vdma_0 0 +		&axi_vdma_0 1>; +	dma-names = "vdma0", "vdma1"; +} ; diff --git a/Documentation/devicetree/bindings/drm/bridge/ptn3460.txt b/Documentation/devicetree/bindings/drm/bridge/ptn3460.txt new file mode 100644 index 00000000000..52b93b2c674 --- /dev/null +++ b/Documentation/devicetree/bindings/drm/bridge/ptn3460.txt @@ -0,0 +1,27 @@ +ptn3460 bridge bindings + +Required properties: +	- compatible: "nxp,ptn3460" +	- reg: i2c address of the bridge +	- powerdown-gpio: OF device-tree gpio specification +	- reset-gpio: OF device-tree gpio specification +	- edid-emulation: The EDID emulation entry to use +		+-------+------------+------------------+ +		| Value | Resolution | Description      | +		|   0   |  1024x768  | NXP Generic      | +		|   1   |  1920x1080 | NXP Generic      | +		|   2   |  1920x1080 | NXP Generic      | +		|   3   |  1600x900  | Samsung LTM200KT | +		|   4   |  1920x1080 | Samsung LTM230HT | +		|   5   |  1366x768  | NXP Generic      | +		|   6   |  1600x900  | ChiMei M215HGE   | +		+-------+------------+------------------+ + +Example: +	lvds-bridge@20 { +		compatible = "nxp,ptn3460"; +		reg = <0x20>; +		powerdown-gpio = <&gpy2 5 1 0 0>; +		reset-gpio = <&gpx1 5 1 0 0>; +		edid-emulation = <5>; +	}; diff --git a/Documentation/devicetree/bindings/drm/i2c/tda998x.txt b/Documentation/devicetree/bindings/drm/i2c/tda998x.txt new file mode 100644 index 00000000000..d7df01c5bb3 --- /dev/null +++ b/Documentation/devicetree/bindings/drm/i2c/tda998x.txt @@ -0,0 +1,27 @@ +Device-Tree bindings for the NXP TDA998x HDMI transmitter + +Required properties; +  - compatible: must be "nxp,tda998x" + +Optional properties: +  - interrupts: interrupt number and trigger type +	default: polling + +  - pinctrl-0: pin control group to be used for +	screen plug/unplug interrupt. + +  - pinctrl-names: must contain a "default" entry. + +  - video-ports: 24 bits value which defines how the video controller +	output is wired to the TDA998x input - default: <0x230145> + +Example: + +	tda998x: hdmi-encoder { +		compatible = "nxp,tda998x"; +		reg = <0x70>; +		interrupt-parent = <&gpio0>; +		interrupts = <27 2>;		/* falling edge */ +		pinctrl-0 = <&pmx_camera>; +		pinctrl-names = "default"; +	}; diff --git a/Documentation/devicetree/bindings/extcon/extcon-palmas.txt b/Documentation/devicetree/bindings/extcon/extcon-palmas.txt index 7dab6a8f4a0..45414bbcd94 100644 --- a/Documentation/devicetree/bindings/extcon/extcon-palmas.txt +++ b/Documentation/devicetree/bindings/extcon/extcon-palmas.txt @@ -2,7 +2,11 @@ EXTCON FOR PALMAS/TWL CHIPS  PALMAS USB COMPARATOR  Required Properties: - - compatible : Should be "ti,palmas-usb" or "ti,twl6035-usb" + - compatible: should contain one of: +   * "ti,palmas-usb-vid". +   * "ti,twl6035-usb-vid". +   * "ti,palmas-usb" (DEPRECATED - use "ti,palmas-usb-vid"). +   * "ti,twl6035-usb" (DEPRECATED - use "ti,twl6035-usb-vid").  Optional Properties:   - ti,wakeup : To enable the wakeup comparator in probe diff --git a/Documentation/devicetree/bindings/gpio/8xxx_gpio.txt b/Documentation/devicetree/bindings/gpio/8xxx_gpio.txt index b0019eb5330..798cfc9d383 100644 --- a/Documentation/devicetree/bindings/gpio/8xxx_gpio.txt +++ b/Documentation/devicetree/bindings/gpio/8xxx_gpio.txt @@ -5,16 +5,42 @@ This is for the non-QE/CPM/GUTs GPIO controllers as found on  Every GPIO controller node must have #gpio-cells property defined,  this information will be used to translate gpio-specifiers. +See bindings/gpio/gpio.txt for details of how to specify GPIO +information for devices. + +The GPIO module usually is connected to the SoC's internal interrupt +controller, see bindings/interrupt-controller/interrupts.txt (the +interrupt client nodes section) for details how to specify this GPIO +module's interrupt. + +The GPIO module may serve as another interrupt controller (cascaded to +the SoC's internal interrupt controller).  See the interrupt controller +nodes section in bindings/interrupt-controller/interrupts.txt for +details.  Required properties: -- compatible : "fsl,<CHIP>-gpio" followed by "fsl,mpc8349-gpio" for -  83xx, "fsl,mpc8572-gpio" for 85xx and "fsl,mpc8610-gpio" for 86xx. -- #gpio-cells : Should be two. The first cell is the pin number and the -  second cell is used to specify optional parameters (currently unused). - - interrupts : Interrupt mapping for GPIO IRQ. - - interrupt-parent : Phandle for the interrupt controller that -   services interrupts for this device. -- gpio-controller : Marks the port as GPIO controller. +- compatible:		"fsl,<chip>-gpio" followed by "fsl,mpc8349-gpio" +			for 83xx, "fsl,mpc8572-gpio" for 85xx, or +			"fsl,mpc8610-gpio" for 86xx. +- #gpio-cells:		Should be two. The first cell is the pin number +			and the second cell is used to specify optional +			parameters (currently unused). +- interrupt-parent:	Phandle for the interrupt controller that +			services interrupts for this device. +- interrupts:		Interrupt mapping for GPIO IRQ. +- gpio-controller:	Marks the port as GPIO controller. + +Optional properties: +- interrupt-controller:	Empty boolean property which marks the GPIO +			module as an IRQ controller. +- #interrupt-cells:	Should be two.  Defines the number of integer +			cells required to specify an interrupt within +			this interrupt controller.  The first cell +			defines the pin number, the second cell +			defines additional flags (trigger type, +			trigger polarity).  Note that the available +			set of trigger conditions supported by the +			GPIO module depends on the actual SoC.  Example of gpio-controller nodes for a MPC8347 SoC: @@ -22,39 +48,27 @@ Example of gpio-controller nodes for a MPC8347 SoC:  		#gpio-cells = <2>;  		compatible = "fsl,mpc8347-gpio", "fsl,mpc8349-gpio";  		reg = <0xc00 0x100>; -		interrupts = <74 0x8>;  		interrupt-parent = <&ipic>; +		interrupts = <74 0x8>;  		gpio-controller; +		interrupt-controller; +		#interrupt-cells = <2>;  	};  	gpio2: gpio-controller@d00 {  		#gpio-cells = <2>;  		compatible = "fsl,mpc8347-gpio", "fsl,mpc8349-gpio";  		reg = <0xd00 0x100>; -		interrupts = <75 0x8>;  		interrupt-parent = <&ipic>; +		interrupts = <75 0x8>;  		gpio-controller;  	}; -See booting-without-of.txt for details of how to specify GPIO -information for devices. - -To use GPIO pins as interrupt sources for peripherals, specify the -GPIO controller as the interrupt parent and define GPIO number + -trigger mode using the interrupts property, which is defined like -this: - -interrupts = <number trigger>, where: - - number: GPIO pin (0..31) - - trigger: trigger mode: -	2 = trigger on falling edge -	3 = trigger on both edges - -Example of device using this is: +Example of a peripheral using the GPIO module as an IRQ controller:  	funkyfpga@0 {  		compatible = "funky-fpga";  		... -		interrupts = <4 3>;  		interrupt-parent = <&gpio1>; +		interrupts = <4 3>;  	}; diff --git a/Documentation/devicetree/bindings/gpio/abilis,tb10x-gpio.txt b/Documentation/devicetree/bindings/gpio/abilis,tb10x-gpio.txt new file mode 100644 index 00000000000..00611aceed3 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/abilis,tb10x-gpio.txt @@ -0,0 +1,36 @@ +* Abilis TB10x GPIO controller + +Required Properties: +- compatible: Should be "abilis,tb10x-gpio" +- reg: Address and length of the register set for the device +- gpio-controller: Marks the device node as a gpio controller. +- #gpio-cells: Should be <2>. The first cell is the pin number and the +  second cell is used to specify optional parameters: +   - bit 0 specifies polarity (0 for normal, 1 for inverted). +- abilis,ngpio: the number of GPIO pins this driver controls. + +Optional Properties: +- interrupt-controller: Marks the device node as an interrupt controller. +- #interrupt-cells: Should be <1>. Interrupts are triggered on both edges. +- interrupts: Defines the interrupt line connecting this GPIO controller to +  its parent interrupt controller. +- interrupt-parent: Defines the parent interrupt controller. + +GPIO ranges are specified as described in +Documentation/devicetree/bindings/gpio/gpio.txt + +Example: + +	gpioa: gpio@FF140000 { +		compatible = "abilis,tb10x-gpio"; +		interrupt-controller; +		#interrupt-cells = <1>; +		interrupt-parent = <&tb10x_ictl>; +		interrupts = <27 2>; +		reg = <0xFF140000 0x1000>; +		gpio-controller; +		#gpio-cells = <2>; +		abilis,ngpio = <3>; +		gpio-ranges = <&iomux 0 0 0>; +		gpio-ranges-group-names = "gpioa_pins"; +	}; diff --git a/Documentation/devicetree/bindings/gpio/cirrus,clps711x-mctrl-gpio.txt b/Documentation/devicetree/bindings/gpio/cirrus,clps711x-mctrl-gpio.txt new file mode 100644 index 00000000000..94ae9f82dcf --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/cirrus,clps711x-mctrl-gpio.txt @@ -0,0 +1,17 @@ +* ARM Cirrus Logic CLPS711X SYSFLG1 MCTRL GPIOs + +Required properties: +- compatible: Should contain "cirrus,clps711x-mctrl-gpio". +- gpio-controller: Marks the device node as a gpio controller. +- #gpio-cells: Should be two. The first cell is the pin number and +  the second cell is used to specify the gpio polarity: +    0 = Active high, +    1 = Active low. + +Example: +	sysgpio: sysgpio { +		compatible = "cirrus,ep7312-mctrl-gpio", +			     "cirrus,clps711x-mctrl-gpio"; +		gpio-controller; +		#gpio-cells = <2>; +	}; diff --git a/Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt b/Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt new file mode 100644 index 00000000000..4a63bc96b68 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-bcm-kona.txt @@ -0,0 +1,52 @@ +Broadcom Kona Family GPIO +========================= + +This GPIO driver is used in the following Broadcom SoCs: +  BCM11130, BCM11140, BCM11351, BCM28145, BCM28155 + +The Broadcom GPIO Controller IP can be configured prior to synthesis to +support up to 8 banks of 32 GPIOs where each bank has its own IRQ. The +GPIO controller only supports edge, not level, triggering of interrupts. + +Required properties +------------------- + +- compatible: "brcm,bcm11351-gpio", "brcm,kona-gpio" +- reg: Physical base address and length of the controller's registers. +- interrupts: The interrupt outputs from the controller. There is one GPIO +  interrupt per GPIO bank. The number of interrupts listed depends on the +  number of GPIO banks on the SoC. The interrupts must be ordered by bank, +  starting with bank 0. There is always a 1:1 mapping between banks and +  IRQs. +- #gpio-cells: Should be <2>. The first cell is the pin number, the second +  cell is used to specify optional parameters: +  - bit 0 specifies polarity (0 for normal, 1 for inverted) +  See also "gpio-specifier" in .../devicetree/bindings/gpio/gpio.txt. +- #interrupt-cells: Should be <2>. The first cell is the GPIO number. The +  second cell is used to specify flags. The following subset of flags is +  supported: +  - trigger type (bits[1:0]): +      1 = low-to-high edge triggered. +      2 = high-to-low edge triggered. +      3 = low-to-high or high-to-low edge triggered +      Valid values are 1, 2, 3 +  See also .../devicetree/bindings/interrupt-controller/interrupts.txt. +- gpio-controller: Marks the device node as a GPIO controller. +- interrupt-controller: Marks the device node as an interrupt controller. + +Example: +	gpio: gpio@35003000 { +		compatible = "brcm,bcm11351-gpio", "brcm,kona-gpio"; +		reg = <0x35003000 0x800>; +		interrupts = +		       <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH +			GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH +			GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH +			GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH +			GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH +			GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; +		#gpio-cells = <2>; +		#interrupt-cells = <2>; +		gpio-controller; +		interrupt-controller; +	}; diff --git a/Documentation/devicetree/bindings/gpio/gpio-davinci.txt b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt new file mode 100644 index 00000000000..5079ba7d656 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-davinci.txt @@ -0,0 +1,62 @@ +Davinci/Keystone GPIO controller bindings + +Required Properties: +- compatible: should be "ti,dm6441-gpio", "ti,keystone-gpio" + +- reg: Physical base address of the controller and the size of memory mapped +       registers. + +- gpio-controller : Marks the device node as a gpio controller. + +- #gpio-cells : Should be two. +  - first cell is the pin number +  - second cell is used to specify optional parameters (unused) + +- interrupt-parent: phandle of the parent interrupt controller. + +- interrupts: Array of GPIO interrupt number. Only banked or unbanked IRQs are +	      supported at a time. + +- ti,ngpio: The number of GPIO pins supported. + +- ti,davinci-gpio-unbanked: The number of GPIOs that have an individual interrupt +		             line to processor. + +The GPIO controller also acts as an interrupt controller. It uses the default +two cells specifier as described in Documentation/devicetree/bindings/ +interrupt-controller/interrupts.txt. + +Example: + +gpio: gpio@1e26000 { +	compatible = "ti,dm6441-gpio"; +	gpio-controller; +	#gpio-cells = <2>; +	reg = <0x226000 0x1000>; +	interrupt-parent = <&intc>; +	interrupts = <42 IRQ_TYPE_EDGE_BOTH 43 IRQ_TYPE_EDGE_BOTH +		44 IRQ_TYPE_EDGE_BOTH 45 IRQ_TYPE_EDGE_BOTH +		46 IRQ_TYPE_EDGE_BOTH 47 IRQ_TYPE_EDGE_BOTH +		48 IRQ_TYPE_EDGE_BOTH 49 IRQ_TYPE_EDGE_BOTH +		50 IRQ_TYPE_EDGE_BOTH>; +	ti,ngpio = <144>; +	ti,davinci-gpio-unbanked = <0>; +	interrupt-controller; +	#interrupt-cells = <2>; +}; + +leds { +	compatible = "gpio-leds"; + +	led1 { +		label = "davinci:green:usr1"; +		gpios = <&gpio 10 GPIO_ACTIVE_HIGH>; +		... +	}; + +	led2 { +		label = "davinci:red:debug1"; +		gpios = <&gpio 11 GPIO_ACTIVE_HIGH>; +		... +	}; +}; diff --git a/Documentation/devicetree/bindings/gpio/gpio-lp3943.txt b/Documentation/devicetree/bindings/gpio/gpio-lp3943.txt new file mode 100644 index 00000000000..80fcb7d70e1 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-lp3943.txt @@ -0,0 +1,37 @@ +TI/National Semiconductor LP3943 GPIO controller + +Required properties: +  - compatible: "ti,lp3943-gpio" +  - gpio-controller: Marks the device node as a GPIO controller. +  - #gpio-cells: Should be 2. See gpio.txt in this directory for a +                 description of the cells format. + +Example: +Simple LED controls with LP3943 GPIO controller + +&i2c4 { +	lp3943@60 { +		compatible = "ti,lp3943"; +		reg = <0x60>; + +		gpioex: gpio { +			compatible = "ti,lp3943-gpio"; +			gpio-controller; +			#gpio-cells = <2>; +		}; +	}; +}; + +leds { +	compatible = "gpio-leds"; +	indicator1 { +		label = "indi1"; +		gpios = <&gpioex 9 GPIO_ACTIVE_LOW>; +	}; + +	indicator2 { +		label = "indi2"; +		gpios = <&gpioex 10 GPIO_ACTIVE_LOW>; +		default-state = "off"; +	}; +}; diff --git a/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt b/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt index daa30174bcc..c306a2d0f2b 100644 --- a/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt +++ b/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt @@ -38,12 +38,38 @@ Required device specific properties (only for SPI chips):      removed.  - spi-max-frequency = The maximum frequency this chip is able to handle -Example I2C: +Optional properties: +- #interrupt-cells : Should be two. +  - first cell is the pin number +  - second cell is used to specify flags. +- interrupt-controller: Marks the device node as a interrupt controller. +NOTE: The interrupt functionality is only supported for i2c versions of the +chips. The spi chips can also do the interrupts, but this is not supported by +the linux driver yet. + +Optional device specific properties: +- microchip,irq-mirror: Sets the mirror flag in the IOCON register. Devices +        with two interrupt outputs (these are the devices ending with 17 and +        those that have 16 IOs) have two IO banks: IO 0-7 form bank 1 and +        IO 8-15 are bank 2. These chips have two different interrupt outputs: +        One for bank 1 and another for bank 2. If irq-mirror is set, both +        interrupts are generated regardless of the bank that an input change +        occurred on. If it is not set, the interrupt are only generated for the +        bank they belong to. +        On devices with only one interrupt output this property is useless. + +Example I2C (with interrupt):  gpiom1: gpio@20 {          compatible = "microchip,mcp23017";          gpio-controller;          #gpio-cells = <2>;          reg = <0x20>; + +        interrupt-parent = <&gpio1>; +        interrupts = <17 IRQ_TYPE_LEVEL_LOW>; +        interrupt-controller; +        #interrupt-cells=<2>; +        microchip,irq-mirror;  };  Example SPI: diff --git a/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt b/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt new file mode 100644 index 00000000000..d63194a2c84 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt @@ -0,0 +1,71 @@ +* PCF857x-compatible I/O expanders + +The PCF857x-compatible chips have "quasi-bidirectional" I/O lines that can be +driven high by a pull-up current source or driven low to ground. This combines +the direction and output level into a single bit per line, which can't be read +back. We can't actually know at initialization time whether a line is configured +(a) as output and driving the signal low/high, or (b) as input and reporting a +low/high value, without knowing the last value written since the chip came out +of reset (if any). The only reliable solution for setting up line direction is +thus to do it explicitly. + +Required Properties: + +  - compatible: should be one of the following. +    - "maxim,max7328": For the Maxim MAX7378 +    - "maxim,max7329": For the Maxim MAX7329 +    - "nxp,pca8574": For the NXP PCA8574 +    - "nxp,pca8575": For the NXP PCA8575 +    - "nxp,pca9670": For the NXP PCA9670 +    - "nxp,pca9671": For the NXP PCA9671 +    - "nxp,pca9672": For the NXP PCA9672 +    - "nxp,pca9673": For the NXP PCA9673 +    - "nxp,pca9674": For the NXP PCA9674 +    - "nxp,pca9675": For the NXP PCA9675 +    - "nxp,pcf8574": For the NXP PCF8574 +    - "nxp,pcf8574a": For the NXP PCF8574A +    - "nxp,pcf8575": For the NXP PCF8575 +    - "ti,tca9554": For the TI TCA9554 + +  - reg: I2C slave address. + +  - gpio-controller: Marks the device node as a gpio controller. +  - #gpio-cells: Should be 2. The first cell is the GPIO number and the second +    cell specifies GPIO flags, as defined in <dt-bindings/gpio/gpio.h>. Only the +    GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported. + +Optional Properties: + +  - lines-initial-states: Bitmask that specifies the initial state of each +  line. When a bit is set to zero, the corresponding line will be initialized to +  the input (pulled-up) state. When the  bit is set to one, the line will be +  initialized the the low-level output state. If the property is not specified +  all lines will be initialized to the input state. + +  The I/O expander can detect input state changes, and thus optionally act as +  an interrupt controller. When the expander interrupt line is connected all the +  following properties must be set. For more information please see the +  interrupt controller device tree bindings documentation available at +  Documentation/devicetree/bindings/interrupt-controller/interrupts.txt. + +  - interrupt-controller: Identifies the node as an interrupt controller. +  - #interrupt-cells: Number of cells to encode an interrupt source, shall be 2. +  - interrupt-parent: phandle of the parent interrupt controller. +  - interrupts: Interrupt specifier for the controllers interrupt. + + +Please refer to gpio.txt in this directory for details of the common GPIO +bindings used by client devices. + +Example: PCF8575 I/O expander node + +	pcf8575: gpio@20 { +		compatible = "nxp,pcf8575"; +		reg = <0x20>; +		interrupt-parent = <&irqpin2>; +		interrupts = <3 0>; +		gpio-controller; +		#gpio-cells = <2>; +		interrupt-controller; +		#interrupt-cells = <2>; +	}; diff --git a/Documentation/devicetree/bindings/gpio/gpio-zevio.txt b/Documentation/devicetree/bindings/gpio/gpio-zevio.txt new file mode 100644 index 00000000000..a37bd9ae273 --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/gpio-zevio.txt @@ -0,0 +1,16 @@ +Zevio GPIO controller + +Required properties: +- compatible: Should be "lsi,zevio-gpio" +- reg: Address and length of the register set for the device +- #gpio-cells: Should be two. The first cell is the pin number and the +  second cell is used to specify optional parameters (currently unused). +- gpio-controller: Marks the device node as a GPIO controller. + +Example: +	gpio: gpio@90000000 { +		compatible = "lsi,zevio-gpio"; +		reg = <0x90000000 0x1000>; +		gpio-controller; +		#gpio-cells = <2>; +	}; diff --git a/Documentation/devicetree/bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt index 6cec6ff20d2..3fb8f53071b 100644 --- a/Documentation/devicetree/bindings/gpio/gpio.txt +++ b/Documentation/devicetree/bindings/gpio/gpio.txt @@ -13,11 +13,11 @@ properties, each containing a 'gpio-list':  	gpio-specifier : Array of #gpio-cells specifying specific gpio  			 (controller specific) -GPIO properties should be named "[<name>-]gpios".  Exact +GPIO properties should be named "[<name>-]gpios". The exact  meaning of each gpios property must be documented in the device tree  binding for each device. -For example, the following could be used to describe gpios pins to use +For example, the following could be used to describe GPIO pins used  as chip select lines; with chip selects 0, 1 and 3 populated, and chip  select 2 left empty: @@ -44,35 +44,79 @@ whether pin is open-drain and whether pin is logically inverted.  Exact meaning of each specifier cell is controller specific, and must  be documented in the device tree binding for the device. -Example of the node using GPIOs: +Example of a node using GPIOs:  	node {  		gpios = <&qe_pio_e 18 0>;  	};  In this example gpio-specifier is "18 0" and encodes GPIO pin number, -and empty GPIO flags as accepted by the "qe_pio_e" gpio-controller. +and GPIO flags as accepted by the "qe_pio_e" gpio-controller. + +1.1) GPIO specifier best practices +---------------------------------- + +A gpio-specifier should contain a flag indicating the GPIO polarity; active- +high or active-low. If it does, the follow best practices should be followed: + +The gpio-specifier's polarity flag should represent the physical level at the +GPIO controller that achieves (or represents, for inputs) a logically asserted +value at the device. The exact definition of logically asserted should be +defined by the binding for the device. If the board inverts the signal between +the GPIO controller and the device, then the gpio-specifier will represent the +opposite physical level than the signal at the device's pin. + +When the device's signal polarity is configurable, the binding for the +device must either: + +a) Define a single static polarity for the signal, with the expectation that +any software using that binding would statically program the device to use +that signal polarity. + +The static choice of polarity may be either: + +a1) (Preferred) Dictated by a binding-specific DT property. + +or: + +a2) Defined statically by the DT binding itself. + +In particular, the polarity cannot be derived from the gpio-specifier, since +that would prevent the DT from separately representing the two orthogonal +concepts of configurable signal polarity in the device, and possible board- +level signal inversion. + +or: + +b) Pick a single option for device signal polarity, and document this choice +in the binding. The gpio-specifier should represent the polarity of the signal +(at the GPIO controller) assuming that the device is configured for this +particular signal polarity choice. If software chooses to program the device +to generate or receive a signal of the opposite polarity, software will be +responsible for correctly interpreting (inverting) the GPIO signal at the GPIO +controller.  2) gpio-controller nodes  ------------------------ -Every GPIO controller node must both an empty "gpio-controller" -property, and have #gpio-cells contain the size of the gpio-specifier. +Every GPIO controller node must contain both an empty "gpio-controller" +property, and a #gpio-cells integer property, which indicates the number of +cells in a gpio-specifier.  Example of two SOC GPIO banks defined as gpio-controller nodes:  	qe_pio_a: gpio-controller@1400 { -		#gpio-cells = <2>;  		compatible = "fsl,qe-pario-bank-a", "fsl,qe-pario-bank";  		reg = <0x1400 0x18>;  		gpio-controller; +		#gpio-cells = <2>;  	};  	qe_pio_e: gpio-controller@1460 { -		#gpio-cells = <2>;  		compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank";  		reg = <0x1460 0x18>;  		gpio-controller; +		#gpio-cells = <2>;  	};  2.1) gpio- and pin-controller interaction @@ -87,8 +131,10 @@ controllers. The gpio-ranges property described below represents this, and  contains information structures as follows:  	gpio-range-list ::= <single-gpio-range> [gpio-range-list] -	single-gpio-range ::= +	single-gpio-range ::= <numeric-gpio-range> | <named-gpio-range> +	numeric-gpio-range ::=  			<pinctrl-phandle> <gpio-base> <pinctrl-base> <count> +	named-gpio-range ::= <pinctrl-phandle> <gpio-base> '<0 0>'  	gpio-phandle : phandle to pin controller node.  	gpio-base : Base GPIO ID in the GPIO controller  	pinctrl-base : Base pinctrl pin ID in the pin controller @@ -97,6 +143,19 @@ contains information structures as follows:  The "pin controller node" mentioned above must conform to the bindings  described in ../pinctrl/pinctrl-bindings.txt. +In case named gpio ranges are used (ranges with both <pinctrl-base> and +<count> set to 0), the property gpio-ranges-group-names contains one string +for every single-gpio-range in gpio-ranges: +	gpiorange-names-list ::= <gpiorange-name> [gpiorange-names-list] +	gpiorange-name : Name of the pingroup associated to the GPIO range in +			the respective pin controller. + +Elements of gpiorange-names-list corresponding to numeric ranges contain +the empty string. Elements of gpiorange-names-list corresponding to named +ranges contain the name of a pin group defined in the respective pin +controller. The number of pins/GPIOs in the range is the number of pins in +that pin group. +  Previous versions of this binding required all pin controller nodes that  were referenced by any gpio-ranges property to contain a property named  #gpio-range-cells with value <3>. This requirement is now deprecated. @@ -104,7 +163,7 @@ However, that property may still exist in older device trees for  compatibility reasons, and would still be required even in new device  trees that need to be compatible with older software. -Example: +Example 1:  	qe_pio_e: gpio-controller@1460 {  		#gpio-cells = <2>; @@ -117,3 +176,24 @@ Example:  Here, a single GPIO controller has GPIOs 0..9 routed to pin controller  pinctrl1's pins 20..29, and GPIOs 10..19 routed to pin controller pinctrl2's  pins 50..59. + +Example 2: + +	gpio_pio_i: gpio-controller@14B0 { +		#gpio-cells = <2>; +		compatible = "fsl,qe-pario-bank-e", "fsl,qe-pario-bank"; +		reg = <0x1480 0x18>; +		gpio-controller; +		gpio-ranges =			<&pinctrl1 0 20 10>, +						<&pinctrl2 10 0 0>, +						<&pinctrl1 15 0 10>, +						<&pinctrl2 25 0 0>; +		gpio-ranges-group-names =	"", +						"foo", +						"", +						"bar"; +	}; + +Here, three GPIO ranges are defined wrt. two pin controllers. pinctrl1 GPIO +ranges are defined using pin numbers whereas the GPIO ranges wrt. pinctrl2 +are named "foo" and "bar". diff --git a/Documentation/devicetree/bindings/gpio/moxa,moxart-gpio.txt b/Documentation/devicetree/bindings/gpio/moxa,moxart-gpio.txt new file mode 100644 index 00000000000..f8e8f185a3d --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/moxa,moxart-gpio.txt @@ -0,0 +1,19 @@ +MOXA ART GPIO Controller + +Required properties: + +- #gpio-cells : Should be 2, The first cell is the pin number, +		the second cell is used to specify polarity: +			0 = active high +			1 = active low +- compatible : Must be "moxa,moxart-gpio" +- reg : Should contain registers location and length + +Example: + +	gpio: gpio@98700000 { +		gpio-controller; +		#gpio-cells = <2>; +		compatible = "moxa,moxart-gpio"; +		reg =	<0x98700000 0xC>; +	}; diff --git a/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt b/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt index 8655df9440d..941a26aa432 100644 --- a/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt +++ b/Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt @@ -2,10 +2,11 @@  Required Properties: -  - compatible: should be one of the following. +  - compatible: should contain one of the following.      - "renesas,gpio-r8a7778": for R8A7778 (R-Mobile M1) compatible GPIO controller.      - "renesas,gpio-r8a7779": for R8A7779 (R-Car H1) compatible GPIO controller.      - "renesas,gpio-r8a7790": for R8A7790 (R-Car H2) compatible GPIO controller. +    - "renesas,gpio-r8a7791": for R8A7791 (R-Car M2) compatible GPIO controller.      - "renesas,gpio-rcar": for generic R-Car GPIO controller.    - reg: Base address and length of each memory resource used by the GPIO @@ -20,6 +21,12 @@ Required Properties:      GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported.    - gpio-ranges: Range of pins managed by the GPIO controller. +Optional properties: + +  - clocks: Must contain a reference to the functional clock.  The property is +    mandatory if the hardware implements a controllable functional clock for +    the GPIO instance. +  Please refer to gpio.txt in this directory for details of gpio-ranges property  and the common GPIO bindings used by client devices. diff --git a/Documentation/devicetree/bindings/gpio/snps-dwapb-gpio.txt b/Documentation/devicetree/bindings/gpio/snps-dwapb-gpio.txt new file mode 100644 index 00000000000..dd5d2c0394b --- /dev/null +++ b/Documentation/devicetree/bindings/gpio/snps-dwapb-gpio.txt @@ -0,0 +1,60 @@ +* Synopsys DesignWare APB GPIO controller + +Required properties: +- compatible : Should contain "snps,dw-apb-gpio" +- reg : Address and length of the register set for the device. +- #address-cells : should be 1 (for addressing port subnodes). +- #size-cells : should be 0 (port subnodes). + +The GPIO controller has a configurable number of ports, each of which are +represented as child nodes with the following properties: + +Required properties: +- compatible : "snps,dw-apb-gpio-port" +- gpio-controller : Marks the device node as a gpio controller. +- #gpio-cells : Should be two.  The first cell is the pin number and +  the second cell is used to specify the gpio polarity: +      0 = active high +      1 = active low +- reg : The integer port index of the port, a single cell. + +Optional properties: +- interrupt-controller : The first port may be configured to be an interrupt +controller. +- #interrupt-cells : Specifies the number of cells needed to encode an +  interrupt.  Shall be set to 2.  The first cell defines the interrupt number, +  the second encodes the triger flags encoded as described in +  Documentation/devicetree/bindings/interrupts.txt +- interrupt-parent : The parent interrupt controller. +- interrupts : The interrupt to the parent controller raised when GPIOs +  generate the interrupts. +- snps,nr-gpios : The number of pins in the port, a single cell. + +Example: + +gpio: gpio@20000 { +	compatible = "snps,dw-apb-gpio"; +	reg = <0x20000 0x1000>; +	#address-cells = <1>; +	#size-cells = <0>; + +	porta: gpio-controller@0 { +		compatible = "snps,dw-apb-gpio-port"; +		gpio-controller; +		#gpio-cells = <2>; +		snps,nr-gpios = <8>; +		reg = <0>; +		interrupt-controller; +		#interrupt-cells = <2>; +		interrupt-parent = <&vic1>; +		interrupts = <0>; +	}; + +	portb: gpio-controller@1 { +		compatible = "snps,dw-apb-gpio-port"; +		gpio-controller; +		#gpio-cells = <2>; +		snps,nr-gpios = <8>; +		reg = <1>; +	}; +}; diff --git a/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt b/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt index b4fa934ae3a..b48f4ef31d9 100644 --- a/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt +++ b/Documentation/devicetree/bindings/gpu/nvidia,tegra20-host1x.txt @@ -9,6 +9,12 @@ Required properties:  - #size-cells: The number of cells used to represent the size of an address    range in the host1x address space. Should be 1.  - ranges: The mapping of the host1x address space to the CPU address space. +- clocks: Must contain one entry, for the module clock. +  See ../clocks/clock-bindings.txt for details. +- resets: Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names: Must include the following entries: +  - host1x  The host1x top-level node defines a number of children, each representing one  of the following host1x client modules: @@ -19,6 +25,12 @@ of the following host1x client modules:    - compatible: "nvidia,tegra<chip>-mpe"    - reg: Physical base address and length of the controller's registers.    - interrupts: The interrupt outputs from the controller. +  - clocks: Must contain one entry, for the module clock. +    See ../clocks/clock-bindings.txt for details. +  - resets: Must contain an entry for each entry in reset-names. +    See ../reset/reset.txt for details. +  - reset-names: Must include the following entries: +    - mpe  - vi: video input @@ -26,6 +38,12 @@ of the following host1x client modules:    - compatible: "nvidia,tegra<chip>-vi"    - reg: Physical base address and length of the controller's registers.    - interrupts: The interrupt outputs from the controller. +  - clocks: Must contain one entry, for the module clock. +    See ../clocks/clock-bindings.txt for details. +  - resets: Must contain an entry for each entry in reset-names. +    See ../reset/reset.txt for details. +  - reset-names: Must include the following entries: +    - vi  - epp: encoder pre-processor @@ -33,6 +51,12 @@ of the following host1x client modules:    - compatible: "nvidia,tegra<chip>-epp"    - reg: Physical base address and length of the controller's registers.    - interrupts: The interrupt outputs from the controller. +  - clocks: Must contain one entry, for the module clock. +    See ../clocks/clock-bindings.txt for details. +  - resets: Must contain an entry for each entry in reset-names. +    See ../reset/reset.txt for details. +  - reset-names: Must include the following entries: +    - epp  - isp: image signal processor @@ -40,6 +64,12 @@ of the following host1x client modules:    - compatible: "nvidia,tegra<chip>-isp"    - reg: Physical base address and length of the controller's registers.    - interrupts: The interrupt outputs from the controller. +  - clocks: Must contain one entry, for the module clock. +    See ../clocks/clock-bindings.txt for details. +  - resets: Must contain an entry for each entry in reset-names. +    See ../reset/reset.txt for details. +  - reset-names: Must include the following entries: +    - isp  - gr2d: 2D graphics engine @@ -47,12 +77,30 @@ of the following host1x client modules:    - compatible: "nvidia,tegra<chip>-gr2d"    - reg: Physical base address and length of the controller's registers.    - interrupts: The interrupt outputs from the controller. +  - clocks: Must contain one entry, for the module clock. +    See ../clocks/clock-bindings.txt for details. +  - resets: Must contain an entry for each entry in reset-names. +    See ../reset/reset.txt for details. +  - reset-names: Must include the following entries: +    - 2d  - gr3d: 3D graphics engine    Required properties:    - compatible: "nvidia,tegra<chip>-gr3d"    - reg: Physical base address and length of the controller's registers. +  - 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: +    (This property may be omitted if the only clock in the list is "3d") +    - 3d +      This MUST be the first entry. +    - 3d2 (Only required on SoCs with two 3D clocks) +  - resets: Must contain an entry for each entry in reset-names. +    See ../reset/reset.txt for details. +  - reset-names: Must include the following entries: +    - 3d +    - 3d2 (Only required on SoCs with two 3D clocks)  - dc: display controller @@ -60,6 +108,19 @@ of the following host1x client modules:    - compatible: "nvidia,tegra<chip>-dc"    - reg: Physical base address and length of the controller's registers.    - interrupts: The interrupt outputs from the controller. +  - 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: +    - dc +      This MUST be the first entry. +    - parent +  - resets: Must contain an entry for each entry in reset-names. +    See ../reset/reset.txt for details. +  - reset-names: Must include the following entries: +    - dc +  - nvidia,head: The number of the display controller head. This is used to +    setup the various types of output to receive video data from the given +    head.    Each display controller node has a child node, named "rgb", that represents    the RGB output associated with the controller. It can take the following @@ -67,6 +128,7 @@ of the following host1x client modules:    - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing    - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection    - nvidia,edid: supplies a binary EDID blob +  - nvidia,panel: phandle of a display panel  - hdmi: High Definition Multimedia Interface @@ -74,13 +136,25 @@ of the following host1x client modules:    - compatible: "nvidia,tegra<chip>-hdmi"    - reg: Physical base address and length of the controller's registers.    - interrupts: The interrupt outputs from the controller. +  - hdmi-supply: supply for the +5V HDMI connector pin    - vdd-supply: regulator for supply voltage    - pll-supply: regulator for PLL +  - 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: +    - hdmi +      This MUST be the first entry. +    - parent +  - resets: Must contain an entry for each entry in reset-names. +    See ../reset/reset.txt for details. +  - reset-names: Must include the following entries: +    - hdmi    Optional properties:    - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing    - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection    - nvidia,edid: supplies a binary EDID blob +  - nvidia,panel: phandle of a display panel  - tvo: TV encoder output @@ -88,12 +162,77 @@ of the following host1x client modules:    - compatible: "nvidia,tegra<chip>-tvo"    - reg: Physical base address and length of the controller's registers.    - interrupts: The interrupt outputs from the controller. +  - clocks: Must contain one entry, for the module clock. +    See ../clocks/clock-bindings.txt for details.  - dsi: display serial interface    Required properties:    - compatible: "nvidia,tegra<chip>-dsi"    - reg: Physical base address and length of the controller's registers. +  - 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: +    - dsi +      This MUST be the first entry. +    - lp +    - parent +  - resets: Must contain an entry for each entry in reset-names. +    See ../reset/reset.txt for details. +  - reset-names: Must include the following entries: +    - dsi +  - avdd-dsi-supply: phandle of a supply that powers the DSI controller +  - nvidia,mipi-calibrate: Should contain a phandle and a specifier specifying +    which pads are used by this DSI output and need to be calibrated. See also +    ../mipi/nvidia,tegra114-mipi.txt. + +  Optional properties: +  - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing +  - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection +  - nvidia,edid: supplies a binary EDID blob +  - nvidia,panel: phandle of a display panel + +- sor: serial output resource + +  Required properties: +  - compatible: "nvidia,tegra124-sor" +  - reg: Physical base address and length of the controller's registers. +  - interrupts: The interrupt outputs from the controller. +  - 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: +    - sor: clock input for the SOR hardware +    - parent: input for the pixel clock +    - dp: reference clock for the SOR clock +    - safe: safe reference for the SOR clock during power up +  - resets: Must contain an entry for each entry in reset-names. +    See ../reset/reset.txt for details. +  - reset-names: Must include the following entries: +    - sor + +  Optional properties: +  - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing +  - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection +  - nvidia,edid: supplies a binary EDID blob +  - nvidia,panel: phandle of a display panel + +  Optional properties when driving an eDP output: +  - nvidia,dpaux: phandle to a DispayPort AUX interface + +- dpaux: DisplayPort AUX interface +  - compatible: "nvidia,tegra124-dpaux" +  - reg: Physical base address and length of the controller's registers. +  - interrupts: The interrupt outputs from the controller. +  - 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: +    - dpaux: clock input for the DPAUX hardware +    - parent: reference clock +  - resets: Must contain an entry for each entry in reset-names. +    See ../reset/reset.txt for details. +  - reset-names: Must include the following entries: +    - dpaux +  - vdd-supply: phandle of a supply that powers the DisplayPort link  Example: @@ -105,6 +244,9 @@ Example:  		reg = <0x50000000 0x00024000>;  		interrupts = <0 65 0x04   /* mpcore syncpt */  			      0 67 0x04>; /* mpcore general */ +		clocks = <&tegra_car TEGRA20_CLK_HOST1X>; +		resets = <&tegra_car 28>; +		reset-names = "host1x";  		#address-cells = <1>;  		#size-cells = <1>; @@ -115,41 +257,64 @@ Example:  			compatible = "nvidia,tegra20-mpe";  			reg = <0x54040000 0x00040000>;  			interrupts = <0 68 0x04>; +			clocks = <&tegra_car TEGRA20_CLK_MPE>; +			resets = <&tegra_car 60>; +			reset-names = "mpe";  		};  		vi {  			compatible = "nvidia,tegra20-vi";  			reg = <0x54080000 0x00040000>;  			interrupts = <0 69 0x04>; +			clocks = <&tegra_car TEGRA20_CLK_VI>; +			resets = <&tegra_car 100>; +			reset-names = "vi";  		};  		epp {  			compatible = "nvidia,tegra20-epp";  			reg = <0x540c0000 0x00040000>;  			interrupts = <0 70 0x04>; +			clocks = <&tegra_car TEGRA20_CLK_EPP>; +			resets = <&tegra_car 19>; +			reset-names = "epp";  		};  		isp {  			compatible = "nvidia,tegra20-isp";  			reg = <0x54100000 0x00040000>;  			interrupts = <0 71 0x04>; +			clocks = <&tegra_car TEGRA20_CLK_ISP>; +			resets = <&tegra_car 23>; +			reset-names = "isp";  		};  		gr2d {  			compatible = "nvidia,tegra20-gr2d";  			reg = <0x54140000 0x00040000>;  			interrupts = <0 72 0x04>; +			clocks = <&tegra_car TEGRA20_CLK_GR2D>; +			resets = <&tegra_car 21>; +			reset-names = "2d";  		};  		gr3d {  			compatible = "nvidia,tegra20-gr3d";  			reg = <0x54180000 0x00040000>; +			clocks = <&tegra_car TEGRA20_CLK_GR3D>; +			resets = <&tegra_car 24>; +			reset-names = "3d";  		};  		dc@54200000 {  			compatible = "nvidia,tegra20-dc";  			reg = <0x54200000 0x00040000>;  			interrupts = <0 73 0x04>; +			clocks = <&tegra_car TEGRA20_CLK_DISP1>, +				 <&tegra_car TEGRA20_CLK_PLL_P>; +			clock-names = "dc", "parent"; +			resets = <&tegra_car 27>; +			reset-names = "dc";  			rgb {  				status = "disabled"; @@ -160,6 +325,11 @@ Example:  			compatible = "nvidia,tegra20-dc";  			reg = <0x54240000 0x00040000>;  			interrupts = <0 74 0x04>; +			clocks = <&tegra_car TEGRA20_CLK_DISP2>, +				 <&tegra_car TEGRA20_CLK_PLL_P>; +			clock-names = "dc", "parent"; +			resets = <&tegra_car 26>; +			reset-names = "dc";  			rgb {  				status = "disabled"; @@ -170,6 +340,11 @@ Example:  			compatible = "nvidia,tegra20-hdmi";  			reg = <0x54280000 0x00040000>;  			interrupts = <0 75 0x04>; +			clocks = <&tegra_car TEGRA20_CLK_HDMI>, +				 <&tegra_car TEGRA20_CLK_PLL_D_OUT0>; +			clock-names = "hdmi", "parent"; +			resets = <&tegra_car 51>; +			reset-names = "hdmi";  			status = "disabled";  		}; @@ -177,12 +352,18 @@ Example:  			compatible = "nvidia,tegra20-tvo";  			reg = <0x542c0000 0x00040000>;  			interrupts = <0 76 0x04>; +			clocks = <&tegra_car TEGRA20_CLK_TVO>;  			status = "disabled";  		};  		dsi {  			compatible = "nvidia,tegra20-dsi";  			reg = <0x54300000 0x00040000>; +			clocks = <&tegra_car TEGRA20_CLK_DSI>, +				 <&tegra_car TEGRA20_CLK_PLL_D_OUT0>; +			clock-names = "dsi", "parent"; +			resets = <&tegra_car 48>; +			reset-names = "dsi";  			status = "disabled";  		};  	}; diff --git a/Documentation/devicetree/bindings/graph.txt b/Documentation/devicetree/bindings/graph.txt new file mode 100644 index 00000000000..1a69c078adf --- /dev/null +++ b/Documentation/devicetree/bindings/graph.txt @@ -0,0 +1,129 @@ +Common bindings for device graphs + +General concept +--------------- + +The hierarchical organisation of the device tree is well suited to describe +control flow to devices, but there can be more complex connections between +devices that work together to form a logical compound device, following an +arbitrarily complex graph. +There already is a simple directed graph between devices tree nodes using +phandle properties pointing to other nodes to describe connections that +can not be inferred from device tree parent-child relationships. The device +tree graph bindings described herein abstract more complex devices that can +have multiple specifiable ports, each of which can be linked to one or more +ports of other devices. + +These common bindings do not contain any information about the direction or +type of the connections, they just map their existence. Specific properties +may be described by specialized bindings depending on the type of connection. + +To see how this binding applies to video pipelines, for example, see +Documentation/device-tree/bindings/media/video-interfaces.txt. +Here the ports describe data interfaces, and the links between them are +the connecting data buses. A single port with multiple connections can +correspond to multiple devices being connected to the same physical bus. + +Organisation of ports and endpoints +----------------------------------- + +Ports are described by child 'port' nodes contained in the device node. +Each port node contains an 'endpoint' subnode for each remote device port +connected to this port. If a single port is connected to more than one +remote device, an 'endpoint' child node must be provided for each link. +If more than one port is present in a device node or there is more than one +endpoint at a port, or a port node needs to be associated with a selected +hardware interface, a common scheme using '#address-cells', '#size-cells' +and 'reg' properties is used number the nodes. + +device { +        ... +        #address-cells = <1>; +        #size-cells = <0>; + +        port@0 { +	        #address-cells = <1>; +	        #size-cells = <0>; +		reg = <0>; + +                endpoint@0 { +			reg = <0>; +			... +		}; +                endpoint@1 { +			reg = <1>; +			... +		}; +        }; + +        port@1 { +		reg = <1>; + +		endpoint { ... }; +	}; +}; + +All 'port' nodes can be grouped under an optional 'ports' node, which +allows to specify #address-cells, #size-cells properties for the 'port' +nodes independently from any other child device nodes a device might +have. + +device { +        ... +        ports { +                #address-cells = <1>; +                #size-cells = <0>; + +                port@0 { +                        ... +                        endpoint@0 { ... }; +                        endpoint@1 { ... }; +                }; + +                port@1 { ... }; +        }; +}; + +Links between endpoints +----------------------- + +Each endpoint should contain a 'remote-endpoint' phandle property that points +to the corresponding endpoint in the port of the remote device. In turn, the +remote endpoint should contain a 'remote-endpoint' property. If it has one, +it must not point to another than the local endpoint. Two endpoints with their +'remote-endpoint' phandles pointing at each other form a link between the +containing ports. + +device-1 { +        port { +                device_1_output: endpoint { +                        remote-endpoint = <&device_2_input>; +                }; +        }; +}; + +device-2 { +        port { +                device_2_input: endpoint { +                        remote-endpoint = <&device_1_output>; +                }; +        }; +}; + + +Required properties +------------------- + +If there is more than one 'port' or more than one 'endpoint' node or 'reg' +property is present in port and/or endpoint nodes the following properties +are required in a relevant parent node: + + - #address-cells : number of cells required to define port/endpoint +                    identifier, should be 1. + - #size-cells    : should be zero. + +Optional endpoint properties +---------------------------- + +- remote-endpoint: phandle to an 'endpoint' subnode of a remote device node. + diff --git a/Documentation/devicetree/bindings/hsi/client-devices.txt b/Documentation/devicetree/bindings/hsi/client-devices.txt new file mode 100644 index 00000000000..104c9a3e57a --- /dev/null +++ b/Documentation/devicetree/bindings/hsi/client-devices.txt @@ -0,0 +1,44 @@ +Each HSI port is supposed to have one child node, which +symbols the remote device connected to the HSI port. The +following properties are standardized for HSI clients: + +Required HSI configuration properties: + +- hsi-channel-ids:	A list of channel ids + +- hsi-rx-mode:		Receiver Bit transmission mode ("stream" or "frame") +- hsi-tx-mode:		Transmitter Bit transmission mode ("stream" or "frame") +- hsi-mode:		May be used instead hsi-rx-mode and hsi-tx-mode if +			the transmission mode is the same for receiver and +			transmitter +- hsi-speed-kbps:	Max bit transmission speed in kbit/s +- hsi-flow:		RX flow type ("synchronized" or "pipeline") +- hsi-arb-mode:		Arbitration mode for TX frame ("round-robin", "priority") + +Optional HSI configuration properties: + +- hsi-channel-names:	A list with one name per channel specified in the +			hsi-channel-ids property + + +Device Tree node example for an HSI client: + +hsi-controller { +	hsi-port { +		modem: hsi-client { +			compatible = "nokia,n900-modem"; + +			hsi-channel-ids = <0>, <1>, <2>, <3>; +			hsi-channel-names = "mcsaab-control", +					    "speech-control", +					    "speech-data", +					    "mcsaab-data"; +			hsi-speed-kbps = <55000>; +			hsi-mode = "frame"; +			hsi-flow = "synchronized"; +			hsi-arb-mode = "round-robin"; + +			/* more client specific properties */ +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/hsi/nokia-modem.txt b/Documentation/devicetree/bindings/hsi/nokia-modem.txt new file mode 100644 index 00000000000..8a979780452 --- /dev/null +++ b/Documentation/devicetree/bindings/hsi/nokia-modem.txt @@ -0,0 +1,57 @@ +Nokia modem client bindings + +The Nokia modem HSI client follows the common HSI client binding +and inherits all required properties. The following additional +properties are needed by the Nokia modem HSI client: + +Required properties: +- compatible:		Should be one of +      "nokia,n900-modem" +- hsi-channel-names:	Should contain the following strings +      "mcsaab-control" +      "speech-control" +      "speech-data" +      "mcsaab-data" +- gpios:		Should provide a GPIO handler for each GPIO listed in +                        gpio-names +- gpio-names:		Should contain the following strings +      "cmt_apeslpx" +      "cmt_rst_rq" +      "cmt_en" +      "cmt_rst" +      "cmt_bsi" +- interrupts:		Should be IRQ handle for modem's reset indication + +Example: + +&ssi_port { +	modem: hsi-client { +		compatible = "nokia,n900-modem"; + +		pinctrl-names = "default"; +		pinctrl-0 = <&modem_pins>; + +		hsi-channel-ids = <0>, <1>, <2>, <3>; +		hsi-channel-names = "mcsaab-control", +				    "speech-control", +				    "speech-data", +				    "mcsaab-data"; +		hsi-speed-kbps = <55000>; +		hsi-mode = "frame"; +		hsi-flow = "synchronized"; +		hsi-arb-mode = "round-robin"; + +		interrupts-extended = <&gpio3 8 IRQ_TYPE_EDGE_FALLING>; /* 72 */ + +		gpios = <&gpio3  6 GPIO_ACTIVE_HIGH>, /* 70 */ +			<&gpio3  9 GPIO_ACTIVE_HIGH>, /* 73 */ +			<&gpio3 10 GPIO_ACTIVE_HIGH>, /* 74 */ +			<&gpio3 11 GPIO_ACTIVE_HIGH>, /* 75 */ +			<&gpio5 29 GPIO_ACTIVE_HIGH>; /* 157 */ +		gpio-names = "cmt_apeslpx", +			     "cmt_rst_rq", +			     "cmt_en", +			     "cmt_rst", +			     "cmt_bsi"; +	}; +}; diff --git a/Documentation/devicetree/bindings/hsi/omap-ssi.txt b/Documentation/devicetree/bindings/hsi/omap-ssi.txt new file mode 100644 index 00000000000..f26625e4269 --- /dev/null +++ b/Documentation/devicetree/bindings/hsi/omap-ssi.txt @@ -0,0 +1,97 @@ +OMAP SSI controller bindings + +OMAP Synchronous Serial Interface (SSI) controller implements a legacy +variant of MIPI's High Speed Synchronous Serial Interface (HSI). + +Required properties: +- compatible:		Should include "ti,omap3-ssi". +- reg-names:		Contains the values "sys" and "gdd" (in this order). +- reg:			Contains a matching register specifier for each entry +			in reg-names. +- interrupt-names:	Contains the value "gdd_mpu". +- interrupts: 		Contains matching interrupt information for each entry +			in interrupt-names. +- ranges:		Represents the bus address mapping between the main +			controller node and the child nodes below. +- clock-names:		Must include the following entries: +  "ssi_ssr_fck": The OMAP clock of that name +  "ssi_sst_fck": The OMAP clock of that name +  "ssi_ick": The OMAP clock of that name +- clocks:		Contains a matching clock specifier for each entry in +			clock-names. +- #address-cells:	Should be set to <1> +- #size-cells:		Should be set to <1> + +Each port is represented as a sub-node of the ti,omap3-ssi device. + +Required Port sub-node properties: +- compatible:		Should be set to the following value +			ti,omap3-ssi-port (applicable to OMAP34xx devices) +- reg-names:		Contains the values "tx" and "rx" (in this order). +- reg:			Contains a matching register specifier for each entry +			in reg-names. +- interrupt-parent	Should be a phandle for the interrupt controller +- interrupts:		Should contain interrupt specifiers for mpu interrupts +			0 and 1 (in this order). +- ti,ssi-cawake-gpio:	Defines which GPIO pin is used to signify CAWAKE +			events for the port. This is an optional board-specific +			property. If it's missing the port will not be +			enabled. + +Example for Nokia N900: + +ssi-controller@48058000 { +	compatible = "ti,omap3-ssi"; + +	/* needed until hwmod is updated to use the compatible string */ +	ti,hwmods = "ssi"; + +	reg = <0x48058000 0x1000>, +	      <0x48059000 0x1000>; +	reg-names = "sys", +		    "gdd"; + +	interrupts = <55>; +	interrupt-names = "gdd_mpu"; + +	clocks = <&ssi_ssr_fck>, +		 <&ssi_sst_fck>, +		 <&ssi_ick>; +	clock-names = "ssi_ssr_fck", +		      "ssi_sst_fck", +		      "ssi_ick"; + +	#address-cells = <1>; +	#size-cells = <1>; +	ranges; + +	ssi-port@4805a000 { +		compatible = "ti,omap3-ssi-port"; + +		reg = <0x4805a000 0x800>, +		      <0x4805a800 0x800>; +		reg-names = "tx", +			    "rx"; + +		interrupt-parent = <&intc>; +		interrupts = <67>, +			     <68>; + +		ti,ssi-cawake-gpio = <&gpio5 23 GPIO_ACTIVE_HIGH>; /* 151 */ +	} + +	ssi-port@4805a000 { +		compatible = "ti,omap3-ssi-port"; + +		reg = <0x4805b000 0x800>, +		      <0x4805b800 0x800>; +		reg-names = "tx", +			    "rx"; + +		interrupt-parent = <&intc>; +		interrupts = <69>, +			     <70>; + +		status = "disabled"; /* second port is not used on N900 */ +	} +} diff --git a/Documentation/devicetree/bindings/hwmon/lm90.txt b/Documentation/devicetree/bindings/hwmon/lm90.txt new file mode 100644 index 00000000000..e8632486b9e --- /dev/null +++ b/Documentation/devicetree/bindings/hwmon/lm90.txt @@ -0,0 +1,44 @@ +* LM90 series thermometer. + +Required node properties: +- compatible: manufacturer and chip name, one of +		"adi,adm1032" +		"adi,adt7461" +		"adi,adt7461a" +		"gmt,g781" +		"national,lm90" +		"national,lm86" +		"national,lm89" +		"national,lm99" +		"dallas,max6646" +		"dallas,max6647" +		"dallas,max6649" +		"dallas,max6657" +		"dallas,max6658" +		"dallas,max6659" +		"dallas,max6680" +		"dallas,max6681" +		"dallas,max6695" +		"dallas,max6696" +		"onnn,nct1008" +		"winbond,w83l771" +		"nxp,sa56004" + +- reg: I2C bus address of the device + +- vcc-supply: vcc regulator for the supply voltage. + +Optional properties: +- interrupts: Contains a single interrupt specifier which describes the +              LM90 "-ALERT" pin output. +              See interrupt-controller/interrupts.txt for the format. + +Example LM90 node: + +temp-sensor { +	compatible = "onnn,nct1008"; +	reg = <0x4c>; +	vcc-supply = <&palmas_ldo6_reg>; +	interrupt-parent = <&gpio>; +	interrupts = <TEGRA_GPIO(O, 4) IRQ_TYPE_LEVEL_LOW>; +} diff --git a/Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt b/Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt index c6f66674f19..b117b2e9e1a 100644 --- a/Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt +++ b/Documentation/devicetree/bindings/hwmon/ntc_thermistor.txt @@ -3,11 +3,19 @@ NTC Thermistor hwmon sensors  Requires node properties:  - "compatible" value : one of -	"ntc,ncp15wb473" -	"ntc,ncp18wb473" -	"ntc,ncp21wb473" -	"ntc,ncp03wb473" -	"ntc,ncp15wl333" +	"murata,ncp15wb473" +	"murata,ncp18wb473" +	"murata,ncp21wb473" +	"murata,ncp03wb473" +	"murata,ncp15wl333" + +/* Usage of vendor name "ntc" is deprecated */ +<DEPRECATED>	"ntc,ncp15wb473" +<DEPRECATED>	"ntc,ncp18wb473" +<DEPRECATED>	"ntc,ncp21wb473" +<DEPRECATED>	"ntc,ncp03wb473" +<DEPRECATED>	"ntc,ncp15wl333" +  - "pullup-uv"	Pull up voltage in micro volts  - "pullup-ohm"	Pull up resistor value in ohms  - "pulldown-ohm" Pull down resistor value in ohms @@ -21,7 +29,7 @@ Read more about iio bindings at  Example:  	ncp15wb473@0 { -		compatible = "ntc,ncp15wb473"; +		compatible = "murata,ncp15wb473";  		pullup-uv = <1800000>;  		pullup-ohm = <47000>;  		pulldown-ohm = <0>; diff --git a/Documentation/devicetree/bindings/hwrng/omap_rng.txt b/Documentation/devicetree/bindings/hwrng/omap_rng.txt new file mode 100644 index 00000000000..6a62acd8695 --- /dev/null +++ b/Documentation/devicetree/bindings/hwrng/omap_rng.txt @@ -0,0 +1,22 @@ +OMAP SoC HWRNG Module + +Required properties: + +- compatible : Should contain entries for this and backward compatible +  RNG versions: +  - "ti,omap2-rng" for OMAP2. +  - "ti,omap4-rng" for OMAP4, OMAP5 and AM33XX. +  Note that these two versions are incompatible. +- ti,hwmods: Name of the hwmod associated with the RNG module +- reg : Offset and length of the register set for the module +- interrupts : the interrupt number for the RNG module. +		Only used for "ti,omap4-rng". + +Example: +/* AM335x */ +rng: rng@48310000 { +	compatible = "ti,omap4-rng"; +	ti,hwmods = "rng"; +	reg = <0x48310000 0x2000>; +	interrupts = <111>; +}; diff --git a/Documentation/devicetree/bindings/i2c/i2c-arb-gpio-challenge.txt b/Documentation/devicetree/bindings/i2c/i2c-arb-gpio-challenge.txt index 1ac8ea8ade1..bfeabb84394 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-arb-gpio-challenge.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-arb-gpio-challenge.txt @@ -8,6 +8,12 @@ the standard I2C multi-master rules.  Using GPIOs is generally useful in  the case where there is a device on the bus that has errata and/or bugs  that makes standard multimaster mode not feasible. +Note that this scheme works well enough but has some downsides: +* It is nonstandard (not using standard I2C multimaster) +* Having two masters on a bus in general makes it relatively hard to debug +  problems (hard to tell if i2c issues were caused by one master, another, or +  some device on the bus). +  Algorithm: diff --git a/Documentation/devicetree/bindings/i2c/i2c-at91.txt b/Documentation/devicetree/bindings/i2c/i2c-at91.txt index b689a0d9441..388f0a275fb 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-at91.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-at91.txt @@ -9,8 +9,10 @@ Required properties :  - interrupts: interrupt number to the cpu.  - #address-cells = <1>;  - #size-cells = <0>; +- clocks: phandles to input clocks.  Optional properties: +- clock-frequency: Desired I2C bus frequency in Hz, otherwise defaults to 100000  - Child nodes conforming to i2c bus binding  Examples : @@ -21,6 +23,8 @@ i2c0: i2c@fff84000 {  	interrupts = <12 4 6>;  	#address-cells = <1>;  	#size-cells = <0>; +	clocks = <&twi0_clk>; +	clock-frequency = <400000>;  	24c512@50 {  		compatible = "24c512"; diff --git a/Documentation/devicetree/bindings/i2c/i2c-bcm-kona.txt b/Documentation/devicetree/bindings/i2c/i2c-bcm-kona.txt new file mode 100644 index 00000000000..1b87b741fa8 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-bcm-kona.txt @@ -0,0 +1,35 @@ +Broadcom Kona Family I2C +========================= + +This I2C controller is used in the following Broadcom SoCs: + +  BCM11130 +  BCM11140 +  BCM11351 +  BCM28145 +  BCM28155 + +Required Properties +------------------- +- compatible: "brcm,bcm11351-i2c", "brcm,kona-i2c" +- reg: Physical base address and length of controller registers +- interrupts: The interrupt number used by the controller +- clocks: clock specifier for the kona i2c external clock +- clock-frequency: The I2C bus frequency in Hz +- #address-cells: Should be <1> +- #size-cells: Should be <0> + +Refer to clocks/clock-bindings.txt for generic clock consumer +properties. + +Example: + +i2c@3e016000 { +	compatible = "brcm,bcm11351-i2c","brcm,kona-i2c"; +	reg = <0x3e016000 0x80>; +	interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; +	clocks = <&bsc1_clk>; +	clock-frequency = <400000>; +	#address-cells = <1>; +	#size-cells = <0>; +}; diff --git a/Documentation/devicetree/bindings/i2c/i2c-cadence.txt b/Documentation/devicetree/bindings/i2c/i2c-cadence.txt new file mode 100644 index 00000000000..7cb0b5608f4 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-cadence.txt @@ -0,0 +1,24 @@ +Binding for the Cadence I2C controller + +Required properties: +  - reg: Physical base address and size of the controller's register area. +  - compatible: Compatibility string. Must be 'cdns,i2c-r1p10'. +  - clocks: Input clock specifier. Refer to common clock bindings. +  - interrupts: Interrupt specifier. Refer to interrupt bindings. +  - #address-cells: Should be 1. +  - #size-cells: Should be 0. + +Optional properties: +  - clock-frequency: Desired operating frequency, in Hz, of the bus. +  - clock-names: Input clock name, should be 'pclk'. + +Example: +	i2c@e0004000 { +		compatible = "cdns,i2c-r1p10"; +		clocks = <&clkc 38>; +		interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; +		reg = <0xe0004000 0x1000>; +		clock-frequency = <400000>; +		#address-cells = <1>; +		#size-cells = <0>; +	}; diff --git a/Documentation/devicetree/bindings/i2c/i2c-cros-ec-tunnel.txt b/Documentation/devicetree/bindings/i2c/i2c-cros-ec-tunnel.txt new file mode 100644 index 00000000000..898f030eba6 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-cros-ec-tunnel.txt @@ -0,0 +1,39 @@ +I2C bus that tunnels through the ChromeOS EC (cros-ec) +====================================================== +On some ChromeOS board designs we've got a connection to the EC (embedded +controller) but no direct connection to some devices on the other side of +the EC (like a battery and PMIC).  To get access to those devices we need +to tunnel our i2c commands through the EC. + +The node for this device should be under a cros-ec node like google,cros-ec-spi +or google,cros-ec-i2c. + + +Required properties: +- compatible: google,cros-ec-i2c-tunnel +- google,remote-bus: The EC bus we'd like to talk to. + +Optional child nodes: +- One node per I2C device connected to the tunnelled I2C bus. + + +Example: +	cros-ec@0 { +		compatible = "google,cros-ec-spi"; + +		... + +		i2c-tunnel { +			compatible = "google,cros-ec-i2c-tunnel"; +			#address-cells = <1>; +			#size-cells = <0>; + +			google,remote-bus = <0>; + +			battery: sbs-battery@b { +				compatible = "sbs,sbs-battery"; +				reg = <0xb>; +				sbs,poll-retry-count = <1>; +			}; +		}; +	} diff --git a/Documentation/devicetree/bindings/i2c/i2c-designware.txt b/Documentation/devicetree/bindings/i2c/i2c-designware.txt index 7fd7fa25e9b..5199b0c8cf7 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-designware.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-designware.txt @@ -14,6 +14,12 @@ Optional properties :   - i2c-sda-hold-time-ns : should contain the SDA hold time in nanoseconds.     This option is only supported in hardware blocks version 1.11a or newer. + - i2c-scl-falling-time : should contain the SCL falling time in nanoseconds. +   This value which is by default 300ns is used to compute the tLOW period. + + - i2c-sda-falling-time : should contain the SDA falling time in nanoseconds. +   This value which is by default 300ns is used to compute the tHIGH period. +  Example :  	i2c@f0000 { @@ -34,4 +40,6 @@ Example :  		interrupts = <12 1>;  		clock-frequency = <400000>;  		i2c-sda-hold-time-ns = <300>; +		i2c-sda-falling-time-ns = <300>; +		i2c-scl-falling-time-ns = <300>;  	}; diff --git a/Documentation/devicetree/bindings/i2c/i2c-efm32.txt b/Documentation/devicetree/bindings/i2c/i2c-efm32.txt new file mode 100644 index 00000000000..fc15ac51943 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-efm32.txt @@ -0,0 +1,34 @@ +* Energymicro efm32 i2c controller + +Required properties : + + - reg : Offset and length of the register set for the device + - compatible : should be "energymicro,efm32-i2c" + - interrupts : the interrupt number + - clocks : reference to the module clock + +Recommended properties : + + - clock-frequency : maximal I2C bus clock frequency in Hz. + - efm32,location : Decides the location of the USART I/O pins. +   Allowed range : [0 .. 6] + +Example: +	i2c0: i2c@4000a000 { +		#address-cells = <1>; +		#size-cells = <0>; +		compatible = "energymicro,efm32-i2c"; +		reg = <0x4000a000 0x400>; +		interrupts = <9>; +		clocks = <&cmu clk_HFPERCLKI2C0>; +		clock-frequency = <100000>; +		status = "ok"; +		efm32,location = <3>; + +		eeprom@50 { +			compatible = "microchip,24c02"; +			reg = <0x50>; +			pagesize = <16>; +		}; +	}; + diff --git a/Documentation/devicetree/bindings/i2c/i2c-exynos5.txt b/Documentation/devicetree/bindings/i2c/i2c-exynos5.txt new file mode 100644 index 00000000000..d4745e31f5c --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-exynos5.txt @@ -0,0 +1,51 @@ +* Samsung's High Speed I2C controller + +The Samsung's High Speed I2C controller is used to interface with I2C devices +at various speeds ranging from 100khz to 3.4Mhz. + +Required properties: +  - compatible: value should be. +	-> "samsung,exynos5-hsi2c", (DEPRECATED) +				for i2c compatible with HSI2C available +				on Exynos5250 and Exynos5420 SoCs. +	-> "samsung,exynos5250-hsi2c", for i2c compatible with HSI2C available +				on Exynos5250 and Exynos5420 SoCs. +	-> "samsung,exynos5260-hsi2c", for i2c compatible with HSI2C available +				on Exynos5260 SoCs. + +  - reg: physical base address of the controller and length of memory mapped +    region. +  - interrupts: interrupt number to the cpu. +  - #address-cells: always 1 (for i2c addresses) +  - #size-cells: always 0 + +  - Pinctrl: +    - pinctrl-0: Pin control group to be used for this controller. +    - pinctrl-names: Should contain only one value - "default". + +Optional properties: +  - clock-frequency: Desired operating frequency in Hz of the bus. +    -> If not specified, the bus operates in fast-speed mode at +       at 100khz. +    -> If specified, the bus operates in high-speed mode only if the +       clock-frequency is >= 1Mhz. + +Example: + +hsi2c@12ca0000 { +	compatible = "samsung,exynos5250-hsi2c"; +	reg = <0x12ca0000 0x100>; +	interrupts = <56>; +	clock-frequency = <100000>; + +	pinctrl-0 = <&i2c4_bus>; +	pinctrl-names = "default"; + +	#address-cells = <1>; +	#size-cells = <0>; + +	s2mps11_pmic@66 { +		compatible = "samsung,s2mps11-pmic"; +		reg = <0x66>; +	}; +}; diff --git a/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.txt b/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.txt new file mode 100644 index 00000000000..34a3fb6f848 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.txt @@ -0,0 +1,50 @@ +* NXP PCA954x I2C bus switch + +Required Properties: + +  - compatible: Must contain one of the following. +    "nxp,pca9540", "nxp,pca9542", "nxp,pca9543", "nxp,pca9544", +    "nxp,pca9545", "nxp,pca9546", "nxp,pca9547", "nxp,pca9548" + +  - reg: The I2C address of the device. + +  The following required properties are defined externally: + +  - Standard I2C mux properties. See i2c-mux.txt in this directory. +  - I2C child bus nodes. See i2c-mux.txt in this directory. + +Optional Properties: + +  - reset-gpios: Reference to the GPIO connected to the reset input. + + +Example: + +	i2c-switch@74 { +		compatible = "nxp,pca9548"; +		#address-cells = <1>; +		#size-cells = <0>; +		reg = <0x74>; + +		i2c@2 { +			#address-cells = <1>; +			#size-cells = <0>; +			reg = <2>; + +			eeprom@54 { +				compatible = "at,24c08"; +				reg = <0x54>; +			}; +		}; + +		i2c@4 { +			#address-cells = <1>; +			#size-cells = <0>; +			reg = <4>; + +			rtc@51 { +				compatible = "nxp,pcf8563"; +				reg = <0x51>; +			}; +		}; +	}; diff --git a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt index 82e8f6f1717..5c30026921a 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt @@ -4,8 +4,16 @@  Required properties :   - reg             : Offset and length of the register set for the device - - compatible      : Should be "marvell,mv64xxx-i2c" or "allwinner,sun4i-i2c" -                     or "marvell,mv78230-i2c" + - compatible      : Should be either: +                     - "allwinner,sun4i-a10-i2c" +                     - "allwinner,sun6i-a31-i2c" +                     - "marvell,mv64xxx-i2c" +                     - "marvell,mv78230-i2c" +                     - "marvell,mv78230-a0-i2c" +                       * Note: Only use "marvell,mv78230-a0-i2c" for a +                         very rare, initial version of the SoC which +                         had broken offload support.  Linux +                         auto-detects this and sets it appropriately.   - interrupts      : The interrupt number  Optional properties : @@ -13,6 +21,10 @@ Optional properties :   - clock-frequency : Desired I2C bus clock frequency in Hz. If not set the  default frequency is 100kHz + - resets          : phandle to the parent reset controller. Mandatory +                     whenever you're using the "allwinner,sun6i-a31-i2c" +                     compatible. +  Examples:  	i2c@11000 { diff --git a/Documentation/devicetree/bindings/i2c/i2c-omap.txt b/Documentation/devicetree/bindings/i2c/i2c-omap.txt index 56564aa4b44..7e49839d412 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-omap.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-omap.txt @@ -1,7 +1,8 @@  I2C for OMAP platforms  Required properties : -- compatible : Must be "ti,omap3-i2c" or "ti,omap4-i2c" +- compatible : Must be "ti,omap2420-i2c", "ti,omap2430-i2c", "ti,omap3-i2c" +  or "ti,omap4-i2c"  - ti,hwmods : Must be "i2c<n>", n being the instance number (1-based)  - #address-cells = <1>;  - #size-cells = <0>; diff --git a/Documentation/devicetree/bindings/i2c/i2c-rcar.txt b/Documentation/devicetree/bindings/i2c/i2c-rcar.txt new file mode 100644 index 00000000000..16b3e07aa98 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-rcar.txt @@ -0,0 +1,32 @@ +I2C for R-Car platforms + +Required properties: +- compatible: Must be one of +	"renesas,i2c-rcar" +	"renesas,i2c-r8a7778" +	"renesas,i2c-r8a7779" +	"renesas,i2c-r8a7790" +	"renesas,i2c-r8a7791" +	"renesas,i2c-r8a7792" +	"renesas,i2c-r8a7793" +	"renesas,i2c-r8a7794" +- reg: physical base address of the controller and length of memory mapped +  region. +- interrupts: interrupt specifier. + +Optional properties: +- clock-frequency: desired I2C bus clock frequency in Hz. The absence of this +  propoerty indicates the default frequency 100 kHz. +- clocks: clock specifier. + +Examples : + +i2c0: i2c@e6508000 { +	#address-cells = <1>; +	#size-cells = <0>; +	compatible = "renesas,i2c-r8a7791"; +	reg = <0 0xe6508000 0 0x40>; +	interrupts = <0 287 IRQ_TYPE_LEVEL_HIGH>; +	clocks = <&mstp9_clks R8A7791_CLK_I2C0>; +	clock-frequency = <400000>; +}; diff --git a/Documentation/devicetree/bindings/i2c/i2c-riic.txt b/Documentation/devicetree/bindings/i2c/i2c-riic.txt new file mode 100644 index 00000000000..0bcc4716c31 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-riic.txt @@ -0,0 +1,29 @@ +Device tree configuration for Renesas RIIC driver + +Required properties: +- compatible      : "renesas,riic-<soctype>". "renesas,riic-rz" as fallback +- reg             : address start and address range size of device +- interrupts      : 8 interrupts (TEI, RI, TI, SPI, STI, NAKI, ALI, TMOI) +- clock-frequency : frequency of bus clock in Hz +- #address-cells  : should be <1> +- #size-cells     : should be <0> + +Pinctrl properties might be needed, too. See there. + +Example: + +	i2c0: i2c@fcfee000 { +		compatible = "renesas,riic-r7s72100", "renesas,riic-rz"; +		reg = <0xfcfee000 0x44>; +		interrupts = <0 157 IRQ_TYPE_LEVEL_HIGH>, +			     <0 158 IRQ_TYPE_EDGE_RISING>, +			     <0 159 IRQ_TYPE_EDGE_RISING>, +			     <0 160 IRQ_TYPE_LEVEL_HIGH>, +			     <0 161 IRQ_TYPE_LEVEL_HIGH>, +			     <0 162 IRQ_TYPE_LEVEL_HIGH>, +			     <0 163 IRQ_TYPE_LEVEL_HIGH>, +			     <0 164 IRQ_TYPE_LEVEL_HIGH>; +		clock-frequency = <100000>; +		#address-cells = <1>; +		#size-cells = <0>; +	}; diff --git a/Documentation/devicetree/bindings/i2c/i2c-rk3x.txt b/Documentation/devicetree/bindings/i2c/i2c-rk3x.txt new file mode 100644 index 00000000000..dde6c22ce91 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-rk3x.txt @@ -0,0 +1,42 @@ +* Rockchip RK3xxx I2C controller + +This driver interfaces with the native I2C controller present in Rockchip +RK3xxx SoCs. + +Required properties : + + - reg : Offset and length of the register set for the device + - compatible : should be "rockchip,rk3066-i2c", "rockchip,rk3188-i2c" or +		"rockchip,rk3288-i2c". + - interrupts : interrupt number + - clocks : parent clock + +Required on RK3066, RK3188 : + + - rockchip,grf : the phandle of the syscon node for the general register +		  file (GRF) + - on those SoCs an alias with the correct I2C bus ID (bit offset in the GRF) +   is also required. + +Optional properties : + + - clock-frequency : SCL frequency to use (in Hz). If omitted, 100kHz is used. + +Example: + +aliases { +	i2c0 = &i2c0; +} + +i2c0: i2c@2002d000 { +	compatible = "rockchip,rk3188-i2c"; +	reg = <0x2002d000 0x1000>; +	interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; +	#address-cells = <1>; +	#size-cells = <0>; + +	rockchip,grf = <&grf>; + +	clock-names = "i2c"; +	clocks = <&cru PCLK_I2C0>; +}; diff --git a/Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt b/Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt index 296eb453612..278de8e64bb 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt +++ b/Documentation/devicetree/bindings/i2c/i2c-s3c2410.txt @@ -10,6 +10,8 @@ Required properties:            inside HDMIPHY block found on several samsung SoCs        (d) "samsung, exynos5440-i2c", for s3c2440-like i2c used  	   on EXYNOS5440 which does not need GPIO configuration. +      (e) "samsung, exynos5-sata-phy-i2c", for s3c2440-like i2c used as +	   a host to SATA PHY controller on an internal bus.    - reg: physical base address of the controller and length of memory mapped      region.    - interrupts: interrupt number to the cpu. diff --git a/Documentation/devicetree/bindings/i2c/i2c-sh_mobile.txt b/Documentation/devicetree/bindings/i2c/i2c-sh_mobile.txt new file mode 100644 index 00000000000..d2153ce36fa --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-sh_mobile.txt @@ -0,0 +1,26 @@ +Device tree configuration for Renesas IIC (sh_mobile) driver + +Required properties: +- compatible      : "renesas,iic-<soctype>". "renesas,rmobile-iic" as fallback +- reg             : address start and address range size of device +- interrupts      : interrupt of device +- clocks          : clock for device +- #address-cells  : should be <1> +- #size-cells     : should be <0> + +Optional properties: +- clock-frequency : frequency of bus clock in Hz. Default 100kHz if unset. + +Pinctrl properties might be needed, too. See there. + +Example: + +	iic0: i2c@e6500000 { +		compatible = "renesas,iic-r8a7790", "renesas,rmobile-iic"; +		reg = <0 0xe6500000 0 0x425>; +		interrupts = <0 174 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&mstp3_clks R8A7790_CLK_IIC0>; +		clock-frequency = <400000>; +		#address-cells = <1>; +		#size-cells = <0>; +	}; diff --git a/Documentation/devicetree/bindings/i2c/i2c-st.txt b/Documentation/devicetree/bindings/i2c/i2c-st.txt new file mode 100644 index 00000000000..437e0db3823 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-st.txt @@ -0,0 +1,41 @@ +ST SSC binding, for I2C mode operation + +Required properties : +- compatible : Must be "st,comms-ssc-i2c" or "st,comms-ssc4-i2c" +- reg : Offset and length of the register set for the device +- interrupts : the interrupt specifier +- clock-names: Must contain "ssc". +- clocks: Must contain an entry for each name in clock-names. See the common +  clock bindings. +- A pinctrl state named "default" must be defined to set pins in mode of +  operation for I2C transfer. + +Optional properties : +- clock-frequency : Desired I2C bus clock frequency in Hz. If not specified, +  the default 100 kHz frequency will be used. As only Normal and Fast modes +  are supported, possible values are 100000 and 400000. +- st,i2c-min-scl-pulse-width-us : The minimum valid SCL pulse width that is +  allowed through the deglitch circuit. In units of us. +- st,i2c-min-sda-pulse-width-us : The minimum valid SDA pulse width that is +  allowed through the deglitch circuit. In units of us. +- A pinctrl state named "idle" could be defined to set pins in idle state +  when I2C instance is not performing a transfer. +- A pinctrl state named "sleep" could be defined to set pins in sleep state +  when driver enters in suspend. + + + +Example : + +i2c0: i2c@fed40000 { +	compatible	= "st,comms-ssc4-i2c"; +	reg		= <0xfed40000 0x110>; +	interrupts	=  <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>; +	clocks		= <&CLK_S_ICN_REG_0>; +	clock-names	= "ssc"; +	clock-frequency = <400000>; +	pinctrl-names	= "default"; +	pinctrl-0	= <&pinctrl_i2c0_default>; +	st,i2c-min-scl-pulse-width-us = <0>; +	st,i2c-min-sda-pulse-width-us = <5>; +}; diff --git a/Documentation/devicetree/bindings/i2c/i2c-sunxi-p2wi.txt b/Documentation/devicetree/bindings/i2c/i2c-sunxi-p2wi.txt new file mode 100644 index 00000000000..6b765485af7 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/i2c-sunxi-p2wi.txt @@ -0,0 +1,41 @@ + +* Allwinner P2WI (Push/Pull 2 Wire Interface) controller + +Required properties : + + - reg             : Offset and length of the register set for the device. + - compatible      : Should one of the following: +                     - "allwinner,sun6i-a31-p2wi" + - interrupts      : The interrupt line connected to the P2WI peripheral. + - clocks          : The gate clk connected to the P2WI peripheral. + - resets          : The reset line connected to the P2WI peripheral. + +Optional properties : + + - clock-frequency : Desired P2WI bus clock frequency in Hz. If not set the +default frequency is 100kHz + +A P2WI may contain one child node encoding a P2WI slave device. + +Slave device properties: +  Required properties: +   - reg           : the I2C slave address used during the initialization +                     process to switch from I2C to P2WI mode + +Example: + +	p2wi@01f03400 { +		compatible = "allwinner,sun6i-a31-p2wi"; +		reg = <0x01f03400 0x400>; +		interrupts = <0 39 4>; +		clocks = <&apb0_gates 3>; +		clock-frequency = <6000000>; +		resets = <&apb0_rst 3>; + +		axp221: pmic@68 { +			compatible = "x-powers,axp221"; +			reg = <0x68>; + +			/* ... */ +		}; +	}; diff --git a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt index ef77cc7a0e4..87507e9ce6d 100644 --- a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt +++ b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt @@ -39,12 +39,23 @@ Required properties:  - interrupts: Should contain I2C controller interrupts.  - address-cells: Address cells for I2C device address.  - size-cells: Size of the I2C device address. -- clocks: Clock ID as per -		Documentation/devicetree/bindings/clock/tegra<chip-id>.txt -	for I2C controller. -- clock-names: Name of the clock: -	Tegra20/Tegra30 I2C controller: "div-clk and "fast-clk". -	Tegra114 I2C controller: "div-clk". +- 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: +  Tegra20/Tegra30: +  - div-clk +  - fast-clk +  Tegra114: +  - div-clk +- resets: Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names: Must include the following entries: +  - i2c +- dmas: Must contain an entry for each entry in clock-names. +  See ../dma/dma.txt for details. +- dma-names: Must include the following entries: +  - rx +  - tx  Example: @@ -56,5 +67,9 @@ Example:  		#size-cells = <0>;  		clocks = <&tegra_car 12>, <&tegra_car 124>;  		clock-names = "div-clk", "fast-clk"; +		resets = <&tegra_car 12>; +		reset-names = "i2c"; +		dmas = <&apbdma 16>, <&apbdma 16>; +		dma-names = "rx", "tx";  		status = "disabled";  	}; diff --git a/Documentation/devicetree/bindings/i2c/qcom,i2c-qup.txt b/Documentation/devicetree/bindings/i2c/qcom,i2c-qup.txt new file mode 100644 index 00000000000..dc71754a56a --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/qcom,i2c-qup.txt @@ -0,0 +1,40 @@ +Qualcomm Universal Peripheral (QUP) I2C controller + +Required properties: + - compatible: Should be: +   * "qcom,i2c-qup-v1.1.1" for 8660, 8960 and 8064. +   * "qcom,i2c-qup-v2.1.1" for 8974 v1. +   * "qcom,i2c-qup-v2.2.1" for 8974 v2 and later. + - reg: Should contain QUP register address and length. + - interrupts: Should contain I2C interrupt. + + - clocks: A list of phandles + clock-specifiers, one for each entry in +   clock-names. + - clock-names: Should contain: +   * "core" for the core clock +   * "iface" for the AHB clock + + - #address-cells: Should be <1> Address cells for i2c device address + - #size-cells: Should be <0> as i2c addresses have no size component + +Optional properties: + - clock-frequency: Should specify the desired i2c bus clock frequency in Hz, +                    defaults to 100kHz if omitted. + +Child nodes should conform to i2c bus binding. + +Example: + + i2c@f9924000 { + 	compatible = "qcom,i2c-qup-v2.2.1"; + 	reg = <0xf9924000 0x1000>; + 	interrupts = <0 96 0>; + + 	clocks = <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>; + 	clock-names = "core", "iface"; + + 	clock-frequency = <355000>; + + 	#address-cells = <1>; + 	#size-cells = <0>; + }; diff --git a/Documentation/devicetree/bindings/i2c/trivial-devices.txt b/Documentation/devicetree/bindings/i2c/trivial-devices.txt index ad6a73852f0..bef86e57c38 100644 --- a/Documentation/devicetree/bindings/i2c/trivial-devices.txt +++ b/Documentation/devicetree/bindings/i2c/trivial-devices.txt @@ -13,9 +13,26 @@ ad,ad7414		SMBus/I2C Digital Temperature Sensor in 6-Pin SOT with SMBus Alert an  ad,adm9240		ADM9240:  Complete System Hardware Monitor for uProcessor-Based Systems  adi,adt7461		+/-1C TDM Extended Temp Range I.C  adt7461			+/-1C TDM Extended Temp Range I.C +adi,adt7473		+/-1C TDM Extended Temp Range I.C +adi,adt7475		+/-1C TDM Extended Temp Range I.C +adi,adt7476		+/-1C TDM Extended Temp Range I.C +adi,adt7490		+/-1C TDM Extended Temp Range I.C  at,24c08		i2c serial eeprom  (24cxx) +atmel,24c00		i2c serial eeprom  (24cxx) +atmel,24c01		i2c serial eeprom  (24cxx)  atmel,24c02		i2c serial eeprom  (24cxx) +atmel,24c04		i2c serial eeprom  (24cxx) +atmel,24c16		i2c serial eeprom  (24cxx) +atmel,24c32		i2c serial eeprom  (24cxx) +atmel,24c64		i2c serial eeprom  (24cxx) +atmel,24c128		i2c serial eeprom  (24cxx) +atmel,24c256		i2c serial eeprom  (24cxx) +atmel,24c512		i2c serial eeprom  (24cxx) +atmel,24c1024		i2c serial eeprom  (24cxx) +atmel,at97sc3204t	i2c trusted platform module (TPM) +capella,cm32181		CM32181: Ambient Light Sensor  catalyst,24c32		i2c serial eeprom +cirrus,cs42l51		Cirrus Logic CS42L51 audio codec  dallas,ds1307		64 x 8, Serial, I2C Real-Time Clock  dallas,ds1338		I2C RTC with 56-Byte NV RAM  dallas,ds1339		I2C Serial Real-Time Clock @@ -35,15 +52,20 @@ fsl,mc13892		MC13892: Power Management Integrated Circuit (PMIC) for i.MX35/51  fsl,mma8450		MMA8450Q: Xtrinsic Low-power, 3-axis Xtrinsic Accelerometer  fsl,mpr121		MPR121: Proximity Capacitive Touch Sensor Controller  fsl,sgtl5000		SGTL5000: Ultra Low-Power Audio Codec +gmt,g751		G751: Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface  infineon,slb9635tt	Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz)  infineon,slb9645tt	Infineon SLB9645 I2C TPM (new protocol, max 400khz) +isl,isl12057		Intersil ISL12057 I2C RTC Chip  maxim,ds1050		5 Bit Programmable, Pulse-Width Modulator  maxim,max1237		Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs  maxim,max6625		9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface  mc,rv3029c2		Real Time Clock Module with I2C-Bus +national,lm63		Temperature sensor with integrated fan control  national,lm75		I2C TEMP SENSOR  national,lm80		Serial Interface ACPI-Compatible Microprocessor System Hardware Monitor +national,lm85		Temperature sensor with integrated fan control  national,lm92		±0.33°C Accurate, 12-Bit + Sign Temperature Sensor and Thermal Window Comparator with Two-Wire Interface +nuvoton,npct501		i2c trusted platform module (TPM)  nxp,pca9556		Octal SMBus and I2C registered interface  nxp,pca9557		8-bit I2C-bus and SMBus I/O port with reset  nxp,pcf8563		Real-time clock/calendar @@ -53,6 +75,7 @@ plx,pex8648		48-Lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch  ramtron,24c64		i2c serial eeprom  (24cxx)  ricoh,rs5c372a		I2C bus SERIAL INTERFACE REAL-TIME CLOCK IC  samsung,24ad0xd1	S524AD0XF1 (128K/256K-bit Serial EEPROM for Low Power) +sii,s35390a		2-wire CMOS real-time clock  st-micro,24c256		i2c serial eeprom  (24cxx)  stm,m41t00		Serial Access TIMEKEEPER  stm,m41t62		Serial real-time clock (RTC) with alarm @@ -61,3 +84,4 @@ taos,tsl2550		Ambient Light Sensor with SMBUS/Two Wire Serial Interface  ti,tsc2003		I2C Touch-Screen Controller  ti,tmp102		Low Power Digital Temperature Sensor with SMBUS/Two Wire Serial Interface  ti,tmp275		Digital Temperature Sensor +winbond,wpct301		i2c trusted platform module (TPM) diff --git a/Documentation/devicetree/bindings/arm/atmel-adc.txt b/Documentation/devicetree/bindings/iio/adc/at91_adc.txt index 723c205cb10..0f813dec5e0 100644 --- a/Documentation/devicetree/bindings/arm/atmel-adc.txt +++ b/Documentation/devicetree/bindings/iio/adc/at91_adc.txt @@ -5,26 +5,35 @@ Required properties:      <chip> can be "at91sam9260", "at91sam9g45" or "at91sam9x5"    - reg: Should contain ADC registers location and length    - interrupts: Should contain the IRQ line for the ADC -  - atmel,adc-channels-used: Bitmask of the channels muxed and enable for this +  - clock-names: tuple listing input clock names. +	Required elements: "adc_clk", "adc_op_clk". +  - clocks: phandles to input clocks. +  - atmel,adc-channels-used: Bitmask of the channels muxed and enabled for this      device -  - atmel,adc-num-channels: Number of channels available in the ADC    - atmel,adc-startup-time: Startup Time of the ADC in microseconds as      defined in the datasheet    - atmel,adc-vref: Reference voltage in millivolts for the conversions -  - atmel,adc-res: List of resolution in bits supported by the ADC. List size +  - atmel,adc-res: List of resolutions in bits supported by the ADC. List size  		   must be two at least.    - atmel,adc-res-names: Contains one identifier string for each resolution  			 in atmel,adc-res property. "lowres" and "highres"  			 identifiers are required.  Optional properties: -  - atmel,adc-use-external: Boolean to enable of external triggers +  - atmel,adc-use-external-triggers: Boolean to enable the external triggers    - atmel,adc-use-res: String corresponding to an identifier from  		       atmel,adc-res-names property. If not specified, the highest  		       resolution will be used.    - atmel,adc-sleep-mode: Boolean to enable sleep mode when no conversion    - atmel,adc-sample-hold-time: Sample and Hold Time in microseconds -  +  - atmel,adc-ts-wires: Number of touchscreen wires. Should be 4 or 5. If this +                        value is set, then the adc driver will enable touchscreen +                        support. +    NOTE: when adc touchscreen is enabled, the adc hardware trigger will be +          disabled. Since touchscreen will occupy the trigger register. +  - atmel,adc-ts-pressure-threshold: a pressure threshold for touchscreen. It +                                     makes touch detection more precise. +  Optional trigger Nodes:    - Required properties:      * trigger-name: Name of the trigger exposed to the user @@ -35,40 +44,43 @@ Optional trigger Nodes:  Examples:  adc0: adc@fffb0000 { +	#address-cells = <1>; +	#size-cells = <0>;  	compatible = "atmel,at91sam9260-adc";  	reg = <0xfffb0000 0x100>; -	interrupts = <20 4>; -	atmel,adc-channel-base = <0x30>; +	interrupts = <20 IRQ_TYPE_LEVEL_HIGH 0>; +	clocks = <&adc_clk>, <&adc_op_clk>; +	clock-names = "adc_clk", "adc_op_clk";  	atmel,adc-channels-used = <0xff>; -	atmel,adc-drdy-mask = <0x10000>; -	atmel,adc-num-channels = <8>;  	atmel,adc-startup-time = <40>; -	atmel,adc-status-register = <0x1c>; -	atmel,adc-trigger-register = <0x08>; -	atmel,adc-use-external; +	atmel,adc-use-external-triggers;  	atmel,adc-vref = <3300>;  	atmel,adc-res = <8 10>;  	atmel,adc-res-names = "lowres", "highres";  	atmel,adc-use-res = "lowres";  	trigger@0 { +		reg = <0>;  		trigger-name = "external-rising";  		trigger-value = <0x1>;  		trigger-external;  	};  	trigger@1 { +		reg = <1>;  		trigger-name = "external-falling";  		trigger-value = <0x2>;  		trigger-external;  	};  	trigger@2 { +		reg = <2>;  		trigger-name = "external-any";  		trigger-value = <0x3>;  		trigger-external;  	};  	trigger@3 { +		reg = <3>;  		trigger-name = "continuous";  		trigger-value = <0x6>;  	}; diff --git a/Documentation/devicetree/bindings/iio/adc/twl4030-madc.txt b/Documentation/devicetree/bindings/iio/adc/twl4030-madc.txt new file mode 100644 index 00000000000..6bdd21404b5 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/twl4030-madc.txt @@ -0,0 +1,24 @@ +* TWL4030 Monitoring Analog to Digital Converter (MADC) + +The MADC subsystem in the TWL4030 consists of a 10-bit ADC +combined with a 16-input analog multiplexer. + +Required properties: +  - compatible: Should contain "ti,twl4030-madc". +  - interrupts: IRQ line for the MADC submodule. +  - #io-channel-cells: Should be set to <1>. + +Optional properties: +  - ti,system-uses-second-madc-irq: boolean, set if the second madc irq register +				    should be used, which is intended to be used +				    by Co-Processors (e.g. a modem). + +Example: + +&twl { +	madc { +		compatible = "ti,twl4030-madc"; +		interrupts = <3>; +		#io-channel-cells = <1>; +	}; +}; diff --git a/Documentation/devicetree/bindings/iio/adc/vf610-adc.txt b/Documentation/devicetree/bindings/iio/adc/vf610-adc.txt new file mode 100644 index 00000000000..dcebff1928e --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/vf610-adc.txt @@ -0,0 +1,22 @@ +Freescale vf610 Analog to Digital Converter bindings + +The devicetree bindings are for the new ADC driver written for +vf610/i.MX6slx and upward SoCs from Freescale. + +Required properties: +- compatible: Should contain "fsl,vf610-adc" +- reg: Offset and length of the register set for the device +- interrupts: Should contain the interrupt for the device +- clocks: The clock is needed by the ADC controller, ADC clock source is ipg clock. +- clock-names: Must contain "adc", matching entry in the clocks property. +- vref-supply: The regulator supply ADC refrence voltage. + +Example: +adc0: adc@4003b000 { +	compatible = "fsl,vf610-adc"; +	reg = <0x4003b000 0x1000>; +	interrupts = <0 53 0x04>; +	clocks = <&clks VF610_CLK_ADC0>; +	clock-names = "adc"; +	vref-supply = <®_vcc_3v3_mcu>; +}; diff --git a/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt b/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt new file mode 100644 index 00000000000..d9ee909d2b7 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/xilinx-xadc.txt @@ -0,0 +1,113 @@ +Xilinx XADC device driver + +This binding document describes the bindings for both of them since the +bindings are very similar. The Xilinx XADC is a ADC that can be found in the +series 7 FPGAs from Xilinx. The XADC has a DRP interface for communication. +Currently two different frontends for the DRP interface exist. One that is only +available on the ZYNQ family as a hardmacro in the SoC portion of the ZYNQ. The +other one is available on all series 7 platforms and is a softmacro with a AXI +interface. This binding document describes the bindings for both of them since +the bindings are very similar. + +Required properties: +	- compatible: Should be one of +		* "xlnx,zynq-xadc-1.00.a": When using the ZYNQ device +		  configuration interface to interface to the XADC hardmacro. +		* "xlnx,axi-xadc-1.00.a": When using the axi-xadc pcore to +		  interface to the XADC hardmacro. +	- reg: Address and length of the register set for the device +	- interrupts: Interrupt for the XADC control interface. +	- clocks: When using the ZYNQ this must be the ZYNQ PCAP clock, +	  when using the AXI-XADC pcore this must be the clock that provides the +	  clock to the AXI bus interface of the core. + +Optional properties: +	- interrupt-parent: phandle to the parent interrupt controller +	- xlnx,external-mux: +		* "none": No external multiplexer is used, this is the default +		  if the property is omitted. +		* "single": External multiplexer mode is used with one +		   multiplexer. +		* "dual": External multiplexer mode is used with two +		  multiplexers for simultaneous sampling. +	- xlnx,external-mux-channel: Configures which pair of pins is used to +	  sample data in external mux mode. +	  Valid values for single external multiplexer mode are: +		0: VP/VN +		1: VAUXP[0]/VAUXN[0] +		2: VAUXP[1]/VAUXN[1] +		... +		16: VAUXP[15]/VAUXN[15] +	  Valid values for dual external multiplexer mode are: +		1: VAUXP[0]/VAUXN[0] - VAUXP[8]/VAUXN[8] +		2: VAUXP[1]/VAUXN[1] - VAUXP[9]/VAUXN[9] +		... +		8: VAUXP[7]/VAUXN[7] - VAUXP[15]/VAUXN[15] + +	  This property needs to be present if the device is configured for +	  external multiplexer mode (either single or dual). If the device is +	  not using external multiplexer mode the property is ignored. +	- xnlx,channels: List of external channels that are connected to the ADC +	  Required properties: +		* #address-cells: Should be 1. +		* #size-cells: Should be 0. + +	  The child nodes of this node represent the external channels which are +	  connected to the ADC. If the property is no present no external +	  channels will be assumed to be connected. + +	  Each child node represents one channel and has the following +	  properties: +		Required properties: +			* reg: Pair of pins the the channel is connected to. +				0: VP/VN +				1: VAUXP[0]/VAUXN[0] +				2: VAUXP[1]/VAUXN[1] +				... +				16: VAUXP[15]/VAUXN[15] +			  Note each channel number should only be used at most +			  once. +		Optional properties: +			* xlnx,bipolar: If set the channel is used in bipolar +			  mode. + + +Examples: +	xadc@f8007100 { +		compatible = "xlnx,zynq-xadc-1.00.a"; +		reg = <0xf8007100 0x20>; +		interrupts = <0 7 4>; +		interrupt-parent = <&gic>; +		clocks = <&pcap_clk>; + +		xlnx,channels { +			#address-cells = <1>; +			#size-cells = <0>; +			channel@0 { +				reg = <0>; +			}; +			channel@1 { +				reg = <1>; +			}; +			channel@8 { +				reg = <8>; +			}; +		}; +	}; + +	xadc@43200000 { +		compatible = "xlnx,axi-xadc-1.00.a"; +		reg = <0x43200000 0x1000>; +		interrupts = <0 53 4>; +		interrupt-parent = <&gic>; +		clocks = <&fpga1_clk>; + +		xlnx,channels { +			#address-cells = <1>; +			#size-cells = <0>; +			channel@0 { +				reg = <0>; +				xlnx,bipolar; +			}; +		}; +	}; diff --git a/Documentation/devicetree/bindings/iio/humidity/dht11.txt b/Documentation/devicetree/bindings/iio/humidity/dht11.txt new file mode 100644 index 00000000000..ecc24c199fd --- /dev/null +++ b/Documentation/devicetree/bindings/iio/humidity/dht11.txt @@ -0,0 +1,14 @@ +* DHT11 humidity/temperature sensor (and compatibles like DHT22) + +Required properties: +  - compatible: Should be "dht11" +  - gpios: Should specify the GPIO connected to the sensor's data +    line, see "gpios property" in +    Documentation/devicetree/bindings/gpio/gpio.txt. + +Example: + +humidity_sensor { +	compatible = "dht11"; +	gpios = <&gpio0 6 0>; +} diff --git a/Documentation/devicetree/bindings/iio/light/cm36651.txt b/Documentation/devicetree/bindings/iio/light/cm36651.txt new file mode 100644 index 00000000000..c03e19db455 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/light/cm36651.txt @@ -0,0 +1,26 @@ +* Capella CM36651 I2C Proximity and Color Light sensor + +Required properties: +- compatible: must be "capella,cm36651" +- reg: the I2C address of the device +- interrupts: interrupt-specifier for the sole interrupt +	      generated by the device +- vled-supply: regulator for the IR LED. IR_LED is a part +	      of the cm36651 for proximity detection. +	      As covered in ../../regulator/regulator.txt + +Example: + +	i2c_cm36651: i2c-gpio { +		/* ... */ + +		cm36651@18 { +			compatible = "capella,cm36651"; +			reg = <0x18>; +			interrupt-parent = <&gpx0>; +			interrupts = <2 0>; +			vled-supply = <&ps_als_reg>; +		}; + +		/* ... */ +	}; diff --git a/Documentation/devicetree/bindings/iio/light/gp2ap020a00f.txt b/Documentation/devicetree/bindings/iio/light/gp2ap020a00f.txt new file mode 100644 index 00000000000..9231c82317a --- /dev/null +++ b/Documentation/devicetree/bindings/iio/light/gp2ap020a00f.txt @@ -0,0 +1,21 @@ +* Sharp GP2AP020A00F I2C Proximity/ALS sensor + +The proximity detector sensor requires power supply +for its built-in led. It is also defined by this binding. + +Required properties: + +  - compatible : should be "sharp,gp2ap020a00f" +  - reg : the I2C slave address of the light sensor +  - interrupts : interrupt specifier for the sole interrupt generated +		 by the device +  - vled-supply : VLED power supply, as covered in ../regulator/regulator.txt + +Example: + +gp2ap020a00f@39 { +	compatible = "sharp,gp2ap020a00f"; +	reg = <0x39>; +	interrupts = <2 0>; +	vled-supply = <...>; +}; diff --git a/Documentation/devicetree/bindings/iio/light/tsl2563.txt b/Documentation/devicetree/bindings/iio/light/tsl2563.txt new file mode 100644 index 00000000000..f91e809e736 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/light/tsl2563.txt @@ -0,0 +1,19 @@ +* AMS TAOS TSL2563 ambient light sensor + +Required properties: + +  - compatible : should be "amstaos,tsl2563" +  - reg : the I2C address of the sensor + +Optional properties: + +  - amstaos,cover-comp-gain : integer used as multiplier for gain +                              compensation (default = 1) + +Example: + +tsl2563@29 { +	compatible = "amstaos,tsl2563"; +	reg = <0x29>; +	amstaos,cover-comp-gain = <16>; +}; diff --git a/Documentation/devicetree/bindings/iio/magnetometer/hmc5843.txt b/Documentation/devicetree/bindings/iio/magnetometer/hmc5843.txt new file mode 100644 index 00000000000..90d5f34db04 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/magnetometer/hmc5843.txt @@ -0,0 +1,17 @@ +* Honeywell HMC5843 magnetometer sensor + +Required properties: + +  - compatible : should be "honeywell,hmc5843" +  - reg : the I2C address of the magnetometer - typically 0x1e + +Optional properties: + +  - gpios : should be device tree identifier of the magnetometer DRDY pin + +Example: + +hmc5843@1e { +        compatible = "honeywell,hmc5843" +        reg = <0x1e>; +}; diff --git a/Documentation/devicetree/bindings/iio/proximity/as3935.txt b/Documentation/devicetree/bindings/iio/proximity/as3935.txt new file mode 100644 index 00000000000..ae23dd8da73 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/proximity/as3935.txt @@ -0,0 +1,28 @@ +Austrian Microsystems AS3935 Franklin lightning sensor device driver + +Required properties: +	- compatible: must be "ams,as3935" +	- reg: SPI chip select number for the device +	- spi-cpha: SPI Mode 1. Refer to spi/spi-bus.txt for generic SPI +	slave node bindings. +	- interrupt-parent : should be the phandle for the interrupt controller +	- interrupts : the sole interrupt generated by the device + +	Refer to interrupt-controller/interrupts.txt for generic +	interrupt client node bindings. + +Optional properties: +	- ams,tuning-capacitor-pf: Calibration tuning capacitor stepping +	  value 0 - 120pF. This will require using the calibration data from +	  the manufacturer. + +Example: + +as3935@0 { +	compatible = "ams,as3935"; +	reg = <0>; +	spi-cpha; +	interrupt-parent = <&gpio1>; +	interrupts = <16 1>; +	ams,tuning-capacitor-pf = <80>; +}; diff --git a/Documentation/devicetree/bindings/input/clps711x-keypad.txt b/Documentation/devicetree/bindings/input/clps711x-keypad.txt new file mode 100644 index 00000000000..e68d2bbc6c0 --- /dev/null +++ b/Documentation/devicetree/bindings/input/clps711x-keypad.txt @@ -0,0 +1,27 @@ +* Cirrus Logic CLPS711X matrix keypad device tree bindings + +Required Properties: +- compatible:    Shall contain "cirrus,clps711x-keypad". +- row-gpios:     List of GPIOs used as row lines. +- poll-interval: Poll interval time in milliseconds. +- linux,keymap:  The definition can be found at +                 bindings/input/matrix-keymap.txt. + +Optional Properties: +- autorepeat:    Enable autorepeat feature. + +Example: +	keypad { +		compatible = "cirrus,ep7312-keypad", "cirrus,clps711x-keypad"; +		autorepeat; +		poll-interval = <120>; +		row-gpios = <&porta 0 0>, +			    <&porta 1 0>; + +		linux,keymap = < +			MATRIX_KEY(0, 0, KEY_UP) +			MATRIX_KEY(0, 1, KEY_DOWN) +			MATRIX_KEY(1, 0, KEY_LEFT) +			MATRIX_KEY(1, 1, KEY_RIGHT) +		>; +	}; diff --git a/Documentation/devicetree/bindings/input/gpio-beeper.txt b/Documentation/devicetree/bindings/input/gpio-beeper.txt new file mode 100644 index 00000000000..a5086e37fce --- /dev/null +++ b/Documentation/devicetree/bindings/input/gpio-beeper.txt @@ -0,0 +1,13 @@ +* GPIO beeper device tree bindings + +Register a beeper connected to GPIO pin. + +Required properties: +- compatible:	Should be "gpio-beeper". +- gpios:	From common gpio binding; gpio connection to beeper enable pin. + +Example: +	beeper: beeper { +		compatible = "gpio-beeper"; +		gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>; +	}; diff --git a/Documentation/devicetree/bindings/gpio/gpio_keys.txt b/Documentation/devicetree/bindings/input/gpio-keys.txt index 5c2c02140a6..5c2c02140a6 100644 --- a/Documentation/devicetree/bindings/gpio/gpio_keys.txt +++ b/Documentation/devicetree/bindings/input/gpio-keys.txt diff --git a/Documentation/devicetree/bindings/input/nvidia,tegra20-kbc.txt b/Documentation/devicetree/bindings/input/nvidia,tegra20-kbc.txt index 2995fae7ee4..0382b8bd69c 100644 --- a/Documentation/devicetree/bindings/input/nvidia,tegra20-kbc.txt +++ b/Documentation/devicetree/bindings/input/nvidia,tegra20-kbc.txt @@ -13,6 +13,12 @@ Required properties:    array of pin numbers which is used as column.  - linux,keymap: The keymap for keys as described in the binding document    devicetree/bindings/input/matrix-keymap.txt. +- clocks: Must contain one entry, for the module clock. +  See ../clocks/clock-bindings.txt for details. +- resets: Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names: Must include the following entries: +  - kbc  Optional properties, in addition to those specified by the shared  matrix-keyboard bindings: @@ -31,6 +37,9 @@ keyboard: keyboard {  	compatible = "nvidia,tegra20-kbc";  	reg = <0x7000e200 0x100>;  	interrupts = <0 85 0x04>; +	clocks = <&tegra_car 36>; +	resets = <&tegra_car 36>; +	reset-names = "kbc";  	nvidia,ghost-filter;  	nvidia,debounce-delay-ms = <640>;  	nvidia,kbc-row-pins = <0 1 2>;    /* pin 0, 1, 2 as rows */ diff --git a/Documentation/devicetree/bindings/input/qcom,pm8xxx-keypad.txt b/Documentation/devicetree/bindings/input/qcom,pm8xxx-keypad.txt new file mode 100644 index 00000000000..7d8cb92831d --- /dev/null +++ b/Documentation/devicetree/bindings/input/qcom,pm8xxx-keypad.txt @@ -0,0 +1,89 @@ +Qualcomm PM8xxx PMIC Keypad + +PROPERTIES + +- compatible: +	Usage: required +	Value type: <string> +	Definition: must be one of: +		    "qcom,pm8058-keypad" +		    "qcom,pm8921-keypad" + +- reg: +	Usage: required +	Value type: <prop-encoded-array> +	Definition: address of keypad control register + +- interrupts: +	Usage: required +	Value type: <prop-encoded-array> +	Definition: the first interrupt specifies the key sense interrupt +		    and the second interrupt specifies the key stuck interrupt. +		    The format of the specifier is defined by the binding +		    document describing the node's interrupt parent. + +- linux,keymap: +	Usage: required +	Value type: <prop-encoded-array> +	Definition: the linux keymap. More information can be found in +		    input/matrix-keymap.txt. + +- linux,keypad-no-autorepeat: +	Usage: optional +	Value type: <bool> +	Definition: don't enable autorepeat feature. + +- linux,keypad-wakeup: +	Usage: optional +	Value type: <bool> +	Definition: use any event on keypad as wakeup event. + +- keypad,num-rows: +	Usage: required +	Value type: <u32> +	Definition: number of rows in the keymap. More information can be found +		    in input/matrix-keymap.txt. + +- keypad,num-columns: +	Usage: required +	Value type: <u32> +	Definition: number of columns in the keymap. More information can be +		    found in input/matrix-keymap.txt. + +- debounce: +	Usage: optional +	Value type: <u32> +	Definition: time in microseconds that key must be pressed or release +		    for key sense interrupt to trigger. + +- scan-delay: +	Usage: optional +	Value type: <u32> +	Definition: time in microseconds to pause between successive scans +		    of the matrix array. + +- row-hold: +	Usage: optional +	Value type: <u32> +	Definition: time in nanoseconds to pause between scans of each row in +		    the matrix array. + +EXAMPLE + +	keypad@148 { +		compatible = "qcom,pm8921-keypad"; +		reg = <0x148>; +		interrupt-parent = <&pmicintc>; +		interrupts = <74 1>, <75 1>; +		linux,keymap = < +			MATRIX_KEY(0, 0, KEY_VOLUMEUP) +			MATRIX_KEY(0, 1, KEY_VOLUMEDOWN) +			MATRIX_KEY(0, 2, KEY_CAMERA_FOCUS) +			MATRIX_KEY(0, 3, KEY_CAMERA) +			>; +		keypad,num-rows = <1>; +		keypad,num-columns = <5>; +		debounce = <15>; +		scan-delay = <32>; +		row-hold = <91500>; +	}; diff --git a/Documentation/devicetree/bindings/input/qcom,pm8xxx-pwrkey.txt b/Documentation/devicetree/bindings/input/qcom,pm8xxx-pwrkey.txt new file mode 100644 index 00000000000..588536cc96e --- /dev/null +++ b/Documentation/devicetree/bindings/input/qcom,pm8xxx-pwrkey.txt @@ -0,0 +1,46 @@ +Qualcomm PM8xxx PMIC Power Key + +PROPERTIES + +- compatible: +	Usage: required +	Value type: <string> +	Definition: must be one of: +		    "qcom,pm8058-pwrkey" +		    "qcom,pm8921-pwrkey" + +- reg: +	Usage: required +	Value type: <prop-encoded-array> +	Definition: address of power key control register + +- interrupts: +	Usage: required +	Value type: <prop-encoded-array> +	Definition: the first interrupt specifies the key release interrupt +		    and the second interrupt specifies the key press interrupt. +		    The format of the specifier is defined by the binding +		    document describing the node's interrupt parent. + +- debounce: +	Usage: optional +	Value type: <u32> +	Definition: time in microseconds that key must be pressed or release +		    for state change interrupt to trigger. + +- pull-up: +	Usage: optional +	Value type: <empty> +	Definition: presence of this property indicates that the KPDPWR_N pin +		    should be configured for pull up. + +EXAMPLE + +	pwrkey@1c { +		compatible = "qcom,pm8921-pwrkey"; +		reg = <0x1c>; +		interrupt-parent = <&pmicintc>; +		interrupts = <50 1>, <51 1>; +		debounce = <15625>; +		pull-up; +	}; diff --git a/Documentation/devicetree/bindings/input/qcom,pm8xxx-vib.txt b/Documentation/devicetree/bindings/input/qcom,pm8xxx-vib.txt new file mode 100644 index 00000000000..4ed467b1e40 --- /dev/null +++ b/Documentation/devicetree/bindings/input/qcom,pm8xxx-vib.txt @@ -0,0 +1,22 @@ +Qualcomm PM8xxx PMIC Vibrator + +PROPERTIES + +- compatible: +	Usage: required +	Value type: <string> +	Definition: must be one of: +		    "qcom,pm8058-vib" +		    "qcom,pm8921-vib" + +- reg: +	Usage: required +	Value type: <prop-encoded-array> +	Definition: address of vibration control register + +EXAMPLE + +	vibrator@4a { +		compatible = "qcom,pm8058-vib"; +		reg = <0x4a>; +	}; diff --git a/Documentation/devicetree/bindings/input/st-keyscan.txt b/Documentation/devicetree/bindings/input/st-keyscan.txt new file mode 100644 index 00000000000..51eb428e5c8 --- /dev/null +++ b/Documentation/devicetree/bindings/input/st-keyscan.txt @@ -0,0 +1,60 @@ +* ST Keyscan controller Device Tree bindings + +The ST keyscan controller Device Tree binding is based on the +matrix-keymap. + +Required properties: +- compatible: "st,sti-keyscan" + +- reg: Register base address and size of st-keyscan controller. + +- interrupts: Interrupt number for the st-keyscan controller. + +- clocks: Must contain one entry, for the module clock. +  See ../clocks/clock-bindings.txt for details. + +- pinctrl: Should specify pin control groups used for this controller. +  See ../pinctrl/pinctrl-bindings.txt for details. + +- linux,keymap: The keymap for keys as described in the binding document +  devicetree/bindings/input/matrix-keymap.txt. + +- keypad,num-rows: Number of row lines connected to the keypad controller. + +- keypad,num-columns: Number of column lines connected to the keypad +  controller. + +Optional property: +- st,debounce_us: Debouncing interval time in microseconds + +Example: + +keyscan: keyscan@fe4b0000 { +	compatible = "st,sti-keyscan"; +	reg = <0xfe4b0000 0x2000>; +	interrupts = <GIC_SPI 212 IRQ_TYPE_NONE>; +	clocks	= <&CLK_SYSIN>; +	pinctrl-names = "default"; +	pinctrl-0 = <&pinctrl_keyscan>; + +	keypad,num-rows = <4>; +	keypad,num-columns = <4>; +	st,debounce_us = <5000>; + +	linux,keymap = < MATRIX_KEY(0x00, 0x00, KEY_F13) +			 MATRIX_KEY(0x00, 0x01, KEY_F9) +			 MATRIX_KEY(0x00, 0x02, KEY_F5) +			 MATRIX_KEY(0x00, 0x03, KEY_F1) +			 MATRIX_KEY(0x01, 0x00, KEY_F14) +			 MATRIX_KEY(0x01, 0x01, KEY_F10) +			 MATRIX_KEY(0x01, 0x02, KEY_F6) +			 MATRIX_KEY(0x01, 0x03, KEY_F2) +			 MATRIX_KEY(0x02, 0x00, KEY_F15) +			 MATRIX_KEY(0x02, 0x01, KEY_F11) +			 MATRIX_KEY(0x02, 0x02, KEY_F7) +			 MATRIX_KEY(0x02, 0x03, KEY_F3) +			 MATRIX_KEY(0x03, 0x00, KEY_F16) +			 MATRIX_KEY(0x03, 0x01, KEY_F12) +			 MATRIX_KEY(0x03, 0x02, KEY_F8) +			 MATRIX_KEY(0x03, 0x03, KEY_F4) >; +	}; diff --git a/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt b/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt new file mode 100644 index 00000000000..76db96704a6 --- /dev/null +++ b/Documentation/devicetree/bindings/input/touchscreen/edt-ft5x06.txt @@ -0,0 +1,55 @@ +FocalTech EDT-FT5x06 Polytouch driver +===================================== + +There are 3 variants of the chip for various touch panel sizes +FT5206GE1  2.8" .. 3.8" +FT5306DE4  4.3" .. 7" +FT5406EE8  7"   .. 8.9" + +The software interface is identical for all those chips, so that +currently there is no need for the driver to distinguish between the +different chips. Nevertheless distinct compatible strings are used so +that a distinction can be added if necessary without changing the DT +bindings. + + +Required properties: + - compatible:  "edt,edt-ft5206" +           or:  "edt,edt-ft5306" +           or:  "edt,edt-ft5406" + + - reg:         I2C slave address of the chip (0x38) + - interrupt-parent: a phandle pointing to the interrupt controller +                     serving the interrupt for this chip + - interrupts:       interrupt specification for the touchdetect +                     interrupt + +Optional properties: + - reset-gpios: GPIO specification for the RESET input + - wake-gpios:  GPIO specification for the WAKE input + + - pinctrl-names: should be "default" + - pinctrl-0:   a phandle pointing to the pin settings for the +                control gpios + + - threshold:   allows setting the "click"-threshold in the range +                from 20 to 80. + + - gain:        allows setting the sensitivity in the range from 0 to +                31. Note that lower values indicate higher +                sensitivity. + + - offset:      allows setting the edge compensation in the range from +                0 to 31. + +Example: +	polytouch: edt-ft5x06@38 { +		compatible = "edt,edt-ft5406", "edt,edt-ft5x06"; +		reg = <0x38>; +		pinctrl-names = "default"; +		pinctrl-0 = <&edt_ft5x06_pins>; +		interrupt-parent = <&gpio2>; +		interrupts = <5 0>; +		reset-gpios = <&gpio2 6 1>; +		wake-gpios = <&gpio4 9 0>; +	}; diff --git a/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt b/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt new file mode 100644 index 00000000000..aef57791f40 --- /dev/null +++ b/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt @@ -0,0 +1,20 @@ +sun4i resistive touchscreen controller +-------------------------------------- + +Required properties: + - compatible: "allwinner,sun4i-a10-ts" + - reg: mmio address range of the chip + - interrupts: interrupt to which the chip is connected + +Optional properties: + - allwinner,ts-attached: boolean indicating that an actual touchscreen is +			  attached to the controller + +Example: + +	rtp: rtp@01c25000 { +		compatible = "allwinner,sun4i-a10-ts"; +		reg = <0x01c25000 0x100>; +		interrupts = <29>; +		allwinner,ts-attached; +	}; diff --git a/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt b/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt index 491c97b7838..878549ba814 100644 --- a/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt +++ b/Documentation/devicetree/bindings/input/touchscreen/ti-tsc-adc.txt @@ -6,7 +6,7 @@ Required properties:  	ti,wires: Wires refer to application modes i.e. 4/5/8 wire touchscreen  		  support on the platform.  	ti,x-plate-resistance: X plate resistance -	ti,coordiante-readouts: The sequencer supports a total of 16 +	ti,coordinate-readouts: The sequencer supports a total of 16  				programmable steps each step is used to  				read a single coordinate. A single                                  readout is enough but multiple reads can diff --git a/Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt b/Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt new file mode 100644 index 00000000000..d8e06163c54 --- /dev/null +++ b/Documentation/devicetree/bindings/input/touchscreen/touchscreen.txt @@ -0,0 +1,27 @@ +General Touchscreen Properties: + +Optional properties for Touchscreens: + - touchscreen-size-x		: horizontal resolution of touchscreen +				  (in pixels) + - touchscreen-size-y		: vertical resolution of touchscreen +				  (in pixels) + - touchscreen-max-pressure	: maximum reported pressure (arbitrary range +				  dependent on the controller) + - touchscreen-fuzz-x		: horizontal noise value of the absolute input +				  device (in pixels) + - touchscreen-fuzz-y		: vertical noise value of the absolute input +				  device (in pixels) + - touchscreen-fuzz-pressure	: pressure noise value of the absolute input +				  device (arbitrary range dependent on the +				  controller) + - touchscreen-inverted-x	: X axis is inverted (boolean) + - touchscreen-inverted-y	: Y axis is inverted (boolean) + +Deprecated properties for Touchscreens: + - x-size			: deprecated name for touchscreen-size-x + - y-size			: deprecated name for touchscreen-size-y + - moving-threshold		: deprecated name for a combination of +				  touchscreen-fuzz-x and touchscreen-fuzz-y + - contact-threshold		: deprecated name for touchscreen-fuzz-pressure + - x-invert			: deprecated name for touchscreen-inverted-x + - y-invert			: deprecated name for touchscreen-inverted-y diff --git a/Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt b/Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt new file mode 100644 index 00000000000..4b641c7bf1c --- /dev/null +++ b/Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt @@ -0,0 +1,42 @@ +* Texas Instruments tsc2005 touchscreen controller + +Required properties: + - compatible		      : "ti,tsc2005" + - reg			      : SPI device address + - spi-max-frequency	      : Maximal SPI speed + - interrupts		      : IRQ specifier + - reset-gpios		      : GPIO specifier + - vio-supply                 : Regulator specifier + +Optional properties: + - ti,x-plate-ohms	      : integer, resistance of the touchscreen's X plates +				in ohm (defaults to 280) + - ti,esd-recovery-timeout-ms : integer, if the touchscreen does not respond after +				the configured time (in milli seconds), the driver +				will reset it. This is disabled by default. + - properties defined in touchscreen.txt + +Example: + +&mcspi1 { +	tsc2005@0 { +		compatible = "ti,tsc2005"; +		spi-max-frequency = <6000000>; +		reg = <0>; + +		vio-supply = <&vio>; + +		reset-gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>; /* 104 */ +		interrupts-extended = <&gpio4 4 IRQ_TYPE_EDGE_RISING>; /* 100 */ + +		touchscreen-fuzz-x = <4>; +		touchscreen-fuzz-y = <7>; +		touchscreen-fuzz-pressure = <2>; +		touchscreen-max-x = <4096>; +		touchscreen-max-y = <4096>; +		touchscreen-max-pressure = <2048>; + +		ti,x-plate-ohms = <280>; +		ti,esd-recovery-timeout-ms = <8000>; +	}; +} diff --git a/Documentation/devicetree/bindings/input/touchscreen/tsc2007.txt b/Documentation/devicetree/bindings/input/touchscreen/tsc2007.txt new file mode 100644 index 00000000000..ec365e17223 --- /dev/null +++ b/Documentation/devicetree/bindings/input/touchscreen/tsc2007.txt @@ -0,0 +1,41 @@ +* Texas Instruments tsc2007 touchscreen controller + +Required properties: +- compatible: must be "ti,tsc2007". +- reg: I2C address of the chip. +- ti,x-plate-ohms: X-plate resistance in ohms. + +Optional properties: +- gpios: the interrupt gpio the chip is connected to (trough the penirq pin). +  The penirq pin goes to low when the panel is touched. +  (see GPIO binding[1] for more details). +- interrupt-parent: the phandle for the gpio controller +  (see interrupt binding[0]). +- interrupts: (gpio) interrupt to which the chip is connected +  (see interrupt binding[0]). +- ti,max-rt: maximum pressure. +- ti,fuzzx: specifies the absolute input fuzz x value. +  If set, it will permit noise in the data up to +- the value given to the fuzz +  parameter, that is used to filter noise from the event stream. +- ti,fuzzy: specifies the absolute input fuzz y value. +- ti,fuzzz: specifies the absolute input fuzz z value. +- ti,poll-period: how much time to wait (in milliseconds) before reading again the +  values from the tsc2007. + +[0]: Documentation/devicetree/bindings/interrupt-controller/interrupts.txt +[1]: Documentation/devicetree/bindings/gpio/gpio.txt + +Example: +	&i2c1 { +		/* ... */ +		tsc2007@49 { +			compatible = "ti,tsc2007"; +			reg = <0x49>; +			interrupt-parent = <&gpio4>; +			interrupts = <0x0 0x8>; +			gpios = <&gpio4 0 0>; +			ti,x-plate-ohms = <180>; +		}; + +		/* ... */ +	}; diff --git a/Documentation/devicetree/bindings/input/touchscreen/zforce_ts.txt b/Documentation/devicetree/bindings/input/touchscreen/zforce_ts.txt new file mode 100644 index 00000000000..2faf1f1fa39 --- /dev/null +++ b/Documentation/devicetree/bindings/input/touchscreen/zforce_ts.txt @@ -0,0 +1,30 @@ +* Neonode infrared touchscreen controller + +Required properties: +- compatible: must be "neonode,zforce" +- reg: I2C address of the chip +- interrupts: interrupt to which the chip is connected +- gpios: gpios the chip is connected to +  first one is the interrupt gpio and second one the reset gpio +- x-size: horizontal resolution of touchscreen +- y-size: vertical resolution of touchscreen + +Example: + +	i2c@00000000 { +		/* ... */ + +		zforce_ts@50 { +			compatible = "neonode,zforce"; +			reg = <0x50>; +			interrupts = <2 0>; + +			gpios = <&gpio5 6 0>, /* INT */ +				<&gpio5 9 0>; /* RST */ + +			x-size = <800>; +			y-size = <600>; +		}; + +		/* ... */ +	}; diff --git a/Documentation/devicetree/bindings/input/twl4030-keypad.txt b/Documentation/devicetree/bindings/input/twl4030-keypad.txt new file mode 100644 index 00000000000..e4be2f76a71 --- /dev/null +++ b/Documentation/devicetree/bindings/input/twl4030-keypad.txt @@ -0,0 +1,27 @@ +* TWL4030's Keypad Controller device tree bindings + +TWL4030's Keypad controller is used to interface a SoC with a matrix-type +keypad device. The keypad controller supports multiple row and column lines. +A key can be placed at each intersection of a unique row and a unique column. +The keypad controller can sense a key-press and key-release and report the +event using a interrupt to the cpu. + +This binding is based on the matrix-keymap binding with the following +changes: + + * keypad,num-rows and keypad,num-columns are required. + +Required SoC Specific Properties: +- compatible: should be one of the following +   - "ti,twl4030-keypad": For controllers compatible with twl4030 keypad +      controller. +- interrupt: should be one of the following +   - <1>: For controllers compatible with twl4030 keypad controller. + +Example: +	twl_keypad: keypad { +		compatible = "ti,twl4030-keypad"; +		interrupts = <1>; +		keypad,num-rows = <8>; +		keypad,num-columns = <8>; +	}; diff --git a/Documentation/devicetree/bindings/input/twl4030-pwrbutton.txt b/Documentation/devicetree/bindings/input/twl4030-pwrbutton.txt new file mode 100644 index 00000000000..c864a46cddc --- /dev/null +++ b/Documentation/devicetree/bindings/input/twl4030-pwrbutton.txt @@ -0,0 +1,21 @@ +Texas Instruments TWL family (twl4030) pwrbutton module + +This module is part of the TWL4030. For more details about the whole +chip see Documentation/devicetree/bindings/mfd/twl-familly.txt. + +This module provides a simple power button event via an Interrupt. + +Required properties: +- compatible: should be one of the following +   - "ti,twl4030-pwrbutton": For controllers compatible with twl4030 +- interrupts: should be one of the following +   - <8>: For controllers compatible with twl4030 + +Example: + +&twl { +	twl_pwrbutton: pwrbutton { +		compatible = "ti,twl4030-pwrbutton"; +		interrupts = <8>; +	}; +}; diff --git a/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt index 57edb30dbbc..b290ca150d3 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt +++ b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun4i-ic.txt @@ -2,20 +2,17 @@ Allwinner Sunxi Interrupt Controller  Required properties: -- compatible : should be "allwinner,sun4i-ic" +- compatible : should be "allwinner,sun4i-a10-ic"  - reg : Specifies base physical address and size of the registers.  - interrupt-controller : Identifies the node as an interrupt controller  - #interrupt-cells : Specifies the number of cells needed to encode an    interrupt source. The value shall be 1. -For the valid interrupt sources for your SoC, see the documentation in -sunxi/<soc>.txt -  Example:  intc: interrupt-controller { -	compatible = "allwinner,sun4i-ic"; +	compatible = "allwinner,sun4i-a10-ic";  	reg = <0x01c20400 0x400>;  	interrupt-controller; -	#interrupt-cells = <2>; +	#interrupt-cells = <1>;  }; diff --git a/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun67i-sc-nmi.txt b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun67i-sc-nmi.txt new file mode 100644 index 00000000000..d1c5cdabc3e --- /dev/null +++ b/Documentation/devicetree/bindings/interrupt-controller/allwinner,sun67i-sc-nmi.txt @@ -0,0 +1,27 @@ +Allwinner Sunxi NMI Controller +============================== + +Required properties: + +- compatible : should be "allwinner,sun7i-a20-sc-nmi" or +  "allwinner,sun6i-a31-sc-nmi" +- reg : Specifies base physical address and size of the registers. +- interrupt-controller : Identifies the node as an interrupt controller +- #interrupt-cells : Specifies the number of cells needed to encode an +  interrupt source. The value shall be 2. The first cell is the IRQ number, the +  second cell the trigger type as defined in interrupt.txt in this directory. +- interrupt-parent: Specifies the parent interrupt controller. +- interrupts: Specifies the interrupt line (NMI) which is handled by +  the interrupt controller in the parent controller's notation. This value +  shall be the NMI. + +Example: + +sc-nmi-intc@01c00030 { +	compatible = "allwinner,sun7i-a20-sc-nmi"; +	interrupt-controller; +	#interrupt-cells = <2>; +	reg = <0x01c00030 0x0c>; +	interrupt-parent = <&gic>; +	interrupts = <0 0 4>; +}; diff --git a/Documentation/devicetree/bindings/interrupt-controller/brcm,l2-intc.txt b/Documentation/devicetree/bindings/interrupt-controller/brcm,l2-intc.txt new file mode 100644 index 00000000000..448273a30a1 --- /dev/null +++ b/Documentation/devicetree/bindings/interrupt-controller/brcm,l2-intc.txt @@ -0,0 +1,29 @@ +Broadcom Generic Level 2 Interrupt Controller + +Required properties: + +- compatible: should be "brcm,l2-intc" +- reg: specifies the base physical address and size of the registers +- interrupt-controller: identifies the node as an interrupt controller +- #interrupt-cells: specifies the number of cells needed to encode an +  interrupt source. Should be 1. +- interrupt-parent: specifies the phandle to the parent interrupt controller +  this controller is cacaded from +- interrupts: specifies the interrupt line in the interrupt-parent irq space +  to be used for cascading + +Optional properties: + +- brcm,irq-can-wake: If present, this means the L2 controller can be used as a +  wakeup source for system suspend/resume. + +Example: + +hif_intr2_intc: interrupt-controller@f0441000 { +	compatible = "brcm,l2-intc"; +	reg = <0xf0441000 0x30>; +	interrupt-controller; +	#interrupt-cells = <1>; +	interrupt-parent = <&intc>; +	interrupts = <0x0 0x20 0x0>; +}; diff --git a/Documentation/devicetree/bindings/interrupt-controller/cirrus,clps711x-intc.txt b/Documentation/devicetree/bindings/interrupt-controller/cirrus,clps711x-intc.txt new file mode 100644 index 00000000000..759339c34e4 --- /dev/null +++ b/Documentation/devicetree/bindings/interrupt-controller/cirrus,clps711x-intc.txt @@ -0,0 +1,41 @@ +Cirrus Logic CLPS711X Interrupt Controller + +Required properties: + +- compatible: Should be "cirrus,clps711x-intc". +- reg: Specifies base physical address of the registers set. +- interrupt-controller: Identifies the node as an interrupt controller. +- #interrupt-cells: Specifies the number of cells needed to encode an +  interrupt source. The value shall be 1. + +The interrupt sources are as follows: +ID	Name	Description +--------------------------- +1:	BLINT	Battery low (FIQ) +3:	MCINT	Media changed (FIQ) +4:	CSINT	CODEC sound +5:	EINT1	External 1 +6:	EINT2	External 2 +7:	EINT3	External 3 +8:	TC1OI	TC1 under flow +9:	TC2OI	TC2 under flow +10:	RTCMI	RTC compare match +11:	TINT	64Hz tick +12:	UTXINT1	UART1 transmit FIFO half empty +13:	URXINT1	UART1 receive FIFO half full +14:	UMSINT	UART1 modem status changed +15:	SSEOTI	SSI1 end of transfer +16:	KBDINT	Keyboard +17:	SS2RX	SSI2 receive FIFO half or greater full +18:	SS2TX	SSI2 transmit FIFO less than half empty +28:	UTXINT2	UART2 transmit FIFO half empty +29:	URXINT2	UART2 receive FIFO half full +32:	DAIINT	DAI interface (FIQ) + +Example: +	intc: interrupt-controller { +		compatible = "cirrus,clps711x-intc"; +		reg = <0x80000000 0x4000>; +		interrupt-controller; +		#interrupt-cells = <1>; +	}; diff --git a/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt b/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt index 72a06c0ab1d..1486497a24c 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt +++ b/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt @@ -4,16 +4,33 @@ Specifying interrupt information for devices  1) Interrupt client nodes  ------------------------- -Nodes that describe devices which generate interrupts must contain an -"interrupts" property. This property must contain a list of interrupt -specifiers, one per output interrupt. The format of the interrupt specifier is -determined by the interrupt controller to which the interrupts are routed; see -section 2 below for details. +Nodes that describe devices which generate interrupts must contain an either an +"interrupts" property or an "interrupts-extended" property. These properties +contain a list of interrupt specifiers, one per output interrupt. The format of +the interrupt specifier is determined by the interrupt controller to which the +interrupts are routed; see section 2 below for details. + +  Example: +	interrupt-parent = <&intc1>; +	interrupts = <5 0>, <6 0>;  The "interrupt-parent" property is used to specify the controller to which  interrupts are routed and contains a single phandle referring to the interrupt  controller node. This property is inherited, so it may be specified in an -interrupt client node or in any of its parent nodes. +interrupt client node or in any of its parent nodes. Interrupts listed in the +"interrupts" property are always in reference to the node's interrupt parent. + +The "interrupts-extended" property is a special form for use when a node needs +to reference multiple interrupt parents. Each entry in this property contains +both the parent phandle and the interrupt specifier. "interrupts-extended" +should only be used when a device has multiple interrupt parents. + +  Example: +	interrupts-extended = <&intc1 5 1>, <&intc2 1 0>; + +A device node may contain either "interrupts" or "interrupts-extended", but not +both. If both properties are present, then the operating system should log an +error and use only the data in "interrupts".  2) Interrupt controller nodes  ----------------------------- diff --git a/Documentation/devicetree/bindings/interrupt-controller/lsi,zevio-intc.txt b/Documentation/devicetree/bindings/interrupt-controller/lsi,zevio-intc.txt new file mode 100644 index 00000000000..aee38e7c13e --- /dev/null +++ b/Documentation/devicetree/bindings/interrupt-controller/lsi,zevio-intc.txt @@ -0,0 +1,18 @@ +TI-NSPIRE interrupt controller + +Required properties: +- compatible: Compatible property value should be "lsi,zevio-intc". + +- reg: Physical base address of the controller and length of memory mapped +	region. + +- interrupt-controller : Identifies the node as an interrupt controller + +Example: + +interrupt-controller { +	compatible = "lsi,zevio-intc"; +	interrupt-controller; +	reg = <0xDC000000 0x1000>; +	#interrupt-cells = <1>; +}; diff --git a/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt b/Documentation/devicetree/bindings/interrupt-controller/marvell,armada-370-xp-mpic.txt index 61df564c0d2..5fc03134a99 100644 --- a/Documentation/devicetree/bindings/arm/armada-370-xp-mpic.txt +++ b/Documentation/devicetree/bindings/interrupt-controller/marvell,armada-370-xp-mpic.txt @@ -1,9 +1,11 @@ -Marvell Armada 370 and Armada XP Interrupt Controller +Marvell Armada 370, 375, 38x, XP Interrupt Controller  -----------------------------------------------------  Required properties:  - compatible: Should be "marvell,mpic"  - interrupt-controller: Identifies the node as an interrupt controller. +- msi-controller: Identifies the node as an PCI Message Signaled +  Interrupt controller.  - #interrupt-cells: The number of cells to define the interrupts. Should be 1.    The cell is the IRQ number @@ -14,7 +16,13 @@ Required properties:    automatically map to the interrupt controller registers of the    current CPU) +Optional properties: +- interrupts: If defined, then it indicates that this MPIC is +  connected as a slave to another interrupt controller. This is +  typically the case on Armada 375 and Armada 38x, where the MPIC is +  connected as a slave to the Cortex-A9 GIC. The provided interrupt +  indicate to which GIC interrupt the MPIC output is connected.  Example: @@ -24,6 +32,7 @@ Example:                #address-cells = <1>;                #size-cells = <1>;                interrupt-controller; +              msi-controller;                reg = <0xd0020a00 0x1d0>,                      <0xd0021070 0x58>;          }; diff --git a/Documentation/devicetree/bindings/interrupt-controller/snps,dw-apb-ictl.txt b/Documentation/devicetree/bindings/interrupt-controller/snps,dw-apb-ictl.txt new file mode 100644 index 00000000000..492911744ca --- /dev/null +++ b/Documentation/devicetree/bindings/interrupt-controller/snps,dw-apb-ictl.txt @@ -0,0 +1,32 @@ +Synopsys DesignWare APB interrupt controller (dw_apb_ictl) + +Synopsys DesignWare provides interrupt controller IP for APB known as +dw_apb_ictl. The IP is used as secondary interrupt controller in some SoCs with +APB bus, e.g. Marvell Armada 1500. + +Required properties: +- compatible: shall be "snps,dw-apb-ictl" +- reg: physical base address of the controller and length of memory mapped +  region starting with ENABLE_LOW register +- interrupt-controller: identifies the node as an interrupt controller +- #interrupt-cells: number of cells to encode an interrupt-specifier, shall be 1 +- interrupts: interrupt reference to primary interrupt controller +- interrupt-parent: (optional) reference specific primary interrupt controller + +The interrupt sources map to the corresponding bits in the interrupt +registers, i.e. +- 0 maps to bit 0 of low interrupts, +- 1 maps to bit 1 of low interrupts, +- 32 maps to bit 0 of high interrupts, +- 33 maps to bit 1 of high interrupts, +- (optional) fast interrupts start at 64. + +Example: +	aic: interrupt-controller@3000 { +		compatible = "snps,dw-apb-ictl"; +		reg = <0x3000 0xc00>; +		interrupt-controller; +		#interrupt-cells = <1>; +		interrupt-parent = <&gic>; +		interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; +	}; diff --git a/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun4i-a10.txt b/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun4i-a10.txt deleted file mode 100644 index 76b98c83449..00000000000 --- a/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun4i-a10.txt +++ /dev/null @@ -1,89 +0,0 @@ -Allwinner A10 (sun4i) interrupt sources ---------------------------------------- - -The interrupt sources available for the Allwinner A10 SoC are the -following one: - -0: ENMI -1: UART0 -2: UART1 -3: UART2 -4: UART3 -5: IR0 -6: IR1 -7: I2C0 -8: I2C1 -9: I2C2 -10: SPI0 -11: SPI1 -12: SPI2 -13: SPDIF -14: AC97 -15: TS -16: I2S -17: UART4 -18: UART5 -19: UART6 -20: UART7 -21: KEYPAD -22: TIMER0 -23: TIMER1 -24: TIMER2 -25: TIMER3 -26: CAN -27: DMA -28: PIO -29: TOUCH_PANEL -30: AUDIO_CODEC -31: LRADC -32: MMC0 -33: MMC1 -34: MMC2 -35: MMC3 -36: MEMSTICK -37: NAND -38: USB0 -39: USB1 -40: USB2 -41: SCR -42: CSI0 -43: CSI1 -44: LCDCTRL0 -45: LCDCTRL1 -46: MP -47: DEFEBE0 -48: DEFEBE1 -49: PMU -50: SPI3 -51: TZASC -52: PATA -53: VE -54: SS -55: EMAC -56: SATA -57: GPS -58: HDMI -59: TVE -60: ACE -61: TVD -62: PS2_0 -63: PS2_1 -64: USB3 -65: USB4 -66: PLE_PFM -67: TIMER4 -68: TIMER5 -69: GPU_GP -70: GPU_GPMMU -71: GPU_PP0 -72: GPU_PPMMU0 -73: GPU_PMU -74: GPU_RSV0 -75: GPU_RSV1 -76: GPU_RSV2 -77: GPU_RSV3 -78: GPU_RSV4 -79: GPU_RSV5 -80: GPU_RSV6 -82: SYNC_TIMER0 -83: SYNC_TIMER1 diff --git a/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun5i-a13.txt b/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun5i-a13.txt deleted file mode 100644 index 2ec3b5ce1a0..00000000000 --- a/Documentation/devicetree/bindings/interrupt-controller/sunxi/sun5i-a13.txt +++ /dev/null @@ -1,55 +0,0 @@ -Allwinner A13 (sun5i) interrupt sources ---------------------------------------- - -The interrupt sources available for the Allwinner A13 SoC are the -following one: - -0: ENMI -2: UART1 -4: UART3 -5: IR -7: I2C0 -8: I2C1 -9: I2C2 -10: SPI0 -11: SPI1 -12: SPI2 -22: TIMER0 -23: TIMER1 -24: TIMER2 -25: TIMER3 -27: DMA -28: PIO -29: TOUCH_PANEL -30: AUDIO_CODEC -31: LRADC -32: MMC0 -33: MMC1 -34: MMC2 -37: NAND -38: USB OTG -39: USB EHCI -40: USB OHCI -42: CSI -44: LCDCTRL -47: DEFEBE -49: PMU -53: VE -54: SS -66: PLE_PFM -67: TIMER4 -68: TIMER5 -69: GPU_GP -70: GPU_GPMMU -71: GPU_PP0 -72: GPU_PPMMU0 -73: GPU_PMU -74: GPU_RSV0 -75: GPU_RSV1 -76: GPU_RSV2 -77: GPU_RSV3 -78: GPU_RSV4 -79: GPU_RSV5 -80: GPU_RSV6 -82: SYNC_TIMER0 -83: SYNC_TIMER1 diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu.txt b/Documentation/devicetree/bindings/iommu/arm,smmu.txt index e34c6cdd8ba..f284b99402b 100644 --- a/Documentation/devicetree/bindings/iommu/arm,smmu.txt +++ b/Documentation/devicetree/bindings/iommu/arm,smmu.txt @@ -48,6 +48,12 @@ conditions.                    from the mmu-masters towards memory) node for this                    SMMU. +- calxeda,smmu-secure-config-access : Enable proper handling of buggy +                  implementations that always use secure access to +                  SMMU configuration registers. In this case non-secure +                  aliases of secure registers have to be used during +                  SMMU configuration. +  Example:          smmu { diff --git a/Documentation/devicetree/bindings/iommu/samsung,sysmmu.txt b/Documentation/devicetree/bindings/iommu/samsung,sysmmu.txt new file mode 100644 index 00000000000..6fa4c737af2 --- /dev/null +++ b/Documentation/devicetree/bindings/iommu/samsung,sysmmu.txt @@ -0,0 +1,70 @@ +Samsung Exynos IOMMU H/W, System MMU (System Memory Management Unit) + +Samsung's Exynos architecture contains System MMUs that enables scattered +physical memory chunks visible as a contiguous region to DMA-capable peripheral +devices like MFC, FIMC, FIMD, GScaler, FIMC-IS and so forth. + +System MMU is an IOMMU and supports identical translation table format to +ARMv7 translation tables with minimum set of page properties including access +permissions, shareability and security protection. In addition, System MMU has +another capabilities like L2 TLB or block-fetch buffers to minimize translation +latency. + +System MMUs are in many to one relation with peripheral devices, i.e. single +peripheral device might have multiple System MMUs (usually one for each bus +master), but one System MMU can handle transactions from only one peripheral +device. The relation between a System MMU and the peripheral device needs to be +defined in device node of the peripheral device. + +MFC in all Exynos SoCs and FIMD, M2M Scalers and G2D in Exynos5420 has 2 System +MMUs. +* MFC has one System MMU on its left and right bus. +* FIMD in Exynos5420 has one System MMU for window 0 and 4, the other system MMU +  for window 1, 2 and 3. +* M2M Scalers and G2D in Exynos5420 has one System MMU on the read channel and +  the other System MMU on the write channel. +The drivers must consider how to handle those System MMUs. One of the idea is +to implement child devices or sub-devices which are the client devices of the +System MMU. + +Note: +The current DT binding for the Exynos System MMU is incomplete. +The following properties can be removed or changed, if found incompatible with +the "Generic IOMMU Binding" support for attaching devices to the IOMMU. + +Required properties: +- compatible: Should be "samsung,exynos-sysmmu" +- reg: A tuple of base address and size of System MMU registers. +- interrupt-parent: The phandle of the interrupt controller of System MMU +- interrupts: An interrupt specifier for interrupt signal of System MMU, +	      according to the format defined by a particular interrupt +	      controller. +- clock-names: Should be "sysmmu" if the System MMU is needed to gate its clock. +	       Optional "master" if the clock to the System MMU is gated by +	       another gate clock other than "sysmmu". +	       Exynos4 SoCs, there needs no "master" clock. +	       Exynos5 SoCs, some System MMUs must have "master" clocks. +- clocks: Required if the System MMU is needed to gate its clock. +- samsung,power-domain: Required if the System MMU is needed to gate its power. +	  Please refer to the following document: +	  Documentation/devicetree/bindings/arm/exynos/power_domain.txt + +Examples: +	gsc_0: gsc@13e00000 { +		compatible = "samsung,exynos5-gsc"; +		reg = <0x13e00000 0x1000>; +		interrupts = <0 85 0>; +		samsung,power-domain = <&pd_gsc>; +		clocks = <&clock CLK_GSCL0>; +		clock-names = "gscl"; +	}; + +	sysmmu_gsc0: sysmmu@13E80000 { +		compatible = "samsung,exynos-sysmmu"; +		reg = <0x13E80000 0x1000>; +		interrupt-parent = <&combiner>; +		interrupts = <2 0>; +		clock-names = "sysmmu", "master"; +		clocks = <&clock CLK_SMMU_GSCL0>, <&clock CLK_GSCL0>; +		samsung,power-domain = <&pd_gsc>; +	}; diff --git a/Documentation/devicetree/bindings/iommu/ti,omap-iommu.txt b/Documentation/devicetree/bindings/iommu/ti,omap-iommu.txt new file mode 100644 index 00000000000..42531dc387a --- /dev/null +++ b/Documentation/devicetree/bindings/iommu/ti,omap-iommu.txt @@ -0,0 +1,26 @@ +OMAP2+ IOMMU + +Required properties: +- compatible : Should be one of, +		"ti,omap2-iommu" for OMAP2/OMAP3 IOMMU instances +		"ti,omap4-iommu" for OMAP4/OMAP5 IOMMU instances +		"ti,dra7-iommu" for DRA7xx IOMMU instances +- ti,hwmods  : Name of the hwmod associated with the IOMMU instance +- reg        : Address space for the configuration registers +- interrupts : Interrupt specifier for the IOMMU instance + +Optional properties: +- ti,#tlb-entries : Number of entries in the translation look-aside buffer. +                    Should be either 8 or 32 (default: 32) +- ti,iommu-bus-err-back : Indicates the IOMMU instance supports throwing +		          back a bus error response on MMU faults. + +Example: +	/* OMAP3 ISP MMU */ +	mmu_isp: mmu@480bd400 { +		compatible = "ti,omap2-iommu"; +		reg = <0x480bd400 0x80>; +		interrupts = <24>; +		ti,hwmods = "mmu_isp"; +		ti,#tlb-entries = <8>; +	}; diff --git a/Documentation/devicetree/bindings/leds/leds-gpio.txt b/Documentation/devicetree/bindings/leds/leds-gpio.txt index df1b3080f6b..f77148f372e 100644 --- a/Documentation/devicetree/bindings/leds/leds-gpio.txt +++ b/Documentation/devicetree/bindings/leds/leds-gpio.txt @@ -21,6 +21,8 @@ LED sub-node properties:    on).  The "keep" setting will keep the LED at whatever its current    state is, without producing a glitch.  The default is off if this    property is not present. +- retain-state-suspended: (optional) The suspend state can be retained.Such +  as charge-led gpio.  Examples: @@ -50,3 +52,13 @@ run-control {  		default-state = "on";  	};  }; + +leds { +	compatible = "gpio-leds"; + +	charger-led { +		gpios = <&gpio1 2 0>; +		linux,default-trigger = "max8903-charger-charging"; +		retain-state-suspended; +	}; +}; diff --git a/Documentation/devicetree/bindings/leds/leds-lp55xx.txt b/Documentation/devicetree/bindings/leds/leds-lp55xx.txt index a61727f9a6d..1b66a413fb9 100644 --- a/Documentation/devicetree/bindings/leds/leds-lp55xx.txt +++ b/Documentation/devicetree/bindings/leds/leds-lp55xx.txt @@ -1,7 +1,13 @@  Binding for TI/National Semiconductor LP55xx Led Drivers  Required properties: -- compatible: "national,lp5521" or "national,lp5523" or "ti,lp5562" or "ti,lp8501" +- compatible: one of +	national,lp5521 +	national,lp5523 +	ti,lp55231 +	ti,lp5562 +	ti,lp8501 +  - reg: I2C slave address  - clock-mode: Input clock mode, (0: automode, 1: internal, 2: external) @@ -10,6 +16,7 @@ Each child has own specific current settings  - max-cur: Maximun current at each led channel.  Optional properties: +- enable-gpio: GPIO attached to the chip's enable pin  - label: Used for naming LEDs  - pwr-sel: LP8501 specific property. Power selection for output channels.           0: D1~9 are connected to VDD @@ -17,12 +24,15 @@ Optional properties:           2: D1~6 with VOUT, D7~9 with VDD           3: D1~9 are connected to VOUT -Alternatively, each child can have specific channel name -- chan-name: Name of each channel name +Alternatively, each child can have a specific channel name and trigger: +- chan-name (optional): name of channel +- linux,default-trigger (optional): see +  Documentation/devicetree/bindings/leds/common.txt  example 1) LP5521  3 LED channels, external clock used. Channel names are 'lp5521_pri:channel0', -'lp5521_pri:channel1' and 'lp5521_pri:channel2' +'lp5521_pri:channel1' and 'lp5521_pri:channel2', with a heartbeat trigger +on channel 0.  lp5521@32 {  	compatible = "national,lp5521"; @@ -33,6 +43,7 @@ lp5521@32 {  	chan0 {  		led-cur = /bits/ 8 <0x2f>;  		max-cur = /bits/ 8 <0x5f>; +		linux,default-trigger = "heartbeat";  	};  	chan1 { diff --git a/Documentation/devicetree/bindings/leds/leds-pwm.txt b/Documentation/devicetree/bindings/leds/leds-pwm.txt index 7297107cf83..6c6583c35f2 100644 --- a/Documentation/devicetree/bindings/leds/leds-pwm.txt +++ b/Documentation/devicetree/bindings/leds/leds-pwm.txt @@ -13,6 +13,8 @@ LED sub-node properties:    For the pwms and pwm-names property please refer to:    Documentation/devicetree/bindings/pwm/pwm.txt  - max-brightness : Maximum brightness possible for the LED +- active-low : (optional) For PWMs where the LED is wired to supply +  rather than ground.  - label :  (optional)    see Documentation/devicetree/bindings/leds/common.txt  - linux,default-trigger :  (optional) diff --git a/Documentation/devicetree/bindings/leds/tca6507.txt b/Documentation/devicetree/bindings/leds/tca6507.txt index 80ff3dfb1f3..d7221b84987 100644 --- a/Documentation/devicetree/bindings/leds/tca6507.txt +++ b/Documentation/devicetree/bindings/leds/tca6507.txt @@ -2,6 +2,13 @@ LEDs connected to tca6507  Required properties:  - compatible : should be : "ti,tca6507". +- #address-cells: must be 1 +- #size-cells: must be 0 +- reg: typically 0x45. + +Optional properties: +- gpio-controller: allows lines to be used as output-only GPIOs. +- #gpio-cells: if present, must be 0.  Each led is represented as a sub-node of the ti,tca6507 device. @@ -10,6 +17,7 @@ LED sub-node properties:  - reg : number of LED line (could be from 0 to 6)  - linux,default-trigger : (optional)     see Documentation/devicetree/bindings/leds/common.txt +- compatible: either "led" (the default) or "gpio".  Examples: @@ -19,6 +27,9 @@ tca6507@45 {  	#size-cells = <0>;  	reg = <0x45>; +	gpio-controller; +	#gpio-cells = <2>; +  	led0: red-aux@0 {  		label = "red:aux";  		reg = <0x0>; @@ -29,5 +40,10 @@ tca6507@45 {  		reg = <0x5>;  		linux,default-trigger = "default-on";  	}; + +	wifi-reset@6 { +		reg = <0x6>; +		compatible = "gpio"; +	};  }; diff --git a/Documentation/devicetree/bindings/marvell.txt b/Documentation/devicetree/bindings/marvell.txt index f7a0da6b402..ea2b16ced49 100644 --- a/Documentation/devicetree/bindings/marvell.txt +++ b/Documentation/devicetree/bindings/marvell.txt @@ -79,7 +79,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd.     Required properties:       - #address-cells : Should be <1>       - #size-cells : Should be <0> -     - device_type : Should be "mdio"       - compatible : Should be "marvell,mv64360-mdio"     Example: @@ -87,7 +86,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd.       mdio {  	     #address-cells = <1>;  	     #size-cells = <0>; -	     device_type = "mdio";  	     compatible = "marvell,mv64360-mdio";  	     ethernet-phy@0 { @@ -132,7 +130,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd.     Ethernet port node     Required properties: -     - device_type : Should be "network".       - compatible : Should be "marvell,mv64360-eth".       - reg : Should be <0>, <1>, or <2>, according to which registers         within the silicon block the device uses. @@ -145,7 +142,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd.     Example Discovery Ethernet port node:       ethernet@0 { -	     device_type = "network";  	     compatible = "marvell,mv64360-eth";  	     reg = <0>;  	     interrupts = <32>; @@ -159,7 +155,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd.     c) Marvell Discovery PHY nodes     Required properties: -     - device_type : Should be "ethernet-phy"       - interrupts : <a> where a is the interrupt number for this phy.       - interrupt-parent : the phandle for the interrupt controller that         services interrupts for this device. @@ -167,7 +162,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd.     Example Discovery PHY node:       ethernet-phy@1 { -	     device_type = "ethernet-phy";  	     compatible = "broadcom,bcm5421";  	     interrupts = <76>;      /* GPP 12 */  	     interrupt-parent = <&PIC>; @@ -271,7 +265,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd.     serial port.     Required properties: -     - device_type : "serial"       - compatible : "marvell,mv64360-mpsc"       - reg : Offset and length of the register set for this device       - sdma : the phandle for the SDMA node used by this port @@ -288,7 +281,6 @@ prefixed with the string "marvell,", for Marvell Technology Group Ltd.     Example Discovery MPSCINTR node:       mpsc@8000 { -	     device_type = "serial";  	     compatible = "marvell,mv64360-mpsc";  	     reg = <0x8000 0x38>;  	     virtual-reg = <0xf1008000>; diff --git a/Documentation/devicetree/bindings/media/exynos-jpeg-codec.txt b/Documentation/devicetree/bindings/media/exynos-jpeg-codec.txt new file mode 100644 index 00000000000..937b755baf8 --- /dev/null +++ b/Documentation/devicetree/bindings/media/exynos-jpeg-codec.txt @@ -0,0 +1,11 @@ +Samsung S5P/EXYNOS SoC series JPEG codec + +Required properties: + +- compatible	: should be one of: +		  "samsung,s5pv210-jpeg", "samsung,exynos4210-jpeg"; +- reg		: address and length of the JPEG codec IP register set; +- interrupts	: specifies the JPEG codec IP interrupt; +- clocks	: should contain the JPEG codec IP gate clock specifier, from the +		  common clock bindings; +- clock-names	: should contain "jpeg" entry. diff --git a/Documentation/devicetree/bindings/media/i2c/adv7604.txt b/Documentation/devicetree/bindings/media/i2c/adv7604.txt new file mode 100644 index 00000000000..c27cede3bd6 --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/adv7604.txt @@ -0,0 +1,70 @@ +* Analog Devices ADV7604/11 video decoder with HDMI receiver + +The ADV7604 and ADV7611 are multiformat video decoders with an integrated HDMI +receiver. The ADV7604 has four multiplexed HDMI inputs and one analog input, +and the ADV7611 has one HDMI input and no analog input. + +These device tree bindings support the ADV7611 only at the moment. + +Required Properties: + +  - compatible: Must contain one of the following +    - "adi,adv7611" for the ADV7611 + +  - reg: I2C slave address + +  - hpd-gpios: References to the GPIOs that control the HDMI hot-plug +    detection pins, one per HDMI input. The active flag indicates the GPIO +    level that enables hot-plug detection. + +The device node must contain one 'port' child node per device input and output +port, in accordance with the video interface bindings defined in +Documentation/devicetree/bindings/media/video-interfaces.txt. The port nodes +are numbered as follows. + +  Port			ADV7611 +------------------------------------------------------------ +  HDMI			0 +  Digital output	1 + +The digital output port node must contain at least one endpoint. + +Optional Properties: + +  - reset-gpios: Reference to the GPIO connected to the device's reset pin. + +Optional Endpoint Properties: + +  The following three properties are defined in video-interfaces.txt and are +  valid for source endpoints only. + +  - hsync-active: Horizontal synchronization polarity. Defaults to active low. +  - vsync-active: Vertical synchronization polarity. Defaults to active low. +  - pclk-sample: Pixel clock polarity. Defaults to output on the falling edge. + +  If none of hsync-active, vsync-active and pclk-sample is specified the +  endpoint will use embedded BT.656 synchronization. + + +Example: + +	hdmi_receiver@4c { +		compatible = "adi,adv7611"; +		reg = <0x4c>; + +		reset-gpios = <&ioexp 0 GPIO_ACTIVE_LOW>; +		hpd-gpios = <&ioexp 2 GPIO_ACTIVE_HIGH>; + +		#address-cells = <1>; +		#size-cells = <0>; + +		port@0 { +			reg = <0>; +		}; +		port@1 { +			reg = <1>; +			hdmi_in: endpoint { +				remote-endpoint = <&ccdc_in>; +			}; +		}; +	}; diff --git a/Documentation/devicetree/bindings/media/img-ir-rev1.txt b/Documentation/devicetree/bindings/media/img-ir-rev1.txt new file mode 100644 index 00000000000..5434ce61b92 --- /dev/null +++ b/Documentation/devicetree/bindings/media/img-ir-rev1.txt @@ -0,0 +1,34 @@ +* ImgTec Infrared (IR) decoder version 1 + +This binding is for Imagination Technologies' Infrared decoder block, +specifically major revision 1. + +Required properties: +- compatible:		Should be "img,ir-rev1" +- reg:			Physical base address of the controller and length of +			memory mapped region. +- interrupts:		The interrupt specifier to the cpu. + +Optional properties: +- clocks:		List of clock specifiers as described in standard +			clock bindings. +			Up to 3 clocks may be specified in the following order: +			1st:	Core clock (defaults to 32.768KHz if omitted). +			2nd:	System side (fast) clock. +			3rd:	Power modulation clock. +- clock-names:		List of clock names corresponding to the clocks +			specified in the clocks property. +			Accepted clock names are: +			"core":	Core clock. +			"sys":	System clock. +			"mod":	Power modulation clock. + +Example: + +	ir@02006200 { +		compatible = "img,ir-rev1"; +		reg = <0x02006200 0x100>; +		interrupts = <29 4>; +		clocks = <&clk_32khz>; +		clock-names =  "core"; +	}; diff --git a/Documentation/devicetree/bindings/media/renesas,vsp1.txt b/Documentation/devicetree/bindings/media/renesas,vsp1.txt new file mode 100644 index 00000000000..87fe08abf36 --- /dev/null +++ b/Documentation/devicetree/bindings/media/renesas,vsp1.txt @@ -0,0 +1,43 @@ +* Renesas VSP1 Video Processing Engine + +The VSP1 is a video processing engine that supports up-/down-scaling, alpha +blending, color space conversion and various other image processing features. +It can be found in the Renesas R-Car second generation SoCs. + +Required properties: + +  - compatible: Must contain "renesas,vsp1" + +  - reg: Base address and length of the registers block for the VSP1. +  - interrupts: VSP1 interrupt specifier. +  - clocks: A phandle + clock-specifier pair for the VSP1 functional clock. + +  - renesas,#rpf: Number of Read Pixel Formatter (RPF) modules in the VSP1. +  - renesas,#uds: Number of Up Down Scaler (UDS) modules in the VSP1. +  - renesas,#wpf: Number of Write Pixel Formatter (WPF) modules in the VSP1. + + +Optional properties: + +  - renesas,has-lif: Boolean, indicates that the LCD Interface (LIF) module is +    available. +  - renesas,has-lut: Boolean, indicates that the Look Up Table (LUT) module is +    available. +  - renesas,has-sru: Boolean, indicates that the Super Resolution Unit (SRU) +    module is available. + + +Example: R8A7790 (R-Car H2) VSP1-S node + +	vsp1@fe928000 { +		compatible = "renesas,vsp1"; +		reg = <0 0xfe928000 0 0x8000>; +		interrupts = <0 267 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&mstp1_clks R8A7790_CLK_VSP1_S>; + +		renesas,has-lut; +		renesas,has-sru; +		renesas,#rpf = <5>; +		renesas,#uds = <3>; +		renesas,#wpf = <4>; +	}; diff --git a/Documentation/devicetree/bindings/media/s5p-mfc.txt b/Documentation/devicetree/bindings/media/s5p-mfc.txt index f4181680831..3e3c5f34957 100644 --- a/Documentation/devicetree/bindings/media/s5p-mfc.txt +++ b/Documentation/devicetree/bindings/media/s5p-mfc.txt @@ -10,7 +10,8 @@ Required properties:    - compatible : value should be either one among the following  	(a) "samsung,mfc-v5" for MFC v5 present in Exynos4 SoCs  	(b) "samsung,mfc-v6" for MFC v6 present in Exynos5 SoCs -	(b) "samsung,mfc-v7" for MFC v7 present in Exynos5420 SoC +	(c) "samsung,mfc-v7" for MFC v7 present in Exynos5420 SoC +	(d) "samsung,mfc-v8" for MFC v8 present in Exynos5800 SoC    - reg : Physical base address of the IP registers and length of memory  	  mapped region. diff --git a/Documentation/devicetree/bindings/media/samsung-fimc.txt b/Documentation/devicetree/bindings/media/samsung-fimc.txt index 96312f6c4c2..922d6f8e74b 100644 --- a/Documentation/devicetree/bindings/media/samsung-fimc.txt +++ b/Documentation/devicetree/bindings/media/samsung-fimc.txt @@ -15,11 +15,21 @@ Common 'camera' node  Required properties: -- compatible	: must be "samsung,fimc", "simple-bus" -- clocks	: list of clock specifiers, corresponding to entries in -		  the clock-names property; -- clock-names	: must contain "sclk_cam0", "sclk_cam1", "pxl_async0", -		  "pxl_async1" entries, matching entries in the clocks property. +- compatible: must be "samsung,fimc", "simple-bus" +- clocks: list of clock specifiers, corresponding to entries in +  the clock-names property; +- clock-names : must contain "sclk_cam0", "sclk_cam1", "pxl_async0", +  "pxl_async1" entries, matching entries in the clocks property. + +- #clock-cells: from the common clock bindings (../clock/clock-bindings.txt), +  must be 1. A clock provider is associated with the 'camera' node and it should +  be referenced by external sensors that use clocks provided by the SoC on +  CAM_*_CLKOUT pins. The clock specifier cell stores an index of a clock. +  The indices are 0, 1 for CAM_A_CLKOUT, CAM_B_CLKOUT clocks respectively. + +- clock-output-names: from the common clock bindings, should contain names of +  clocks registered by the camera subsystem corresponding to CAM_A_CLKOUT, +  CAM_B_CLKOUT output clocks respectively.  The pinctrl bindings defined in ../pinctrl/pinctrl-bindings.txt must be used  to define a required pinctrl state named "default" and optional pinctrl states: @@ -32,6 +42,7 @@ way around.  The 'camera' node must include at least one 'fimc' child node. +  'fimc' device nodes  ------------------- @@ -88,8 +99,8 @@ port nodes specifies data input - 0, 1 indicates input A, B respectively.  Optional properties -- samsung,camclk-out : specifies clock output for remote sensor, -		       0 - CAM_A_CLKOUT, 1 - CAM_B_CLKOUT; +- samsung,camclk-out (deprecated) : specifies clock output for remote sensor, +  0 - CAM_A_CLKOUT, 1 - CAM_B_CLKOUT;  Image sensor nodes  ------------------ @@ -97,8 +108,6 @@ Image sensor nodes  The sensor device nodes should be added to their control bus controller (e.g.  I2C0) nodes and linked to a port node in the csis or the parallel-ports node,  using the common video interfaces bindings, defined in video-interfaces.txt. -The implementation of this bindings requires clock-frequency property to be -present in the sensor device nodes.  Example: @@ -114,7 +123,7 @@ Example:  			vddio-supply = <...>;  			clock-frequency = <24000000>; -			clocks = <...>; +			clocks = <&camera 1>;  			clock-names = "mclk";  			port { @@ -135,7 +144,7 @@ Example:  			vddio-supply = <...>;  			clock-frequency = <24000000>; -			clocks = <...>; +			clocks = <&camera 0>;  			clock-names = "mclk";  			port { @@ -149,12 +158,17 @@ Example:  	camera {  		compatible = "samsung,fimc", "simple-bus"; -		#address-cells = <1>; -		#size-cells = <1>; -		status = "okay"; - +		clocks = <&clock 132>, <&clock 133>, <&clock 351>, +			 <&clock 352>; +		clock-names = "sclk_cam0", "sclk_cam1", "pxl_async0", +			      "pxl_async1"; +		#clock-cells = <1>; +		clock-output-names = "cam_a_clkout", "cam_b_clkout";  		pinctrl-names = "default";  		pinctrl-0 = <&cam_port_a_clk_active>; +		status = "okay"; +		#address-cells = <1>; +		#size-cells = <1>;  		/* parallel camera ports */  		parallel-ports { diff --git a/Documentation/devicetree/bindings/media/samsung-s5c73m3.txt b/Documentation/devicetree/bindings/media/samsung-s5c73m3.txt new file mode 100644 index 00000000000..2c85c4538a6 --- /dev/null +++ b/Documentation/devicetree/bindings/media/samsung-s5c73m3.txt @@ -0,0 +1,97 @@ +Samsung S5C73M3 8Mp camera ISP +------------------------------ + +The S5C73M3 camera ISP supports MIPI CSI-2 and parallel (ITU-R BT.656) video +data busses. The I2C bus is the main control bus and additionally the SPI bus +is used, mostly for transferring the firmware to and from the device. Two +slave device nodes corresponding to these control bus interfaces are required +and should be placed under respective bus controller nodes. + +I2C slave device node +--------------------- + +Required properties: + +- compatible	    : "samsung,s5c73m3"; +- reg		    : I2C slave address of the sensor; +- vdd-int-supply    : digital power supply (1.2V); +- vdda-supply	    : analog power supply (1.2V); +- vdd-reg-supply    : regulator input power supply (2.8V); +- vddio-host-supply : host I/O power supply (1.8V to 2.8V); +- vddio-cis-supply  : CIS I/O power supply (1.2V to 1.8V); +- vdd-af-supply     : lens power supply (2.8V); +- xshutdown-gpios   : specifier of GPIO connected to the XSHUTDOWN pin; +- standby-gpios     : specifier of GPIO connected to the STANDBY pin; +- clocks	    : should contain list of phandle and clock specifier pairs +		      according to common clock bindings for the clocks described +		      in the clock-names property; +- clock-names	    : should contain "cis_extclk" entry for the CIS_EXTCLK clock; + +Optional properties: + +- clock-frequency   : the frequency at which the "cis_extclk" clock should be +		      configured to operate, in Hz; if this property is not +		      specified default 24 MHz value will be used. + +The common video interfaces bindings (see video-interfaces.txt) should be used +to specify link from the S5C73M3 to an external image data receiver. The S5C73M3 +device node should contain one 'port' child node with an 'endpoint' subnode for +this purpose. The data link from a raw image sensor to the S5C73M3 can be +similarly specified, but it is optional since the S5C73M3 ISP and a raw image +sensor are usually inseparable and form a hybrid module. + +Following properties are valid for the endpoint node(s): + +endpoint subnode +---------------- + +- data-lanes : (optional) specifies MIPI CSI-2 data lanes as covered in +  video-interfaces.txt. This sensor doesn't support data lane remapping +  and physical lane indexes in subsequent elements of the array should +  be only consecutive ascending values. + +SPI device node +--------------- + +Required properties: + +- compatible	    : "samsung,s5c73m3"; + +For more details see description of the SPI busses bindings +(../spi/spi-bus.txt) and bindings of a specific bus controller. + +Example: + +i2c@138A000000 { +	... +	s5c73m3@3c { +		compatible = "samsung,s5c73m3"; +		reg = <0x3c>; +		vdd-int-supply = <&buck9_reg>; +		vdda-supply = <&ldo17_reg>; +		vdd-reg-supply = <&cam_io_reg>; +		vddio-host-supply = <&ldo18_reg>; +		vddio-cis-supply = <&ldo9_reg>; +		vdd-af-supply = <&cam_af_reg>; +		clock-frequency = <24000000>; +		clocks = <&clk 0>; +		clock-names = "cis_extclk"; +		reset-gpios = <&gpf1 3 1>; +		standby-gpios = <&gpm0 1 1>; +		port { +			s5c73m3_ep: endpoint { +				remote-endpoint = <&csis0_ep>; +				data-lanes = <1 2 3 4>; +			}; +		}; +	}; +}; + +spi@1392000 { +	... +	s5c73m3_spi: s5c73m3@0 { +		compatible = "samsung,s5c73m3"; +		reg = <0>; +		... +	}; +}; diff --git a/Documentation/devicetree/bindings/media/samsung-s5k5baf.txt b/Documentation/devicetree/bindings/media/samsung-s5k5baf.txt new file mode 100644 index 00000000000..1f51e0439c9 --- /dev/null +++ b/Documentation/devicetree/bindings/media/samsung-s5k5baf.txt @@ -0,0 +1,58 @@ +Samsung S5K5BAF UXGA 1/5" 2M CMOS Image Sensor with embedded SoC ISP +-------------------------------------------------------------------- + +Required properties: + +- compatible	  : "samsung,s5k5baf"; +- reg		  : I2C slave address of the sensor; +- vdda-supply	  : analog power supply 2.8V (2.6V to 3.0V); +- vddreg-supply	  : regulator input power supply 1.8V (1.7V to 1.9V) +		    or 2.8V (2.6V to 3.0); +- vddio-supply	  : I/O power supply 1.8V (1.65V to 1.95V) +		    or 2.8V (2.5V to 3.1V); +- stbyn-gpios	  : GPIO connected to STDBYN pin; +- rstn-gpios	  : GPIO connected to RSTN pin; +- clocks	  : list of phandle and clock specifier pairs +		    according to common clock bindings for the +		    clocks described in clock-names; +- clock-names	  : should include "mclk" for the sensor's master clock; + +Optional properties: + +- clock-frequency : the frequency at which the "mclk" clock should be +		    configured to operate, in Hz; if this property is not +		    specified default 24 MHz value will be used. + +The device node should contain one 'port' child node with one child 'endpoint' +node, according to the bindings defined in Documentation/devicetree/bindings/ +media/video-interfaces.txt. The following are properties specific to those +nodes. + +endpoint node +------------- + +- data-lanes : (optional) specifies MIPI CSI-2 data lanes as covered in +	       video-interfaces.txt. If present it should be <1> - the device +	       supports only one data lane without re-mapping. + +Example: + +s5k5bafx@2d { +	compatible = "samsung,s5k5baf"; +	reg = <0x2d>; +	vdda-supply = <&cam_io_en_reg>; +	vddreg-supply = <&vt_core_15v_reg>; +	vddio-supply = <&vtcam_reg>; +	stbyn-gpios = <&gpl2 0 1>; +	rstn-gpios = <&gpl2 1 1>; +	clock-names = "mclk"; +	clocks = <&clock_cam 0>; +	clock-frequency = <24000000>; + +	port { +		s5k5bafx_ep: endpoint { +			remote-endpoint = <&csis1_ep>; +			data-lanes = <1>; +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/media/samsung-s5k6a3.txt b/Documentation/devicetree/bindings/media/samsung-s5k6a3.txt new file mode 100644 index 00000000000..cce01e82f3e --- /dev/null +++ b/Documentation/devicetree/bindings/media/samsung-s5k6a3.txt @@ -0,0 +1,33 @@ +Samsung S5K6A3(YX) raw image sensor +--------------------------------- + +S5K6A3(YX) is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces +and CCI (I2C compatible) control bus. + +Required properties: + +- compatible	: "samsung,s5k6a3"; +- reg		: I2C slave address of the sensor; +- svdda-supply	: core voltage supply; +- svddio-supply	: I/O voltage supply; +- afvdd-supply	: AF (actuator) voltage supply; +- gpios		: specifier of a GPIO connected to the RESET pin; +- clocks	: should contain list of phandle and clock specifier pairs +		  according to common clock bindings for the clocks described +		  in the clock-names property; +- clock-names	: should contain "extclk" entry for the sensor's EXTCLK clock; + +Optional properties: + +- clock-frequency : the frequency at which the "extclk" clock should be +		    configured to operate, in Hz; if this property is not +		    specified default 24 MHz value will be used. + +The common video interfaces bindings (see video-interfaces.txt) should be +used to specify link to the image data receiver. The S5K6A3(YX) device +node should contain one 'port' child node with an 'endpoint' subnode. + +Following properties are valid for the endpoint node: + +- data-lanes : (optional) specifies MIPI CSI-2 data lanes as covered in +  video-interfaces.txt.  The sensor supports only one data lane. diff --git a/Documentation/devicetree/bindings/media/st-rc.txt b/Documentation/devicetree/bindings/media/st-rc.txt new file mode 100644 index 00000000000..05c432d08bc --- /dev/null +++ b/Documentation/devicetree/bindings/media/st-rc.txt @@ -0,0 +1,29 @@ +Device-Tree bindings for ST IRB IP + +Required properties: +	- compatible: Should contain "st,comms-irb". +	- reg: Base physical address of the controller and length of memory +	  mapped region. +	- interrupts: interrupt-specifier for the sole interrupt generated by +	  the device. The interrupt specifier format depends on the interrupt +	  controller parent. +	- rx-mode: can be "infrared" or "uhf". This property specifies the L1 +	  protocol used for receiving remote control signals. rx-mode should +	  be present iff the rx pins are wired up. +	- tx-mode: should be "infrared". This property specifies the L1 +	  protocol used for transmitting remote control signals. tx-mode should +	  be present iff the tx pins are wired up. + +Optional properties: +	- pinctrl-names, pinctrl-0: the pincontrol settings to configure muxing +	  properly for IRB pins. +	- clocks : phandle with clock-specifier pair for IRB. + +Example node: + +	rc: rc@fe518000 { +		compatible	= "st,comms-irb"; +		reg		= <0xfe518000 0x234>; +		interrupts	= <0 203 0>; +		rx-mode		= "infrared"; +	}; diff --git a/Documentation/devicetree/bindings/powerpc/fsl/ifc.txt b/Documentation/devicetree/bindings/memory-controllers/fsl/ifc.txt index d5e370450ac..d5e370450ac 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/ifc.txt +++ b/Documentation/devicetree/bindings/memory-controllers/fsl/ifc.txt diff --git a/Documentation/devicetree/bindings/memory-controllers/mvebu-devbus.txt b/Documentation/devicetree/bindings/memory-controllers/mvebu-devbus.txt index 653c90c34a7..1ee3bc09f31 100644 --- a/Documentation/devicetree/bindings/memory-controllers/mvebu-devbus.txt +++ b/Documentation/devicetree/bindings/memory-controllers/mvebu-devbus.txt @@ -6,10 +6,11 @@ The actual devices are instantiated from the child nodes of a Device Bus node.  Required properties: - - compatible:          Currently only Armada 370/XP SoC are supported, -                        with this compatible string: + - compatible:          Armada 370/XP SoC are supported using the +                        "marvell,mvebu-devbus" compatible string. -                        marvell,mvebu-devbus +                        Orion5x SoC are supported using the +                        "marvell,orion-devbus" compatible string.   - reg:                 A resource specifier for the register space.                          This is the base address of a chip select within @@ -22,7 +23,14 @@ Required properties:                          integer values for each chip-select line in use:                          0 <physical address of mapping> <size> -Mandatory timing properties for child nodes: +Optional properties: + + - devbus,keep-config   This property can optionally be used to keep +                        using the timing parameters set by the +                        bootloader. It makes all the timing properties +                        described below unused. + +Timing properties for child nodes:  Read parameters: @@ -30,21 +38,26 @@ Read parameters:                          drive the AD bus after the completion of a device read.                          This prevents contentions on the Device Bus after a read                          cycle from a slow device. +                        Mandatory, except if devbus,keep-config is used. - - devbus,bus-width:    Defines the bus width (e.g. <16>) + - devbus,bus-width:    Defines the bus width, in bits (e.g. <16>). +                        Mandatory, except if devbus,keep-config is used.   - devbus,badr-skew-ps: Defines the time delay from from A[2:0] toggle,                          to read data sample. This parameter is useful for                          synchronous pipelined devices, where the address                          precedes the read data by one or two cycles. +                        Mandatory, except if devbus,keep-config is used.   - devbus,acc-first-ps: Defines the time delay from the negation of                          ALE[0] to the cycle that the first read data is sampled                          by the controller. +                        Mandatory, except if devbus,keep-config is used.   - devbus,acc-next-ps:  Defines the time delay between the cycle that                          samples data N and the cycle that samples data N+1                          (in burst accesses). +                        Mandatory, except if devbus,keep-config is used.   - devbus,rd-setup-ps:  Defines the time delay between DEV_CSn assertion to  			DEV_OEn assertion. If set to 0 (default), @@ -52,6 +65,8 @@ Read parameters:                          This parameter has no affect on <acc-first-ps> parameter                          (no affect on first data sample). Set <rd-setup-ps>                          to a value smaller than <acc-first-ps>. +                        Mandatory for "marvell,mvebu-devbus" compatible string, +                        except if devbus,keep-config is used.   - devbus,rd-hold-ps:   Defines the time between the last data sample to the  			de-assertion of DEV_CSn. If set to 0 (default), @@ -62,16 +77,20 @@ Read parameters:                          last data sampled. Also this parameter has no                          affect on <turn-off-ps> parameter.                          Set <rd-hold-ps> to a value smaller than <turn-off-ps>. +                        Mandatory for "marvell,mvebu-devbus" compatible string, +                        except if devbus,keep-config is used.  Write parameters:   - devbus,ale-wr-ps:    Defines the time delay from the ALE[0] negation cycle  			to the DEV_WEn assertion. +                        Mandatory.   - devbus,wr-low-ps:    Defines the time during which DEV_WEn is active.                          A[2:0] and Data are kept valid as long as DEV_WEn                          is active. This parameter defines the setup time of                          address and data to DEV_WEn rise. +                        Mandatory.   - devbus,wr-high-ps:   Defines the time during which DEV_WEn is kept                          inactive (high) between data beats of a burst write. @@ -79,10 +98,13 @@ Write parameters:                          <wr-high-ps> - <tick> ps.  			This parameter defines the hold time of address and  			data after DEV_WEn rise. +                        Mandatory.   - devbus,sync-enable: Synchronous device enable.                         1: True                         0: False +                       Mandatory for "marvell,mvebu-devbus" compatible string, +                       except if devbus,keep-config is used.  An example for an Armada XP GP board, with a 16 MiB NOR device as child  is showed below. Note that the Device Bus driver is in charge of allocating diff --git a/Documentation/devicetree/bindings/memory-controllers/ti-aemif.txt b/Documentation/devicetree/bindings/memory-controllers/ti-aemif.txt new file mode 100644 index 00000000000..9592717f483 --- /dev/null +++ b/Documentation/devicetree/bindings/memory-controllers/ti-aemif.txt @@ -0,0 +1,210 @@ +* Device tree bindings for Texas instruments AEMIF controller + +The Async External Memory Interface (EMIF16/AEMIF) controller is intended to +provide a glue-less interface to a variety of asynchronous memory devices like +ASRA M, NOR and NAND memory. A total of 256M bytes of any of these memories +can be accessed at any given time via four chip selects with 64M byte access +per chip select. Synchronous memories such as DDR1 SD RAM, SDR SDRAM +and Mobile SDR are not supported. + +Documentation: +Davinci DM646x - http://www.ti.com/lit/ug/sprueq7c/sprueq7c.pdf +OMAP-L138 (DA850) - http://www.ti.com/lit/ug/spruh77a/spruh77a.pdf +Kestone - http://www.ti.com/lit/ug/sprugz3a/sprugz3a.pdf + +Required properties: + +- compatible:		"ti,davinci-aemif" +			"ti,keystone-aemif" +			"ti,da850-aemif" + +- reg:			contains offset/length value for AEMIF control registers +			space. + +- #address-cells:	Must be 2. The partition number has to be encoded in the +			first address cell and it may accept values 0..N-1 +			(N - total number of partitions). It's recommended to +			assign N-1 number for the control partition. The second +			cell is the offset into the partition. + +- #size-cells:		Must be set to 1. + +- ranges:		Contains memory regions. There are two types of +			ranges/partitions: +			- CS-specific partition/range. If continuous, must be +			set up to reflect the memory layout for 4 chipselects, +			if not then additional range/partition can be added and +			child device can select the proper one. +			- control partition which is common for all CS +			interfaces. + +- clocks:		the clock feeding the controller clock. Required only +			if clock tree data present in device tree. +			See clock-bindings.txt + +- clock-names:		clock name. It has to be "aemif". Required only if clock +			tree data present in device tree, in another case don't +			use it. +			See clock-bindings.txt + +- clock-ranges:		Empty property indicating that child nodes can inherit +			named clocks. Required only if clock tree data present +			in device tree. +			See clock-bindings.txt + + +Child chip-select (cs) nodes contain the memory devices nodes connected to +such as NOR (e.g. cfi-flash) and NAND (ti,davinci-nand, see davinci-nand.txt). +There might be board specific devices like FPGAs. + +Required child cs node properties: + +- #address-cells:	Must be 2. + +- #size-cells:		Must be 1. + +- ranges:		Empty property indicating that child nodes can inherit +			memory layout. + +- clock-ranges:		Empty property indicating that child nodes can inherit +			named clocks. Required only if clock tree data present +			in device tree. + +- ti,cs-chipselect:	number of chipselect. Indicates on the aemif driver +			which chipselect is used for accessing the memory. For +			compatibles "ti,davinci-aemif" and "ti,keystone-aemif" +			it can be in range [0-3]. For compatible +			"ti,da850-aemif" range is [2-5]. + +Optional child cs node properties: + +- ti,cs-bus-width:		width of the asynchronous device's data bus +				8 or 16 if not preset 8 + +- ti,cs-select-strobe-mode:	enable/disable select strobe mode +				In select strobe mode chip select behaves as +				the strobe and is active only during the strobe +				period. If present then enable. + +- ti,cs-extended-wait-mode:	enable/disable extended wait mode +				if set, the controller monitors the EMIFWAIT pin +				mapped to that chip select to determine if the +				device wants to extend the strobe period. If +				present then enable. + +- ti,cs-min-turnaround-ns:	minimum turn around time, ns +				Time between the end of one asynchronous memory +				access and the start of another asynchronous +				memory access. This delay is not incurred +				between a read followed by read or a write +				followed by a write to same chip select. + +- ti,cs-read-setup-ns:		read setup width, ns +				Time between the beginning of a memory cycle +				and the activation of read strobe. +				Minimum value is 1 (0 treated as 1). + +- ti,cs-read-strobe-ns:		read strobe width, ns +				Time between the activation and deactivation of +				the read strobe. +				Minimum value is 1 (0 treated as 1). + +- ti,cs-read-hold-ns:		read hold width, ns +				Time between the deactivation of the read +				strobe and the end of the cycle (which may be +				either an address change or the deactivation of +				the chip select signal. +				Minimum value is 1 (0 treated as 1). + +- ti,cs-write-setup-ns:		write setup width, ns +				Time between the beginning of a memory cycle +				and the activation of write strobe. +				Minimum value is 1 (0 treated as 1). + +- ti,cs-write-strobe-ns:	write strobe width, ns +				Time between the activation and deactivation of +				the write strobe. +				Minimum value is 1 (0 treated as 1). + +- ti,cs-write-hold-ns:		write hold width, ns +				Time between the deactivation of the write +				strobe and the end of the cycle (which may be +				either an address change or the deactivation of +				the chip select signal. +				Minimum value is 1 (0 treated as 1). + +If any of the above parameters are absent, current parameter value will be taken +from the corresponding HW reg. + +Example for aemif, davinci nand and nor flash chip select shown below. + +memory-controller@21000A00 { +	compatible = "ti,davinci-aemif"; +	#address-cells = <2>; +	#size-cells = <1>; +	clocks = <&clkaemif 0>; +	clock-names = "aemif"; +	clock-ranges; +	reg = <0x21000A00 0x00000100>; +	ranges = <0 0 0x70000000 0x10000000 +		  1 0 0x21000A00 0x00000100>; +		  /* +		   * Partition0: CS-specific memory range which is +		   * implemented as continuous physical memory region +		   * Partition1: control memory range +		   */ + +	nand:cs2 { +		#address-cells = <2>; +		#size-cells = <1>; +		clock-ranges; +		ranges; + +		ti,cs-chipselect = <2>; +		/* all timings in nanoseconds */ +		ti,cs-min-turnaround-ns = <0>; +		ti,cs-read-hold-ns = <7>; +		ti,cs-read-strobe-ns = <42>; +		ti,cs-read-setup-ns = <14>; +		ti,cs-write-hold-ns = <7>; +		ti,cs-write-strobe-ns = <42>; +		ti,cs-write-setup-ns = <14>; + +		nand@0,0x8000000 { +			compatible = "ti,davinci-nand"; +			reg = <0 0x8000000 0x4000000 +			       1 0x0000000 0x0000100>; +			/* +			 * Partition0, offset 0x8000000, size 0x4000000 +			 * Partition1, offset 0x0000000, size 0x0000100 +			 */ + +			.. see davinci-nand.txt +		}; +	}; + +	nor:cs0 { +		#address-cells = <2>; +		#size-cells = <1>; +		clock-ranges; +		ranges; + +		ti,cs-chipselect = <0>; +		/* all timings in nanoseconds */ +		ti,cs-min-turnaround-ns = <0>; +		ti,cs-read-hold-ns = <8>; +		ti,cs-read-strobe-ns = <40>; +		ti,cs-read-setup-ns = <14>; +		ti,cs-write-hold-ns = <7>; +		ti,cs-write-strobe-ns = <40>; +		ti,cs-write-setup-ns = <14>; +		ti,cs-bus-width = <16>; + +		flash@0,0x0000000 { +			compatible = "cfi-flash"; +			reg = <0 0x0000000 0x4000000>; + +			... +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/memory.txt b/Documentation/devicetree/bindings/memory.txt deleted file mode 100644 index eb246936559..00000000000 --- a/Documentation/devicetree/bindings/memory.txt +++ /dev/null @@ -1,168 +0,0 @@ -*** Memory binding *** - -The /memory node provides basic information about the address and size -of the physical memory. This node is usually filled or updated by the -bootloader, depending on the actual memory configuration of the given -hardware. - -The memory layout is described by the following node: - -/ { -	#address-cells = <(n)>; -	#size-cells = <(m)>; -	memory { -		device_type = "memory"; -		reg =  <(baseaddr1) (size1) -			(baseaddr2) (size2) -			... -			(baseaddrN) (sizeN)>; -	}; -	... -}; - -A memory node follows the typical device tree rules for "reg" property: -n:		number of cells used to store base address value -m:		number of cells used to store size value -baseaddrX:	defines a base address of the defined memory bank -sizeX:		the size of the defined memory bank - - -More than one memory bank can be defined. - - -*** Reserved memory regions *** - -In /memory/reserved-memory node one can create child nodes describing -particular reserved (excluded from normal use) memory regions. Such -memory regions are usually designed for the special usage by various -device drivers. A good example are contiguous memory allocations or -memory sharing with other operating system on the same hardware board. -Those special memory regions might depend on the board configuration and -devices used on the target system. - -Parameters for each memory region can be encoded into the device tree -with the following convention: - -[(label):] (name) { -	compatible = "linux,contiguous-memory-region", "reserved-memory-region"; -	reg = <(address) (size)>; -	(linux,default-contiguous-region); -}; - -compatible:	one or more of: -	- "linux,contiguous-memory-region" - enables binding of this -	  region to Contiguous Memory Allocator (special region for -	  contiguous memory allocations, shared with movable system -	  memory, Linux kernel-specific). -	- "reserved-memory-region" - compatibility is defined, given -	  region is assigned for exclusive usage for by the respective -	  devices. - -reg:	standard property defining the base address and size of -	the memory region - -linux,default-contiguous-region: property indicating that the region -	is the default region for all contiguous memory -	allocations, Linux specific (optional) - -It is optional to specify the base address, so if one wants to use -autoconfiguration of the base address, '0' can be specified as a base -address in the 'reg' property. - -The /memory/reserved-memory node must contain the same #address-cells -and #size-cells value as the root node. - - -*** Device node's properties *** - -Once regions in the /memory/reserved-memory node have been defined, they -may be referenced by other device nodes. Bindings that wish to reference -memory regions should explicitly document their use of the following -property: - -memory-region = <&phandle_to_defined_region>; - -This property indicates that the device driver should use the memory -region pointed by the given phandle. - - -*** Example *** - -This example defines a memory consisting of 4 memory banks. 3 contiguous -regions are defined for Linux kernel, one default of all device drivers -(named contig_mem, placed at 0x72000000, 64MiB), one dedicated to the -framebuffer device (labelled display_mem, placed at 0x78000000, 8MiB) -and one for multimedia processing (labelled multimedia_mem, placed at -0x77000000, 64MiB). 'display_mem' region is then assigned to fb@12300000 -device for DMA memory allocations (Linux kernel drivers will use CMA is -available or dma-exclusive usage otherwise). 'multimedia_mem' is -assigned to scaler@12500000 and codec@12600000 devices for contiguous -memory allocations when CMA driver is enabled. - -The reason for creating a separate region for framebuffer device is to -match the framebuffer base address to the one configured by bootloader, -so once Linux kernel drivers starts no glitches on the displayed boot -logo appears. Scaller and codec drivers should share the memory -allocations. - -/ { -	#address-cells = <1>; -	#size-cells = <1>; - -	/* ... */ - -	memory { -		reg =  <0x40000000 0x10000000 -			0x50000000 0x10000000 -			0x60000000 0x10000000 -			0x70000000 0x10000000>; - -		reserved-memory { -			#address-cells = <1>; -			#size-cells = <1>; - -			/* -			 * global autoconfigured region for contiguous allocations -			 * (used only with Contiguous Memory Allocator) -			 */ -			contig_region@0 { -				compatible = "linux,contiguous-memory-region"; -				reg = <0x0 0x4000000>; -				linux,default-contiguous-region; -			}; - -			/* -			 * special region for framebuffer -			 */ -			display_region: region@78000000 { -				compatible = "linux,contiguous-memory-region", "reserved-memory-region"; -				reg = <0x78000000 0x800000>; -			}; - -			/* -			 * special region for multimedia processing devices -			 */ -			multimedia_region: region@77000000 { -				compatible = "linux,contiguous-memory-region"; -				reg = <0x77000000 0x4000000>; -			}; -		}; -	}; - -	/* ... */ - -	fb0: fb@12300000 { -		status = "okay"; -		memory-region = <&display_region>; -	}; - -	scaler: scaler@12500000 { -		status = "okay"; -		memory-region = <&multimedia_region>; -	}; - -	codec: codec@12600000 { -		status = "okay"; -		memory-region = <&multimedia_region>; -	}; -}; diff --git a/Documentation/devicetree/bindings/mfd/arizona.txt b/Documentation/devicetree/bindings/mfd/arizona.txt index 0e295c9d893..36a0c3d8c72 100644 --- a/Documentation/devicetree/bindings/mfd/arizona.txt +++ b/Documentation/devicetree/bindings/mfd/arizona.txt @@ -5,9 +5,10 @@ of analogue I/O.  Required properties: -  - compatible : one of the following chip-specific strings: -	"wlf,wm5102" -	"wlf,wm5110" +  - compatible : One of the following chip-specific strings: +        "wlf,wm5102" +        "wlf,wm5110" +        "wlf,wm8997"    - reg : I2C slave address when connected using I2C, chip select number when      using SPI. @@ -25,8 +26,9 @@ Required properties:    - #gpio-cells : Must be 2. The first cell is the pin number and the      second cell is used to specify optional parameters (currently unused). -  - AVDD1-supply, DBVDD1-supply, DBVDD2-supply, DBVDD3-supply, CPVDD-supply, -    SPKVDDL-supply, SPKVDDR-supply : power supplies for the device, as covered +  - AVDD-supply, DBVDD1-supply, DBVDD2-supply, DBVDD3-supply (wm5102, wm5110), +    CPVDD-supply, SPKVDDL-supply (wm5102, wm5110), SPKVDDR-supply (wm5102, +    wm5110), SPKVDD-supply (wm8997) : Power supplies for the device, as covered      in Documentation/devicetree/bindings/regulator/regulator.txt  Optional properties: @@ -46,6 +48,7 @@ codec: wm5102@1a {  	compatible = "wlf,wm5102";  	reg = <0x1a>;  	interrupts = <347>; +	interrupt-controller;  	#interrupt-cells = <2>;          interrupt-parent = <&gic>; @@ -53,10 +56,10 @@ codec: wm5102@1a {  	#gpio-cells = <2>;  	wlf,gpio-defaults = < -		0x00000000, /* AIF1TXLRCLK */ -		0xffffffff, -		0xffffffff, -		0xffffffff, -		0xffffffff, +		0x00000000 /* AIF1TXLRCLK */ +		0xffffffff +		0xffffffff +		0xffffffff +		0xffffffff  	>;  }; diff --git a/Documentation/devicetree/bindings/mfd/as3722.txt b/Documentation/devicetree/bindings/mfd/as3722.txt new file mode 100644 index 00000000000..8edcb9bd873 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/as3722.txt @@ -0,0 +1,205 @@ +* ams AS3722 Power management IC. + +Required properties: +------------------- +- compatible: Must be "ams,as3722". +- reg: I2C device address. +- interrupt-controller: AS3722 has internal interrupt controller which takes the +  interrupt request from internal sub-blocks like RTC, regulators, GPIOs as well +  as external input. +- #interrupt-cells: Should be set to 2 for IRQ number and flags. +  The first cell is the IRQ number. IRQ numbers for different interrupt source +  of AS3722 are defined at dt-bindings/mfd/as3722.h +  The second cell is the flags, encoded as the trigger masks from binding document +	interrupts.txt, using dt-bindings/irq. + +Optional submodule and their properties: +======================================= + +Pinmux and GPIO: +=============== +Device has 8 GPIO pins which can be configured as GPIO as well as the special IO +functions. + +Please refer to pinctrl-bindings.txt in this directory for details of the +common pinctrl bindings used by client devices, including the meaning of the +phrase "pin configuration node". + +Following are properties which is needed if GPIO and pinmux functionality +is required: +    Required properties: +    ------------------- +	- gpio-controller: Marks the device node as a GPIO controller. +	- #gpio-cells: Number of GPIO cells. Refer to binding document +			gpio/gpio.txt + +    Optional properties: +    -------------------- +	Following properties are require if pin control setting is required +	at boot. +	- pinctrl-names: A pinctrl state named "default" be defined, using the +		bindings in pinctrl/pinctrl-binding.txt. +	- pinctrl[0...n]: Properties to contain the phandle that refer to +		different nodes of pin control settings. These nodes represents +		the pin control setting of state 0 to state n. Each of these +		nodes contains different subnodes to represents some desired +		configuration for a list of pins. This configuration can +		include the mux function to select on those pin(s), and +		various pin configuration parameters, such as pull-up, +		open drain. + +		Each subnode have following properties: +		Required properties: +		    - pins: List of pins. Valid values of pins properties are: +				gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, +				gpio6, gpio7 + +		Optional properties: +			function, bias-disable, bias-pull-up, bias-pull-down, +			bias-high-impedance, drive-open-drain. + +			Valid values for function properties are: +				gpio, interrupt-out, gpio-in-interrupt, +				vsup-vbat-low-undebounce-out, +				vsup-vbat-low-debounce-out, +				voltage-in-standby, oc-pg-sd0, oc-pg-sd6, +				powergood-out, pwm-in, pwm-out, clk32k-out, +				watchdog-in, soft-reset-in + +Regulators: +=========== +Device has multiple DCDC and LDOs. The node "regulators" is require if regulator +functionality is needed. + +Following are properties of regulator subnode. + +    Optional properties: +    ------------------- +	The input supply of regulators are the optional properties on the +	regulator node. The input supply of these regulators are provided +	through following properties: +		vsup-sd2-supply: Input supply for SD2. +		vsup-sd3-supply: Input supply for SD3. +		vsup-sd4-supply: Input supply for SD4. +		vsup-sd5-supply: Input supply for SD5. +		vin-ldo0-supply: Input supply for LDO0. +		vin-ldo1-6-supply: Input supply for LDO1 and LDO6. +		vin-ldo2-5-7-supply: Input supply for LDO2, LDO5 and LDO7. +		vin-ldo3-4-supply: Input supply for LDO3 and LDO4. +		vin-ldo9-10-supply: Input supply for LDO9 and LDO10. +		vin-ldo11-supply: Input supply for LDO11. + +    Optional sub nodes for regulators: +    --------------------------------- +	The subnodes name is the name of regulator and it must be one of: +	sd[0-6], ldo[0-7], ldo[9-11] + +	Each sub-node should contain the constraints and initialization +	information for that regulator. See regulator.txt for a description +	of standard properties for these sub-nodes. +	Additional optional custom properties  are listed below. +		ams,ext-control: External control of the rail. The option of +			this properties will tell which external input is +			controlling this rail. Valid values are 0, 1, 2 ad 3. +			0: There is no external control of this rail. +			1: Rail is controlled by ENABLE1 input pin. +			2: Rail is controlled by ENABLE2 input pin. +			3: Rail is controlled by ENABLE3 input pin. +			Missing this property on DT will be assume as no +			external control. The external control pin macros +			are defined @dt-bindings/mfd/as3722.h + +		ams,enable-tracking: Enable tracking with SD1, only supported +			by LDO3. + +Power-off: +========= +AS3722 supports the system power off by turning off all its rail. This +is provided through pm_power_off. +The device node should have the following properties to enable this +functionality +ams,system-power-controller: Boolean, to enable the power off functionality +        through this device. + +Example: +-------- +#include <dt-bindings/mfd/as3722.h> +... +ams3722 { +	compatible = "ams,as3722"; +	reg = <0x48>; + +	ams,system-power-controller; + +	interrupt-parent = <&intc>; +	interrupt-controller; +	#interrupt-cells = <2>; + +	gpio-controller; +	#gpio-cells = <2>; + +	pinctrl-names = "default"; +	pinctrl-0 = <&as3722_default>; + +	as3722_default: pinmux { +			gpio0 { +				pins = "gpio0"; +				function = "gpio"; +				bias-pull-down; +			}; + +			gpio1_2_4_7 { +				pins = "gpio1", "gpio2", "gpio4", "gpio7"; +				function = "gpio"; +				bias-pull-up; +			}; + +			gpio5 { +				pins = "gpio5"; +				function = "clk32k_out"; +			}; +	} + +	regulators { +			vsup-sd2-supply = <...>; +			... + +			sd0 { +				regulator-name = "vdd_cpu"; +				regulator-min-microvolt = <700000>; +				regulator-max-microvolt = <1400000>; +				regulator-always-on; +				ams,ext-control = <2>; +			}; + +			sd1 { +				regulator-name = "vdd_core"; +				regulator-min-microvolt = <700000>; +				regulator-max-microvolt = <1400000>; +				regulator-always-on; +				ams,ext-control = <1>; +			}; + +			sd2 { +				regulator-name = "vddio_ddr"; +				regulator-min-microvolt = <1350000>; +				regulator-max-microvolt = <1350000>; +				regulator-always-on; +			}; + +			sd4 { +				regulator-name = "avdd-hdmi-pex"; +				regulator-min-microvolt = <1050000>; +				regulator-max-microvolt = <1050000>; +				regulator-always-on; +			}; + +			sd5 { +				regulator-name = "vdd-1v8"; +				regulator-min-microvolt = <1800000>; +				regulator-max-microvolt = <1800000>; +				regulator-always-on; +			}; +			.... +	}; +}; diff --git a/Documentation/devicetree/bindings/mfd/bcm590xx.txt b/Documentation/devicetree/bindings/mfd/bcm590xx.txt new file mode 100644 index 00000000000..be51a15e05f --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/bcm590xx.txt @@ -0,0 +1,39 @@ +------------------------------- +BCM590xx Power Management Units +------------------------------- + +Required properties: +- compatible: "brcm,bcm59056" +- reg: I2C slave address +- interrupts: interrupt for the PMU. Generic interrupt client node bindings +  are described in interrupt-controller/interrupts.txt + +------------------ +Voltage Regulators +------------------ + +Optional child nodes: +- regulators: container node for regulators following the generic +  regulator binding in regulator/regulator.txt + +  The valid regulator node names for BCM59056 are: +  	rfldo, camldo1, camldo2, simldo1, simldo2, sdldo, sdxldo, +	mmcldo1, mmcldo2, audldo, micldo, usbldo, vibldo, +	csr, iosr1, iosr2, msr, sdsr1, sdsr2, vsr, +	gpldo1, gpldo2, gpldo3, gpldo4, gpldo5, gpldo6, +	vbus + +Example: +	pmu: bcm59056@8 { +		compatible = "brcm,bcm59056"; +		reg = <0x08>; +		interrupts = <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>; +		regulators { +			rfldo_reg: rfldo { +				regulator-min-microvolt = <1200000>; +				regulator-max-microvolt = <3300000>; +			}; + +			... +		}; +	}; diff --git a/Documentation/devicetree/bindings/mfd/bfticu.txt b/Documentation/devicetree/bindings/mfd/bfticu.txt new file mode 100644 index 00000000000..65c90776c62 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/bfticu.txt @@ -0,0 +1,25 @@ +KEYMILE bfticu Chassis Management FPGA + +The bfticu is a multifunction device that manages the whole chassis. +Its main functionality is to collect IRQs from the whole chassis and signals +them to a single controller. + +Required properties: +- compatible: "keymile,bfticu" +- interrupt-controller: the bfticu FPGA is an interrupt controller +- interrupts: the main IRQ line to signal the collected IRQs +- #interrupt-cells : is 2 and their usage is compliant to the 2 cells variant +  of Documentation/devicetree/bindings/interrupt-controller/interrupts.txt +- interrupt-parent: the parent IRQ ctrl the main IRQ is connected to +- reg: access on the parent local bus (chip select, offset in chip select, size) + +Example: + +	chassis-mgmt@3,0 { +		compatible = "keymile,bfticu"; +		interrupt-controller; +		#interrupt-cells = <2>; +		reg = <3 0 0x100>; +		interrupt-parent = <&mpic>; +		interrupts = <6 1 0 0>; +	}; diff --git a/Documentation/devicetree/bindings/mfd/cros-ec.txt b/Documentation/devicetree/bindings/mfd/cros-ec.txt index 5f229c5f6da..8009c3d87f3 100644 --- a/Documentation/devicetree/bindings/mfd/cros-ec.txt +++ b/Documentation/devicetree/bindings/mfd/cros-ec.txt @@ -17,6 +17,15 @@ Required properties (SPI):  - compatible: "google,cros-ec-spi"  - reg: SPI chip select +Optional properties (SPI): +- google,cros-ec-spi-msg-delay: Some implementations of the EC require some +  additional processing time in order to accept new transactions. If the delay +  between transactions is not long enough the EC may not be able to respond +  properly to subsequent transactions and cause them to hang. This property +  specifies the delay, in usecs, introduced between transactions to account +  for the time required by the EC to get back into a state in which new data +  can be accepted. +  Required properties (LPC):  - compatible: "google,cros-ec-lpc"  - reg: List of (IO address, size) pairs defining the interface uses diff --git a/Documentation/devicetree/bindings/mfd/da9055.txt b/Documentation/devicetree/bindings/mfd/da9055.txt new file mode 100644 index 00000000000..6dab34d34fc --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/da9055.txt @@ -0,0 +1,72 @@ +* Dialog DA9055 Power Management Integrated Circuit (PMIC) + +DA9055 consists of a large and varied group of sub-devices (I2C Only): + +Device			 Supply Names	 Description +------			 ------------	 ----------- +da9055-gpio		:		: GPIOs +da9055-regulator	:		: Regulators +da9055-onkey		:		: On key +da9055-rtc		:		: RTC +da9055-hwmon		:		: ADC +da9055-watchdog		:		: Watchdog + +The CODEC device in DA9055 has a separate, configurable I2C address and so +is instantiated separately from the PMIC. + +For details on accompanying CODEC I2C device, see the following: +Documentation/devicetree/bindings/sound/da9055.txt + +====== + +Required properties: +- compatible : Should be "dlg,da9055-pmic" +- reg: Specifies the I2C slave address (defaults to 0x5a but can be modified) +- interrupt-parent: Specifies the phandle of the interrupt controller to which +  the IRQs from da9055 are delivered to. +- interrupts: IRQ line info for da9055 chip. +- interrupt-controller: da9055 has internal IRQs (has own IRQ domain). +- #interrupt-cells: Should be 1, is the local IRQ number for da9055. + +Sub-nodes: +- regulators : Contain the regulator nodes. The DA9055 regulators are +  bound using their names as listed below: + +    buck1     : regulator BUCK1 +    buck2     : regulator BUCK2 +    ldo1      : regulator LDO1 +    ldo2      : regulator LDO2 +    ldo3      : regulator LDO3 +    ldo4      : regulator LDO4 +    ldo5      : regulator LDO5 +    ldo6      : regulator LDO6 + +  The bindings details of individual regulator device can be found in: +  Documentation/devicetree/bindings/regulator/regulator.txt + + +Example: + +	pmic: da9055-pmic@5a { +		compatible = "dlg,da9055-pmic"; +		reg = <0x5a>; +		interrupt-parent = <&intc>; +		interrupts = <5 IRQ_TYPE_LEVEL_LOW>; +		interrupt-controller; +		#interrupt-cells = <1>; + +		regulators { +			buck1: BUCK1 { +				regulator-min-microvolt = <725000>; +				regulator-max-microvolt = <2075000>; +			}; +			buck2: BUCK2 { +				regulator-min-microvolt = <925000>; +				regulator-max-microvolt = <2500000>; +			}; +			ldo1: LDO1 { +				regulator-min-microvolt = <900000>; +				regulator-max-microvolt = <3300000>; +			}; +		}; +	}; diff --git a/Documentation/devicetree/bindings/mfd/lp3943.txt b/Documentation/devicetree/bindings/mfd/lp3943.txt new file mode 100644 index 00000000000..e8591d6b11b --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/lp3943.txt @@ -0,0 +1,33 @@ +TI/National Semiconductor LP3943 MFD driver + +Required properties: +  - compatible: "ti,lp3943" +  - reg: I2C slave address. From 0x60 to 0x67. + +LP3943 consists of two sub-devices, lp3943-gpio and lp3943-pwm. + +For the LP3943 GPIO properties please refer to: +Documentation/devicetree/bindings/gpio/gpio-lp3943.txt + +For the LP3943 PWM properties please refer to: +Documentation/devicetree/bindings/pwm/pwm-lp3943.txt + +Example: + +lp3943@60 { +	compatible = "ti,lp3943"; +	reg = <0x60>; + +	gpioex: gpio { +		compatible = "ti,lp3943-gpio"; +		gpio-controller; +		#gpio-cells = <2>; +	}; + +	pwm3943: pwm { +		compatible = "ti,lp3943-pwm"; +		#pwm-cells = <2>; +		ti,pwm0 = <8 9 10>; +		ti,pwm1 = <15>; +	}; +}; diff --git a/Documentation/devicetree/bindings/mfd/max77686.txt b/Documentation/devicetree/bindings/mfd/max77686.txt index c6a3469d343..678f3cf0b8f 100644 --- a/Documentation/devicetree/bindings/mfd/max77686.txt +++ b/Documentation/devicetree/bindings/mfd/max77686.txt @@ -7,6 +7,9 @@ different i2c slave address,presently for which we are statically creating i2c  client while probing.This document describes the binding for mfd device and  PMIC submodule. +Binding for the built-in 32k clock generator block is defined separately +in bindings/clk/maxim,max77686.txt file. +  Required properties:  - compatible : Must be "maxim,max77686";  - reg : Specifies the i2c slave address of PMIC block. diff --git a/Documentation/devicetree/bindings/mfd/mc13xxx.txt b/Documentation/devicetree/bindings/mfd/mc13xxx.txt index abd9e3cb2db..8aba48821a8 100644 --- a/Documentation/devicetree/bindings/mfd/mc13xxx.txt +++ b/Documentation/devicetree/bindings/mfd/mc13xxx.txt @@ -10,9 +10,47 @@ Optional properties:  - fsl,mc13xxx-uses-touch : Indicate the touchscreen controller is being used  Sub-nodes: +- codec: Contain the Audio Codec node. +  - adc-port: Contain PMIC SSI port number used for ADC. +  - dac-port: Contain PMIC SSI port number used for DAC. +- leds : Contain the led nodes and initial register values in property +  "led-control". Number of register depends of used IC, for MC13783 is 6, +  for MC13892 is 4, for MC34708 is 1. See datasheet for bits definitions of +  these registers. +  - #address-cells: Must be 1. +  - #size-cells: Must be 0. +  Each led node should contain "reg", which used as LED ID (described below). +  Optional properties "label" and "linux,default-trigger" is described in +  Documentation/devicetree/bindings/leds/common.txt.  - regulators : Contain the regulator nodes. The regulators are bound using    their names as listed below with their registers and bits for enabling. +MC13783 LED IDs: +    0  : Main display +    1  : AUX display +    2  : Keypad +    3  : Red 1 +    4  : Green 1 +    5  : Blue 1 +    6  : Red 2 +    7  : Green 2 +    8  : Blue 2 +    9  : Red 3 +    10 : Green 3 +    11 : Blue 3 + +MC13892 LED IDs: +    0  : Main display +    1  : AUX display +    2  : Keypad +    3  : Red +    4  : Green +    5  : Blue + +MC34708 LED IDs: +    0  : Charger Red +    1  : Charger Green +  MC13783 regulators:      sw1a      : regulator SW1A      (register 24, bit 0)      sw1b      : regulator SW1B      (register 25, bit 0) @@ -89,6 +127,18 @@ ecspi@70010000 { /* ECSPI1 */  		interrupt-parent = <&gpio0>;  		interrupts = <8>; +		leds { +			#address-cells = <1>; +			#size-cells = <0>; +			led-control = <0x000 0x000 0x0e0 0x000>; + +			sysled { +				reg = <3>; +				label = "system:red:live"; +				linux,default-trigger = "heartbeat"; +			}; +		}; +  		regulators {  			sw1_reg: mc13892__sw1 {  				regulator-min-microvolt = <600000>; diff --git a/Documentation/devicetree/bindings/mfd/omap-usb-host.txt b/Documentation/devicetree/bindings/mfd/omap-usb-host.txt index b381fa696bf..4721b2d521e 100644 --- a/Documentation/devicetree/bindings/mfd/omap-usb-host.txt +++ b/Documentation/devicetree/bindings/mfd/omap-usb-host.txt @@ -32,6 +32,29 @@ Optional properties:  - single-ulpi-bypass: Must be present if the controller contains a single    ULPI bypass control bit. e.g. OMAP3 silicon <= ES2.1 +- clocks: a list of phandles and clock-specifier pairs, one for each entry in +  clock-names. + +- clock-names: should include: +  For OMAP3 +  * "usbhost_120m_fck" - 120MHz Functional clock. + +  For OMAP4+ +  * "refclk_60m_int" - 60MHz internal reference clock for UTMI clock mux +  * "refclk_60m_ext_p1" - 60MHz external ref. clock for Port 1's UTMI clock mux. +  * "refclk_60m_ext_p2" - 60MHz external ref. clock for Port 2's UTMI clock mux +  * "utmi_p1_gfclk" - Port 1 UTMI clock mux. +  * "utmi_p2_gfclk" - Port 2 UTMI clock mux. +  * "usb_host_hs_utmi_p1_clk" - Port 1 UTMI clock gate. +  * "usb_host_hs_utmi_p2_clk" - Port 2 UTMI clock gate. +  * "usb_host_hs_utmi_p3_clk" - Port 3 UTMI clock gate. +  * "usb_host_hs_hsic480m_p1_clk" - Port 1 480MHz HSIC clock gate. +  * "usb_host_hs_hsic480m_p2_clk" - Port 2 480MHz HSIC clock gate. +  * "usb_host_hs_hsic480m_p3_clk" - Port 3 480MHz HSIC clock gate. +  * "usb_host_hs_hsic60m_p1_clk" - Port 1 60MHz HSIC clock gate. +  * "usb_host_hs_hsic60m_p2_clk" - Port 2 60MHz HSIC clock gate. +  * "usb_host_hs_hsic60m_p3_clk" - Port 3 60MHz HSIC clock gate. +  Required properties if child node exists:  - #address-cells: Must be 1 diff --git a/Documentation/devicetree/bindings/mfd/omap-usb-tll.txt b/Documentation/devicetree/bindings/mfd/omap-usb-tll.txt index 62fe69724e3..c58d70437fc 100644 --- a/Documentation/devicetree/bindings/mfd/omap-usb-tll.txt +++ b/Documentation/devicetree/bindings/mfd/omap-usb-tll.txt @@ -7,6 +7,16 @@ Required properties:  - interrupts : should contain the TLL module's interrupt  - ti,hwmod : must contain "usb_tll_hs" +Optional properties: + +- clocks: a list of phandles and clock-specifier pairs, one for each entry in +  clock-names. + +- clock-names: should include: +  * "usb_tll_hs_usb_ch0_clk" - USB TLL channel 0 clock +  * "usb_tll_hs_usb_ch1_clk" - USB TLL channel 1 clock +  * "usb_tll_hs_usb_ch2_clk" - USB TLL channel 2 clock +  Example:  	usbhstll: usbhstll@4a062000 { diff --git a/Documentation/devicetree/bindings/mfd/qcom,pm8xxx.txt b/Documentation/devicetree/bindings/mfd/qcom,pm8xxx.txt new file mode 100644 index 00000000000..03518dc8b6b --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/qcom,pm8xxx.txt @@ -0,0 +1,96 @@ +Qualcomm PM8xxx PMIC multi-function devices + +The PM8xxx family of Power Management ICs are used to provide regulated +voltages and other various functionality to Qualcomm SoCs. + += PROPERTIES + +- compatible: +	Usage: required +	Value type: <string> +	Definition: must be one of: +		    "qcom,pm8058" +		    "qcom,pm8921" + +- #address-cells: +	Usage: required +	Value type: <u32> +	Definition: must be 1 + +- #size-cells: +	Usage: required +	Value type: <u32> +	Definition: must be 0 + +- interrupts: +	Usage: required +	Value type: <prop-encoded-array> +	Definition: specifies the interrupt that indicates a subdevice +		    has generated an interrupt (summary interrupt). The +		    format of the specifier is defined by the binding document +		    describing the node's interrupt parent. + +- #interrupt-cells: +	Usage: required +	Value type : <u32> +	Definition: must be 2. Specifies the number of cells needed to encode +		    an interrupt source. The 1st cell contains the interrupt +		    number. The 2nd cell is the trigger type and level flags +		    encoded as follows: + +			1 = low-to-high edge triggered +			2 = high-to-low edge triggered +			4 = active high level-sensitive +			8 = active low level-sensitive + +- interrupt-controller: +	Usage: required +	Value type: <empty> +	Definition: identifies this node as an interrupt controller + += SUBCOMPONENTS + +The PMIC contains multiple independent functions, each described in a subnode. +The below bindings specify the set of valid subnodes. + +== Real-Time Clock + +- compatible: +	Usage: required +	Value type: <string> +	Definition: must be one of: +		    "qcom,pm8058-rtc" +		    "qcom,pm8921-rtc" + +- reg: +	Usage: required +	Value type: <prop-encoded-array> +	Definition: single entry specifying the base address of the RTC registers + +- interrupts: +	Usage: required +	Value type: <prop-encoded-array> +	Definition: single entry specifying the RTC's alarm interrupt + +- allow-set-time: +	Usage: optional +	Value type: <empty> +	Definition: indicates that the setting of RTC time is allowed by +		    the host CPU + += EXAMPLE + +	pmicintc: pmic@0 { +		compatible = "qcom,pm8921"; +		interrupts = <104 8>; +		#interrupt-cells = <2>; +		interrupt-controller; +		#address-cells = <1>; +		#size-cells = <0>; + +		rtc@11d { +			compatible = "qcom,pm8921-rtc"; +			reg = <0x11d>; +			interrupts = <0x27 0>; +		}; +	}; diff --git a/Documentation/devicetree/bindings/mfd/qriox.txt b/Documentation/devicetree/bindings/mfd/qriox.txt new file mode 100644 index 00000000000..f301e2d4ce7 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/qriox.txt @@ -0,0 +1,17 @@ +KEYMILE qrio Board Control CPLD + +The qrio is a multifunction device that controls the KEYMILE boards based on +the kmp204x design. +It is consists of a reset controller, watchdog timer, LEDs, and 2 IRQ capable +GPIO blocks. + +Required properties: +- compatible: "keymile,qriox" +- reg: access on the parent local bus (chip select, offset in chip select, size) + +Example: + +	board-control@1,0 { +		compatible = "keymile,qriox"; +		reg = <1 0 0x80>; +	}; diff --git a/Documentation/devicetree/bindings/mfd/s2mpa01.txt b/Documentation/devicetree/bindings/mfd/s2mpa01.txt new file mode 100644 index 00000000000..c13d3d8c394 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/s2mpa01.txt @@ -0,0 +1,90 @@ + +* Samsung S2MPA01 Voltage and Current Regulator + +The Samsung S2MPA01 is a multi-function device which includes high +efficiency buck converters including Dual-Phase buck converter, various LDOs, +and an RTC. It is interfaced to the host controller using an I2C interface. +Each sub-block is addressed by the host system using different I2C slave +addresses. + +Required properties: +- compatible: Should be "samsung,s2mpa01-pmic". +- reg: Specifies the I2C slave address of the PMIC block. It should be 0x66. + +Optional properties: +- interrupt-parent: Specifies the phandle of the interrupt controller to which +  the interrupts from s2mpa01 are delivered to. +- interrupts: An interrupt specifier for the sole interrupt generated by the +  device. + +Optional nodes: +- regulators: The regulators of s2mpa01 that have to be instantiated should be +  included in a sub-node named 'regulators'. Regulator nodes and constraints +  included in this sub-node use the standard regulator bindings which are +  documented elsewhere. + +Properties for BUCK regulator nodes: +- regulator-ramp-delay: ramp delay in uV/us. May be 6250, 12500 +  (default), 25000, or 50000. May be 0 for disabling the ramp delay on +  BUCK{1,2,3,4}. + + In the absence of the regulator-ramp-delay property, the default ramp + delay will be used. + +  NOTE: Some BUCKs share the ramp rate setting i.e. same ramp value will be set +  for a particular group of BUCKs. So provide same regulator-ramp-delay=<value>. + +  The following BUCKs share ramp settings: +  * 1 and 6 +  * 2 and 4 +  * 8, 9, and 10 + +The following are the names of the regulators that the s2mpa01 PMIC block +supports. Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number +as per the datasheet of s2mpa01. + +	- LDOn +		  - valid values for n are 1 to 26 +		  - Example: LDO1, LD02, LDO26 +	- BUCKn +		  - valid values for n are 1 to 10. +		  - Example: BUCK1, BUCK2, BUCK9 + +Example: + +	s2mpa01_pmic@66 { +		compatible = "samsung,s2mpa01-pmic"; +		reg = <0x66>; + +		regulators { +			ldo1_reg: LDO1 { +				regulator-name = "VDD_ALIVE"; +				regulator-min-microvolt = <1000000>; +				regulator-max-microvolt = <1000000>; +			}; + +			ldo2_reg: LDO2 { +				regulator-name = "VDDQ_MMC2"; +				regulator-min-microvolt = <2800000>; +				regulator-max-microvolt = <2800000>; +				regulator-always-on; +			}; + +			buck1_reg: BUCK1 { +				regulator-name = "vdd_mif"; +				regulator-min-microvolt = <950000>; +				regulator-max-microvolt = <1350000>; +				regulator-always-on; +				regulator-boot-on; +			}; + +			buck2_reg: BUCK2 { +				regulator-name = "vdd_arm"; +				regulator-min-microvolt = <950000>; +				regulator-max-microvolt = <1350000>; +				regulator-always-on; +				regulator-boot-on; +				regulator-ramp-delay = <50000>; +			}; +		}; +	}; diff --git a/Documentation/devicetree/bindings/mfd/s2mps11.txt b/Documentation/devicetree/bindings/mfd/s2mps11.txt index c9332c62602..d81ba30c0d8 100644 --- a/Documentation/devicetree/bindings/mfd/s2mps11.txt +++ b/Documentation/devicetree/bindings/mfd/s2mps11.txt @@ -1,13 +1,13 @@ -* Samsung S2MPS11 Voltage and Current Regulator +* Samsung S2MPS11 and S2MPS14 Voltage and Current Regulator -The Samsung S2MP211 is a multi-function device which includes voltage and +The Samsung S2MPS11 is a multi-function device which includes voltage and  current regulators, RTC, charger controller and other sub-blocks. It is -interfaced to the host controller using a I2C interface. Each sub-block is -addressed by the host system using different I2C slave address. +interfaced to the host controller using an I2C interface. Each sub-block is +addressed by the host system using different I2C slave addresses.  Required properties: -- compatible: Should be "samsung,s2mps11-pmic". +- compatible: Should be "samsung,s2mps11-pmic" or "samsung,s2mps14-pmic".  - reg: Specifies the I2C slave address of the pmic block. It should be 0x66.  Optional properties: @@ -16,20 +16,25 @@ Optional properties:  - interrupts: Interrupt specifiers for interrupt sources.  Optional nodes: -- clocks: s2mps11 provides three(AP/CP/BT) buffered 32.768 KHz outputs, so to -  register these as clocks with common clock framework instantiate a sub-node -  named "clocks". It uses the common clock binding documented in : +- clocks: s2mps11 and s5m8767 provide three(AP/CP/BT) buffered 32.768 KHz +  outputs, so to register these as clocks with common clock framework +  instantiate a sub-node named "clocks". It uses the common clock binding +  documented in :    [Documentation/devicetree/bindings/clock/clock-bindings.txt] +  The s2mps14 provides two (AP/BT) buffered 32.768 KHz outputs.    - #clock-cells: should be 1.    - The following is the list of clocks generated by the controller. Each clock      is assigned an identifier and client nodes use this identifier to specify      the clock which they consume. -    Clock               ID -    ---------------------- -    32KhzAP		0 -    32KhzCP		1 -    32KhzBT		2 +    Clock               ID           Devices +    ---------------------------------------------------------- +    32KhzAP		0            S2MPS11, S2MPS14, S5M8767 +    32KhzCP		1            S2MPS11, S5M8767 +    32KhzBT		2            S2MPS11, S2MPS14, S5M8767 + +  - compatible: Should be one of: "samsung,s2mps11-clk", "samsung,s2mps14-clk", +		"samsung,s5m8767-clk"  - regulators: The regulators of s2mps11 that have to be instantiated should be  included in a sub-node named 'regulators'. Regulator nodes included in this @@ -43,13 +48,28 @@ sub-node should be of the format as listed below.   BUCK[2/3/4/6] supports disabling ramp delay on hardware, so explictly   regulator-ramp-delay = <0> can be used for them to disable ramp delay. - In absence of regulator-ramp-delay property, default ramp delay will be used. + In the absence of the regulator-ramp-delay property, the default ramp + delay will be used.  NOTE: Some BUCKs share the ramp rate setting i.e. same ramp value will be set  for a particular group of BUCKs. So provide same regulator-ramp-delay<value>.  Grouping of BUCKs sharing ramp rate setting is as follow : BUCK[1, 6],  BUCK[3, 4], and BUCK[7, 8, 10] +On S2MPS14 the LDO10, LDO11 and LDO12 can be configured to external control +over GPIO. To turn this feature on this property must be added to the regulator +sub-node: +	- samsung,ext-control-gpios: GPIO specifier for one GPIO +		controlling this regulator (enable/disable); +Example: +	LDO12 { +		regulator-name = "V_EMMC_2.8V"; +		regulator-min-microvolt = <2800000>; +		regulator-max-microvolt = <2800000>; +		samsung,ext-control-gpios = <&gpk0 2 0>; +	}; + +  The regulator constraints inside the regulator nodes use the standard regulator  bindings which are documented elsewhere. @@ -58,10 +78,14 @@ supports. Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number  as per the datasheet of s2mps11.  	- LDOn -		  - valid values for n are 1 to 28 -		  - Example: LDO0, LD01, LDO28 +		  - valid values for n are: +			- S2MPS11: 1 to 38 +			- S2MPS14: 1 to 25 +		  - Example: LDO1, LD02, LDO28  	- BUCKn -		  - valid values for n are 1 to 9. +		  - valid values for n are: +			- S2MPS11: 1 to 10 +			- S2MPS14: 1 to 5  		  - Example: BUCK1, BUCK2, BUCK9  Example: @@ -70,7 +94,8 @@ Example:  		compatible = "samsung,s2mps11-pmic";  		reg = <0x66>; -		s2m_osc: clocks{ +		s2m_osc: clocks { +			compatible = "samsung,s2mps11-clk";  			#clock-cells = 1;  			clock-output-names = "xx", "yy", "zz";  		}; diff --git a/Documentation/devicetree/bindings/mfd/sun6i-prcm.txt b/Documentation/devicetree/bindings/mfd/sun6i-prcm.txt new file mode 100644 index 00000000000..1f5a31fef90 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/sun6i-prcm.txt @@ -0,0 +1,59 @@ +* Allwinner PRCM (Power/Reset/Clock Management) Multi-Functional Device + +PRCM is an MFD device exposing several Power Management related devices +(like clks and reset controllers). + +Required properties: + - compatible: "allwinner,sun6i-a31-prcm" + - reg: The PRCM registers range + +The prcm node may contain several subdevices definitions: + - see Documentation/devicetree/clk/sunxi.txt for clock devices + - see Documentation/devicetree/reset/allwinner,sunxi-clock-reset.txt for reset +   controller devices + + +Example: + +	prcm: prcm@01f01400 { +		compatible = "allwinner,sun6i-a31-prcm"; +		reg = <0x01f01400 0x200>; + +		/* Put subdevices here */ +		ar100: ar100_clk { +			compatible = "allwinner,sun6i-a31-ar100-clk"; +			#clock-cells = <0>; +			clocks = <&osc32k>, <&osc24M>, <&pll6>, <&pll6>; +		}; + +		ahb0: ahb0_clk { +			compatible = "fixed-factor-clock"; +			#clock-cells = <0>; +			clock-div = <1>; +			clock-mult = <1>; +			clocks = <&ar100_div>; +			clock-output-names = "ahb0"; +		}; + +		apb0: apb0_clk { +			compatible = "allwinner,sun6i-a31-apb0-clk"; +			#clock-cells = <0>; +			clocks = <&ahb0>; +			clock-output-names = "apb0"; +		}; + +		apb0_gates: apb0_gates_clk { +			compatible = "allwinner,sun6i-a31-apb0-gates-clk"; +			#clock-cells = <1>; +			clocks = <&apb0>; +			clock-output-names = "apb0_pio", "apb0_ir", +					"apb0_timer01", "apb0_p2wi", +					"apb0_uart", "apb0_1wire", +					"apb0_i2c"; +		}; + +		apb0_rst: apb0_rst { +			compatible = "allwinner,sun6i-a31-clock-reset"; +			#reset-cells = <1>; +		}; +	}; diff --git a/Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt b/Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt new file mode 100644 index 00000000000..20963c76b4b --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/ti-keystone-devctrl.txt @@ -0,0 +1,19 @@ +* Device tree bindings for Texas Instruments keystone device state control + +The Keystone II devices have a set of registers that are used to control +the status of its peripherals. This node is intended to allow access to +this functionality. + +Required properties: + +- compatible:		"ti,keystone-devctrl", "syscon" + +- reg:			contains offset/length value for device state control +			registers space. + +Example: + +devctrl: device-state-control@0x02620000 { +	compatible = "ti,keystone-devctrl", "syscon"; +	reg = <0x02620000 0x1000>; +}; diff --git a/Documentation/devicetree/bindings/mfd/tps65910.txt b/Documentation/devicetree/bindings/mfd/tps65910.txt index 2e3304888ff..38833e63a59 100644 --- a/Documentation/devicetree/bindings/mfd/tps65910.txt +++ b/Documentation/devicetree/bindings/mfd/tps65910.txt @@ -11,7 +11,7 @@ Required properties:  - #interrupt-cells: the number of cells to describe an IRQ, this should be 2.    The first cell is the IRQ number.    The second cell is the flags, encoded as the trigger masks from -  Documentation/devicetree/bindings/interrupts.txt +  Documentation/devicetree/bindings/interrupt-controller/interrupts.txt  - regulators: This is the list of child nodes that specify the regulator    initialization data for defined regulators. Not all regulators for the given    device need to be present. The definition for each of these nodes is defined @@ -21,7 +21,7 @@ Required properties:    The valid regulator-compatible values are:    tps65910: vrtc, vio, vdd1, vdd2, vdd3, vdig1, vdig2, vpll, vdac, vaux1, -            vaux2, vaux33, vmmc +            vaux2, vaux33, vmmc, vbb    tps65911: vrtc, vio, vdd1, vdd3, vddctrl, ldo1, ldo2, ldo3, ldo4, ldo5,              ldo6, ldo7, ldo8 @@ -38,7 +38,7 @@ Required properties:  	vcc4-supply: VAUX1 and VAUX2 input.  	vcc5-supply: VPLL and VDAC input.  	vcc6-supply: VDIG1 and VDIG2 input. -	vcc7-supply: VRTC input. +	vcc7-supply: VRTC and VBB input.  	vccio-supply: VIO input.    tps65911:  	vcc1-supply: VDD1 input. diff --git a/Documentation/devicetree/bindings/mfd/twl4030-power.txt b/Documentation/devicetree/bindings/mfd/twl4030-power.txt index 8e15ec35ac9..b9ee7b98d3e 100644 --- a/Documentation/devicetree/bindings/mfd/twl4030-power.txt +++ b/Documentation/devicetree/bindings/mfd/twl4030-power.txt @@ -5,7 +5,22 @@ to control the power resources, including power scripts. For now, the  binding only supports the complete shutdown of the system after poweroff.  Required properties: -- compatible : must be "ti,twl4030-power" +- compatible : must be one of the following +	"ti,twl4030-power" +	"ti,twl4030-power-reset" +	"ti,twl4030-power-idle" +	"ti,twl4030-power-idle-osc-off" + +The use of ti,twl4030-power-reset is recommended at least on +3530 that needs a special configuration for warm reset to work. + +When using ti,twl4030-power-idle, the TI recommended configuration +for idle modes is loaded to the tlw4030 PMIC. + +When using ti,twl4030-power-idle-osc-off, the TI recommended +configuration is used with the external oscillator being shut +down during off-idle. Note that this does not work on all boards +depending on how the external oscillator is wired.  Optional properties:  - ti,use_poweroff: With this flag, the chip will initiates an ACTIVE-to-OFF or diff --git a/Documentation/devicetree/bindings/mfd/twl6040.txt b/Documentation/devicetree/bindings/mfd/twl6040.txt index 0f5dd709d75..a41157b5d93 100644 --- a/Documentation/devicetree/bindings/mfd/twl6040.txt +++ b/Documentation/devicetree/bindings/mfd/twl6040.txt @@ -19,6 +19,8 @@ Required properties:  Optional properties, nodes:  - enable-active-high: To power on the twl6040 during boot. +- clocks: phandle to the clk32k clock provider +- clock-names: Must be "clk32k"  Vibra functionality  Required properties: diff --git a/Documentation/devicetree/bindings/mipi/dsi/mipi-dsi-bus.txt b/Documentation/devicetree/bindings/mipi/dsi/mipi-dsi-bus.txt new file mode 100644 index 00000000000..973c2727377 --- /dev/null +++ b/Documentation/devicetree/bindings/mipi/dsi/mipi-dsi-bus.txt @@ -0,0 +1,98 @@ +MIPI DSI (Display Serial Interface) busses +========================================== + +The MIPI Display Serial Interface specifies a serial bus and a protocol for +communication between a host and up to four peripherals. This document will +define the syntax used to represent a DSI bus in a device tree. + +This document describes DSI bus-specific properties only or defines existing +standard properties in the context of the DSI bus. + +Each DSI host provides a DSI bus. The DSI host controller's node contains a +set of properties that characterize the bus. Child nodes describe individual +peripherals on that bus. + +The following assumes that only a single peripheral is connected to a DSI +host. Experience shows that this is true for the large majority of setups. + +DSI host +-------- + +In addition to the standard properties and those defined by the parent bus of +a DSI host, the following properties apply to a node representing a DSI host. + +Required properties: +- #address-cells: The number of cells required to represent an address on the +  bus. DSI peripherals are addressed using a 2-bit virtual channel number, so +  a maximum of 4 devices can be addressed on a single bus. Hence the value of +  this property should be 1. +- #size-cells: Should be 0. There are cases where it makes sense to use a +  different value here. See below. + +DSI peripheral +-------------- + +Peripherals are represented as child nodes of the DSI host's node. Properties +described here apply to all DSI peripherals, but individual bindings may want +to define additional, device-specific properties. + +Required properties: +- reg: The virtual channel number of a DSI peripheral. Must be in the range +  from 0 to 3. + +Some DSI peripherals respond to more than a single virtual channel. In that +case two alternative representations can be chosen: +- The reg property can take multiple entries, one for each virtual channel +  that the peripheral responds to. +- If the virtual channels that a peripheral responds to are consecutive, the +  #size-cells can be set to 1. The first cell of each entry in the reg +  property is the number of the first virtual channel and the second cell is +  the number of consecutive virtual channels. + +Example +------- + +	dsi-host { +		... + +		#address-cells = <1>; +		#size-cells = <0>; + +		/* peripheral responds to virtual channel 0 */ +		peripheral@0 { +			compatible = "..."; +			reg = <0>; +		}; + +		... +	}; + +	dsi-host { +		... + +		#address-cells = <1>; +		#size-cells = <0>; + +		/* peripheral responds to virtual channels 0 and 2 */ +		peripheral@0 { +			compatible = "..."; +			reg = <0, 2>; +		}; + +		... +	}; + +	dsi-host { +		... + +		#address-cells = <1>; +		#size-cells = <1>; + +		/* peripheral responds to virtual channels 1, 2 and 3 */ +		peripheral@1 { +			compatible = "..."; +			reg = <1 3>; +		}; + +		... +	}; diff --git a/Documentation/devicetree/bindings/mipi/nvidia,tegra114-mipi.txt b/Documentation/devicetree/bindings/mipi/nvidia,tegra114-mipi.txt new file mode 100644 index 00000000000..e4a25cedc5c --- /dev/null +++ b/Documentation/devicetree/bindings/mipi/nvidia,tegra114-mipi.txt @@ -0,0 +1,41 @@ +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: 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-cal +- #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>; +		clock-names = "mipi-cal"; +		#nvidia,mipi-calibrate-cells = <1>; +	}; + +	... + +	host1x@50000000 { +		... + +		dsi@54300000 { +			... + +			nvidia,mipi-calibrate = <&mipi 0x060>; + +			... +		}; + +		... +	}; diff --git a/Documentation/devicetree/bindings/misc/allwinner,sunxi-sid.txt b/Documentation/devicetree/bindings/misc/allwinner,sunxi-sid.txt new file mode 100644 index 00000000000..fabdf64a573 --- /dev/null +++ b/Documentation/devicetree/bindings/misc/allwinner,sunxi-sid.txt @@ -0,0 +1,17 @@ +Allwinner sunxi-sid + +Required properties: +- compatible: "allwinner,sun4i-a10-sid" or "allwinner,sun7i-a20-sid" +- reg: Should contain registers location and length + +Example for sun4i: +	sid@01c23800 { +		compatible = "allwinner,sun4i-a10-sid"; +		reg = <0x01c23800 0x10> +	}; + +Example for sun7i: +	sid@01c23800 { +		compatible = "allwinner,sun7i-a20-sid"; +		reg = <0x01c23800 0x200> +	}; diff --git a/Documentation/devicetree/bindings/misc/arm-charlcd.txt b/Documentation/devicetree/bindings/misc/arm-charlcd.txt new file mode 100644 index 00000000000..e28e2aac47f --- /dev/null +++ b/Documentation/devicetree/bindings/misc/arm-charlcd.txt @@ -0,0 +1,18 @@ +ARM Versatile Character LCD +----------------------------------------------------- +This binding defines the character LCD interface found on ARM Versatile AB +and PB reference platforms. + +Required properties: +- compatible : "arm,versatile-clcd" +- reg : Location and size of character LCD registers + +Optional properties: +- interrupts - single interrupt for character LCD. The character LCD can +  operate in polled mode without an interrupt. + +Example: +	lcd@10008000 { +		compatible = "arm,versatile-lcd"; +		reg = <0x10008000 0x1000>; +	}; diff --git a/Documentation/devicetree/bindings/misc/atmel-ssc.txt b/Documentation/devicetree/bindings/misc/atmel-ssc.txt index a45ae08c8ed..efc98ea1f23 100644 --- a/Documentation/devicetree/bindings/misc/atmel-ssc.txt +++ b/Documentation/devicetree/bindings/misc/atmel-ssc.txt @@ -6,6 +6,9 @@ Required properties:  	- atmel,at91sam9g45-ssc: support dma transfer  - reg: Should contain SSC registers location and length  - interrupts: Should contain SSC interrupt +- clock-names: tuple listing input clock names. +	Required elements: "pclk" +- clocks: phandles to input clocks.  Required properties for devices compatible with "atmel,at91sam9g45-ssc": @@ -14,12 +17,22 @@ Required properties for devices compatible with "atmel,at91sam9g45-ssc":    See Documentation/devicetree/bindings/dma/atmel-dma.txt for details.  - dma-names: Must be "tx", "rx". +Optional properties: +  - atmel,clk-from-rk-pin: bool property. +     - When SSC works in slave mode, according to the hardware design, the +       clock can get from TK pin, and also can get from RK pin. So, add +       this parameter to choose where the clock from. +     - By default the clock is from TK pin, if the clock from RK pin, this +       property is needed. +  Examples:  - PDC transfer:  ssc0: ssc@fffbc000 {  	compatible = "atmel,at91rm9200-ssc";  	reg = <0xfffbc000 0x4000>;  	interrupts = <14 4 5>; +	clocks = <&ssc0_clk>; +	clock-names = "pclk";  };  - DMA transfer: diff --git a/Documentation/devicetree/bindings/misc/bmp085.txt b/Documentation/devicetree/bindings/misc/bmp085.txt index 91dfda2e4e1..d7a6deb6b21 100644 --- a/Documentation/devicetree/bindings/misc/bmp085.txt +++ b/Documentation/devicetree/bindings/misc/bmp085.txt @@ -8,6 +8,8 @@ Optional properties:  - temp-measurement-period: temperature measurement period (milliseconds)  - default-oversampling: default oversampling value to be used at startup,    value range is 0-3 with rising sensitivity. +- interrupt-parent: should be the phandle for the interrupt controller +- interrupts: interrupt mapping for IRQ  Example: @@ -17,4 +19,6 @@ pressure@77 {  	chip-id = <10>;  	temp-measurement-period = <100>;  	default-oversampling = <2>; +	interrupt-parent = <&gpio0>; +	interrupts = <25 IRQ_TYPE_EDGE_RISING>;  }; diff --git a/Documentation/devicetree/bindings/misc/sram.txt b/Documentation/devicetree/bindings/misc/sram.txt index 4d0a00e453a..36cbe5aea99 100644 --- a/Documentation/devicetree/bindings/misc/sram.txt +++ b/Documentation/devicetree/bindings/misc/sram.txt @@ -8,9 +8,44 @@ Required properties:  - reg : SRAM iomem address range +Reserving sram areas: +--------------------- + +Each child of the sram node specifies a region of reserved memory. Each +child node should use a 'reg' property to specify a specific range of +reserved memory. + +Following the generic-names recommended practice, node names should +reflect the purpose of the node. Unit address (@<address>) should be +appended to the name. + +Required properties in the sram node: + +- #address-cells, #size-cells : should use the same values as the root node +- ranges : standard definition, should translate from local addresses +           within the sram to bus addresses + +Required properties in the area nodes: + +- reg : iomem address range, relative to the SRAM range + +Optional properties in the area nodes: + +- compatible : standard definition, should contain a vendor specific string +               in the form <vendor>,[<device>-]<usage> +  Example:  sram: sram@5c000000 {  	compatible = "mmio-sram";  	reg = <0x5c000000 0x40000>; /* 256 KiB SRAM at address 0x5c000000 */ + +	#adress-cells = <1>; +	#size-cells = <1>; +	ranges = <0 0x5c000000 0x40000>; + +	smp-sram@100 { +		compatible = "socvendor,smp-sram"; +		reg = <0x100 0x50>; +	};  }; diff --git a/Documentation/devicetree/bindings/misc/ti,dac7512.txt b/Documentation/devicetree/bindings/misc/ti,dac7512.txt new file mode 100644 index 00000000000..1db45939dac --- /dev/null +++ b/Documentation/devicetree/bindings/misc/ti,dac7512.txt @@ -0,0 +1,20 @@ +TI DAC7512 DEVICETREE BINDINGS + +Required properties: + +	- "compatible"		Must be set to "ti,dac7512" + +Property rules described in Documentation/devicetree/bindings/spi/spi-bus.txt +apply. In particular, "reg" and "spi-max-frequency" properties must be given. + + +Example: + +	spi_master { +		dac7512: dac7512@0 { +			compatible = "ti,dac7512"; +			reg = <0>; /* CS0 */ +			spi-max-frequency = <1000000>; +		}; +	}; + diff --git a/Documentation/devicetree/bindings/mmc/arasan,sdhci.txt b/Documentation/devicetree/bindings/mmc/arasan,sdhci.txt new file mode 100644 index 00000000000..98ee2abbe13 --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/arasan,sdhci.txt @@ -0,0 +1,27 @@ +Device Tree Bindings for the Arasan SDHCI Controller + +  The bindings follow the mmc[1], clock[2] and interrupt[3] bindings. Only +  deviations are documented here. + +  [1] Documentation/devicetree/bindings/mmc/mmc.txt +  [2] Documentation/devicetree/bindings/clock/clock-bindings.txt +  [3] Documentation/devicetree/bindings/interrupt-controller/interrupts.txt + +Required Properties: +  - compatible: Compatibility string. Must be 'arasan,sdhci-8.9a' +  - reg: From mmc bindings: Register location and length. +  - clocks: From clock bindings: Handles to clock inputs. +  - clock-names: From clock bindings: Tuple including "clk_xin" and "clk_ahb" +  - interrupts: Interrupt specifier +  - interrupt-parent: Phandle for the interrupt controller that services +		      interrupts for this device. + +Example: +	sdhci@e0100000 { +		compatible = "arasan,sdhci-8.9a"; +		reg = <0xe0100000 0x1000>; +		clock-names = "clk_xin", "clk_ahb"; +		clocks = <&clkc 21>, <&clkc 32>; +		interrupt-parent = <&gic>; +		interrupts = <0 24 4>; +	} ; diff --git a/Documentation/devicetree/bindings/mmc/atmel-hsmci.txt b/Documentation/devicetree/bindings/mmc/atmel-hsmci.txt index 0a85c70cd30..07ad02075a9 100644 --- a/Documentation/devicetree/bindings/mmc/atmel-hsmci.txt +++ b/Documentation/devicetree/bindings/mmc/atmel-hsmci.txt @@ -13,6 +13,9 @@ Required properties:  - #address-cells: should be one. The cell is the slot id.  - #size-cells: should be zero.  - at least one slot node +- clock-names: tuple listing input clock names. +	Required elements: "mci_clk" +- clocks: phandles to input clocks.  The node contains child nodes for each slot that the platform uses @@ -24,6 +27,8 @@ mmc0: mmc@f0008000 {  	interrupts = <12 4>;  	#address-cells = <1>;  	#size-cells = <0>; +	clock-names = "mci_clk"; +	clocks = <&mci0_clk>;  	[ child node definitions...]  }; diff --git a/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt index c67b975c890..532b1d440ab 100644 --- a/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt +++ b/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt @@ -16,6 +16,8 @@ Required Properties:  	  specific extensions.  	- "samsung,exynos5250-dw-mshc": for controllers with Samsung Exynos5250  	  specific extensions. +	- "samsung,exynos5420-dw-mshc": for controllers with Samsung Exynos5420 +	  specific extensions.  * samsung,dw-mshc-ciu-div: Specifies the divider value for the card interface    unit (ciu) clock. This property is applicable only for Exynos5 SoC's and diff --git a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt index 1dd622546d0..9046ba06c47 100644 --- a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt +++ b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt @@ -12,6 +12,11 @@ Required properties:  Optional properties:  - fsl,cd-controller : Indicate to use controller internal card detection  - fsl,wp-controller : Indicate to use controller internal write protection +- fsl,delay-line : Specify the number of delay cells for override mode. +  This is used to set the clock delay for DLL(Delay Line) on override mode +  to select a proper data sampling window in case the clock quality is not good +  due to signal path is too long on the board. Please refer to eSDHC/uSDHC +  chapter, DLL (Delay Line) section in RM for details.  Examples: diff --git a/Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt new file mode 100644 index 00000000000..e5bc49f764d --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt @@ -0,0 +1,46 @@ +* Hisilicon specific extensions to the Synopsys Designware Mobile +  Storage Host Controller + +Read synopsys-dw-mshc.txt for more details + +The Synopsys designware mobile storage host controller is used to interface +a SoC with storage medium such as eMMC or SD/MMC cards. This file documents +differences between the core Synopsys dw mshc controller properties described +by synopsys-dw-mshc.txt and the properties used by the Hisilicon specific +extensions to the Synopsys Designware Mobile Storage Host Controller. + +Required Properties: + +* compatible: should be one of the following. +  - "hisilicon,hi4511-dw-mshc": for controllers with hi4511 specific extensions. + +Example: + +	/* for Hi3620 */ + +	/* SoC portion */ +	dwmmc_0: dwmmc0@fcd03000 { +		compatible = "hisilicon,hi4511-dw-mshc"; +		reg = <0xfcd03000 0x1000>; +		interrupts = <0 16 4>; +		#address-cells = <1>; +		#size-cells = <0>; +		clocks = <&mmc_clock HI3620_SD_CIUCLK>, <&clock HI3620_DDRC_PER_CLK>; +		clock-names = "ciu", "biu"; +	}; + +	/* Board portion */ +	dwmmc0@fcd03000 { +		num-slots = <1>; +		vmmc-supply = <&ldo12>; +		fifo-depth = <0x100>; +		supports-highspeed; +		pinctrl-names = "default"; +		pinctrl-0 = <&sd_pmx_pins &sd_cfg_func1 &sd_cfg_func2>; +		slot@0 { +			reg = <0>; +			bus-width = <4>; +			disable-wp; +			cd-gpios = <&gpio10 3 0>; +		}; +	}; diff --git a/Documentation/devicetree/bindings/mmc/kona-sdhci.txt b/Documentation/devicetree/bindings/mmc/kona-sdhci.txt index 789fb07a426..aaba2483b4f 100644 --- a/Documentation/devicetree/bindings/mmc/kona-sdhci.txt +++ b/Documentation/devicetree/bindings/mmc/kona-sdhci.txt @@ -6,12 +6,16 @@ and the properties present in the bcm281xx SDHCI  Required properties:  - compatible : Should be "brcm,kona-sdhci"  - DEPRECATED: compatible : Should be "bcm,kona-sdhci" +- clocks: phandle + clock specifier pair of the external clock + +Refer to clocks/clock-bindings.txt for generic clock consumer properties.  Example:  sdio2: sdio@0x3f1a0000 {  	compatible = "brcm,kona-sdhci";  	reg = <0x3f1a0000 0x10000>; +	clocks = <&sdio3_clk>;  	interrupts = <0x0 74 0x4>;  }; diff --git a/Documentation/devicetree/bindings/mmc/mmc.txt b/Documentation/devicetree/bindings/mmc/mmc.txt index 458b57f199a..3c18001dfd5 100644 --- a/Documentation/devicetree/bindings/mmc/mmc.txt +++ b/Documentation/devicetree/bindings/mmc/mmc.txt @@ -26,9 +26,20 @@ Optional properties:    this system, even if the controller claims it is.  - cap-sd-highspeed: SD high-speed timing is supported  - cap-mmc-highspeed: MMC high-speed timing is supported +- sd-uhs-sdr12: SD UHS SDR12 speed is supported +- sd-uhs-sdr25: SD UHS SDR25 speed is supported +- sd-uhs-sdr50: SD UHS SDR50 speed is supported +- sd-uhs-sdr104: SD UHS SDR104 speed is supported +- sd-uhs-ddr50: SD UHS DDR50 speed is supported  - cap-power-off-card: powering off the card is safe  - cap-sdio-irq: enable SDIO IRQ signalling on this interface  - full-pwr-cycle: full power cycle of the card is supported +- mmc-highspeed-ddr-1_8v: eMMC high-speed DDR mode(1.8V I/O) is supported +- mmc-highspeed-ddr-1_2v: eMMC high-speed DDR mode(1.2V I/O) is supported +- mmc-hs200-1_8v: eMMC HS200 mode(1.8V I/O) is supported +- mmc-hs200-1_2v: eMMC HS200 mode(1.2V I/O) is supported +- mmc-hs400-1_8v: eMMC HS400 mode(1.8V I/O) is supported +- mmc-hs400-1_2v: eMMC HS400 mode(1.2V I/O) is supported  *NOTE* on CD and WP polarity. To use common for all SD/MMC host controllers line  polarity properties, we have to fix the meaning of the "normal" and "inverted" diff --git a/Documentation/devicetree/bindings/mmc/mmci.txt b/Documentation/devicetree/bindings/mmc/mmci.txt index 2b584cae352..03796cf2d3e 100644 --- a/Documentation/devicetree/bindings/mmc/mmci.txt +++ b/Documentation/devicetree/bindings/mmc/mmci.txt @@ -4,12 +4,58 @@ The ARM PrimeCell MMCI PL180 and PL181 provides an interface for  reading and writing to MultiMedia and SD cards alike.  This file documents differences between the core properties described -by mmc.txt and the properties used by the mmci driver. +by mmc.txt and the properties used by the mmci driver. Using "st" as +the prefix for a property, indicates support by the ST Micro variant.  Required properties:  - compatible             : contains "arm,pl18x", "arm,primecell". -- arm,primecell-periphid : contains the PrimeCell Peripheral ID. +- vmmc-supply            : phandle to the regulator device tree node, mentioned +                           as the VCC/VDD supply in the eMMC/SD specs.  Optional properties: -- mmc-cap-mmc-highspeed  : indicates whether MMC is high speed capable -- mmc-cap-sd-highspeed   : indicates whether SD is high speed capable +- arm,primecell-periphid : contains the PrimeCell Peripheral ID, it overrides +                           the ID provided by the HW +- vqmmc-supply           : phandle to the regulator device tree node, mentioned +                           as the VCCQ/VDD_IO supply in the eMMC/SD specs. +- st,sig-dir-dat0        : bus signal direction pin used for DAT[0]. +- st,sig-dir-dat2        : bus signal direction pin used for DAT[2]. +- st,sig-dir-dat31       : bus signal direction pin used for DAT[3] and DAT[1]. +- st,sig-dir-dat74       : bus signal direction pin used for DAT[4] to DAT[7]. +- st,sig-dir-cmd         : cmd signal direction pin used for CMD. +- st,sig-pin-fbclk       : feedback clock signal pin used. + +Deprecated properties: +- mmc-cap-mmc-highspeed  : indicates whether MMC is high speed capable. +- mmc-cap-sd-highspeed   : indicates whether SD is high speed capable. + +Example: + +sdi0_per1@80126000 { +	compatible = "arm,pl18x", "arm,primecell"; +	reg = <0x80126000 0x1000>; +	interrupts = <0 60 IRQ_TYPE_LEVEL_HIGH>; + +	dmas = <&dma 29 0 0x2>, /* Logical - DevToMem */ +	       <&dma 29 0 0x0>; /* Logical - MemToDev */ +	dma-names = "rx", "tx"; + +	clocks = <&prcc_kclk 1 5>, <&prcc_pclk 1 5>; +	clock-names = "sdi", "apb_pclk"; + +	max-frequency = <100000000>; +	bus-width = <4>; +	cap-sd-highspeed; +	cap-mmc-highspeed; +	cd-gpios  = <&gpio2 31 0x4>; // 95 +	st,sig-dir-dat0; +	st,sig-dir-dat2; +	st,sig-dir-cmd; +	st,sig-pin-fbclk; + +	vmmc-supply = <&ab8500_ldo_aux3_reg>; +	vqmmc-supply = <&vmmci>; + +	pinctrl-names = "default", "sleep"; +	pinctrl-0 = <&sdi0_default_mode>; +	pinctrl-1 = <&sdi0_sleep_mode>; +}; diff --git a/Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt b/Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt new file mode 100644 index 00000000000..b63819149f2 --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/moxa,moxart-mmc.txt @@ -0,0 +1,30 @@ +MOXA ART MMC Host Controller Interface + +  Inherits from mmc binding[1]. + +  [1] Documentation/devicetree/bindings/mmc/mmc.txt + +Required properties: + +- compatible :	Must be "moxa,moxart-mmc" or "faraday,ftsdc010" +- reg :		Should contain registers location and length +- interrupts :	Should contain the interrupt number +- clocks :	Should contain phandle for the clock feeding the MMC controller + +Optional properties: + +- dmas :	Should contain two DMA channels, line request number must be 5 for +		both channels +- dma-names :	Must be "tx", "rx" + +Example: + +	mmc: mmc@98e00000 { +		compatible = "moxa,moxart-mmc"; +		reg = <0x98e00000 0x5C>; +		interrupts = <5 0>; +		clocks = <&clk_apb>; +		dmas =  <&dma 5>, +			<&dma 5>; +		dma-names = "tx", "rx"; +	}; diff --git a/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt b/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt index c6d7b11db9e..f357c16ea81 100644 --- a/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt +++ b/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt @@ -8,6 +8,12 @@ by mmc.txt and the properties used by the sdhci-tegra driver.  Required properties:  - compatible : Should be "nvidia,<chip>-sdhci" +- clocks : Must contain one entry, for the module clock. +  See ../clocks/clock-bindings.txt for details. +- resets : Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names : Must include the following entries: +  - sdhci  Optional properties:  - power-gpios : Specify GPIOs for power control @@ -18,6 +24,9 @@ sdhci@c8000200 {  	compatible = "nvidia,tegra20-sdhci";  	reg = <0xc8000200 0x200>;  	interrupts = <47>; +	clocks = <&tegra_car 14>; +	resets = <&tegra_car 14>; +	reset-names = "sdhci";  	cd-gpios = <&gpio 69 0>; /* gpio PI5 */  	wp-gpios = <&gpio 57 0>; /* gpio PH1 */  	power-gpios = <&gpio 155 0>; /* gpio PT3 */ diff --git a/Documentation/devicetree/bindings/mmc/samsung-sdhci.txt b/Documentation/devicetree/bindings/mmc/samsung-sdhci.txt index 328e990d254..42e0a9afa10 100644 --- a/Documentation/devicetree/bindings/mmc/samsung-sdhci.txt +++ b/Documentation/devicetree/bindings/mmc/samsung-sdhci.txt @@ -3,7 +3,7 @@  Samsung's SDHCI controller is used as a connectivity interface with external  MMC, SD and eMMC storage mediums. This file documents differences between the  core mmc properties described by mmc.txt and the properties used by the -Samsung implmentation of the SDHCI controller. +Samsung implementation of the SDHCI controller.  Required SoC Specific Properties:  - compatible: should be one of the following diff --git a/Documentation/devicetree/bindings/mmc/sdhci-msm.txt b/Documentation/devicetree/bindings/mmc/sdhci-msm.txt new file mode 100644 index 00000000000..81b33b5b20f --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/sdhci-msm.txt @@ -0,0 +1,55 @@ +* Qualcomm SDHCI controller (sdhci-msm) + +This file documents differences between the core properties in mmc.txt +and the properties used by the sdhci-msm driver. + +Required properties: +- compatible: Should contain "qcom,sdhci-msm-v4". +- reg: Base address and length of the register in the following order: +	- Host controller register map (required) +	- SD Core register map (required) +- interrupts: Should contain an interrupt-specifiers for the interrupts: +	- Host controller interrupt (required) +- pinctrl-names: Should contain only one value - "default". +- pinctrl-0: Should specify pin control groups used for this controller. +- clocks: A list of phandle + clock-specifier pairs for the clocks listed in clock-names. +- clock-names: Should contain the following: +	"iface" - Main peripheral bus clock (PCLK/HCLK - AHB Bus clock) (required) +	"core"	- SDC MMC clock (MCLK) (required) +	"bus"	- SDCC bus voter clock (optional) + +Example: + +	sdhc_1: sdhci@f9824900 { +		compatible = "qcom,sdhci-msm-v4"; +		reg = <0xf9824900 0x11c>, <0xf9824000 0x800>; +		interrupts = <0 123 0>; +		bus-width = <8>; +		non-removable; + +		vmmc = <&pm8941_l20>; +		vqmmc = <&pm8941_s3>; + +		pinctrl-names = "default"; +		pinctrl-0 = <&sdc1_clk &sdc1_cmd &sdc1_data>; + +		clocks = <&gcc GCC_SDCC1_APPS_CLK>, <&gcc GCC_SDCC1_AHB_CLK>; +		clock-names = "core", "iface"; +	}; + +	sdhc_2: sdhci@f98a4900 { +		compatible = "qcom,sdhci-msm-v4"; +		reg = <0xf98a4900 0x11c>, <0xf98a4000 0x800>; +		interrupts = <0 125 0>; +		bus-width = <4>; +		cd-gpios = <&msmgpio 62 0x1>; + +		vmmc = <&pm8941_l21>; +		vqmmc = <&pm8941_l13>; + +		pinctrl-names = "default"; +		pinctrl-0 = <&sdc2_clk &sdc2_cmd &sdc2_data>; + +		clocks = <&gcc GCC_SDCC2_APPS_CLK>, <&gcc GCC_SDCC2_AHB_CLK>; +		clock-names = "core", "iface"; +	}; diff --git a/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt b/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt index dbe98a3c183..86223c3eda9 100644 --- a/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt +++ b/Documentation/devicetree/bindings/mmc/sdhci-pxa.txt @@ -4,7 +4,14 @@ This file documents differences between the core properties in mmc.txt  and the properties used by the sdhci-pxav2 and sdhci-pxav3 drivers.  Required properties: -- compatible: Should be "mrvl,pxav2-mmc" or "mrvl,pxav3-mmc". +- compatible: Should be "mrvl,pxav2-mmc", "mrvl,pxav3-mmc" or +  "marvell,armada-380-sdhci". +- reg: +  * for "mrvl,pxav2-mmc" and "mrvl,pxav3-mmc", one register area for +    the SDHCI registers. +  * for "marvell,armada-380-sdhci", two register areas. The first one +    for the SDHCI registers themselves, and the second one for the +    AXI/Mbus bridge registers of the SDHCI unit.  Optional properties:  - mrvl,clk-delay-cycles: Specify a number of cycles to delay for tuning. @@ -19,3 +26,11 @@ sdhci@d4280800 {  	non-removable;  	mrvl,clk-delay-cycles = <31>;  }; + +sdhci@d8000 { +	compatible = "marvell,armada-380-sdhci"; +	reg = <0xd8000 0x1000>, <0xdc000 0x100>; +	interrupts = <0 25 0x4>; +	clocks = <&gateclk 17>; +	mrvl,clk-delay-cycles = <0x1F>; +}; diff --git a/Documentation/devicetree/bindings/mmc/socfpga-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/socfpga-dw-mshc.txt new file mode 100644 index 00000000000..4897bea7e3f --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/socfpga-dw-mshc.txt @@ -0,0 +1,23 @@ +* Altera SOCFPGA specific extensions to the Synopsys Designware Mobile +  Storage Host Controller + +The Synopsys designware mobile storage host controller is used to interface +a SoC with storage medium such as eMMC or SD/MMC cards. This file documents +differences between the core Synopsys dw mshc controller properties described +by synopsys-dw-mshc.txt and the properties used by the Altera SOCFPGA specific +extensions to the Synopsys Designware Mobile Storage Host Controller. + +Required Properties: + +* compatible: should be +	- "altr,socfpga-dw-mshc": for Altera's SOCFPGA platform + +Example: + +	mmc: dwmmc0@ff704000 { +		compatible = "altr,socfpga-dw-mshc"; +		reg = <0xff704000 0x1000>; +		interrupts = <0 129 4>; +		#address-cells = <1>; +		#size-cells = <0>; +	}; diff --git a/Documentation/devicetree/bindings/mmc/sunxi-mmc.txt b/Documentation/devicetree/bindings/mmc/sunxi-mmc.txt new file mode 100644 index 00000000000..91b3a346715 --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/sunxi-mmc.txt @@ -0,0 +1,43 @@ +* Allwinner sunxi MMC controller + +The highspeed MMC host controller on Allwinner SoCs provides an interface +for MMC, SD and SDIO types of memory cards. + +Supported maximum speeds are the ones of the eMMC standard 4.5 as well +as the speed of SD standard 3.0. +Absolute maximum transfer rate is 200MB/s + +Required properties: + - compatible : "allwinner,sun4i-a10-mmc" or "allwinner,sun5i-a13-mmc" + - reg : mmc controller base registers + - clocks : a list with 2 phandle + clock specifier pairs + - clock-names : must contain "ahb" and "mmc" + - interrupts : mmc controller interrupt + +Optional properties: + - resets : phandle + reset specifier pair + - reset-names : must contain "ahb" + - for cd, bus-width and additional generic mmc parameters +   please refer to mmc.txt within this directory + +Examples: +	- Within .dtsi: +	mmc0: mmc@01c0f000 { +		compatible = "allwinner,sun5i-a13-mmc"; +		reg = <0x01c0f000 0x1000>; +		clocks = <&ahb_gates 8>, <&mmc0_clk>; +		clock-names = "ahb", "mod"; +		interrupts = <0 32 4>; +		status = "disabled"; +	}; + +	- Within dts: +	mmc0: mmc@01c0f000 { +		pinctrl-names = "default", "default"; +		pinctrl-0 = <&mmc0_pins_a>; +		pinctrl-1 = <&mmc0_cd_pin_reference_design>; +		bus-width = <4>; +		cd-gpios = <&pio 7 1 0>; /* PH1 */ +		cd-inverted; +		status = "okay"; +	}; diff --git a/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt index 066a78b034c..2d4a7258a10 100644 --- a/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt +++ b/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt @@ -52,6 +52,9 @@ Optional properties:    is specified and the ciu clock is specified then we'll try to set the ciu    clock to this at probe time. +* clock-freq-min-max: Minimum and Maximum clock frequency for card output +  clock(cclk_out). If it's not specified, max is 200MHZ and min is 400KHz by default. +  * num-slots: specifies the number of slots supported by the controller.    The number of physical slots actually used could be equal or less than the    value specified by num-slots. If this property is not specified, the value @@ -93,6 +96,7 @@ board specific portions as listed below.  	dwmmc0@12200000 {  		clock-frequency = <400000000>; +		clock-freq-min-max = <400000 200000000>;  		num-slots = <1>;  		supports-highspeed;  		broken-cd; diff --git a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt index ed271fc255b..ce8056116fb 100644 --- a/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt +++ b/Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt @@ -10,6 +10,7 @@ Required properties:  - compatible:   Should be "ti,omap2-hsmmc", for OMAP2 controllers   Should be "ti,omap3-hsmmc", for OMAP3 controllers + Should be "ti,omap3-pre-es3-hsmmc" for OMAP3 controllers pre ES3.0   Should be "ti,omap4-hsmmc", for OMAP4 controllers  - ti,hwmods: Must be "mmc<n>", n is controller instance starting 1 @@ -20,8 +21,29 @@ ti,dual-volt: boolean, supports dual voltage cards  ti,non-removable: non-removable slot (like eMMC)  ti,needs-special-reset: Requires a special softreset sequence  ti,needs-special-hs-handling: HSMMC IP needs special setting for handling High Speed +dmas: List of DMA specifiers with the controller specific format +as described in the generic DMA client binding. A tx and rx +specifier is required. +dma-names: List of DMA request names. These strings correspond +1:1 with the DMA specifiers listed in dmas. The string naming is +to be "rx" and "tx" for RX and TX DMA requests, respectively. + +Examples: + +[hwmod populated DMA resources] + +	mmc1: mmc@0x4809c000 { +		compatible = "ti,omap4-hsmmc"; +		reg = <0x4809c000 0x400>; +		ti,hwmods = "mmc1"; +		ti,dual-volt; +		bus-width = <4>; +		vmmc-supply = <&vmmc>; /* phandle to regulator node */ +		ti,non-removable; +	}; + +[generic DMA request binding] -Example:  	mmc1: mmc@0x4809c000 {  		compatible = "ti,omap4-hsmmc";  		reg = <0x4809c000 0x400>; @@ -30,4 +52,7 @@ Example:  		bus-width = <4>;  		vmmc-supply = <&vmmc>; /* phandle to regulator node */  		ti,non-removable; +		dmas = <&edma 24 +			&edma 25>; +		dma-names = "tx", "rx";  	}; diff --git a/Documentation/devicetree/bindings/mmc/ti-omap.txt b/Documentation/devicetree/bindings/mmc/ti-omap.txt new file mode 100644 index 00000000000..8de57996976 --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/ti-omap.txt @@ -0,0 +1,54 @@ +* TI MMC host controller for OMAP1 and 2420 + +The MMC Host Controller on TI OMAP1 and 2420 family provides +an interface for MMC, SD, and SDIO types of memory cards. + +This file documents differences between the core properties described +by mmc.txt and the properties used by the omap mmc driver. + +Note that this driver will not work with omap2430 or later omaps, +please see the omap hsmmc driver for the current omaps. + +Required properties: +- compatible: Must be "ti,omap2420-mmc", for OMAP2420 controllers +- ti,hwmods: For 2420, must be "msdi<n>", where n is controller +  instance starting 1 + +Examples: + +	msdi1: mmc@4809c000 { +		compatible = "ti,omap2420-mmc"; +		ti,hwmods = "msdi1"; +		reg = <0x4809c000 0x80>; +		interrupts = <83>; +		dmas = <&sdma 61 &sdma 62>; +		dma-names = "tx", "rx"; +	}; + +* TI MMC host controller for OMAP1 and 2420 + +The MMC Host Controller on TI OMAP1 and 2420 family provides +an interface for MMC, SD, and SDIO types of memory cards. + +This file documents differences between the core properties described +by mmc.txt and the properties used by the omap mmc driver. + +Note that this driver will not work with omap2430 or later omaps, +please see the omap hsmmc driver for the current omaps. + +Required properties: +- compatible: Must be "ti,omap2420-mmc", for OMAP2420 controllers +- ti,hwmods: For 2420, must be "msdi<n>", where n is controller +  instance starting 1 + +Examples: + +	msdi1: mmc@4809c000 { +		compatible = "ti,omap2420-mmc"; +		ti,hwmods = "msdi1"; +		reg = <0x4809c000 0x80>; +		interrupts = <83>; +		dmas = <&sdma 61 &sdma 62>; +		dma-names = "tx", "rx"; +	}; + diff --git a/Documentation/devicetree/bindings/mmc/tmio_mmc.txt b/Documentation/devicetree/bindings/mmc/tmio_mmc.txt index df204e18e03..6a2a1160a70 100644 --- a/Documentation/devicetree/bindings/mmc/tmio_mmc.txt +++ b/Documentation/devicetree/bindings/mmc/tmio_mmc.txt @@ -9,12 +9,15 @@ compulsory and any optional properties, common to all SD/MMC drivers, as  described in mmc.txt, can be used. Additionally the following tmio_mmc-specific  optional bindings can be used. +Required properties: +- compatible:	"renesas,sdhi-shmobile" - a generic sh-mobile SDHI unit +		"renesas,sdhi-sh7372" - SDHI IP on SH7372 SoC +		"renesas,sdhi-sh73a0" - SDHI IP on SH73A0 SoC +		"renesas,sdhi-r8a73a4" - SDHI IP on R8A73A4 SoC +		"renesas,sdhi-r8a7740" - SDHI IP on R8A7740 SoC +		"renesas,sdhi-r8a7778" - SDHI IP on R8A7778 SoC +		"renesas,sdhi-r8a7779" - SDHI IP on R8A7779 SoC +		"renesas,sdhi-r8a7790" - SDHI IP on R8A7790 SoC +  Optional properties:  - toshiba,mmc-wrprotect-disable: write-protect detection is unavailable - -When used with Renesas SDHI hardware, the following compatibility strings -configure various model-specific properties: - -"renesas,sh7372-sdhi":	(default) compatible with SH7372 -"renesas,r8a7740-sdhi":	compatible with R8A7740: certain MMC/SD commands have to -			wait for the interface to become idle. diff --git a/Documentation/devicetree/bindings/mmc/usdhi6rol0.txt b/Documentation/devicetree/bindings/mmc/usdhi6rol0.txt new file mode 100644 index 00000000000..8babdaa8623 --- /dev/null +++ b/Documentation/devicetree/bindings/mmc/usdhi6rol0.txt @@ -0,0 +1,33 @@ +* Renesas usdhi6rol0 SD/SDIO host controller + +Required properties: + +- compatible:	must be +		"renesas,usdhi6rol0" +- interrupts:	3 interrupts, named "card detect", "data" and "SDIO" must be +		specified +- clocks:	a clock binding for the IMCLK input + +Optional properties: + +- vmmc-supply:	a phandle of a regulator, supplying Vcc to the card +- vqmmc-supply:	a phandle of a regulator, supplying VccQ to the card + +Additionally any standard mmc bindings from mmc.txt can be used. + +Example: + +sd0: sd@ab000000 { +	compatible = "renesas,usdhi6rol0"; +	reg = <0xab000000 0x200>; +	interrupts = <0 23 0x4 +		      0 24 0x4 +		      0 25 0x4>; +	interrupt-names = "card detect", "data", "SDIO"; +	bus-width = <4>; +	max-frequency = <50000000>; +	cap-power-off-card; +	clocks = <&imclk>; +	vmmc-supply = <&vcc_sd0>; +	vqmmc-supply = <&vccq_sd0>; +}; diff --git a/Documentation/devicetree/bindings/mtd/davinci-nand.txt b/Documentation/devicetree/bindings/mtd/davinci-nand.txt new file mode 100644 index 00000000000..cfb18abe600 --- /dev/null +++ b/Documentation/devicetree/bindings/mtd/davinci-nand.txt @@ -0,0 +1,94 @@ +Device tree bindings for Texas instruments Davinci/Keystone NAND controller + +This file provides information, what the device node for the davinci/keystone +NAND interface contains. + +Documentation: +Davinci DM646x - http://www.ti.com/lit/ug/sprueq7c/sprueq7c.pdf +Kestone - http://www.ti.com/lit/ug/sprugz3a/sprugz3a.pdf + +Required properties: + +- compatible:			"ti,davinci-nand" +				"ti,keystone-nand" + +- reg:				Contains 2 offset/length values: +				- offset and length for the access window. +				- offset and length for accessing the AEMIF +				control registers. + +- ti,davinci-chipselect:	number of chipselect. Indicates on the +				davinci_nand driver which chipselect is used +				for accessing the nand. +				Can be in the range [0-3]. + +Recommended properties : + +- ti,davinci-mask-ale:		mask for ALE. Needed for executing address +				phase. These offset will be added to the base +				address for the chip select space the NAND Flash +				device is connected to. +				If not set equal to 0x08. + +- ti,davinci-mask-cle:		mask for CLE. Needed for executing command +				phase. These offset will be added to the base +				address for the chip select space the NAND Flash +				device is connected to. +				If not set equal to 0x10. + +- ti,davinci-mask-chipsel:	mask for chipselect address. Needed to mask +				addresses for given chipselect. + +- nand-ecc-mode:		operation mode of the NAND ecc mode. ECC mode +				valid values for davinci driver: +				- "none" +				- "soft" +				- "hw" + +- ti,davinci-ecc-bits:		used ECC bits, currently supported 1 or 4. + +- nand-bus-width:		buswidth 8 or 16. If not present 8. + +- nand-on-flash-bbt:		use flash based bad block table support. OOB +				identifier is saved in OOB area. If not present +				false. + +Deprecated properties: + +- ti,davinci-ecc-mode:		operation mode of the NAND ecc mode. ECC mode +				valid values for davinci driver: +				- "none" +				- "soft" +				- "hw" + +- ti,davinci-nand-buswidth:	buswidth 8 or 16. If not present 8. + +- ti,davinci-nand-use-bbt:	use flash based bad block table support. OOB +				identifier is saved in OOB area. If not present +				false. + +Nand device bindings may contain additional sub-nodes describing partitions of +the address space. See partition.txt for more detail. The NAND Flash timing +values must be programmed in the chip select’s node of AEMIF +memory-controller (see Documentation/devicetree/bindings/memory-controllers/ +davinci-aemif.txt). + +Example(da850 EVM ): + +nand_cs3@62000000 { +	compatible = "ti,davinci-nand"; +	reg = <0x62000000 0x807ff +	       0x68000000 0x8000>; +	ti,davinci-chipselect = <1>; +	ti,davinci-mask-ale = <0>; +	ti,davinci-mask-cle = <0>; +	ti,davinci-mask-chipsel = <0>; +	nand-ecc-mode = "hw"; +	ti,davinci-ecc-bits = <4>; +	nand-on-flash-bbt; + +	partition@180000 { +		label = "ubifs"; +		reg = <0x180000 0x7e80000>; +	}; +}; diff --git a/Documentation/devicetree/bindings/mtd/fsl-quadspi.txt b/Documentation/devicetree/bindings/mtd/fsl-quadspi.txt new file mode 100644 index 00000000000..823d1341219 --- /dev/null +++ b/Documentation/devicetree/bindings/mtd/fsl-quadspi.txt @@ -0,0 +1,35 @@ +* Freescale Quad Serial Peripheral Interface(QuadSPI) + +Required properties: +  - compatible : Should be "fsl,vf610-qspi" +  - reg : the first contains the register location and length, +          the second contains the memory mapping address and length +  - reg-names: Should contain the reg names "QuadSPI" and "QuadSPI-memory" +  - interrupts : Should contain the interrupt for the device +  - clocks : The clocks needed by the QuadSPI controller +  - clock-names : the name of the clocks + +Optional properties: +  - fsl,qspi-has-second-chip: The controller has two buses, bus A and bus B. +                              Each bus can be connected with two NOR flashes. +			      Most of the time, each bus only has one NOR flash +			      connected, this is the default case. +			      But if there are two NOR flashes connected to the +			      bus, you should enable this property. +			      (Please check the board's schematic.) + +Example: + +qspi0: quadspi@40044000 { +	compatible = "fsl,vf610-qspi"; +	reg = <0x40044000 0x1000>, <0x20000000 0x10000000>; +	reg-names = "QuadSPI", "QuadSPI-memory"; +	interrupts = <0 24 IRQ_TYPE_LEVEL_HIGH>; +	clocks = <&clks VF610_CLK_QSPI0_EN>, +		<&clks VF610_CLK_QSPI0>; +	clock-names = "qspi_en", "qspi"; + +	flash0: s25fl128s@0 { +		.... +	}; +}; diff --git a/Documentation/devicetree/bindings/mtd/gpmc-nand.txt b/Documentation/devicetree/bindings/mtd/gpmc-nand.txt index df338cb5059..65f4f7c4313 100644 --- a/Documentation/devicetree/bindings/mtd/gpmc-nand.txt +++ b/Documentation/devicetree/bindings/mtd/gpmc-nand.txt @@ -22,12 +22,14 @@ Optional properties:  				width of 8 is assumed.   - ti,nand-ecc-opt:		A string setting the ECC layout to use. One of: - -		"sw"		Software method (default) -		"hw"		Hardware method -		"hw-romcode"	gpmc hamming mode method & romcode layout +		"sw"		<deprecated> use "ham1" instead +		"hw"		<deprecated> use "ham1" instead +		"hw-romcode"	<deprecated> use "ham1" instead +		"ham1"		1-bit Hamming ecc code  		"bch4"		4-bit BCH ecc code  		"bch8"		8-bit BCH ecc code +		"bch16"		16-bit BCH ECC code +		Refer below "How to select correct ECC scheme for your device ?"   - ti,nand-xfer-type:		A string setting the data transfer type. One of: @@ -36,10 +38,14 @@ Optional properties:  		"prefetch-dma"		Prefetch enabled sDMA mode  		"prefetch-irq"		Prefetch enabled irq mode - - elm_id:	Specifies elm device node. This is required to support BCH - 		error correction using ELM module. + - elm_id:	<deprecated> use "ti,elm-id" instead + - ti,elm-id:	Specifies phandle of the ELM devicetree node. +		ELM is an on-chip hardware engine on TI SoC which is used for +		locating ECC errors for BCHx algorithms. SoC devices which have +		ELM hardware engines should specify this device node in .dtsi +		Using ELM for ECC error correction frees some CPU cycles. -For inline partiton table parsing (optional): +For inline partition table parsing (optional):   - #address-cells: should be set to 1   - #size-cells: should be set to 1 @@ -86,3 +92,46 @@ Example for an AM33xx board:  		};  	}; +How to select correct ECC scheme for your device ? +-------------------------------------------------- +Higher ECC scheme usually means better protection against bit-flips and +increased system lifetime. However, selection of ECC scheme is dependent +on various other factors also like; + +(1) support of built in hardware engines. +	Some legacy OMAP SoC do not have ELM harware engine, so those SoC cannot +	support ecc-schemes with hardware error-correction (BCHx_HW). However +	such SoC can use ecc-schemes with software library for error-correction +	(BCHx_HW_DETECTION_SW). The error correction capability with software +	library remains equivalent to their hardware counter-part, but there is +	slight CPU penalty when too many bit-flips are detected during reads. + +(2) Device parameters like OOBSIZE. +	Other factor which governs the selection of ecc-scheme is oob-size. +	Higher ECC schemes require more OOB/Spare area to store ECC syndrome, +	so the device should have enough free bytes available its OOB/Spare +	area to accomodate ECC for entire page. In general following expression +	helps in determining if given device can accomodate ECC syndrome: +	"2 + (PAGESIZE / 512) * ECC_BYTES" >= OOBSIZE" +	where +		OOBSIZE		number of bytes in OOB/spare area +		PAGESIZE	number of bytes in main-area of device page +		ECC_BYTES	number of ECC bytes generated to protect +		                512 bytes of data, which is: +				'3' for HAM1_xx ecc schemes +				'7' for BCH4_xx ecc schemes +				'14' for BCH8_xx ecc schemes +				'26' for BCH16_xx ecc schemes + +	Example(a): For a device with PAGESIZE = 2048 and OOBSIZE = 64 and +		trying to use BCH16 (ECC_BYTES=26) ecc-scheme. +		Number of ECC bytes per page = (2 + (2048 / 512) * 26) = 106 B +		which is greater than capacity of NAND device (OOBSIZE=64) +		Hence, BCH16 cannot be supported on given device. But it can +		probably use lower ecc-schemes like BCH8. + +	Example(b): For a device with PAGESIZE = 2048 and OOBSIZE = 128 and +		trying to use BCH16 (ECC_BYTES=26) ecc-scheme. +		Number of ECC bytes per page = (2 + (2048 / 512) * 26) = 106 B +		which can be accomodate in the OOB/Spare area of this device +		(OOBSIZE=128). So this device can use BCH16 ecc-scheme. diff --git a/Documentation/devicetree/bindings/mtd/gpmc-nor.txt b/Documentation/devicetree/bindings/mtd/gpmc-nor.txt index 420b3ab1889..4828c17bb78 100644 --- a/Documentation/devicetree/bindings/mtd/gpmc-nor.txt +++ b/Documentation/devicetree/bindings/mtd/gpmc-nor.txt @@ -30,7 +30,7 @@ Optional properties:  - gpmc,XXX		Additional GPMC timings and settings parameters. See  			Documentation/devicetree/bindings/bus/ti-gpmc.txt -Optional properties for partiton table parsing: +Optional properties for partition table parsing:  - #address-cells: should be set to 1  - #size-cells: should be set to 1 diff --git a/Documentation/devicetree/bindings/mtd/gpmc-onenand.txt b/Documentation/devicetree/bindings/mtd/gpmc-onenand.txt index b7529424ac8..5d8fa527c49 100644 --- a/Documentation/devicetree/bindings/mtd/gpmc-onenand.txt +++ b/Documentation/devicetree/bindings/mtd/gpmc-onenand.txt @@ -17,7 +17,7 @@ Optional properties:   - dma-channel:		DMA Channel index -For inline partiton table parsing (optional): +For inline partition table parsing (optional):   - #address-cells: should be set to 1   - #size-cells: should be set to 1 diff --git a/Documentation/devicetree/bindings/mtd/gpmi-nand.txt b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt index 551b2a179d0..458d5963468 100644 --- a/Documentation/devicetree/bindings/mtd/gpmi-nand.txt +++ b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt @@ -17,6 +17,14 @@ Required properties:  Optional properties:    - nand-on-flash-bbt: boolean to enable on flash bbt option if not                         present false +  - fsl,use-minimum-ecc: Protect this NAND flash with the minimum ECC +                       strength required. The required ECC strength is +                       automatically discoverable for some flash +                       (e.g., according to the ONFI standard). +                       However, note that if this strength is not +                       discoverable or this property is not enabled, +                       the software may chooses an implementation-defined +                       ECC scheme.  The device tree may optionally contain sub-nodes describing partitions of the  address space. See partition.txt for more detail. diff --git a/Documentation/devicetree/bindings/mtd/m25p80.txt b/Documentation/devicetree/bindings/mtd/m25p80.txt index 6d3d5760947..4611aa83531 100644 --- a/Documentation/devicetree/bindings/mtd/m25p80.txt +++ b/Documentation/devicetree/bindings/mtd/m25p80.txt @@ -5,8 +5,8 @@ Required properties:    representing partitions.  - compatible : Should be the manufacturer and the name of the chip. Bear in mind                 the DT binding is not Linux-only, but in case of Linux, see the -               "m25p_ids" table in drivers/mtd/devices/m25p80.c for the list of -               supported chips. +               "spi_nor_ids" table in drivers/mtd/spi-nor/spi-nor.c for the list +               of supported chips.  - reg : Chip-Select number  - spi-max-frequency : Maximum frequency of the SPI bus the chip can operate at diff --git a/Documentation/devicetree/bindings/mtd/nand.txt b/Documentation/devicetree/bindings/mtd/nand.txt index 03855c8c492..b53f92e252d 100644 --- a/Documentation/devicetree/bindings/mtd/nand.txt +++ b/Documentation/devicetree/bindings/mtd/nand.txt @@ -5,3 +5,17 @@    "soft_bch".  - nand-bus-width : 8 or 16 bus width if not present 8  - nand-on-flash-bbt: boolean to enable on flash bbt option if not present false + +- nand-ecc-strength: integer representing the number of bits to correct +		     per ECC step. + +- nand-ecc-step-size: integer representing the number of data bytes +		      that are covered by a single ECC step. + +The ECC strength and ECC step size properties define the correction capability +of a controller. Together, they say a controller can correct "{strength} bit +errors per {size} bytes". + +The interpretation of these parameters is implementation-defined, so not all +implementations must support all possible combinations. However, implementations +are encouraged to further specify the value(s) they support. diff --git a/Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt b/Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt index f1421e2bbab..de8b517a552 100644 --- a/Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt +++ b/Documentation/devicetree/bindings/mtd/pxa3xx-nand.txt @@ -2,7 +2,9 @@ PXA3xx NAND DT bindings  Required properties: - - compatible:		Should be "marvell,pxa3xx-nand" + - compatible:		Should be set to one of the following: +			marvell,pxa3xx-nand +			marvell,armada370-nand   - reg: 		The register base for the controller   - interrupts:		The interrupt to map   - #address-cells:	Set to <1> if the node includes partitions @@ -13,6 +15,16 @@ Optional properties:   - marvell,nand-keep-config:	Set to keep the NAND controller config as set  				by the bootloader   - num-cs:			Number of chipselect lines to usw + - nand-on-flash-bbt: 		boolean to enable on flash bbt option if +				not present false + - nand-ecc-strength:           number of bits to correct per ECC step + - nand-ecc-step-size:          number of data bytes covered by a single ECC step + +The following ECC strength and step size are currently supported: + + - nand-ecc-strength = <1>, nand-ecc-step-size = <512> + - nand-ecc-strength = <4>, nand-ecc-step-size = <512> + - nand-ecc-strength = <8>, nand-ecc-step-size = <512>  Example: diff --git a/Documentation/devicetree/bindings/mtd/st-fsm.txt b/Documentation/devicetree/bindings/mtd/st-fsm.txt new file mode 100644 index 00000000000..c2489391c43 --- /dev/null +++ b/Documentation/devicetree/bindings/mtd/st-fsm.txt @@ -0,0 +1,26 @@ +* ST-Microelectronics SPI FSM Serial (NOR) Flash Controller + +Required properties: +  - compatible : Should be "st,spi-fsm" +  - reg        : Contains register's location and length. +  - reg-names  : Should contain the reg names "spi-fsm" +  - interrupts : The interrupt number +  - pinctrl-0  : Standard Pinctrl phandle (see: pinctrl/pinctrl-bindings.txt) + +Optional properties: +  - st,syscfg          : Phandle to boot-device system configuration registers +  - st,boot-device-reg : Address of the aforementioned boot-device register(s) +  - st,boot-device-spi : Expected boot-device value if booted via this device + +Example: +	spifsm: spifsm@fe902000{ +	        compatible         = "st,spi-fsm"; +	        reg                =  <0xfe902000 0x1000>; +	        reg-names          = "spi-fsm"; +	        pinctrl-0          = <&pinctrl_fsm>; +		st,syscfg	   = <&syscfg_rear>; +	        st,boot-device-reg = <0x958>; +	        st,boot-device-spi = <0x1a>; +		status = "okay"; +	}; + diff --git a/Documentation/devicetree/bindings/net/allwinner,sun4i-emac.txt b/Documentation/devicetree/bindings/net/allwinner,sun4i-emac.txt index b90bfcd138f..10640b17c86 100644 --- a/Documentation/devicetree/bindings/net/allwinner,sun4i-emac.txt +++ b/Documentation/devicetree/bindings/net/allwinner,sun4i-emac.txt @@ -1,20 +1,17 @@  * Allwinner EMAC ethernet controller  Required properties: -- compatible: should be "allwinner,sun4i-emac". +- compatible: should be "allwinner,sun4i-a10-emac" (Deprecated: +              "allwinner,sun4i-emac")  - reg: address and length of the register set for the device.  - interrupts: interrupt for the device -- phy: A phandle to a phy node defining the PHY address (as the reg -  property, a single integer). +- phy: see ethernet.txt file in the same directory.  - clocks: A phandle to the reference clock for this device -Optional properties: -- (local-)mac-address: mac address to be used by this driver -  Example:  emac: ethernet@01c0b000 { -       compatible = "allwinner,sun4i-emac"; +       compatible = "allwinner,sun4i-a10-emac";         reg = <0x01c0b000 0x1000>;         interrupts = <55>;         clocks = <&ahb_gates 17>; diff --git a/Documentation/devicetree/bindings/net/allwinner,sun4i-mdio.txt b/Documentation/devicetree/bindings/net/allwinner,sun4i-mdio.txt index 00b9f9a3ec1..4ec56413779 100644 --- a/Documentation/devicetree/bindings/net/allwinner,sun4i-mdio.txt +++ b/Documentation/devicetree/bindings/net/allwinner,sun4i-mdio.txt @@ -1,7 +1,8 @@  * Allwinner A10 MDIO Ethernet Controller interface  Required properties: -- compatible: should be "allwinner,sun4i-mdio". +- compatible: should be "allwinner,sun4i-a10-mdio" +              (Deprecated: "allwinner,sun4i-mdio").  - reg: address and length of the register set for the device.  Optional properties: @@ -9,7 +10,7 @@ Optional properties:  Example at the SoC level:  mdio@01c0b080 { -	compatible = "allwinner,sun4i-mdio"; +	compatible = "allwinner,sun4i-a10-mdio";  	reg = <0x01c0b080 0x14>;  	#address-cells = <1>;  	#size-cells = <0>; diff --git a/Documentation/devicetree/bindings/net/allwinner,sun7i-a20-gmac.txt b/Documentation/devicetree/bindings/net/allwinner,sun7i-a20-gmac.txt new file mode 100644 index 00000000000..ea4d752389a --- /dev/null +++ b/Documentation/devicetree/bindings/net/allwinner,sun7i-a20-gmac.txt @@ -0,0 +1,27 @@ +* Allwinner GMAC ethernet controller + +This device is a platform glue layer for stmmac. +Please see stmmac.txt for the other unchanged properties. + +Required properties: + - compatible:  Should be "allwinner,sun7i-a20-gmac" + - clocks: Should contain the GMAC main clock, and tx clock +   The tx clock type should be "allwinner,sun7i-a20-gmac-clk" + - clock-names: Should contain the clock names "stmmaceth", +   and "allwinner_gmac_tx" + +Optional properties: +- phy-supply: phandle to a regulator if the PHY needs one + +Examples: + +	gmac: ethernet@01c50000 { +		compatible = "allwinner,sun7i-a20-gmac"; +		reg = <0x01c50000 0x10000>, +		      <0x01c20164 0x4>; +		interrupts = <0 85 1>; +		interrupt-names = "macirq"; +		clocks = <&ahb_gates 49>, <&gmac_tx>; +		clock-names = "stmmaceth", "allwinner_gmac_tx"; +		phy-mode = "mii"; +	}; diff --git a/Documentation/devicetree/bindings/net/altera_tse.txt b/Documentation/devicetree/bindings/net/altera_tse.txt new file mode 100644 index 00000000000..a706297998e --- /dev/null +++ b/Documentation/devicetree/bindings/net/altera_tse.txt @@ -0,0 +1,114 @@ +* Altera Triple-Speed Ethernet MAC driver (TSE) + +Required properties: +- compatible: Should be "altr,tse-1.0" for legacy SGDMA based TSE, and should +		be "altr,tse-msgdma-1.0" for the preferred MSGDMA based TSE. +		ALTR is supported for legacy device trees, but is deprecated. +		altr should be used for all new designs. +- reg: Address and length of the register set for the device. It contains +  the information of registers in the same order as described by reg-names +- reg-names: Should contain the reg names +  "control_port": MAC configuration space region +  "tx_csr":       xDMA Tx dispatcher control and status space region +  "tx_desc":      MSGDMA Tx dispatcher descriptor space region +  "rx_csr" :      xDMA Rx dispatcher control and status space region +  "rx_desc":      MSGDMA Rx dispatcher descriptor space region +  "rx_resp":      MSGDMA Rx dispatcher response space region +  "s1":		  SGDMA descriptor memory +- interrupts: Should contain the TSE interrupts and it's mode. +- interrupt-names: Should contain the interrupt names +  "rx_irq":       xDMA Rx dispatcher interrupt +  "tx_irq":       xDMA Tx dispatcher interrupt +- rx-fifo-depth: MAC receive FIFO buffer depth in bytes +- tx-fifo-depth: MAC transmit FIFO buffer depth in bytes +- phy-mode: See ethernet.txt in the same directory. +- phy-handle: See ethernet.txt in the same directory. +- phy-addr: See ethernet.txt in the same directory. A configuration should +		include phy-handle or phy-addr. +- altr,has-supplementary-unicast: +		If present, TSE supports additional unicast addresses. +		Otherwise additional unicast addresses are not supported. +- altr,has-hash-multicast-filter: +		If present, TSE supports a hash based multicast filter. +		Otherwise, hash-based multicast filtering is not supported. + +- mdio device tree subnode: When the TSE has a phy connected to its local +		mdio, there must be device tree subnode with the following +		required properties: + +	- compatible: Must be "altr,tse-mdio". +	- #address-cells: Must be <1>. +	- #size-cells: Must be <0>. + +	For each phy on the mdio bus, there must be a node with the following +	fields: + +	- reg: phy id used to communicate to phy. +	- device_type: Must be "ethernet-phy". + +Optional properties: +- local-mac-address: See ethernet.txt in the same directory. +- max-frame-size: See ethernet.txt in the same directory. + +Example: + +	tse_sub_0_eth_tse_0: ethernet@0x1,00000000 { +		compatible = "altr,tse-msgdma-1.0"; +		reg =	<0x00000001 0x00000000 0x00000400>, +			<0x00000001 0x00000460 0x00000020>, +			<0x00000001 0x00000480 0x00000020>, +			<0x00000001 0x000004A0 0x00000008>, +			<0x00000001 0x00000400 0x00000020>, +			<0x00000001 0x00000420 0x00000020>; +		reg-names = "control_port", "rx_csr", "rx_desc", "rx_resp", "tx_csr", "tx_desc"; +		interrupt-parent = <&hps_0_arm_gic_0>; +		interrupts = <0 41 4>, <0 40 4>; +		interrupt-names = "rx_irq", "tx_irq"; +		rx-fifo-depth = <2048>; +		tx-fifo-depth = <2048>; +		address-bits = <48>; +		max-frame-size = <1500>; +		local-mac-address = [ 00 00 00 00 00 00 ]; +		phy-mode = "gmii"; +		altr,has-supplementary-unicast; +		altr,has-hash-multicast-filter; +		phy-handle = <&phy0>; +		mdio { +			compatible = "altr,tse-mdio"; +			#address-cells = <1>; +			#size-cells = <0>; +			phy0: ethernet-phy@0 { +				reg = <0x0>; +				device_type = "ethernet-phy"; +			}; + +			phy1: ethernet-phy@1 { +				reg = <0x1>; +				device_type = "ethernet-phy"; +			}; + +		}; +	}; + +	tse_sub_1_eth_tse_0: ethernet@0x1,00001000 { +		compatible = "altr,tse-msgdma-1.0"; +		reg = 	<0x00000001 0x00001000 0x00000400>, +			<0x00000001 0x00001460 0x00000020>, +			<0x00000001 0x00001480 0x00000020>, +			<0x00000001 0x000014A0 0x00000008>, +			<0x00000001 0x00001400 0x00000020>, +			<0x00000001 0x00001420 0x00000020>; +		reg-names = "control_port", "rx_csr", "rx_desc", "rx_resp", "tx_csr", "tx_desc"; +		interrupt-parent = <&hps_0_arm_gic_0>; +		interrupts = <0 43 4>, <0 42 4>; +		interrupt-names = "rx_irq", "tx_irq"; +		rx-fifo-depth = <2048>; +		tx-fifo-depth = <2048>; +		address-bits = <48>; +		max-frame-size = <1500>; +		local-mac-address = [ 00 00 00 00 00 00 ]; +		phy-mode = "gmii"; +		altr,has-supplementary-unicast; +		altr,has-hash-multicast-filter; +		phy-handle = <&phy1>; +	}; diff --git a/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt b/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt new file mode 100644 index 00000000000..d01ed63d3eb --- /dev/null +++ b/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt @@ -0,0 +1,17 @@ +* AMD 10GbE PHY driver (amd-xgbe-phy) + +Required properties: +- compatible: Should be "amd,xgbe-phy-seattle-v1a" and +  "ethernet-phy-ieee802.3-c45" +- reg: Address and length of the register sets for the device +   - SerDes Rx/Tx registers +   - SerDes integration registers (1/2) +   - SerDes integration registers (2/2) + +Example: +	xgbe_phy@e1240800 { +		compatible = "amd,xgbe-phy-seattle-v1a", "ethernet-phy-ieee802.3-c45"; +		reg = <0 0xe1240800 0 0x00400>, +		      <0 0xe1250000 0 0x00060>, +		      <0 0xe1250080 0 0x00004>; +	}; diff --git a/Documentation/devicetree/bindings/net/amd-xgbe.txt b/Documentation/devicetree/bindings/net/amd-xgbe.txt new file mode 100644 index 00000000000..ea0c7908a3b --- /dev/null +++ b/Documentation/devicetree/bindings/net/amd-xgbe.txt @@ -0,0 +1,34 @@ +* AMD 10GbE driver (amd-xgbe) + +Required properties: +- compatible: Should be "amd,xgbe-seattle-v1a" +- reg: Address and length of the register sets for the device +   - MAC registers +   - PCS registers +- interrupt-parent: Should be the phandle for the interrupt controller +  that services interrupts for this device +- interrupts: Should contain the amd-xgbe interrupt +- clocks: Should be the DMA clock for the amd-xgbe device (used for +  calculating the correct Rx interrupt watchdog timer value on a DMA +  channel for coalescing) +- clock-names: Should be the name of the DMA clock, "dma_clk" +- phy-handle: See ethernet.txt file in the same directory +- phy-mode: See ethernet.txt file in the same directory + +Optional properties: +- mac-address: mac address to be assigned to the device. Can be overridden +  by UEFI. + +Example: +	xgbe@e0700000 { +		compatible = "amd,xgbe-seattle-v1a"; +		reg = <0 0xe0700000 0 0x80000>, +		      <0 0xe0780000 0 0x80000>; +		interrupt-parent = <&gic>; +		interrupts = <0 325 4>; +		clocks = <&xgbe_clk>; +		clock-names = "dma_clk"; +		phy-handle = <&phy>; +		phy-mode = "xgmii"; +		mac-address = [ 02 a1 a2 a3 a4 a5 ]; +	}; diff --git a/Documentation/devicetree/bindings/net/arc_emac.txt b/Documentation/devicetree/bindings/net/arc_emac.txt index bcbc3f00915..a1d71eb43b2 100644 --- a/Documentation/devicetree/bindings/net/arc_emac.txt +++ b/Documentation/devicetree/bindings/net/arc_emac.txt @@ -4,21 +4,18 @@ Required properties:  - compatible: Should be "snps,arc-emac"  - reg: Address and length of the register set for the device  - interrupts: Should contain the EMAC interrupts -- clock-frequency: CPU frequency. It is needed to calculate and set polling -period of EMAC. -- max-speed: Maximum supported data-rate in Mbit/s. In some HW configurations -bandwidth of external memory controller might be a limiting factor. That's why -it's required to specify which data-rate is supported on current SoC or FPGA. -For example if only 10 Mbit/s is supported (10BASE-T) set "10". If 100 Mbit/s is -supported (100BASE-TX) set "100". -- phy: PHY device attached to the EMAC via MDIO bus +- max-speed: see ethernet.txt file in the same directory. +- phy: see ethernet.txt file in the same directory. + +Clock handling: +The clock frequency is needed to calculate and set polling period of EMAC. +It must be provided by one of: +- clock-frequency: CPU frequency. +- clocks: reference to the clock supplying the EMAC.  Child nodes of the driver are the individual PHY devices connected to the  MDIO bus. They must have a "reg" property given the PHY address on the MDIO bus. -Optional properties: -- mac-address: 6 bytes, mac address -  Examples:  	ethernet@c0fc2000 { @@ -26,7 +23,11 @@ Examples:  		reg = <0xc0fc2000 0x3c>;  		interrupts = <6>;  		mac-address = [ 00 11 22 33 44 55 ]; +  		clock-frequency = <80000000>; +		/* or */ +		clocks = <&emac_clock>; +  		max-speed = <100>;  		phy = <&phy0>; diff --git a/Documentation/devicetree/bindings/net/broadcom-bcmgenet.txt b/Documentation/devicetree/bindings/net/broadcom-bcmgenet.txt new file mode 100644 index 00000000000..451fef26b4d --- /dev/null +++ b/Documentation/devicetree/bindings/net/broadcom-bcmgenet.txt @@ -0,0 +1,121 @@ +* Broadcom BCM7xxx Ethernet Controller (GENET) + +Required properties: +- compatible: should contain one of "brcm,genet-v1", "brcm,genet-v2", +  "brcm,genet-v3", "brcm,genet-v4". +- reg: address and length of the register set for the device +- interrupts: must be two cells, the first cell is the general purpose +  interrupt line, while the second cell is the interrupt for the ring +  RX and TX queues operating in ring mode +- phy-mode: see ethernet.txt file in the same directory +- #address-cells: should be 1 +- #size-cells: should be 1 + +Optional properties: +- clocks: When provided, must be two phandles to the functional clocks nodes +  of the GENET block. The first phandle is the main GENET clock used during +  normal operation, while the second phandle is the Wake-on-LAN clock. +- clock-names: When provided, names of the functional clock phandles, first +  name should be "enet" and second should be "enet-wol". + +- phy-handle: See ethernet.txt file in the same directory; used to describe +  configurations where a PHY (internal or external) is used. + +- fixed-link: When the GENET interface is connected to a MoCA hardware block or +  when operating in a RGMII to RGMII type of connection, or when the MDIO bus is +  voluntarily disabled, this property should be used to describe the "fixed link". +  See Documentation/devicetree/bindings/net/fixed-link.txt for information on +  the property specifics + +Required child nodes: + +- mdio bus node: this node should always be present regarless of the PHY +  configuration of the GENET instance + +MDIO bus node required properties: + +- compatible: should contain one of "brcm,genet-mdio-v1", "brcm,genet-mdio-v2" +  "brcm,genet-mdio-v3", "brcm,genet-mdio-v4", the version has to match the +  parent node compatible property (e.g: brcm,genet-v4 pairs with +  brcm,genet-mdio-v4) +- reg: address and length relative to the parent node base register address +- #address-cells: address cell for MDIO bus addressing, should be 1 +- #size-cells: size of the cells for MDIO bus addressing, should be 0 + +Ethernet PHY node properties: + +See Documentation/devicetree/bindings/net/phy.txt for the list of required and +optional properties. + +Internal Gigabit PHY example: + +ethernet@f0b60000 { +	phy-mode = "internal"; +	phy-handle = <&phy1>; +	mac-address = [ 00 10 18 36 23 1a ]; +	compatible = "brcm,genet-v4"; +	#address-cells = <0x1>; +	#size-cells = <0x1>; +	reg = <0xf0b60000 0xfc4c>; +	interrupts = <0x0 0x14 0x0>, <0x0 0x15 0x0>; + +	mdio@e14 { +		compatible = "brcm,genet-mdio-v4"; +		#address-cells = <0x1>; +		#size-cells = <0x0>; +		reg = <0xe14 0x8>; + +		phy1: ethernet-phy@1 { +			max-speed = <1000>; +			reg = <0x1>; +			compatible = "brcm,28nm-gphy", "ethernet-phy-ieee802.3-c22"; +		}; +	}; +}; + +MoCA interface / MAC to MAC example: + +ethernet@f0b80000 { +	phy-mode = "moca"; +	fixed-link = <1 0 1000 0 0>; +	mac-address = [ 00 10 18 36 24 1a ]; +	compatible = "brcm,genet-v4"; +	#address-cells = <0x1>; +	#size-cells = <0x1>; +	reg = <0xf0b80000 0xfc4c>; +	interrupts = <0x0 0x16 0x0>, <0x0 0x17 0x0>; + +	mdio@e14 { +		compatible = "brcm,genet-mdio-v4"; +		#address-cells = <0x1>; +		#size-cells = <0x0>; +		reg = <0xe14 0x8>; +	}; +}; + + +External MDIO-connected Gigabit PHY/switch: + +ethernet@f0ba0000 { +	phy-mode = "rgmii"; +	phy-handle = <&phy0>; +	mac-address = [ 00 10 18 36 26 1a ]; +	compatible = "brcm,genet-v4"; +	#address-cells = <0x1>; +	#size-cells = <0x1>; +	reg = <0xf0ba0000 0xfc4c>; +	interrupts = <0x0 0x18 0x0>, <0x0 0x19 0x0>; + +	mdio@0e14 { +		compatible = "brcm,genet-mdio-v4"; +		#address-cells = <0x1>; +		#size-cells = <0x0>; +		reg = <0xe14 0x8>; + +		phy0: ethernet-phy@0 { +			max-speed = <1000>; +			reg = <0x0>; +			compatible = "brcm,bcm53125", "ethernet-phy-ieee802.3-c22"; +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/net/broadcom-systemport.txt b/Documentation/devicetree/bindings/net/broadcom-systemport.txt new file mode 100644 index 00000000000..c183ea90d9b --- /dev/null +++ b/Documentation/devicetree/bindings/net/broadcom-systemport.txt @@ -0,0 +1,29 @@ +* Broadcom BCM7xxx Ethernet Systemport Controller (SYSTEMPORT) + +Required properties: +- compatible: should be one of "brcm,systemport-v1.00" or "brcm,systemport" +- reg: address and length of the register set for the device. +- interrupts: interrupts for the device, first cell must be for the the rx +  interrupts, and the second cell should be for the transmit queues +- local-mac-address: Ethernet MAC address (48 bits) of this adapter +- phy-mode: Should be a string describing the PHY interface to the +  Ethernet switch/PHY, see Documentation/devicetree/bindings/net/ethernet.txt +- fixed-link: see Documentation/devicetree/bindings/net/fixed-link.txt for +  the property specific details + +Optional properties: +- systemport,num-tier2-arb: number of tier 2 arbiters, an integer +- systemport,num-tier1-arb: number of tier 1 arbiters, an integer +- systemport,num-txq: number of HW transmit queues, an integer +- systemport,num-rxq: number of HW receive queues, an integer + +Example: +ethernet@f04a0000 { +	compatible = "brcm,systemport-v1.00"; +	reg = <0xf04a0000 0x4650>; +	local-mac-address = [ 00 11 22 33 44 55 ]; +	fixed-link = <0 1 1000 0 0>; +	phy-mode = "gmii"; +	interrupts = <0x0 0x16 0x0>, +		<0x0 0x17 0x0>; +}; diff --git a/Documentation/devicetree/bindings/net/can/microchip,mcp251x.txt b/Documentation/devicetree/bindings/net/can/microchip,mcp251x.txt new file mode 100644 index 00000000000..ee3723beb70 --- /dev/null +++ b/Documentation/devicetree/bindings/net/can/microchip,mcp251x.txt @@ -0,0 +1,25 @@ +* Microchip MCP251X stand-alone CAN controller device tree bindings + +Required properties: + - compatible: Should be one of the following: +   - "microchip,mcp2510" for MCP2510. +   - "microchip,mcp2515" for MCP2515. + - reg: SPI chip select. + - clocks: The clock feeding the CAN controller. + - interrupt-parent: The parent interrupt controller. + - interrupts: Should contain IRQ line for the CAN controller. + +Optional properties: + - vdd-supply: Regulator that powers the CAN controller. + - xceiver-supply: Regulator that powers the CAN transceiver. + +Example: +	can0: can@1 { +		compatible = "microchip,mcp2515"; +		reg = <1>; +		clocks = <&clk24m>; +		interrupt-parent = <&gpio4>; +		interrupts = <13 0x2>; +		vdd-supply = <®5v0>; +		xceiver-supply = <®5v0>; +	}; diff --git a/Documentation/devicetree/bindings/net/can/sja1000.txt b/Documentation/devicetree/bindings/net/can/sja1000.txt index f2105a47ec8..b4a6d53fb01 100644 --- a/Documentation/devicetree/bindings/net/can/sja1000.txt +++ b/Documentation/devicetree/bindings/net/can/sja1000.txt @@ -12,6 +12,10 @@ Required properties:  Optional properties: +- reg-io-width : Specify the size (in bytes) of the IO accesses that +	should be performed on the device.  Valid value is 1, 2 or 4. +	Default to 1 (8 bits). +  - nxp,external-clock-frequency : Frequency of the external oscillator  	clock in Hz. Note that the internal clock frequency used by the  	SJA1000 is half of that value. If not specified, a default value diff --git a/Documentation/devicetree/bindings/net/can/xilinx_can.txt b/Documentation/devicetree/bindings/net/can/xilinx_can.txt new file mode 100644 index 00000000000..fe38847d8e2 --- /dev/null +++ b/Documentation/devicetree/bindings/net/can/xilinx_can.txt @@ -0,0 +1,44 @@ +Xilinx Axi CAN/Zynq CANPS controller Device Tree Bindings +--------------------------------------------------------- + +Required properties: +- compatible		: Should be "xlnx,zynq-can-1.0" for Zynq CAN +			  controllers and "xlnx,axi-can-1.00.a" for Axi CAN +			  controllers. +- reg			: Physical base address and size of the Axi CAN/Zynq +			  CANPS registers map. +- interrupts		: Property with a value describing the interrupt +			  number. +- interrupt-parent	: Must be core interrupt controller +- clock-names		: List of input clock names - "can_clk", "pclk" +			  (For CANPS), "can_clk" , "s_axi_aclk"(For AXI CAN) +			  (See clock bindings for details). +- clocks		: Clock phandles (see clock bindings for details). +- tx-fifo-depth		: Can Tx fifo depth. +- rx-fifo-depth		: Can Rx fifo depth. + + +Example: + +For Zynq CANPS Dts file: +	zynq_can_0: can@e0008000 { +			compatible = "xlnx,zynq-can-1.0"; +			clocks = <&clkc 19>, <&clkc 36>; +			clock-names = "can_clk", "pclk"; +			reg = <0xe0008000 0x1000>; +			interrupts = <0 28 4>; +			interrupt-parent = <&intc>; +			tx-fifo-depth = <0x40>; +			rx-fifo-depth = <0x40>; +		}; +For Axi CAN Dts file: +	axi_can_0: axi-can@40000000 { +			compatible = "xlnx,axi-can-1.00.a"; +			clocks = <&clkc 0>, <&clkc 1>; +			clock-names = "can_clk","s_axi_aclk" ; +			reg = <0x40000000 0x10000>; +			interrupt-parent = <&intc>; +			interrupts = <0 59 1>; +			tx-fifo-depth = <0x40>; +			rx-fifo-depth = <0x40>; +		}; diff --git a/Documentation/devicetree/bindings/net/cavium-mix.txt b/Documentation/devicetree/bindings/net/cavium-mix.txt index 5da628db68b..8d7c3096390 100644 --- a/Documentation/devicetree/bindings/net/cavium-mix.txt +++ b/Documentation/devicetree/bindings/net/cavium-mix.txt @@ -18,12 +18,7 @@ Properties:  - interrupts: Two interrupt specifiers.  The first is the MIX    interrupt routing and the second the routing for the AGL interrupts. -- mac-address: Optional, the MAC address to assign to the device. - -- local-mac-address: Optional, the MAC address to assign to the device -  if mac-address is not specified. - -- phy-handle: Optional, a phandle for the PHY device connected to this device. +- phy-handle: Optional, see ethernet.txt file in the same directory.  Example:  	ethernet@1070000100800 { diff --git a/Documentation/devicetree/bindings/net/cavium-pip.txt b/Documentation/devicetree/bindings/net/cavium-pip.txt index d4c53ba04b3..7dbd158810d 100644 --- a/Documentation/devicetree/bindings/net/cavium-pip.txt +++ b/Documentation/devicetree/bindings/net/cavium-pip.txt @@ -35,12 +35,7 @@ Properties for PIP port which is a child the PIP interface:  - reg: The port number within the interface group. -- mac-address: Optional, the MAC address to assign to the device. - -- local-mac-address: Optional, the MAC address to assign to the device -  if mac-address is not specified. - -- phy-handle: Optional, a phandle for the PHY device connected to this device. +- phy-handle: Optional, see ethernet.txt file in the same directory.  Example: diff --git a/Documentation/devicetree/bindings/net/cdns-emac.txt b/Documentation/devicetree/bindings/net/cdns-emac.txt index 09055c2495f..abd67c13d34 100644 --- a/Documentation/devicetree/bindings/net/cdns-emac.txt +++ b/Documentation/devicetree/bindings/net/cdns-emac.txt @@ -6,11 +6,7 @@ Required properties:    or the generic form: "cdns,emac".  - reg: Address and length of the register set for the device  - interrupts: Should contain macb interrupt -- phy-mode: String, operation mode of the PHY interface. -  Supported values are: "mii", "rmii". - -Optional properties: -- local-mac-address: 6 bytes, mac address +- phy-mode: see ethernet.txt file in the same directory.  Examples: diff --git a/Documentation/devicetree/bindings/net/cpsw-phy-sel.txt b/Documentation/devicetree/bindings/net/cpsw-phy-sel.txt new file mode 100644 index 00000000000..764c0c79b43 --- /dev/null +++ b/Documentation/devicetree/bindings/net/cpsw-phy-sel.txt @@ -0,0 +1,30 @@ +TI CPSW Phy mode Selection Device Tree Bindings +----------------------------------------------- + +Required properties: +- compatible		: Should be "ti,am3352-cpsw-phy-sel" for am335x platform and +			  "ti,dra7xx-cpsw-phy-sel" for dra7xx platform +			  "ti,am43xx-cpsw-phy-sel" for am43xx platform +- reg			: physical base address and size of the cpsw +			  registers map +- reg-names		: names of the register map given in "reg" node + +Optional properties: +-rmii-clock-ext		: If present, the driver will configure the RMII +			  interface to external clock usage + +Examples: + +	phy_sel: cpsw-phy-sel@44e10650 { +		compatible = "ti,am3352-cpsw-phy-sel"; +		reg= <0x44e10650 0x4>; +		reg-names = "gmii-sel"; +	}; + +(or) +	phy_sel: cpsw-phy-sel@44e10650 { +		compatible = "ti,am3352-cpsw-phy-sel"; +		reg= <0x44e10650 0x4>; +		reg-names = "gmii-sel"; +		rmii-clock-ext; +	}; diff --git a/Documentation/devicetree/bindings/net/cpsw.txt b/Documentation/devicetree/bindings/net/cpsw.txt index 05d660e4ac6..ae2b8b7f9c3 100644 --- a/Documentation/devicetree/bindings/net/cpsw.txt +++ b/Documentation/devicetree/bindings/net/cpsw.txt @@ -28,9 +28,8 @@ Optional properties:  Slave Properties:  Required properties:  - phy_id		: Specifies slave phy id -- phy-mode		: The interface between the SoC and the PHY (a string -			  that of_get_phy_mode() can understand) -- mac-address		: Specifies slave MAC address +- phy-mode		: See ethernet.txt file in the same directory +- mac-address		: See ethernet.txt file in the same directory  Optional properties:  - dual_emac_res_vlan	: Specifies VID to be used to segregate the ports diff --git a/Documentation/devicetree/bindings/net/davicom-dm9000.txt b/Documentation/devicetree/bindings/net/davicom-dm9000.txt index 2d39c990e64..28767ed7c1b 100644 --- a/Documentation/devicetree/bindings/net/davicom-dm9000.txt +++ b/Documentation/devicetree/bindings/net/davicom-dm9000.txt @@ -9,8 +9,6 @@ Required properties:  - interrupts : interrupt specifier specific to interrupt controller  Optional properties: -- local-mac-address : A bytestring of 6 bytes specifying Ethernet MAC address -    to use (from firmware or bootloader)  - davicom,no-eeprom : Configuration EEPROM is not available  - davicom,ext-phy : Use external PHY diff --git a/Documentation/devicetree/bindings/net/davinci_emac.txt b/Documentation/devicetree/bindings/net/davinci_emac.txt index 48b259e29e8..032808843f9 100644 --- a/Documentation/devicetree/bindings/net/davinci_emac.txt +++ b/Documentation/devicetree/bindings/net/davinci_emac.txt @@ -4,16 +4,12 @@ This file provides information, what the device node  for the davinci_emac interface contains.  Required properties: -- compatible: "ti,davinci-dm6467-emac"; +- compatible: "ti,davinci-dm6467-emac" or "ti,am3517-emac"  - reg: Offset and length of the register set for the device  - ti,davinci-ctrl-reg-offset: offset to control register  - ti,davinci-ctrl-mod-reg-offset: offset to control module register  - ti,davinci-ctrl-ram-offset: offset to control module ram  - ti,davinci-ctrl-ram-size: size of control module ram -- ti,davinci-rmii-en: use RMII -- ti,davinci-no-bd-ram: has the emac controller BD RAM -- phy-handle: Contains a phandle to an Ethernet PHY. -              if not, davinci_emac driver defaults to 100/FULL  - interrupts: interrupt mapping for the davinci emac interrupts sources:                4 sources: <Receive Threshold Interrupt  			  Receive Interrupt @@ -21,7 +17,10 @@ Required properties:  			  Miscellaneous Interrupt>  Optional properties: -- local-mac-address : 6 bytes, mac address +- phy-handle: See ethernet.txt file in the same directory. +              If absent, davinci_emac driver defaults to 100/FULL. +- ti,davinci-rmii-en: 1 byte, 1 means use RMII +- ti,davinci-no-bd-ram: boolean, does EMAC have BD RAM?  Example (enbw_cmc board):  	eth0: emac@1e20000 { diff --git a/Documentation/devicetree/bindings/net/ethernet.txt b/Documentation/devicetree/bindings/net/ethernet.txt new file mode 100644 index 00000000000..3fc360523bc --- /dev/null +++ b/Documentation/devicetree/bindings/net/ethernet.txt @@ -0,0 +1,25 @@ +The following properties are common to the Ethernet controllers: + +- local-mac-address: array of 6 bytes, specifies the MAC address that was +  assigned to the network device; +- mac-address: array of 6 bytes, specifies the MAC address that was last used by +  the boot program; should be used in cases where the MAC address assigned to +  the device by the boot program is different from the "local-mac-address" +  property; +- max-speed: number, specifies maximum speed in Mbit/s supported by the device; +- max-frame-size: number, maximum transfer unit (IEEE defined MTU), rather than +  the maximum frame size (there's contradiction in ePAPR). +- phy-mode: string, operation mode of the PHY interface; supported values are +  "mii", "gmii", "sgmii", "qsgmii", "tbi", "rev-mii", "rmii", "rgmii", "rgmii-id", +  "rgmii-rxid", "rgmii-txid", "rtbi", "smii", "xgmii"; this is now a de-facto +  standard property; +- phy-connection-type: the same as "phy-mode" property but described in ePAPR; +- phy-handle: phandle, specifies a reference to a node representing a PHY +  device; this property is described in ePAPR and so preferred; +- phy: the same as "phy-handle" property, not recommended for new bindings. +- phy-device: the same as "phy-handle" property, not recommended for new +  bindings. + +Child nodes of the Ethernet controller are typically the individual PHY devices +connected via the MDIO bus (sometimes the MDIO bus controller is separate). +They are described in the phy.txt file in this same directory. diff --git a/Documentation/devicetree/bindings/net/fixed-link.txt b/Documentation/devicetree/bindings/net/fixed-link.txt new file mode 100644 index 00000000000..82bf7e0f47b --- /dev/null +++ b/Documentation/devicetree/bindings/net/fixed-link.txt @@ -0,0 +1,42 @@ +Fixed link Device Tree binding +------------------------------ + +Some Ethernet MACs have a "fixed link", and are not connected to a +normal MDIO-managed PHY device. For those situations, a Device Tree +binding allows to describe a "fixed link". + +Such a fixed link situation is described by creating a 'fixed-link' +sub-node of the Ethernet MAC device node, with the following +properties: + +* 'speed' (integer, mandatory), to indicate the link speed. Accepted +  values are 10, 100 and 1000 +* 'full-duplex' (boolean, optional), to indicate that full duplex is +  used. When absent, half duplex is assumed. +* 'pause' (boolean, optional), to indicate that pause should be +  enabled. +* 'asym-pause' (boolean, optional), to indicate that asym_pause should +  be enabled. + +Old, deprecated 'fixed-link' binding: + +* A 'fixed-link' property in the Ethernet MAC node, with 5 cells, of the +  form <a b c d e> with the following accepted values: +  - a: emulated PHY ID, choose any but but unique to the all specified +    fixed-links, from 0 to 31 +  - b: duplex configuration: 0 for half duplex, 1 for full duplex +  - c: link speed in Mbits/sec, accepted values are: 10, 100 and 1000 +  - d: pause configuration: 0 for no pause, 1 for pause +  - e: asymmetric pause configuration: 0 for no asymmetric pause, 1 for +    asymmetric pause + +Example: + +ethernet@0 { +	... +	fixed-link { +	      speed = <1000>; +	      full-duplex; +	}; +	... +}; diff --git a/Documentation/devicetree/bindings/net/fsl-fec.txt b/Documentation/devicetree/bindings/net/fsl-fec.txt index d5363922140..6bc84adb10c 100644 --- a/Documentation/devicetree/bindings/net/fsl-fec.txt +++ b/Documentation/devicetree/bindings/net/fsl-fec.txt @@ -4,17 +4,15 @@ Required properties:  - compatible : Should be "fsl,<soc>-fec"  - reg : Address and length of the register set for the device  - interrupts : Should contain fec interrupt -- phy-mode : String, operation mode of the PHY interface. -  Supported values are: "mii", "gmii", "sgmii", "tbi", "rmii", -  "rgmii", "rgmii-id", "rgmii-rxid", "rgmii-txid", "rtbi", "smii". +- phy-mode : See ethernet.txt file in the same directory  Optional properties: -- local-mac-address : 6 bytes, mac address  - phy-reset-gpios : Should specify the gpio for phy reset  - phy-reset-duration : Reset duration in milliseconds.  Should present    only if property "phy-reset-gpios" is available.  Missing the property    will have the duration be 1 millisecond.  Numbers greater than 1000 are    invalid and 1 millisecond will be used instead. +- phy-supply: regulator that powers the Ethernet PHY.  Example: @@ -25,4 +23,5 @@ ethernet@83fec000 {  	phy-mode = "mii";  	phy-reset-gpios = <&gpio2 14 0>; /* GPIO2_14 */  	local-mac-address = [00 04 9F 01 1B B9]; +	phy-supply = <®_fec_supply>;  }; diff --git a/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt b/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt index d2ea4605d07..be6ea8960f2 100644 --- a/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt +++ b/Documentation/devicetree/bindings/net/fsl-tsec-phy.txt @@ -38,22 +38,14 @@ Properties:    - model : Model of the device.  Can be "TSEC", "eTSEC", or "FEC"    - compatible : Should be "gianfar"    - reg : Offset and length of the register set for the device -  - local-mac-address : List of bytes representing the ethernet address of -    this controller    - interrupts : For FEC devices, the first interrupt is the device's      interrupt.  For TSEC and eTSEC devices, the first interrupt is      transmit, the second is receive, and the third is error. -  - phy-handle : The phandle for the PHY connected to this ethernet -    controller. -  - fixed-link : <a b c d e> where a is emulated phy id - choose any, -    but unique to the all specified fixed-links, b is duplex - 0 half, -    1 full, c is link speed - d#10/d#100/d#1000, d is pause - 0 no -    pause, 1 pause, e is asym_pause - 0 no asym_pause, 1 asym_pause. -  - phy-connection-type : a string naming the controller/PHY interface type, -    i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id", "sgmii", -    "tbi", or "rtbi".  This property is only really needed if the connection -    is of type "rgmii-id", as all other connection types are detected by -    hardware. +  - phy-handle : See ethernet.txt file in the same directory. +  - fixed-link : See fixed-link.txt in the same directory. +  - phy-connection-type : See ethernet.txt file in the same directory. +    This property is only really needed if the connection is of type +    "rgmii-id", as all other connection types are detected by hardware.    - fsl,magic-packet : If present, indicates that the hardware supports      waking up via magic packet.    - bd-stash : If present, indicates that the hardware supports stashing diff --git a/Documentation/devicetree/bindings/net/hisilicon-hix5hd2-gmac.txt b/Documentation/devicetree/bindings/net/hisilicon-hix5hd2-gmac.txt new file mode 100644 index 00000000000..75d398bb1fb --- /dev/null +++ b/Documentation/devicetree/bindings/net/hisilicon-hix5hd2-gmac.txt @@ -0,0 +1,36 @@ +Hisilicon hix5hd2 gmac controller + +Required properties: +- compatible: should be "hisilicon,hix5hd2-gmac". +- reg: specifies base physical address(s) and size of the device registers. +  The first region is the MAC register base and size. +  The second region is external interface control register. +- interrupts: should contain the MAC interrupt. +- #address-cells: must be <1>. +- #size-cells: must be <0>. +- phy-mode: see ethernet.txt [1]. +- phy-handle: see ethernet.txt [1]. +- mac-address: see ethernet.txt [1]. +- clocks: clock phandle and specifier pair. + +- PHY subnode: inherits from phy binding [2] + +[1] Documentation/devicetree/bindings/net/ethernet.txt +[2] Documentation/devicetree/bindings/net/phy.txt + +Example: +	gmac0: ethernet@f9840000 { +		compatible = "hisilicon,hix5hd2-gmac"; +		reg = <0xf9840000 0x1000>,<0xf984300c 0x4>; +		interrupts = <0 71 4>; +		#address-cells = <1>; +		#size-cells = <0>; +		phy-mode = "mii"; +		phy-handle = <&phy2>; +		mac-address = [00 00 00 00 00 00]; +		clocks = <&clock HIX5HD2_MAC0_CLK>; + +		phy2: ethernet-phy@2 { +			reg = <2>; +		}; +	}; diff --git a/Documentation/devicetree/bindings/net/ieee802154/at86rf230.txt b/Documentation/devicetree/bindings/net/ieee802154/at86rf230.txt new file mode 100644 index 00000000000..d3bbdded4cb --- /dev/null +++ b/Documentation/devicetree/bindings/net/ieee802154/at86rf230.txt @@ -0,0 +1,23 @@ +* AT86RF230 IEEE 802.15.4 * + +Required properties: +  - compatible:		should be "atmel,at86rf230", "atmel,at86rf231", +			"atmel,at86rf233" or "atmel,at86rf212" +  - spi-max-frequency:	maximal bus speed, should be set to 7500000 depends +			sync or async operation mode +  - reg:		the chipselect index +  - interrupts:		the interrupt generated by the device + +Optional properties: +  - reset-gpio:		GPIO spec for the rstn pin +  - sleep-gpio:		GPIO spec for the slp_tr pin + +Example: + +	at86rf231@0 { +		compatible = "atmel,at86rf231"; +		spi-max-frequency = <7500000>; +		reg = <0>; +		interrupts = <19 1>; +		interrupt-parent = <&gpio3>; +	}; diff --git a/Documentation/devicetree/bindings/net/lpc-eth.txt b/Documentation/devicetree/bindings/net/lpc-eth.txt index 585021acd17..b92e927808b 100644 --- a/Documentation/devicetree/bindings/net/lpc-eth.txt +++ b/Documentation/devicetree/bindings/net/lpc-eth.txt @@ -6,10 +6,9 @@ Required properties:  - interrupts: Should contain ethernet controller interrupt  Optional properties: -- phy-mode: String, operation mode of the PHY interface. -  Supported values are: "mii", "rmii" (default) +- phy-mode: See ethernet.txt file in the same directory. If the property is +  absent, "rmii" is assumed.  - use-iram: Use LPC32xx internal SRAM (IRAM) for DMA buffering -- local-mac-address : 6 bytes, mac address  Example: diff --git a/Documentation/devicetree/bindings/net/macb.txt b/Documentation/devicetree/bindings/net/macb.txt index 4ff65047bb9..aaa696414f5 100644 --- a/Documentation/devicetree/bindings/net/macb.txt +++ b/Documentation/devicetree/bindings/net/macb.txt @@ -8,11 +8,11 @@ Required properties:    the Cadence GEM, or the generic form: "cdns,gem".  - reg: Address and length of the register set for the device  - interrupts: Should contain macb interrupt -- phy-mode: String, operation mode of the PHY interface. -  Supported values are: "mii", "rmii", "gmii", "rgmii". - -Optional properties: -- local-mac-address: 6 bytes, mac address +- phy-mode: See ethernet.txt file in the same directory. +- clock-names: Tuple listing input clock names. +	Required elements: 'pclk', 'hclk' +	Optional elements: 'tx_clk' +- clocks: Phandles to input clocks.  Examples: @@ -22,4 +22,6 @@ Examples:  		interrupts = <21>;  		phy-mode = "rmii";  		local-mac-address = [3a 0e 03 04 05 06]; +		clock-names = "pclk", "hclk", "tx_clk"; +		clocks = <&clkc 30>, <&clkc 30>, <&clkc 13>;  	}; diff --git a/Documentation/devicetree/bindings/net/marvell-armada-370-neta.txt b/Documentation/devicetree/bindings/net/marvell-armada-370-neta.txt index 859a6fa7569..750d577e808 100644 --- a/Documentation/devicetree/bindings/net/marvell-armada-370-neta.txt +++ b/Documentation/devicetree/bindings/net/marvell-armada-370-neta.txt @@ -4,10 +4,8 @@ Required properties:  - compatible: should be "marvell,armada-370-neta".  - reg: address and length of the register set for the device.  - interrupts: interrupt for the device -- phy: A phandle to a phy node defining the PHY address (as the reg -  property, a single integer). -- phy-mode: The interface between the SoC and the PHY (a string that -  of_get_phy_mode() can understand) +- phy: See ethernet.txt file in the same directory. +- phy-mode: See ethernet.txt file in the same directory  - clocks: a pointer to the reference clock for this device.  Example: diff --git a/Documentation/devicetree/bindings/net/marvell-orion-net.txt b/Documentation/devicetree/bindings/net/marvell-orion-net.txt index a73b79f227e..bce52b2ec55 100644 --- a/Documentation/devicetree/bindings/net/marvell-orion-net.txt +++ b/Documentation/devicetree/bindings/net/marvell-orion-net.txt @@ -32,12 +32,11 @@ Optional controller properties:  * Ethernet port node  Required port properties: - - device_type: shall be "network".   - compatible: shall be one of "marvell,orion-eth-port",        "marvell,kirkwood-eth-port".   - reg: port number relative to ethernet controller, shall be 0, 1, or 2.   - interrupts: port interrupt. - - local-mac-address: 6 bytes MAC address. + - local-mac-address: See ethernet.txt file in the same directory.  Optional port properties:   - marvell,tx-queue-size: size of the transmit ring buffer. @@ -49,7 +48,7 @@ Optional port properties:  and - - phy-handle: phandle reference to ethernet PHY. + - phy-handle: See ethernet.txt file in the same directory.  or @@ -61,7 +60,6 @@ or  mdio-bus {  	...  	ethphy: ethernet-phy@8 { -		device_type = "ethernet-phy";  		...  	};  }; @@ -75,7 +73,6 @@ eth: ethernet-controller@72000 {  	marvell,tx-checksum-limit = <1600>;  	ethernet@0 { -		device_type = "network";  		compatible = "marvell,orion-eth-port";  		reg = <0>;  		interrupts = <29>; diff --git a/Documentation/devicetree/bindings/net/mdio-gpio.txt b/Documentation/devicetree/bindings/net/mdio-gpio.txt index c79bab02536..8dbcf8295c6 100644 --- a/Documentation/devicetree/bindings/net/mdio-gpio.txt +++ b/Documentation/devicetree/bindings/net/mdio-gpio.txt @@ -14,7 +14,7 @@ node.  Example:  aliases { -	mdio-gpio0 = <&mdio0>; +	mdio-gpio0 = &mdio0;  };  mdio0: mdio { diff --git a/Documentation/devicetree/bindings/net/micrel-ks8851.txt b/Documentation/devicetree/bindings/net/micrel-ks8851.txt index 11ace3c3d80..bbdf9a7359a 100644 --- a/Documentation/devicetree/bindings/net/micrel-ks8851.txt +++ b/Documentation/devicetree/bindings/net/micrel-ks8851.txt @@ -1,9 +1,18 @@ -Micrel KS8851 Ethernet mac +Micrel KS8851 Ethernet mac (MLL)  Required properties: -- compatible = "micrel,ks8851-ml" of parallel interface +- compatible = "micrel,ks8851-mll" of parallel interface  - reg : 2 physical address and size of registers for data and command  - interrupts : interrupt connection +Micrel KS8851 Ethernet mac (SPI) + +Required properties: +- compatible = "micrel,ks8851" or the deprecated "ks8851" +- reg : chip select number +- interrupts : interrupt connection +  Optional properties: -- local-mac-address : Ethernet mac address to use +- vdd-supply: analog 3.3V supply for Ethernet mac +- vdd-io-supply: digital 1.8V IO supply for Ethernet mac +- reset-gpios: reset_n input pin diff --git a/Documentation/devicetree/bindings/net/micrel-ksz9021.txt b/Documentation/devicetree/bindings/net/micrel-ksz9021.txt deleted file mode 100644 index 997a63f1aea..00000000000 --- a/Documentation/devicetree/bindings/net/micrel-ksz9021.txt +++ /dev/null @@ -1,49 +0,0 @@ -Micrel KSZ9021 Gigabit Ethernet PHY - -Some boards require special tuning values, particularly when it comes to -clock delays.  You can specify clock delay values by adding -micrel-specific properties to an Ethernet OF device node. - -All skew control options are specified in picoseconds.  The minimum -value is 0, and the maximum value is 3000. - -Optional properties: - - rxc-skew-ps : Skew control of RXC pad - - rxdv-skew-ps : Skew control of RX CTL pad - - txc-skew-ps : Skew control of TXC pad - - txen-skew-ps : Skew control of TX_CTL pad - - rxd0-skew-ps : Skew control of RX data 0 pad - - rxd1-skew-ps : Skew control of RX data 1 pad - - rxd2-skew-ps : Skew control of RX data 2 pad - - rxd3-skew-ps : Skew control of RX data 3 pad - - txd0-skew-ps : Skew control of TX data 0 pad - - txd1-skew-ps : Skew control of TX data 1 pad - - txd2-skew-ps : Skew control of TX data 2 pad - - txd3-skew-ps : Skew control of TX data 3 pad - -Examples: - -	/* Attach to an Ethernet device with autodetected PHY */ -	&enet { -		rxc-skew-ps = <3000>; -		rxdv-skew-ps = <0>; -		txc-skew-ps = <3000>; -		txen-skew-ps = <0>; -		status = "okay"; -	}; - -	/* Attach to an explicitly-specified PHY */ -	mdio { -		phy0: ethernet-phy@0 { -			rxc-skew-ps = <3000>; -			rxdv-skew-ps = <0>; -			txc-skew-ps = <3000>; -			txen-skew-ps = <0>; -			reg = <0>; -		}; -	}; -	ethernet@70000 { -		status = "okay"; -		phy = <&phy0>; -		phy-mode = "rgmii-id"; -	}; diff --git a/Documentation/devicetree/bindings/net/micrel-ksz90x1.txt b/Documentation/devicetree/bindings/net/micrel-ksz90x1.txt new file mode 100644 index 00000000000..692076fda0e --- /dev/null +++ b/Documentation/devicetree/bindings/net/micrel-ksz90x1.txt @@ -0,0 +1,83 @@ +Micrel KSZ9021/KSZ9031 Gigabit Ethernet PHY + +Some boards require special tuning values, particularly when it comes to +clock delays. You can specify clock delay values by adding +micrel-specific properties to an Ethernet OF device node. + +Note that these settings are applied after any phy-specific fixup from +phy_fixup_list (see phy_init_hw() from drivers/net/phy/phy_device.c), +and therefore may overwrite them. + +KSZ9021: + +  All skew control options are specified in picoseconds. The minimum +  value is 0, the maximum value is 3000, and it is incremented by 200ps +  steps. + +  Optional properties: + +    - rxc-skew-ps : Skew control of RXC pad +    - rxdv-skew-ps : Skew control of RX CTL pad +    - txc-skew-ps : Skew control of TXC pad +    - txen-skew-ps : Skew control of TX CTL pad +    - rxd0-skew-ps : Skew control of RX data 0 pad +    - rxd1-skew-ps : Skew control of RX data 1 pad +    - rxd2-skew-ps : Skew control of RX data 2 pad +    - rxd3-skew-ps : Skew control of RX data 3 pad +    - txd0-skew-ps : Skew control of TX data 0 pad +    - txd1-skew-ps : Skew control of TX data 1 pad +    - txd2-skew-ps : Skew control of TX data 2 pad +    - txd3-skew-ps : Skew control of TX data 3 pad + +KSZ9031: + +  All skew control options are specified in picoseconds. The minimum +  value is 0, and the maximum is property-dependent. The increment +  step is 60ps. + +  Optional properties: + +    Maximum value of 1860: + +      - rxc-skew-ps : Skew control of RX clock pad +      - txc-skew-ps : Skew control of TX clock pad + +    Maximum value of 900: + +      - rxdv-skew-ps : Skew control of RX CTL pad +      - txen-skew-ps : Skew control of TX CTL pad +      - rxd0-skew-ps : Skew control of RX data 0 pad +      - rxd1-skew-ps : Skew control of RX data 1 pad +      - rxd2-skew-ps : Skew control of RX data 2 pad +      - rxd3-skew-ps : Skew control of RX data 3 pad +      - txd0-skew-ps : Skew control of TX data 0 pad +      - txd1-skew-ps : Skew control of TX data 1 pad +      - txd2-skew-ps : Skew control of TX data 2 pad +      - txd3-skew-ps : Skew control of TX data 3 pad + +Examples: + +	/* Attach to an Ethernet device with autodetected PHY */ +	&enet { +		rxc-skew-ps = <3000>; +		rxdv-skew-ps = <0>; +		txc-skew-ps = <3000>; +		txen-skew-ps = <0>; +		status = "okay"; +	}; + +	/* Attach to an explicitly-specified PHY */ +	mdio { +		phy0: ethernet-phy@0 { +			rxc-skew-ps = <3000>; +			rxdv-skew-ps = <0>; +			txc-skew-ps = <3000>; +			txen-skew-ps = <0>; +			reg = <0>; +		}; +	}; +	ethernet@70000 { +		status = "okay"; +		phy = <&phy0>; +		phy-mode = "rgmii-id"; +	}; diff --git a/Documentation/devicetree/bindings/net/micrel.txt b/Documentation/devicetree/bindings/net/micrel.txt new file mode 100644 index 00000000000..98a3e61f9ee --- /dev/null +++ b/Documentation/devicetree/bindings/net/micrel.txt @@ -0,0 +1,18 @@ +Micrel PHY properties. + +These properties cover the base properties Micrel PHYs. + +Optional properties: + + - micrel,led-mode : LED mode value to set for PHYs with configurable LEDs. + +              Configure the LED mode with single value. The list of PHYs and +	      the bits that are currently supported: + +	      KSZ8001: register 0x1e, bits 15..14 +	      KSZ8041: register 0x1e, bits 15..14 +	      KSZ8021: register 0x1f, bits 5..4 +	      KSZ8031: register 0x1f, bits 5..4 +	      KSZ8051: register 0x1f, bits 5..4 + +              See the respective PHY datasheet for the mode values. diff --git a/Documentation/devicetree/bindings/net/nfc/pn544.txt b/Documentation/devicetree/bindings/net/nfc/pn544.txt new file mode 100644 index 00000000000..dab69f36167 --- /dev/null +++ b/Documentation/devicetree/bindings/net/nfc/pn544.txt @@ -0,0 +1,35 @@ +* NXP Semiconductors PN544 NFC Controller + +Required properties: +- compatible: Should be "nxp,pn544-i2c". +- clock-frequency: I²C work frequency. +- reg: address on the bus +- interrupt-parent: phandle for the interrupt gpio controller +- interrupts: GPIO interrupt to which the chip is connected +- enable-gpios: Output GPIO pin used for enabling/disabling the PN544 +- firmware-gpios: Output GPIO pin used to enter firmware download mode + +Optional SoC Specific Properties: +- pinctrl-names: Contains only one value - "default". +- pintctrl-0: Specifies the pin control groups used for this controller. + +Example (for ARM-based BeagleBone with PN544 on I2C2): + +&i2c2 { + +	status = "okay"; + +	pn544: pn544@28 { + +		compatible = "nxp,pn544-i2c"; + +		reg = <0x28>; +		clock-frequency = <400000>; + +		interrupt-parent = <&gpio1>; +		interrupts = <17 GPIO_ACTIVE_HIGH>; + +		enable-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>; +		firmware-gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>; +	}; +}; diff --git a/Documentation/devicetree/bindings/net/nfc/st21nfca.txt b/Documentation/devicetree/bindings/net/nfc/st21nfca.txt new file mode 100644 index 00000000000..e4faa2e8dfe --- /dev/null +++ b/Documentation/devicetree/bindings/net/nfc/st21nfca.txt @@ -0,0 +1,33 @@ +* STMicroelectronics SAS. ST21NFCA NFC Controller + +Required properties: +- compatible: Should be "st,st21nfca_i2c". +- clock-frequency: I²C work frequency. +- reg: address on the bus +- interrupt-parent: phandle for the interrupt gpio controller +- interrupts: GPIO interrupt to which the chip is connected +- enable-gpios: Output GPIO pin used for enabling/disabling the ST21NFCA + +Optional SoC Specific Properties: +- pinctrl-names: Contains only one value - "default". +- pintctrl-0: Specifies the pin control groups used for this controller. + +Example (for ARM-based BeagleBoard xM with ST21NFCA on I2C2): + +&i2c2 { + +	status = "okay"; + +	st21nfca: st21nfca@1 { + +		compatible = "st,st21nfca_i2c"; + +		reg = <0x01>; +		clock-frequency = <400000>; + +		interrupt-parent = <&gpio5>; +		interrupts = <2 IRQ_TYPE_LEVEL_LOW>; + +		enable-gpios = <&gpio5 29 GPIO_ACTIVE_HIGH>; +	}; +}; diff --git a/Documentation/devicetree/bindings/net/nfc/trf7970a.txt b/Documentation/devicetree/bindings/net/nfc/trf7970a.txt new file mode 100644 index 00000000000..1e436133685 --- /dev/null +++ b/Documentation/devicetree/bindings/net/nfc/trf7970a.txt @@ -0,0 +1,36 @@ +* Texas Instruments TRF7970A RFID/NFC/15693 Transceiver + +Required properties: +- compatible: Should be "ti,trf7970a". +- spi-max-frequency: Maximum SPI frequency (<= 2000000). +- interrupt-parent: phandle of parent interrupt handler. +- interrupts: A single interrupt specifier. +- ti,enable-gpios: Two GPIO entries used for 'EN' and 'EN2' pins on the +  TRF7970A. +- vin-supply: Regulator for supply voltage to VIN pin + +Optional SoC Specific Properties: +- pinctrl-names: Contains only one value - "default". +- pintctrl-0: Specifies the pin control groups used for this controller. +- autosuspend-delay: Specify autosuspend delay in milliseconds. + +Example (for ARM-based BeagleBone with TRF7970A on SPI1): + +&spi1 { +	status = "okay"; + +	nfc@0 { +		compatible = "ti,trf7970a"; +		reg = <0>; +		pinctrl-names = "default"; +		pinctrl-0 = <&trf7970a_default>; +		spi-max-frequency = <2000000>; +		interrupt-parent = <&gpio2>; +		interrupts = <14 0>; +		ti,enable-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>, +				  <&gpio2 5 GPIO_ACTIVE_LOW>; +		vin-supply = <&ldo3_reg>; +		autosuspend-delay = <30000>; +		status = "okay"; +	}; +}; diff --git a/Documentation/devicetree/bindings/net/opencores-ethoc.txt b/Documentation/devicetree/bindings/net/opencores-ethoc.txt new file mode 100644 index 00000000000..2dc127c30d9 --- /dev/null +++ b/Documentation/devicetree/bindings/net/opencores-ethoc.txt @@ -0,0 +1,22 @@ +* OpenCores MAC 10/100 Mbps + +Required properties: +- compatible: Should be "opencores,ethoc". +- reg: two memory regions (address and length), +  first region is for the device registers and descriptor rings, +  second is for the device packet memory. +- interrupts: interrupt for the device. + +Optional properties: +- clocks: phandle to refer to the clk used as per +  Documentation/devicetree/bindings/clock/clock-bindings.txt + +Examples: + +	enet0: ethoc@fd030000 { +		compatible = "opencores,ethoc"; +		reg = <0xfd030000 0x4000 0xfd800000 0x4000>; +		interrupts = <1>; +		local-mac-address = [00 50 c2 13 6f 00]; +		clocks = <&osc>; +        }; diff --git a/Documentation/devicetree/bindings/net/phy.txt b/Documentation/devicetree/bindings/net/phy.txt index 7cd18fbfcf7..5b8c5890307 100644 --- a/Documentation/devicetree/bindings/net/phy.txt +++ b/Documentation/devicetree/bindings/net/phy.txt @@ -2,7 +2,6 @@ PHY nodes  Required properties: - - device_type : Should be "ethernet-phy"   - interrupts : <a b> where a is the interrupt number and b is a     field that represents an encoding of the sense and level     information for the interrupt.  This should be encoded based on @@ -11,8 +10,6 @@ Required properties:   - interrupt-parent : the phandle for the interrupt controller that     services interrupts for this device.   - reg : The ID number for the phy, usually a small integer - - linux,phandle :  phandle for this node; likely referenced by an -   ethernet controller node.  Optional Properties: @@ -22,14 +19,21 @@ Optional Properties:    specifications. If neither of these are specified, the default is to    assume clause 22. The compatible list may also contain other    elements. +- max-speed: Maximum PHY supported speed (10, 100, 1000...) + +  If the phy's identifier is known then the list may contain an entry +  of the form: "ethernet-phy-idAAAA.BBBB" where +     AAAA - The value of the 16 bit Phy Identifier 1 register as +            4 hex digits. This is the chip vendor OUI bits 3:18 +     BBBB - The value of the 16 bit Phy Identifier 2 register as +            4 hex digits. This is the chip vendor OUI bits 19:24, +            followed by 10 bits of a vendor specific ID.  Example:  ethernet-phy@0 { -	compatible = "ethernet-phy-ieee802.3-c22"; -	linux,phandle = <2452000>; +	compatible = "ethernet-phy-id0141.0e90", "ethernet-phy-ieee802.3-c22";  	interrupt-parent = <40000>;  	interrupts = <35 1>;  	reg = <0>; -	device_type = "ethernet-phy";  }; diff --git a/Documentation/devicetree/bindings/net/samsung-sxgbe.txt b/Documentation/devicetree/bindings/net/samsung-sxgbe.txt new file mode 100644 index 00000000000..989f6c95cfd --- /dev/null +++ b/Documentation/devicetree/bindings/net/samsung-sxgbe.txt @@ -0,0 +1,52 @@ +* Samsung 10G Ethernet driver (SXGBE) + +Required properties: +- compatible: Should be "samsung,sxgbe-v2.0a" +- reg: Address and length of the register set for the device +- interrupt-parent: Should be the phandle for the interrupt controller +  that services interrupts for this device +- interrupts: Should contain the SXGBE interrupts +  These interrupts are ordered by fixed and follows variable +  trasmit DMA interrupts, receive DMA interrupts and lpi interrupt. +  index 0 - this is fixed common interrupt of SXGBE and it is always +  available. +  index 1 to 25 - 8 variable trasmit interrupts, variable 16 receive interrupts +  and 1 optional lpi interrupt. +- phy-mode: String, operation mode of the PHY interface. +  Supported values are: "sgmii", "xgmii". +- samsung,pbl: Integer, Programmable Burst Length. +  Supported values are 1, 2, 4, 8, 16, or 32. +- samsung,burst-map: Integer, Program the possible bursts supported by sxgbe +  This is an interger and represents allowable DMA bursts when fixed burst. +  Allowable range is 0x01-0x3F. When this field is set fixed burst is enabled. +  When fixed length is needed for burst mode, it can be set within allowable +  range. + +Optional properties: +- mac-address: 6 bytes, mac address +- max-frame-size: Maximum Transfer Unit (IEEE defined MTU), rather +		  than the maximum frame size. + +Example: + +	aliases { +		ethernet0 = <&sxgbe0>; +	}; + +	sxgbe0: ethernet@1a040000 { +		compatible = "samsung,sxgbe-v2.0a"; +		reg = <0 0x1a040000 0 0x10000>; +		interrupt-parent = <&gic>; +		interrupts = <0 209 4>, <0 185 4>, <0 186 4>, <0 187 4>, +			     <0 188 4>, <0 189 4>, <0 190 4>, <0 191 4>, +			     <0 192 4>, <0 193 4>, <0 194 4>, <0 195 4>, +			     <0 196 4>, <0 197 4>, <0 198 4>, <0 199 4>, +			     <0 200 4>, <0 201 4>, <0 202 4>, <0 203 4>, +			     <0 204 4>, <0 205 4>, <0 206 4>, <0 207 4>, +			     <0 208 4>, <0 210 4>; +		samsung,pbl = <0x08> +		samsung,burst-map = <0x20> +		mac-address = [ 00 11 22 33 44 55 ]; /* Filled in by U-Boot */ +		max-frame-size = <9000>; +		phy-mode = "xgmii"; +	}; diff --git a/Documentation/devicetree/bindings/net/sh_eth.txt b/Documentation/devicetree/bindings/net/sh_eth.txt new file mode 100644 index 00000000000..e7106b50dbd --- /dev/null +++ b/Documentation/devicetree/bindings/net/sh_eth.txt @@ -0,0 +1,55 @@ +* Renesas Electronics SH EtherMAC + +This file provides information on what the device node for the SH EtherMAC +interface contains. + +Required properties: +- compatible: "renesas,gether-r8a7740" if the device is a part of R8A7740 SoC. +	      "renesas,ether-r8a7778"  if the device is a part of R8A7778 SoC. +	      "renesas,ether-r8a7779"  if the device is a part of R8A7779 SoC. +	      "renesas,ether-r8a7790"  if the device is a part of R8A7790 SoC. +	      "renesas,ether-r8a7791"  if the device is a part of R8A7791 SoC. +	      "renesas,ether-r7s72100" if the device is a part of R7S72100 SoC. +- reg: offset and length of (1) the E-DMAC/feLic register block (required), +       (2) the TSU register block (optional). +- interrupts: interrupt specifier for the sole interrupt. +- phy-mode: see ethernet.txt file in the same directory. +- phy-handle: see ethernet.txt file in the same directory. +- #address-cells: number of address cells for the MDIO bus, must be equal to 1. +- #size-cells: number of size cells on the MDIO bus, must be equal to 0. +- clocks: clock phandle and specifier pair. +- pinctrl-0: phandle, referring to a default pin configuration node. + +Optional properties: +- interrupt-parent: the phandle for the interrupt controller that services +		    interrupts for this device. +- pinctrl-names: pin configuration state name ("default"). +- renesas,no-ether-link: boolean, specify when a board does not provide a proper +			 Ether LINK signal. +- renesas,ether-link-active-low: boolean, specify when the Ether LINK signal is +				 active-low instead of normal active-high. + +Example (Lager board): + +	ethernet@ee700000 { +		compatible = "renesas,ether-r8a7790"; +		reg = <0 0xee700000 0 0x400>; +		interrupt-parent = <&gic>; +		interrupts = <0 162 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&mstp8_clks R8A7790_CLK_ETHER>; +		phy-mode = "rmii"; +		phy-handle = <&phy1>; +		pinctrl-0 = <ðer_pins>; +		pinctrl-names = "default"; +		renesas,ether-link-active-low; +		#address-cells = <1>; +		#size-cells = <0>; + +		phy1: ethernet-phy@1 { +			reg = <1>; +			interrupt-parent = <&irqc0>; +			interrupts = <0 IRQ_TYPE_LEVEL_LOW>; +			pinctrl-0 = <&phy1_pins>; +			pinctrl-names = "default"; +		}; +	}; diff --git a/Documentation/devicetree/bindings/net/smsc-lan91c111.txt b/Documentation/devicetree/bindings/net/smsc-lan91c111.txt index 953049b4248..0f8487b8882 100644 --- a/Documentation/devicetree/bindings/net/smsc-lan91c111.txt +++ b/Documentation/devicetree/bindings/net/smsc-lan91c111.txt @@ -6,5 +6,8 @@ Required properties:  - interrupts : interrupt connection  Optional properties: -- phy-device : phandle to Ethernet phy -- local-mac-address : Ethernet mac address to use +- phy-device : see ethernet.txt file in the same directory +- reg-io-width : Mask of sizes (in bytes) of the IO accesses that +  are supported on the device.  Valid value for SMSC LAN91c111 are +  1, 2 or 4.  If it's omitted or invalid, the size would be 2 meaning +  16-bit access only. diff --git a/Documentation/devicetree/bindings/net/smsc911x.txt b/Documentation/devicetree/bindings/net/smsc911x.txt index adb5b5744ec..3fed3c12441 100644 --- a/Documentation/devicetree/bindings/net/smsc911x.txt +++ b/Documentation/devicetree/bindings/net/smsc911x.txt @@ -6,9 +6,7 @@ Required properties:  - interrupts : Should contain SMSC LAN interrupt line  - interrupt-parent : Should be the phandle for the interrupt controller    that services interrupts for this device -- phy-mode : String, operation mode of the PHY interface. -  Supported values are: "mii", "gmii", "sgmii", "tbi", "rmii", -  "rgmii", "rgmii-id", "rgmii-rxid", "rgmii-txid", "rtbi", "smii". +- phy-mode : See ethernet.txt file in the same directory  Optional properties:  - reg-shift : Specify the quantity to shift the register offsets by @@ -23,7 +21,6 @@ Optional properties:    external PHY  - smsc,save-mac-address : Indicates that mac address needs to be saved    before resetting the controller -- local-mac-address : 6 bytes, mac address  Examples: diff --git a/Documentation/devicetree/bindings/net/socfpga-dwmac.txt b/Documentation/devicetree/bindings/net/socfpga-dwmac.txt new file mode 100644 index 00000000000..2a60cd3e8d5 --- /dev/null +++ b/Documentation/devicetree/bindings/net/socfpga-dwmac.txt @@ -0,0 +1,27 @@ +Altera SOCFPGA SoC DWMAC controller + +This is a variant of the dwmac/stmmac driver an inherits all descriptions +present in Documentation/devicetree/bindings/net/stmmac.txt. + +The device node has additional properties: + +Required properties: + - compatible	: Should contain "altr,socfpga-stmmac" along with +		  "snps,dwmac" and any applicable more detailed +		  designware version numbers documented in stmmac.txt + - altr,sysmgr-syscon : Should be the phandle to the system manager node that +   encompasses the glue register, the register offset, and the register shift. + +Example: + +gmac0: ethernet@ff700000 { +	compatible = "altr,socfpga-stmmac", "snps,dwmac-3.70a", "snps,dwmac"; +	altr,sysmgr-syscon = <&sysmgr 0x60 0>; +	status = "disabled"; +	reg = <0xff700000 0x2000>; +	interrupts = <0 115 4>; +	interrupt-names = "macirq"; +	mac-address = [00 00 00 00 00 00];/* Filled in by U-Boot */ +	clocks = <&emac_0_clk>; +	clock-names = "stmmaceth"; +}; diff --git a/Documentation/devicetree/bindings/net/sti-dwmac.txt b/Documentation/devicetree/bindings/net/sti-dwmac.txt new file mode 100644 index 00000000000..3dd3d0bf112 --- /dev/null +++ b/Documentation/devicetree/bindings/net/sti-dwmac.txt @@ -0,0 +1,58 @@ +STMicroelectronics SoC DWMAC glue layer controller + +The device node has following properties. + +Required properties: + - compatible	: Can be "st,stih415-dwmac", "st,stih416-dwmac" or +   "st,stid127-dwmac". + - reg		: Offset of the glue configuration register map in system +   configuration regmap pointed by st,syscon property and size. + + - reg-names	: Should be "sti-ethconf". + + - st,syscon	: Should be phandle to system configuration node which +   encompases this glue registers. + + - st,tx-retime-src: On STi Parts for Giga bit speeds, 125Mhz clocks can be +   wired up in from different sources. One via TXCLK pin and other via CLK_125 +   pin. This wiring is totally board dependent. However the retiming glue +   logic should be configured accordingly. Possible values for this property + +	   "txclk" - if 125Mhz clock is wired up via txclk line. +	   "clk_125" - if 125Mhz clock is wired up via clk_125 line. + +   This property is only valid for Giga bit setup( GMII, RGMII), and it is +   un-used for non-giga bit (MII and RMII) setups. Also note that internal +   clockgen can not generate stable 125Mhz clock. + + - st,ext-phyclk: This boolean property indicates who is generating the clock +  for tx and rx. This property is only valid for RMII case where the clock can +  be generated from the MAC or PHY. + + - clock-names: should be "sti-ethclk". + - clocks: Should point to ethernet clockgen which can generate phyclk. + + +Example: + +ethernet0: dwmac@fe810000 { +	device_type 	= "network"; +	compatible	= "st,stih416-dwmac", "snps,dwmac", "snps,dwmac-3.710"; +	reg 		= <0xfe810000 0x8000>, <0x8bc 0x4>; +	reg-names	= "stmmaceth", "sti-ethconf"; +	interrupts	= <0 133 0>, <0 134 0>, <0 135 0>; +	interrupt-names	= "macirq", "eth_wake_irq", "eth_lpi"; +	phy-mode	= "mii"; + +	st,syscon	= <&syscfg_rear>; + +	snps,pbl 	= <32>; +	snps,mixed-burst; + +	resets		= <&softreset STIH416_ETH0_SOFTRESET>; +	reset-names	= "stmmaceth"; +	pinctrl-0	= <&pinctrl_mii0>; +	pinctrl-names 	= "default"; +	clocks		= <&CLK_S_GMAC0_PHY>; +	clock-names	= "stmmaceth"; +}; diff --git a/Documentation/devicetree/bindings/net/stmmac.txt b/Documentation/devicetree/bindings/net/stmmac.txt index eba0e5e59eb..a2acd2b26ba 100644 --- a/Documentation/devicetree/bindings/net/stmmac.txt +++ b/Documentation/devicetree/bindings/net/stmmac.txt @@ -10,9 +10,7 @@ Required properties:  - interrupt-names: Should contain the interrupt names "macirq"    "eth_wake_irq" if this interrupt is supported in the "interrupts"    property -- phy-mode: String, operation mode of the PHY interface. -  Supported values are: "mii", "rmii", "gmii", "rgmii". -- snps,phy-addr		phy address to connect to. +- phy-mode: See ethernet.txt file in the same directory.  - snps,reset-gpio 	gpio number for phy reset.  - snps,reset-active-low boolean flag to indicate if phy reset is active low.  - snps,reset-delays-us  is triplet of delays @@ -29,7 +27,14 @@ Required properties:  				ignored if force_thresh_dma_mode is set.  Optional properties: -- mac-address: 6 bytes, mac address +- resets: Should contain a phandle to the STMMAC reset signal, if any +- reset-names: Should contain the reset signal name "stmmaceth", if a +	reset phandle is given +- max-frame-size: See ethernet.txt file in the same directory +- clocks: If present, the first clock should be the GMAC main clock, +  further clocks may be specified in derived bindings. +- clock-names: One name for each entry in the clocks property, the +  first one should be "stmmaceth".  Examples: @@ -40,5 +45,8 @@ Examples:  		interrupts = <24 23>;  		interrupt-names = "macirq", "eth_wake_irq";  		mac-address = [000000000000]; /* Filled in by U-Boot */ +		max-frame-size = <3800>;  		phy-mode = "gmii"; +		clocks = <&clock>; +		clock-names = "stmmaceth">;  	}; diff --git a/Documentation/devicetree/bindings/net/via-rhine.txt b/Documentation/devicetree/bindings/net/via-rhine.txt new file mode 100644 index 00000000000..334eca2bf93 --- /dev/null +++ b/Documentation/devicetree/bindings/net/via-rhine.txt @@ -0,0 +1,17 @@ +* VIA Rhine 10/100 Network Controller + +Required properties: +- compatible : Should be "via,vt8500-rhine" for integrated +	Rhine controllers found in VIA VT8500, WonderMedia WM8950 +	and similar. These are listed as 1106:3106 rev. 0x84 on the +	virtual PCI bus under vendor-provided kernels +- reg : Address and length of the io space +- interrupts : Should contain the controller interrupt line + +Examples: + +ethernet@d8004000 { +	compatible = "via,vt8500-rhine"; +	reg = <0xd8004000 0x100>; +	interrupts = <10>; +}; diff --git a/Documentation/devicetree/bindings/net/wireless/ti,wl1251.txt b/Documentation/devicetree/bindings/net/wireless/ti,wl1251.txt new file mode 100644 index 00000000000..189ae5cad8f --- /dev/null +++ b/Documentation/devicetree/bindings/net/wireless/ti,wl1251.txt @@ -0,0 +1,39 @@ +* Texas Instruments wl1251 wireless lan controller + +The wl1251 chip can be connected via SPI or via SDIO. This +document describes the binding for the SPI connected chip. + +Required properties: +- compatible :        Should be "ti,wl1251" +- reg :               Chip select address of device +- spi-max-frequency : Maximum SPI clocking speed of device in Hz +- interrupts :        Should contain interrupt line +- interrupt-parent :  Should be the phandle for the interrupt controller +                      that services interrupts for this device +- vio-supply :        phandle to regulator providing VIO +- ti,power-gpio :     GPIO connected to chip's PMEN pin + +Optional properties: +- ti,wl1251-has-eeprom : boolean, the wl1251 has an eeprom connected, which +                         provides configuration data (calibration, MAC, ...) +- Please consult Documentation/devicetree/bindings/spi/spi-bus.txt +  for optional SPI connection related properties, + +Examples: + +&spi1 { +	wl1251@0 { +		compatible = "ti,wl1251"; + +		reg = <0>; +		spi-max-frequency = <48000000>; +		spi-cpol; +		spi-cpha; + +		interrupt-parent = <&gpio2>; +		interrupts = <10 IRQ_TYPE_NONE>; /* gpio line 42 */ + +		vio-supply = <&vio>; +		ti,power-gpio = <&gpio3 23 GPIO_ACTIVE_HIGH>; /* 87 */ +	}; +}; diff --git a/Documentation/devicetree/bindings/nvec/nvidia,nvec.txt b/Documentation/devicetree/bindings/nvec/nvidia,nvec.txt index 5aeee53ff9f..5ae601e7f51 100644 --- a/Documentation/devicetree/bindings/nvec/nvidia,nvec.txt +++ b/Documentation/devicetree/bindings/nvec/nvidia,nvec.txt @@ -7,3 +7,15 @@ Required properties:  - clock-frequency : the frequency of the i2c bus  - gpios : the gpio used for ec request  - slave-addr: the i2c address of the slave controller +- 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: +  Tegra20/Tegra30: +  - div-clk +  - fast-clk +  Tegra114: +  - div-clk +- resets : Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names : Must include the following entries: +  - i2c diff --git a/Documentation/devicetree/bindings/panel/auo,b101aw03.txt b/Documentation/devicetree/bindings/panel/auo,b101aw03.txt new file mode 100644 index 00000000000..72e088a4fb3 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/auo,b101aw03.txt @@ -0,0 +1,7 @@ +AU Optronics Corporation 10.1" WSVGA TFT LCD panel + +Required properties: +- compatible: should be "auo,b101aw03" + +This binding is compatible with the simple-panel binding, which is specified +in simple-panel.txt in this directory. diff --git a/Documentation/devicetree/bindings/panel/auo,b133xtn01.txt b/Documentation/devicetree/bindings/panel/auo,b133xtn01.txt new file mode 100644 index 00000000000..7443b7c7676 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/auo,b133xtn01.txt @@ -0,0 +1,7 @@ +AU Optronics Corporation 13.3" WXGA (1366x768) TFT LCD panel + +Required properties: +- compatible: should be "auo,b133xtn01" + +This binding is compatible with the simple-panel binding, which is specified +in simple-panel.txt in this directory. diff --git a/Documentation/devicetree/bindings/panel/chunghwa,claa101wa01a.txt b/Documentation/devicetree/bindings/panel/chunghwa,claa101wa01a.txt new file mode 100644 index 00000000000..f24614e4d5e --- /dev/null +++ b/Documentation/devicetree/bindings/panel/chunghwa,claa101wa01a.txt @@ -0,0 +1,7 @@ +Chunghwa Picture Tubes Ltd. 10.1" WXGA TFT LCD panel + +Required properties: +- compatible: should be "chunghwa,claa101wa01a" + +This binding is compatible with the simple-panel binding, which is specified +in simple-panel.txt in this directory. diff --git a/Documentation/devicetree/bindings/panel/chunghwa,claa101wb03.txt b/Documentation/devicetree/bindings/panel/chunghwa,claa101wb03.txt new file mode 100644 index 00000000000..0ab2c05a4c2 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/chunghwa,claa101wb03.txt @@ -0,0 +1,7 @@ +Chunghwa Picture Tubes Ltd. 10.1" WXGA TFT LCD panel + +Required properties: +- compatible: should be "chunghwa,claa101wb03" + +This binding is compatible with the simple-panel binding, which is specified +in simple-panel.txt in this directory. diff --git a/Documentation/devicetree/bindings/panel/edt,et057090dhu.txt b/Documentation/devicetree/bindings/panel/edt,et057090dhu.txt new file mode 100644 index 00000000000..4903d7b1d94 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/edt,et057090dhu.txt @@ -0,0 +1,7 @@ +Emerging Display Technology Corp. 5.7" VGA TFT LCD panel + +Required properties: +- compatible: should be "edt,et057090dhu" + +This binding is compatible with the simple-panel binding, which is specified +in simple-panel.txt in this directory. diff --git a/Documentation/devicetree/bindings/panel/edt,et070080dh6.txt b/Documentation/devicetree/bindings/panel/edt,et070080dh6.txt new file mode 100644 index 00000000000..20cb38e836e --- /dev/null +++ b/Documentation/devicetree/bindings/panel/edt,et070080dh6.txt @@ -0,0 +1,10 @@ +Emerging Display Technology Corp. ET070080DH6 7.0" WVGA TFT LCD panel + +Required properties: +- compatible: should be "edt,et070080dh6" + +This panel is the same as ETM0700G0DH6 except for the touchscreen. +ET070080DH6 is the model with resistive touch. + +This binding is compatible with the simple-panel binding, which is specified +in simple-panel.txt in this directory. diff --git a/Documentation/devicetree/bindings/panel/edt,etm0700g0dh6.txt b/Documentation/devicetree/bindings/panel/edt,etm0700g0dh6.txt new file mode 100644 index 00000000000..ee4b18053e4 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/edt,etm0700g0dh6.txt @@ -0,0 +1,10 @@ +Emerging Display Technology Corp. ETM0700G0DH6 7.0" WVGA TFT LCD panel + +Required properties: +- compatible: should be "edt,etm0700g0dh6" + +This panel is the same as ET070080DH6 except for the touchscreen. +ETM0700G0DH6 is the model with capacitive multitouch. + +This binding is compatible with the simple-panel binding, which is specified +in simple-panel.txt in this directory. diff --git a/Documentation/devicetree/bindings/panel/lg,ld070wx3-sl01.txt b/Documentation/devicetree/bindings/panel/lg,ld070wx3-sl01.txt new file mode 100644 index 00000000000..5e649cb9aa1 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/lg,ld070wx3-sl01.txt @@ -0,0 +1,7 @@ +LG Corporation 7" WXGA TFT LCD panel + +Required properties: +- compatible: should be "lg,ld070wx3-sl01" + +This binding is compatible with the simple-panel binding, which is specified +in simple-panel.txt in this directory. diff --git a/Documentation/devicetree/bindings/panel/lg,lh500wx1-sd03.txt b/Documentation/devicetree/bindings/panel/lg,lh500wx1-sd03.txt new file mode 100644 index 00000000000..a04fd2b2e73 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/lg,lh500wx1-sd03.txt @@ -0,0 +1,7 @@ +LG Corporation 5" HD TFT LCD panel + +Required properties: +- compatible: should be "lg,lh500wx1-sd03" + +This binding is compatible with the simple-panel binding, which is specified +in simple-panel.txt in this directory. diff --git a/Documentation/devicetree/bindings/panel/lg,lp129qe.txt b/Documentation/devicetree/bindings/panel/lg,lp129qe.txt new file mode 100644 index 00000000000..9f262e0c5a2 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/lg,lp129qe.txt @@ -0,0 +1,7 @@ +LG 12.9" (2560x1700 pixels) TFT LCD panel + +Required properties: +- compatible: should be "lg,lp129qe" + +This binding is compatible with the simple-panel binding, which is specified +in simple-panel.txt in this directory. diff --git a/Documentation/devicetree/bindings/panel/panasonic,vvx10f004b00.txt b/Documentation/devicetree/bindings/panel/panasonic,vvx10f004b00.txt new file mode 100644 index 00000000000..d328b0341bf --- /dev/null +++ b/Documentation/devicetree/bindings/panel/panasonic,vvx10f004b00.txt @@ -0,0 +1,7 @@ +Panasonic Corporation 10.1" WUXGA TFT LCD panel + +Required properties: +- compatible: should be "panasonic,vvx10f004b00" + +This binding is compatible with the simple-panel binding, which is specified +in simple-panel.txt in this directory. diff --git a/Documentation/devicetree/bindings/panel/samsung,ld9040.txt b/Documentation/devicetree/bindings/panel/samsung,ld9040.txt new file mode 100644 index 00000000000..07c36c3f7b5 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/samsung,ld9040.txt @@ -0,0 +1,66 @@ +Samsung LD9040 AMOLED LCD parallel RGB panel with SPI control bus + +Required properties: +  - compatible: "samsung,ld9040" +  - reg: address of the panel on SPI bus +  - vdd3-supply: core voltage supply +  - vci-supply: voltage supply for analog circuits +  - reset-gpios: a GPIO spec for the reset pin +  - display-timings: timings for the connected panel according to [1] + +The panel must obey rules for SPI slave device specified in document [2]. + +Optional properties: +  - power-on-delay: delay after turning regulators on [ms] +  - reset-delay: delay after reset sequence [ms] +  - panel-width-mm: physical panel width [mm] +  - panel-height-mm: physical panel height [mm] + +The device node can contain one 'port' child node with one child +'endpoint' node, according to the bindings defined in [3]. This +node should describe panel's video bus. + +[1]: Documentation/devicetree/bindings/video/display-timing.txt +[2]: Documentation/devicetree/bindings/spi/spi-bus.txt +[3]: Documentation/devicetree/bindings/media/video-interfaces.txt + +Example: + +	lcd@0 { +		compatible = "samsung,ld9040"; +		reg = <0>; +		vdd3-supply = <&ldo7_reg>; +		vci-supply = <&ldo17_reg>; +		reset-gpios = <&gpy4 5 0>; +		spi-max-frequency = <1200000>; +		spi-cpol; +		spi-cpha; +		power-on-delay = <10>; +		reset-delay = <10>; +		panel-width-mm = <90>; +		panel-height-mm = <154>; + +		display-timings { +			timing { +				clock-frequency = <23492370>; +				hactive = <480>; +				vactive = <800>; +				hback-porch = <16>; +				hfront-porch = <16>; +				vback-porch = <2>; +				vfront-porch = <28>; +				hsync-len = <2>; +				vsync-len = <1>; +				hsync-active = <0>; +				vsync-active = <0>; +				de-active = <0>; +				pixelclk-active = <0>; +			}; +		}; + +		port { +			lcd_ep: endpoint { +				remote-endpoint = <&fimd_dpi_ep>; +			}; +		}; +	}; diff --git a/Documentation/devicetree/bindings/panel/samsung,ltn101nt05.txt b/Documentation/devicetree/bindings/panel/samsung,ltn101nt05.txt new file mode 100644 index 00000000000..ef522c6bb85 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/samsung,ltn101nt05.txt @@ -0,0 +1,7 @@ +Samsung Electronics 10.1" WSVGA TFT LCD panel + +Required properties: +- compatible: should be "samsung,ltn101nt05" + +This binding is compatible with the simple-panel binding, which is specified +in simple-panel.txt in this directory. diff --git a/Documentation/devicetree/bindings/panel/samsung,s6e8aa0.txt b/Documentation/devicetree/bindings/panel/samsung,s6e8aa0.txt new file mode 100644 index 00000000000..e7ee988e315 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/samsung,s6e8aa0.txt @@ -0,0 +1,56 @@ +Samsung S6E8AA0 AMOLED LCD 5.3 inch panel + +Required properties: +  - compatible: "samsung,s6e8aa0" +  - reg: the virtual channel number of a DSI peripheral +  - vdd3-supply: core voltage supply +  - vci-supply: voltage supply for analog circuits +  - reset-gpios: a GPIO spec for the reset pin +  - display-timings: timings for the connected panel as described by [1] + +Optional properties: +  - power-on-delay: delay after turning regulators on [ms] +  - reset-delay: delay after reset sequence [ms] +  - init-delay: delay after initialization sequence [ms] +  - panel-width-mm: physical panel width [mm] +  - panel-height-mm: physical panel height [mm] +  - flip-horizontal: boolean to flip image horizontally +  - flip-vertical: boolean to flip image vertically + +The device node can contain one 'port' child node with one child +'endpoint' node, according to the bindings defined in [2]. This +node should describe panel's video bus. + +[1]: Documentation/devicetree/bindings/video/display-timing.txt +[2]: Documentation/devicetree/bindings/media/video-interfaces.txt + +Example: + +	panel { +		compatible = "samsung,s6e8aa0"; +		reg = <0>; +		vdd3-supply = <&vcclcd_reg>; +		vci-supply = <&vlcd_reg>; +		reset-gpios = <&gpy4 5 0>; +		power-on-delay= <50>; +		reset-delay = <100>; +		init-delay = <100>; +		panel-width-mm = <58>; +		panel-height-mm = <103>; +		flip-horizontal; +		flip-vertical; + +		display-timings { +			timing0: timing-0 { +				clock-frequency = <57153600>; +				hactive = <720>; +				vactive = <1280>; +				hfront-porch = <5>; +				hback-porch = <5>; +				hsync-len = <5>; +				vfront-porch = <13>; +				vback-porch = <1>; +				vsync-len = <2>; +			}; +		}; +	}; diff --git a/Documentation/devicetree/bindings/panel/simple-panel.txt b/Documentation/devicetree/bindings/panel/simple-panel.txt new file mode 100644 index 00000000000..1341bbf4aa3 --- /dev/null +++ b/Documentation/devicetree/bindings/panel/simple-panel.txt @@ -0,0 +1,21 @@ +Simple display panel + +Required properties: +- power-supply: regulator to provide the supply voltage + +Optional properties: +- ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing +- enable-gpios: GPIO pin to enable or disable the panel +- backlight: phandle of the backlight device attached to the panel + +Example: + +	panel: panel { +		compatible = "cptt,claa101wb01"; +		ddc-i2c-bus = <&panelddc>; + +		power-supply = <&vdd_pnl_reg>; +		enable-gpios = <&gpio 90 0>; + +		backlight = <&backlight>; +	}; diff --git a/Documentation/devicetree/bindings/pci/designware-pcie.txt b/Documentation/devicetree/bindings/pci/designware-pcie.txt index e216af35684..d0d15ee4283 100644 --- a/Documentation/devicetree/bindings/pci/designware-pcie.txt +++ b/Documentation/devicetree/bindings/pci/designware-pcie.txt @@ -1,15 +1,7 @@  * Synopsys Designware PCIe interface  Required properties: -- compatible: should contain "snps,dw-pcie" to identify the -	core, plus an identifier for the specific instance, such -	as "samsung,exynos5440-pcie". -- reg: base addresses and lengths of the pcie controller, -	the phy controller, additional register for the phy controller. -- interrupts: interrupt values for level interrupt, -	pulse interrupt, special interrupt. -- clocks: from common clock binding: handle to pci clock. -- clock-names: from common clock binding: should be "pcie" and "pcie_bus". +- compatible: should contain "snps,dw-pcie" to identify the core.  - #address-cells: set to <3>  - #size-cells: set to <2>  - device_type: set to "pci" @@ -19,58 +11,11 @@ Required properties:  	to define the mapping of the PCIe interface to interrupt  	numbers.  - num-lanes: number of lanes to use -- reset-gpio: gpio pin number of power good signal - -Example: - -SoC specific DT Entry: - -	pcie@290000 { -		compatible = "samsung,exynos5440-pcie", "snps,dw-pcie"; -		reg = <0x290000 0x1000 -			0x270000 0x1000 -			0x271000 0x40>; -		interrupts = <0 20 0>, <0 21 0>, <0 22 0>; -		clocks = <&clock 28>, <&clock 27>; -		clock-names = "pcie", "pcie_bus"; -		#address-cells = <3>; -		#size-cells = <2>; -		device_type = "pci"; -		ranges = <0x00000800 0 0x40000000 0x40000000 0 0x00001000   /* configuration space */ -			  0x81000000 0 0	  0x40001000 0 0x00010000   /* downstream I/O */ -			  0x82000000 0 0x40011000 0x40011000 0 0x1ffef000>; /* non-prefetchable memory */ -		#interrupt-cells = <1>; -		interrupt-map-mask = <0 0 0 0>; -		interrupt-map = <0x0 0 &gic 53>; -		num-lanes = <4>; -	}; +- 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: +	- "pcie" +	- "pcie_bus" -	pcie@2a0000 { -		compatible = "samsung,exynos5440-pcie", "snps,dw-pcie"; -		reg = <0x2a0000 0x1000 -			0x272000 0x1000 -			0x271040 0x40>; -		interrupts = <0 23 0>, <0 24 0>, <0 25 0>; -		clocks = <&clock 29>, <&clock 27>; -		clock-names = "pcie", "pcie_bus"; -		#address-cells = <3>; -		#size-cells = <2>; -		device_type = "pci"; -		ranges = <0x00000800 0 0x60000000 0x60000000 0 0x00001000   /* configuration space */ -			  0x81000000 0 0	  0x60001000 0 0x00010000   /* downstream I/O */ -			  0x82000000 0 0x60011000 0x60011000 0 0x1ffef000>; /* non-prefetchable memory */ -		#interrupt-cells = <1>; -		interrupt-map-mask = <0 0 0 0>; -		interrupt-map = <0x0 0 &gic 56>; -		num-lanes = <4>; -	}; - -Board specific DT Entry: - -	pcie@290000 { -		reset-gpio = <&pin_ctrl 5 0>; -	}; - -	pcie@2a0000 { -		reset-gpio = <&pin_ctrl 22 0>; -	}; +Optional properties: +- reset-gpio: gpio pin number of power good signal diff --git a/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt new file mode 100644 index 00000000000..9455fd0ec83 --- /dev/null +++ b/Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt @@ -0,0 +1,38 @@ +* Freescale i.MX6 PCIe interface + +This PCIe host controller is based on the Synopsis Designware PCIe IP +and thus inherits all the common properties defined in designware-pcie.txt. + +Required properties: +- compatible: "fsl,imx6q-pcie" +- reg: base addresse and length of the pcie controller +- interrupts: A list of interrupt outputs of the controller. Must contain an +  entry for each entry in the interrupt-names property. +- interrupt-names: Must include the following entries: +	- "msi": The interrupt that is asserted when an MSI is received +- clock-names: Must include the following additional entries: +	- "pcie_phy" + +Example: + +	pcie@0x01000000 { +		compatible = "fsl,imx6q-pcie", "snps,dw-pcie"; +		reg = <0x01ffc000 0x4000>; +		#address-cells = <3>; +		#size-cells = <2>; +		device_type = "pci"; +		ranges = <0x00000800 0 0x01f00000 0x01f00000 0 0x00080000 +			  0x81000000 0 0          0x01f80000 0 0x00010000 +			  0x82000000 0 0x01000000 0x01000000 0 0x00f00000>; +		num-lanes = <1>; +		interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; +		interrupt-names = "msi"; +		#interrupt-cells = <1>; +		interrupt-map-mask = <0 0 0 0x7>; +		interrupt-map = <0 0 0 1 &intc GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, +		                <0 0 0 2 &intc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>, +		                <0 0 0 3 &intc GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>, +		                <0 0 0 4 &intc GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&clks 144>, <&clks 206>, <&clks 189>; +		clock-names = "pcie", "pcie_bus", "pcie_phy"; +	}; diff --git a/Documentation/devicetree/bindings/pci/host-generic-pci.txt b/Documentation/devicetree/bindings/pci/host-generic-pci.txt new file mode 100644 index 00000000000..f0b0436807b --- /dev/null +++ b/Documentation/devicetree/bindings/pci/host-generic-pci.txt @@ -0,0 +1,100 @@ +* Generic PCI host controller + +Firmware-initialised PCI host controllers and PCI emulations, such as the +virtio-pci implementations found in kvmtool and other para-virtualised +systems, do not require driver support for complexities such as regulator +and clock management. In fact, the controller may not even require the +configuration of a control interface by the operating system, instead +presenting a set of fixed windows describing a subset of IO, Memory and +Configuration Spaces. + +Such a controller can be described purely in terms of the standardized device +tree bindings communicated in pci.txt: + + +Properties of the host controller node: + +- compatible     : Must be "pci-host-cam-generic" or "pci-host-ecam-generic" +                   depending on the layout of configuration space (CAM vs +                   ECAM respectively). + +- device_type    : Must be "pci". + +- ranges         : As described in IEEE Std 1275-1994, but must provide +                   at least a definition of non-prefetchable memory. One +                   or both of prefetchable Memory and IO Space may also +                   be provided. + +- bus-range      : Optional property (also described in IEEE Std 1275-1994) +                   to indicate the range of bus numbers for this controller. +                   If absent, defaults to <0 255> (i.e. all buses). + +- #address-cells : Must be 3. + +- #size-cells    : Must be 2. + +- reg            : The Configuration Space base address and size, as accessed +                   from the parent bus. + + +Properties of the /chosen node: + +- linux,pci-probe-only +                 : Optional property which takes a single-cell argument. +                   If '0', then Linux will assign devices in its usual manner, +                   otherwise it will not try to assign devices and instead use +                   them as they are configured already. + +Configuration Space is assumed to be memory-mapped (as opposed to being +accessed via an ioport) and laid out with a direct correspondence to the +geography of a PCI bus address by concatenating the various components to +form an offset. + +For CAM, this 24-bit offset is: + +        cfg_offset(bus, device, function, register) = +                   bus << 16 | device << 11 | function << 8 | register + +Whilst ECAM extends this by 4 bits to accomodate 4k of function space: + +        cfg_offset(bus, device, function, register) = +                   bus << 20 | device << 15 | function << 12 | register + +Interrupt mapping is exactly as described in `Open Firmware Recommended +Practice: Interrupt Mapping' and requires the following properties: + +- #interrupt-cells   : Must be 1 + +- interrupt-map      : <see aforementioned specification> + +- interrupt-map-mask : <see aforementioned specification> + + +Example: + +pci { +    compatible = "pci-host-cam-generic" +    device_type = "pci"; +    #address-cells = <3>; +    #size-cells = <2>; +    bus-range = <0x0 0x1>; + +    // CPU_PHYSICAL(2)  SIZE(2) +    reg = <0x0 0x40000000  0x0 0x1000000>; + +    // BUS_ADDRESS(3)  CPU_PHYSICAL(2)  SIZE(2) +    ranges = <0x01000000 0x0 0x01000000  0x0 0x01000000  0x0 0x00010000>, +             <0x02000000 0x0 0x41000000  0x0 0x41000000  0x0 0x3f000000>; + + +    #interrupt-cells = <0x1>; + +    // PCI_DEVICE(3)  INT#(1)  CONTROLLER(PHANDLE)  CONTROLLER_DATA(3) +    interrupt-map = <  0x0 0x0 0x0  0x1  &gic  0x0 0x4 0x1 +                     0x800 0x0 0x0  0x1  &gic  0x0 0x5 0x1 +                    0x1000 0x0 0x0  0x1  &gic  0x0 0x6 0x1 +                    0x1800 0x0 0x0  0x1  &gic  0x0 0x7 0x1>; + +    // PCI_DEVICE(3)  INT#(1) +    interrupt-map-mask = <0xf800 0x0 0x0  0x7>; +} diff --git a/Documentation/devicetree/bindings/pci/mvebu-pci.txt b/Documentation/devicetree/bindings/pci/mvebu-pci.txt index 9556e2fedf6..08c716b2c6b 100644 --- a/Documentation/devicetree/bindings/pci/mvebu-pci.txt +++ b/Documentation/devicetree/bindings/pci/mvebu-pci.txt @@ -5,6 +5,7 @@ Mandatory properties:  - compatible: one of the following values:      marvell,armada-370-pcie      marvell,armada-xp-pcie +    marvell,dove-pcie      marvell,kirkwood-pcie  - #address-cells, set to <3>  - #size-cells, set to <2> @@ -14,6 +15,8 @@ Mandatory properties:  - ranges: ranges describing the MMIO registers to control the PCIe    interfaces, and ranges describing the MBus windows needed to access    the memory and I/O regions of each PCIe interface. +- msi-parent: Link to the hardware entity that serves as the Message +  Signaled Interrupt controller for this PCI controller.  The ranges describing the MMIO registers have the following layout: @@ -74,6 +77,8 @@ and the following optional properties:  - marvell,pcie-lane: the physical PCIe lane number, for ports having    multiple lanes. If this property is not found, we assume that the    value is 0. +- reset-gpios: optional gpio to PERST# +- reset-delay-us: delay in us to wait after reset de-assertion  Example: @@ -86,6 +91,7 @@ pcie-controller {  	#size-cells = <2>;  	bus-range = <0x00 0xff>; +	msi-parent = <&mpic>;  	ranges =  	       <0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000	/* Port 0.0 registers */ @@ -135,6 +141,10 @@ pcie-controller {  		interrupt-map = <0 0 0 0 &mpic 58>;  		marvell,pcie-port = <0>;  		marvell,pcie-lane = <0>; +		/* low-active PERST# reset on GPIO 25 */ +		reset-gpios = <&gpio0 25 1>; +		/* wait 20ms for device settle after reset deassertion */ +		reset-delay-us = <20000>;  		clocks = <&gateclk 5>;  		status = "disabled";  	}; diff --git a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt index 6b7510775c5..c300391e8d3 100644 --- a/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt +++ b/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt @@ -42,14 +42,23 @@ Required properties:      - 0xc2000000: prefetchable memory region    Please refer to the standard PCI bus binding document for a more detailed    explanation. -- clocks: List of clock inputs of the controller. Must contain an entry for -  each entry in the clock-names property. +- #interrupt-cells: Size representation for interrupts (must be 1) +- interrupt-map-mask and interrupt-map: Standard PCI IRQ mapping properties +  Please refer to the standard PCI bus binding document for a more detailed +  explanation. +- 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: -  "pex": The Tegra clock of that name -  "afi": The Tegra clock of that name -  "pcie_xclk": The Tegra clock of that name -  "pll_e": The Tegra clock of that name -  "cml": The Tegra clock of that name (not required for Tegra20) +  - pex +  - afi +  - pll_e +  - cml (not required for Tegra20) +- resets: Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names: Must include the following entries: +  - pex +  - afi +  - pcie_x  Root ports are defined as subnodes of the PCIe controller node. @@ -81,6 +90,10 @@ SoC DTSI:  		              0 99 0x04>; /* MSI interrupt */  		interrupt-names = "intr", "msi"; +		#interrupt-cells = <1>; +		interrupt-map-mask = <0 0 0 0>; +		interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; +  		bus-range = <0x00 0xff>;  		#address-cells = <3>;  		#size-cells = <2>; @@ -91,9 +104,10 @@ SoC DTSI:  			  0x82000000 0 0xa0000000 0xa0000000 0 0x10000000   /* non-prefetchable memory */  			  0xc2000000 0 0xb0000000 0xb0000000 0 0x10000000>; /* prefetchable memory */ -		clocks = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 74>, -			 <&tegra_car 118>; -		clock-names = "pex", "afi", "pcie_xclk", "pll_e"; +		clocks = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 118>; +		clock-names = "pex", "afi", "pll_e"; +		resets = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 74>; +		reset-names = "pex", "afi", "pcie_x";  		status = "disabled";  		pci@1,0 { diff --git a/Documentation/devicetree/bindings/pci/pci-rcar-gen2.txt b/Documentation/devicetree/bindings/pci/pci-rcar-gen2.txt new file mode 100644 index 00000000000..d8ef5bf50f1 --- /dev/null +++ b/Documentation/devicetree/bindings/pci/pci-rcar-gen2.txt @@ -0,0 +1,66 @@ +Renesas AHB to PCI bridge +------------------------- + +This is the bridge used internally to connect the USB controllers to the +AHB. There is one bridge instance per USB port connected to the internal +OHCI and EHCI controllers. + +Required properties: +- compatible: "renesas,pci-r8a7790" for the R8A7790 SoC; +	      "renesas,pci-r8a7791" for the R8A7791 SoC. +- reg:	A list of physical regions to access the device: the first is +	the operational registers for the OHCI/EHCI controllers and the +	second is for the bridge configuration and control registers. +- interrupts: interrupt for the device. +- clocks: The reference to the device clock. +- bus-range: The PCI bus number range; as this is a single bus, the range +	     should be specified as the same value twice. +- #address-cells: must be 3. +- #size-cells: must be 2. +- #interrupt-cells: must be 1. +- interrupt-map: standard property used to define the mapping of the PCI +  interrupts to the GIC interrupts. +- interrupt-map-mask: standard property that helps to define the interrupt +  mapping. + +Example SoC configuration: + +	pci0: pci@ee090000  { +		compatible = "renesas,pci-r8a7790"; +		clocks = <&mstp7_clks R8A7790_CLK_EHCI>; +		reg = <0x0 0xee090000 0x0 0xc00>, +		      <0x0 0xee080000 0x0 0x1100>; +		interrupts = <0 108 IRQ_TYPE_LEVEL_HIGH>; +		status = "disabled"; + +		bus-range = <0 0>; +		#address-cells = <3>; +		#size-cells = <2>; +		#interrupt-cells = <1>; +		interrupt-map-mask = <0xff00 0 0 0x7>; +		interrupt-map = <0x0000 0 0 1 &gic 0 108 IRQ_TYPE_LEVEL_HIGH +				 0x0800 0 0 1 &gic 0 108 IRQ_TYPE_LEVEL_HIGH +				 0x1000 0 0 2 &gic 0 108 IRQ_TYPE_LEVEL_HIGH>; + +		pci@0,1 { +			reg = <0x800 0 0 0 0>; +			device_type = "pci"; +			phys = <&usbphy 0 0>; +			phy-names = "usb"; +		}; + +		pci@0,2 { +			reg = <0x1000 0 0 0 0>; +			device_type = "pci"; +			phys = <&usbphy 0 0>; +			phy-names = "usb"; +		}; +	}; + +Example board setup: + +&pci0 { +	status = "okay"; +	pinctrl-0 = <&usb0_pins>; +	pinctrl-names = "default"; +}; diff --git a/Documentation/devicetree/bindings/pci/rcar-pci.txt b/Documentation/devicetree/bindings/pci/rcar-pci.txt new file mode 100644 index 00000000000..29d3b989d3b --- /dev/null +++ b/Documentation/devicetree/bindings/pci/rcar-pci.txt @@ -0,0 +1,47 @@ +* Renesas RCar PCIe interface + +Required properties: +- compatible: should contain one of the following +	"renesas,pcie-r8a7779", "renesas,pcie-r8a7790", "renesas,pcie-r8a7791" +- reg: base address and length of the pcie controller registers. +- #address-cells: set to <3> +- #size-cells: set to <2> +- bus-range: PCI bus numbers covered +- device_type: set to "pci" +- ranges: ranges for the PCI memory and I/O regions. +- dma-ranges: ranges for the inbound memory regions. +- interrupts: two interrupt sources for MSI interrupts, followed by interrupt +	source for hardware related interrupts (e.g. link speed change). +- #interrupt-cells: set to <1> +- interrupt-map-mask and interrupt-map: standard PCI properties +	to define the mapping of the PCIe interface to interrupt +	numbers. +- clocks: from common clock binding: clock specifiers for the PCIe controller +	and PCIe bus clocks. +- clock-names: from common clock binding: should be "pcie" and "pcie_bus". + +Example: + +SoC specific DT Entry: + +	pcie: pcie@fe000000 { +		compatible = "renesas,pcie-r8a7791"; +		reg = <0 0xfe000000 0 0x80000>; +		#address-cells = <3>; +		#size-cells = <2>; +		bus-range = <0x00 0xff>; +		device_type = "pci"; +		ranges = <0x01000000 0 0x00000000 0 0xfe100000 0 0x00100000 +			  0x02000000 0 0xfe200000 0 0xfe200000 0 0x00200000 +			  0x02000000 0 0x30000000 0 0x30000000 0 0x08000000 +			  0x42000000 0 0x38000000 0 0x38000000 0 0x08000000>; +		dma-ranges = <0x42000000 0 0x40000000 0 0x40000000 0 0x40000000 +			      0x42000000 2 0x00000000 2 0x00000000 0 0x40000000>; +		interrupts = <0 116 4>, <0 117 4>, <0 118 4>; +		#interrupt-cells = <1>; +		interrupt-map-mask = <0 0 0 0>; +		interrupt-map = <0 0 0 0 &gic 0 116 4>; +		clocks = <&mstp3_clks R8A7791_CLK_PCIE>, <&pcie_bus_clk>; +		clock-names = "pcie", "pcie_bus"; +		status = "disabled"; +	}; diff --git a/Documentation/devicetree/bindings/pci/samsung,exynos5440-pcie.txt b/Documentation/devicetree/bindings/pci/samsung,exynos5440-pcie.txt new file mode 100644 index 00000000000..4f9d23d2ed6 --- /dev/null +++ b/Documentation/devicetree/bindings/pci/samsung,exynos5440-pcie.txt @@ -0,0 +1,65 @@ +* Samsung Exynos 5440 PCIe interface + +This PCIe host controller is based on the Synopsis Designware PCIe IP +and thus inherits all the common properties defined in designware-pcie.txt. + +Required properties: +- compatible: "samsung,exynos5440-pcie" +- reg: base addresses and lengths of the pcie controller, +	the phy controller, additional register for the phy controller. +- interrupts: A list of interrupt outputs for level interrupt, +	pulse interrupt, special interrupt. + +Example: + +SoC specific DT Entry: + +	pcie@290000 { +		compatible = "samsung,exynos5440-pcie", "snps,dw-pcie"; +		reg = <0x290000 0x1000 +			0x270000 0x1000 +			0x271000 0x40>; +		interrupts = <0 20 0>, <0 21 0>, <0 22 0>; +		clocks = <&clock 28>, <&clock 27>; +		clock-names = "pcie", "pcie_bus"; +		#address-cells = <3>; +		#size-cells = <2>; +		device_type = "pci"; +		ranges = <0x00000800 0 0x40000000 0x40000000 0 0x00001000   /* configuration space */ +			  0x81000000 0 0	  0x40001000 0 0x00010000   /* downstream I/O */ +			  0x82000000 0 0x40011000 0x40011000 0 0x1ffef000>; /* non-prefetchable memory */ +		#interrupt-cells = <1>; +		interrupt-map-mask = <0 0 0 0>; +		interrupt-map = <0 0 0 0 &gic GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; +		num-lanes = <4>; +	}; + +	pcie@2a0000 { +		compatible = "samsung,exynos5440-pcie", "snps,dw-pcie"; +		reg = <0x2a0000 0x1000 +			0x272000 0x1000 +			0x271040 0x40>; +		interrupts = <0 23 0>, <0 24 0>, <0 25 0>; +		clocks = <&clock 29>, <&clock 27>; +		clock-names = "pcie", "pcie_bus"; +		#address-cells = <3>; +		#size-cells = <2>; +		device_type = "pci"; +		ranges = <0x00000800 0 0x60000000 0x60000000 0 0x00001000   /* configuration space */ +			  0x81000000 0 0	  0x60001000 0 0x00010000   /* downstream I/O */ +			  0x82000000 0 0x60011000 0x60011000 0 0x1ffef000>; /* non-prefetchable memory */ +		#interrupt-cells = <1>; +		interrupt-map-mask = <0 0 0 0>; +		interrupt-map = <0 0 0 0 &gic GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>; +		num-lanes = <4>; +	}; + +Board specific DT Entry: + +	pcie@290000 { +		reset-gpio = <&pin_ctrl 5 0>; +	}; + +	pcie@2a0000 { +		reset-gpio = <&pin_ctrl 22 0>; +	}; diff --git a/Documentation/devicetree/bindings/phy/apm-xgene-phy.txt b/Documentation/devicetree/bindings/phy/apm-xgene-phy.txt new file mode 100644 index 00000000000..5f3a65a9dd8 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/apm-xgene-phy.txt @@ -0,0 +1,79 @@ +* APM X-Gene 15Gbps Multi-purpose PHY nodes + +PHY nodes are defined to describe on-chip 15Gbps Multi-purpose PHY. Each +PHY (pair of lanes) has its own node. + +Required properties: +- compatible		: Shall be "apm,xgene-phy". +- reg			: PHY memory resource is the SDS PHY access resource. +- #phy-cells		: Shall be 1 as it expects one argument for setting +			  the mode of the PHY. Possible values are 0 (SATA), +			  1 (SGMII), 2 (PCIe), 3 (USB), and 4 (XFI). + +Optional properties: +- status		: Shall be "ok" if enabled or "disabled" if disabled. +			  Default is "ok". +- clocks		: Reference to the clock entry. +- apm,tx-eye-tuning	: Manual control to fine tune the capture of the serial +			  bit lines from the automatic calibrated position. +			  Two set of 3-tuple setting for each (up to 3) +			  supported link speed on the host. Range from 0 to +			  127 in unit of one bit period. Default is 10. +- apm,tx-eye-direction	: Eye tuning manual control direction. 0 means sample +			  data earlier than the nominal sampling point. 1 means +			  sample data later than the nominal sampling point. +			  Two set of 3-tuple setting for each (up to 3) +			  supported link speed on the host. Default is 0. +- apm,tx-boost-gain	: Frequency boost AC (LSB 3-bit) and DC (2-bit) +			  gain control. Two set of 3-tuple setting for each +			  (up to 3) supported link speed on the host. Range is +			  between 0 to 31 in unit of dB. Default is 3. +- apm,tx-amplitude	: Amplitude control. Two set of 3-tuple setting for +			  each (up to 3) supported link speed on the host. +			  Range is between 0 to 199500 in unit of uV. +			  Default is 199500 uV. +- apm,tx-pre-cursor1	: 1st pre-cursor emphasis taps control. Two set of +			  3-tuple setting for each (up to 3) supported link +			  speed on the host. Range is 0 to 273000 in unit of +			  uV. Default is 0. +- apm,tx-pre-cursor2	: 2st pre-cursor emphasis taps control. Two set of +			  3-tuple setting for each (up to 3) supported link +			  speed on the host. Range is 0 to 127400 in unit uV. +			  Default is 0x0. +- apm,tx-post-cursor	: Post-cursor emphasis taps control. Two set of +			  3-tuple setting for Gen1, Gen2, and Gen3. Range is +			  between 0 to 0x1f in unit of 18.2mV. Default is 0xf. +- apm,tx-speed		: Tx operating speed. One set of 3-tuple for each +			  supported link speed on the host. +			   0 = 1-2Gbps +			   1 = 2-4Gbps (1st tuple default) +			   2 = 4-8Gbps +			   3 = 8-15Gbps (2nd tuple default) +			   4 = 2.5-4Gbps +			   5 = 4-5Gbps +			   6 = 5-6Gbps +			   7 = 6-16Gbps (3rd tuple default) + +NOTE: PHY override parameters are board specific setting. + +Example: +		phy1: phy@1f21a000 { +			compatible = "apm,xgene-phy"; +			reg = <0x0 0x1f21a000 0x0 0x100>; +			#phy-cells = <1>; +			status = "disabled"; +		}; + +		phy2: phy@1f22a000 { +			compatible = "apm,xgene-phy"; +			reg = <0x0 0x1f22a000 0x0 0x100>; +			#phy-cells = <1>; +			status = "ok"; +		}; + +		phy3: phy@1f23a000 { +			compatible = "apm,xgene-phy"; +			reg = <0x0 0x1f23a000 0x0 0x100>; +			#phy-cells = <1>; +			status = "ok"; +		}; diff --git a/Documentation/devicetree/bindings/phy/bcm-phy.txt b/Documentation/devicetree/bindings/phy/bcm-phy.txt new file mode 100644 index 00000000000..3dc8b3d2ffb --- /dev/null +++ b/Documentation/devicetree/bindings/phy/bcm-phy.txt @@ -0,0 +1,15 @@ +BROADCOM KONA USB2 PHY + +Required properties: + - compatible: brcm,kona-usb2-phy + - reg: offset and length of the PHY registers + - #phy-cells: must be 0 +Refer to phy/phy-bindings.txt for the generic PHY binding properties + +Example: + +	usbphy: usb-phy@3f130000 { +		compatible = "brcm,kona-usb2-phy"; +		reg = <0x3f130000 0x28>; +		#phy-cells = <0>; +	}; diff --git a/Documentation/devicetree/bindings/phy/phy-bindings.txt b/Documentation/devicetree/bindings/phy/phy-bindings.txt new file mode 100644 index 00000000000..8ae844fc0c6 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/phy-bindings.txt @@ -0,0 +1,66 @@ +This document explains only the device tree data binding. For general +information about PHY subsystem refer to Documentation/phy.txt + +PHY device node +=============== + +Required Properties: +#phy-cells:	Number of cells in a PHY specifier;  The meaning of all those +		cells is defined by the binding for the phy node. The PHY +		provider can use the values in cells to find the appropriate +		PHY. + +For example: + +phys: phy { +    compatible = "xxx"; +    reg = <...>; +    . +    . +    #phy-cells = <1>; +    . +    . +}; + +That node describes an IP block (PHY provider) that implements 2 different PHYs. +In order to differentiate between these 2 PHYs, an additonal specifier should be +given while trying to get a reference to it. + +PHY user node +============= + +Required Properties: +phys : the phandle for the PHY device (used by the PHY subsystem) +phy-names : the names of the PHY corresponding to the PHYs present in the +	    *phys* phandle + +Example 1: +usb1: usb_otg_ss@xxx { +    compatible = "xxx"; +    reg = <xxx>; +    . +    . +    phys = <&usb2_phy>, <&usb3_phy>; +    phy-names = "usb2phy", "usb3phy"; +    . +    . +}; + +This node represents a controller that uses two PHYs, one for usb2 and one for +usb3. + +Example 2: +usb2: usb_otg_ss@xxx { +    compatible = "xxx"; +    reg = <xxx>; +    . +    . +    phys = <&phys 1>; +    phy-names = "usbphy"; +    . +    . +}; + +This node represents a controller that uses one of the PHYs of the PHY provider +device defined previously. Note that the phy handle has an additional specifier +"1" to differentiate between the two PHYs. diff --git a/Documentation/devicetree/bindings/phy/samsung-phy.txt b/Documentation/devicetree/bindings/phy/samsung-phy.txt new file mode 100644 index 00000000000..2049261d8c3 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/samsung-phy.txt @@ -0,0 +1,163 @@ +Samsung S5P/EXYNOS SoC series MIPI CSIS/DSIM DPHY +------------------------------------------------- + +Required properties: +- compatible : should be "samsung,s5pv210-mipi-video-phy"; +- reg : offset and length of the MIPI DPHY register set; +- #phy-cells : from the generic phy bindings, must be 1; + +For "samsung,s5pv210-mipi-video-phy" compatible PHYs the second cell in +the PHY specifier identifies the PHY and its meaning is as follows: +  0 - MIPI CSIS 0, +  1 - MIPI DSIM 0, +  2 - MIPI CSIS 1, +  3 - MIPI DSIM 1. + +Samsung EXYNOS SoC series Display Port PHY +------------------------------------------------- + +Required properties: +- compatible : should be "samsung,exynos5250-dp-video-phy"; +- reg : offset and length of the Display Port PHY register set; +- #phy-cells : from the generic PHY bindings, must be 0; + +Samsung S5P/EXYNOS SoC series USB PHY +------------------------------------------------- + +Required properties: +- compatible : should be one of the listed compatibles: +	- "samsung,exynos4210-usb2-phy" +	- "samsung,exynos4x12-usb2-phy" +	- "samsung,exynos5250-usb2-phy" +- reg : a list of registers used by phy driver +	- first and obligatory is the location of phy modules registers +- samsung,sysreg-phandle - handle to syscon used to control the system registers +- samsung,pmureg-phandle - handle to syscon used to control PMU registers +- #phy-cells : from the generic phy bindings, must be 1; +- clocks and clock-names: +	- the "phy" clock is required by the phy module, used as a gate +	- the "ref" clock is used to get the rate of the clock provided to the +	  PHY module + +The first phandle argument in the PHY specifier identifies the PHY, its +meaning is compatible dependent. For the currently supported SoCs (Exynos 4210 +and Exynos 4212) it is as follows: +  0 - USB device ("device"), +  1 - USB host ("host"), +  2 - HSIC0 ("hsic0"), +  3 - HSIC1 ("hsic1"), + +Exynos 4210 and Exynos 4212 use mode switching and require that mode switch +register is supplied. + +Example: + +For Exynos 4412 (compatible with Exynos 4212): + +usbphy: phy@125b0000 { +	compatible = "samsung,exynos4x12-usb2-phy"; +	reg = <0x125b0000 0x100>; +	clocks = <&clock 305>, <&clock 2>; +	clock-names = "phy", "ref"; +	status = "okay"; +	#phy-cells = <1>; +	samsung,sysreg-phandle = <&sys_reg>; +	samsung,pmureg-phandle = <&pmu_reg>; +}; + +Then the PHY can be used in other nodes such as: + +phy-consumer@12340000 { +	phys = <&usbphy 2>; +	phy-names = "phy"; +}; + +Refer to DT bindings documentation of particular PHY consumer devices for more +information about required PHYs and the way of specification. + +Samsung SATA PHY Controller +--------------------------- + +SATA PHY nodes are defined to describe on-chip SATA Physical layer controllers. +Each SATA PHY controller should have its own node. + +Required properties: +- compatible        : compatible list, contains "samsung,exynos5250-sata-phy" +- reg : offset and length of the SATA PHY register set; +- #phy-cells : must be zero +- clocks : must be exactly one entry +- clock-names : must be "sata_phyctrl" +- samsung,exynos-sataphy-i2c-phandle : a phandle to the I2C device, no arguments +- samsung,syscon-phandle : a phandle to the PMU system controller, no arguments + +Example: +	sata_phy: sata-phy@12170000 { +		compatible = "samsung,exynos5250-sata-phy"; +		reg = <0x12170000 0x1ff>; +		clocks = <&clock 287>; +		clock-names = "sata_phyctrl"; +		#phy-cells = <0>; +		samsung,exynos-sataphy-i2c-phandle = <&sata_phy_i2c>; +		samsung,syscon-phandle = <&pmu_syscon>; +	}; + +Device-Tree bindings for sataphy i2c client driver +-------------------------------------------------- + +Required properties: +compatible: Should be "samsung,exynos-sataphy-i2c" +- reg: I2C address of the sataphy i2c device. + +Example: + +	sata_phy_i2c:sata-phy@38 { +		compatible = "samsung,exynos-sataphy-i2c"; +		reg = <0x38>; +	}; + +Samsung Exynos5 SoC series USB DRD PHY controller +-------------------------------------------------- + +Required properties: +- compatible : Should be set to one of the following supported values: +	- "samsung,exynos5250-usbdrd-phy" - for exynos5250 SoC, +	- "samsung,exynos5420-usbdrd-phy" - for exynos5420 SoC. +- reg : Register offset and length of USB DRD PHY register set; +- clocks: Clock IDs array as required by the controller +- clock-names: names of clocks correseponding to IDs in the clock property; +	       Required clocks: +	- phy: main PHY clock (same as USB DRD controller i.e. DWC3 IP clock), +	       used for register access. +	- ref: PHY's reference clock (usually crystal clock), used for +	       PHY operations, associated by phy name. It is used to +	       determine bit values for clock settings register. +	       For Exynos5420 this is given as 'sclk_usbphy30' in CMU. +- samsung,pmu-syscon: phandle for PMU system controller interface, used to +		      control pmu registers for power isolation. +- #phy-cells : from the generic PHY bindings, must be 1; + +For "samsung,exynos5250-usbdrd-phy" and "samsung,exynos5420-usbdrd-phy" +compatible PHYs, the second cell in the PHY specifier identifies the +PHY id, which is interpreted as follows: +  0 - UTMI+ type phy, +  1 - PIPE3 type phy, + +Example: +	usbdrd_phy: usbphy@12100000 { +		compatible = "samsung,exynos5250-usbdrd-phy"; +		reg = <0x12100000 0x100>; +		clocks = <&clock 286>, <&clock 1>; +		clock-names = "phy", "ref"; +		samsung,pmu-syscon = <&pmu_system_controller>; +		#phy-cells = <1>; +	}; + +- aliases: For SoCs like Exynos5420 having multiple USB 3.0 DRD PHY controllers, +	   'usbdrd_phy' nodes should have numbered alias in the aliases node, +	   in the form of usbdrdphyN, N = 0, 1... (depending on number of +	   controllers). +Example: +	aliases { +		usbdrdphy0 = &usb3_phy0; +		usbdrdphy1 = &usb3_phy1; +	}; diff --git a/Documentation/devicetree/bindings/phy/sun4i-usb-phy.txt b/Documentation/devicetree/bindings/phy/sun4i-usb-phy.txt new file mode 100644 index 00000000000..16528b9eb56 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/sun4i-usb-phy.txt @@ -0,0 +1,37 @@ +Allwinner sun4i USB PHY +----------------------- + +Required properties: +- compatible : should be one of +  * allwinner,sun4i-a10-usb-phy +  * allwinner,sun5i-a13-usb-phy +  * allwinner,sun6i-a31-usb-phy +  * allwinner,sun7i-a20-usb-phy +- reg : a list of offset + length pairs +- reg-names : +  * "phy_ctrl" +  * "pmu1" +  * "pmu2" for sun4i, sun6i or sun7i +- #phy-cells : from the generic phy bindings, must be 1 +- clocks : phandle + clock specifier for the phy clocks +- clock-names : +  * "usb_phy" for sun4i, sun5i or sun7i +  * "usb0_phy", "usb1_phy" and "usb2_phy" for sun6i +- resets : a list of phandle + reset specifier pairs +- reset-names : +  * "usb0_reset" +  * "usb1_reset" +  * "usb2_reset" for sun4i, sun6i or sun7i + +Example: +	usbphy: phy@0x01c13400 { +		#phy-cells = <1>; +		compatible = "allwinner,sun4i-a10-usb-phy"; +		/* phy base regs, phy1 pmu reg, phy2 pmu reg */ +		reg = <0x01c13400 0x10 0x01c14800 0x4 0x01c1c800 0x4>; +		reg-names = "phy_ctrl", "pmu1", "pmu2"; +		clocks = <&usb_clk 8>; +		clock-names = "usb_phy"; +		resets = <&usb_clk 1>, <&usb_clk 2>; +		reset-names = "usb1_reset", "usb2_reset"; +	}; diff --git a/Documentation/devicetree/bindings/phy/ti-phy.txt b/Documentation/devicetree/bindings/phy/ti-phy.txt new file mode 100644 index 00000000000..9ce458f3294 --- /dev/null +++ b/Documentation/devicetree/bindings/phy/ti-phy.txt @@ -0,0 +1,93 @@ +TI PHY: DT DOCUMENTATION FOR PHYs in TI PLATFORMs + +OMAP CONTROL PHY + +Required properties: + - compatible: Should be one of + "ti,control-phy-otghs" - if it has otghs_control mailbox register as on OMAP4. + "ti,control-phy-usb2" - if it has Power down bit in control_dev_conf register +                        e.g. USB2_PHY on OMAP5. + "ti,control-phy-pipe3" - if it has DPLL and individual Rx & Tx power control +                        e.g. USB3 PHY and SATA PHY on OMAP5. + "ti,control-phy-usb2-dra7" - if it has power down register like USB2 PHY on +                        DRA7 platform. + "ti,control-phy-usb2-am437" - if it has power down register like USB2 PHY on +                        AM437 platform. + - reg : Address and length of the register set for the device. It contains +   the address of "otghs_control" for control-phy-otghs or "power" register +   for other types. + - reg-names: should be "otghs_control" control-phy-otghs and "power" for +   other types. + +omap_control_usb: omap-control-usb@4a002300 { +        compatible = "ti,control-phy-otghs"; +        reg = <0x4a00233c 0x4>; +        reg-names = "otghs_control"; +}; + +OMAP USB2 PHY + +Required properties: + - compatible: Should be "ti,omap-usb2" + - reg : Address and length of the register set for the device. + - #phy-cells: determine the number of cells that should be given in the +   phandle while referencing this phy. + - clocks: a list of phandles and clock-specifier pairs, one for each entry in +   clock-names. + - clock-names: should include: +   * "wkupclk" - wakeup clock. +   * "refclk" - reference clock (optional). + +Optional properties: + - ctrl-module : phandle of the control module used by PHY driver to power on +   the PHY. + +This is usually a subnode of ocp2scp to which it is connected. + +usb2phy@4a0ad080 { +	compatible = "ti,omap-usb2"; +	reg = <0x4a0ad080 0x58>; +	ctrl-module = <&omap_control_usb>; +	#phy-cells = <0>; +	clocks = <&usb_phy_cm_clk32k>, <&usb_otg_ss_refclk960m>; +	clock-names = "wkupclk", "refclk"; +}; + +TI PIPE3 PHY + +Required properties: + - compatible: Should be "ti,phy-usb3" or "ti,phy-pipe3-sata". +   "ti,omap-usb3" is deprecated. + - reg : Address and length of the register set for the device. + - reg-names: The names of the register addresses corresponding to the registers +   filled in "reg". + - #phy-cells: determine the number of cells that should be given in the +   phandle while referencing this phy. + - clocks: a list of phandles and clock-specifier pairs, one for each entry in +   clock-names. + - clock-names: should include: +   * "wkupclk" - wakeup clock. +   * "sysclk" - system clock. +   * "refclk" - reference clock. + +Optional properties: + - ctrl-module : phandle of the control module used by PHY driver to power on +   the PHY. + +This is usually a subnode of ocp2scp to which it is connected. + +usb3phy@4a084400 { +	compatible = "ti,phy-usb3"; +	reg = <0x4a084400 0x80>, +	      <0x4a084800 0x64>, +	      <0x4a084c00 0x40>; +	reg-names = "phy_rx", "phy_tx", "pll_ctrl"; +	ctrl-module = <&omap_control_usb>; +	#phy-cells = <0>; +	clocks = <&usb_phy_cm_clk32k>, +		 <&sys_clkin>, +		 <&usb_otg_ss_refclk960m>; +	clock-names =	"wkupclk", +			"sysclk", +			"refclk"; +}; diff --git a/Documentation/devicetree/bindings/pinctrl/abilis,tb10x-iomux.txt b/Documentation/devicetree/bindings/pinctrl/abilis,tb10x-iomux.txt new file mode 100644 index 00000000000..2c11866221c --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/abilis,tb10x-iomux.txt @@ -0,0 +1,80 @@ +Abilis Systems TB10x pin controller +=================================== + +Required properties +------------------- + +- compatible: should be "abilis,tb10x-iomux"; +- reg: should contain the physical address and size of the pin controller's +  register range. + + +Function definitions +-------------------- + +Functions are defined (and referenced) by sub-nodes of the pin controller. +Every sub-node defines exactly one function (implying a set of pins). +Every function is associated to one named pin group inside the pin controller +driver and these names are used to associate pin group predefinitions to pin +controller sub-nodes. + +Required function definition subnode properties: +  - abilis,function: should be set to the name of the function's pin group. + +The following pin groups are available: +  - GPIO ports: gpioa, gpiob, gpioc, gpiod, gpioe, gpiof, gpiog, +                gpioh, gpioi, gpioj, gpiok, gpiol, gpiom, gpion +  - Serial TS input ports: mis0, mis1, mis2, mis3, mis4, mis5, mis6, mis7 +  - Parallel TS input ports: mip1, mip3, mip5, mip7 +  - Serial TS output ports: mos0, mos1, mos2, mos3 +  - Parallel TS output port: mop +  - CI+ port: ciplus +  - CableCard (Mcard) port: mcard +  - Smart card ports: stc0, stc1 +  - UART ports: uart0, uart1 +  - SPI ports: spi1, spi3 +  - JTAG: jtag + +All other ports of the chip are not multiplexed and thus not managed by this +driver. + + +GPIO ranges definition +---------------------- + +The named pin groups of GPIO ports can be used to define GPIO ranges as +explained in Documentation/devicetree/bindings/gpio/gpio.txt. + + +Example +------- + +iomux: iomux@FF10601c { +	compatible = "abilis,tb10x-iomux"; +	reg = <0xFF10601c 0x4>; +	pctl_gpio_a: pctl-gpio-a { +		abilis,function = "gpioa"; +	}; +	pctl_uart0: pctl-uart0 { +		abilis,function = "uart0"; +	}; +}; +uart@FF100000 { +	compatible = "snps,dw-apb-uart"; +	reg = <0xFF100000 0x100>; +	clock-frequency = <166666666>; +	interrupts = <25 1>; +	reg-shift = <2>; +	reg-io-width = <4>; +	pinctrl-names = "default"; +	pinctrl-0 = <&pctl_uart0>; +}; +gpioa: gpio@FF140000 { +	compatible = "abilis,tb10x-gpio"; +	reg = <0xFF140000 0x1000>; +	gpio-controller; +	#gpio-cells = <2>; +	ngpio = <3>; +	gpio-ranges = <&iomux 0 0>; +	gpio-ranges-group-names = "gpioa"; +}; diff --git a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt index dff0e5f995e..d8d065608ec 100644 --- a/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt @@ -6,8 +6,13 @@ the first two functions being GPIO in and out. The configuration on  the pins includes drive strength and pull-up.  Required properties: -- compatible: "allwinner,<soc>-pinctrl". Supported SoCs for now are: -  sun5i-a13. +- compatible: Should be one of the followings (depending on you SoC): +  "allwinner,sun4i-a10-pinctrl" +  "allwinner,sun5i-a10s-pinctrl" +  "allwinner,sun5i-a13-pinctrl" +  "allwinner,sun6i-a31-pinctrl" +  "allwinner,sun6i-a31-r-pinctrl" +  "allwinner,sun7i-a20-pinctrl"  - reg: Should contain the register physical address and length for the    pin controller. diff --git a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt index 7ccae490ff6..02ab5ab198a 100644 --- a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pinctrl.txt @@ -18,7 +18,7 @@ mode) this pin can work on and the 'config' configures various pad settings  such as pull-up, multi drive, etc.  Required properties for iomux controller: -- compatible: "atmel,at91rm9200-pinctrl" +- compatible: "atmel,at91rm9200-pinctrl" or "atmel,at91sam9x5-pinctrl"  - atmel,mux-mask: array of mask (periph per bank) to describe if a pin can be    configured in this periph mode. All the periph and bank need to be describe. diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,bcm11351-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/brcm,bcm11351-pinctrl.txt new file mode 100644 index 00000000000..4eaae32821a --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/brcm,bcm11351-pinctrl.txt @@ -0,0 +1,461 @@ +Broadcom BCM281xx Pin Controller + +This is a pin controller for the Broadcom BCM281xx SoC family, which includes +BCM11130, BCM11140, BCM11351, BCM28145, and BCM28155 SoCs. + +=== Pin Controller Node === + +Required Properties: + +- compatible:	Must be "brcm,bcm11351-pinctrl" +- reg:		Base address of the PAD Controller register block and the size +		of the block. + +For example, the following is the bare minimum node: + +	pinctrl@35004800 { +		compatible = "brcm,bcm11351-pinctrl"; +		reg = <0x35004800 0x430>; +	}; + +As a pin controller device, in addition to the required properties, this node +should also contain the pin configuration nodes that client devices reference, +if any. + +=== Pin Configuration Node === + +Each pin configuration node is a sub-node of the pin controller node and is a +container of an arbitrary number of subnodes, called pin group nodes in this +document. + +Please refer to the pinctrl-bindings.txt in this directory for details of the +common pinctrl bindings used by client devices, including the definition of a +"pin configuration node". + +=== Pin Group Node === + +A pin group node specifies the desired pin mux and/or pin configuration for an +arbitrary number of pins.  The name of the pin group node is optional and not +used. + +A pin group node only affects the properties specified in the node, and has no +effect on any properties that are omitted. + +The pin group node accepts a subset of the generic pin config properties. For +details generic pin config properties, please refer to pinctrl-bindings.txt +and <include/linux/pinctrl/pinconfig-generic.h>. + +Each pin controlled by this pin controller belong to one of three types: +Standard, I2C, and HDMI.  Each type accepts a different set of pin config +properties.  A list of pins and their types is provided below. + +Required Properties (applicable to all pins): + +- pins:		Multiple strings.  Specifies the name(s) of one or more pins to +		be configured by this node. + +Optional Properties (for standard pins): + +- function:			String. Specifies the pin mux selection. Values +				must be one of: "alt1", "alt2", "alt3", "alt4" +- input-schmitt-enable:		No arguments. Enable schmitt-trigger mode. +- input-schmitt-disable:	No arguments. Disable schmitt-trigger mode. +- bias-pull-up:			No arguments. Pull up on pin. +- bias-pull-down:		No arguments. Pull down on pin. +- bias-disable:			No arguments. Disable pin bias. +- slew-rate:			Integer. Meaning depends on configured pin mux: +				*_SCL or *_SDA: +					0: Standard(100kbps)& Fast(400kbps) mode +					1: Highspeed (3.4Mbps) mode +				IC_DM or IC_DP: +					0: normal slew rate +					1: fast slew rate +				Otherwise: +					0: fast slew rate +					1: normal slew rate +- input-enable:			No arguments. Enable input (does not affect +				output.) +- input-disable:		No arguments. Disable input (does not affect +				output.) +- drive-strength:		Integer. Drive strength in mA.  Valid values are +				2, 4, 6, 8, 10, 12, 14, 16 mA. + +Optional Properties (for I2C pins): + +- function:			String. Specifies the pin mux selection. Values +				must be one of: "alt1", "alt2", "alt3", "alt4" +- bias-pull-up:			Integer. Pull up strength in Ohm. There are 3 +				pull-up resisitors (1.2k, 1.8k, 2.7k) available +				in parallel for I2C pins, so the valid values +				are: 568, 720, 831, 1080, 1200, 1800, 2700 Ohm. +- bias-disable:			No arguments. Disable pin bias. +- slew-rate:			Integer. Meaning depends on configured pin mux: +				*_SCL or *_SDA: +					0: Standard(100kbps)& Fast(400kbps) mode +					1: Highspeed (3.4Mbps) mode +				IC_DM or IC_DP: +					0: normal slew rate +					1: fast slew rate +				Otherwise: +					0: fast slew rate +					1: normal slew rate +- input-enable:			No arguments. Enable input (does not affect +				output.) +- input-disable:		No arguments. Disable input (does not affect +				output.) + +Optional Properties (for HDMI pins): + +- function:			String. Specifies the pin mux selection. Values +				must be one of: "alt1", "alt2", "alt3", "alt4" +- slew-rate:			Integer. Controls slew rate. +					0: Standard(100kbps)& Fast(400kbps) mode +					1: Highspeed (3.4Mbps) mode +- input-enable:			No arguments. Enable input (does not affect +				output.) +- input-disable:		No arguments. Disable input (does not affect +				output.) + +Example: +// pin controller node +pinctrl@35004800 { +	compatible = "brcm,bcm11351-pinctrl"; +	reg = <0x35004800 0x430>; + +	// pin configuration node +	dev_a_default: dev_a_active { +		//group node defining 1 standard pin +		grp_1 { +			pins		= "std_pin1"; +			function	= "alt1"; +			input-schmitt-enable; +			bias-disable; +			slew-rate	= <1>; +			drive-strength	= <4>; +		}; + +		// group node defining 2 I2C pins +		grp_2 { +			pins		= "i2c_pin1", "i2c_pin2"; +			function	= "alt2"; +			bias-pull-up	= <720>; +			input-enable; +		}; + +		// group node defining 2 HDMI pins +		grp_3 { +			pins		= "hdmi_pin1", "hdmi_pin2"; +			function	= "alt3"; +			slew-rate	= <1>; +		}; + +		// other pin group nodes +		... +	}; + +	// other pin configuration nodes +	... +}; + +In the example above, "dev_a_active" is a pin configuration node with a number +of sub-nodes.  In the pin group node "grp_1", one pin, "std_pin1", is defined in +the "pins" property.  Thus, the remaining properties in the "grp_1" node applies +only to this pin, including the following settings: + - setting pinmux to "alt1" + - enabling schmitt-trigger (hystersis) mode + - disabling pin bias + - setting the slew-rate to 1 + - setting the drive strength to 4 mA +Note that neither "input-enable" nor "input-disable" was specified - the pinctrl +subsystem will therefore leave this property unchanged from whatever state it +was in before applying these changes. + +The "pins" property in the pin group node "grp_2" specifies two pins - +"i2c_pin1" and "i2c_pin2"; the remaining properties in this pin group node, +therefore, applies to both of these pins.  The properties include: + - setting pinmux to "alt2" + - setting pull-up resistance to 720 Ohm (ie. enabling 1.2k and 1.8k resistors +   in parallel) + - enabling both pins' input +"slew-rate" is not specified in this pin group node, so the slew-rate for these +pins are left as-is. + +Finally, "grp_3" defines two HDMI pins.  The following properties are applied to +both pins: + - setting pinmux to "alt3" + - setting slew-rate to 1; for HDMI pins, this corresponds to the 3.4 Mbps +   Highspeed mode +The input is neither enabled or disabled, and is left untouched. + +=== Pin Names and Type === + +The following are valid pin names and their pin types: + +	"adcsync",		Standard +	"bat_rm",		Standard +	"bsc1_scl",		I2C +	"bsc1_sda",		I2C +	"bsc2_scl",		I2C +	"bsc2_sda",		I2C +	"classgpwr",		Standard +	"clk_cx8",		Standard +	"clkout_0",		Standard +	"clkout_1",		Standard +	"clkout_2",		Standard +	"clkout_3",		Standard +	"clkreq_in_0",		Standard +	"clkreq_in_1",		Standard +	"cws_sys_req1",		Standard +	"cws_sys_req2",		Standard +	"cws_sys_req3",		Standard +	"digmic1_clk",		Standard +	"digmic1_dq",		Standard +	"digmic2_clk",		Standard +	"digmic2_dq",		Standard +	"gpen13",		Standard +	"gpen14",		Standard +	"gpen15",		Standard +	"gpio00",		Standard +	"gpio01",		Standard +	"gpio02",		Standard +	"gpio03",		Standard +	"gpio04",		Standard +	"gpio05",		Standard +	"gpio06",		Standard +	"gpio07",		Standard +	"gpio08",		Standard +	"gpio09",		Standard +	"gpio10",		Standard +	"gpio11",		Standard +	"gpio12",		Standard +	"gpio13",		Standard +	"gpio14",		Standard +	"gps_pablank",		Standard +	"gps_tmark",		Standard +	"hdmi_scl",		HDMI +	"hdmi_sda",		HDMI +	"ic_dm",		Standard +	"ic_dp",		Standard +	"kp_col_ip_0",		Standard +	"kp_col_ip_1",		Standard +	"kp_col_ip_2",		Standard +	"kp_col_ip_3",		Standard +	"kp_row_op_0",		Standard +	"kp_row_op_1",		Standard +	"kp_row_op_2",		Standard +	"kp_row_op_3",		Standard +	"lcd_b_0",		Standard +	"lcd_b_1",		Standard +	"lcd_b_2",		Standard +	"lcd_b_3",		Standard +	"lcd_b_4",		Standard +	"lcd_b_5",		Standard +	"lcd_b_6",		Standard +	"lcd_b_7",		Standard +	"lcd_g_0",		Standard +	"lcd_g_1",		Standard +	"lcd_g_2",		Standard +	"lcd_g_3",		Standard +	"lcd_g_4",		Standard +	"lcd_g_5",		Standard +	"lcd_g_6",		Standard +	"lcd_g_7",		Standard +	"lcd_hsync",		Standard +	"lcd_oe",		Standard +	"lcd_pclk",		Standard +	"lcd_r_0",		Standard +	"lcd_r_1",		Standard +	"lcd_r_2",		Standard +	"lcd_r_3",		Standard +	"lcd_r_4",		Standard +	"lcd_r_5",		Standard +	"lcd_r_6",		Standard +	"lcd_r_7",		Standard +	"lcd_vsync",		Standard +	"mdmgpio0",		Standard +	"mdmgpio1",		Standard +	"mdmgpio2",		Standard +	"mdmgpio3",		Standard +	"mdmgpio4",		Standard +	"mdmgpio5",		Standard +	"mdmgpio6",		Standard +	"mdmgpio7",		Standard +	"mdmgpio8",		Standard +	"mphi_data_0",		Standard +	"mphi_data_1",		Standard +	"mphi_data_2",		Standard +	"mphi_data_3",		Standard +	"mphi_data_4",		Standard +	"mphi_data_5",		Standard +	"mphi_data_6",		Standard +	"mphi_data_7",		Standard +	"mphi_data_8",		Standard +	"mphi_data_9",		Standard +	"mphi_data_10",		Standard +	"mphi_data_11",		Standard +	"mphi_data_12",		Standard +	"mphi_data_13",		Standard +	"mphi_data_14",		Standard +	"mphi_data_15",		Standard +	"mphi_ha0",		Standard +	"mphi_hat0",		Standard +	"mphi_hat1",		Standard +	"mphi_hce0_n",		Standard +	"mphi_hce1_n",		Standard +	"mphi_hrd_n",		Standard +	"mphi_hwr_n",		Standard +	"mphi_run0",		Standard +	"mphi_run1",		Standard +	"mtx_scan_clk",		Standard +	"mtx_scan_data",	Standard +	"nand_ad_0",		Standard +	"nand_ad_1",		Standard +	"nand_ad_2",		Standard +	"nand_ad_3",		Standard +	"nand_ad_4",		Standard +	"nand_ad_5",		Standard +	"nand_ad_6",		Standard +	"nand_ad_7",		Standard +	"nand_ale",		Standard +	"nand_cen_0",		Standard +	"nand_cen_1",		Standard +	"nand_cle",		Standard +	"nand_oen",		Standard +	"nand_rdy_0",		Standard +	"nand_rdy_1",		Standard +	"nand_wen",		Standard +	"nand_wp",		Standard +	"pc1",			Standard +	"pc2",			Standard +	"pmu_int",		Standard +	"pmu_scl",		I2C +	"pmu_sda",		I2C +	"rfst2g_mtsloten3g",	Standard +	"rgmii_0_rx_ctl",	Standard +	"rgmii_0_rxc",		Standard +	"rgmii_0_rxd_0",	Standard +	"rgmii_0_rxd_1",	Standard +	"rgmii_0_rxd_2",	Standard +	"rgmii_0_rxd_3",	Standard +	"rgmii_0_tx_ctl",	Standard +	"rgmii_0_txc",		Standard +	"rgmii_0_txd_0",	Standard +	"rgmii_0_txd_1",	Standard +	"rgmii_0_txd_2",	Standard +	"rgmii_0_txd_3",	Standard +	"rgmii_1_rx_ctl",	Standard +	"rgmii_1_rxc",		Standard +	"rgmii_1_rxd_0",	Standard +	"rgmii_1_rxd_1",	Standard +	"rgmii_1_rxd_2",	Standard +	"rgmii_1_rxd_3",	Standard +	"rgmii_1_tx_ctl",	Standard +	"rgmii_1_txc",		Standard +	"rgmii_1_txd_0",	Standard +	"rgmii_1_txd_1",	Standard +	"rgmii_1_txd_2",	Standard +	"rgmii_1_txd_3",	Standard +	"rgmii_gpio_0",		Standard +	"rgmii_gpio_1",		Standard +	"rgmii_gpio_2",		Standard +	"rgmii_gpio_3",		Standard +	"rtxdata2g_txdata3g1",	Standard +	"rtxen2g_txdata3g2",	Standard +	"rxdata3g0",		Standard +	"rxdata3g1",		Standard +	"rxdata3g2",		Standard +	"sdio1_clk",		Standard +	"sdio1_cmd",		Standard +	"sdio1_data_0",		Standard +	"sdio1_data_1",		Standard +	"sdio1_data_2",		Standard +	"sdio1_data_3",		Standard +	"sdio4_clk",		Standard +	"sdio4_cmd",		Standard +	"sdio4_data_0",		Standard +	"sdio4_data_1",		Standard +	"sdio4_data_2",		Standard +	"sdio4_data_3",		Standard +	"sim_clk",		Standard +	"sim_data",		Standard +	"sim_det",		Standard +	"sim_resetn",		Standard +	"sim2_clk",		Standard +	"sim2_data",		Standard +	"sim2_det",		Standard +	"sim2_resetn",		Standard +	"sri_c",		Standard +	"sri_d",		Standard +	"sri_e",		Standard +	"ssp_extclk",		Standard +	"ssp0_clk",		Standard +	"ssp0_fs",		Standard +	"ssp0_rxd",		Standard +	"ssp0_txd",		Standard +	"ssp2_clk",		Standard +	"ssp2_fs_0",		Standard +	"ssp2_fs_1",		Standard +	"ssp2_fs_2",		Standard +	"ssp2_fs_3",		Standard +	"ssp2_rxd_0",		Standard +	"ssp2_rxd_1",		Standard +	"ssp2_txd_0",		Standard +	"ssp2_txd_1",		Standard +	"ssp3_clk",		Standard +	"ssp3_fs",		Standard +	"ssp3_rxd",		Standard +	"ssp3_txd",		Standard +	"ssp4_clk",		Standard +	"ssp4_fs",		Standard +	"ssp4_rxd",		Standard +	"ssp4_txd",		Standard +	"ssp5_clk",		Standard +	"ssp5_fs",		Standard +	"ssp5_rxd",		Standard +	"ssp5_txd",		Standard +	"ssp6_clk",		Standard +	"ssp6_fs",		Standard +	"ssp6_rxd",		Standard +	"ssp6_txd",		Standard +	"stat_1",		Standard +	"stat_2",		Standard +	"sysclken",		Standard +	"traceclk",		Standard +	"tracedt00",		Standard +	"tracedt01",		Standard +	"tracedt02",		Standard +	"tracedt03",		Standard +	"tracedt04",		Standard +	"tracedt05",		Standard +	"tracedt06",		Standard +	"tracedt07",		Standard +	"tracedt08",		Standard +	"tracedt09",		Standard +	"tracedt10",		Standard +	"tracedt11",		Standard +	"tracedt12",		Standard +	"tracedt13",		Standard +	"tracedt14",		Standard +	"tracedt15",		Standard +	"txdata3g0",		Standard +	"txpwrind",		Standard +	"uartb1_ucts",		Standard +	"uartb1_urts",		Standard +	"uartb1_urxd",		Standard +	"uartb1_utxd",		Standard +	"uartb2_urxd",		Standard +	"uartb2_utxd",		Standard +	"uartb3_ucts",		Standard +	"uartb3_urts",		Standard +	"uartb3_urxd",		Standard +	"uartb3_utxd",		Standard +	"uartb4_ucts",		Standard +	"uartb4_urts",		Standard +	"uartb4_urxd",		Standard +	"uartb4_utxd",		Standard +	"vc_cam1_scl",		I2C +	"vc_cam1_sda",		I2C +	"vc_cam2_scl",		I2C +	"vc_cam2_sda",		I2C +	"vc_cam3_scl",		I2C +	"vc_cam3_sda",		I2C diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt index 3a7caf7a744..9fde25f1401 100644 --- a/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt @@ -22,11 +22,12 @@ Required properties for iomux controller:    Please refer to each fsl,<soc>-pinctrl.txt binding doc for supported SoCs.  Required properties for pin configuration node: -- fsl,pins: two integers array, represents a group of pins mux and config -  setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a -  pin working on a specific function, which consists of a tuple of -  <mux_reg conf_reg input_reg mux_val input_val>.  CONFIG is the pad setting -  value like pull-up on this pin. +- fsl,pins: each entry consists of 6 integers and represents the mux and config +  setting for one pin. The first 5 integers <mux_reg conf_reg input_reg mux_val +  input_val> are specified using a PIN_FUNC_ID macro, which can be found in +  imx*-pinfunc.h under device tree source folder. The last integer CONFIG is +  the pad setting value like pull-up on this pin. And that's why fsl,pins entry +  looks like <PIN_FUNC_ID CONFIG> in the example below.  Bits used for CONFIG:  NO_PAD_CTL(1 << 31): indicate this pin does not need config. @@ -72,17 +73,18 @@ iomuxc@020e0000 {  	/* shared pinctrl settings */  	usdhc4 {  		pinctrl_usdhc4_1: usdhc4grp-1 { -			fsl,pins = <1386 0x17059	/* MX6Q_PAD_SD4_CMD__USDHC4_CMD */ -				    1392 0x10059	/* MX6Q_PAD_SD4_CLK__USDHC4_CLK	*/ -				    1462 0x17059	/* MX6Q_PAD_SD4_DAT0__USDHC4_DAT0 */ -				    1470 0x17059	/* MX6Q_PAD_SD4_DAT1__USDHC4_DAT1 */ -				    1478 0x17059	/* MX6Q_PAD_SD4_DAT2__USDHC4_DAT2 */ -				    1486 0x17059	/* MX6Q_PAD_SD4_DAT3__USDHC4_DAT3 */ -				    1493 0x17059	/* MX6Q_PAD_SD4_DAT4__USDHC4_DAT4 */ -				    1501 0x17059	/* MX6Q_PAD_SD4_DAT5__USDHC4_DAT5 */ -				    1509 0x17059	/* MX6Q_PAD_SD4_DAT6__USDHC4_DAT6 */ -				    1517 0x17059>;	/* MX6Q_PAD_SD4_DAT7__USDHC4_DAT7 */ -		}; +			fsl,pins = < +				MX6QDL_PAD_SD4_CMD__SD4_CMD    0x17059 +				MX6QDL_PAD_SD4_CLK__SD4_CLK    0x10059 +				MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17059 +				MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17059 +				MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17059 +				MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17059 +				MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17059 +				MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17059 +				MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17059 +				MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17059 +			>;  	};  	....  }; @@ -90,6 +92,3 @@ Refer to the IOMUXC controller chapter in imx6q datasheet,  0x17059 means enable hysteresis, 47KOhm Pull Up, 50Mhz speed,  80Ohm driver strength and Fast Slew Rate.  User should refer to each SoC spec to set the correct value. - -TODO: when dtc macro support is available, we can change above raw data -to dt macro which can get better readability in dts file. diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx25-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx25-pinctrl.txt new file mode 100644 index 00000000000..fd653bde18d --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx25-pinctrl.txt @@ -0,0 +1,23 @@ +* Freescale IMX25 IOMUX Controller + +Please refer to fsl,imx-pinctrl.txt in this directory for common binding part +and usage. + +CONFIG bits definition: +PAD_CTL_HYS			(1 << 8) +PAD_CTL_PKE			(1 << 7) +PAD_CTL_PUE			(1 << 6) +PAD_CTL_PUS_100K_DOWN		(0 << 4) +PAD_CTL_PUS_47K_UP		(1 << 4) +PAD_CTL_PUS_100K_UP		(2 << 4) +PAD_CTL_PUS_22K_UP		(3 << 4) +PAD_CTL_ODE_CMOS		(0 << 3) +PAD_CTL_ODE_OPENDRAIN		(1 << 3) +PAD_CTL_DSE_NOMINAL		(0 << 1) +PAD_CTL_DSE_HIGH		(1 << 1) +PAD_CTL_DSE_MAX			(2 << 1) +PAD_CTL_SRE_FAST		(1 << 0) +PAD_CTL_SRE_SLOW		(0 << 0) + +Refer to imx25-pinfunc.h in device tree source folder for all available +imx25 PIN_FUNC_ID. diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt new file mode 100644 index 00000000000..d1706ea8257 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx27-pinctrl.txt @@ -0,0 +1,121 @@ +* Freescale IMX27 IOMUX Controller + +Required properties: +- compatible: "fsl,imx27-iomuxc" + +The iomuxc driver node should define subnodes containing of pinctrl configuration subnodes. + +Required properties for pin configuration node: +- fsl,pins: three integers array, represents a group of pins mux and config +  setting. The format is fsl,pins = <PIN MUX_ID CONFIG>. + +  PIN is an integer between 0 and 0xbf. imx27 has 6 ports with 32 configurable +  configurable pins each. PIN is PORT * 32 + PORT_PIN, PORT_PIN is the pin +  number on the specific port (between 0 and 31). + +  MUX_ID is +    function + (direction << 2) + (gpio_oconf << 4) + (gpio_iconfa << 8) + (gpio_iconfb << 10) + +      function value is used to select the pin function. +      Possible values: +          0 - Primary function +          1 - Alternate function +          2 - GPIO +      Registers: GIUS (GPIO In Use), GPR (General Purpose Register) + +      direction defines the data direction of the pin. +      Possible values: +          0 - Input +          1 - Output +      Register: DDIR + +      gpio_oconf configures the gpio submodule output signal. This does not +      have any effect unless GPIO function is selected. A/B/C_IN are output +      signals of function blocks A,B and C. Specific function blocks are +      described in the reference manual. +      Possible values: +          0 - A_IN +          1 - B_IN +          2 - C_IN +          3 - Data Register +      Registers: OCR1, OCR2 + +      gpio_iconfa/b configures the gpio submodule input to functionblocks A and +      B. GPIO function should be selected if this is configured. +      Possible values: +          0 - GPIO_IN +          1 - Interrupt Status Register +          2 - Pulldown +          3 - Pullup +      Registers ICONFA1, ICONFA2, ICONFB1 and ICONFB2 + +  CONFIG can be 0 or 1, meaning Pullup disable/enable. + + +The iomux controller has gpio child nodes which are embedded in the iomux +control registers. They have to be defined as child nodes of the iomux device +node. If gpio subnodes are defined "#address-cells", "#size-cells" and "ranges" +properties for the iomux device node are required. + +Example: + +iomuxc: iomuxc@10015000 { +	compatible = "fsl,imx27-iomuxc"; +	reg = <0x10015000 0x600>; +	#address-cells = <1>; +	#size-cells = <1>; +	ranges; + +	gpio1: gpio@10015000 { +		... +	}; + +	... + +	uart { +		pinctrl_uart1: uart-1 { +			fsl,pins = < +				0x8c 0x004 0x0 /* UART1_TXD__UART1_TXD */ +				0x8d 0x000 0x0 /* UART1_RXD__UART1_RXD */ +				0x8e 0x004 0x0 /* UART1_CTS__UART1_CTS */ +				0x8f 0x000 0x0 /* UART1_RTS__UART1_RTS */ +			>; +		}; + +		... +	}; +}; + + +For convenience there are macros defined in imx27-pinfunc.h which provide PIN +and MUX_ID. They are structured as MX27_PAD_<Pad name>__<Signal name>. The names +are defined in the i.MX27 reference manual. + +The above example using macros: + +iomuxc: iomuxc@10015000 { +	compatible = "fsl,imx27-iomuxc"; +	reg = <0x10015000 0x600>; +	#address-cells = <1>; +	#size-cells = <1>; +	ranges; + +	gpio1: gpio@10015000 { +		... +	}; + +	... + +	uart { +		pinctrl_uart1: uart-1 { +			fsl,pins = < +				MX27_PAD_UART1_TXD__UART1_TXD 0x0 +				MX27_PAD_UART1_RXD__UART1_RXD 0x0 +				MX27_PAD_UART1_CTS__UART1_CTS 0x0 +				MX27_PAD_UART1_RTS__UART1_RTS 0x0 +			>; +		}; + +		... +	}; +}; diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx6sx-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx6sx-pinctrl.txt new file mode 100644 index 00000000000..b1b595220f1 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/fsl,imx6sx-pinctrl.txt @@ -0,0 +1,36 @@ +* Freescale i.MX6 SoloX IOMUX Controller + +Please refer to fsl,imx-pinctrl.txt in this directory for common binding part +and usage. + +Required properties: +- compatible: "fsl,imx6sx-iomuxc" +- fsl,pins: each entry consists of 6 integers and represents the mux and config +  setting for one pin.  The first 5 integers <mux_reg conf_reg input_reg mux_val +  input_val> are specified using a PIN_FUNC_ID macro, which can be found in +  imx6sx-pinfunc.h under device tree source folder.  The last integer CONFIG is +  the pad setting value like pull-up on this pin.  Please refer to i.MX6 SoloX +  Reference Manual for detailed CONFIG settings. + +CONFIG bits definition: +PAD_CTL_HYS                     (1 << 16) +PAD_CTL_PUS_100K_DOWN           (0 << 14) +PAD_CTL_PUS_47K_UP              (1 << 14) +PAD_CTL_PUS_100K_UP             (2 << 14) +PAD_CTL_PUS_22K_UP              (3 << 14) +PAD_CTL_PUE                     (1 << 13) +PAD_CTL_PKE                     (1 << 12) +PAD_CTL_ODE                     (1 << 11) +PAD_CTL_SPEED_LOW               (0 << 6) +PAD_CTL_SPEED_MED               (1 << 6) +PAD_CTL_SPEED_HIGH              (3 << 6) +PAD_CTL_DSE_DISABLE             (0 << 3) +PAD_CTL_DSE_260ohm              (1 << 3) +PAD_CTL_DSE_130ohm              (2 << 3) +PAD_CTL_DSE_87ohm               (3 << 3) +PAD_CTL_DSE_65ohm               (4 << 3) +PAD_CTL_DSE_52ohm               (5 << 3) +PAD_CTL_DSE_43ohm               (6 << 3) +PAD_CTL_DSE_37ohm               (7 << 3) +PAD_CTL_SRE_FAST                (1 << 0) +PAD_CTL_SRE_SLOW                (0 << 0) diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt index 3077370c89a..1e70a8aff26 100644 --- a/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt @@ -59,16 +59,16 @@ Required subnode-properties:  Optional subnode-properties:  - fsl,drive-strength: Integer. -    0: 4 mA -    1: 8 mA -    2: 12 mA -    3: 16 mA +    0: MXS_DRIVE_4mA +    1: MXS_DRIVE_8mA +    2: MXS_DRIVE_12mA +    3: MXS_DRIVE_16mA  - fsl,voltage: Integer. -    0: 1.8 V -    1: 3.3 V +    0: MXS_VOLTAGE_LOW  - 1.8 V +    1: MXS_VOLTAGE_HIGH - 3.3 V  - fsl,pull-up: Integer. -    0: Disable the internal pull-up -    1: Enable the internal pull-up +    0: MXS_PULL_DISABLE - Disable the internal pull-up +    1: MXS_PULL_ENABLE  - Enable the internal pull-up  Note that when enabling the pull-up, the internal pad keeper gets disabled.  Also, some pins doesn't have a pull up, in that case, setting the fsl,pull-up @@ -85,23 +85,32 @@ pinctrl@80018000 {  	mmc0_8bit_pins_a: mmc0-8bit@0 {  		reg = <0>;  		fsl,pinmux-ids = < -			0x2000 0x2010 0x2020 0x2030 -			0x2040 0x2050 0x2060 0x2070 -			0x2080 0x2090 0x20a0>; -		fsl,drive-strength = <1>; -		fsl,voltage = <1>; -		fsl,pull-up = <1>; +			MX28_PAD_SSP0_DATA0__SSP0_D0 +			MX28_PAD_SSP0_DATA1__SSP0_D1 +			MX28_PAD_SSP0_DATA2__SSP0_D2 +			MX28_PAD_SSP0_DATA3__SSP0_D3 +			MX28_PAD_SSP0_DATA4__SSP0_D4 +			MX28_PAD_SSP0_DATA5__SSP0_D5 +			MX28_PAD_SSP0_DATA6__SSP0_D6 +			MX28_PAD_SSP0_DATA7__SSP0_D7 +			MX28_PAD_SSP0_CMD__SSP0_CMD +			MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT +			MX28_PAD_SSP0_SCK__SSP0_SCK +		>; +		fsl,drive-strength = <MXS_DRIVE_4mA>; +		fsl,voltage = <MXS_VOLTAGE_HIGH>; +		fsl,pull-up = <MXS_PULL_ENABLE>;  	};  	mmc_cd_cfg: mmc-cd-cfg { -		fsl,pinmux-ids = <0x2090>; -		fsl,pull-up = <0>; +		fsl,pinmux-ids = <MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT>; +		fsl,pull-up = <MXS_PULL_DISABLE>;  	};  	mmc_sck_cfg: mmc-sck-cfg { -		fsl,pinmux-ids = <0x20a0>; -		fsl,drive-strength = <2>; -		fsl,pull-up = <0>; +		fsl,pinmux-ids = <MX28_PAD_SSP0_SCK__SSP0_SCK>; +		fsl,drive-strength = <MXS_DRIVE_12mA>; +		fsl,pull-up = <MXS_PULL_DISABLE>;  	};  }; @@ -112,811 +121,7 @@ adjusting the configuration for pins card-detection and clock from what group  node mmc0-8bit defines.  Only the configuration properties to be adjusted need  to be listed in the config nodes. -Valid values for i.MX28 pinmux-id: - -pinmux						id -------						-- -MX28_PAD_GPMI_D00__GPMI_D0			0x0000 -MX28_PAD_GPMI_D01__GPMI_D1			0x0010 -MX28_PAD_GPMI_D02__GPMI_D2			0x0020 -MX28_PAD_GPMI_D03__GPMI_D3			0x0030 -MX28_PAD_GPMI_D04__GPMI_D4			0x0040 -MX28_PAD_GPMI_D05__GPMI_D5			0x0050 -MX28_PAD_GPMI_D06__GPMI_D6			0x0060 -MX28_PAD_GPMI_D07__GPMI_D7			0x0070 -MX28_PAD_GPMI_CE0N__GPMI_CE0N			0x0100 -MX28_PAD_GPMI_CE1N__GPMI_CE1N			0x0110 -MX28_PAD_GPMI_CE2N__GPMI_CE2N			0x0120 -MX28_PAD_GPMI_CE3N__GPMI_CE3N			0x0130 -MX28_PAD_GPMI_RDY0__GPMI_READY0			0x0140 -MX28_PAD_GPMI_RDY1__GPMI_READY1			0x0150 -MX28_PAD_GPMI_RDY2__GPMI_READY2			0x0160 -MX28_PAD_GPMI_RDY3__GPMI_READY3			0x0170 -MX28_PAD_GPMI_RDN__GPMI_RDN			0x0180 -MX28_PAD_GPMI_WRN__GPMI_WRN			0x0190 -MX28_PAD_GPMI_ALE__GPMI_ALE			0x01a0 -MX28_PAD_GPMI_CLE__GPMI_CLE			0x01b0 -MX28_PAD_GPMI_RESETN__GPMI_RESETN		0x01c0 -MX28_PAD_LCD_D00__LCD_D0			0x1000 -MX28_PAD_LCD_D01__LCD_D1			0x1010 -MX28_PAD_LCD_D02__LCD_D2			0x1020 -MX28_PAD_LCD_D03__LCD_D3			0x1030 -MX28_PAD_LCD_D04__LCD_D4			0x1040 -MX28_PAD_LCD_D05__LCD_D5			0x1050 -MX28_PAD_LCD_D06__LCD_D6			0x1060 -MX28_PAD_LCD_D07__LCD_D7			0x1070 -MX28_PAD_LCD_D08__LCD_D8			0x1080 -MX28_PAD_LCD_D09__LCD_D9			0x1090 -MX28_PAD_LCD_D10__LCD_D10			0x10a0 -MX28_PAD_LCD_D11__LCD_D11			0x10b0 -MX28_PAD_LCD_D12__LCD_D12			0x10c0 -MX28_PAD_LCD_D13__LCD_D13			0x10d0 -MX28_PAD_LCD_D14__LCD_D14			0x10e0 -MX28_PAD_LCD_D15__LCD_D15			0x10f0 -MX28_PAD_LCD_D16__LCD_D16			0x1100 -MX28_PAD_LCD_D17__LCD_D17			0x1110 -MX28_PAD_LCD_D18__LCD_D18			0x1120 -MX28_PAD_LCD_D19__LCD_D19			0x1130 -MX28_PAD_LCD_D20__LCD_D20			0x1140 -MX28_PAD_LCD_D21__LCD_D21			0x1150 -MX28_PAD_LCD_D22__LCD_D22			0x1160 -MX28_PAD_LCD_D23__LCD_D23			0x1170 -MX28_PAD_LCD_RD_E__LCD_RD_E			0x1180 -MX28_PAD_LCD_WR_RWN__LCD_WR_RWN			0x1190 -MX28_PAD_LCD_RS__LCD_RS				0x11a0 -MX28_PAD_LCD_CS__LCD_CS				0x11b0 -MX28_PAD_LCD_VSYNC__LCD_VSYNC			0x11c0 -MX28_PAD_LCD_HSYNC__LCD_HSYNC			0x11d0 -MX28_PAD_LCD_DOTCLK__LCD_DOTCLK			0x11e0 -MX28_PAD_LCD_ENABLE__LCD_ENABLE			0x11f0 -MX28_PAD_SSP0_DATA0__SSP0_D0			0x2000 -MX28_PAD_SSP0_DATA1__SSP0_D1			0x2010 -MX28_PAD_SSP0_DATA2__SSP0_D2			0x2020 -MX28_PAD_SSP0_DATA3__SSP0_D3			0x2030 -MX28_PAD_SSP0_DATA4__SSP0_D4			0x2040 -MX28_PAD_SSP0_DATA5__SSP0_D5			0x2050 -MX28_PAD_SSP0_DATA6__SSP0_D6			0x2060 -MX28_PAD_SSP0_DATA7__SSP0_D7			0x2070 -MX28_PAD_SSP0_CMD__SSP0_CMD			0x2080 -MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT		0x2090 -MX28_PAD_SSP0_SCK__SSP0_SCK			0x20a0 -MX28_PAD_SSP1_SCK__SSP1_SCK			0x20c0 -MX28_PAD_SSP1_CMD__SSP1_CMD			0x20d0 -MX28_PAD_SSP1_DATA0__SSP1_D0			0x20e0 -MX28_PAD_SSP1_DATA3__SSP1_D3			0x20f0 -MX28_PAD_SSP2_SCK__SSP2_SCK			0x2100 -MX28_PAD_SSP2_MOSI__SSP2_CMD			0x2110 -MX28_PAD_SSP2_MISO__SSP2_D0			0x2120 -MX28_PAD_SSP2_SS0__SSP2_D3			0x2130 -MX28_PAD_SSP2_SS1__SSP2_D4			0x2140 -MX28_PAD_SSP2_SS2__SSP2_D5			0x2150 -MX28_PAD_SSP3_SCK__SSP3_SCK			0x2180 -MX28_PAD_SSP3_MOSI__SSP3_CMD			0x2190 -MX28_PAD_SSP3_MISO__SSP3_D0			0x21a0 -MX28_PAD_SSP3_SS0__SSP3_D3			0x21b0 -MX28_PAD_AUART0_RX__AUART0_RX			0x3000 -MX28_PAD_AUART0_TX__AUART0_TX			0x3010 -MX28_PAD_AUART0_CTS__AUART0_CTS			0x3020 -MX28_PAD_AUART0_RTS__AUART0_RTS			0x3030 -MX28_PAD_AUART1_RX__AUART1_RX			0x3040 -MX28_PAD_AUART1_TX__AUART1_TX			0x3050 -MX28_PAD_AUART1_CTS__AUART1_CTS			0x3060 -MX28_PAD_AUART1_RTS__AUART1_RTS			0x3070 -MX28_PAD_AUART2_RX__AUART2_RX			0x3080 -MX28_PAD_AUART2_TX__AUART2_TX			0x3090 -MX28_PAD_AUART2_CTS__AUART2_CTS			0x30a0 -MX28_PAD_AUART2_RTS__AUART2_RTS			0x30b0 -MX28_PAD_AUART3_RX__AUART3_RX			0x30c0 -MX28_PAD_AUART3_TX__AUART3_TX			0x30d0 -MX28_PAD_AUART3_CTS__AUART3_CTS			0x30e0 -MX28_PAD_AUART3_RTS__AUART3_RTS			0x30f0 -MX28_PAD_PWM0__PWM_0				0x3100 -MX28_PAD_PWM1__PWM_1				0x3110 -MX28_PAD_PWM2__PWM_2				0x3120 -MX28_PAD_SAIF0_MCLK__SAIF0_MCLK			0x3140 -MX28_PAD_SAIF0_LRCLK__SAIF0_LRCLK		0x3150 -MX28_PAD_SAIF0_BITCLK__SAIF0_BITCLK		0x3160 -MX28_PAD_SAIF0_SDATA0__SAIF0_SDATA0		0x3170 -MX28_PAD_I2C0_SCL__I2C0_SCL			0x3180 -MX28_PAD_I2C0_SDA__I2C0_SDA			0x3190 -MX28_PAD_SAIF1_SDATA0__SAIF1_SDATA0		0x31a0 -MX28_PAD_SPDIF__SPDIF_TX			0x31b0 -MX28_PAD_PWM3__PWM_3				0x31c0 -MX28_PAD_PWM4__PWM_4				0x31d0 -MX28_PAD_LCD_RESET__LCD_RESET			0x31e0 -MX28_PAD_ENET0_MDC__ENET0_MDC			0x4000 -MX28_PAD_ENET0_MDIO__ENET0_MDIO			0x4010 -MX28_PAD_ENET0_RX_EN__ENET0_RX_EN		0x4020 -MX28_PAD_ENET0_RXD0__ENET0_RXD0			0x4030 -MX28_PAD_ENET0_RXD1__ENET0_RXD1			0x4040 -MX28_PAD_ENET0_TX_CLK__ENET0_TX_CLK		0x4050 -MX28_PAD_ENET0_TX_EN__ENET0_TX_EN		0x4060 -MX28_PAD_ENET0_TXD0__ENET0_TXD0			0x4070 -MX28_PAD_ENET0_TXD1__ENET0_TXD1			0x4080 -MX28_PAD_ENET0_RXD2__ENET0_RXD2			0x4090 -MX28_PAD_ENET0_RXD3__ENET0_RXD3			0x40a0 -MX28_PAD_ENET0_TXD2__ENET0_TXD2			0x40b0 -MX28_PAD_ENET0_TXD3__ENET0_TXD3			0x40c0 -MX28_PAD_ENET0_RX_CLK__ENET0_RX_CLK		0x40d0 -MX28_PAD_ENET0_COL__ENET0_COL			0x40e0 -MX28_PAD_ENET0_CRS__ENET0_CRS			0x40f0 -MX28_PAD_ENET_CLK__CLKCTRL_ENET			0x4100 -MX28_PAD_JTAG_RTCK__JTAG_RTCK			0x4140 -MX28_PAD_EMI_D00__EMI_DATA0			0x5000 -MX28_PAD_EMI_D01__EMI_DATA1			0x5010 -MX28_PAD_EMI_D02__EMI_DATA2			0x5020 -MX28_PAD_EMI_D03__EMI_DATA3			0x5030 -MX28_PAD_EMI_D04__EMI_DATA4			0x5040 -MX28_PAD_EMI_D05__EMI_DATA5			0x5050 -MX28_PAD_EMI_D06__EMI_DATA6			0x5060 -MX28_PAD_EMI_D07__EMI_DATA7			0x5070 -MX28_PAD_EMI_D08__EMI_DATA8			0x5080 -MX28_PAD_EMI_D09__EMI_DATA9			0x5090 -MX28_PAD_EMI_D10__EMI_DATA10			0x50a0 -MX28_PAD_EMI_D11__EMI_DATA11			0x50b0 -MX28_PAD_EMI_D12__EMI_DATA12			0x50c0 -MX28_PAD_EMI_D13__EMI_DATA13			0x50d0 -MX28_PAD_EMI_D14__EMI_DATA14			0x50e0 -MX28_PAD_EMI_D15__EMI_DATA15			0x50f0 -MX28_PAD_EMI_ODT0__EMI_ODT0			0x5100 -MX28_PAD_EMI_DQM0__EMI_DQM0			0x5110 -MX28_PAD_EMI_ODT1__EMI_ODT1			0x5120 -MX28_PAD_EMI_DQM1__EMI_DQM1			0x5130 -MX28_PAD_EMI_DDR_OPEN_FB__EMI_DDR_OPEN_FEEDBACK	0x5140 -MX28_PAD_EMI_CLK__EMI_CLK			0x5150 -MX28_PAD_EMI_DQS0__EMI_DQS0			0x5160 -MX28_PAD_EMI_DQS1__EMI_DQS1			0x5170 -MX28_PAD_EMI_DDR_OPEN__EMI_DDR_OPEN		0x51a0 -MX28_PAD_EMI_A00__EMI_ADDR0			0x6000 -MX28_PAD_EMI_A01__EMI_ADDR1			0x6010 -MX28_PAD_EMI_A02__EMI_ADDR2			0x6020 -MX28_PAD_EMI_A03__EMI_ADDR3			0x6030 -MX28_PAD_EMI_A04__EMI_ADDR4			0x6040 -MX28_PAD_EMI_A05__EMI_ADDR5			0x6050 -MX28_PAD_EMI_A06__EMI_ADDR6			0x6060 -MX28_PAD_EMI_A07__EMI_ADDR7			0x6070 -MX28_PAD_EMI_A08__EMI_ADDR8			0x6080 -MX28_PAD_EMI_A09__EMI_ADDR9			0x6090 -MX28_PAD_EMI_A10__EMI_ADDR10			0x60a0 -MX28_PAD_EMI_A11__EMI_ADDR11			0x60b0 -MX28_PAD_EMI_A12__EMI_ADDR12			0x60c0 -MX28_PAD_EMI_A13__EMI_ADDR13			0x60d0 -MX28_PAD_EMI_A14__EMI_ADDR14			0x60e0 -MX28_PAD_EMI_BA0__EMI_BA0			0x6100 -MX28_PAD_EMI_BA1__EMI_BA1			0x6110 -MX28_PAD_EMI_BA2__EMI_BA2			0x6120 -MX28_PAD_EMI_CASN__EMI_CASN			0x6130 -MX28_PAD_EMI_RASN__EMI_RASN			0x6140 -MX28_PAD_EMI_WEN__EMI_WEN			0x6150 -MX28_PAD_EMI_CE0N__EMI_CE0N			0x6160 -MX28_PAD_EMI_CE1N__EMI_CE1N			0x6170 -MX28_PAD_EMI_CKE__EMI_CKE			0x6180 -MX28_PAD_GPMI_D00__SSP1_D0			0x0001 -MX28_PAD_GPMI_D01__SSP1_D1			0x0011 -MX28_PAD_GPMI_D02__SSP1_D2			0x0021 -MX28_PAD_GPMI_D03__SSP1_D3			0x0031 -MX28_PAD_GPMI_D04__SSP1_D4			0x0041 -MX28_PAD_GPMI_D05__SSP1_D5			0x0051 -MX28_PAD_GPMI_D06__SSP1_D6			0x0061 -MX28_PAD_GPMI_D07__SSP1_D7			0x0071 -MX28_PAD_GPMI_CE0N__SSP3_D0			0x0101 -MX28_PAD_GPMI_CE1N__SSP3_D3			0x0111 -MX28_PAD_GPMI_CE2N__CAN1_TX			0x0121 -MX28_PAD_GPMI_CE3N__CAN1_RX			0x0131 -MX28_PAD_GPMI_RDY0__SSP1_CARD_DETECT		0x0141 -MX28_PAD_GPMI_RDY1__SSP1_CMD			0x0151 -MX28_PAD_GPMI_RDY2__CAN0_TX			0x0161 -MX28_PAD_GPMI_RDY3__CAN0_RX			0x0171 -MX28_PAD_GPMI_RDN__SSP3_SCK			0x0181 -MX28_PAD_GPMI_WRN__SSP1_SCK			0x0191 -MX28_PAD_GPMI_ALE__SSP3_D1			0x01a1 -MX28_PAD_GPMI_CLE__SSP3_D2			0x01b1 -MX28_PAD_GPMI_RESETN__SSP3_CMD			0x01c1 -MX28_PAD_LCD_D03__ETM_DA8			0x1031 -MX28_PAD_LCD_D04__ETM_DA9			0x1041 -MX28_PAD_LCD_D08__ETM_DA3			0x1081 -MX28_PAD_LCD_D09__ETM_DA4			0x1091 -MX28_PAD_LCD_D20__ENET1_1588_EVENT2_OUT		0x1141 -MX28_PAD_LCD_D21__ENET1_1588_EVENT2_IN		0x1151 -MX28_PAD_LCD_D22__ENET1_1588_EVENT3_OUT		0x1161 -MX28_PAD_LCD_D23__ENET1_1588_EVENT3_IN		0x1171 -MX28_PAD_LCD_RD_E__LCD_VSYNC			0x1181 -MX28_PAD_LCD_WR_RWN__LCD_HSYNC			0x1191 -MX28_PAD_LCD_RS__LCD_DOTCLK			0x11a1 -MX28_PAD_LCD_CS__LCD_ENABLE			0x11b1 -MX28_PAD_LCD_VSYNC__SAIF1_SDATA0		0x11c1 -MX28_PAD_LCD_HSYNC__SAIF1_SDATA1		0x11d1 -MX28_PAD_LCD_DOTCLK__SAIF1_MCLK			0x11e1 -MX28_PAD_SSP0_DATA4__SSP2_D0			0x2041 -MX28_PAD_SSP0_DATA5__SSP2_D3			0x2051 -MX28_PAD_SSP0_DATA6__SSP2_CMD			0x2061 -MX28_PAD_SSP0_DATA7__SSP2_SCK			0x2071 -MX28_PAD_SSP1_SCK__SSP2_D1			0x20c1 -MX28_PAD_SSP1_CMD__SSP2_D2			0x20d1 -MX28_PAD_SSP1_DATA0__SSP2_D6			0x20e1 -MX28_PAD_SSP1_DATA3__SSP2_D7			0x20f1 -MX28_PAD_SSP2_SCK__AUART2_RX			0x2101 -MX28_PAD_SSP2_MOSI__AUART2_TX			0x2111 -MX28_PAD_SSP2_MISO__AUART3_RX			0x2121 -MX28_PAD_SSP2_SS0__AUART3_TX			0x2131 -MX28_PAD_SSP2_SS1__SSP2_D1			0x2141 -MX28_PAD_SSP2_SS2__SSP2_D2			0x2151 -MX28_PAD_SSP3_SCK__AUART4_TX			0x2181 -MX28_PAD_SSP3_MOSI__AUART4_RX			0x2191 -MX28_PAD_SSP3_MISO__AUART4_RTS			0x21a1 -MX28_PAD_SSP3_SS0__AUART4_CTS			0x21b1 -MX28_PAD_AUART0_RX__I2C0_SCL			0x3001 -MX28_PAD_AUART0_TX__I2C0_SDA			0x3011 -MX28_PAD_AUART0_CTS__AUART4_RX			0x3021 -MX28_PAD_AUART0_RTS__AUART4_TX			0x3031 -MX28_PAD_AUART1_RX__SSP2_CARD_DETECT		0x3041 -MX28_PAD_AUART1_TX__SSP3_CARD_DETECT		0x3051 -MX28_PAD_AUART1_CTS__USB0_OVERCURRENT		0x3061 -MX28_PAD_AUART1_RTS__USB0_ID			0x3071 -MX28_PAD_AUART2_RX__SSP3_D1			0x3081 -MX28_PAD_AUART2_TX__SSP3_D2			0x3091 -MX28_PAD_AUART2_CTS__I2C1_SCL			0x30a1 -MX28_PAD_AUART2_RTS__I2C1_SDA			0x30b1 -MX28_PAD_AUART3_RX__CAN0_TX			0x30c1 -MX28_PAD_AUART3_TX__CAN0_RX			0x30d1 -MX28_PAD_AUART3_CTS__CAN1_TX			0x30e1 -MX28_PAD_AUART3_RTS__CAN1_RX			0x30f1 -MX28_PAD_PWM0__I2C1_SCL				0x3101 -MX28_PAD_PWM1__I2C1_SDA				0x3111 -MX28_PAD_PWM2__USB0_ID				0x3121 -MX28_PAD_SAIF0_MCLK__PWM_3			0x3141 -MX28_PAD_SAIF0_LRCLK__PWM_4			0x3151 -MX28_PAD_SAIF0_BITCLK__PWM_5			0x3161 -MX28_PAD_SAIF0_SDATA0__PWM_6			0x3171 -MX28_PAD_I2C0_SCL__TIMROT_ROTARYA		0x3181 -MX28_PAD_I2C0_SDA__TIMROT_ROTARYB		0x3191 -MX28_PAD_SAIF1_SDATA0__PWM_7			0x31a1 -MX28_PAD_LCD_RESET__LCD_VSYNC			0x31e1 -MX28_PAD_ENET0_MDC__GPMI_CE4N			0x4001 -MX28_PAD_ENET0_MDIO__GPMI_CE5N			0x4011 -MX28_PAD_ENET0_RX_EN__GPMI_CE6N			0x4021 -MX28_PAD_ENET0_RXD0__GPMI_CE7N			0x4031 -MX28_PAD_ENET0_RXD1__GPMI_READY4		0x4041 -MX28_PAD_ENET0_TX_CLK__HSADC_TRIGGER		0x4051 -MX28_PAD_ENET0_TX_EN__GPMI_READY5		0x4061 -MX28_PAD_ENET0_TXD0__GPMI_READY6		0x4071 -MX28_PAD_ENET0_TXD1__GPMI_READY7		0x4081 -MX28_PAD_ENET0_RXD2__ENET1_RXD0			0x4091 -MX28_PAD_ENET0_RXD3__ENET1_RXD1			0x40a1 -MX28_PAD_ENET0_TXD2__ENET1_TXD0			0x40b1 -MX28_PAD_ENET0_TXD3__ENET1_TXD1			0x40c1 -MX28_PAD_ENET0_RX_CLK__ENET0_RX_ER		0x40d1 -MX28_PAD_ENET0_COL__ENET1_TX_EN			0x40e1 -MX28_PAD_ENET0_CRS__ENET1_RX_EN			0x40f1 -MX28_PAD_GPMI_CE2N__ENET0_RX_ER			0x0122 -MX28_PAD_GPMI_CE3N__SAIF1_MCLK			0x0132 -MX28_PAD_GPMI_RDY0__USB0_ID			0x0142 -MX28_PAD_GPMI_RDY2__ENET0_TX_ER			0x0162 -MX28_PAD_GPMI_RDY3__HSADC_TRIGGER		0x0172 -MX28_PAD_GPMI_ALE__SSP3_D4			0x01a2 -MX28_PAD_GPMI_CLE__SSP3_D5			0x01b2 -MX28_PAD_LCD_D00__ETM_DA0			0x1002 -MX28_PAD_LCD_D01__ETM_DA1			0x1012 -MX28_PAD_LCD_D02__ETM_DA2			0x1022 -MX28_PAD_LCD_D03__ETM_DA3			0x1032 -MX28_PAD_LCD_D04__ETM_DA4			0x1042 -MX28_PAD_LCD_D05__ETM_DA5			0x1052 -MX28_PAD_LCD_D06__ETM_DA6			0x1062 -MX28_PAD_LCD_D07__ETM_DA7			0x1072 -MX28_PAD_LCD_D08__ETM_DA8			0x1082 -MX28_PAD_LCD_D09__ETM_DA9			0x1092 -MX28_PAD_LCD_D10__ETM_DA10			0x10a2 -MX28_PAD_LCD_D11__ETM_DA11			0x10b2 -MX28_PAD_LCD_D12__ETM_DA12			0x10c2 -MX28_PAD_LCD_D13__ETM_DA13			0x10d2 -MX28_PAD_LCD_D14__ETM_DA14			0x10e2 -MX28_PAD_LCD_D15__ETM_DA15			0x10f2 -MX28_PAD_LCD_D16__ETM_DA7			0x1102 -MX28_PAD_LCD_D17__ETM_DA6			0x1112 -MX28_PAD_LCD_D18__ETM_DA5			0x1122 -MX28_PAD_LCD_D19__ETM_DA4			0x1132 -MX28_PAD_LCD_D20__ETM_DA3			0x1142 -MX28_PAD_LCD_D21__ETM_DA2			0x1152 -MX28_PAD_LCD_D22__ETM_DA1			0x1162 -MX28_PAD_LCD_D23__ETM_DA0			0x1172 -MX28_PAD_LCD_RD_E__ETM_TCTL			0x1182 -MX28_PAD_LCD_WR_RWN__ETM_TCLK			0x1192 -MX28_PAD_LCD_HSYNC__ETM_TCTL			0x11d2 -MX28_PAD_LCD_DOTCLK__ETM_TCLK			0x11e2 -MX28_PAD_SSP1_SCK__ENET0_1588_EVENT2_OUT	0x20c2 -MX28_PAD_SSP1_CMD__ENET0_1588_EVENT2_IN		0x20d2 -MX28_PAD_SSP1_DATA0__ENET0_1588_EVENT3_OUT	0x20e2 -MX28_PAD_SSP1_DATA3__ENET0_1588_EVENT3_IN	0x20f2 -MX28_PAD_SSP2_SCK__SAIF0_SDATA1			0x2102 -MX28_PAD_SSP2_MOSI__SAIF0_SDATA2		0x2112 -MX28_PAD_SSP2_MISO__SAIF1_SDATA1		0x2122 -MX28_PAD_SSP2_SS0__SAIF1_SDATA2			0x2132 -MX28_PAD_SSP2_SS1__USB1_OVERCURRENT		0x2142 -MX28_PAD_SSP2_SS2__USB0_OVERCURRENT		0x2152 -MX28_PAD_SSP3_SCK__ENET1_1588_EVENT0_OUT	0x2182 -MX28_PAD_SSP3_MOSI__ENET1_1588_EVENT0_IN	0x2192 -MX28_PAD_SSP3_MISO__ENET1_1588_EVENT1_OUT	0x21a2 -MX28_PAD_SSP3_SS0__ENET1_1588_EVENT1_IN		0x21b2 -MX28_PAD_AUART0_RX__DUART_CTS			0x3002 -MX28_PAD_AUART0_TX__DUART_RTS			0x3012 -MX28_PAD_AUART0_CTS__DUART_RX			0x3022 -MX28_PAD_AUART0_RTS__DUART_TX			0x3032 -MX28_PAD_AUART1_RX__PWM_0			0x3042 -MX28_PAD_AUART1_TX__PWM_1			0x3052 -MX28_PAD_AUART1_CTS__TIMROT_ROTARYA		0x3062 -MX28_PAD_AUART1_RTS__TIMROT_ROTARYB		0x3072 -MX28_PAD_AUART2_RX__SSP3_D4			0x3082 -MX28_PAD_AUART2_TX__SSP3_D5			0x3092 -MX28_PAD_AUART2_CTS__SAIF1_BITCLK		0x30a2 -MX28_PAD_AUART2_RTS__SAIF1_LRCLK		0x30b2 -MX28_PAD_AUART3_RX__ENET0_1588_EVENT0_OUT	0x30c2 -MX28_PAD_AUART3_TX__ENET0_1588_EVENT0_IN	0x30d2 -MX28_PAD_AUART3_CTS__ENET0_1588_EVENT1_OUT	0x30e2 -MX28_PAD_AUART3_RTS__ENET0_1588_EVENT1_IN	0x30f2 -MX28_PAD_PWM0__DUART_RX				0x3102 -MX28_PAD_PWM1__DUART_TX				0x3112 -MX28_PAD_PWM2__USB1_OVERCURRENT			0x3122 -MX28_PAD_SAIF0_MCLK__AUART4_CTS			0x3142 -MX28_PAD_SAIF0_LRCLK__AUART4_RTS		0x3152 -MX28_PAD_SAIF0_BITCLK__AUART4_RX		0x3162 -MX28_PAD_SAIF0_SDATA0__AUART4_TX		0x3172 -MX28_PAD_I2C0_SCL__DUART_RX			0x3182 -MX28_PAD_I2C0_SDA__DUART_TX			0x3192 -MX28_PAD_SAIF1_SDATA0__SAIF0_SDATA1		0x31a2 -MX28_PAD_SPDIF__ENET1_RX_ER			0x31b2 -MX28_PAD_ENET0_MDC__SAIF0_SDATA1		0x4002 -MX28_PAD_ENET0_MDIO__SAIF0_SDATA2		0x4012 -MX28_PAD_ENET0_RX_EN__SAIF1_SDATA1		0x4022 -MX28_PAD_ENET0_RXD0__SAIF1_SDATA2		0x4032 -MX28_PAD_ENET0_TX_CLK__ENET0_1588_EVENT2_OUT	0x4052 -MX28_PAD_ENET0_RXD2__ENET0_1588_EVENT0_OUT	0x4092 -MX28_PAD_ENET0_RXD3__ENET0_1588_EVENT0_IN	0x40a2 -MX28_PAD_ENET0_TXD2__ENET0_1588_EVENT1_OUT	0x40b2 -MX28_PAD_ENET0_TXD3__ENET0_1588_EVENT1_IN	0x40c2 -MX28_PAD_ENET0_RX_CLK__ENET0_1588_EVENT2_IN	0x40d2 -MX28_PAD_ENET0_COL__ENET0_1588_EVENT3_OUT	0x40e2 -MX28_PAD_ENET0_CRS__ENET0_1588_EVENT3_IN	0x40f2 -MX28_PAD_GPMI_D00__GPIO_0_0			0x0003 -MX28_PAD_GPMI_D01__GPIO_0_1			0x0013 -MX28_PAD_GPMI_D02__GPIO_0_2			0x0023 -MX28_PAD_GPMI_D03__GPIO_0_3			0x0033 -MX28_PAD_GPMI_D04__GPIO_0_4			0x0043 -MX28_PAD_GPMI_D05__GPIO_0_5			0x0053 -MX28_PAD_GPMI_D06__GPIO_0_6			0x0063 -MX28_PAD_GPMI_D07__GPIO_0_7			0x0073 -MX28_PAD_GPMI_CE0N__GPIO_0_16			0x0103 -MX28_PAD_GPMI_CE1N__GPIO_0_17			0x0113 -MX28_PAD_GPMI_CE2N__GPIO_0_18			0x0123 -MX28_PAD_GPMI_CE3N__GPIO_0_19			0x0133 -MX28_PAD_GPMI_RDY0__GPIO_0_20			0x0143 -MX28_PAD_GPMI_RDY1__GPIO_0_21			0x0153 -MX28_PAD_GPMI_RDY2__GPIO_0_22			0x0163 -MX28_PAD_GPMI_RDY3__GPIO_0_23			0x0173 -MX28_PAD_GPMI_RDN__GPIO_0_24			0x0183 -MX28_PAD_GPMI_WRN__GPIO_0_25			0x0193 -MX28_PAD_GPMI_ALE__GPIO_0_26			0x01a3 -MX28_PAD_GPMI_CLE__GPIO_0_27			0x01b3 -MX28_PAD_GPMI_RESETN__GPIO_0_28			0x01c3 -MX28_PAD_LCD_D00__GPIO_1_0			0x1003 -MX28_PAD_LCD_D01__GPIO_1_1			0x1013 -MX28_PAD_LCD_D02__GPIO_1_2			0x1023 -MX28_PAD_LCD_D03__GPIO_1_3			0x1033 -MX28_PAD_LCD_D04__GPIO_1_4			0x1043 -MX28_PAD_LCD_D05__GPIO_1_5			0x1053 -MX28_PAD_LCD_D06__GPIO_1_6			0x1063 -MX28_PAD_LCD_D07__GPIO_1_7			0x1073 -MX28_PAD_LCD_D08__GPIO_1_8			0x1083 -MX28_PAD_LCD_D09__GPIO_1_9			0x1093 -MX28_PAD_LCD_D10__GPIO_1_10			0x10a3 -MX28_PAD_LCD_D11__GPIO_1_11			0x10b3 -MX28_PAD_LCD_D12__GPIO_1_12			0x10c3 -MX28_PAD_LCD_D13__GPIO_1_13			0x10d3 -MX28_PAD_LCD_D14__GPIO_1_14			0x10e3 -MX28_PAD_LCD_D15__GPIO_1_15			0x10f3 -MX28_PAD_LCD_D16__GPIO_1_16			0x1103 -MX28_PAD_LCD_D17__GPIO_1_17			0x1113 -MX28_PAD_LCD_D18__GPIO_1_18			0x1123 -MX28_PAD_LCD_D19__GPIO_1_19			0x1133 -MX28_PAD_LCD_D20__GPIO_1_20			0x1143 -MX28_PAD_LCD_D21__GPIO_1_21			0x1153 -MX28_PAD_LCD_D22__GPIO_1_22			0x1163 -MX28_PAD_LCD_D23__GPIO_1_23			0x1173 -MX28_PAD_LCD_RD_E__GPIO_1_24			0x1183 -MX28_PAD_LCD_WR_RWN__GPIO_1_25			0x1193 -MX28_PAD_LCD_RS__GPIO_1_26			0x11a3 -MX28_PAD_LCD_CS__GPIO_1_27			0x11b3 -MX28_PAD_LCD_VSYNC__GPIO_1_28			0x11c3 -MX28_PAD_LCD_HSYNC__GPIO_1_29			0x11d3 -MX28_PAD_LCD_DOTCLK__GPIO_1_30			0x11e3 -MX28_PAD_LCD_ENABLE__GPIO_1_31			0x11f3 -MX28_PAD_SSP0_DATA0__GPIO_2_0			0x2003 -MX28_PAD_SSP0_DATA1__GPIO_2_1			0x2013 -MX28_PAD_SSP0_DATA2__GPIO_2_2			0x2023 -MX28_PAD_SSP0_DATA3__GPIO_2_3			0x2033 -MX28_PAD_SSP0_DATA4__GPIO_2_4			0x2043 -MX28_PAD_SSP0_DATA5__GPIO_2_5			0x2053 -MX28_PAD_SSP0_DATA6__GPIO_2_6			0x2063 -MX28_PAD_SSP0_DATA7__GPIO_2_7			0x2073 -MX28_PAD_SSP0_CMD__GPIO_2_8			0x2083 -MX28_PAD_SSP0_DETECT__GPIO_2_9			0x2093 -MX28_PAD_SSP0_SCK__GPIO_2_10			0x20a3 -MX28_PAD_SSP1_SCK__GPIO_2_12			0x20c3 -MX28_PAD_SSP1_CMD__GPIO_2_13			0x20d3 -MX28_PAD_SSP1_DATA0__GPIO_2_14			0x20e3 -MX28_PAD_SSP1_DATA3__GPIO_2_15			0x20f3 -MX28_PAD_SSP2_SCK__GPIO_2_16			0x2103 -MX28_PAD_SSP2_MOSI__GPIO_2_17			0x2113 -MX28_PAD_SSP2_MISO__GPIO_2_18			0x2123 -MX28_PAD_SSP2_SS0__GPIO_2_19			0x2133 -MX28_PAD_SSP2_SS1__GPIO_2_20			0x2143 -MX28_PAD_SSP2_SS2__GPIO_2_21			0x2153 -MX28_PAD_SSP3_SCK__GPIO_2_24			0x2183 -MX28_PAD_SSP3_MOSI__GPIO_2_25			0x2193 -MX28_PAD_SSP3_MISO__GPIO_2_26			0x21a3 -MX28_PAD_SSP3_SS0__GPIO_2_27			0x21b3 -MX28_PAD_AUART0_RX__GPIO_3_0			0x3003 -MX28_PAD_AUART0_TX__GPIO_3_1			0x3013 -MX28_PAD_AUART0_CTS__GPIO_3_2			0x3023 -MX28_PAD_AUART0_RTS__GPIO_3_3			0x3033 -MX28_PAD_AUART1_RX__GPIO_3_4			0x3043 -MX28_PAD_AUART1_TX__GPIO_3_5			0x3053 -MX28_PAD_AUART1_CTS__GPIO_3_6			0x3063 -MX28_PAD_AUART1_RTS__GPIO_3_7			0x3073 -MX28_PAD_AUART2_RX__GPIO_3_8			0x3083 -MX28_PAD_AUART2_TX__GPIO_3_9			0x3093 -MX28_PAD_AUART2_CTS__GPIO_3_10			0x30a3 -MX28_PAD_AUART2_RTS__GPIO_3_11			0x30b3 -MX28_PAD_AUART3_RX__GPIO_3_12			0x30c3 -MX28_PAD_AUART3_TX__GPIO_3_13			0x30d3 -MX28_PAD_AUART3_CTS__GPIO_3_14			0x30e3 -MX28_PAD_AUART3_RTS__GPIO_3_15			0x30f3 -MX28_PAD_PWM0__GPIO_3_16			0x3103 -MX28_PAD_PWM1__GPIO_3_17			0x3113 -MX28_PAD_PWM2__GPIO_3_18			0x3123 -MX28_PAD_SAIF0_MCLK__GPIO_3_20			0x3143 -MX28_PAD_SAIF0_LRCLK__GPIO_3_21			0x3153 -MX28_PAD_SAIF0_BITCLK__GPIO_3_22		0x3163 -MX28_PAD_SAIF0_SDATA0__GPIO_3_23		0x3173 -MX28_PAD_I2C0_SCL__GPIO_3_24			0x3183 -MX28_PAD_I2C0_SDA__GPIO_3_25			0x3193 -MX28_PAD_SAIF1_SDATA0__GPIO_3_26		0x31a3 -MX28_PAD_SPDIF__GPIO_3_27			0x31b3 -MX28_PAD_PWM3__GPIO_3_28			0x31c3 -MX28_PAD_PWM4__GPIO_3_29			0x31d3 -MX28_PAD_LCD_RESET__GPIO_3_30			0x31e3 -MX28_PAD_ENET0_MDC__GPIO_4_0			0x4003 -MX28_PAD_ENET0_MDIO__GPIO_4_1			0x4013 -MX28_PAD_ENET0_RX_EN__GPIO_4_2			0x4023 -MX28_PAD_ENET0_RXD0__GPIO_4_3			0x4033 -MX28_PAD_ENET0_RXD1__GPIO_4_4			0x4043 -MX28_PAD_ENET0_TX_CLK__GPIO_4_5			0x4053 -MX28_PAD_ENET0_TX_EN__GPIO_4_6			0x4063 -MX28_PAD_ENET0_TXD0__GPIO_4_7			0x4073 -MX28_PAD_ENET0_TXD1__GPIO_4_8			0x4083 -MX28_PAD_ENET0_RXD2__GPIO_4_9			0x4093 -MX28_PAD_ENET0_RXD3__GPIO_4_10			0x40a3 -MX28_PAD_ENET0_TXD2__GPIO_4_11			0x40b3 -MX28_PAD_ENET0_TXD3__GPIO_4_12			0x40c3 -MX28_PAD_ENET0_RX_CLK__GPIO_4_13		0x40d3 -MX28_PAD_ENET0_COL__GPIO_4_14			0x40e3 -MX28_PAD_ENET0_CRS__GPIO_4_15			0x40f3 -MX28_PAD_ENET_CLK__GPIO_4_16			0x4103 -MX28_PAD_JTAG_RTCK__GPIO_4_20			0x4143 - -Valid values for i.MX23 pinmux-id: - -pinmux						id -------						-- -MX23_PAD_GPMI_D00__GPMI_D00			0x0000 -MX23_PAD_GPMI_D01__GPMI_D01			0x0010 -MX23_PAD_GPMI_D02__GPMI_D02			0x0020 -MX23_PAD_GPMI_D03__GPMI_D03			0x0030 -MX23_PAD_GPMI_D04__GPMI_D04			0x0040 -MX23_PAD_GPMI_D05__GPMI_D05			0x0050 -MX23_PAD_GPMI_D06__GPMI_D06			0x0060 -MX23_PAD_GPMI_D07__GPMI_D07			0x0070 -MX23_PAD_GPMI_D08__GPMI_D08			0x0080 -MX23_PAD_GPMI_D09__GPMI_D09			0x0090 -MX23_PAD_GPMI_D10__GPMI_D10			0x00a0 -MX23_PAD_GPMI_D11__GPMI_D11			0x00b0 -MX23_PAD_GPMI_D12__GPMI_D12			0x00c0 -MX23_PAD_GPMI_D13__GPMI_D13			0x00d0 -MX23_PAD_GPMI_D14__GPMI_D14			0x00e0 -MX23_PAD_GPMI_D15__GPMI_D15			0x00f0 -MX23_PAD_GPMI_CLE__GPMI_CLE			0x0100 -MX23_PAD_GPMI_ALE__GPMI_ALE			0x0110 -MX23_PAD_GPMI_CE2N__GPMI_CE2N			0x0120 -MX23_PAD_GPMI_RDY0__GPMI_RDY0			0x0130 -MX23_PAD_GPMI_RDY1__GPMI_RDY1			0x0140 -MX23_PAD_GPMI_RDY2__GPMI_RDY2			0x0150 -MX23_PAD_GPMI_RDY3__GPMI_RDY3			0x0160 -MX23_PAD_GPMI_WPN__GPMI_WPN			0x0170 -MX23_PAD_GPMI_WRN__GPMI_WRN			0x0180 -MX23_PAD_GPMI_RDN__GPMI_RDN			0x0190 -MX23_PAD_AUART1_CTS__AUART1_CTS			0x01a0 -MX23_PAD_AUART1_RTS__AUART1_RTS			0x01b0 -MX23_PAD_AUART1_RX__AUART1_RX			0x01c0 -MX23_PAD_AUART1_TX__AUART1_TX			0x01d0 -MX23_PAD_I2C_SCL__I2C_SCL			0x01e0 -MX23_PAD_I2C_SDA__I2C_SDA			0x01f0 -MX23_PAD_LCD_D00__LCD_D00			0x1000 -MX23_PAD_LCD_D01__LCD_D01			0x1010 -MX23_PAD_LCD_D02__LCD_D02			0x1020 -MX23_PAD_LCD_D03__LCD_D03			0x1030 -MX23_PAD_LCD_D04__LCD_D04			0x1040 -MX23_PAD_LCD_D05__LCD_D05			0x1050 -MX23_PAD_LCD_D06__LCD_D06			0x1060 -MX23_PAD_LCD_D07__LCD_D07			0x1070 -MX23_PAD_LCD_D08__LCD_D08			0x1080 -MX23_PAD_LCD_D09__LCD_D09			0x1090 -MX23_PAD_LCD_D10__LCD_D10			0x10a0 -MX23_PAD_LCD_D11__LCD_D11			0x10b0 -MX23_PAD_LCD_D12__LCD_D12			0x10c0 -MX23_PAD_LCD_D13__LCD_D13			0x10d0 -MX23_PAD_LCD_D14__LCD_D14			0x10e0 -MX23_PAD_LCD_D15__LCD_D15			0x10f0 -MX23_PAD_LCD_D16__LCD_D16			0x1100 -MX23_PAD_LCD_D17__LCD_D17			0x1110 -MX23_PAD_LCD_RESET__LCD_RESET			0x1120 -MX23_PAD_LCD_RS__LCD_RS				0x1130 -MX23_PAD_LCD_WR__LCD_WR				0x1140 -MX23_PAD_LCD_CS__LCD_CS				0x1150 -MX23_PAD_LCD_DOTCK__LCD_DOTCK			0x1160 -MX23_PAD_LCD_ENABLE__LCD_ENABLE			0x1170 -MX23_PAD_LCD_HSYNC__LCD_HSYNC			0x1180 -MX23_PAD_LCD_VSYNC__LCD_VSYNC			0x1190 -MX23_PAD_PWM0__PWM0				0x11a0 -MX23_PAD_PWM1__PWM1				0x11b0 -MX23_PAD_PWM2__PWM2				0x11c0 -MX23_PAD_PWM3__PWM3				0x11d0 -MX23_PAD_PWM4__PWM4				0x11e0 -MX23_PAD_SSP1_CMD__SSP1_CMD			0x2000 -MX23_PAD_SSP1_DETECT__SSP1_DETECT		0x2010 -MX23_PAD_SSP1_DATA0__SSP1_DATA0			0x2020 -MX23_PAD_SSP1_DATA1__SSP1_DATA1			0x2030 -MX23_PAD_SSP1_DATA2__SSP1_DATA2			0x2040 -MX23_PAD_SSP1_DATA3__SSP1_DATA3			0x2050 -MX23_PAD_SSP1_SCK__SSP1_SCK			0x2060 -MX23_PAD_ROTARYA__ROTARYA			0x2070 -MX23_PAD_ROTARYB__ROTARYB			0x2080 -MX23_PAD_EMI_A00__EMI_A00			0x2090 -MX23_PAD_EMI_A01__EMI_A01			0x20a0 -MX23_PAD_EMI_A02__EMI_A02			0x20b0 -MX23_PAD_EMI_A03__EMI_A03			0x20c0 -MX23_PAD_EMI_A04__EMI_A04			0x20d0 -MX23_PAD_EMI_A05__EMI_A05			0x20e0 -MX23_PAD_EMI_A06__EMI_A06			0x20f0 -MX23_PAD_EMI_A07__EMI_A07			0x2100 -MX23_PAD_EMI_A08__EMI_A08			0x2110 -MX23_PAD_EMI_A09__EMI_A09			0x2120 -MX23_PAD_EMI_A10__EMI_A10			0x2130 -MX23_PAD_EMI_A11__EMI_A11			0x2140 -MX23_PAD_EMI_A12__EMI_A12			0x2150 -MX23_PAD_EMI_BA0__EMI_BA0			0x2160 -MX23_PAD_EMI_BA1__EMI_BA1			0x2170 -MX23_PAD_EMI_CASN__EMI_CASN			0x2180 -MX23_PAD_EMI_CE0N__EMI_CE0N			0x2190 -MX23_PAD_EMI_CE1N__EMI_CE1N			0x21a0 -MX23_PAD_GPMI_CE1N__GPMI_CE1N			0x21b0 -MX23_PAD_GPMI_CE0N__GPMI_CE0N			0x21c0 -MX23_PAD_EMI_CKE__EMI_CKE			0x21d0 -MX23_PAD_EMI_RASN__EMI_RASN			0x21e0 -MX23_PAD_EMI_WEN__EMI_WEN			0x21f0 -MX23_PAD_EMI_D00__EMI_D00			0x3000 -MX23_PAD_EMI_D01__EMI_D01			0x3010 -MX23_PAD_EMI_D02__EMI_D02			0x3020 -MX23_PAD_EMI_D03__EMI_D03			0x3030 -MX23_PAD_EMI_D04__EMI_D04			0x3040 -MX23_PAD_EMI_D05__EMI_D05			0x3050 -MX23_PAD_EMI_D06__EMI_D06			0x3060 -MX23_PAD_EMI_D07__EMI_D07			0x3070 -MX23_PAD_EMI_D08__EMI_D08			0x3080 -MX23_PAD_EMI_D09__EMI_D09			0x3090 -MX23_PAD_EMI_D10__EMI_D10			0x30a0 -MX23_PAD_EMI_D11__EMI_D11			0x30b0 -MX23_PAD_EMI_D12__EMI_D12			0x30c0 -MX23_PAD_EMI_D13__EMI_D13			0x30d0 -MX23_PAD_EMI_D14__EMI_D14			0x30e0 -MX23_PAD_EMI_D15__EMI_D15			0x30f0 -MX23_PAD_EMI_DQM0__EMI_DQM0			0x3100 -MX23_PAD_EMI_DQM1__EMI_DQM1			0x3110 -MX23_PAD_EMI_DQS0__EMI_DQS0			0x3120 -MX23_PAD_EMI_DQS1__EMI_DQS1			0x3130 -MX23_PAD_EMI_CLK__EMI_CLK			0x3140 -MX23_PAD_EMI_CLKN__EMI_CLKN			0x3150 -MX23_PAD_GPMI_D00__LCD_D8			0x0001 -MX23_PAD_GPMI_D01__LCD_D9			0x0011 -MX23_PAD_GPMI_D02__LCD_D10			0x0021 -MX23_PAD_GPMI_D03__LCD_D11			0x0031 -MX23_PAD_GPMI_D04__LCD_D12			0x0041 -MX23_PAD_GPMI_D05__LCD_D13			0x0051 -MX23_PAD_GPMI_D06__LCD_D14			0x0061 -MX23_PAD_GPMI_D07__LCD_D15			0x0071 -MX23_PAD_GPMI_D08__LCD_D18			0x0081 -MX23_PAD_GPMI_D09__LCD_D19			0x0091 -MX23_PAD_GPMI_D10__LCD_D20			0x00a1 -MX23_PAD_GPMI_D11__LCD_D21			0x00b1 -MX23_PAD_GPMI_D12__LCD_D22			0x00c1 -MX23_PAD_GPMI_D13__LCD_D23			0x00d1 -MX23_PAD_GPMI_D14__AUART2_RX			0x00e1 -MX23_PAD_GPMI_D15__AUART2_TX			0x00f1 -MX23_PAD_GPMI_CLE__LCD_D16			0x0101 -MX23_PAD_GPMI_ALE__LCD_D17			0x0111 -MX23_PAD_GPMI_CE2N__ATA_A2			0x0121 -MX23_PAD_AUART1_RTS__IR_CLK			0x01b1 -MX23_PAD_AUART1_RX__IR_RX			0x01c1 -MX23_PAD_AUART1_TX__IR_TX			0x01d1 -MX23_PAD_I2C_SCL__GPMI_RDY2			0x01e1 -MX23_PAD_I2C_SDA__GPMI_CE2N			0x01f1 -MX23_PAD_LCD_D00__ETM_DA8			0x1001 -MX23_PAD_LCD_D01__ETM_DA9			0x1011 -MX23_PAD_LCD_D02__ETM_DA10			0x1021 -MX23_PAD_LCD_D03__ETM_DA11			0x1031 -MX23_PAD_LCD_D04__ETM_DA12			0x1041 -MX23_PAD_LCD_D05__ETM_DA13			0x1051 -MX23_PAD_LCD_D06__ETM_DA14			0x1061 -MX23_PAD_LCD_D07__ETM_DA15			0x1071 -MX23_PAD_LCD_D08__ETM_DA0			0x1081 -MX23_PAD_LCD_D09__ETM_DA1			0x1091 -MX23_PAD_LCD_D10__ETM_DA2			0x10a1 -MX23_PAD_LCD_D11__ETM_DA3			0x10b1 -MX23_PAD_LCD_D12__ETM_DA4			0x10c1 -MX23_PAD_LCD_D13__ETM_DA5			0x10d1 -MX23_PAD_LCD_D14__ETM_DA6			0x10e1 -MX23_PAD_LCD_D15__ETM_DA7			0x10f1 -MX23_PAD_LCD_RESET__ETM_TCTL			0x1121 -MX23_PAD_LCD_RS__ETM_TCLK			0x1131 -MX23_PAD_LCD_DOTCK__GPMI_RDY3			0x1161 -MX23_PAD_LCD_ENABLE__I2C_SCL			0x1171 -MX23_PAD_LCD_HSYNC__I2C_SDA			0x1181 -MX23_PAD_LCD_VSYNC__LCD_BUSY			0x1191 -MX23_PAD_PWM0__ROTARYA				0x11a1 -MX23_PAD_PWM1__ROTARYB				0x11b1 -MX23_PAD_PWM2__GPMI_RDY3			0x11c1 -MX23_PAD_PWM3__ETM_TCTL				0x11d1 -MX23_PAD_PWM4__ETM_TCLK				0x11e1 -MX23_PAD_SSP1_DETECT__GPMI_CE3N			0x2011 -MX23_PAD_SSP1_DATA1__I2C_SCL			0x2031 -MX23_PAD_SSP1_DATA2__I2C_SDA			0x2041 -MX23_PAD_ROTARYA__AUART2_RTS			0x2071 -MX23_PAD_ROTARYB__AUART2_CTS			0x2081 -MX23_PAD_GPMI_D00__SSP2_DATA0			0x0002 -MX23_PAD_GPMI_D01__SSP2_DATA1			0x0012 -MX23_PAD_GPMI_D02__SSP2_DATA2			0x0022 -MX23_PAD_GPMI_D03__SSP2_DATA3			0x0032 -MX23_PAD_GPMI_D04__SSP2_DATA4			0x0042 -MX23_PAD_GPMI_D05__SSP2_DATA5			0x0052 -MX23_PAD_GPMI_D06__SSP2_DATA6			0x0062 -MX23_PAD_GPMI_D07__SSP2_DATA7			0x0072 -MX23_PAD_GPMI_D08__SSP1_DATA4			0x0082 -MX23_PAD_GPMI_D09__SSP1_DATA5			0x0092 -MX23_PAD_GPMI_D10__SSP1_DATA6			0x00a2 -MX23_PAD_GPMI_D11__SSP1_DATA7			0x00b2 -MX23_PAD_GPMI_D15__GPMI_CE3N			0x00f2 -MX23_PAD_GPMI_RDY0__SSP2_DETECT			0x0132 -MX23_PAD_GPMI_RDY1__SSP2_CMD			0x0142 -MX23_PAD_GPMI_WRN__SSP2_SCK			0x0182 -MX23_PAD_AUART1_CTS__SSP1_DATA4			0x01a2 -MX23_PAD_AUART1_RTS__SSP1_DATA5			0x01b2 -MX23_PAD_AUART1_RX__SSP1_DATA6			0x01c2 -MX23_PAD_AUART1_TX__SSP1_DATA7			0x01d2 -MX23_PAD_I2C_SCL__AUART1_TX			0x01e2 -MX23_PAD_I2C_SDA__AUART1_RX			0x01f2 -MX23_PAD_LCD_D08__SAIF2_SDATA0			0x1082 -MX23_PAD_LCD_D09__SAIF1_SDATA0			0x1092 -MX23_PAD_LCD_D10__SAIF_MCLK_BITCLK		0x10a2 -MX23_PAD_LCD_D11__SAIF_LRCLK			0x10b2 -MX23_PAD_LCD_D12__SAIF2_SDATA1			0x10c2 -MX23_PAD_LCD_D13__SAIF2_SDATA2			0x10d2 -MX23_PAD_LCD_D14__SAIF1_SDATA2			0x10e2 -MX23_PAD_LCD_D15__SAIF1_SDATA1			0x10f2 -MX23_PAD_LCD_D16__SAIF_ALT_BITCLK		0x1102 -MX23_PAD_LCD_RESET__GPMI_CE3N			0x1122 -MX23_PAD_PWM0__DUART_RX				0x11a2 -MX23_PAD_PWM1__DUART_TX				0x11b2 -MX23_PAD_PWM3__AUART1_CTS			0x11d2 -MX23_PAD_PWM4__AUART1_RTS			0x11e2 -MX23_PAD_SSP1_CMD__JTAG_TDO			0x2002 -MX23_PAD_SSP1_DETECT__USB_OTG_ID		0x2012 -MX23_PAD_SSP1_DATA0__JTAG_TDI			0x2022 -MX23_PAD_SSP1_DATA1__JTAG_TCLK			0x2032 -MX23_PAD_SSP1_DATA2__JTAG_RTCK			0x2042 -MX23_PAD_SSP1_DATA3__JTAG_TMS			0x2052 -MX23_PAD_SSP1_SCK__JTAG_TRST			0x2062 -MX23_PAD_ROTARYA__SPDIF				0x2072 -MX23_PAD_ROTARYB__GPMI_CE3N			0x2082 -MX23_PAD_GPMI_D00__GPIO_0_0			0x0003 -MX23_PAD_GPMI_D01__GPIO_0_1			0x0013 -MX23_PAD_GPMI_D02__GPIO_0_2			0x0023 -MX23_PAD_GPMI_D03__GPIO_0_3			0x0033 -MX23_PAD_GPMI_D04__GPIO_0_4			0x0043 -MX23_PAD_GPMI_D05__GPIO_0_5			0x0053 -MX23_PAD_GPMI_D06__GPIO_0_6			0x0063 -MX23_PAD_GPMI_D07__GPIO_0_7			0x0073 -MX23_PAD_GPMI_D08__GPIO_0_8			0x0083 -MX23_PAD_GPMI_D09__GPIO_0_9			0x0093 -MX23_PAD_GPMI_D10__GPIO_0_10			0x00a3 -MX23_PAD_GPMI_D11__GPIO_0_11			0x00b3 -MX23_PAD_GPMI_D12__GPIO_0_12			0x00c3 -MX23_PAD_GPMI_D13__GPIO_0_13			0x00d3 -MX23_PAD_GPMI_D14__GPIO_0_14			0x00e3 -MX23_PAD_GPMI_D15__GPIO_0_15			0x00f3 -MX23_PAD_GPMI_CLE__GPIO_0_16			0x0103 -MX23_PAD_GPMI_ALE__GPIO_0_17			0x0113 -MX23_PAD_GPMI_CE2N__GPIO_0_18			0x0123 -MX23_PAD_GPMI_RDY0__GPIO_0_19			0x0133 -MX23_PAD_GPMI_RDY1__GPIO_0_20			0x0143 -MX23_PAD_GPMI_RDY2__GPIO_0_21			0x0153 -MX23_PAD_GPMI_RDY3__GPIO_0_22			0x0163 -MX23_PAD_GPMI_WPN__GPIO_0_23			0x0173 -MX23_PAD_GPMI_WRN__GPIO_0_24			0x0183 -MX23_PAD_GPMI_RDN__GPIO_0_25			0x0193 -MX23_PAD_AUART1_CTS__GPIO_0_26			0x01a3 -MX23_PAD_AUART1_RTS__GPIO_0_27			0x01b3 -MX23_PAD_AUART1_RX__GPIO_0_28			0x01c3 -MX23_PAD_AUART1_TX__GPIO_0_29			0x01d3 -MX23_PAD_I2C_SCL__GPIO_0_30			0x01e3 -MX23_PAD_I2C_SDA__GPIO_0_31			0x01f3 -MX23_PAD_LCD_D00__GPIO_1_0			0x1003 -MX23_PAD_LCD_D01__GPIO_1_1			0x1013 -MX23_PAD_LCD_D02__GPIO_1_2			0x1023 -MX23_PAD_LCD_D03__GPIO_1_3			0x1033 -MX23_PAD_LCD_D04__GPIO_1_4			0x1043 -MX23_PAD_LCD_D05__GPIO_1_5			0x1053 -MX23_PAD_LCD_D06__GPIO_1_6			0x1063 -MX23_PAD_LCD_D07__GPIO_1_7			0x1073 -MX23_PAD_LCD_D08__GPIO_1_8			0x1083 -MX23_PAD_LCD_D09__GPIO_1_9			0x1093 -MX23_PAD_LCD_D10__GPIO_1_10			0x10a3 -MX23_PAD_LCD_D11__GPIO_1_11			0x10b3 -MX23_PAD_LCD_D12__GPIO_1_12			0x10c3 -MX23_PAD_LCD_D13__GPIO_1_13			0x10d3 -MX23_PAD_LCD_D14__GPIO_1_14			0x10e3 -MX23_PAD_LCD_D15__GPIO_1_15			0x10f3 -MX23_PAD_LCD_D16__GPIO_1_16			0x1103 -MX23_PAD_LCD_D17__GPIO_1_17			0x1113 -MX23_PAD_LCD_RESET__GPIO_1_18			0x1123 -MX23_PAD_LCD_RS__GPIO_1_19			0x1133 -MX23_PAD_LCD_WR__GPIO_1_20			0x1143 -MX23_PAD_LCD_CS__GPIO_1_21			0x1153 -MX23_PAD_LCD_DOTCK__GPIO_1_22			0x1163 -MX23_PAD_LCD_ENABLE__GPIO_1_23			0x1173 -MX23_PAD_LCD_HSYNC__GPIO_1_24			0x1183 -MX23_PAD_LCD_VSYNC__GPIO_1_25			0x1193 -MX23_PAD_PWM0__GPIO_1_26			0x11a3 -MX23_PAD_PWM1__GPIO_1_27			0x11b3 -MX23_PAD_PWM2__GPIO_1_28			0x11c3 -MX23_PAD_PWM3__GPIO_1_29			0x11d3 -MX23_PAD_PWM4__GPIO_1_30			0x11e3 -MX23_PAD_SSP1_CMD__GPIO_2_0			0x2003 -MX23_PAD_SSP1_DETECT__GPIO_2_1			0x2013 -MX23_PAD_SSP1_DATA0__GPIO_2_2			0x2023 -MX23_PAD_SSP1_DATA1__GPIO_2_3			0x2033 -MX23_PAD_SSP1_DATA2__GPIO_2_4			0x2043 -MX23_PAD_SSP1_DATA3__GPIO_2_5			0x2053 -MX23_PAD_SSP1_SCK__GPIO_2_6			0x2063 -MX23_PAD_ROTARYA__GPIO_2_7			0x2073 -MX23_PAD_ROTARYB__GPIO_2_8			0x2083 -MX23_PAD_EMI_A00__GPIO_2_9			0x2093 -MX23_PAD_EMI_A01__GPIO_2_10			0x20a3 -MX23_PAD_EMI_A02__GPIO_2_11			0x20b3 -MX23_PAD_EMI_A03__GPIO_2_12			0x20c3 -MX23_PAD_EMI_A04__GPIO_2_13			0x20d3 -MX23_PAD_EMI_A05__GPIO_2_14			0x20e3 -MX23_PAD_EMI_A06__GPIO_2_15			0x20f3 -MX23_PAD_EMI_A07__GPIO_2_16			0x2103 -MX23_PAD_EMI_A08__GPIO_2_17			0x2113 -MX23_PAD_EMI_A09__GPIO_2_18			0x2123 -MX23_PAD_EMI_A10__GPIO_2_19			0x2133 -MX23_PAD_EMI_A11__GPIO_2_20			0x2143 -MX23_PAD_EMI_A12__GPIO_2_21			0x2153 -MX23_PAD_EMI_BA0__GPIO_2_22			0x2163 -MX23_PAD_EMI_BA1__GPIO_2_23			0x2173 -MX23_PAD_EMI_CASN__GPIO_2_24			0x2183 -MX23_PAD_EMI_CE0N__GPIO_2_25			0x2193 -MX23_PAD_EMI_CE1N__GPIO_2_26			0x21a3 -MX23_PAD_GPMI_CE1N__GPIO_2_27			0x21b3 -MX23_PAD_GPMI_CE0N__GPIO_2_28			0x21c3 -MX23_PAD_EMI_CKE__GPIO_2_29			0x21d3 -MX23_PAD_EMI_RASN__GPIO_2_30			0x21e3 -MX23_PAD_EMI_WEN__GPIO_2_31			0x21f3 +Valid values for i.MX28/i.MX23 pinmux-id are defined in +arch/arm/boot/dts/imx28-pinfunc.h and arch/arm/boot/dts/imx23-pinfunc.h. +The definitions for the padconfig properties can be found in +arch/arm/boot/dts/mxs-pinfunc.h. diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,armada-370-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,armada-370-pinctrl.txt index 01ef408e205..adda2a8d1d5 100644 --- a/Documentation/devicetree/bindings/pinctrl/marvell,armada-370-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/marvell,armada-370-pinctrl.txt @@ -5,6 +5,7 @@ part and usage.  Required properties:  - compatible: "marvell,88f6710-pinctrl" +- reg: register specifier of MPP registers  Available mpp pins/groups and functions:  Note: brackets (x) are not part of the mpp name for marvell,function and given diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,armada-375-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,armada-375-pinctrl.txt new file mode 100644 index 00000000000..7de0cda4a37 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/marvell,armada-375-pinctrl.txt @@ -0,0 +1,82 @@ +* Marvell Armada 375 SoC pinctrl driver for mpp + +Please refer to marvell,mvebu-pinctrl.txt in this directory for common binding +part and usage. + +Required properties: +- compatible: "marvell,88f6720-pinctrl" +- reg: register specifier of MPP registers + +Available mpp pins/groups and functions: +Note: brackets (x) are not part of the mpp name for marvell,function and given +only for more detailed description in this document. + +name          pins     functions +================================================================================ +mpp0          0        gpio, dev(ad2), spi0(cs1), spi1(cs1) +mpp1          1        gpio, dev(ad3), spi0(mosi), spi1(mosi) +mpp2          2        gpio, dev(ad4), ptp(eventreq), led(c0), audio(sdi) +mpp3          3        gpio, dev(ad5), ptp(triggen), led(p3), audio(mclk) +mpp4          4        gpio, dev(ad6), spi0(miso), spi1(miso) +mpp5          5        gpio, dev(ad7), spi0(cs2), spi1(cs2) +mpp6          6        gpio, dev(ad0), led(p1), audio(rclk) +mpp7          7        gpio, dev(ad1), ptp(clk), led(p2), audio(extclk) +mpp8          8        gpio, dev (bootcs), spi0(cs0), spi1(cs0) +mpp9          9        gpio, nf(wen), spi0(sck), spi1(sck) +mpp10        10        gpio, nf(ren), dram(vttctrl), led(c1) +mpp11        11        gpio, dev(a0), led(c2), audio(sdo) +mpp12        12        gpio, dev(a1), audio(bclk) +mpp13        13        gpio, dev(readyn), pcie0(rstoutn), pcie1(rstoutn) +mpp14        14        gpio, i2c0(sda), uart1(txd) +mpp15        15        gpio, i2c0(sck), uart1(rxd) +mpp16        16        gpio, uart0(txd) +mpp17        17        gpio, uart0(rxd) +mpp18        18        gpio, tdm(intn) +mpp19        19        gpio, tdm(rstn) +mpp20        20        gpio, tdm(pclk) +mpp21        21        gpio, tdm(fsync) +mpp22        22        gpio, tdm(drx) +mpp23        23        gpio, tdm(dtx) +mpp24        24        gpio, led(p0), ge1(rxd0), sd(cmd), uart0(rts) +mpp25        25        gpio, led(p2), ge1(rxd1), sd(d0), uart0(cts) +mpp26        26        gpio, pcie0(clkreq), ge1(rxd2), sd(d2), uart1(rts) +mpp27        27        gpio, pcie1(clkreq), ge1(rxd3), sd(d1), uart1(cts) +mpp28        28        gpio, led(p3), ge1(txctl), sd(clk) +mpp29        29        gpio, pcie1(clkreq), ge1(rxclk), sd(d3) +mpp30        30        gpio, ge1(txd0), spi1(cs0) +mpp31        31        gpio, ge1(txd1), spi1(mosi) +mpp32        32        gpio, ge1(txd2), spi1(sck), ptp(triggen) +mpp33        33        gpio, ge1(txd3), spi1(miso) +mpp34        34        gpio, ge1(txclkout), spi1(sck) +mpp35        35        gpio, ge1(rxctl), spi1(cs1), spi0(cs2) +mpp36        36        gpio, pcie0(clkreq) +mpp37        37        gpio, pcie0(clkreq), tdm(intn), ge(mdc) +mpp38        38        gpio, pcie1(clkreq), ge(mdio) +mpp39        39        gpio, ref(clkout) +mpp40        40        gpio, uart1(txd) +mpp41        41        gpio, uart1(rxd) +mpp42        42        gpio, spi1(cs2), led(c0) +mpp43        43        gpio, sata0(prsnt), dram(vttctrl) +mpp44        44        gpio, sata0(prsnt) +mpp45        45        gpio, spi0(cs2), pcie0(rstoutn) +mpp46        46        gpio, led(p0), ge0(txd0), ge1(txd0) +mpp47        47        gpio, led(p1), ge0(txd1), ge1(txd1) +mpp48        48        gpio, led(p2), ge0(txd2), ge1(txd2) +mpp49        49        gpio, led(p3), ge0(txd3), ge1(txd3) +mpp50        50        gpio, led(c0), ge0(rxd0), ge1(rxd0) +mpp51        51        gpio, led(c1), ge0(rxd1), ge1(rxd1) +mpp52        52        gpio, led(c2), ge0(rxd2), ge1(rxd2) +mpp53        53        gpio, pcie1(rstoutn), ge0(rxd3), ge1(rxd3) +mpp54        54        gpio, pcie0(rstoutn), ge0(rxctl), ge1(rxctl) +mpp55        55        gpio, ge0(rxclk), ge1(rxclk) +mpp56        56        gpio, ge0(txclkout), ge1(txclkout) +mpp57        57        gpio, ge0(txctl), ge1(txctl) +mpp58        58        gpio, led(c0) +mpp59        59        gpio, led(c1) +mpp60        60        gpio, uart1(txd), led(c2) +mpp61        61        gpio, i2c1(sda), uart1(rxd), spi1(cs2), led(p0) +mpp62        62        gpio, i2c1(sck), led(p1) +mpp63        63        gpio, ptp(triggen), led(p2) +mpp64        64        gpio, dram(vttctrl), led(p3) +mpp65        65        gpio, sata1(prsnt) +mpp66        66        gpio, ptp(eventreq), spi1(cs3) diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,armada-38x-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,armada-38x-pinctrl.txt new file mode 100644 index 00000000000..b17c96849fc --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/marvell,armada-38x-pinctrl.txt @@ -0,0 +1,80 @@ +* Marvell Armada 380/385 SoC pinctrl driver for mpp + +Please refer to marvell,mvebu-pinctrl.txt in this directory for common binding +part and usage. + +Required properties: +- compatible: "marvell,88f6810-pinctrl", "marvell,88f6820-pinctrl" or +  "marvell,88f6828-pinctrl" depending on the specific variant of the +  SoC being used. +- reg: register specifier of MPP registers + +Available mpp pins/groups and functions: +Note: brackets (x) are not part of the mpp name for marvell,function and given +only for more detailed description in this document. + +name          pins     functions +================================================================================ +mpp0          0        gpio, ua0(rxd) +mpp1          1        gpio, ua0(txd) +mpp2          2        gpio, i2c0(sck) +mpp3          3        gpio, i2c0(sda) +mpp4          4        gpio, ge(mdc), ua1(txd), ua0(rts) +mpp5          5        gpio, ge(mdio), ua1(rxd), ua0(cts) +mpp6          6        gpio, ge0(txclkout), ge0(crs), dev(cs3) +mpp7          7        gpio, ge0(txd0), dev(ad9) +mpp8          8        gpio, ge0(txd1), dev(ad10) +mpp9          9        gpio, ge0(txd2), dev(ad11) +mpp10         10       gpio, ge0(txd3), dev(ad12) +mpp11         11       gpio, ge0(txctl), dev(ad13) +mpp12         12       gpio, ge0(rxd0), pcie0(rstout), pcie1(rstout) [1], spi0(cs1), dev(ad14) +mpp13         13       gpio, ge0(rxd1), pcie0(clkreq), pcie1(clkreq) [1], spi0(cs2), dev(ad15) +mpp14         14       gpio, ge0(rxd2), ptp(clk), m(vtt_ctrl), spi0(cs3), dev(wen1) +mpp15         15       gpio, ge0(rxd3), ge(mdc slave), pcie0(rstout), spi0(mosi), pcie1(rstout) [1] +mpp16         16       gpio, ge0(rxctl), ge(mdio slave), m(decc_err), spi0(miso), pcie0(clkreq) +mpp17         17       gpio, ge0(rxclk), ptp(clk), ua1(rxd), spi0(sck), sata1(prsnt) +mpp18         18       gpio, ge0(rxerr), ptp(trig_gen), ua1(txd), spi0(cs0), pcie1(rstout) [1] +mpp19         19       gpio, ge0(col), ptp(event_req), pcie0(clkreq), sata1(prsnt), ua0(cts) +mpp20         20       gpio, ge0(txclk), ptp(clk), pcie1(rstout) [1], sata0(prsnt), ua0(rts) +mpp21         21       gpio, spi0(cs1), ge1(rxd0), sata0(prsnt), sd0(cmd), dev(bootcs) +mpp22         22       gpio, spi0(mosi), dev(ad0) +mpp23         23       gpio, spi0(sck), dev(ad2) +mpp24         24       gpio, spi0(miso), ua0(cts), ua1(rxd), sd0(d4), dev(ready) +mpp25         25       gpio, spi0(cs0), ua0(rts), ua1(txd), sd0(d5), dev(cs0) +mpp26         26       gpio, spi0(cs2), i2c1(sck), sd0(d6), dev(cs1) +mpp27         27       gpio, spi0(cs3), ge1(txclkout), i2c1(sda), sd0(d7), dev(cs2) +mpp28         28       gpio, ge1(txd0), sd0(clk), dev(ad5) +mpp29         29       gpio, ge1(txd1), dev(ale0) +mpp30         30       gpio, ge1(txd2), dev(oen) +mpp31         31       gpio, ge1(txd3), dev(ale1) +mpp32         32       gpio, ge1(txctl), dev(wen0) +mpp33         33       gpio, m(decc_err), dev(ad3) +mpp34         34       gpio, dev(ad1) +mpp35         35       gpio, ref(clk_out1), dev(a1) +mpp36         36       gpio, ptp(trig_gen), dev(a0) +mpp37         37       gpio, ptp(clk), ge1(rxclk), sd0(d3), dev(ad8) +mpp38         38       gpio, ptp(event_req), ge1(rxd1), ref(clk_out0), sd0(d0), dev(ad4) +mpp39         39       gpio, i2c1(sck), ge1(rxd2), ua0(cts), sd0(d1), dev(a2) +mpp40         40       gpio, i2c1(sda), ge1(rxd3), ua0(rts), sd0(d2), dev(ad6) +mpp41         41       gpio, ua1(rxd), ge1(rxctl), ua0(cts), spi1(cs3), dev(burst/last) +mpp42         42       gpio, ua1(txd), ua0(rts), dev(ad7) +mpp43         43       gpio, pcie0(clkreq), m(vtt_ctrl), m(decc_err), pcie0(rstout), dev(clkout) +mpp44         44       gpio, sata0(prsnt), sata1(prsnt), sata2(prsnt) [2], sata3(prsnt) [3], pcie0(rstout) +mpp45         45       gpio, ref(clk_out0), pcie0(rstout), pcie1(rstout) [1], pcie2(rstout), pcie3(rstout) +mpp46         46       gpio, ref(clk_out1), pcie0(rstout), pcie1(rstout) [1], pcie2(rstout), pcie3(rstout) +mpp47         47       gpio, sata0(prsnt), sata1(prsnt), sata2(prsnt) [2], spi1(cs2), sata3(prsnt) [2] +mpp48         48       gpio, sata0(prsnt), m(vtt_ctrl), tdm2c(pclk), audio(mclk), sd0(d4) +mpp49         49       gpio, sata2(prsnt) [2], sata3(prsnt) [2], tdm2c(fsync), audio(lrclk), sd0(d5) +mpp50         50       gpio, pcie0(rstout), pcie1(rstout) [1], tdm2c(drx), audio(extclk), sd0(cmd) +mpp51         51       gpio, tdm2c(dtx), audio(sdo), m(decc_err) +mpp52         52       gpio, pcie0(rstout), pcie1(rstout) [1], tdm2c(intn), audio(sdi), sd0(d6) +mpp53         53       gpio, sata1(prsnt), sata0(prsnt), tdm2c(rstn), audio(bclk), sd0(d7) +mpp54         54       gpio, sata0(prsnt), sata1(prsnt), pcie0(rstout), pcie1(rstout) [1], sd0(d3) +mpp55         55       gpio, ua1(cts), ge(mdio), pcie1(clkreq) [1], spi1(cs1), sd0(d0) +mpp56         56       gpio, ua1(rts), ge(mdc), m(decc_err), spi1(mosi) +mpp57         57       gpio, spi1(sck), sd0(clk) +mpp58         58       gpio, pcie1(clkreq) [1], i2c1(sck), pcie2(clkreq), spi1(miso), sd0(d1) +mpp59         59       gpio, pcie0(rstout), i2c1(sda), pcie1(rstout) [1], spi1(cs0), sd0(d2) + +[1]: only available on 88F6820 and 88F6828 +[2]: only available on 88F6828 diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,armada-xp-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,armada-xp-pinctrl.txt index bfa0a2e5e0c..373dbccd7ab 100644 --- a/Documentation/devicetree/bindings/pinctrl/marvell,armada-xp-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/marvell,armada-xp-pinctrl.txt @@ -6,6 +6,7 @@ part and usage.  Required properties:  - compatible: "marvell,mv78230-pinctrl", "marvell,mv78260-pinctrl",                "marvell,mv78460-pinctrl" +- reg: register specifier of MPP registers  This driver supports all Armada XP variants, i.e. mv78230, mv78260, and mv78460. diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,dove-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,dove-pinctrl.txt index 50ec3512a29..cf52477cc7e 100644 --- a/Documentation/devicetree/bindings/pinctrl/marvell,dove-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/marvell,dove-pinctrl.txt @@ -6,6 +6,7 @@ part and usage.  Required properties:  - compatible: "marvell,dove-pinctrl"  - clocks: (optional) phandle of pdma clock +- reg: register specifiers of MPP, MPP4, and PMU MPP registers  Available mpp pins/groups and functions:  Note: brackets (x) are not part of the mpp name for marvell,function and given diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,kirkwood-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,kirkwood-pinctrl.txt index 95daf6335c3..730444a9a4d 100644 --- a/Documentation/devicetree/bindings/pinctrl/marvell,kirkwood-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/marvell,kirkwood-pinctrl.txt @@ -8,6 +8,7 @@ Required properties:                "marvell,88f6190-pinctrl", "marvell,88f6192-pinctrl",                "marvell,88f6281-pinctrl", "marvell,88f6282-pinctrl"                "marvell,98dx4122-pinctrl" +- reg: register specifier of MPP registers  This driver supports all kirkwood variants, i.e. 88f6180, 88f619x, and 88f628x.  It also support the 88f6281-based variant in the 98dx412x Bobcat SoCs. diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt index 0a26c3aa4e6..0c09f4eb2af 100644 --- a/Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/marvell,mvebu-pinctrl.txt @@ -37,7 +37,7 @@ uart1: serial@12100 {  pinctrl: pinctrl@d0200 {  	compatible = "marvell,dove-pinctrl"; -	reg = <0xd0200 0x20>; +	reg = <0xd0200 0x14>, <0xd0440 0x04>, <0xd802c 0x08>;  	pmx_uart1_sw: pmx-uart1-sw {  		marvell,pins = "mpp_uart1"; diff --git a/Documentation/devicetree/bindings/pinctrl/marvell,orion-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/marvell,orion-pinctrl.txt new file mode 100644 index 00000000000..27570a3a174 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/marvell,orion-pinctrl.txt @@ -0,0 +1,91 @@ +* Marvell Orion SoC pinctrl driver for mpp + +Please refer to marvell,mvebu-pinctrl.txt in this directory for common binding +part and usage. + +Required properties: +- compatible: "marvell,88f5181l-pinctrl", "marvell,88f5182-pinctrl", +              "marvell,88f5281-pinctrl" + +- reg: two register areas, the first one describing the first two +  contiguous MPP registers, and the second one describing the single +  final MPP register, separated from the previous one. + +Available mpp pins/groups and functions: +Note: brackets (x) are not part of the mpp name for marvell,function and given +only for more detailed description in this document. + +* Marvell Orion 88f5181l + +name          pins     functions +================================================================================ +mpp0          0        pcie(rstout), pci(req2), gpio +mpp1          1        gpio, pci(gnt2) +mpp2          2        gpio, pci(req3), pci-1(pme) +mpp3          3        gpio, pci(gnt3) +mpp4          4        gpio, pci(req4) +mpp5          5        gpio, pci(gnt4) +mpp6          6        gpio, pci(req5), pci-1(clk) +mpp7          7        gpio, pci(gnt5), pci-1(clk) +mpp8          8        gpio, ge(col) +mpp9          9        gpio, ge(rxerr) +mpp10         10       gpio, ge(crs) +mpp11         11       gpio, ge(txerr) +mpp12         12       gpio, ge(txd4) +mpp13         13       gpio, ge(txd5) +mpp14         14       gpio, ge(txd6) +mpp15         15       gpio, ge(txd7) +mpp16         16       ge(rxd4) +mpp17         17       ge(rxd5) +mpp18         18       ge(rxd6) +mpp19         19       ge(rxd7) + +* Marvell Orion 88f5182 + +name          pins     functions +================================================================================ +mpp0          0        pcie(rstout), pci(req2), gpio +mpp1          1        gpio, pci(gnt2) +mpp2          2        gpio, pci(req3), pci-1(pme) +mpp3          3        gpio, pci(gnt3) +mpp4          4        gpio, pci(req4), bootnand(re), sata0(prsnt) +mpp5          5        gpio, pci(gnt4), bootnand(we), sata1(prsnt) +mpp6          6        gpio, pci(req5), nand(re0), sata0(act) +mpp7          7        gpio, pci(gnt5), nand(we0), sata1(act) +mpp8          8        gpio, ge(col) +mpp9          9        gpio, ge(rxerr) +mpp10         10       gpio, ge(crs) +mpp11         11       gpio, ge(txerr) +mpp12         12       gpio, ge(txd4), nand(re1), sata0(ledprsnt) +mpp13         13       gpio, ge(txd5), nand(we1), sata1(ledprsnt) +mpp14         14       gpio, ge(txd6), nand(re2), sata0(ledact) +mpp15         15       gpio, ge(txd7), nand(we2), sata1(ledact) +mpp16         16       uart1(rxd), ge(rxd4), gpio +mpp17         17       uart1(txd), ge(rxd5), gpio +mpp18         18       uart1(cts), ge(rxd6), gpio +mpp19         19       uart1(rts), ge(rxd7), gpio + +* Marvell Orion 88f5281 + +name          pins     functions +================================================================================ +mpp0          0        pcie(rstout), pci(req2), gpio +mpp1          1        gpio, pci(gnt2) +mpp2          2        gpio, pci(req3), pci(pme) +mpp3          3        gpio, pci(gnt3) +mpp4          4        gpio, pci(req4), bootnand(re) +mpp5          5        gpio, pci(gnt4), bootnand(we) +mpp6          6        gpio, pci(req5), nand(re0) +mpp7          7        gpio, pci(gnt5), nand(we0) +mpp8          8        gpio, ge(col) +mpp9          9        gpio, ge(rxerr) +mpp10         10       gpio, ge(crs) +mpp11         11       gpio, ge(txerr) +mpp12         12       gpio, ge(txd4), nand(re1) +mpp13         13       gpio, ge(txd5), nand(we1) +mpp14         14       gpio, ge(txd6), nand(re2) +mpp15         15       gpio, ge(txd7), nand(we2) +mpp16         16       uart1(rxd), ge(rxd4) +mpp17         17       uart1(txd), ge(rxd5) +mpp18         18       uart1(cts), ge(rxd6) +mpp19         19       uart1(rts), ge(rxd7) diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt new file mode 100644 index 00000000000..6464bf76946 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-pinmux.txt @@ -0,0 +1,144 @@ +NVIDIA Tegra124 pinmux controller + +The Tegra124 pinctrl binding is very similar to the Tegra20 and Tegra30 +pinctrl binding, as described in nvidia,tegra20-pinmux.txt and +nvidia,tegra30-pinmux.txt. In fact, this document assumes that binding as +a baseline, and only documents the differences between the two bindings. + +Required properties: +- compatible: "nvidia,tegra124-pinmux" +- reg: Should contain a list of base address and size pairs for: +    -- first entry - the drive strength and pad control registers. +    -- second entry - the pinmux registers + +Tegra124 adds the following optional properties for pin configuration subnodes. +The macros for options are defined in the +	include/dt-binding/pinctrl/pinctrl-tegra.h. +- nvidia,enable-input: Integer. Enable the pin's input path. +		enable :TEGRA_PIN_ENABLE0 and +		disable or output only: TEGRA_PIN_DISABLE. +- nvidia,open-drain: Integer. +		enable: TEGRA_PIN_ENABLE. +		disable: TEGRA_PIN_DISABLE. +- nvidia,lock: Integer. Lock the pin configuration against further changes +    until reset. +		enable: TEGRA_PIN_ENABLE. +		disable: TEGRA_PIN_DISABLE. +- nvidia,io-reset: Integer. Reset the IO path. +		enable: TEGRA_PIN_ENABLE. +		disable: TEGRA_PIN_DISABLE. +- nvidia,rcv-sel: Integer. Select VIL/VIH receivers. +		normal: TEGRA_PIN_DISABLE +		high: TEGRA_PIN_ENABLE + +Please refer the Tegra TRM for complete details regarding which groups +support which functionality. + +Valid values for pin and group names are: + +  per-pin mux groups: + +    These all support nvidia,function, nvidia,tristate, nvidia,pull, +    nvidia,enable-input. Some support nvidia,lock nvidia,open-drain, +    nvidia,io-reset and nvidia,rcv-sel. + +	ulpi_data0_po1, ulpi_data1_po2, ulpi_data2_po3, ulpi_data3_po4, +	ulpi_data4_po5, ulpi_data5_po6, ulpi_data6_po7, ulpi_data7_po0, +	ulpi_clk_py0, ulpi_dir_py1, ulpi_nxt_py2, ulpi_stp_py3, dap3_fs_pp0, +	dap3_din_pp1, dap3_dout_pp2, dap3_sclk_pp3, pv0, pv1, sdmmc1_clk_pz0, +	sdmmc1_cmd_pz1, sdmmc1_dat3_py4, sdmmc1_dat2_py5, sdmmc1_dat1_py6, +	sdmmc1_dat0_py7, clk2_out_pw5, clk2_req_pcc5, hdmi_int_pn7, ddc_scl_pv4, +	ddc_sda_pv5, uart2_rxd_pc3, uart2_txd_pc2, uart2_rts_n_pj6, +	uart2_cts_n_pj5, uart3_txd_pw6, uart3_rxd_pw7, uart3_cts_n_pa1, +	uart3_rts_n_pc0, pu0, pu1, pu2, pu3, pu4, pu5, pu6, gen1_i2c_scl_pc4, +	gen1_i2c_sda_pc5, dap4_fs_pp4, dap4_din_pp5, dap4_dout_pp6, +	dap4_sclk_pp7, clk3_out_pee0, clk3_req_pee1, pc7, pi5, pi7, pk0, pk1, +	pj0, pj2, pk3, pk4, pk2, pi3, pi6, pg0, pg1, pg2, pg3, pg4, pg5, pg6, +	pg7, ph0, ph1, ph2, ph3, ph4, ph5, ph6, ph7, pj7, pb0, pb1, pk7, pi0, +	pi1, pi2, pi4, gen2_i2c_scl_pt5, gen2_i2c_sda_pt6, sdmmc4_clk_pcc4, +	sdmmc4_cmd_pt7, sdmmc4_dat0_paa0, sdmmc4_dat1_paa1, sdmmc4_dat2_paa2, +	sdmmc4_dat3_paa3, sdmmc4_dat4_paa4, sdmmc4_dat5_paa5, sdmmc4_dat6_paa6, +	sdmmc4_dat7_paa7, cam_mclk_pcc0, pcc1, pbb0, cam_i2c_scl_pbb1, +	cam_i2c_sda_pbb2, pbb3, pbb4, pbb5, pbb6, pbb7, pcc2, jtag_rtck, +	pwr_i2c_scl_pz6, pwr_i2c_sda_pz7, kb_row0_pr0, kb_row1_pr1, kb_row2_pr2, +	kb_row3_pr3, kb_row4_pr4, kb_row5_pr5, kb_row6_pr6, kb_row7_pr7, +	kb_row8_ps0, kb_row9_ps1, kb_row10_ps2, kb_row11_ps3, kb_row12_ps4, +	kb_row13_ps5, kb_row14_ps6, kb_row15_ps7, kb_col0_pq0, kb_col1_pq1, +	kb_col2_pq2, kb_col3_pq3, kb_col4_pq4, kb_col5_pq5, kb_col6_pq6, +	kb_col7_pq7, clk_32k_out_pa0, core_pwr_req, cpu_pwr_req, pwr_int_n, +	clk_32k_in, owr, dap1_fs_pn0, dap1_din_pn1, dap1_dout_pn2, +	dap1_sclk_pn3, dap_mclk1_req_pee2, dap_mclk1_pw4, spdif_in_pk6, +	spdif_out_pk5, dap2_fs_pa2, dap2_din_pa4, dap2_dout_pa5, dap2_sclk_pa3, +	dvfs_pwm_px0, gpio_x1_aud_px1, gpio_x3_aud_px3, dvfs_clk_px2, +	gpio_x4_aud_px4, gpio_x5_aud_px5, gpio_x6_aud_px6, gpio_x7_aud_px7, +	sdmmc3_clk_pa6, sdmmc3_cmd_pa7, sdmmc3_dat0_pb7, sdmmc3_dat1_pb6, +	sdmmc3_dat2_pb5, sdmmc3_dat3_pb4, pex_l0_rst_n_pdd1, +	pex_l0_clkreq_n_pdd2, pex_wake_n_pdd3, pex_l1_rst_n_pdd5, +	pex_l1_clkreq_n_pdd6, hdmi_cec_pee3, sdmmc1_wp_n_pv3, +	sdmmc3_cd_n_pv2, gpio_w2_aud_pw2, gpio_w3_aud_pw3, usb_vbus_en0_pn4, +	usb_vbus_en1_pn5, sdmmc3_clk_lb_out_pee4, sdmmc3_clk_lb_in_pee5, +	gmi_clk_lb, reset_out_n, kb_row16_pt0, kb_row17_pt1, usb_vbus_en2_pff1, +	pff2, dp_hpd_pff0, + +  drive groups: + +    These all support nvidia,pull-down-strength, nvidia,pull-up-strength, +    nvidia,slew-rate-rising, nvidia,slew-rate-falling. Most but not all +    support nvidia,high-speed-mode, nvidia,schmitt, nvidia,low-power-mode +    and nvidia,drive-type. + +    ao1, ao2, at1, at2, at3, at4, at5, cdev1, cdev2, dap1, dap2, dap3, dap4, +    dbg, sdio3, spi, uaa, uab, uart2, uart3, sdio1, ddc, gma, gme, gmf, gmg, +    gmh, owr, uda, gpv, dev3, cec, usb_vbus_en, ao3, ao0, hv0, sdio4, ao4. + +Valid values for nvidia,functions are: + +  blink, cec, cldvfs, clk12, cpu, dap, dap1, dap2, dev3, displaya, +  displaya_alt, displayb, dtv, extperiph1, extperiph2, extperiph3, +  gmi, gmi_alt, hda, hsi, i2c1, i2c2, i2c3, i2c4, i2cpwr, i2s0, +  i2s1, i2s2, i2s3, i2s4, irda, kbc, owr, pmi, pwm0, pwm1, pwm2, pwm3, +  pwron, reset_out_n, rsvd1, rsvd2, rsvd3, rsvd4, sdmmc1, sdmmc2, sdmmc3, +  sdmmc4, soc, spdif, spi1, spi2, spi3, spi4, spi5, spi6, trace, uarta, +  uartb, uartc, uartd, ulpi, usb, vgp1, vgp2, vgp3, vgp4, vgp5, vgp6, +  vi, vi_alt1, vi_alt3, vimclk2, vimclk2_alt, sata, ccla, pe0, pe, pe1, +  dp, rtck, sys, clk tmds. + +Example: + +	pinmux: pinmux { +		compatible = "nvidia,tegra124-pinmux"; +		reg = <0x70000868 0x164		/* Pad control registers */ +		       0x70003000 0x434>;	/* PinMux registers */ +	}; + +Example pinmux entries: + +	pinctrl { +		sdmmc4_default: pinmux { +			sdmmc4_clk_pcc4 { +				nvidia,pins = "sdmmc4_clk_pcc4", +				nvidia,function = "sdmmc4"; +				nvidia,pull = <TEGRA_PIN_PULL_NONE>; +				nvidia,tristate = <TEGRA_PIN_DISABLE>; +			}; + +			sdmmc4_dat0_paa0 { +				nvidia,pins = "sdmmc4_dat0_paa0", +						"sdmmc4_dat1_paa1", +						"sdmmc4_dat2_paa2", +						"sdmmc4_dat3_paa3", +						"sdmmc4_dat4_paa4", +						"sdmmc4_dat5_paa5", +						"sdmmc4_dat6_paa6", +						"sdmmc4_dat7_paa7"; +				nvidia,function = "sdmmc4"; +				nvidia,pull = <TEGRA_PIN_PULL_UP>; +				nvidia,tristate = <TEGRA_PIN_DISABLE>; +			}; +		}; +	}; + +	sdhci@78000400 { +		pinctrl-names = "default"; +		pinctrl-0 = <&sdmmc4_default>; +	}; diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt index 1958ca9f9e5..fa40a177164 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt @@ -151,13 +151,17 @@ drive-push-pull		- drive actively high and low  drive-open-drain	- drive with open drain  drive-open-source	- drive with open source  drive-strength		- sink or source at most X mA +input-enable		- enable input on pin (no effect on output) +input-disable		- disable input on pin (no effect on output)  input-schmitt-enable	- enable schmitt-trigger mode  input-schmitt-disable	- disable schmitt-trigger mode  input-debounce		- debounce mode with debound time X +power-source		- select between different power supplies  low-power-enable	- enable low power mode  low-power-disable	- disable low power mode  output-low		- set the pin to output mode with low level  output-high		- set the pin to output mode with high level +slew-rate		- set the slew rate  Some of the generic properties take arguments. For those that do, the  arguments are described below. diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-palmas.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-palmas.txt index 734d9b04d53..caf297bee1f 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-palmas.txt +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-palmas.txt @@ -41,7 +41,7 @@ pinctrl-bindings.txt:  Required: pins  Options: function, bias-disable, bias-pull-up, bias-pull-down, -	 bias-pin-default, drive-open-drain. +	 drive-open-drain.  Note that many of these properties are only valid for certain specific pins.  See the Palmas device datasheet for complete details regarding which pins diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt index 5a02e30dd26..66dcaa9efd7 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt @@ -63,6 +63,13 @@ Optional properties:  		/* input, enable bits, disable bits, mask */  		pinctrl-single,input-schmitt-enable = <0x30 0x40 0 0x70>; +- pinctrl-single,low-power-mode : array of value that are used to configure +  low power mode of this pin. For some silicons, the low power mode will +  control the output of the pin when the pad including the pin enter low +  power mode. +		/* low power mode value, mask */ +		pinctrl-single,low-power-mode = <0x288 0x388>; +  - pinctrl-single,gpio-range : list of value that are used to configure a GPIO    range. They're value of subnode phandle, pin base in pinctrl device, pin    number in this range, GPIO function value of this GPIO range. @@ -72,6 +79,13 @@ Optional properties:  		/* pin base, nr pins & gpio function */  		pinctrl-single,gpio-range = <&range 0 3 0 &range 3 9 1>; +- interrupt-controller : standard interrupt controller binding if using +  interrupts for wake-up events for example. In this case pinctrl-single +  is set up as a chained interrupt controller and the wake-up interrupts +  can be requested by the drivers using request_irq(). + +- #interrupt-cells : standard interrupt binding if using interrupts +  This driver assumes that there is only one register for each pin (unless the  pinctrl-single,bit-per-mux is set), and uses the common pinctrl bindings as  specified in the pinctrl-bindings.txt document in this directory. @@ -91,7 +105,7 @@ below for more information.  In case when one register changes more than one pin's mux the  pinctrl-single,bits need to be used which takes three parameters: -	pinctrl-single,bits = <0xdc 0x18, 0xff>; +	pinctrl-single,bits = <0xdc 0x18 0xff>;  Where 0xdc is the offset from the pinctrl register base address for the  device pinctrl register, 0x18 is the desired value, and 0xff is the sub mask to @@ -121,6 +135,8 @@ pmx_core: pinmux@4a100040 {  	reg = <0x4a100040 0x0196>;  	#address-cells = <1>;  	#size-cells = <0>; +	#interrupt-cells = <1>; +	interrupt-controller;  	pinctrl-single,register-width = <16>;  	pinctrl-single,function-mask = <0xffff>;  }; @@ -131,6 +147,8 @@ pmx_wkup: pinmux@4a31e040 {  	reg = <0x4a31e040 0x0038>;  	#address-cells = <1>;  	#size-cells = <0>; +	#interrupt-cells = <1>; +	interrupt-controller;  	pinctrl-single,register-width = <16>;  	pinctrl-single,function-mask = <0xffff>;  }; diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-st.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-st.txt index 05bf82a07df..26bcb18f4e6 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-st.txt +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-st.txt @@ -11,18 +11,68 @@ Pull Up (PU) are driven by the related PIO block.  ST pinctrl driver controls PIO multiplexing block and also interacts with  gpio driver to configure a pin. -Required properties: (PIO multiplexing block) +GPIO bank can have one of the two possible types of interrupt-wirings. + +First type is via irqmux, single interrupt is used by multiple gpio banks. This +reduces number of overall interrupts numbers required. All these banks belong to +a single pincontroller. +		  _________ +		 |	   |----> [gpio-bank (n)    ] +		 |	   |----> [gpio-bank (n + 1)] +	[irqN]-- | irq-mux |----> [gpio-bank (n + 2)] +		 |	   |----> [gpio-bank (...  )] +		 |_________|----> [gpio-bank (n + 7)] + +Second type has a dedicated interrupt per gpio bank. + +	[irqN]----> [gpio-bank (n)] + + +Pin controller node: +Required properties:  - compatible	: should be "st,<SOC>-<pio-block>-pinctrl"  	like st,stih415-sbc-pinctrl, st,stih415-front-pinctrl and so on. -- gpio-controller : Indicates this device is a GPIO controller -- #gpio-cells	  : Should be one. The first cell is the pin number. +- st,syscfg		: Should be a phandle of the syscfg node.  - st,retime-pin-mask	: Should be mask to specify which pins can be retimed.  	If the property is not present, it is assumed that all the pins in the  	bank are capable of retiming. Retiming is mainly used to improve the  	IO timing margins of external synchronous interfaces. -- st,bank-name		: Should be a name string for this bank as -			specified in datasheet. -- st,syscfg		: Should be a phandle of the syscfg node. +- ranges : defines mapping between pin controller node (parent) to gpio-bank +  node (children). + +Optional properties: +- interrupts	: Interrupt number of the irqmux. If the interrupt is shared +  with other gpio banks via irqmux. +  a irqline and gpio banks. +- reg		: irqmux memory resource. If irqmux is present. +- reg-names	: irqmux resource should be named as "irqmux". + +GPIO controller/bank node. +Required properties: +- gpio-controller : Indicates this device is a GPIO controller +- #gpio-cells	  : Should be one. The first cell is the pin number. +- st,bank-name	  : Should be a name string for this bank as specified in +  datasheet. + +Optional properties: +- interrupts	: Interrupt number for this gpio bank. If there is a dedicated +  interrupt wired up for this gpio bank. + +- interrupt-controller : Indicates this device is a interrupt controller. GPIO +  bank can be an interrupt controller iff one of the interrupt type either via +irqmux or a dedicated interrupt per bank is specified. + +- #interrupt-cells: the value of this property should be 2. +     - First Cell: represents the external gpio interrupt number local to the +       gpio interrupt space of the controller. +     - Second Cell: flags to identify the type of the interrupt +       - 1 = rising edge triggered +       - 2 = falling edge triggered +       - 3 = rising and falling edge triggered +       - 4 = high level triggered +       - 8 = low level triggered +for related macros look in: +include/dt-bindings/interrupt-controller/irq.h  Example:  	pin-controller-sbc { @@ -30,10 +80,17 @@ Example:  		#size-cells	= <1>;  		compatible	= "st,stih415-sbc-pinctrl";  		st,syscfg	= <&syscfg_sbc>; +		reg 		= <0xfe61f080 0x4>; +		reg-names	= "irqmux"; +		interrupts 	= <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>; +		interrupt-names	= "irqmux";  		ranges 		= <0 0xfe610000 0x5000>; +  		PIO0: gpio@fe610000 {  			gpio-controller;  			#gpio-cells	= <1>; +			interrupt-controller; +			#interrupt-cells = <2>;  			reg		= <0 0x100>;  			st,bank-name	= "PIO0";  		}; @@ -105,6 +162,10 @@ pin-controller {  sdhci0:sdhci@fe810000{  	... +	interrupt-parent = <&PIO3>; +	#interrupt-cells = <2>; +	interrupts = <3 IRQ_TYPE_LEVEL_HIGH>; /* Interrupt line via PIO3-3 */ +	interrupt-names = "card-detect";  	pinctrl-names = "default";  	pinctrl-0	= <&pinctrl_mmc>;  }; diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,apq8064-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,apq8064-pinctrl.txt new file mode 100644 index 00000000000..7181f925aca --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/qcom,apq8064-pinctrl.txt @@ -0,0 +1,88 @@ +Qualcomm APQ8064 TLMM block + +Required properties: +- compatible: "qcom,apq8064-pinctrl" +- reg: Should be the base address and length of the TLMM block. +- interrupts: Should be the parent IRQ of the TLMM block. +- interrupt-controller: Marks the device node as an interrupt controller. +- #interrupt-cells: Should be two. +- gpio-controller: Marks the device node as a GPIO controller. +- #gpio-cells : Should be two. +                The first cell is the gpio pin number and the +                second cell is used for optional parameters. + +Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for +a general description of GPIO and interrupt bindings. + +Please refer to pinctrl-bindings.txt in this directory for details of the +common pinctrl bindings used by client devices, including the meaning of the +phrase "pin configuration node". + +Qualcomm's pin configuration nodes act as a container for an abitrary number of +subnodes. Each of these subnodes represents some desired configuration for a +pin, a group, or a list of pins or groups. This configuration can include the +mux function to select on those pin(s)/group(s), and various pin configuration +parameters, such as pull-up, drive strength, etc. + +The name of each subnode is not important; all subnodes should be enumerated +and processed purely based on their content. + +Each subnode only affects those parameters that are explicitly listed. In +other words, a subnode that lists a mux function but no pin configuration +parameters implies no information about any pin configuration parameters. +Similarly, a pin subnode that describes a pullup parameter implies no +information about e.g. the mux function. + + +The following generic properties as defined in pinctrl-bindings.txt are valid +to specify in a pin configuration subnode: + + pins, function, bias-disable, bias-pull-down, bias-pull,up, drive-strength, + output-low, output-high. + +Non-empty subnodes must specify the 'pins' property. + +Valid values for pins are: +  gpio0-gpio89 + +Valid values for function are: +  cam_mclk, codec_mic_i2s, codec_spkr_i2s, gsbi1, gsbi2, gsbi3, gsbi4, +  gsbi4_cam_i2c, gsbi5, gsbi5_spi_cs1, gsbi5_spi_cs2, gsbi5_spi_cs3, gsbi6, +  gsbi6_spi_cs1, gsbi6_spi_cs2, gsbi6_spi_cs3, gsbi7, gsbi7_spi_cs1, +  gsbi7_spi_cs2, gsbi7_spi_cs3, gsbi_cam_i2c, hdmi, mi2s, riva_bt, riva_fm, +  riva_wlan, sdc2, sdc4, slimbus, spkr_i2s, tsif1, tsif2, usb2_hsic, + +Example: + +	msmgpio: pinctrl@800000 { +		compatible = "qcom,apq8064-pinctrl"; +		reg = <0x800000 0x4000>; + +		gpio-controller; +		#gpio-cells = <2>; +		interrupt-controller; +		#interrupt-cells = <2>; +		interrupts = <0 32 0x4>; + +		pinctrl-names = "default"; +		pinctrl-0 = <&gsbi5_uart_default>; + +		gsbi5_uart_default: gsbi5_uart_default { +			mux { +				pins = "gpio51", "gpio52"; +				function = "gsbi5"; +			}; + +			tx { +				pins = "gpio51"; +				drive-strength = <4>; +				bias-disable; +			}; + +			rx { +				pins = "gpio52"; +				drive-strength = <2>; +				bias-pull-up; +			}; +		}; +	}; diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,ipq8064-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,ipq8064-pinctrl.txt new file mode 100644 index 00000000000..e0d35a40981 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/qcom,ipq8064-pinctrl.txt @@ -0,0 +1,95 @@ +Qualcomm IPQ8064 TLMM block + +Required properties: +- compatible: "qcom,ipq8064-pinctrl" +- reg: Should be the base address and length of the TLMM block. +- interrupts: Should be the parent IRQ of the TLMM block. +- interrupt-controller: Marks the device node as an interrupt controller. +- #interrupt-cells: Should be two. +- gpio-controller: Marks the device node as a GPIO controller. +- #gpio-cells : Should be two. +                The first cell is the gpio pin number and the +                second cell is used for optional parameters. + +Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for +a general description of GPIO and interrupt bindings. + +Please refer to pinctrl-bindings.txt in this directory for details of the +common pinctrl bindings used by client devices, including the meaning of the +phrase "pin configuration node". + +Qualcomm's pin configuration nodes act as a container for an abitrary number of +subnodes. Each of these subnodes represents some desired configuration for a +pin, a group, or a list of pins or groups. This configuration can include the +mux function to select on those pin(s)/group(s), and various pin configuration +parameters, such as pull-up, drive strength, etc. + +The name of each subnode is not important; all subnodes should be enumerated +and processed purely based on their content. + +Each subnode only affects those parameters that are explicitly listed. In +other words, a subnode that lists a mux function but no pin configuration +parameters implies no information about any pin configuration parameters. +Similarly, a pin subnode that describes a pullup parameter implies no +information about e.g. the mux function. + + +The following generic properties as defined in pinctrl-bindings.txt are valid +to specify in a pin configuration subnode: + + pins, function, bias-disable, bias-pull-down, bias-pull,up, drive-strength, + output-low, output-high. + +Non-empty subnodes must specify the 'pins' property. + +Valid values for qcom,pins are: +  gpio0-gpio68 +   Supports mux, bias, and drive-strength + +  sdc3_clk, sdc3_cmd, sdc3_data +   Supports bias and drive-strength + + +Valid values for function are: +  mdio, mi2s, pdm, ssbi, spmi, audio_pcm, gsbi1, gsbi2, gsbi4, gsbi5, +  gsbi5_spi_cs1, gsbi5_spi_cs2, gsbi5_spi_cs3, gsbi6, gsbi7, nss_spi, sdc1, +  spdif, nand, tsif1, tsif2, usb_fs_n, usb_fs, usb2_hsic, rgmii2, sata, +  pcie1_rst, pcie1_prsnt, pcie1_pwren_n, pcie1_pwren, pcie1_pwrflt, +  pcie1_clk_req, pcie2_rst, pcie2_prsnt, pcie2_pwren_n, pcie2_pwren, +  pcie2_pwrflt, pcie2_clk_req, pcie3_rst, pcie3_prsnt, pcie3_pwren_n, +  pcie3_pwren, pcie3_pwrflt, pcie3_clk_req, ps_hold + +Example: + +	pinmux: pinctrl@800000 { +		compatible = "qcom,ipq8064-pinctrl"; +		reg = <0x800000 0x4000>; + +		gpio-controller; +		#gpio-cells = <2>; +		interrupt-controller; +		#interrupt-cells = <2>; +		interrupts = <0 32 0x4>; + +		pinctrl-names = "default"; +		pinctrl-0 = <&gsbi5_uart_default>; + +		gsbi5_uart_default: gsbi5_uart_default { +			mux { +				pins = "gpio18", "gpio19"; +				function = "gsbi5"; +			}; + +			tx { +				pins = "gpio18"; +				drive-strength = <4>; +				bias-disable; +			}; + +			rx { +				pins = "gpio19"; +				drive-strength = <2>; +				bias-pull-up; +			}; +		}; +	}; diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt new file mode 100644 index 00000000000..73262b575df --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt @@ -0,0 +1,112 @@ +Qualcomm MSM8974 TLMM block + +Required properties: +- compatible: "qcom,msm8974-pinctrl" +- reg: Should be the base address and length of the TLMM block. +- interrupts: Should be the parent IRQ of the TLMM block. +- interrupt-controller: Marks the device node as an interrupt controller. +- #interrupt-cells: Should be two. +- gpio-controller: Marks the device node as a GPIO controller. +- #gpio-cells : Should be two. +                The first cell is the gpio pin number and the +                second cell is used for optional parameters. + +Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for +a general description of GPIO and interrupt bindings. + +Please refer to pinctrl-bindings.txt in this directory for details of the +common pinctrl bindings used by client devices, including the meaning of the +phrase "pin configuration node". + +Qualcomm's pin configuration nodes act as a container for an abitrary number of +subnodes. Each of these subnodes represents some desired configuration for a +pin, a group, or a list of pins or groups. This configuration can include the +mux function to select on those pin(s)/group(s), and various pin configuration +parameters, such as pull-up, drive strength, etc. + +The name of each subnode is not important; all subnodes should be enumerated +and processed purely based on their content. + +Each subnode only affects those parameters that are explicitly listed. In +other words, a subnode that lists a mux function but no pin configuration +parameters implies no information about any pin configuration parameters. +Similarly, a pin subnode that describes a pullup parameter implies no +information about e.g. the mux function. + + +The following generic properties as defined in pinctrl-bindings.txt are valid +to specify in a pin configuration subnode: + pins, function, bias-disable, bias-pull-down, bias-pull,up, drive-strength. + +Non-empty subnodes must specify the 'pins' property. +Note that not all properties are valid for all pins. + + +Valid values for pins are: +  gpio0-gpio145 +    Supports mux, bias and drive-strength + +  sdc1_clk, sdc1_cmd, sdc1_data, sdc2_clk, sdc2_cmd, sdc2_data +    Supports bias and drive-strength + +Valid values for function are: +  cci_i2c0, cci_i2c1, uim1, uim2, uim_batt_alarm, +  blsp_uim1, blsp_uart1, blsp_i2c1, blsp_spi1, +  blsp_uim2, blsp_uart2, blsp_i2c2, blsp_spi2, +  blsp_uim3, blsp_uart3, blsp_i2c3, blsp_spi3, +  blsp_uim4, blsp_uart4, blsp_i2c4, blsp_spi4, +  blsp_uim5, blsp_uart5, blsp_i2c5, blsp_spi5, +  blsp_uim6, blsp_uart6, blsp_i2c6, blsp_spi6, +  blsp_uim7, blsp_uart7, blsp_i2c7, blsp_spi7, +  blsp_uim8, blsp_uart8, blsp_i2c8, blsp_spi8, +  blsp_uim9, blsp_uart9, blsp_i2c9, blsp_spi9, +  blsp_uim10, blsp_uart10, blsp_i2c10, blsp_spi10, +  blsp_uim11, blsp_uart11, blsp_i2c11, blsp_spi11, +  blsp_uim12, blsp_uart12, blsp_i2c12, blsp_spi12, +  blsp_spi1_cs1, blsp_spi2_cs2, blsp_spi_cs3, blsp_spi2_cs1, blsp_spi2_cs2 +  blsp_spi2_cs3, blsp_spi10_cs1, blsp_spi10_cs2, blsp_spi10_cs3, +  sdc3, sdc4, gcc_gp_clk1, gcc_gp_clk2, gcc_gp_clk3, cci_timer0, cci_timer1, +  cci_timer2, cci_timer3, cci_async_in0, cci_async_in1, cci_async_in2, +  cam_mckl0, cam_mclk1, cam_mclk2, cam_mclk3, mdp_vsync, hdmi_cec, hdmi_ddc, +  hdmi_hpd, edp_hpd, gp_pdm0, gp_pdm1, gp_pdm2, gp_pdm3, gp0_clk, gp1_clk, +  gp_mn, tsif1, tsif2, hsic, grfc, audio_ref_clk, qua_mi2s, pri_mi2s, spkr_mi2s, +  ter_mi2s, sec_mi2s, bt, fm, wlan, slimbus + +  (Note that this is not yet the complete list of functions) + + + +Example: + +	msmgpio: pinctrl@fd510000 { +		compatible = "qcom,msm8974-pinctrl"; +		reg = <0xfd510000 0x4000>; + +		gpio-controller; +		#gpio-cells = <2>; +		interrupt-controller; +		#interrupt-cells = <2>; +		interrupts = <0 208 0>; + +		pinctrl-names = "default"; +		pinctrl-0 = <&uart2_default>; + +		uart2_default: uart2_default { +			mux { +				pins = "gpio4", "gpio5"; +				function = "blsp_uart2"; +			}; + +			tx { +				pins = "gpio4"; +				drive-strength = <4>; +				bias-disable; +			}; + +			rx { +				pins = "gpio5"; +				drive-strength = <2>; +				bias-pull-up; +			}; +		}; +	}; diff --git a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt index d5dac7b843a..35d2e1f186f 100644 --- a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt @@ -26,6 +26,11 @@ Optional properties:    - #gpio-range-cells: Mandatory when the PFC doesn't handle GPIO, forbidden      otherwise. Should be 3. +  - interrupts-extended: Specify the interrupts associated with external +    IRQ pins. This property is mandatory when the PFC handles GPIOs and +    forbidden otherwise. When specified, it must contain one interrupt per +    external IRQ, sorted by external IRQ number. +  The PFC node also acts as a container for pin configuration nodes. Please refer  to pinctrl-bindings.txt in this directory for the definition of the term "pin  configuration node" and for the common pinctrl bindings used by client devices. @@ -103,6 +108,15 @@ Example 1: SH73A0 (SH-Mobile AG5) pin controller node  		      <0xe605801c 0x1c>;  		gpio-controller;  		#gpio-cells = <2>; +		interrupts-extended = +			<&irqpin0 0 0>, <&irqpin0 1 0>, <&irqpin0 2 0>, <&irqpin0 3 0>, +			<&irqpin0 4 0>, <&irqpin0 5 0>, <&irqpin0 6 0>, <&irqpin0 7 0>, +			<&irqpin1 0 0>, <&irqpin1 1 0>, <&irqpin1 2 0>, <&irqpin1 3 0>, +			<&irqpin1 4 0>, <&irqpin1 5 0>, <&irqpin1 6 0>, <&irqpin1 7 0>, +			<&irqpin2 0 0>, <&irqpin2 1 0>, <&irqpin2 2 0>, <&irqpin2 3 0>, +			<&irqpin2 4 0>, <&irqpin2 5 0>, <&irqpin2 6 0>, <&irqpin2 7 0>, +			<&irqpin3 0 0>, <&irqpin3 1 0>, <&irqpin3 2 0>, <&irqpin3 3 0>, +			<&irqpin3 4 0>, <&irqpin3 5 0>, <&irqpin3 6 0>, <&irqpin3 7 0>;  	};  Example 2: A GPIO LED node that references a GPIO diff --git a/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt index b0fb1018d7a..cefef741a40 100644 --- a/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt @@ -21,9 +21,22 @@ defined as gpio sub-nodes of the pinmux controller.  Required properties for iomux controller:    - compatible: one of "rockchip,rk2928-pinctrl", "rockchip,rk3066a-pinctrl"  		       "rockchip,rk3066b-pinctrl", "rockchip,rk3188-pinctrl" +  - rockchip,grf: phandle referencing a syscon providing the +	 "general register files" + +Optional properties for iomux controller: +  - rockchip,pmu: phandle referencing a syscon providing the pmu registers +	 as some SoCs carry parts of the iomux controller registers there. +	 Required for at least rk3188 and rk3288. + +Deprecated properties for iomux controller: +  - reg: first element is the general register space of the iomux controller +	 It should be large enough to contain also separate pull registers. +	 second element is the separate pull register space of the rk3188. +	 Use rockchip,grf and rockchip,pmu described above instead.  Required properties for gpio sub nodes: -  - compatible: "rockchip,gpio-bank" +  - compatible: "rockchip,gpio-bank", "rockchip,rk3188-gpio-bank0"    - reg: register of the gpio bank (different than the iomux registerset)    - interrupts: base interrupt of the gpio bank in the interrupt controller    - clocks: clock that drives this bank @@ -36,6 +49,10 @@ Required properties for gpio sub nodes:      cells should use the standard two-cell scheme described in      bindings/interrupt-controller/interrupts.txt +Deprecated properties for gpio sub nodes: +  - reg: second element: separate pull register for rk3188 bank0, use +	 rockchip,pmu described above instead +  Required properties for pin configuration node:    - rockchip,pins: 3 integers array, represents a group of pins mux and config      setting. The format is rockchip,pins = <PIN_BANK PIN_BANK_IDX MUX &phandle>. @@ -51,7 +68,8 @@ Examples:  pinctrl@20008000 {  	compatible = "rockchip,rk3066a-pinctrl"; -	reg = <0x20008000 0x150>; +	rockchip,grf = <&grf>; +  	#address-cells = <1>;  	#size-cells = <1>;  	ranges; @@ -95,3 +113,43 @@ uart2: serial@20064000 {  	pinctrl-names = "default";  	pinctrl-0 = <&uart2_xfer>;  }; + +Example for rk3188: + +	pinctrl@20008000 { +		compatible = "rockchip,rk3188-pinctrl"; +		rockchip,grf = <&grf>; +		rockchip,pmu = <&pmu>; +		#address-cells = <1>; +		#size-cells = <1>; +		ranges; + +		gpio0: gpio0@0x2000a000 { +			compatible = "rockchip,rk3188-gpio-bank0"; +			reg = <0x2000a000 0x100>; +			interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>; +			clocks = <&clk_gates8 9>; + +			gpio-controller; +			#gpio-cells = <2>; + +			interrupt-controller; +			#interrupt-cells = <2>; +		}; + +		gpio1: gpio1@0x2003c000 { +			compatible = "rockchip,gpio-bank"; +			reg = <0x2003c000 0x100>; +			interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; +			clocks = <&clk_gates8 10>; + +			gpio-controller; +			#gpio-cells = <2>; + +			interrupt-controller; +			#interrupt-cells = <2>; +		}; + +		... + +	}; diff --git a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt index 257677de3e6..2b32783ba82 100644 --- a/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt +++ b/Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt @@ -16,6 +16,7 @@ Required Properties:    - "samsung,exynos4210-pinctrl": for Exynos4210 compatible pin-controller.    - "samsung,exynos4x12-pinctrl": for Exynos4x12 compatible pin-controller.    - "samsung,exynos5250-pinctrl": for Exynos5250 compatible pin-controller. +  - "samsung,exynos5260-pinctrl": for Exynos5260 compatible pin-controller.    - "samsung,exynos5420-pinctrl": for Exynos5420 compatible pin-controller.  - reg: Base address of the pin controller hardware module and length of diff --git a/Documentation/devicetree/bindings/power/bq2415x.txt b/Documentation/devicetree/bindings/power/bq2415x.txt new file mode 100644 index 00000000000..d0327f0b59a --- /dev/null +++ b/Documentation/devicetree/bindings/power/bq2415x.txt @@ -0,0 +1,47 @@ +Binding for TI bq2415x Li-Ion Charger + +Required properties: +- compatible: Should contain one of the following: + * "ti,bq24150" + * "ti,bq24150" + * "ti,bq24150a" + * "ti,bq24151" + * "ti,bq24151a" + * "ti,bq24152" + * "ti,bq24153" + * "ti,bq24153a" + * "ti,bq24155" + * "ti,bq24156" + * "ti,bq24156a" + * "ti,bq24158" +- reg:			   integer, i2c address of the device. +- ti,current-limit:	   integer, initial maximum current charger can pull +			   from power supply in mA. +- ti,weak-battery-voltage: integer, weak battery voltage threshold in mV. +			   The chip will use slow precharge if battery voltage +			   is below this value. +- ti,battery-regulation-voltage: integer, maximum charging voltage in mV. +- ti,charge-current:	   integer, maximum charging current in mA. +- ti,termination-current:  integer, charge will be terminated when current in +			   constant-voltage phase drops below this value (in mA). +- ti,resistor-sense:	   integer, value of sensing resistor in milliohm. + +Optional properties: +- ti,usb-charger-detection: phandle to usb charger detection device. +			    (required for auto mode) + +Example from Nokia N900: + +bq24150a { +	compatible = "ti,bq24150a"; +	reg = <0x6b>; + +	ti,current-limit = <100>; +	ti,weak-battery-voltage = <3400>; +	ti,battery-regulation-voltage = <4200>; +	ti,charge-current = <650>; +	ti,termination-current = <100>; +	ti,resistor-sense = <68>; + +	ti,usb-charger-detection = <&isp1704>; +}; diff --git a/Documentation/devicetree/bindings/power/isp1704.txt b/Documentation/devicetree/bindings/power/isp1704.txt new file mode 100644 index 00000000000..fa359690796 --- /dev/null +++ b/Documentation/devicetree/bindings/power/isp1704.txt @@ -0,0 +1,17 @@ +Binding for NXP ISP1704 USB Charger Detection + +Required properties: +- compatible: Should contain one of the following: + * "nxp,isp1704" +- nxp,enable-gpio: Should contain a phandle + gpio-specifier +  to the GPIO pin connected to the chip's enable pin. +- usb-phy: Should contain a phandle to the USB PHY +  the ISP1704 is connected to. + +Example: + +isp1704 { +	compatible = "nxp,isp1704"; +	nxp,enable-gpio = <&gpio3 3 GPIO_ACTIVE_LOW>; +	usb-phy = <&usb2_phy>; +}; diff --git a/Documentation/devicetree/bindings/power/reset/keystone-reset.txt b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt new file mode 100644 index 00000000000..c82f12e2d85 --- /dev/null +++ b/Documentation/devicetree/bindings/power/reset/keystone-reset.txt @@ -0,0 +1,67 @@ +* Device tree bindings for Texas Instruments keystone reset + +This node is intended to allow SoC reset in case of software reset +of selected watchdogs. + +The Keystone SoCs can contain up to 4 watchdog timers to reset +SoC. Each watchdog timer event input is connected to the Reset Mux +block. The Reset Mux block can be configured to cause reset or not. + +Additionally soft or hard reset can be configured. + +Required properties: + +- compatible:		ti,keystone-reset + +- ti,syscon-pll:	phandle/offset pair. The phandle to syscon used to +			access pll controller registers and the offset to use +			reset control registers. + +- ti,syscon-dev:	phandle/offset pair. The phandle to syscon used to +			access device state control registers and the offset +			in order to use mux block registers for all watchdogs. + +Optional properties: + +- ti,soft-reset:	Boolean option indicating soft reset. +			By default hard reset is used. + +- ti,wdt-list:		WDT list that can cause SoC reset. It's not related +			to WDT driver, it's just needed to enable a SoC related +			reset that's triggered by one of WDTs. The list is +			in format: <0>, <2>; It can be in random order and +			begins from 0 to 3, as keystone can contain up to 4 SoC +			reset watchdogs and can be in random order. + +Example 1: +Setup keystone reset so that in case software reset or +WDT0 is triggered it issues hard reset for SoC. + +pllctrl: pll-controller@02310000 { +	compatible = "ti,keystone-pllctrl", "syscon"; +	reg = <0x02310000 0x200>; +}; + +devctrl: device-state-control@02620000 { +	compatible = "ti,keystone-devctrl", "syscon"; +	reg = <0x02620000 0x1000>; +}; + +rstctrl: reset-controller { +	compatible = "ti,keystone-reset"; +	ti,syscon-pll = <&pllctrl 0xe4>; +	ti,syscon-dev = <&devctrl 0x328>; +	ti,wdt-list = <0>; +}; + +Example 2: +Setup keystone reset so that in case of software reset or +WDT0 or WDT2 is triggered it issues soft reset for SoC. + +rstctrl: reset-controller { +	compatible = "ti,keystone-reset"; +	ti,syscon-pll = <&pllctrl 0xe4>; +	ti,syscon-dev = <&devctrl 0x328>; +	ti,wdt-list = <0>, <2>; +	ti,soft-reset; +}; diff --git a/Documentation/devicetree/bindings/power/twl-charger.txt b/Documentation/devicetree/bindings/power/twl-charger.txt new file mode 100644 index 00000000000..d5c706216df --- /dev/null +++ b/Documentation/devicetree/bindings/power/twl-charger.txt @@ -0,0 +1,20 @@ +TWL BCI (Battery Charger Interface) + +Required properties: +- compatible: +  - "ti,twl4030-bci" +- interrupts: two interrupt lines from the TWL SIH (secondary +  interrupt handler) - interrupts 9 and 2. + +Optional properties: +- ti,bb-uvolt: microvolts for charging the backup battery. +- ti,bb-uamp: microamps for charging the backup battery. + +Examples: + +bci { +   compatible = "ti,twl4030-bci"; +   interrupts = <9>, <2>; +   ti,bb-uvolt = <3200000>; +   ti,bb-uamp = <150>; +}; diff --git a/Documentation/devicetree/bindings/power_supply/axxia-reset.txt b/Documentation/devicetree/bindings/power_supply/axxia-reset.txt new file mode 100644 index 00000000000..47e720d249d --- /dev/null +++ b/Documentation/devicetree/bindings/power_supply/axxia-reset.txt @@ -0,0 +1,20 @@ +Axxia Restart Driver + +This driver can do reset of the Axxia SoC. It uses the registers in the syscon +block to initiate a chip reset. + +Required Properties: +  -compatible: "lsi,axm55xx-reset" +  -syscon: phandle to the syscon node. + +Example: + +	syscon: syscon@2010030000 { +		compatible = "lsi,axxia-syscon", "syscon"; +		reg = <0x20 0x10030000 0 0x2000>; +	}; + +	reset: reset@2010031000 { +		compatible = "lsi,axm55xx-reset"; +		syscon = <&syscon>; +	}; diff --git a/Documentation/devicetree/bindings/power_supply/charger-manager.txt b/Documentation/devicetree/bindings/power_supply/charger-manager.txt new file mode 100644 index 00000000000..2b33750e3db --- /dev/null +++ b/Documentation/devicetree/bindings/power_supply/charger-manager.txt @@ -0,0 +1,81 @@ +charger-manager bindings +~~~~~~~~~~~~~~~~~~~~~~~~ + +Required properties : + - compatible : "charger-manager" + - <>-supply : for regulator consumer + - cm-num-chargers : number of chargers + - cm-chargers : name of chargers + - cm-fuel-gauge : name of battery fuel gauge + - subnode <regulator> : +	- cm-regulator-name : name of charger regulator +	- subnode <cable> : +		- cm-cable-name : name of charger cable +		- cm-cable-extcon : name of extcon dev +(optional)	- cm-cable-min : minimum current of cable +(optional)	- cm-cable-max : maximum current of cable + +Optional properties : + - cm-name : charger manager's name (default : "battery") + - cm-poll-mode : polling mode (enum polling_modes) + - cm-poll-interval : polling interval + - cm-battery-stat : battery status (enum data_source) + - cm-fullbatt-* : data for full battery checking + - cm-thermal-zone : name of external thermometer's thermal zone + - cm-battery-* : threshold battery temperature for charging +	-cold : critical cold temperature of battery for charging +	-cold-in-minus : flag that cold temerature is in minus degree +	-hot : critical hot temperature of battery for charging +	-temp-diff : temperature difference to allow recharging + - cm-dis/charging-max = limits of charging duration + +Example : +	charger-manager@0 { +		compatible = "charger-manager"; +		chg-reg-supply = <&charger_regulator>; + +		cm-name = "battery"; +		/* Always polling ON : 30s */ +		cm-poll-mode = <1>; +		cm-poll-interval = <30000>; + +		cm-fullbatt-vchkdrop-ms = <30000>; +		cm-fullbatt-vchkdrop-volt = <150000>; +		cm-fullbatt-soc = <100>; + +		cm-battery-stat = <3>; + +		cm-num-chargers = <3>; +		cm-chargers = "charger0", "charger1", "charger2"; + +		cm-fuel-gauge = "fuelgauge0"; + +		cm-thermal-zone = "thermal_zone.1" +		/* in deci centigrade */ +		cm-battery-cold = <50>; +		cm-battery-cold-in-minus; +		cm-battery-hot = <800>; +		cm-battery-temp-diff = <100>; + +		/* Allow charging for 5hr */ +		cm-charging-max = <18000000>; +		/* Allow discharging for 2hr */ +		cm-discharging-max = <7200000>; + +		regulator@0 { +			cm-regulator-name = "chg-reg"; +			cable@0 { +				cm-cable-name = "USB"; +				cm-cable-extcon = "extcon-dev.0"; +				cm-cable-min = <475000>; +				cm-cable-max = <500000>; +			}; +			cable@1 { +				cm-cable-name = "TA"; +				cm-cable-extcon = "extcon-dev.0"; +				cm-cable-min = <650000>; +				cm-cable-max = <675000>; +			}; +		}; + +	}; diff --git a/Documentation/devicetree/bindings/power_supply/qnap-poweroff.txt b/Documentation/devicetree/bindings/power_supply/qnap-poweroff.txt index 0347d8350d9..af25e77c0e0 100644 --- a/Documentation/devicetree/bindings/power_supply/qnap-poweroff.txt +++ b/Documentation/devicetree/bindings/power_supply/qnap-poweroff.txt @@ -6,8 +6,11 @@ Orion5x SoCs. Sending the character 'A', at 19200 baud, tells the  microcontroller to turn the power off. This driver adds a handler to  pm_power_off which is called to turn the power off. +Synology NAS devices use a similar scheme, but a different baud rate, +9600, and a different character, '1'. +  Required Properties: -- compatible: Should be "qnap,power-off" +- compatible: Should be "qnap,power-off" or "synology,power-off"  - reg: Address and length of the register set for UART1  - clocks: tclk clock diff --git a/Documentation/devicetree/bindings/power_supply/ti,bq24735.txt b/Documentation/devicetree/bindings/power_supply/ti,bq24735.txt new file mode 100644 index 00000000000..4f6a550184d --- /dev/null +++ b/Documentation/devicetree/bindings/power_supply/ti,bq24735.txt @@ -0,0 +1,32 @@ +TI BQ24735 Charge Controller +~~~~~~~~~~ + +Required properties : + - compatible : "ti,bq24735" + +Optional properties : + - interrupts : Specify the interrupt to be used to trigger when the AC +   adapter is either plugged in or removed. + - ti,ac-detect-gpios : This GPIO is optionally used to read the AC adapter +   presence. This is a Host GPIO that is configured as an input and +   connected to the bq24735. + - ti,charge-current : Used to control and set the charging current. This value +   must be between 128mA and 8.128A with a 64mA step resolution. The POR value +   is 0x0000h. This number is in mA (e.g. 8192), see spec for more information +   about the ChargeCurrent (0x14h) register. + - ti,charge-voltage : Used to control and set the charging voltage. This value +   must be between 1.024V and 19.2V with a 16mV step resolution. The POR value +   is 0x0000h. This number is in mV (e.g. 19200), see spec for more information +   about the ChargeVoltage (0x15h) register. + - ti,input-current : Used to control and set the charger input current. This +   value must be between 128mA and 8.064A with a 128mA step resolution. The +   POR value is 0x1000h. This number is in mA (e.g. 8064), see the spec for +   more information about the InputCurrent (0x3fh) register. + +Example: + +	bq24735@9 { +		compatible = "ti,bq24735"; +		reg = <0x9>; +		ti,ac-detect-gpios = <&gpio 72 0x1>; +	} diff --git a/Documentation/devicetree/bindings/powerpc/4xx/akebono.txt b/Documentation/devicetree/bindings/powerpc/4xx/akebono.txt new file mode 100644 index 00000000000..db939210e29 --- /dev/null +++ b/Documentation/devicetree/bindings/powerpc/4xx/akebono.txt @@ -0,0 +1,54 @@ + +IBM Akebono board device tree +============================= + +The IBM Akebono board is a development board for the PPC476GTR SoC. + +0) The root node + +   Required properties: + +   - model : "ibm,akebono". +   - compatible : "ibm,akebono" , "ibm,476gtr". + +1.a) The Secure Digital Host Controller Interface (SDHCI) node + +  Represent the Secure Digital Host Controller Interfaces. + +  Required properties: + +   - compatible : should be "ibm,476gtr-sdhci","generic-sdhci". +   - reg : should contain the SDHCI registers location and length. +   - interrupt-parent : a phandle for the interrupt controller. +   - interrupts : should contain the SDHCI interrupt. + +1.b) The Advanced Host Controller Interface (AHCI) SATA node + +  Represents the advanced host controller SATA interface. + +  Required properties: + +   - compatible : should be "ibm,476gtr-ahci". +   - reg : should contain the AHCI registers location and length. +   - interrupt-parent : a phandle for the interrupt controller. +   - interrupts : should contain the AHCI interrupt. + +1.c) The FPGA node + +  The Akebono board stores some board information such as the revision +  number in an FPGA which is represented by this node. + +  Required properties: + +   - compatible : should be "ibm,akebono-fpga". +   - reg : should contain the FPGA registers location and length. + +1.d) The AVR node + +  The Akebono board has an Atmel AVR microprocessor attached to the I2C +  bus as a power controller for the board. + +  Required properties: + +   - compatible : should be "ibm,akebono-avr". +   - reg : should contain the I2C bus address for the AVR. diff --git a/Documentation/devicetree/bindings/powerpc/4xx/hsta.txt b/Documentation/devicetree/bindings/powerpc/4xx/hsta.txt new file mode 100644 index 00000000000..c737c833870 --- /dev/null +++ b/Documentation/devicetree/bindings/powerpc/4xx/hsta.txt @@ -0,0 +1,19 @@ + +ppc476gtr High Speed Serial Assist (HSTA) node +============================================== + +The 476gtr SoC contains a high speed serial assist module attached +between the plb4 and plb6 system buses to provide high speed data +transfer between memory and system peripherals as well as support for +PCI message signalled interrupts. + +Currently only the MSI support is used by Linux using the following +device tree entries: + +Require properties: +- compatible		: "ibm,476gtr-hsta-msi", "ibm,hsta-msi" +- reg			: register mapping for the HSTA MSI space +- interrupt-parent	: parent controller for mapping interrupts +- interrupts		: ordered interrupt mapping for each MSI in the register +			  space. The first interrupt should be associated with a +			  register offset of 0x00, the second to 0x10, etc. diff --git a/Documentation/devicetree/bindings/powerpc/4xx/reboot.txt b/Documentation/devicetree/bindings/powerpc/4xx/reboot.txt index d7217260589..5bc63551319 100644 --- a/Documentation/devicetree/bindings/powerpc/4xx/reboot.txt +++ b/Documentation/devicetree/bindings/powerpc/4xx/reboot.txt @@ -1,7 +1,7 @@  Reboot property to control system reboot on PPC4xx systems:  By setting "reset_type" to one of the following values, the default -software reset mechanism may be overidden. Here the possible values of +software reset mechanism may be overridden. Here the possible values of  "reset_type":        1 - PPC4xx core reset diff --git a/Documentation/devicetree/bindings/powerpc/fsl/board.txt b/Documentation/devicetree/bindings/powerpc/fsl/board.txt index 380914e965e..700dec4774f 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/board.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/board.txt @@ -67,3 +67,20 @@ Example:  			gpio-controller;  		};  	}; + +* Freescale on-board FPGA connected on I2C bus + +Some Freescale boards like BSC9132QDS have on board FPGA connected on +the i2c bus. + +Required properties: +- compatible: Should be a board-specific string followed by a string +  indicating the type of FPGA.  Example: +	"fsl,<board>-fpga", "fsl,fpga-qixis-i2c" +- reg: Should contain the address of the FPGA + +Example: +	fpga: fpga@66 { +		compatible = "fsl,bsc9132qds-fpga", "fsl,fpga-qixis-i2c"; +		reg = <0x66>; +	}; diff --git a/Documentation/devicetree/bindings/powerpc/fsl/ccf.txt b/Documentation/devicetree/bindings/powerpc/fsl/ccf.txt new file mode 100644 index 00000000000..454da7e08ac --- /dev/null +++ b/Documentation/devicetree/bindings/powerpc/fsl/ccf.txt @@ -0,0 +1,46 @@ +Freescale CoreNet Coherency Fabric(CCF) Device Tree Binding + +DESCRIPTION + +The CoreNet coherency fabric is a fabric-oriented, connectivity infrastructure +that enables the implementation of coherent, multicore systems. + +Required properties: + +- compatible: <string list> +		fsl,corenet1-cf - CoreNet coherency fabric version 1. +		Example chips: T4240, B4860 + +		fsl,corenet2-cf - CoreNet coherency fabric version 2. +		Example chips: P5040, P5020, P4080, P3041, P2041 + +		fsl,corenet-cf - Used to represent the common registers +		between CCF version 1 and CCF version 2.  This compatible +		is retained for compatibility reasons, as it was already +		used for both CCF version 1 chips and CCF version 2 +		chips.  It should be specified after either +		"fsl,corenet1-cf" or "fsl,corenet2-cf". + +- reg: <prop-encoded-array> +		A standard property. Represents the CCF registers. + +- interrupts: <prop-encoded-array> +		Interrupt mapping for CCF error interrupt. + +- fsl,ccf-num-csdids: <u32> +		Specifies the number of Coherency Subdomain ID Port Mapping +		Registers that are supported by the CCF. + +- fsl,ccf-num-snoopids: <u32> +		Specifies the number of Snoop ID Port Mapping Registers that +		are supported by CCF. + +Example: + +	corenet-cf@18000 { +		compatible = "fsl,corenet2-cf", "fsl,corenet-cf"; +		reg = <0x18000 0x1000>; +		interrupts = <16 2 1 31>; +		fsl,ccf-num-csdids = <32>; +		fsl,ccf-num-snoopids = <32>; +	}; diff --git a/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/network.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/network.txt index 0e426944658..29b28b8f9a8 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/network.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/network.txt @@ -10,7 +10,6 @@ Currently defined compatibles:  Example:  	ethernet@11300 { -		device_type = "network";  		compatible = "fsl,mpc8272-fcc-enet",  			     "fsl,cpm2-fcc-enet";  		reg = <11300 20 8400 100 11390 1>; @@ -33,7 +32,6 @@ fsl,mdc-pin : pin of port C controlling mdio clock  Example:  	mdio@10d40 { -		device_type = "mdio";  		compatible = "fsl,mpc8272ads-mdio-bitbang",  			     "fsl,mpc8272-mdio-bitbang",  			     "fsl,cpm2-mdio-bitbang"; diff --git a/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/pincfg.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/pincfg.txt index c5b43061db3..ec6ee2e864a 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/pincfg.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpm_qe/qe/pincfg.txt @@ -1,8 +1,6 @@  * Pin configuration nodes  Required properties: -- linux,phandle : phandle of this node; likely referenced by a QE -  device.  - pio-map : array of pin configurations.  Each pin is defined by 6    integers.  The six numbers are respectively: port, pin, dir,    open_drain, assignment, has_irq. @@ -29,7 +27,6 @@ Required properties:  Example:       ucc_pin@01 { -	linux,phandle = <140001>;  	pio-map = <  	/* port  pin  dir  open_drain  assignment  has_irq */  		0  3  1  0  1  0 	/* TxD0 */ diff --git a/Documentation/devicetree/bindings/powerpc/fsl/cpus.txt b/Documentation/devicetree/bindings/powerpc/fsl/cpus.txt index 922c30ad90d..f8cd2397aa0 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/cpus.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/cpus.txt @@ -20,3 +20,14 @@ PROPERTIES  	a property named fsl,eref-[CAT], where [CAT] is the abbreviated category  	name with all uppercase letters converted to lowercase, indicates that  	the category is supported by the implementation. + +    - fsl,portid-mapping +	Usage: optional +	Value type: <u32> +	Definition: The Coherency Subdomain ID Port Mapping Registers and +	Snoop ID Port Mapping registers, which are part of the CoreNet +	Coherency fabric (CCF), provide a CoreNet Coherency Subdomain +	ID/CoreNet Snoop ID to cpu mapping functions.  Certain bits from +	these registers should be set if the coresponding CPU should be +	snooped.  This property defines a bitmask which selects the bit +	that should be set if this cpu should be snooped. diff --git a/Documentation/devicetree/bindings/powerpc/fsl/dcsr.txt b/Documentation/devicetree/bindings/powerpc/fsl/dcsr.txt index 9d54eb5a295..18a88100af9 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/dcsr.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/dcsr.txt @@ -82,7 +82,7 @@ PROPERTIES  	Which event source asserted the interrupt is captured in an EPU  	Interrupt Status Register (EPISR0,EPISR1). -	Interrupt numbers are lised in order (perfmon, event0, event1). +	Interrupt numbers are listed in order (perfmon, event0, event1).  	- interrupt-parent  	Usage: required diff --git a/Documentation/devicetree/bindings/powerpc/fsl/dma.txt b/Documentation/devicetree/bindings/powerpc/fsl/dma.txt index 2a4b4bce611..7fc1b010fa7 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/dma.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/dma.txt @@ -1,33 +1,30 @@ -* Freescale 83xx DMA Controller +* Freescale DMA Controllers -Freescale PowerPC 83xx have on chip general purpose DMA controllers. +** Freescale Elo DMA Controller +   This is a little-endian 4-channel DMA controller, used in Freescale mpc83xx +   series chips such as mpc8315, mpc8349, mpc8379 etc.  Required properties: -- compatible        : compatible list, contains 2 entries, first is -		 "fsl,CHIP-dma", where CHIP is the processor -		 (mpc8349, mpc8360, etc.) and the second is -		 "fsl,elo-dma" -- reg               : <registers mapping for DMA general status reg> -- ranges		: Should be defined as specified in 1) to describe the -		  DMA controller channels. +- compatible        : must include "fsl,elo-dma" +- reg               : DMA General Status Register, i.e. DGSR which contains +                      status for all the 4 DMA channels +- ranges            : describes the mapping between the address space of the +                      DMA channels and the address space of the DMA controller  - cell-index        : controller index.  0 for controller @ 0x8100 -- interrupts        : <interrupt mapping for DMA IRQ> +- interrupts        : interrupt specifier for DMA IRQ  - interrupt-parent  : optional, if needed for interrupt mapping -  - DMA channel nodes: -        - compatible        : compatible list, contains 2 entries, first is -			 "fsl,CHIP-dma-channel", where CHIP is the processor -			 (mpc8349, mpc8350, etc.) and the second is -			 "fsl,elo-dma-channel". However, see note below. -        - reg               : <registers mapping for channel> -        - cell-index        : dma channel index starts at 0. +        - compatible        : must include "fsl,elo-dma-channel" +                              However, see note below. +        - reg               : DMA channel specific registers +        - cell-index        : DMA channel index starts at 0.  Optional properties: -        - interrupts        : <interrupt mapping for DMA channel IRQ> -			  (on 83xx this is expected to be identical to -			   the interrupts property of the parent node) +        - interrupts        : interrupt specifier for DMA channel IRQ +                              (on 83xx this is expected to be identical to +                              the interrupts property of the parent node)          - interrupt-parent  : optional, if needed for interrupt mapping  Example: @@ -70,30 +67,27 @@ Example:  		};  	}; -* Freescale 85xx/86xx DMA Controller - -Freescale PowerPC 85xx/86xx have on chip general purpose DMA controllers. +** Freescale EloPlus DMA Controller +   This is a 4-channel DMA controller with extended addresses and chaining, +   mainly used in Freescale mpc85xx/86xx, Pxxx and BSC series chips, such as +   mpc8540, mpc8641 p4080, bsc9131 etc.  Required properties: -- compatible        : compatible list, contains 2 entries, first is -		 "fsl,CHIP-dma", where CHIP is the processor -		 (mpc8540, mpc8540, etc.) and the second is -		 "fsl,eloplus-dma" -- reg               : <registers mapping for DMA general status reg> +- compatible        : must include "fsl,eloplus-dma" +- reg               : DMA General Status Register, i.e. DGSR which contains +                      status for all the 4 DMA channels  - cell-index        : controller index.  0 for controller @ 0x21000,                                           1 for controller @ 0xc000 -- ranges		: Should be defined as specified in 1) to describe the -		  DMA controller channels. +- ranges            : describes the mapping between the address space of the +                      DMA channels and the address space of the DMA controller  - DMA channel nodes: -        - compatible        : compatible list, contains 2 entries, first is -			 "fsl,CHIP-dma-channel", where CHIP is the processor -			 (mpc8540, mpc8560, etc.) and the second is -			 "fsl,eloplus-dma-channel". However, see note below. -        - cell-index        : dma channel index starts at 0. -        - reg               : <registers mapping for channel> -        - interrupts        : <interrupt mapping for DMA channel IRQ> +        - compatible        : must include "fsl,eloplus-dma-channel" +                              However, see note below. +        - cell-index        : DMA channel index starts at 0. +        - reg               : DMA channel specific registers +        - interrupts        : interrupt specifier for DMA channel IRQ          - interrupt-parent  : optional, if needed for interrupt mapping  Example: @@ -134,6 +128,76 @@ Example:  		};  	}; +** Freescale Elo3 DMA Controller +   DMA controller which has same function as EloPlus except that Elo3 has 8 +   channels while EloPlus has only 4, it is used in Freescale Txxx and Bxxx +   series chips, such as t1040, t4240, b4860. + +Required properties: + +- compatible        : must include "fsl,elo3-dma" +- reg               : contains two entries for DMA General Status Registers, +                      i.e. DGSR0 which includes status for channel 1~4, and +                      DGSR1 for channel 5~8 +- ranges            : describes the mapping between the address space of the +                      DMA channels and the address space of the DMA controller + +- DMA channel nodes: +        - compatible        : must include "fsl,eloplus-dma-channel" +        - reg               : DMA channel specific registers +        - interrupts        : interrupt specifier for DMA channel IRQ +        - interrupt-parent  : optional, if needed for interrupt mapping + +Example: +dma@100300 { +	#address-cells = <1>; +	#size-cells = <1>; +	compatible = "fsl,elo3-dma"; +	reg = <0x100300 0x4>, +	      <0x100600 0x4>; +	ranges = <0x0 0x100100 0x500>; +	dma-channel@0 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x0 0x80>; +		interrupts = <28 2 0 0>; +	}; +	dma-channel@80 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x80 0x80>; +		interrupts = <29 2 0 0>; +	}; +	dma-channel@100 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x100 0x80>; +		interrupts = <30 2 0 0>; +	}; +	dma-channel@180 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x180 0x80>; +		interrupts = <31 2 0 0>; +	}; +	dma-channel@300 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x300 0x80>; +		interrupts = <76 2 0 0>; +	}; +	dma-channel@380 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x380 0x80>; +		interrupts = <77 2 0 0>; +	}; +	dma-channel@400 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x400 0x80>; +		interrupts = <78 2 0 0>; +	}; +	dma-channel@480 { +		compatible = "fsl,eloplus-dma-channel"; +		reg = <0x480 0x80>; +		interrupts = <79 2 0 0>; +	}; +}; +  Note on DMA channel compatible properties: The compatible property must say  "fsl,elo-dma-channel" or "fsl,eloplus-dma-channel" to be used by the Elo DMA  driver (fsldma).  Any DMA channel used by fsldma cannot be used by another diff --git a/Documentation/devicetree/bindings/powerpc/fsl/l2cache.txt b/Documentation/devicetree/bindings/powerpc/fsl/l2cache.txt new file mode 100644 index 00000000000..c41b2187eaa --- /dev/null +++ b/Documentation/devicetree/bindings/powerpc/fsl/l2cache.txt @@ -0,0 +1,23 @@ +Freescale L2 Cache Controller + +L2 cache is present in Freescale's QorIQ and QorIQ Qonverge platforms. +The cache bindings explained below are ePAPR compliant + +Required Properties: + +- compatible	: Should include "fsl,chip-l2-cache-controller" and "cache" +		  where chip is the processor (bsc9132, npc8572 etc.) +- reg		: Address and size of L2 cache controller registers +- cache-size	: Size of the entire L2 cache +- interrupts	: Error interrupt of L2 controller +- cache-line-size : Size of L2 cache lines + +Example: + +	L2: l2-cache-controller@20000 { +		compatible = "fsl,bsc9132-l2-cache-controller", "cache"; +		reg = <0x20000 0x1000>; +		cache-line-size = <32>; // 32 bytes +		cache-size = <0x40000>; // L2,256K +		interrupts = <16 2 1 0>; +	}; diff --git a/Documentation/devicetree/bindings/powerpc/fsl/mem-ctrlr.txt b/Documentation/devicetree/bindings/powerpc/fsl/mem-ctrlr.txt new file mode 100644 index 00000000000..f87856faf1a --- /dev/null +++ b/Documentation/devicetree/bindings/powerpc/fsl/mem-ctrlr.txt @@ -0,0 +1,27 @@ +Freescale DDR memory controller + +Properties: + +- compatible	: Should include "fsl,chip-memory-controller" where +		  chip is the processor (bsc9132, mpc8572 etc.), or +		  "fsl,qoriq-memory-controller". +- reg		: Address and size of DDR controller registers +- interrupts	: Error interrupt of DDR controller + +Example 1: + +	memory-controller@2000 { +		compatible = "fsl,bsc9132-memory-controller"; +		reg = <0x2000 0x1000>; +		interrupts = <16 2 1 8>; +	}; + + +Example 2: + +	ddr1: memory-controller@8000 { +		compatible = "fsl,qoriq-memory-controller-v4.7", +				"fsl,qoriq-memory-controller"; +		reg = <0x8000 0x1000>; +		interrupts = <16 2 1 23>; +	}; diff --git a/Documentation/devicetree/bindings/powerpc/fsl/pamu.txt b/Documentation/devicetree/bindings/powerpc/fsl/pamu.txt index 1f5e329f756..c2b2899885f 100644 --- a/Documentation/devicetree/bindings/powerpc/fsl/pamu.txt +++ b/Documentation/devicetree/bindings/powerpc/fsl/pamu.txt @@ -34,6 +34,15 @@ Optional properties:  		  for legacy drivers.  - interrupt-parent : <phandle>  		  Phandle to interrupt controller +- fsl,portid-mapping : <u32> +		  The Coherency Subdomain ID Port Mapping Registers and +		  Snoop ID Port Mapping registers, which are part of the +		  CoreNet Coherency fabric (CCF), provide a CoreNet +		  Coherency Subdomain ID/CoreNet Snoop ID to pamu mapping +		  functions.  Certain bits from these registers should be +		  set if PAMUs should be snooped.  This property defines +		  a bitmask which selects the bits that should be set if +		  PAMUs should be snooped.  Child nodes: @@ -88,6 +97,7 @@ Example:  		compatible = "fsl,pamu-v1.0", "fsl,pamu";  		reg = <0x20000 0x5000>;  		ranges = <0 0x20000 0x5000>; +		fsl,portid-mapping = <0xf80000>;  		#address-cells = <1>;  		#size-cells = <1>;  		interrupts = < diff --git a/Documentation/devicetree/bindings/pwm/atmel-pwm.txt b/Documentation/devicetree/bindings/pwm/atmel-pwm.txt new file mode 100644 index 00000000000..02331b904d4 --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/atmel-pwm.txt @@ -0,0 +1,33 @@ +Atmel PWM controller + +Required properties: +  - compatible: should be one of: +    - "atmel,at91sam9rl-pwm" +    - "atmel,sama5d3-pwm" +  - reg: physical base address and length of the controller's registers +  - #pwm-cells: Should be 3. See pwm.txt in this directory for a +    description of the cells format. + +Example: + +	pwm0: pwm@f8034000 { +		compatible = "atmel,at91sam9rl-pwm"; +		reg = <0xf8034000 0x400>; +		#pwm-cells = <3>; +	}; + +	pwmleds { +		compatible = "pwm-leds"; + +		d1 { +			label = "d1"; +			pwms = <&pwm0 3 5000 0> +			max-brightness = <255>; +		}; + +		d2 { +			label = "d2"; +			pwms = <&pwm0 1 5000 1> +			max-brightness = <255>; +		}; +	}; diff --git a/Documentation/devicetree/bindings/pwm/bcm-kona-pwm.txt b/Documentation/devicetree/bindings/pwm/bcm-kona-pwm.txt new file mode 100644 index 00000000000..8eae9fe7841 --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/bcm-kona-pwm.txt @@ -0,0 +1,21 @@ +Broadcom Kona PWM controller device tree bindings + +This controller has 6 channels. + +Required Properties : +- compatible: should contain "brcm,kona-pwm" +- reg: physical base address and length of the controller's registers +- clocks: phandle + clock specifier pair for the external clock +- #pwm-cells: Should be 3. See pwm.txt in this directory for a +  description of the cells format. + +Refer to clocks/clock-bindings.txt for generic clock consumer properties. + +Example: + +pwm: pwm@3e01a000 { +	compatible = "brcm,bcm11351-pwm", "brcm,kona-pwm"; +	reg = <0x3e01a000 0xc4>; +	clocks = <&pwm_clk>; +	#pwm-cells = <3>; +}; diff --git a/Documentation/devicetree/bindings/pwm/cirrus,clps711x-pwm.txt b/Documentation/devicetree/bindings/pwm/cirrus,clps711x-pwm.txt new file mode 100644 index 00000000000..a183db48f91 --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/cirrus,clps711x-pwm.txt @@ -0,0 +1,16 @@ +* Cirris Logic CLPS711X PWM controller + +Required properties: +- compatible: Shall contain "cirrus,clps711x-pwm". +- reg: Physical base address and length of the controller's registers. +- clocks: phandle + clock specifier pair of the PWM reference clock. +- #pwm-cells: Should be 1. The cell specifies the index of the channel. + +Example: +	pwm: pwm@80000400 { +		compatible = "cirrus,ep7312-pwm", +			     "cirrus,clps711x-pwm"; +		reg = <0x80000400 0x4>; +		clocks = <&clks 8>; +		#pwm-cells = <1>; +	}; diff --git a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt index c3fc57af877..c7ea9d4a988 100644 --- a/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt +++ b/Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt @@ -7,6 +7,12 @@ Required properties:  - reg: physical base address and length of the controller's registers  - #pwm-cells: should be 2. See pwm.txt in this directory for a description of    the cells format. +- clocks: Must contain one entry, for the module clock. +  See ../clocks/clock-bindings.txt for details. +- resets: Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names: Must include the following entries: +  - pwm  Example: @@ -14,4 +20,7 @@ Example:  		compatible = "nvidia,tegra20-pwm";  		reg = <0x7000a000 0x100>;  		#pwm-cells = <2>; +		clocks = <&tegra_car 17>; +		resets = <&tegra_car 17>; +		reset-names = "pwm";  	}; diff --git a/Documentation/devicetree/bindings/pwm/pwm-fsl-ftm.txt b/Documentation/devicetree/bindings/pwm/pwm-fsl-ftm.txt new file mode 100644 index 00000000000..0bda229a617 --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/pwm-fsl-ftm.txt @@ -0,0 +1,35 @@ +Freescale FlexTimer Module (FTM) PWM controller + +Required properties: +- compatible: Should be "fsl,vf610-ftm-pwm". +- reg: Physical base address and length of the controller's registers +- #pwm-cells: Should be 3. See pwm.txt in this directory for a description of +  the cells format. +- clock-names: Should include the following module clock source entries: +    "ftm_sys" (module clock, also can be used as counter clock), +    "ftm_ext" (external counter clock), +    "ftm_fix" (fixed counter clock), +    "ftm_cnt_clk_en" (external and fixed counter clock enable/disable). +- clocks: Must contain a phandle and clock specifier for each entry in +  clock-names, please see clock/clock-bindings.txt for details of the property +  values. +- pinctrl-names: Must contain a "default" entry. +- pinctrl-NNN: One property must exist for each entry in pinctrl-names. +  See pinctrl/pinctrl-bindings.txt for details of the property values. + + +Example: + +pwm0: pwm@40038000 { +		compatible = "fsl,vf610-ftm-pwm"; +		reg = <0x40038000 0x1000>; +		#pwm-cells = <3>; +		clock-names = "ftm_sys", "ftm_ext", +				"ftm_fix", "ftm_cnt_clk_en"; +		clocks = <&clks VF610_CLK_FTM0>, +			<&clks VF610_CLK_FTM0_EXT_SEL>, +			<&clks VF610_CLK_FTM0_FIX_SEL>, +			<&clks VF610_CLK_FTM0_EXT_FIX_EN>; +		pinctrl-names = "default"; +		pinctrl-0 = <&pinctrl_pwm0_1>; +}; diff --git a/Documentation/devicetree/bindings/pwm/pwm-lp3943.txt b/Documentation/devicetree/bindings/pwm/pwm-lp3943.txt new file mode 100644 index 00000000000..7bd9d3b12ce --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/pwm-lp3943.txt @@ -0,0 +1,58 @@ +TI/National Semiconductor LP3943 PWM controller + +Required properties: +  - compatible: "ti,lp3943-pwm" +  - #pwm-cells: Should be 2. See pwm.txt in this directory for a +                description of the cells format. +                Note that this hardware limits the period length to the +                range 6250~1600000. +  - ti,pwm0 or ti,pwm1: Output pin number(s) for PWM channel 0 or 1. +    0 = output 0 +    1 = output 1 +    . +    . +    15 = output 15 + +Example: +PWM 0 is for RGB LED brightness control +PWM 1 is for brightness control of LP8557 backlight device + +&i2c3 { +	lp3943@60 { +		compatible = "ti,lp3943"; +		reg = <0x60>; + +		/* +		 * PWM 0 : output 8, 9 and 10 +		 * PWM 1 : output 15 +		 */ +		pwm3943: pwm { +			compatible = "ti,lp3943-pwm"; +			#pwm-cells = <2>; +			ti,pwm0 = <8 9 10>; +			ti,pwm1 = <15>; +		}; +	}; + +}; + +/* LEDs control with PWM 0 of LP3943 */ +pwmleds { +	compatible = "pwm-leds"; +	rgb { +		label = "indi::rgb"; +		pwms = <&pwm3943 0 10000>; +		max-brightness = <255>; +	}; +}; + +&i2c4 { +	/* Backlight control with PWM 1 of LP3943 */ +	backlight@2c { +		compatible = "ti,lp8557"; +		reg = <0x2c>; + +		pwms = <&pwm3943 1 10000>; +		pwm-names = "lp8557"; +	}; +}; diff --git a/Documentation/devicetree/bindings/pwm/pwm-samsung.txt b/Documentation/devicetree/bindings/pwm/pwm-samsung.txt index d61fccd40ba..5538de9c200 100644 --- a/Documentation/devicetree/bindings/pwm/pwm-samsung.txt +++ b/Documentation/devicetree/bindings/pwm/pwm-samsung.txt @@ -15,7 +15,7 @@ Required properties:      samsung,s5pc100-pwm - for 32-bit timers present on S5PC100, S5PV210,  			  Exynos4210 rev0 SoCs      samsung,exynos4210-pwm - for 32-bit timers present on Exynos4210, -                          Exynos4x12 and Exynos5250 SoCs +                          Exynos4x12, Exynos5250 and Exynos5420 SoCs  - reg: base address and size of register area  - interrupts: list of timer interrupts (one interrupt per timer, starting at    timer 0) diff --git a/Documentation/devicetree/bindings/pwm/pxa-pwm.txt b/Documentation/devicetree/bindings/pwm/pxa-pwm.txt new file mode 100644 index 00000000000..5ae9f1e3c33 --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/pxa-pwm.txt @@ -0,0 +1,30 @@ +Marvell PWM controller + +Required properties: +- compatible: should be one or more of: +  - "marvell,pxa250-pwm" +  - "marvell,pxa270-pwm" +  - "marvell,pxa168-pwm" +  - "marvell,pxa910-pwm" +- reg: Physical base address and length of the registers used by the PWM channel +  Note that one device instance must be created for each PWM that is used, so the +  length covers only the register window for one PWM output, not that of the +  entire PWM controller.  Currently length is 0x10 for all supported devices. +- #pwm-cells: Should be 1.  This cell is used to specify the period in +  nanoseconds. + +Example PWM device node: + +pwm0: pwm@40b00000 { +	compatible = "marvell,pxa250-pwm"; +	reg = <0x40b00000 0x10>; +	#pwm-cells = <1>; +}; + +Example PWM client node: + +backlight { +	compatible = "pwm-backlight"; +	pwms = <&pwm0 5000000>; +	... +} diff --git a/Documentation/devicetree/bindings/regulator/act8865-regulator.txt b/Documentation/devicetree/bindings/regulator/act8865-regulator.txt new file mode 100644 index 00000000000..bef1fbb647c --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/act8865-regulator.txt @@ -0,0 +1,60 @@ +ACT8865 regulator +------------------- + +Required properties: +- compatible: "active-semi,act8865" +- reg: I2C slave address + +Any standard regulator properties can be used to configure the single regulator. + +The valid names for regulators are: +	DCDC_REG1, DCDC_REG2, DCDC_REG3, LDO_REG1, LDO_REG2, LDO_REG3, LDO_REG4. + +Example: +-------- + +		i2c1: i2c@f0018000 { +			pmic: act8865@5b { +				compatible = "active-semi,act8865"; +				reg = <0x5b>; +				status = "disabled"; + +				regulators { +					vcc_1v8_reg: DCDC_REG1 { +						regulator-name = "VCC_1V8"; +						regulator-min-microvolt = <1800000>; +						regulator-max-microvolt = <1800000>; +						regulator-always-on; +					}; + +					vcc_1v2_reg: DCDC_REG2 { +						regulator-name = "VCC_1V2"; +						regulator-min-microvolt = <1100000>; +						regulator-max-microvolt = <1300000>; +						regulator-suspend-mem-microvolt = <1150000>; +						regulator-suspend-standby-microvolt = <1150000>; +						regulator-always-on; +					}; + +					vcc_3v3_reg: DCDC_REG3 { +						regulator-name = "VCC_3V3"; +						regulator-min-microvolt = <3300000>; +						regulator-max-microvolt = <3300000>; +						regulator-always-on; +					}; + +					vddana_reg: LDO_REG1 { +						regulator-name = "VDDANA"; +						regulator-min-microvolt = <3300000>; +						regulator-max-microvolt = <3300000>; +						regulator-always-on; +					}; + +					vddfuse_reg: LDO_REG2 { +						regulator-name = "FUSE_2V5"; +						regulator-min-microvolt = <2500000>; +						regulator-max-microvolt = <2500000>; +					}; +				}; +			}; +		}; diff --git a/Documentation/devicetree/bindings/regulator/as3722-regulator.txt b/Documentation/devicetree/bindings/regulator/as3722-regulator.txt new file mode 100644 index 00000000000..caad0c8a258 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/as3722-regulator.txt @@ -0,0 +1,91 @@ +Regulator of AMS AS3722 PMIC. +Name of the regulator subnode must be "regulators". + +Optional properties: +-------------------- +The input supply of regulators are the optional properties on the +regulator node. The AS3722 is having 7 DCDC step-down regulators as +sd[0-6], 10 LDOs as ldo[0-7], ldo[9-11]. The input supply of these +regulators are provided through following properties: +vsup-sd2-supply: Input supply for SD2. +vsup-sd3-supply: Input supply for SD3. +vsup-sd4-supply: Input supply for SD4. +vsup-sd5-supply: Input supply for SD5. +vin-ldo0-supply: Input supply for LDO0. +vin-ldo1-6-supply: Input supply for LDO1 and LDO6. +vin-ldo2-5-7-supply: Input supply for LDO2, LDO5 and LDO7. +vin-ldo3-4-supply: Input supply for LDO3 and LDO4. +vin-ldo9-10-supply: Input supply for LDO9 and LDO10. +vin-ldo11-supply: Input supply for LDO11. + +Optional nodes: +-------------- +- regulators : Must contain a sub-node per regulator from the list below. +	       Each sub-node should contain the constraints and initialization +	       information for that regulator. See regulator.txt for a +	       description of standard properties for these sub-nodes. +	       Additional custom properties  are listed below. +	       sd[0-6], ldo[0-7], ldo[9-11]. + +	       Optional sub-node properties: +	       ---------------------------- +		ams,ext-control: External control of the rail. The option of +			this properties will tell which external input is +			controlling this rail. Valid values are 0, 1, 2 ad 3. +			0: There is no external control of this rail. +			1: Rail is controlled by ENABLE1 input pin. +			2: Rail is controlled by ENABLE2 input pin. +			3: Rail is controlled by ENABLE3 input pin. +		ams,enable-tracking: Enable tracking with SD1, only supported +			by LDO3. + +Example: +------- +	ams3722: ams3722 { +		compatible = "ams,as3722"; +		reg = <0x40>; +		... + +		regulators { +			vsup-sd2-supply = <...>; +			... + +			sd0 { +				regulator-name = "vdd_cpu"; +				regulator-min-microvolt = <700000>; +				regulator-max-microvolt = <1400000>; +				regulator-always-on; +				ams,ext-control = <2>; +			}; + +			sd1 { +				regulator-name = "vdd_core"; +				regulator-min-microvolt = <700000>; +				regulator-max-microvolt = <1400000>; +				regulator-always-on; +				ams,ext-control = <1>; +			}; + +			sd2 { +				regulator-name = "vddio_ddr"; +				regulator-min-microvolt = <1350000>; +				regulator-max-microvolt = <1350000>; +				regulator-always-on; +			}; + +			sd4 { +				regulator-name = "avdd-hdmi-pex"; +				regulator-min-microvolt = <1050000>; +				regulator-max-microvolt = <1050000>; +				regulator-always-on; +			}; + +			sd5 { +				regulator-name = "vdd-1v8"; +				regulator-min-microvolt = <1800000>; +				regulator-max-microvolt = <1800000>; +				regulator-always-on; +			}; +			.... +		}; +	}; diff --git a/Documentation/devicetree/bindings/regulator/da9210.txt b/Documentation/devicetree/bindings/regulator/da9210.txt new file mode 100644 index 00000000000..f120f229d67 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/da9210.txt @@ -0,0 +1,21 @@ +* Dialog Semiconductor DA9210 Voltage Regulator + +Required properties: + +- compatible:	must be "diasemi,da9210" +- reg:		the i2c slave address of the regulator. It should be 0x68. + +Any standard regulator properties can be used to configure the single da9210 +DCDC. + +Example: + +	da9210@68 { +		compatible = "diasemi,da9210"; +		reg = <0x68>; + +		regulator-min-microvolt = <900000>; +		regulator-max-microvolt = <1000000>; +		regulator-boot-on; +		regulator-always-on; +	}; diff --git a/Documentation/devicetree/bindings/regulator/gpio-regulator.txt b/Documentation/devicetree/bindings/regulator/gpio-regulator.txt index 63c659800c0..e5cac1e0ca8 100644 --- a/Documentation/devicetree/bindings/regulator/gpio-regulator.txt +++ b/Documentation/devicetree/bindings/regulator/gpio-regulator.txt @@ -8,8 +8,12 @@ Required properties:  Optional properties:  - enable-gpio		: GPIO to use to enable/disable the regulator.  - gpios			: GPIO group used to control voltage. +- gpios-states		: gpios pin's initial states array. 0: LOW, 1: HIGH. +			  defualt is LOW if nothing is specified.  - startup-delay-us	: Startup time in microseconds.  - enable-active-high	: Polarity of GPIO is active high (default is low). +- regulator-type	: Specifies what is being regulated, must be either +			  "voltage" or "current", defaults to current.  Any property defined as part of the core regulator binding defined in  regulator.txt can also be used. diff --git a/Documentation/devicetree/bindings/regulator/ltc3589.txt b/Documentation/devicetree/bindings/regulator/ltc3589.txt new file mode 100644 index 00000000000..80105303614 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/ltc3589.txt @@ -0,0 +1,99 @@ +Linear Technology LTC3589, LTC3589-1, and LTC3589-2 8-output regulators + +Required properties: +- compatible: "lltc,ltc3589", "lltc,ltc3589-1" or "lltc,ltc3589-2" +- reg: I2C slave address + +Required child node: +- regulators: Contains eight regulator child nodes sw1, sw2, sw3, bb-out, +  ldo1, ldo2, ldo3, and ldo4, specifying the initialization data as +  documented in Documentation/devicetree/bindings/regulator/regulator.txt. + +Each regulator is defined using the standard binding for regulators. The +nodes for sw1, sw2, sw3, bb-out, ldo1, and ldo2 additionally need to specify +the resistor values of their external feedback voltage dividers: + +Required properties (not on ldo3, ldo4): +- lltc,fb-voltage-divider: An array of two integers containing the resistor +  values R1 and R2 of the feedback voltage divider in ohms. + +Regulators sw1, sw2, sw3, and ldo2 can regulate the feedback reference from +0.3625 V to 0.75 V in 12.5 mV steps. The output voltage thus ranges between +0.3625 * (1 + R1/R2) V and 0.75 * (1 + R1/R2) V. Regulators bb-out and ldo1 +have a fixed 0.8 V reference and thus output 0.8 * (1 + R1/R2) V. The ldo3 +regulator is fixed to 1.8 V on LTC3589 and to 2.8 V on LTC3589-1,2. The ldo4 +regulator can output between 1.8 V and 3.3 V on LTC3589 and between 1.2 V +and 3.2 V on LTC3589-1,2 in four steps. The ldo1 standby regulator can not +be disabled and thus should have the regulator-always-on property set. + +Example: + +	ltc3589: pmic@34 { +		compatible = "lltc,ltc3589-1"; +		reg = <0x34>; + +		regulators { +			sw1_reg: sw1 { +				regulator-min-microvolt = <591930>; +				regulator-max-microvolt = <1224671>; +				lltc,fb-voltage-divider = <100000 158000>; +				regulator-ramp-delay = <7000>; +				regulator-boot-on; +				regulator-always-on; +			}; + +			sw2_reg: sw2 { +				regulator-min-microvolt = <704123>; +				regulator-max-microvolt = <1456803>; +				lltc,fb-voltage-divider = <180000 191000>; +				regulator-ramp-delay = <7000>; +				regulator-boot-on; +				regulator-always-on; +			}; + +			sw3_reg: sw3 { +				regulator-min-microvolt = <1341250>; +				regulator-max-microvolt = <2775000>; +				lltc,fb-voltage-divider = <270000 100000>; +				regulator-ramp-delay = <7000>; +				regulator-boot-on; +				regulator-always-on; +			}; + +			bb_out_reg: bb-out { +				regulator-min-microvolt = <3387341>; +				regulator-max-microvolt = <3387341>; +				lltc,fb-voltage-divider = <511000 158000>; +				regulator-boot-on; +				regulator-always-on; +			}; + +			ldo1_reg: ldo1 { +				regulator-min-microvolt = <1306329>; +				regulator-max-microvolt = <1306329>; +				lltc,fb-voltage-divider = <100000 158000>; +				regulator-boot-on; +				regulator-always-on; +			}; + +			ldo2_reg: ldo2 { +				regulator-min-microvolt = <704123>; +				regulator-max-microvolt = <1456806>; +				lltc,fb-voltage-divider = <180000 191000>; +				regulator-ramp-delay = <7000>; +				regulator-boot-on; +				regulator-always-on; +			}; + +			ldo3_reg: ldo3 { +				regulator-min-microvolt = <2800000>; +				regulator-max-microvolt = <2800000>; +				regulator-boot-on; +			}; + +			ldo4_reg: ldo4 { +				regulator-min-microvolt = <1200000>; +				regulator-max-microvolt = <3200000>; +			}; +		}; +	}; diff --git a/Documentation/devicetree/bindings/regulator/palmas-pmic.txt b/Documentation/devicetree/bindings/regulator/palmas-pmic.txt index 875639ae060..42e6b6bc48f 100644 --- a/Documentation/devicetree/bindings/regulator/palmas-pmic.txt +++ b/Documentation/devicetree/bindings/regulator/palmas-pmic.txt @@ -26,11 +26,17 @@ Optional nodes:  	       For ti,palmas-pmic - smps12, smps123, smps3 depending on OTP,  	       smps45, smps457, smps7 depending on variant, smps6, smps[8-9], -	       smps10_out2, smps10_out1, do[1-9], ldoln, ldousb. +	       smps10_out2, smps10_out1, ldo[1-9], ldoln, ldousb.  	       Optional sub-node properties:  	       ti,warm-reset - maintain voltage during warm reset(boolean) -	       ti,roof-floor - control voltage selection by pin(boolean) +	       ti,roof-floor - This takes as optional argument on platform supporting +	       the rail from desired external control. If there is no argument then +	       it will be assume that it is controlled by NSLEEP pin. +	       The valid value for external pins are: +			ENABLE1 then 1, +			ENABLE2 then 2 or +			NSLEEP then 3.  	       ti,mode-sleep - mode to adopt in pmic sleep 0 - off, 1 - auto,  	       2 - eco, 3 - forced pwm  	       ti,smps-range - OTP has the wrong range set for the hardware so override @@ -61,7 +67,7 @@ pmic {  			regulator-always-on;  			regulator-boot-on;  			ti,warm-reset; -			ti,roof-floor; +			ti,roof-floor = <1>; /* ENABLE1 control */  			ti,mode-sleep = <0>;  			ti,smps-range = <1>;  		}; diff --git a/Documentation/devicetree/bindings/regulator/pbias-regulator.txt b/Documentation/devicetree/bindings/regulator/pbias-regulator.txt new file mode 100644 index 00000000000..32aa26f1e43 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/pbias-regulator.txt @@ -0,0 +1,27 @@ +PBIAS internal regulator for SD card dual voltage i/o pads on OMAP SoCs. + +Required properties: +- compatible: +  - "ti,pbias-omap" for OMAP2, OMAP3, OMAP4, OMAP5, DRA7. +- reg: pbias register offset from syscon base and size of pbias register. +- syscon : phandle of the system control module +- regulator-name : should be +			pbias_mmc_omap2430 for OMAP2430, OMAP3 SoCs +			pbias_sim_omap3 for OMAP3 SoCs +			pbias_mmc_omap4 for OMAP4 SoCs +			pbias_mmc_omap5 for OMAP5 and DRA7 SoC + +Optional properties: +- Any optional property defined in bindings/regulator/regulator.txt + +Example: + +		pbias_regulator: pbias_regulator { +			compatible = "ti,pbias-omap"; +			reg = <0 0x4>; +			syscon = <&omap5_padconf_global>; +			pbias_mmc_reg: pbias_mmc_omap5 { +				regulator-name = "pbias_mmc_omap5"; +				regulator-min-microvolt = <1800000>; +				regulator-max-microvolt = <3000000>; +			}; diff --git a/Documentation/devicetree/bindings/regulator/pfuze100.txt b/Documentation/devicetree/bindings/regulator/pfuze100.txt index fc989b2e805..34ef5d16d0f 100644 --- a/Documentation/devicetree/bindings/regulator/pfuze100.txt +++ b/Documentation/devicetree/bindings/regulator/pfuze100.txt @@ -1,7 +1,7 @@  PFUZE100 family of regulators  Required properties: -- compatible: "fsl,pfuze100" +- compatible: "fsl,pfuze100" or "fsl,pfuze200"  - reg: I2C slave address  Required child node: @@ -10,11 +10,14 @@ Required child node:    Documentation/devicetree/bindings/regulator/regulator.txt.    The valid names for regulators are: +  --PFUZE100    sw1ab,sw1c,sw2,sw3a,sw3b,sw4,swbst,vsnvs,vrefddr,vgen1~vgen6 +  --PFUZE200 +  sw1ab,sw2,sw3a,sw3b,swbst,vsnvs,vrefddr,vgen1~vgen6  Each regulator is defined using the standard binding for regulators. -Example: +Example 1: PFUZE100  	pmic: pfuze100@08 {  		compatible = "fsl,pfuze100"; @@ -113,3 +116,92 @@ Example:  			};  		};  	}; + + +Example 2: PFUZE200 + +	pmic: pfuze200@08 { +		compatible = "fsl,pfuze200"; +		reg = <0x08>; + +		regulators { +			sw1a_reg: sw1ab { +				regulator-min-microvolt = <300000>; +				regulator-max-microvolt = <1875000>; +				regulator-boot-on; +				regulator-always-on; +				regulator-ramp-delay = <6250>; +			}; + +			sw2_reg: sw2 { +				regulator-min-microvolt = <800000>; +				regulator-max-microvolt = <3300000>; +				regulator-boot-on; +				regulator-always-on; +			}; + +			sw3a_reg: sw3a { +				regulator-min-microvolt = <400000>; +				regulator-max-microvolt = <1975000>; +				regulator-boot-on; +				regulator-always-on; +			}; + +			sw3b_reg: sw3b { +				regulator-min-microvolt = <400000>; +				regulator-max-microvolt = <1975000>; +				regulator-boot-on; +				regulator-always-on; +			}; + +			swbst_reg: swbst { +				regulator-min-microvolt = <5000000>; +				regulator-max-microvolt = <5150000>; +			}; + +			snvs_reg: vsnvs { +				regulator-min-microvolt = <1000000>; +				regulator-max-microvolt = <3000000>; +				regulator-boot-on; +				regulator-always-on; +			}; + +			vref_reg: vrefddr { +				regulator-boot-on; +				regulator-always-on; +			}; + +			vgen1_reg: vgen1 { +				regulator-min-microvolt = <800000>; +				regulator-max-microvolt = <1550000>; +			}; + +			vgen2_reg: vgen2 { +				regulator-min-microvolt = <800000>; +				regulator-max-microvolt = <1550000>; +			}; + +			vgen3_reg: vgen3 { +				regulator-min-microvolt = <1800000>; +				regulator-max-microvolt = <3300000>; +			}; + +			vgen4_reg: vgen4 { +				regulator-min-microvolt = <1800000>; +				regulator-max-microvolt = <3300000>; +				regulator-always-on; +			}; + +			vgen5_reg: vgen5 { +				regulator-min-microvolt = <1800000>; +				regulator-max-microvolt = <3300000>; +				regulator-always-on; +			}; + +			vgen6_reg: vgen6 { +				regulator-min-microvolt = <1800000>; +				regulator-max-microvolt = <3300000>; +				regulator-always-on; +			}; +		}; +	}; diff --git a/Documentation/devicetree/bindings/regulator/regulator.txt b/Documentation/devicetree/bindings/regulator/regulator.txt index 2bd8f097876..86074334e34 100644 --- a/Documentation/devicetree/bindings/regulator/regulator.txt +++ b/Documentation/devicetree/bindings/regulator/regulator.txt @@ -12,8 +12,13 @@ Optional properties:  - regulator-allow-bypass: allow the regulator to go into bypass mode  - <name>-supply: phandle to the parent supply/regulator node  - regulator-ramp-delay: ramp delay for regulator(in uV/uS) -  For hardwares which support disabling ramp rate, it should be explicitly +  For hardware which supports disabling ramp rate, it should be explicitly    intialised to zero (regulator-ramp-delay = <0>) for disabling ramp delay. +- regulator-enable-ramp-delay: The time taken, in microseconds, for the supply +  rail to reach the target voltage, plus/minus whatever tolerance the board +  design requires. This property describes the total system ramp time +  required due to the combination of internal ramping of the regulator itself, +  and board design issues such as trace capacitance and load on the supply.  Deprecated properties:  - regulator-compatible: If a regulator chip contains multiple diff --git a/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt b/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt index d1660a90fc0..d290988ed97 100644 --- a/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt +++ b/Documentation/devicetree/bindings/regulator/s5m8767-regulator.txt @@ -69,13 +69,16 @@ sub-node should be of the format as listed below.  		};  	};  The above regulator entries are defined in regulator bindings documentation -except op_mode description. +except these properties:  	- op_mode: describes the different operating modes of the LDO's with  		power mode change in SOC. The different possible values are,  		0 - always off mode  		1 - on in normal mode  		2 - low power mode  		3 - suspend mode +	- s5m8767,pmic-ext-control-gpios: (optional) GPIO specifier for one +		GPIO controlling this regulator (enable/disable); This is +		valid only for buck9.  The following are the names of the regulators that the s5m8767 pmic block  supports. Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number @@ -83,7 +86,7 @@ as per the datasheet of s5m8767.  	- LDOn  		  - valid values for n are 1 to 28 -		  - Example: LDO0, LD01, LDO28 +		  - Example: LDO1, LD02, LDO28  	- BUCKn  		  - valid values for n are 1 to 9.  		  - Example: BUCK1, BUCK2, BUCK9 @@ -148,5 +151,13 @@ Example:  				regulator-always-on;  				regulator-boot-on;  			}; + +			vemmc_reg: BUCK9 { +				regulator-name = "VMEM_VDD_2.8V"; +				regulator-min-microvolt = <2800000>; +				regulator-max-microvolt = <2800000>; +				op_mode = <3>; /* Standby Mode */ +				s5m8767,pmic-ext-control-gpios = <&gpk0 2 0>; +			};  		};  	}; diff --git a/Documentation/devicetree/bindings/regulator/ti-abb-regulator.txt b/Documentation/devicetree/bindings/regulator/ti-abb-regulator.txt index 2e57a33e902..c58db75f959 100644 --- a/Documentation/devicetree/bindings/regulator/ti-abb-regulator.txt +++ b/Documentation/devicetree/bindings/regulator/ti-abb-regulator.txt @@ -4,10 +4,14 @@ Required Properties:  - compatible: Should be one of:    - "ti,abb-v1" for older SoCs like OMAP3    - "ti,abb-v2" for newer SoCs like OMAP4, OMAP5 +  - "ti,abb-v3" for a generic definition where setup and control registers are +     provided (example: DRA7)  - reg: Address and length of the register set for the device. It contains    the information of registers in the same order as described by reg-names  - reg-names: Should contain the reg names -  - "base-address"	- contains base address of ABB module +  - "base-address"	- contains base address of ABB module (ti,abb-v1,ti,abb-v2) +  - "control-address"	- contains control register address of ABB module (ti,abb-v3) +  - "setup-address"	- contains setup register address of ABB module (ti,abb-v3)    - "int-address"	- contains address of interrupt register for ABB module    (also see Optional properties)  - #address-cell: should be 0 diff --git a/Documentation/devicetree/bindings/regulator/tps65090.txt b/Documentation/devicetree/bindings/regulator/tps65090.txt index 313a60ba61d..340980239ea 100644 --- a/Documentation/devicetree/bindings/regulator/tps65090.txt +++ b/Documentation/devicetree/bindings/regulator/tps65090.txt @@ -21,6 +21,10 @@ Optional properties:    number should be provided. If it is externally controlled and no GPIO    entry then driver will just configure this rails as external control    and will not provide any enable/disable APIs. +- ti,overcurrent-wait: This is applicable to FET registers, which have a +  poorly defined "overcurrent wait" field.  If this property is present it +  should be between 0 - 3.  If this property isn't present we won't touch the +  "overcurrent wait" field and we'll leave it to the BIOS/EC to deal with.  Each regulator is defined using the standard binding for regulators. diff --git a/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt b/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt new file mode 100644 index 00000000000..3da0ebdba8d --- /dev/null +++ b/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt @@ -0,0 +1,133 @@ +*** Reserved memory regions *** + +Reserved memory is specified as a node under the /reserved-memory node. +The operating system shall exclude reserved memory from normal usage +one can create child nodes describing particular reserved (excluded from +normal use) memory regions. Such memory regions are usually designed for +the special usage by various device drivers. + +Parameters for each memory region can be encoded into the device tree +with the following nodes: + +/reserved-memory node +--------------------- +#address-cells, #size-cells (required) - standard definition +    - Should use the same values as the root node +ranges (required) - standard definition +    - Should be empty + +/reserved-memory/ child nodes +----------------------------- +Each child of the reserved-memory node specifies one or more regions of +reserved memory. Each child node may either use a 'reg' property to +specify a specific range of reserved memory, or a 'size' property with +optional constraints to request a dynamically allocated block of memory. + +Following the generic-names recommended practice, node names should +reflect the purpose of the node (ie. "framebuffer" or "dma-pool"). Unit +address (@<address>) should be appended to the name if the node is a +static allocation. + +Properties: +Requires either a) or b) below. +a) static allocation +   reg (required) - standard definition +b) dynamic allocation +   size (required) - length based on parent's #size-cells +                   - Size in bytes of memory to reserve. +   alignment (optional) - length based on parent's #size-cells +                        - Address boundary for alignment of allocation. +   alloc-ranges (optional) - prop-encoded-array (address, length pairs). +                           - Specifies regions of memory that are +                             acceptable to allocate from. + +If both reg and size are present, then the reg property takes precedence +and size is ignored. + +Additional properties: +compatible (optional) - standard definition +    - may contain the following strings: +        - shared-dma-pool: This indicates a region of memory meant to be +          used as a shared pool of DMA buffers for a set of devices. It can +          be used by an operating system to instanciate the necessary pool +          management subsystem if necessary. +        - vendor specific string in the form <vendor>,[<device>-]<usage> +no-map (optional) - empty property +    - Indicates the operating system must not create a virtual mapping +      of the region as part of its standard mapping of system memory, +      nor permit speculative access to it under any circumstances other +      than under the control of the device driver using the region. +reusable (optional) - empty property +    - The operating system can use the memory in this region with the +      limitation that the device driver(s) owning the region need to be +      able to reclaim it back. Typically that means that the operating +      system can use that region to store volatile or cached data that +      can be otherwise regenerated or migrated elsewhere. + +Linux implementation note: +- If a "linux,cma-default" property is present, then Linux will use the +  region for the default pool of the contiguous memory allocator. + +Device node references to reserved memory +----------------------------------------- +Regions in the /reserved-memory node may be referenced by other device +nodes by adding a memory-region property to the device node. + +memory-region (optional) - phandle, specifier pairs to children of /reserved-memory + +Example +------- +This example defines 3 contiguous regions are defined for Linux kernel: +one default of all device drivers (named linux,cma@72000000 and 64MiB in size), +one dedicated to the framebuffer device (named framebuffer@78000000, 8MiB), and +one for multimedia processing (named multimedia-memory@77000000, 64MiB). + +/ { +	#address-cells = <1>; +	#size-cells = <1>; + +	memory { +		reg = <0x40000000 0x40000000>; +	}; + +	reserved-memory { +		#address-cells = <1>; +		#size-cells = <1>; +		ranges; + +		/* global autoconfigured region for contiguous allocations */ +		linux,cma { +			compatible = "shared-dma-pool"; +			reusable; +			size = <0x4000000>; +			alignment = <0x2000>; +			linux,cma-default; +		}; + +		display_reserved: framebuffer@78000000 { +			reg = <0x78000000 0x800000>; +		}; + +		multimedia_reserved: multimedia@77000000 { +			compatible = "acme,multimedia-memory"; +			reg = <0x77000000 0x4000000>; +		}; +	}; + +	/* ... */ + +	fb0: video@12300000 { +		memory-region = <&display_reserved>; +		/* ... */ +	}; + +	scaler: scaler@12500000 { +		memory-region = <&multimedia_reserved>; +		/* ... */ +	}; + +	codec: codec@12600000 { +		memory-region = <&multimedia_reserved>; +		/* ... */ +	}; +}; diff --git a/Documentation/devicetree/bindings/reset/allwinner,sunxi-clock-reset.txt b/Documentation/devicetree/bindings/reset/allwinner,sunxi-clock-reset.txt new file mode 100644 index 00000000000..c8f77571488 --- /dev/null +++ b/Documentation/devicetree/bindings/reset/allwinner,sunxi-clock-reset.txt @@ -0,0 +1,21 @@ +Allwinner sunxi Peripheral Reset Controller +=========================================== + +Please also refer to reset.txt in this directory for common reset +controller binding usage. + +Required properties: +- compatible: Should be one of the following: +  "allwinner,sun6i-a31-ahb1-reset" +  "allwinner,sun6i-a31-clock-reset" +- reg: should be register base and length as documented in the +  datasheet +- #reset-cells: 1, see below + +example: + +ahb1_rst: reset@01c202c0 { +	#reset-cells = <1>; +	compatible = "allwinner,sun6i-a31-ahb1-reset"; +	reg = <0x01c202c0 0xc>; +}; diff --git a/Documentation/devicetree/bindings/reset/sirf,rstc.txt b/Documentation/devicetree/bindings/reset/sirf,rstc.txt new file mode 100644 index 00000000000..0505de742d3 --- /dev/null +++ b/Documentation/devicetree/bindings/reset/sirf,rstc.txt @@ -0,0 +1,42 @@ +CSR SiRFSoC Reset Controller +====================================== + +Please also refer to reset.txt in this directory for common reset +controller binding usage. + +Required properties: +- compatible: Should be "sirf,prima2-rstc" or "sirf,marco-rstc" +- reg: should be register base and length as documented in the +  datasheet +- #reset-cells: 1, see below + +example: + +rstc: reset-controller@88010000 { +	compatible = "sirf,prima2-rstc"; +	reg = <0x88010000 0x1000>; +	#reset-cells = <1>; +}; + +Specifying reset lines connected to IP modules +============================================== + +The reset controller(rstc) manages various reset sources. This module provides +reset signals for most blocks in system. Those device nodes should specify the +reset line on the rstc in their resets property, containing a phandle to the +rstc device node and a RESET_INDEX specifying which module to reset, as described +in reset.txt. + +For SiRFSoC, RESET_INDEX is just reset_bit defined in SW_RST0 and SW_RST1 registers. +For modules whose rest_bit is in SW_RST0, its RESET_INDEX is 0~31. For modules whose +rest_bit is in SW_RST1, its RESET_INDEX is 32~63. + +example: + +vpp@90020000 { +	compatible = "sirf,prima2-vpp"; +	reg = <0x90020000 0x10000>; +	interrupts = <31>; +	clocks = <&clks 35>; +	resets = <&rstc 6>; +}; diff --git a/Documentation/devicetree/bindings/arm/altera/socfpga-reset.txt b/Documentation/devicetree/bindings/reset/socfpga-reset.txt index ecdb57d69db..32c1c8bfd5d 100644 --- a/Documentation/devicetree/bindings/arm/altera/socfpga-reset.txt +++ b/Documentation/devicetree/bindings/reset/socfpga-reset.txt @@ -3,9 +3,11 @@ Altera SOCFPGA Reset Manager  Required properties:  - compatible : "altr,rst-mgr"  - reg : Should contain 1 register ranges(address and length) +- #reset-cells: 1  Example:  	 rstmgr@ffd05000 { +		#reset-cells = <1>;  		compatible = "altr,rst-mgr";  		reg = <0xffd05000 0x1000>;  	}; diff --git a/Documentation/devicetree/bindings/reset/st,sti-powerdown.txt b/Documentation/devicetree/bindings/reset/st,sti-powerdown.txt new file mode 100644 index 00000000000..5ab26b7e9d3 --- /dev/null +++ b/Documentation/devicetree/bindings/reset/st,sti-powerdown.txt @@ -0,0 +1,47 @@ +STMicroelectronics STi family Sysconfig Peripheral Powerdown Reset Controller +============================================================================= + +This binding describes a reset controller device that is used to enable and +disable on-chip peripheral controllers such as USB and SATA, using +"powerdown" control bits found in the STi family SoC system configuration +registers. These have been grouped together into a single reset controller +device for convenience. + +The actual action taken when powerdown is asserted is hardware dependent. +However, when asserted it may not be possible to access the hardware's +registers and after an assert/deassert sequence the hardware's previous state +may no longer be valid. + +Please refer to reset.txt in this directory for common reset +controller binding usage. + +Required properties: +- compatible: Should be "st,<chip>-powerdown" +	ex: "st,stih415-powerdown", "st,stih416-powerdown" +- #reset-cells: 1, see below + +example: + +	powerdown: powerdown-controller { +		#reset-cells = <1>; +		compatible = "st,stih415-powerdown"; +	}; + + +Specifying powerdown control of devices +======================================= + +Device nodes should specify the reset channel required in their "resets" +property, containing a phandle to the powerdown device node and an +index specifying which channel to use, as described in reset.txt + +example: + +	usb1: usb@fe200000 { +		resets	= <&powerdown STIH41X_USB1_POWERDOWN>; +	}; + +Macro definitions for the supported reset channels can be found in: + +include/dt-bindings/reset-controller/stih415-resets.h +include/dt-bindings/reset-controller/stih416-resets.h diff --git a/Documentation/devicetree/bindings/reset/st,sti-softreset.txt b/Documentation/devicetree/bindings/reset/st,sti-softreset.txt new file mode 100644 index 00000000000..a8d3d3c25ca --- /dev/null +++ b/Documentation/devicetree/bindings/reset/st,sti-softreset.txt @@ -0,0 +1,46 @@ +STMicroelectronics STi family Sysconfig Peripheral SoftReset Controller +============================================================================= + +This binding describes a reset controller device that is used to enable and +disable on-chip peripheral controllers such as USB and SATA, using +"softreset" control bits found in the STi family SoC system configuration +registers. + +The actual action taken when softreset is asserted is hardware dependent. +However, when asserted it may not be possible to access the hardware's +registers and after an assert/deassert sequence the hardware's previous state +may no longer be valid. + +Please refer to reset.txt in this directory for common reset +controller binding usage. + +Required properties: +- compatible: Should be "st,<chip>-softreset" example: +	"st,stih415-softreset" or "st,stih416-softreset"; +- #reset-cells: 1, see below + +example: + +	softreset: softreset-controller { +		#reset-cells = <1>; +		compatible = "st,stih415-softreset"; +	}; + + +Specifying softreset control of devices +======================================= + +Device nodes should specify the reset channel required in their "resets" +property, containing a phandle to the softreset device node and an +index specifying which channel to use, as described in reset.txt + +example: + +	ethernet0{ +		resets			= <&softreset STIH415_ETH0_SOFTRESET>; +	}; + +Macro definitions for the supported reset channels can be found in: + +include/dt-bindings/reset-controller/stih415-resets.h +include/dt-bindings/reset-controller/stih416-resets.h diff --git a/Documentation/devicetree/bindings/rng/qcom,prng.txt b/Documentation/devicetree/bindings/rng/qcom,prng.txt new file mode 100644 index 00000000000..8e5853c2879 --- /dev/null +++ b/Documentation/devicetree/bindings/rng/qcom,prng.txt @@ -0,0 +1,17 @@ +Qualcomm MSM pseudo random number generator. + +Required properties: + +- compatible  : should be "qcom,prng" +- reg         : specifies base physical address and size of the registers map +- clocks      : phandle to clock-controller plus clock-specifier pair +- clock-names : "core" clocks all registers, FIFO and circuits in PRNG IP block + +Example: + +	rng@f9bff000 { +		compatible = "qcom,prng"; +		reg = <0xf9bff000 0x200>; +		clocks = <&clock GCC_PRNG_AHB_CLK>; +		clock-names = "core"; +	}; diff --git a/Documentation/devicetree/bindings/rtc/haoyu,hym8563.txt b/Documentation/devicetree/bindings/rtc/haoyu,hym8563.txt new file mode 100644 index 00000000000..5c199ee044c --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/haoyu,hym8563.txt @@ -0,0 +1,30 @@ +Haoyu Microelectronics HYM8563 Real Time Clock + +The HYM8563 provides basic rtc and alarm functionality +as well as a clock output of up to 32kHz. + +Required properties: +- compatible: should be: "haoyu,hym8563" +- reg: i2c address +- interrupts: rtc alarm/event interrupt +- #clock-cells: the value should be 0 + +Optional properties: +- clock-output-names: From common clock binding + +Example: + +hym8563: hym8563@51 { +	compatible = "haoyu,hym8563"; +	reg = <0x51>; + +	interrupts = <13 IRQ_TYPE_EDGE_FALLING>; + +	#clock-cells = <0>; +}; + +device { +... +	clocks = <&hym8563>; +... +}; diff --git a/Documentation/devicetree/bindings/rtc/maxim,ds1742.txt b/Documentation/devicetree/bindings/rtc/maxim,ds1742.txt new file mode 100644 index 00000000000..d0f937c355b --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/maxim,ds1742.txt @@ -0,0 +1,12 @@ +* Maxim (Dallas) DS1742/DS1743 Real Time Clock + +Required properties: +- compatible: Should contain "maxim,ds1742". +- reg: Physical base address of the RTC and length of memory +  mapped region. + +Example: +	rtc: rtc@10000000 { +		compatible = "maxim,ds1742"; +		reg = <0x10000000 0x800>; +	}; diff --git a/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt b/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt index 93f45e9dce7..652d1ff2e8b 100644 --- a/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt +++ b/Documentation/devicetree/bindings/rtc/nvidia,tegra20-rtc.txt @@ -9,6 +9,8 @@ Required properties:  - compatible : should be "nvidia,tegra20-rtc".  - reg : Specifies base physical address and size of the registers.  - interrupts : A single interrupt specifier. +- clocks : Must contain one entry, for the module clock. +  See ../clocks/clock-bindings.txt for details.  Example: @@ -16,4 +18,5 @@ timer {  	compatible = "nvidia,tegra20-rtc";  	reg = <0x7000e000 0x100>;  	interrupts = <0 2 0x04>; +	clocks = <&tegra_car 4>;  }; diff --git a/Documentation/devicetree/bindings/rtc/sunxi-rtc.txt b/Documentation/devicetree/bindings/rtc/sunxi-rtc.txt new file mode 100644 index 00000000000..6983aad376c --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/sunxi-rtc.txt @@ -0,0 +1,17 @@ +* sun4i/sun7i Real Time Clock + +RTC controller for the Allwinner A10/A20 + +Required properties: +- compatible : Should be "allwinner,sun4i-a10-rtc" or "allwinner,sun7i-a20-rtc" +- reg: physical base address of the controller and length of memory mapped +  region. +- interrupts: IRQ line for the RTC. + +Example: + +rtc: rtc@01c20d00 { +	compatible = "allwinner,sun4i-a10-rtc"; +	reg = <0x01c20d00 0x20>; +	interrupts = <24>; +}; diff --git a/Documentation/devicetree/bindings/rtc/xgene-rtc.txt b/Documentation/devicetree/bindings/rtc/xgene-rtc.txt new file mode 100644 index 00000000000..fd195c35844 --- /dev/null +++ b/Documentation/devicetree/bindings/rtc/xgene-rtc.txt @@ -0,0 +1,28 @@ +* APM X-Gene Real Time Clock + +RTC controller for the APM X-Gene Real Time Clock + +Required properties: +- compatible : Should be "apm,xgene-rtc" +- reg: physical base address of the controller and length of memory mapped +  region. +- interrupts: IRQ line for the RTC. +- #clock-cells: Should be 1. +- clocks: Reference to the clock entry. + +Example: + +rtcclk: rtcclk { +	compatible = "fixed-clock"; +	#clock-cells = <1>; +	clock-frequency = <100000000>; +	clock-output-names = "rtcclk"; +}; + +rtc: rtc@10510000 { +	compatible = "apm,xgene-rtc"; +	reg = <0x0 0x10510000 0x0 0x400>; +	interrupts = <0x0 0x46 0x4>; +	#clock-cells = <1>; +	clocks = <&rtcclk 0>; +}; diff --git a/Documentation/devicetree/bindings/serial/atmel-usart.txt b/Documentation/devicetree/bindings/serial/atmel-usart.txt index 2191dcb9f1d..a6391e70a8f 100644 --- a/Documentation/devicetree/bindings/serial/atmel-usart.txt +++ b/Documentation/devicetree/bindings/serial/atmel-usart.txt @@ -6,10 +6,16 @@ Required properties:    additional mode or an USART new feature.  - reg: Should contain registers location and length  - interrupts: Should contain interrupt +- clock-names: tuple listing input clock names. +	Required elements: "usart" +- clocks: phandles to input clocks.  Optional properties:  - atmel,use-dma-rx: use of PDC or DMA for receiving data  - atmel,use-dma-tx: use of PDC or DMA for transmitting data +- {rts,cts,dtr,dsr,rng,dcd}-gpios: specify a GPIO for RTS/CTS/DTR/DSR/RI/DCD line respectively. +  It will use specified PIO instead of the peripheral function pin for the USART feature. +  If unsure, don't specify this property.  - add dma bindings for dma transfer:  	- dmas: DMA specifier, consisting of a phandle to DMA controller node,  		memory peripheral interface and USART DMA channel ID, FIFO configuration. @@ -26,8 +32,16 @@ Example:  		compatible = "atmel,at91sam9260-usart";  		reg = <0xfff8c000 0x4000>;  		interrupts = <7>; +		clocks = <&usart0_clk>; +		clock-names = "usart";  		atmel,use-dma-rx;  		atmel,use-dma-tx; +		rts-gpios = <&pioD 15 GPIO_ACTIVE_LOW>; +		cts-gpios = <&pioD 16 GPIO_ACTIVE_LOW>; +		dtr-gpios = <&pioD 17 GPIO_ACTIVE_LOW>; +		dsr-gpios = <&pioD 18 GPIO_ACTIVE_LOW>; +		dcd-gpios = <&pioD 20 GPIO_ACTIVE_LOW>; +		rng-gpios = <&pioD 19 GPIO_ACTIVE_LOW>;  	};  - use DMA: @@ -35,6 +49,8 @@ Example:  		compatible = "atmel,at91sam9260-usart";  		reg = <0xf001c000 0x100>;  		interrupts = <12 4 5>; +		clocks = <&usart0_clk>; +		clock-names = "usart";  		atmel,use-dma-rx;  		atmel,use-dma-tx;  		dmas = <&dma0 2 0x3>, diff --git a/Documentation/devicetree/bindings/serial/cirrus,clps711x-uart.txt b/Documentation/devicetree/bindings/serial/cirrus,clps711x-uart.txt new file mode 100644 index 00000000000..12f3cf834de --- /dev/null +++ b/Documentation/devicetree/bindings/serial/cirrus,clps711x-uart.txt @@ -0,0 +1,28 @@ +* Cirrus Logic CLPS711X Universal Asynchronous Receiver/Transmitter (UART) + +Required properties: +- compatible: Should be "cirrus,clps711x-uart". +- reg: Address and length of the register set for the device. +- interrupts: Should contain UART TX and RX interrupt. +- clocks: Should contain UART core clock number. +- syscon: Phandle to SYSCON node, which contain UART control bits. + +Optional properties: +- uart-use-ms: Indicate the UART has modem signal (DCD, DSR, CTS). + +Note: Each UART port should have an alias correctly numbered +in "aliases" node. + +Example: +	aliases { +		serial0 = &uart1; +	}; + +	uart1: uart@80000480 { +		compatible = "cirrus,clps711x-uart"; +		reg = <0x80000480 0x80>; +		interrupts = <12 13>; +		clocks = <&clks 11>; +		syscon = <&syscon1>; +		uart-use-ms; +	}; diff --git a/Documentation/devicetree/bindings/serial/efm32-uart.txt b/Documentation/devicetree/bindings/serial/efm32-uart.txt index 8e080b893b4..3ca01336b83 100644 --- a/Documentation/devicetree/bindings/serial/efm32-uart.txt +++ b/Documentation/devicetree/bindings/serial/efm32-uart.txt @@ -1,20 +1,20 @@  * Energymicro efm32 UART  Required properties: -- compatible : Should be "efm32,uart" +- compatible : Should be "energymicro,efm32-uart"  - reg : Address and length of the register set  - interrupts : Should contain uart interrupt  Optional properties: -- location : Decides the location of the USART I/O pins. +- efm32,location : Decides the location of the USART I/O pins.    Allowed range : [0 .. 5]    Default: 0  Example:  uart@0x4000c400 { -	compatible = "efm32,uart"; +	compatible = "energymicro,efm32-uart";  	reg = <0x4000c400 0x400>;  	interrupts = <15>; -	location = <0>; +	efm32,location = <0>;  }; diff --git a/Documentation/devicetree/bindings/serial/fsl-lpuart.txt b/Documentation/devicetree/bindings/serial/fsl-lpuart.txt index 6fd1dd1638d..a1d1205d818 100644 --- a/Documentation/devicetree/bindings/serial/fsl-lpuart.txt +++ b/Documentation/devicetree/bindings/serial/fsl-lpuart.txt @@ -4,11 +4,24 @@ Required properties:  - compatible : Should be "fsl,<soc>-lpuart"  - reg : Address and length of the register set for the device  - interrupts : Should contain uart interrupt +- clocks : phandle + clock specifier pairs, one for each entry in clock-names +- clock-names : should contain: "ipg" - the uart clock + +Optional properties: +- dmas: A list of two dma specifiers, one for each entry in dma-names. +- dma-names: should contain "tx" and "rx". + +Note: Optional properties for DMA support. Write them both or both not.  Example:  uart0: serial@40027000 { -	       compatible = "fsl,vf610-lpuart"; -	       reg = <0x40027000 0x1000>; -	       interrupts = <0 61 0x00>; -       }; +		compatible = "fsl,vf610-lpuart"; +		reg = <0x40027000 0x1000>; +		interrupts = <0 61 0x00>; +		clocks = <&clks VF610_CLK_UART0>; +		clock-names = "ipg"; +		dmas = <&edma0 0 2>, +			<&edma0 0 3>; +		dma-names = "rx","tx"; +	}; diff --git a/Documentation/devicetree/bindings/serial/maxim,max310x.txt b/Documentation/devicetree/bindings/serial/maxim,max310x.txt new file mode 100644 index 00000000000..83a919c241b --- /dev/null +++ b/Documentation/devicetree/bindings/serial/maxim,max310x.txt @@ -0,0 +1,36 @@ +* Maxim MAX310X advanced Universal Asynchronous Receiver-Transmitter (UART) + +Required properties: +- compatible: Should be one of the following: +  - "maxim,max3107" for Maxim MAX3107, +  - "maxim,max3108" for Maxim MAX3108, +  - "maxim,max3109" for Maxim MAX3109, +  - "maxim,max14830" for Maxim MAX14830. +- reg: SPI chip select number. +- interrupt-parent: The phandle for the interrupt controller that +  services interrupts for this IC. +- interrupts: Specifies the interrupt source of the parent interrupt +  controller. The format of the interrupt specifier depends on the +  parent interrupt controller. +- clocks: phandle to the IC source clock. +- clock-names: Should be "xtal" if clock is an external crystal or +  "osc" if an external clock source is used. + +Optional properties: +- gpio-controller: Marks the device node as a GPIO controller. +- #gpio-cells: Should be two. The first cell is the GPIO number and +  the second cell is used to specify the GPIO polarity: +    0 = active high, +    1 = active low. + +Example: +	max14830: max14830@0 { +		compatible = "maxim,max14830"; +		reg = <0>; +		clocks = <&clk20m>; +		clock-names = "osc"; +		interrupt-parent = <&gpio3>; +		interrupts = <7 IRQ_TYPE_EDGE_FALLING>; +		gpio-controller; +		#gpio-cells = <2>; +	}; diff --git a/Documentation/devicetree/bindings/serial/nvidia,tegra20-hsuart.txt b/Documentation/devicetree/bindings/serial/nvidia,tegra20-hsuart.txt index 392a4493eeb..845850caf08 100644 --- a/Documentation/devicetree/bindings/serial/nvidia,tegra20-hsuart.txt +++ b/Documentation/devicetree/bindings/serial/nvidia,tegra20-hsuart.txt @@ -4,8 +4,17 @@ Required properties:  - compatible : should be "nvidia,tegra30-hsuart", "nvidia,tegra20-hsuart".  - reg: Should contain UART controller registers location and length.  - interrupts: Should contain UART controller interrupts. -- nvidia,dma-request-selector : The Tegra DMA controller's phandle and -  request selector for this UART controller. +- clocks: Must contain one entry, for the module clock. +  See ../clocks/clock-bindings.txt for details. +- resets : Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names : Must include the following entries: +  - serial +- dmas : Must contain an entry for each entry in clock-names. +  See ../dma/dma.txt for details. +- dma-names : Must include the following entries: +  - rx +  - tx  Optional properties:  - nvidia,enable-modem-interrupt: Enable modem interrupts. Should be enable @@ -18,7 +27,11 @@ serial@70006000 {  	reg = <0x70006000 0x40>;  	reg-shift = <2>;  	interrupts = <0 36 0x04>; -	nvidia,dma-request-selector = <&apbdma 8>;  	nvidia,enable-modem-interrupt; +	clocks = <&tegra_car 6>; +	resets = <&tegra_car 6>; +	reset-names = "serial"; +	dmas = <&apbdma 8>, <&apbdma 8>; +	dma-names = "rx", "tx";  	status = "disabled";  }; diff --git a/Documentation/devicetree/bindings/serial/nxp,sc16is7xx.txt b/Documentation/devicetree/bindings/serial/nxp,sc16is7xx.txt new file mode 100644 index 00000000000..246c795668d --- /dev/null +++ b/Documentation/devicetree/bindings/serial/nxp,sc16is7xx.txt @@ -0,0 +1,33 @@ +* NXP SC16IS7xx advanced Universal Asynchronous Receiver-Transmitter (UART) + +Required properties: +- compatible: Should be one of the following: +  - "nxp,sc16is740" for NXP SC16IS740, +  - "nxp,sc16is741" for NXP SC16IS741, +  - "nxp,sc16is750" for NXP SC16IS750, +  - "nxp,sc16is752" for NXP SC16IS752, +  - "nxp,sc16is760" for NXP SC16IS760, +  - "nxp,sc16is762" for NXP SC16IS762. +- reg: I2C address of the SC16IS7xx device. +- interrupt-parent: The phandle for the interrupt controller that +  services interrupts for this IC. +- interrupts: Should contain the UART interrupt +- clocks: Reference to the IC source clock. + +Optional properties: +- gpio-controller: Marks the device node as a GPIO controller. +- #gpio-cells: Should be two. The first cell is the GPIO number and +  the second cell is used to specify the GPIO polarity: +    0 = active high, +    1 = active low. + +Example: +        sc16is750: sc16is750@51 { +                compatible = "nxp,sc16is750"; +                reg = <0x51>; +                clocks = <&clk20m>; +                interrupt-parent = <&gpio3>; +                interrupts = <7 IRQ_TYPE_EDGE_FALLING>; +                gpio-controller; +                #gpio-cells = <2>; +        }; diff --git a/Documentation/devicetree/bindings/serial/of-serial.txt b/Documentation/devicetree/bindings/serial/of-serial.txt index 1928a3e83cd..77054772a8f 100644 --- a/Documentation/devicetree/bindings/serial/of-serial.txt +++ b/Documentation/devicetree/bindings/serial/of-serial.txt @@ -37,6 +37,7 @@ Optional properties:  - auto-flow-control: one way to enable automatic flow control support. The    driver is allowed to detect support for the capability even without this    property. +- has-hw-flow-control: the hardware has flow control capability.  Example: diff --git a/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt b/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt new file mode 100644 index 00000000000..b3556609a06 --- /dev/null +++ b/Documentation/devicetree/bindings/serial/renesas,sci-serial.txt @@ -0,0 +1,54 @@ +* Renesas SH-Mobile Serial Communication Interface + +Required properties: + +  - compatible: Must contain one of the following: + +    - "renesas,scifa-sh73a0" for SH73A0 (SH-Mobile AG5) SCIFA compatible UART. +    - "renesas,scifb-sh73a0" for SH73A0 (SH-Mobile AG5) SCIFB compatible UART. +    - "renesas,scifa-r8a73a4" for R8A73A4 (R-Mobile APE6) SCIFA compatible UART. +    - "renesas,scifb-r8a73a4" for R8A73A4 (R-Mobile APE6) SCIFB compatible UART. +    - "renesas,scifa-r8a7740" for R8A7740 (R-Mobile A1) SCIFA compatible UART. +    - "renesas,scifb-r8a7740" for R8A7740 (R-Mobile A1) SCIFB compatible UART. +    - "renesas,scif-r8a7778" for R8A7778 (R-Car M1) SCIF compatible UART. +    - "renesas,scif-r8a7779" for R8A7779 (R-Car H1) SCIF compatible UART. +    - "renesas,scif-r8a7790" for R8A7790 (R-Car H2) SCIF compatible UART. +    - "renesas,scifa-r8a7790" for R8A7790 (R-Car H2) SCIFA compatible UART. +    - "renesas,scifb-r8a7790" for R8A7790 (R-Car H2) SCIFB compatible UART. +    - "renesas,hscif-r8a7790" for R8A7790 (R-Car H2) HSCIF compatible UART. +    - "renesas,scif-r8a7791" for R8A7791 (R-Car M2) SCIF compatible UART. +    - "renesas,scifa-r8a7791" for R8A7791 (R-Car M2) SCIFA compatible UART. +    - "renesas,scifb-r8a7791" for R8A7791 (R-Car M2) SCIFB compatible UART. +    - "renesas,hscif-r8a7791" for R8A7791 (R-Car M2) HSCIF compatible UART. +    - "renesas,scif" for generic SCIF compatible UART. +    - "renesas,scifa" for generic SCIFA compatible UART. +    - "renesas,scifb" for generic SCIFB compatible UART. +    - "renesas,hscif" for generic HSCIF compatible UART. + +    When compatible with the generic version, nodes must list the +    SoC-specific version corresponding to the platform first followed by the +    generic version. + +  - reg: Base address and length of the I/O registers used by the UART. +  - interrupts: Must contain an interrupt-specifier for the SCIx interrupt. + +  - clocks: Must contain a phandle and clock-specifier pair for each entry +    in clock-names. +  - clock-names: Must contain "sci_ick" for the SCIx UART interface clock. + +Note: Each enabled SCIx UART should have an alias correctly numbered in the +"aliases" node. + +Example: +	aliases { +		serial0 = &scifa0; +	}; + +	scifa0: serial@e6c40000 { +		compatible = "renesas,scifa-r8a7790", "renesas,scifa"; +		reg = <0 0xe6c40000 0 64>; +		interrupt-parent = <&gic>; +		interrupts = <0 144 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&mstp2_clks R8A7790_CLK_SCIFA0>; +		clock-names = "sci_ick"; +	}; diff --git a/Documentation/devicetree/bindings/serial/vt8500-uart.txt b/Documentation/devicetree/bindings/serial/vt8500-uart.txt new file mode 100644 index 00000000000..795c393d09c --- /dev/null +++ b/Documentation/devicetree/bindings/serial/vt8500-uart.txt @@ -0,0 +1,26 @@ +* VIA VT8500 and WonderMedia WM8xxx UART Controller + +Required properties: +- compatible: should be "via,vt8500-uart" + +- reg: base physical address of the controller and length of memory mapped +	region. + +- interrupts: hardware interrupt number + +- clocks: shall be the input parent clock phandle for the clock. This should +	be the 24Mhz reference clock. + +Aliases may be defined to ensure the correct ordering of the uarts. + +Example: +	aliases { +		serial0 = &uart0; +	}; + +	uart0: serial@d8200000 { +		compatible = "via,vt8500-uart"; +		reg = <0xd8200000 0x1040>; +		interrupts = <32>; +		clocks = <&clkuart0>; +	}; diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt b/Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt new file mode 100644 index 00000000000..4ce24d425bf --- /dev/null +++ b/Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt @@ -0,0 +1,78 @@ +QCOM GSBI (General Serial Bus Interface) Driver + +The GSBI controller is modeled as a node with zero or more child nodes, each +representing a serial sub-node device that is mux'd as part of the GSBI +configuration settings.  The mode setting will govern the input/output mode of +the 4 GSBI IOs. + +Required properties: +- compatible: must contain "qcom,gsbi-v1.0.0" for APQ8064/IPQ8064 +- reg: Address range for GSBI registers +- clocks: required clock +- clock-names: must contain "iface" entry +- qcom,mode : indicates MUX value for configuration of the serial interface. +  Please reference dt-bindings/soc/qcom,gsbi.h for valid mux values. + +Optional properties: +- qcom,crci : indicates CRCI MUX value for QUP CRCI ports.  Please reference +  dt-bindings/soc/qcom,gsbi.h for valid CRCI mux values. + +Required properties if child node exists: +- #address-cells: Must be 1 +- #size-cells: Must be 1 +- ranges: Must be present + +Properties for children: + +A GSBI controller node can contain 0 or more child nodes representing serial +devices.  These serial devices can be a QCOM UART, I2C controller, spi +controller, or some combination of aforementioned devices. + +See the following for child node definitions: +Documentation/devicetree/bindings/i2c/qcom,i2c-qup.txt +Documentation/devicetree/bindings/spi/qcom,spi-qup.txt +Documentation/devicetree/bindings/serial/qcom,msm-uartdm.txt + +Example for APQ8064: + +#include <dt-bindings/soc/qcom,gsbi.h> + +	gsbi4@16300000 { +		compatible = "qcom,gsbi-v1.0.0"; +		reg = <0x16300000 0x100>; +		clocks = <&gcc GSBI4_H_CLK>; +		clock-names = "iface"; +		#address-cells = <1>; +		#size-cells = <1>; +		ranges; +		qcom,mode = <GSBI_PROT_I2C_UART>; +		qcom,crci = <GSBI_CRCI_QUP>; + +		/* child nodes go under here */ + +		i2c_qup4: i2c@16380000 { +		        compatible = "qcom,i2c-qup-v1.1.1"; +		        reg = <0x16380000 0x1000>; +		        interrupts = <0 153 0>; + +		        clocks = <&gcc GSBI4_QUP_CLK>, <&gcc GSBI4_H_CLK>; +		        clock-names = "core", "iface"; + +		        clock-frequency = <200000>; + +		        #address-cells = <1>; +		        #size-cells = <0>; + +		 }; + +		uart4:	serial@16340000 { +			compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm"; +			reg = <0x16340000 0x1000>, +				<0x16300000 0x1000>; +			interrupts = <0 152 0x0>; +			clocks = <&gcc GSBI4_UART_CLK>, <&gcc GSBI4_H_CLK>; +			clock-names = "core", "iface"; +			status = "ok"; +		}; +	}; + diff --git a/Documentation/devicetree/bindings/sound/adi,axi-i2s.txt b/Documentation/devicetree/bindings/sound/adi,axi-i2s.txt new file mode 100644 index 00000000000..5875ca459ed --- /dev/null +++ b/Documentation/devicetree/bindings/sound/adi,axi-i2s.txt @@ -0,0 +1,31 @@ +ADI AXI-I2S controller + +Required properties: + - compatible : Must be "adi,axi-i2s-1.00.a" + - reg : Must contain I2S core's registers location and length + - clocks : Pairs of phandle and specifier referencing the controller's clocks. +   The controller expects two clocks, the clock used for the AXI interface and +   the clock used as the sampling rate reference clock sample. + - clock-names : "axi" for the clock to the AXI interface, "ref" for the sample +   rate reference clock. + - dmas: Pairs of phandle and specifier for the DMA channels that are used by +   the core. The core expects two dma channels, one for transmit and one for +   receive. + - dma-names : "tx" for the transmit channel, "rx" for the receive channel. + +For more details on the 'dma', 'dma-names', 'clock' and 'clock-names' properties +please check: +	* resource-names.txt +	* clock/clock-bindings.txt +	* dma/dma.txt + +Example: + +	i2s: i2s@0x77600000 { +		compatible = "adi,axi-i2s-1.00.a"; +		reg = <0x77600000 0x1000>; +		clocks = <&clk 15>, <&audio_clock>; +		clock-names = "axi", "ref"; +		dmas = <&ps7_dma 0>, <&ps7_dma 1>; +		dma-names = "tx", "rx"; +	}; diff --git a/Documentation/devicetree/bindings/sound/adi,axi-spdif-tx.txt b/Documentation/devicetree/bindings/sound/adi,axi-spdif-tx.txt new file mode 100644 index 00000000000..46f34496531 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/adi,axi-spdif-tx.txt @@ -0,0 +1,30 @@ +ADI AXI-SPDIF controller + +Required properties: + - compatible : Must be "adi,axi-spdif-1.00.a" + - reg : Must contain SPDIF core's registers location and length + - clocks : Pairs of phandle and specifier referencing the controller's clocks. +   The controller expects two clocks, the clock used for the AXI interface and +   the clock used as the sampling rate reference clock sample. + - clock-names: "axi" for the clock to the AXI interface, "ref" for the sample +   rate reference clock. + - dmas: Pairs of phandle and specifier for the DMA channel that is used by +   the core. The core expects one dma channel for transmit. + - dma-names : Must be "tx" + +For more details on the 'dma', 'dma-names', 'clock' and 'clock-names' properties +please check: +	* resource-names.txt +	* clock/clock-bindings.txt +	* dma/dma.txt + +Example: + +	spdif: spdif@0x77400000 { +		compatible = "adi,axi-spdif-tx-1.00.a"; +		reg = <0x77600000 0x1000>; +		clocks = <&clk 15>, <&audio_clock>; +		clock-names = "axi", "ref"; +		dmas = <&ps7_dma 0>; +		dma-names = "tx"; +	}; diff --git a/Documentation/devicetree/bindings/sound/ak4104.txt b/Documentation/devicetree/bindings/sound/ak4104.txt index b902ee39cf8..deca5e18f30 100644 --- a/Documentation/devicetree/bindings/sound/ak4104.txt +++ b/Documentation/devicetree/bindings/sound/ak4104.txt @@ -8,6 +8,8 @@ Required properties:    - reg : The chip select number on the SPI bus +  - vdd-supply : A regulator node, providing 2.7V - 3.6V +  Optional properties:    - reset-gpio : a GPIO spec for the reset pin. If specified, it will be @@ -19,4 +21,5 @@ spdif: ak4104@0 {  	compatible = "asahi-kasei,ak4104";  	reg = <0>;  	spi-max-frequency = <5000000>; +	vdd-supply = <&vdd_3v3_reg>;  }; diff --git a/Documentation/devicetree/bindings/sound/alc5623.txt b/Documentation/devicetree/bindings/sound/alc5623.txt new file mode 100644 index 00000000000..26c86c98d67 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/alc5623.txt @@ -0,0 +1,25 @@ +ALC5621/ALC5622/ALC5623 audio Codec + +Required properties: + + - compatible:	"realtek,alc5623" + - reg:		the I2C address of the device. + +Optional properties: + + - add-ctrl:	  Default register value for Reg-40h, Additional Control +		  Register. If absent or has the value of 0, the +		  register is untouched. + + - jack-det-ctrl: Default register value for Reg-5Ah, Jack Detect +		  Control Register. If absent or has value 0, the +		  register is untouched. + +Example: + +	alc5621: alc5621@1a { +		compatible = "alc5621"; +		reg = <0x1a>; +		add-ctrl = <0x3700>; +		jack-det-ctrl = <0x4810>; +	}; diff --git a/Documentation/devicetree/bindings/sound/armada-370db-audio.txt b/Documentation/devicetree/bindings/sound/armada-370db-audio.txt new file mode 100644 index 00000000000..bf984d23862 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/armada-370db-audio.txt @@ -0,0 +1,27 @@ +Device Tree bindings for the Armada 370 DB audio +================================================ + +These Device Tree bindings are used to describe the audio complex +found on the Armada 370 DB platform. + +Mandatory properties: + + * compatible: must be "marvell,a370db-audio" + + * marvell,audio-controller: a phandle that points to the audio +   controller of the Armada 370 SoC. + + * marvell,audio-codec: a set of three phandles that points to: + +    1/ the analog audio codec connected to the Armada 370 SoC +    2/ the S/PDIF transceiver +    3/ the S/PDIF receiver + +Example: + +	sound { +	      compatible = "marvell,a370db-audio"; +	      marvell,audio-controller = <&audio_controller>; +	      marvell,audio-codec = <&audio_codec &spdif_out &spdif_in>; +	      status = "okay"; +	}; diff --git a/Documentation/devicetree/bindings/sound/bcm2835-i2s.txt b/Documentation/devicetree/bindings/sound/bcm2835-i2s.txt new file mode 100644 index 00000000000..65783de0aed --- /dev/null +++ b/Documentation/devicetree/bindings/sound/bcm2835-i2s.txt @@ -0,0 +1,25 @@ +* Broadcom BCM2835 SoC I2S/PCM module + +Required properties: +- compatible: "brcm,bcm2835-i2s" +- reg: A list of base address and size entries: +	* The first entry should cover the PCM registers +	* The second entry should cover the PCM clock registers +- dmas: List of DMA controller phandle and DMA request line ordered pairs. +- dma-names: Identifier string for each DMA request line in the dmas property. +  These strings correspond 1:1 with the ordered pairs in dmas. + +  One of the DMA channels will be responsible for transmission (should be +  named "tx") and one for reception (should be named "rx"). + +Example: + +bcm2835_i2s: i2s@7e203000 { +	compatible = "brcm,bcm2835-i2s"; +	reg = <0x7e203000 0x20>, +	      <0x7e101098 0x02>; + +	dmas = <&dma 2>, +	       <&dma 3>; +	dma-names = "tx", "rx"; +}; diff --git a/Documentation/devicetree/bindings/sound/cs42l52.txt b/Documentation/devicetree/bindings/sound/cs42l52.txt new file mode 100644 index 00000000000..bc03c9312a1 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/cs42l52.txt @@ -0,0 +1,46 @@ +CS42L52 audio CODEC + +Required properties: + +  - compatible : "cirrus,cs42l52" + +  - reg : the I2C address of the device for I2C + +Optional properties: + +  - cirrus,reset-gpio : GPIO controller's phandle and the number +  of the GPIO used to reset the codec. + +  - cirrus,chgfreq-divisor : Values used to set the Charge Pump Frequency. +  Allowable values of 0x00 through 0x0F. These are raw values written to the +  register, not the actual frequency. The frequency is determined by the following. +  Frequency = (64xFs)/(N+2) +  N = chgfreq_val +  Fs = Sample Rate (variable) + +  - cirrus,mica-differential-cfg : boolean, If present, then the MICA input is configured +  as a differential input. If not present then the MICA input is configured as +  Single-ended input. Single-ended mode allows for MIC1 or MIC2 muxing for input. + +  - cirrus,micb-differential-cfg : boolean, If present, then the MICB input is configured +  as a differential input. If not present then the MICB input is configured as +  Single-ended input. Single-ended mode allows for MIC1 or MIC2 muxing for input. + +  - cirrus,micbias-lvl: Set the output voltage level on the MICBIAS Pin +  0 = 0.5 x VA +  1 = 0.6 x VA +  2 = 0.7 x VA +  3 = 0.8 x VA +  4 = 0.83 x VA +  5 = 0.91 x VA + +Example: + +codec: codec@4a { +	compatible = "cirrus,cs42l52"; +	reg = <0x4a>; +	reset-gpio = <&gpio 10 0>; +	cirrus,chgfreq-divisor = <0x05>; +	cirrus.mica-differential-cfg; +	cirrus,micbias-lvl = <5>; +}; diff --git a/Documentation/devicetree/bindings/sound/cs42l56.txt b/Documentation/devicetree/bindings/sound/cs42l56.txt new file mode 100644 index 00000000000..4feb0eb27ea --- /dev/null +++ b/Documentation/devicetree/bindings/sound/cs42l56.txt @@ -0,0 +1,63 @@ +CS42L52 audio CODEC + +Required properties: + +  - compatible : "cirrus,cs42l56" + +  - reg : the I2C address of the device for I2C + +  - VA-supply, VCP-supply, VLDO-supply : power supplies for the device, +  as covered in Documentation/devicetree/bindings/regulator/regulator.txt. + +Optional properties: + +  - cirrus,gpio-nreset : GPIO controller's phandle and the number +  of the GPIO used to reset the codec. + +  - cirrus,chgfreq-divisor : Values used to set the Charge Pump Frequency. +  Allowable values of 0x00 through 0x0F. These are raw values written to the +  register, not the actual frequency. The frequency is determined by the following. +  Frequency = MCLK / 4 * (N+2) +  N = chgfreq_val +  MCLK = Where MCLK is the frequency of the mclk signal after the MCLKDIV2 circuit. + +  - cirrus,ain1a-ref-cfg, ain1b-ref-cfg : boolean, If present, AIN1A or AIN1B are configured +  as a pseudo-differential input referenced to AIN1REF/AIN3A. + +  - cirrus,ain2a-ref-cfg, ain2b-ref-cfg : boolean, If present, AIN2A or AIN2B are configured +  as a pseudo-differential input referenced to AIN2REF/AIN3B. + +  - cirrus,micbias-lvl: Set the output voltage level on the MICBIAS Pin. +  0 = 0.5 x VA +  1 = 0.6 x VA +  2 = 0.7 x VA +  3 = 0.8 x VA +  4 = 0.83 x VA +  5 = 0.91 x VA + +  - cirrus,adaptive-pwr-cfg : Configures how the power to the Headphone and Lineout +  Amplifiers adapt to the output signal levels. +  0 = Adapt to Volume Mode. Voltage level determined by the sum of the relevant volume settings. +  1 = Fixed - Headphone and Line Amp supply = + or - VCP/2. +  2 = Fixed - Headphone and Line Amp supply = + or - VCP. +  3 = Adapted to Signal; Voltage level is dynamically determined by the output signal. + +  - cirrus,hpf-left-freq, hpf-right-freq : Sets the corner frequency (-3dB point) for the internal High-Pass +  Filter. +  0 = 1.8Hz +  1 = 119Hz +  2 = 236Hz +  3 = 464Hz + + +Example: + +codec: codec@4b { +	compatible = "cirrus,cs42l56"; +	reg = <0x4b>; +	gpio-reset = <&gpio 10 0>; +	cirrus,chgfreq-divisor = <0x05>; +	cirrus.ain1_ref_cfg; +	cirrus,micbias-lvl = <5>; +	VA-supply = <®_audio>; +}; diff --git a/Documentation/devicetree/bindings/sound/cs42l73.txt b/Documentation/devicetree/bindings/sound/cs42l73.txt new file mode 100644 index 00000000000..80ae910dbf6 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/cs42l73.txt @@ -0,0 +1,22 @@ +CS42L73 audio CODEC + +Required properties: + +  - compatible : "cirrus,cs42l73" + +  - reg : the I2C address of the device for I2C + +Optional properties: + +  - reset_gpio : a GPIO spec for the reset pin. +  - chgfreq    : Charge Pump Frequency values 0x00-0x0F + + +Example: + +codec: cs42l73@4a { +	compatible = "cirrus,cs42l73"; +	reg = <0x4a>; +	reset_gpio = <&gpio 10 0>; +	chgfreq = <0x05>; +};
\ No newline at end of file diff --git a/Documentation/devicetree/bindings/sound/cs42xx8.txt b/Documentation/devicetree/bindings/sound/cs42xx8.txt new file mode 100644 index 00000000000..f631fbca628 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/cs42xx8.txt @@ -0,0 +1,28 @@ +CS42448/CS42888 audio CODEC + +Required properties: + +  - compatible : must contain one of "cirrus,cs42448" and "cirrus,cs42888" + +  - reg : the I2C address of the device for I2C + +  - clocks : a list of phandles + clock-specifiers, one for each entry in +    clock-names + +  - clock-names : must contain "mclk" + +  - VA-supply, VD-supply, VLS-supply, VLC-supply: power supplies for the device, +    as covered in Documentation/devicetree/bindings/regulator/regulator.txt + +Example: + +codec: cs42888@48 { +	compatible = "cirrus,cs42888"; +	reg = <0x48>; +	clocks = <&codec_mclk 0>; +	clock-names = "mclk"; +	VA-supply = <®_audio>; +	VD-supply = <®_audio>; +	VLS-supply = <®_audio>; +	VLC-supply = <®_audio>; +}; diff --git a/Documentation/devicetree/bindings/sound/da9055.txt b/Documentation/devicetree/bindings/sound/da9055.txt new file mode 100644 index 00000000000..ed1b7cc6f24 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/da9055.txt @@ -0,0 +1,22 @@ +* Dialog DA9055 Audio CODEC + +DA9055 provides Audio CODEC support (I2C only). + +The Audio CODEC device in DA9055 has it's own I2C address which is configurable, +so the device is instantiated separately from the PMIC (MFD) device. + +For details on accompanying PMIC I2C device, see the following: +Documentation/devicetree/bindings/mfd/da9055.txt + +Required properties: + +  - compatible: "dlg,da9055-codec" +  - reg: Specifies the I2C slave address + + +Example: + +	codec: da9055-codec@1a { +		compatible = "dlg,da9055-codec"; +		reg = <0x1a>; +	}; diff --git a/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt b/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt new file mode 100644 index 00000000000..963e100514c --- /dev/null +++ b/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt @@ -0,0 +1,49 @@ +* Texas Instruments SoC audio setups with TLV320AIC3X Codec + +Required properties: +- compatible : "ti,da830-evm-audio" : forDM365/DA8xx/OMAPL1x/AM33xx +- ti,model : The user-visible name of this sound complex. +- ti,audio-codec : The phandle of the TLV320AIC3x audio codec +- ti,mcasp-controller : The phandle of the McASP controller +- ti,audio-routing : A list of the connections between audio components. +  Each entry is a pair of strings, the first being the connection's sink, +  the second being the connection's source. Valid names for sources and +  sinks are the codec's pins, and the jacks on the board: + +Optional properties: +- ti,codec-clock-rate : The Codec Clock rate (in Hz) applied to the Codec. +- clocks : Reference to the master clock +- clock-names : The clock should be named "mclk" +- Either codec-clock-rate or the codec-clock reference has to be defined. If +  the both are defined the driver attempts to set referenced clock to the +  defined rate and takes the rate from the clock reference. + +  Board connectors: + +  * Headphone Jack +  * Line Out +  * Mic Jack +  * Line In + + +Example: + +sound { +	compatible = "ti,da830-evm-audio"; +	ti,model = "DA830 EVM"; +	ti,audio-codec = <&tlv320aic3x>; +	ti,mcasp-controller = <&mcasp1>; +	ti,codec-clock-rate = <12000000>; +	ti,audio-routing = +		"Headphone Jack",       "HPLOUT", +		"Headphone Jack",       "HPROUT", +		"Line Out",             "LLOUT", +		"Line Out",             "RLOUT", +		"MIC3L",                "Mic Bias 2V", +		"MIC3R",                "Mic Bias 2V", +		"Mic Bias 2V",          "Mic Jack", +		"LINE1L",               "Line In", +		"LINE2L",               "Line In", +		"LINE1R",               "Line In", +		"LINE2R",               "Line In"; +}; diff --git a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt index 374e145c2ef..60ca0799645 100644 --- a/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt +++ b/Documentation/devicetree/bindings/sound/davinci-mcasp-audio.txt @@ -4,17 +4,26 @@ Required properties:  - compatible :  	"ti,dm646x-mcasp-audio"	: for DM646x platforms  	"ti,da830-mcasp-audio"	: for both DA830 & DA850 platforms -	"ti,omap2-mcasp-audio"	: for OMAP2 platforms (TI81xx, AM33xx) - -- reg : Should contain McASP registers offset and length -- interrupts : Interrupt number for McASP -- op-mode : I2S/DIT ops mode. -- tdm-slots : Slots for TDM operation. -- num-serializer : Serializers used by McASP. -- serial-dir : A list of serializer pin mode. The list number should be equal -		to "num-serializer" parameter. Each entry is a number indication -		serializer pin direction. (0 - INACTIVE, 1 - TX, 2 - RX) +	"ti,am33xx-mcasp-audio"	: for AM33xx platforms (AM33xx, AM43xx, TI81xx) +	"ti,dra7-mcasp-audio"	: for DRA7xx platforms +- reg : Should contain reg specifiers for the entries in the reg-names property. +- reg-names : Should contain: +         * "mpu" for the main registers (required). For compatibility with +           existing software, it is recommended this is the first entry. +         * "dat" for separate data port register access (optional). +- op-mode : I2S/DIT ops mode. 0 for I2S mode. 1 for DIT mode used for S/PDIF, +  	    IEC60958-1, and AES-3 formats. +- tdm-slots : Slots for TDM operation. Indicates number of channels transmitted +  	      or received over one serializer. +- serial-dir : A list of serializer configuration. Each entry is a number +               indication for serializer pin direction. +               (0 - INACTIVE, 1 - TX, 2 - RX) +- dmas: two element list of DMA controller phandles and DMA request line +        ordered pairs. +- dma-names: identifier string for each DMA request line in the dmas property. +	     These strings correspond 1:1 with the ordered pairs in dmas. The dma +	     identifiers must be "rx" and "tx".  Optional properties: @@ -23,18 +32,24 @@ Optional properties:  - rx-num-evt : FIFO levels.  - sram-size-playback : size of sram to be allocated during playback  - sram-size-capture  : size of sram to be allocated during capture +- interrupts : Interrupt numbers for McASP, currently not used by the driver +- interrupt-names : Known interrupt names are "tx" and "rx" +- pinctrl-0: Should specify pin control group used for this controller. +- pinctrl-names: Should contain only one value - "default", for more details +  		 please refer to pinctrl-bindings.txt +- fck_parent : Should contain a valid clock name which will be used as parent +	       for the McASP fck  Example:  mcasp0: mcasp0@1d00000 {  	compatible = "ti,da830-mcasp-audio"; -	#address-cells = <1>; -	#size-cells = <0>;  	reg = <0x100000 0x3000>; -	interrupts = <82 83>; +	reg-names "mpu"; +	interrupts = <82>, <83>; +	interrupt-names = "tx", "rx";  	op-mode = <0>;		/* MCASP_IIS_MODE */  	tdm-slots = <2>; -	num-serializer = <16>;  	serial-dir = <  			0 0 0 0	/* 0: INACTIVE, 1: TX, 2: RX */  			0 0 0 0 diff --git a/Documentation/devicetree/bindings/sound/eukrea-tlv320.txt b/Documentation/devicetree/bindings/sound/eukrea-tlv320.txt new file mode 100644 index 00000000000..0d7985c864a --- /dev/null +++ b/Documentation/devicetree/bindings/sound/eukrea-tlv320.txt @@ -0,0 +1,21 @@ +Audio complex for Eukrea boards with tlv320aic23 codec. + +Required properties: +- compatible : "eukrea,asoc-tlv320" +- eukrea,model : The user-visible name of this sound complex. +- ssi-controller : The phandle of the SSI controller. +- fsl,mux-int-port : The internal port of the i.MX audio muxer (AUDMUX). +- fsl,mux-ext-port : The external port of the i.MX audio muxer. + +Note: The AUDMUX port numbering should start at 1, which is consistent with +hardware manual. + +Example: + +	sound { +		compatible = "eukrea,asoc-tlv320"; +		eukrea,model = "imx51-eukrea-tlv320aic23"; +		ssi-controller = <&ssi2>; +		fsl,mux-int-port = <2>; +		fsl,mux-ext-port = <3>; +	}; diff --git a/Documentation/devicetree/bindings/sound/fsl,esai.txt b/Documentation/devicetree/bindings/sound/fsl,esai.txt new file mode 100644 index 00000000000..aeb8c4a0b88 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/fsl,esai.txt @@ -0,0 +1,55 @@ +Freescale Enhanced Serial Audio Interface (ESAI) Controller + +The Enhanced Serial Audio Interface (ESAI) provides a full-duplex serial port +for serial communication with a variety of serial devices, including industry +standard codecs, Sony/Phillips Digital Interface (S/PDIF) transceivers, and +other DSPs. It has up to six transmitters and four receivers. + +Required properties: + +  - compatible : Compatible list, must contain "fsl,imx35-esai". + +  - reg : Offset and length of the register set for the device. + +  - interrupts : Contains the spdif interrupt. + +  - dmas : Generic dma devicetree binding as described in +  Documentation/devicetree/bindings/dma/dma.txt. + +  - dma-names : Two dmas have to be defined, "tx" and "rx". + +  - clocks: Contains an entry for each entry in clock-names. + +  - clock-names : Includes the following entries: +	"core"		The core clock used to access registers +	"extal"		The esai baud clock for esai controller used to derive +			HCK, SCK and FS. +	"fsys"		The system clock derived from ahb clock used to derive +			HCK, SCK and FS. + +  - fsl,fifo-depth: The number of elements in the transmit and receive FIFOs. +    This number is the maximum allowed value for TFCR[TFWM] or RFCR[RFWM]. + +  - fsl,esai-synchronous: This is a boolean property. If present, indicating +    that ESAI would work in the synchronous mode, which means all the settings +    for Receiving would be duplicated from Transmition related registers. + +  - big-endian : If this property is absent, the native endian mode will +    be in use as default, or the big endian mode will be in use for all the +    device registers. + +Example: + +esai: esai@02024000 { +	compatible = "fsl,imx35-esai"; +	reg = <0x02024000 0x4000>; +	interrupts = <0 51 0x04>; +	clocks = <&clks 208>, <&clks 118>, <&clks 208>; +	clock-names = "core", "extal", "fsys"; +	dmas = <&sdma 23 21 0>, <&sdma 24 21 0>; +	dma-names = "rx", "tx"; +	fsl,fifo-depth = <128>; +	fsl,esai-synchronous; +	big-endian; +	status = "disabled"; +}; diff --git a/Documentation/devicetree/bindings/sound/fsl,spdif.txt b/Documentation/devicetree/bindings/sound/fsl,spdif.txt index f2ae335670f..3e9e82c8eab 100644 --- a/Documentation/devicetree/bindings/sound/fsl,spdif.txt +++ b/Documentation/devicetree/bindings/sound/fsl,spdif.txt @@ -29,6 +29,10 @@ Required properties:  			can also be referred to TxClk_Source  			bit of register SPDIF_STC. +   - big-endian : If this property is absent, the native endian mode will +   be in use as default, or the big endian mode will be in use for all the +   device registers. +  Example:  spdif: spdif@02004000 { @@ -50,5 +54,6 @@ spdif: spdif@02004000 {  		"rxtx5", "rxtx6",  		"rxtx7"; +	big-endian;  	status = "okay";  }; diff --git a/Documentation/devicetree/bindings/sound/fsl,ssi.txt b/Documentation/devicetree/bindings/sound/fsl,ssi.txt index 4303b6ab620..3aa4a8f528f 100644 --- a/Documentation/devicetree/bindings/sound/fsl,ssi.txt +++ b/Documentation/devicetree/bindings/sound/fsl,ssi.txt @@ -4,7 +4,12 @@ The SSI is a serial device that communicates with audio codecs.  It can  be programmed in AC97, I2S, left-justified, or right-justified modes.  Required properties: -- compatible:       Compatible list, contains "fsl,ssi". +- compatible:       Compatible list, should contain one of the following +                    compatibles: +                      fsl,mpc8610-ssi +                      fsl,imx51-ssi +                      fsl,imx35-ssi +                      fsl,imx21-ssi  - cell-index:       The SSI, <0> = SSI1, <1> = SSI2, and so on.  - reg:              Offset and length of the register set for the device.  - interrupts:       <a b> where a is the interrupt number and b is a @@ -15,15 +20,6 @@ Required properties:                      have.  - interrupt-parent: The phandle for the interrupt controller that                      services interrupts for this device. -- fsl,mode:         The operating mode for the SSI interface. -                    "i2s-slave" - I2S mode, SSI is clock slave -                    "i2s-master" - I2S mode, SSI is clock master -                    "lj-slave" - left-justified mode, SSI is clock slave -                    "lj-master" - l.j. mode, SSI is clock master -                    "rj-slave" - right-justified mode, SSI is clock slave -                    "rj-master" - r.j., SSI is clock master -                    "ac97-slave" - AC97 mode, SSI is clock slave -                    "ac97-master" - AC97 mode, SSI is clock master  - fsl,playback-dma: Phandle to a node for the DMA channel to use for                      playback of audio.  This is typically dictated by SOC                      design.  See the notes below. @@ -42,6 +38,9 @@ Required properties:                      be connected together, and SRFS and STFS be connected                      together.  This would still allow different sample sizes,                      but not different sample rates. + - clocks:          "ipg" - Required clock for the SSI unit +                    "baud" - Required clock for SSI master mode. Otherwise this +		      clock is not used  Required are also ac97 link bindings if ac97 is used. See  Documentation/devicetree/bindings/sound/soc-ac97link.txt for the necessary @@ -59,6 +58,15 @@ Optional properties:  		    Documentation/devicetree/bindings/dma/dma.txt.  - dma-names:	    Two dmas have to be defined, "tx" and "rx", if fsl,imx-fiq  		    is not defined. +- fsl,mode:         The operating mode for the SSI interface. +                    "i2s-slave" - I2S mode, SSI is clock slave +                    "i2s-master" - I2S mode, SSI is clock master +                    "lj-slave" - left-justified mode, SSI is clock slave +                    "lj-master" - l.j. mode, SSI is clock master +                    "rj-slave" - right-justified mode, SSI is clock slave +                    "rj-master" - r.j., SSI is clock master +                    "ac97-slave" - AC97 mode, SSI is clock slave +                    "ac97-master" - AC97 mode, SSI is clock master  Child 'codec' node required properties:  - compatible:       Compatible list, contains the name of the codec diff --git a/Documentation/devicetree/bindings/sound/fsl-sai.txt b/Documentation/devicetree/bindings/sound/fsl-sai.txt new file mode 100644 index 00000000000..0f4e2382819 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/fsl-sai.txt @@ -0,0 +1,43 @@ +Freescale Synchronous Audio Interface (SAI). + +The SAI is based on I2S module that used communicating with audio codecs, +which provides a synchronous audio interface that supports fullduplex +serial interfaces with frame synchronization such as I2S, AC97, TDM, and +codec/DSP interfaces. + + +Required properties: +- compatible: Compatible list, contains "fsl,vf610-sai" or "fsl,imx6sx-sai". +- reg: Offset and length of the register set for the device. +- clocks: Must contain an entry for each entry in clock-names. +- clock-names : Must include the "bus" for register access and "mclk1" "mclk2" +  "mclk3" for bit clock and frame clock providing. +- dmas : Generic dma devicetree binding as described in +  Documentation/devicetree/bindings/dma/dma.txt. +- dma-names : Two dmas have to be defined, "tx" and "rx". +- pinctrl-names: Must contain a "default" entry. +- pinctrl-NNN: One property must exist for each entry in pinctrl-names. +  See ../pinctrl/pinctrl-bindings.txt for details of the property values. +- big-endian-regs: If this property is absent, the little endian mode will +  be in use as default, or the big endian mode will be in use for all the +  device registers. +- big-endian-data: If this property is absent, the little endian mode will +  be in use as default, or the big endian mode will be in use for all the +  fifo data. + +Example: +sai2: sai@40031000 { +	      compatible = "fsl,vf610-sai"; +	      reg = <0x40031000 0x1000>; +	      pinctrl-names = "default"; +	      pinctrl-0 = <&pinctrl_sai2_1>; +	      clocks = <&clks VF610_CLK_PLATFORM_BUS>, +		     <&clks VF610_CLK_SAI2>, +		     <&clks 0>, <&clks 0>; +	      clock-names = "bus", "mclk1", "mclk2", "mclk3"; +	      dma-names = "tx", "rx"; +	      dmas = <&edma0 0 VF610_EDMA_MUXID0_SAI2_TX>, +		   <&edma0 0 VF610_EDMA_MUXID0_SAI2_RX>; +	      big-endian-regs; +	      big-endian-data; +}; diff --git a/Documentation/devicetree/bindings/sound/hdmi.txt b/Documentation/devicetree/bindings/sound/hdmi.txt new file mode 100644 index 00000000000..31af7bca309 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/hdmi.txt @@ -0,0 +1,17 @@ +Device-Tree bindings for dummy HDMI codec + +Required properties: +	- compatible: should be "linux,hdmi-audio". + +CODEC output pins: +  * TX + +CODEC input pins: +  * RX + +Example node: + +	hdmi_audio: hdmi_audio@0 { +		compatible = "linux,hdmi-audio"; +		status = "okay"; +	}; diff --git a/Documentation/devicetree/bindings/sound/max98090.txt b/Documentation/devicetree/bindings/sound/max98090.txt new file mode 100644 index 00000000000..a5e63fa47dc --- /dev/null +++ b/Documentation/devicetree/bindings/sound/max98090.txt @@ -0,0 +1,49 @@ +MAX98090 audio CODEC + +This device supports I2C only. + +Required properties: + +- compatible : "maxim,max98090". + +- reg : The I2C address of the device. + +- interrupts : The CODEC's interrupt output. + +Optional properties: + +- clocks: The phandle of the master clock to the CODEC + +- clock-names: Should be "mclk" + +Pins on the device (for linking into audio routes): + +  * MIC1 +  * MIC2 +  * DMICL +  * DMICR +  * IN1 +  * IN2 +  * IN3 +  * IN4 +  * IN5 +  * IN6 +  * IN12 +  * IN34 +  * IN56 +  * HPL +  * HPR +  * SPKL +  * SPKR +  * RCVL +  * RCVR +  * MICBIAS + +Example: + +audio-codec@10 { +	compatible = "maxim,max98090"; +	reg = <0x10>; +	interrupt-parent = <&gpio>; +	interrupts = <TEGRA_GPIO(H, 4) GPIO_ACTIVE_HIGH>; +}; diff --git a/Documentation/devicetree/bindings/sound/max98095.txt b/Documentation/devicetree/bindings/sound/max98095.txt new file mode 100644 index 00000000000..318a4c82f17 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/max98095.txt @@ -0,0 +1,22 @@ +MAX98095 audio CODEC + +This device supports I2C only. + +Required properties: + +- compatible : "maxim,max98095". + +- reg : The I2C address of the device. + +Optional properties: + +- clocks: The phandle of the master clock to the CODEC + +- clock-names: Should be "mclk" + +Example: + +max98095: codec@11 { +	compatible = "maxim,max98095"; +	reg = <0x11>; +}; diff --git a/Documentation/devicetree/bindings/sound/mvebu-audio.txt b/Documentation/devicetree/bindings/sound/mvebu-audio.txt index f0062c5871b..cb8c07c81ce 100644 --- a/Documentation/devicetree/bindings/sound/mvebu-audio.txt +++ b/Documentation/devicetree/bindings/sound/mvebu-audio.txt @@ -5,6 +5,7 @@ Required properties:  - compatible:    "marvell,kirkwood-audio" for Kirkwood platforms    "marvell,dove-audio" for Dove platforms +  "marvell,armada370-audio" for Armada 370 platforms  - reg: physical base address of the controller and length of memory mapped    region. diff --git a/Documentation/devicetree/bindings/sound/nokia,rx51.txt b/Documentation/devicetree/bindings/sound/nokia,rx51.txt new file mode 100644 index 00000000000..72f93d99627 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/nokia,rx51.txt @@ -0,0 +1,27 @@ +* Nokia N900 audio setup + +Required properties: +- compatible: Should contain "nokia,n900-audio" +- nokia,cpu-dai: phandle for the McBSP node +- nokia,audio-codec: phandles for the main TLV320AIC3X node and the +                     auxiliary TLV320AIC3X node (in this order) +- nokia,headphone-amplifier: phandle for the TPA6130A2 node +- tvout-selection-gpios: GPIO for tvout selection +- jack-detection-gpios: GPIO for jack detection +- eci-switch-gpios: GPIO for ECI (Enhancement Control Interface) switch +- speaker-amplifier-gpios: GPIO for speaker amplifier + +Example: + +sound { +	compatible = "nokia,n900-audio"; + +	nokia,cpu-dai = <&mcbsp2>; +	nokia,audio-codec = <&tlv320aic3x>, <&tlv320aic3x_aux>; +	nokia,headphone-amplifier = <&tpa6130a2>; + +	tvout-selection-gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>; /* 40 */ +	jack-detection-gpios = <&gpio6 17 GPIO_ACTIVE_HIGH>; /* 177 */ +	eci-switch-gpios = <&gpio6 22 GPIO_ACTIVE_HIGH>; /* 182 */ +	speaker-amplifier-gpios = <&twl_gpio 7 GPIO_ACTIVE_HIGH>; +}; diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt index 8b8903ef080..57f40f93453 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt @@ -3,10 +3,11 @@ NVIDIA Tegra audio complex  Required properties:  - compatible : "nvidia,tegra-audio-alc5632"  - 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: -  "pll_a" (The Tegra clock of that name), -  "pll_a_out0" (The Tegra clock of that name), -  "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) +  - pll_a +  - pll_a_out0 +  - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)  - nvidia,model : The user-visible name of this sound complex.  - nvidia,audio-routing : A list of the connections between audio components.    Each entry is a pair of strings, the first being the connection's sink, diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.txt new file mode 100644 index 00000000000..9c7c55c7137 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-max98090.txt @@ -0,0 +1,51 @@ +NVIDIA Tegra audio complex, with MAX98090 CODEC + +Required properties: +- compatible : "nvidia,tegra-audio-max98090" +- 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: +  - pll_a +  - pll_a_out0 +  - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) +- nvidia,model : The user-visible name of this sound complex. +- nvidia,audio-routing : A list of the connections between audio components. +  Each entry is a pair of strings, the first being the connection's sink, +  the second being the connection's source. Valid names for sources and +  sinks are the MAX98090's pins (as documented in its binding), and the jacks +  on the board: + +  * Headphones +  * Speakers +  * Mic Jack + +- nvidia,i2s-controller : The phandle of the Tegra I2S controller that's +  connected to the CODEC. +- nvidia,audio-codec : The phandle of the MAX98090 audio codec. + +Optional properties: +- nvidia,hp-det-gpios : The GPIO that detect headphones are plugged in + +Example: + +sound { +	compatible = "nvidia,tegra-audio-max98090-venice2", +		     "nvidia,tegra-audio-max98090"; +	nvidia,model = "NVIDIA Tegra Venice2"; + +	nvidia,audio-routing = +		"Headphones", "HPR", +		"Headphones", "HPL", +		"Speakers", "SPKR", +		"Speakers", "SPKL", +		"Mic Jack", "MICBIAS", +		"IN34", "Mic Jack"; + +	nvidia,i2s-controller = <&tegra_i2s1>; +	nvidia,audio-codec = <&acodec>; + +	clocks = <&tegra_car TEGRA124_CLK_PLL_A>, +		 <&tegra_car TEGRA124_CLK_PLL_A_OUT0>, +		 <&tegra_car TEGRA124_CLK_EXTERN1>; +	clock-names = "pll_a", "pll_a_out0", "mclk"; +}; diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt index dc6224994d6..7788808dcd0 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-rt5640.txt @@ -3,10 +3,11 @@ NVIDIA Tegra audio complex, with RT5640 CODEC  Required properties:  - compatible : "nvidia,tegra-audio-rt5640"  - 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: -  "pll_a" (The Tegra clock of that name), -  "pll_a_out0" (The Tegra clock of that name), -  "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) +  - pll_a +  - pll_a_out0 +  - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)  - nvidia,model : The user-visible name of this sound complex.  - nvidia,audio-routing : A list of the connections between audio components.    Each entry is a pair of strings, the first being the connection's sink, diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt index aab6ce0ad2f..96f6a57dd6b 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt @@ -3,10 +3,11 @@ NVIDIA Tegra audio complex  Required properties:  - compatible : "nvidia,tegra-audio-wm8753"  - 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: -  "pll_a" (The Tegra clock of that name), -  "pll_a_out0" (The Tegra clock of that name), -  "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) +  - pll_a +  - pll_a_out0 +  - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)  - nvidia,model : The user-visible name of this sound complex.  - nvidia,audio-routing : A list of the connections between audio components.    Each entry is a pair of strings, the first being the connection's sink, diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt index 4b44dfb6ca0..b795d282818 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt @@ -3,10 +3,11 @@ NVIDIA Tegra audio complex  Required properties:  - compatible : "nvidia,tegra-audio-wm8903"  - 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: -  "pll_a" (The Tegra clock of that name), -  "pll_a_out0" (The Tegra clock of that name), -  "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) +  - pll_a +  - pll_a_out0 +  - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)  - nvidia,model : The user-visible name of this sound complex.  - nvidia,audio-routing : A list of the connections between audio components.    Each entry is a pair of strings, the first being the connection's sink, diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt index ad589b16363..436f6cd9d07 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt @@ -3,10 +3,11 @@ NVIDIA Tegra audio complex  Required properties:  - compatible : "nvidia,tegra-audio-wm9712"  - 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: -  "pll_a" (The Tegra clock of that name), -  "pll_a_out0" (The Tegra clock of that name), -  "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk) +  - pll_a +  - pll_a_out0 +  - mclk (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)  - nvidia,model : The user-visible name of this sound complex.  - nvidia,audio-routing : A list of the connections between audio components.    Each entry is a pair of strings, the first being the connection's sink, diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra20-ac97.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra20-ac97.txt index c1454979c1e..eaf00102d92 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra20-ac97.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra20-ac97.txt @@ -4,19 +4,33 @@ Required properties:  - compatible : "nvidia,tegra20-ac97"  - reg : Should contain AC97 controller registers location and length  - interrupts : Should contain AC97 interrupt -- nvidia,dma-request-selector : The Tegra DMA controller's phandle and -  request selector for the AC97 controller +- resets : Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names : Must include the following entries: +  - ac97 +- dmas : Must contain an entry for each entry in clock-names. +  See ../dma/dma.txt for details. +- dma-names : Must include the following entries: +  - rx +  - tx +- clocks : Must contain one entry, for the module clock. +  See ../clocks/clock-bindings.txt for details.  - nvidia,codec-reset-gpio : The Tegra GPIO controller's phandle and the number    of the GPIO used to reset the external AC97 codec  - nvidia,codec-sync-gpio : The Tegra GPIO controller's phandle and the number    of the GPIO corresponding with the AC97 DAP _FS line +  Example:  ac97@70002000 {  	compatible = "nvidia,tegra20-ac97";  	reg = <0x70002000 0x200>;  	interrupts = <0 81 0x04>; -	nvidia,dma-request-selector = <&apbdma 12>;  	nvidia,codec-reset-gpio = <&gpio 170 0>;  	nvidia,codec-sync-gpio = <&gpio 120 0>; +	clocks = <&tegra_car 3>; +	resets = <&tegra_car 3>; +	reset-names = "ac97"; +	dmas = <&apbdma 12>, <&apbdma 12>; +	dma-names = "rx", "tx";  }; diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.txt index 0df2b5c816e..dc30c6bfbe9 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra20-i2s.txt @@ -4,8 +4,17 @@ Required properties:  - compatible : "nvidia,tegra20-i2s"  - reg : Should contain I2S registers location and length  - interrupts : Should contain I2S interrupt -- nvidia,dma-request-selector : The Tegra DMA controller's phandle and -  request selector for this I2S controller +- resets : Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names : Must include the following entries: +  - i2s +- dmas : Must contain an entry for each entry in clock-names. +  See ../dma/dma.txt for details. +- dma-names : Must include the following entries: +  - rx +  - tx +- clocks : Must contain one entry, for the module clock. +  See ../clocks/clock-bindings.txt for details.  Example: @@ -13,5 +22,9 @@ i2s@70002800 {  	compatible = "nvidia,tegra20-i2s";  	reg = <0x70002800 0x200>;  	interrupts = < 45 >; -	nvidia,dma-request-selector = < &apbdma 2 >; +	clocks = <&tegra_car 11>; +	resets = <&tegra_car 11>; +	reset-names = "i2s"; +	dmas = <&apbdma 21>, <&apbdma 21>; +	dma-names = "rx", "tx";  }; diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt index 0e5c12c6652..946e2ac4609 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-ahub.txt @@ -7,18 +7,48 @@ Required properties:    - Tegra30 requires 2 entries, for the APBIF and AHUB/AUDIO register blocks.    - Tegra114 requires an additional entry, for the APBIF2 register block.  - interrupts : Should contain AHUB interrupt -- nvidia,dma-request-selector : A list of the DMA channel specifiers. Each -  entry contains the Tegra DMA controller's phandle and request selector. -  If a single entry is present, the request selectors for the channels are -  assumed to be contiguous, and increment from this value. -  If multiple values are given, one value must be given per channel. -- clocks : Must contain an entry for each required entry in clock-names. +- 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: -  - Tegra30: Requires d_audio, apbif, i2s0, i2s1, i2s2, i2s3, i2s4, dam0, -    dam1, dam2, spdif_in. -  - Tegra114: Additionally requires amx, adx. +  - d_audio +  - apbif +- resets : Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names : Must include the following entries: +  Tegra30 and later: +  - d_audio +  - apbif +  - i2s0 +  - i2s1 +  - i2s2 +  - i2s3 +  - i2s4 +  - dam0 +  - dam1 +  - dam2 +  - spdif +  Tegra114 and later additionally require: +  - amx +  - adx +  Tegra124 and later additionally require: +  - amx1 +  - adx1 +  - afc0 +  - afc1 +  - afc2 +  - afc3 +  - afc4 +  - afc5  - ranges : The bus address mapping for the configlink register bus.    Can be empty since the mapping is 1:1. +- dmas : Must contain an entry for each entry in clock-names. +  See ../dma/dma.txt for details. +- dma-names : Must include the following entries: +  - rx0 .. rx<n> +  - tx0 .. tx<n> +  ... where n is: +  Tegra30: 3 +  Tegra114, Tegra124: 9  - #address-cells : For the configlink bus. Should be <1>;  - #size-cells : For the configlink bus. Should be <1>. @@ -35,13 +65,20 @@ ahub@70080000 {  	reg = <0x70080000 0x200 0x70080200 0x100>;  	interrupts = < 0 103 0x04 >;  	nvidia,dma-request-selector = <&apbdma 1>; -	clocks = <&tegra_car 106>, <&tegra_car 107>, <&tegra_car 30>, +	clocks = <&tegra_car 106>, <&tegra_car 107>; +	clock-names = "d_audio", "apbif"; +	resets = <&tegra_car 106>, <&tegra_car 107>, <&tegra_car 30>,  		<&tegra_car 11>, <&tegra_car 18>, <&tegra_car 101>,  		<&tegra_car 102>, <&tegra_car 108>, <&tegra_car 109>, -		<&tegra_car 110>, <&tegra_car 162>; -	clock-names = "d_audio", "apbif", "i2s0", "i2s1", "i2s2", +		<&tegra_car 110>, <&tegra_car 10>; +	reset-names = "d_audio", "apbif", "i2s0", "i2s1", "i2s2",  		"i2s3", "i2s4", "dam0", "dam1", "dam2", -		"spdif_in"; +		"spdif"; +	dmas = <&apbdma 1>, <&apbdma 1>; +	       <&apbdma 2>, <&apbdma 2>; +	       <&apbdma 3>, <&apbdma 3>; +	       <&apbdma 4>, <&apbdma 4>; +	dma-names = "rx0", "tx0", "rx1", "tx1", "rx2", "tx2", "rx3", "tx3";  	ranges;  	#address-cells = <1>;  	#size-cells = <1>; diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt new file mode 100644 index 00000000000..b4730c2822b --- /dev/null +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.txt @@ -0,0 +1,28 @@ +NVIDIA Tegra30 HDA controller + +Required properties: +- compatible : "nvidia,tegra30-hda" +- reg : Should contain the HDA registers location and length. +- interrupts : The interrupt from the HDA controller. +- clocks : Must contain an entry for each required entry in clock-names. +  See ../clocks/clock-bindings.txt for details. +- clock-names : Must include the following entries: hda, hdacodec_2x, hda2hdmi +- resets : Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names : Must include the following entries: hda, hdacodec_2x, hda2hdmi + +Example: + +hda@0,70030000 { +	compatible = "nvidia,tegra124-hda", "nvidia,tegra30-hda"; +	reg = <0x0 0x70030000 0x0 0x10000>; +	interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>; +	clocks = <&tegra_car TEGRA124_CLK_HDA>, +		 <&tegra_car TEGRA124_CLK_HDA2HDMI>, +		 <&tegra_car TEGRA124_CLK_HDA2CODEC_2X>; +	clock-names = "hda", "hda2hdmi", "hda2codec_2x"; +	resets = <&tegra_car 125>, /* hda */ +		 <&tegra_car 128>; /* hda2hdmi */ +		 <&tegra_car 111>, /* hda2codec_2x */ +	reset-names = "hda", "hda2hdmi", "hda2codec_2x"; +}; diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt index dfa6c037124..0c113ffe381 100644 --- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt +++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-i2s.txt @@ -3,13 +3,22 @@ NVIDIA Tegra30 I2S controller  Required properties:  - compatible : "nvidia,tegra30-i2s"  - reg : Should contain I2S registers location and length +- clocks : Must contain one entry, for the module clock. +  See ../clocks/clock-bindings.txt for details. +- resets : Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names : Must include the following entries: +  - i2s  - nvidia,ahub-cif-ids : The list of AHUB CIF IDs for this port, rx (playback)    first, tx (capture) second. See nvidia,tegra30-ahub.txt for values.  Example: -i2s@70002800 { +i2s@70080300 {  	compatible = "nvidia,tegra30-i2s";  	reg = <0x70080300 0x100>;  	nvidia,ahub-cif-ids = <4 4>; +	clocks = <&tegra_car 11>; +	resets = <&tegra_car 11>; +	reset-names = "i2s";  }; diff --git a/Documentation/devicetree/bindings/sound/pcm512x.txt b/Documentation/devicetree/bindings/sound/pcm512x.txt new file mode 100644 index 00000000000..faff75e6457 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/pcm512x.txt @@ -0,0 +1,30 @@ +PCM512x audio CODECs + +These devices support both I2C and SPI (configured with pin strapping +on the board). + +Required properties: + +  - compatible : One of "ti,pcm5121" or "ti,pcm5122" + +  - reg : the I2C address of the device for I2C, the chip select +          number for SPI. + +  - AVDD-supply, DVDD-supply, and CPVDD-supply : power supplies for the +    device, as covered in bindings/regulator/regulator.txt + +Optional properties: + +  - clocks : A clock specifier for the clock connected as SCLK.  If this +    is absent the device will be configured to clock from BCLK. + +Example: + +	pcm5122: pcm5122@4c { +		compatible = "ti,pcm5122"; +		reg = <0x4c>; + +		AVDD-supply = <®_3v3_analog>; +		DVDD-supply = <®_1v8>; +		CPVDD-supply = <®_3v3>; +	}; diff --git a/Documentation/devicetree/bindings/sound/renesas,rsnd.txt b/Documentation/devicetree/bindings/sound/renesas,rsnd.txt new file mode 100644 index 00000000000..8346cab046c --- /dev/null +++ b/Documentation/devicetree/bindings/sound/renesas,rsnd.txt @@ -0,0 +1,106 @@ +Renesas R-Car sound + +Required properties: +- compatible			: "renesas,rcar_sound-gen1" if generation1 +				  "renesas,rcar_sound-gen2" if generation2 +- reg				: Should contain the register physical address. +				  required register is +				   SRU/ADG/SSI      if generation1 +				   SRU/ADG/SSIU/SSI if generation2 +- rcar_sound,ssi		: Should contain SSI feature. +				  The number of SSI subnode should be same as HW. +				  see below for detail. +- rcar_sound,src		: Should contain SRC feature. +				  The number of SRC subnode should be same as HW. +				  see below for detail. +- rcar_sound,dai		: DAI contents. +				  The number of DAI subnode should be same as HW. +				  see below for detail. + +SSI subnode properties: +- interrupts			: Should contain SSI interrupt for PIO transfer +- shared-pin			: if shared clock pin +- pio-transfer			: use PIO transfer mode + +SRC subnode properties: +no properties at this point + +DAI subnode properties: +- playback			: list of playback modules +- capture			: list of capture  modules + +Example: + +rcar_sound: rcar_sound@0xffd90000 { +	#sound-dai-cells = <1>; +	compatible = "renesas,rcar_sound-gen2"; +	reg =	<0 0xec500000 0 0x1000>, /* SCU */ +		<0 0xec5a0000 0 0x100>,  /* ADG */ +		<0 0xec540000 0 0x1000>, /* SSIU */ +		<0 0xec541000 0 0x1280>; /* SSI */ + +	rcar_sound,src { +		src0: src@0 { }; +		src1: src@1 { }; +		src2: src@2 { }; +		src3: src@3 { }; +		src4: src@4 { }; +		src5: src@5 { }; +		src6: src@6 { }; +		src7: src@7 { }; +		src8: src@8 { }; +		src9: src@9 { }; +	}; + +	rcar_sound,ssi { +		ssi0: ssi@0 { +			interrupts = <0 370 IRQ_TYPE_LEVEL_HIGH>; +		}; +		ssi1: ssi@1 { +			interrupts = <0 371 IRQ_TYPE_LEVEL_HIGH>; +		}; +		ssi2: ssi@2 { +			interrupts = <0 372 IRQ_TYPE_LEVEL_HIGH>; +		}; +		ssi3: ssi@3 { +			interrupts = <0 373 IRQ_TYPE_LEVEL_HIGH>; +		}; +		ssi4: ssi@4 { +			interrupts = <0 374 IRQ_TYPE_LEVEL_HIGH>; +		}; +		ssi5: ssi@5 { +			interrupts = <0 375 IRQ_TYPE_LEVEL_HIGH>; +		}; +		ssi6: ssi@6 { +			interrupts = <0 376 IRQ_TYPE_LEVEL_HIGH>; +		}; +		ssi7: ssi@7 { +			interrupts = <0 377 IRQ_TYPE_LEVEL_HIGH>; +		}; +		ssi8: ssi@8 { +			interrupts = <0 378 IRQ_TYPE_LEVEL_HIGH>; +		}; +		ssi9: ssi@9 { +			interrupts = <0 379 IRQ_TYPE_LEVEL_HIGH>; +		}; +	}; + +	rcar_sound,dai { +		dai0 { +			playback = <&ssi5 &src5>; +			capture  = <&ssi6>; +		}; +		dai1 { +			playback = <&ssi3>; +		}; +		dai2 { +			capture  = <&ssi4>; +		}; +		dai3 { +			playback = <&ssi7>; +		}; +		dai4 { +			capture  = <&ssi8>; +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/sound/rt5640.txt b/Documentation/devicetree/bindings/sound/rt5640.txt index 068a1141b06..bac4d9ac1ed 100644 --- a/Documentation/devicetree/bindings/sound/rt5640.txt +++ b/Documentation/devicetree/bindings/sound/rt5640.txt @@ -1,10 +1,10 @@ -RT5640 audio CODEC +RT5640/RT5639 audio CODEC  This device supports I2C only.  Required properties: -- compatible : "realtek,rt5640". +- compatible : One of "realtek,rt5640" or "realtek,rt5639".  - reg : The I2C address of the device. @@ -18,7 +18,7 @@ Optional properties:  - realtek,ldo1-en-gpios : The GPIO that controls the CODEC's LDO1_EN pin. -Pins on the device (for linking into audio routes): +Pins on the device (for linking into audio routes) for RT5639/RT5640:    * DMIC1    * DMIC2 @@ -31,13 +31,16 @@ Pins on the device (for linking into audio routes):    * HPOR    * LOUTL    * LOUTR -  * MONOP -  * MONON    * SPOLP    * SPOLN    * SPORP    * SPORN +Additional pins on the device for RT5640: + +  * MONOP +  * MONON +  Example:  rt5640 { diff --git a/Documentation/devicetree/bindings/sound/simple-card.txt b/Documentation/devicetree/bindings/sound/simple-card.txt new file mode 100644 index 00000000000..c2e9841dfce --- /dev/null +++ b/Documentation/devicetree/bindings/sound/simple-card.txt @@ -0,0 +1,151 @@ +Simple-Card: + +Simple-Card specifies audio DAI connections of SoC <-> codec. + +Required properties: + +- compatible				: "simple-audio-card" + +Optional properties: + +- simple-audio-card,name		: User specified audio sound card name, one string +					  property. +- simple-audio-card,widgets		: Please refer to widgets.txt. +- simple-audio-card,routing		: A list of the connections between audio components. +					  Each entry is a pair of strings, the first being the +					  connection's sink, the second being the connection's +					  source. +- simple-audio-card,mclk-fs             : Multiplication factor between stream rate and codec +  					  mclk. + +Optional subnodes: + +- simple-audio-card,dai-link		: Container for dai-link level +					  properties and the CPU and CODEC +					  sub-nodes. This container may be +					  omitted when the card has only one +					  DAI link. See the examples and the +					  section bellow. + +Dai-link subnode properties and subnodes: + +If dai-link subnode is omitted and the subnode properties are directly +under "sound"-node the subnode property and subnode names have to be +prefixed with "simple-audio-card,"-prefix. + +Required dai-link subnodes: + +- cpu					: CPU   sub-node +- codec					: CODEC sub-node + +Optional dai-link subnode properties: + +- format				: CPU/CODEC common audio format. +					  "i2s", "right_j", "left_j" , "dsp_a" +					  "dsp_b", "ac97", "pdm", "msb", "lsb" +- frame-master				: Indicates dai-link frame master. +					  phandle to a cpu or codec subnode. +- bitclock-master			: Indicates dai-link bit clock master. +					  phandle to a cpu or codec subnode. +- bitclock-inversion			: bool property. Add this if the +					  dai-link uses bit clock inversion. +- frame-inversion			: bool property. Add this if the +					  dai-link uses frame clock inversion. + +For backward compatibility the frame-master and bitclock-master +properties can be used as booleans in codec subnode to indicate if the +codec is the dai-link frame or bit clock master. In this case there +should be no dai-link node, the same properties should not be present +at sound-node level, and the bitclock-inversion and frame-inversion +properties should also be placed in the codec node if needed. + +Required CPU/CODEC subnodes properties: + +- sound-dai				: phandle and port of CPU/CODEC + +Optional CPU/CODEC subnodes properties: + +- dai-tdm-slot-num			: Please refer to tdm-slot.txt. +- dai-tdm-slot-width			: Please refer to tdm-slot.txt. +- clocks / system-clock-frequency	: specify subnode's clock if needed. +					  it can be specified via "clocks" if system has +					  clock node (= common clock), or "system-clock-frequency" +					  (if system doens't support common clock) + +Example 1 - single DAI link: + +sound { +	compatible = "simple-audio-card"; +	simple-audio-card,name = "VF610-Tower-Sound-Card"; +	simple-audio-card,format = "left_j"; +	simple-audio-card,bitclock-master = <&dailink0_master>; +	simple-audio-card,frame-master = <&dailink0_master>; +	simple-audio-card,widgets = +		"Microphone", "Microphone Jack", +		"Headphone", "Headphone Jack", +		"Speaker", "External Speaker"; +	simple-audio-card,routing = +		"MIC_IN", "Microphone Jack", +		"Headphone Jack", "HP_OUT", +		"External Speaker", "LINE_OUT"; + +	simple-audio-card,cpu { +		sound-dai = <&sh_fsi2 0>; +	}; + +	dailink0_master: simple-audio-card,codec { +		sound-dai = <&ak4648>; +		clocks = <&osc>; +	}; +}; + +&i2c0 { +	ak4648: ak4648@12 { +		#sound-dai-cells = <0>; +		compatible = "asahi-kasei,ak4648"; +		reg = <0x12>; +	}; +}; + +sh_fsi2: sh_fsi2@ec230000 { +	#sound-dai-cells = <1>; +	compatible = "renesas,sh_fsi2"; +	reg = <0xec230000 0x400>; +	interrupt-parent = <&gic>; +	interrupts = <0 146 0x4>; +}; + +Example 2 - many DAI links: + +sound { +	compatible = "simple-audio-card"; +	simple-audio-card,name = "Cubox Audio"; + +	simple-audio-card,dai-link@0 {		/* I2S - HDMI */ +		format = "i2s"; +		cpu { +			sound-dai = <&audio1 0>; +		}; +		codec { +			sound-dai = <&tda998x 0>; +		}; +	}; + +	simple-audio-card,dai-link@1 {		/* S/PDIF - HDMI */ +		cpu { +			sound-dai = <&audio1 1>; +		}; +		codec { +			sound-dai = <&tda998x 1>; +		}; +	}; + +	simple-audio-card,dai-link@2 {		/* S/PDIF - S/PDIF */ +		cpu { +			sound-dai = <&audio1 1>; +		}; +		codec { +			sound-dai = <&spdif_codec>; +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/sound/sirf-audio-codec.txt b/Documentation/devicetree/bindings/sound/sirf-audio-codec.txt new file mode 100644 index 00000000000..062f5ec36f9 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/sirf-audio-codec.txt @@ -0,0 +1,17 @@ +SiRF internal audio CODEC + +Required properties: + +  - compatible : "sirf,atlas6-audio-codec" or "sirf,prima2-audio-codec" + +  - reg : the register address of the device. + +  - clocks: the clock of SiRF internal audio codec + +Example: + +audiocodec: audiocodec@b0040000 { +	compatible = "sirf,atlas6-audio-codec"; +	reg = <0xb0040000 0x10000>; +	clocks = <&clks 27>; +}; diff --git a/Documentation/devicetree/bindings/sound/sirf-audio-port.txt b/Documentation/devicetree/bindings/sound/sirf-audio-port.txt new file mode 100644 index 00000000000..1f66de3c8f0 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/sirf-audio-port.txt @@ -0,0 +1,20 @@ +* SiRF SoC audio port + +Required properties: +- compatible: "sirf,audio-port" +- reg: Base address and size entries: +- dmas: List of DMA controller phandle and DMA request line ordered pairs. +- dma-names: Identifier string for each DMA request line in the dmas property. +  These strings correspond 1:1 with the ordered pairs in dmas. + +  One of the DMA channels will be responsible for transmission (should be +  named "tx") and one for reception (should be named "rx"). + +Example: + +audioport: audioport@b0040000 { +	compatible = "sirf,audio-port"; +	reg = <0xb0040000 0x10000>; +	dmas = <&dmac1 3>, <&dmac1 8>; +	dma-names = "rx", "tx"; +}; diff --git a/Documentation/devicetree/bindings/sound/sirf-audio.txt b/Documentation/devicetree/bindings/sound/sirf-audio.txt new file mode 100644 index 00000000000..c88882ca370 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/sirf-audio.txt @@ -0,0 +1,41 @@ +* SiRF atlas6 and prima2 internal audio codec and port based audio setups + +Required properties: +- compatible: "sirf,sirf-audio-card" +- sirf,audio-platform: phandle for the platform node +- sirf,audio-codec: phandle for the SiRF internal codec node + +Optional properties: +- hp-pa-gpios: Need to be present if the board need control external +  headphone amplifier. +- spk-pa-gpios: Need to be present if the board need control external +  speaker amplifier. +- hp-switch-gpios: Need to be present if the board capable to detect jack +  insertion, removal. + +Available audio endpoints for the audio-routing table: + +Board connectors: + * Headset Stereophone + * Ext Spk + * Line In + * Mic + +SiRF internal audio codec pins: + * HPOUTL + * HPOUTR + * SPKOUT + * Ext Mic + * Mic Bias + +Example: + +sound { +		compatible = "sirf,sirf-audio-card"; +		sirf,audio-codec = <&audiocodec>; +		sirf,audio-platform = <&audioport>; +		hp-pa-gpios = <&gpio 44 0>; +		spk-pa-gpios = <&gpio 46 0>; +		hp-switch-gpios = <&gpio 45 0>; +}; + diff --git a/Documentation/devicetree/bindings/sound/snow.txt b/Documentation/devicetree/bindings/sound/snow.txt new file mode 100644 index 00000000000..678b191c37b --- /dev/null +++ b/Documentation/devicetree/bindings/sound/snow.txt @@ -0,0 +1,17 @@ +Audio Binding for Snow boards + +Required properties: +- compatible : Can be one of the following, +			"google,snow-audio-max98090" or +			"google,snow-audio-max98095" +- samsung,i2s-controller: The phandle of the Samsung I2S controller +- samsung,audio-codec: The phandle of the audio codec + +Example: + +sound { +		compatible = "google,snow-audio-max98095"; + +		samsung,i2s-controller = <&i2s0>; +		samsung,audio-codec = <&max98095>; +}; diff --git a/Documentation/devicetree/bindings/sound/st,sta350.txt b/Documentation/devicetree/bindings/sound/st,sta350.txt new file mode 100644 index 00000000000..b7e71bf5caf --- /dev/null +++ b/Documentation/devicetree/bindings/sound/st,sta350.txt @@ -0,0 +1,131 @@ +STA350 audio CODEC + +The driver for this device only supports I2C. + +Required properties: + +  - compatible: "st,sta350" +  - reg: the I2C address of the device for I2C +  - reset-gpios: a GPIO spec for the reset pin. If specified, it will be +		 deasserted before communication to the codec starts. + +  - power-down-gpios: a GPIO spec for the power down pin. If specified, +		      it will be deasserted before communication to the codec +		      starts. + +  - vdd-dig-supply: regulator spec, providing 3.3V +  - vdd-pll-supply: regulator spec, providing 3.3V +  - vcc-supply: regulator spec, providing 5V - 26V + +Optional properties: + +  -  st,output-conf: number, Selects the output configuration: +	0: 2-channel (full-bridge) power, 2-channel data-out +	1: 2 (half-bridge). 1 (full-bridge) on-board power +	2: 2 Channel (Full-Bridge) Power, 1 Channel FFX +	3: 1 Channel Mono-Parallel +	If parameter is missing, mode 0 will be enabled. +	This property has to be specified as '/bits/ 8' value. + +  -  st,ch1-output-mapping: Channel 1 output mapping +  -  st,ch2-output-mapping: Channel 2 output mapping +  -  st,ch3-output-mapping: Channel 3 output mapping +	0: Channel 1 +	1: Channel 2 +	2: Channel 3 +	If parameter is missing, channel 1 is choosen. +	This properties have to be specified as '/bits/ 8' values. + +  -  st,thermal-warning-recover: +	If present, thermal warning recovery is enabled. + +  -  st,thermal-warning-adjustment: +	If present, thermal warning adjustment is enabled. + +  -  st,fault-detect-recovery: +	If present, then fault recovery will be enabled. + +  -  st,ffx-power-output-mode: string +	The FFX power output mode selects how the FFX output timing is +	configured. Must be one of these values: +	  -  "drop-compensation" +	  -  "tapered-compensation" +	  -  "full-power-mode" +	  -  "variable-drop-compensation" (default) + +  -  st,drop-compensation-ns: number +	Only required for "st,ffx-power-output-mode" == +	"variable-drop-compensation". +	Specifies the drop compensation in nanoseconds. +	The value must be in the range of 0..300, and only +	multiples of 20 are allowed. Default is 140ns. + +  -  st,overcurrent-warning-adjustment: +	If present, overcurrent warning adjustment is enabled. + +  -  st,max-power-use-mpcc: +	If present, then MPCC bits are used for MPC coefficients, +	otherwise standard MPC coefficients are used. + +  -  st,max-power-corr: +	If present, power bridge correction for THD reduction near maximum +	power output is enabled. + +  -  st,am-reduction-mode: +	If present, FFX mode runs in AM reduction mode, otherwise normal +	FFX mode is used. + +  -  st,odd-pwm-speed-mode: +	If present, PWM speed mode run on odd speed mode (341.3 kHz) on all +	channels. If not present, normal PWM spped mode (384 kHz) will be used. + +  -  st,distortion-compensation: +	If present, distortion compensation variable uses DCC coefficient. +	If not present, preset DC coefficient is used. + +  -  st,invalid-input-detect-mute: +	If present, automatic invalid input detect mute is enabled. + +  -  st,activate-mute-output: +	If present, a mute output will be activated in ase the volume will +	reach a value lower than -76 dBFS. + +  -  st,bridge-immediate-off: +	If present, the bridge will be switched off immediately after the +	power-down-gpio goes low. Otherwise, the bridge will wait for 13 +	million clock cycles to pass before shutting down. + +  -  st,noise-shape-dc-cut: +	If present, the noise-shaping technique on the DC cutoff filter are +	enabled. + +  -  st,powerdown-master-volume: +	If present, the power-down pin and I2C power-down functions will +	act on the master volume. Otherwise, the functions will act on the +	mute commands. + +  -  st,powerdown-delay-divider: +	If present, the bridge power-down time will be divided by the provided +	value. If not specified, a divider of 1 will be used. Allowed values +	are 1, 2, 4, 8, 16, 32, 64 and 128. +	This property has to be specified as '/bits/ 8' value. + +Example: + +codec: sta350@38 { +	compatible = "st,sta350"; +	reg = <0x1c>; +	reset-gpios = <&gpio1 19 0>; +	power-down-gpios = <&gpio1 16 0>; +	st,output-conf = /bits/ 8  <0x3>;	// set output to 2-channel +						// (full-bridge) power, +						// 2-channel data-out +	st,ch1-output-mapping = /bits/ 8 <0>;	// set channel 1 output ch 1 +	st,ch2-output-mapping = /bits/ 8 <0>;	// set channel 2 output ch 1 +	st,ch3-output-mapping = /bits/ 8 <0>;	// set channel 3 output ch 1 +	st,max-power-correction;		// enables power bridge +						// correction for THD reduction +						// near maximum power output +	st,invalid-input-detect-mute;		// mute if no valid digital +						// audio signal is provided. +}; diff --git a/Documentation/devicetree/bindings/sound/tdm-slot.txt b/Documentation/devicetree/bindings/sound/tdm-slot.txt new file mode 100644 index 00000000000..6a2c84247f9 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/tdm-slot.txt @@ -0,0 +1,20 @@ +TDM slot: + +This specifies audio DAI's TDM slot. + +TDM slot properties: +dai-tdm-slot-num : Number of slots in use. +dai-tdm-slot-width :  Width in bits for each slot. + +For instance: +	dai-tdm-slot-num = <2>; +	dai-tdm-slot-width = <8>; + +And for each spcified driver, there could be one .of_xlate_tdm_slot_mask() +to specify a explicit mapping of the channels and the slots. If it's absent +the default snd_soc_of_xlate_tdm_slot_mask() will be used to generating the +tx and rx masks. + +For snd_soc_of_xlate_tdm_slot_mask(), the tx and rx masks will use a 1 bit +for an active slot as default, and the default active bits are at the LSB of +the masks. diff --git a/Documentation/devicetree/bindings/sound/tlv320aic31xx.txt b/Documentation/devicetree/bindings/sound/tlv320aic31xx.txt new file mode 100644 index 00000000000..eff12be5e78 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/tlv320aic31xx.txt @@ -0,0 +1,61 @@ +Texas Instruments - tlv320aic31xx Codec module + +The tlv320aic31xx serial control bus communicates through I2C protocols + +Required properties: + +- compatible - "string" - One of: +    "ti,tlv320aic310x" - Generic TLV320AIC31xx with mono speaker amp +    "ti,tlv320aic311x" - Generic TLV320AIC31xx with stereo speaker amp +    "ti,tlv320aic3100" - TLV320AIC3100 (mono speaker amp, no MiniDSP) +    "ti,tlv320aic3110" - TLV320AIC3110 (stereo speaker amp, no MiniDSP) +    "ti,tlv320aic3120" - TLV320AIC3120 (mono speaker amp, MiniDSP) +    "ti,tlv320aic3111" - TLV320AIC3111 (stereo speaker amp, MiniDSP) + +- reg - <int> -  I2C slave address +- HPVDD-supply, SPRVDD-supply, SPLVDD-supply, AVDD-supply, IOVDD-supply, +  DVDD-supply : power supplies for the device as covered in +  Documentation/devicetree/bindings/regulator/regulator.txt + + +Optional properties: + +- gpio-reset - gpio pin number used for codec reset +- ai31xx-micbias-vg - MicBias Voltage setting +        1 or MICBIAS_2_0V - MICBIAS output is powered to 2.0V +        2 or MICBIAS_2_5V - MICBIAS output is powered to 2.5V +        3 or MICBIAS_AVDD - MICBIAS output is connected to AVDD +	If this node is not mentioned or if the value is unknown, then +	micbias	is set to 2.0V. + +CODEC output pins: +  * HPL +  * HPR +  * SPL, devices with stereo speaker amp +  * SPR, devices with stereo speaker amp +  * SPK, devices with mono speaker amp +  * MICBIAS + +CODEC input pins: +  * MIC1LP +  * MIC1RP +  * MIC1LM + +The pins can be used in referring sound node's audio-routing property. + +Example: +#include <dt-bindings/sound/tlv320aic31xx-micbias.h> + +tlv320aic31xx: tlv320aic31xx@18 { +	compatible = "ti,tlv320aic311x"; +	reg = <0x18>; + +	ai31xx-micbias-vg = <MICBIAS_OFF>; + +	HPVDD-supply = <®ulator>; +	SPRVDD-supply = <®ulator>; +	SPLVDD-supply = <®ulator>; +	AVDD-supply = <®ulator>; +	IOVDD-supply = <®ulator>; +	DVDD-supply = <®ulator>; +}; diff --git a/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt b/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt new file mode 100644 index 00000000000..5e2741af27b --- /dev/null +++ b/Documentation/devicetree/bindings/sound/tlv320aic32x4.txt @@ -0,0 +1,30 @@ +Texas Instruments - tlv320aic32x4 Codec module + +The tlv320aic32x4 serial control bus communicates through I2C protocols + +Required properties: + - compatible: Should be "ti,tlv320aic32x4" + - reg: I2C slave address + - supply-*: Required supply regulators are: +    "iov" - digital IO power supply +    "ldoin" - LDO power supply +    "dv" - Digital core power supply +    "av" - Analog core power supply +    If you supply ldoin, dv and av are optional. Otherwise they are required +   See regulator/regulator.txt for more information about the detailed binding +   format. + +Optional properties: + - reset-gpios: Reset-GPIO phandle with args as described in gpio/gpio.txt + - clocks/clock-names: Clock named 'mclk' for the master clock of the codec. +   See clock/clock-bindings.txt for information about the detailed format. + + +Example: + +codec: tlv320aic32x4@18 { +	compatible = "ti,tlv320aic32x4"; +	reg = <0x18>; +	clocks = <&clks 201>; +	clock-names = "mclk"; +}; diff --git a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt index 705a6b156c6..5e6040c2c2e 100644 --- a/Documentation/devicetree/bindings/sound/tlv320aic3x.txt +++ b/Documentation/devicetree/bindings/sound/tlv320aic3x.txt @@ -24,10 +24,36 @@ Optional properties:  	3 - MICBIAS output is connected to AVDD,  	If this node is not mentioned or if the value is incorrect, then MicBias  	is powered down. +- AVDD-supply, IOVDD-supply, DRVDD-supply, DVDD-supply : power supplies for the +  device as covered in Documentation/devicetree/bindings/regulator/regulator.txt + +CODEC output pins: +  * LLOUT +  * RLOUT +  * MONO_LOUT +  * HPLOUT +  * HPROUT +  * HPLCOM +  * HPRCOM + +CODEC input pins: +  * MIC3L +  * MIC3R +  * LINE1L +  * LINE2L +  * LINE1R +  * LINE2R + +The pins can be used in referring sound node's audio-routing property.  Example:  tlv320aic3x: tlv320aic3x@1b {  	compatible = "ti,tlv320aic3x";  	reg = <0x1b>; + +	AVDD-supply = <®ulator>; +	IOVDD-supply = <®ulator>; +	DRVDD-supply = <®ulator>; +	DVDD-supply = <®ulator>;  }; diff --git a/Documentation/devicetree/bindings/sound/tpa6130a2.txt b/Documentation/devicetree/bindings/sound/tpa6130a2.txt new file mode 100644 index 00000000000..6dfa740e4b2 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/tpa6130a2.txt @@ -0,0 +1,27 @@ +Texas Instruments - tpa6130a2 Codec module + +The tpa6130a2 serial control bus communicates through I2C protocols + +Required properties: + +- compatible - "string" - One of: +    "ti,tpa6130a2" - TPA6130A2 +    "ti,tpa6140a2" - TPA6140A2 + + +- reg - <int> -  I2C slave address + +- Vdd-supply - <phandle> - power supply regulator + +Optional properties: + +- power-gpio - gpio pin to power the device + +Example: + +tpa6130a2: tpa6130a2@60 { +	compatible = "ti,tpa6130a2"; +	reg = <0x60>; +	Vdd-supply = <&vmmc2>; +	power-gpio = <&gpio4 2 GPIO_ACTIVE_HIGH>; +}; diff --git a/Documentation/devicetree/bindings/sound/widgets.txt b/Documentation/devicetree/bindings/sound/widgets.txt new file mode 100644 index 00000000000..b6de5ba3b2d --- /dev/null +++ b/Documentation/devicetree/bindings/sound/widgets.txt @@ -0,0 +1,20 @@ +Widgets: + +This mainly specifies audio off-codec DAPM widgets. + +Each entry is a pair of strings in DT: + +	"template-wname", "user-supplied-wname" + +The "template-wname" being the template widget name and currently includes: +"Microphone", "Line", "Headphone" and "Speaker". + +The "user-supplied-wname" being the user specified widget name. + +For instance: +	simple-audio-widgets = +		"Microphone", "Microphone Jack", +		"Line", "Line In Jack", +		"Line", "Line Out Jack", +		"Headphone", "Headphone Jack", +		"Speaker", "Speaker External"; diff --git a/Documentation/devicetree/bindings/spi/efm32-spi.txt b/Documentation/devicetree/bindings/spi/efm32-spi.txt index a590ca51be7..130cd17e368 100644 --- a/Documentation/devicetree/bindings/spi/efm32-spi.txt +++ b/Documentation/devicetree/bindings/spi/efm32-spi.txt @@ -3,24 +3,30 @@  Required properties:  - #address-cells: see spi-bus.txt  - #size-cells: see spi-bus.txt -- compatible: should be "efm32,spi" +- compatible: should be "energymicro,efm32-spi"  - reg: Offset and length of the register set for the controller  - interrupts: pair specifying rx and tx irq  - clocks: phandle to the spi clock  - cs-gpios: see spi-bus.txt -- location: Value to write to the ROUTE register's LOCATION bitfield to configure the pinmux for the device, see datasheet for values. + +Recommended properties : +- efm32,location: Value to write to the ROUTE register's LOCATION bitfield to +                  configure the pinmux for the device, see datasheet for values. +                  If "efm32,location" property is not provided, keeping what is +                  already configured in the hardware, so its either the reset +                  default 0 or whatever the bootloader did.  Example:  spi1: spi@0x4000c400 { /* USART1 */  	#address-cells = <1>;  	#size-cells = <0>; -	compatible = "efm32,spi"; +	compatible = "energymicro,efm32-spi";  	reg = <0x4000c400 0x400>;  	interrupts = <15 16>;  	clocks = <&cmu 20>;  	cs-gpios = <&gpio 51 1>; // D3 -	location = <1>; +	efm32,location = <1>;  	status = "ok";  	ks8851@0 { diff --git a/Documentation/devicetree/bindings/spi/fsl-spi.txt b/Documentation/devicetree/bindings/spi/fsl-spi.txt index b032dd76e9d..a2331372068 100644 --- a/Documentation/devicetree/bindings/spi/fsl-spi.txt +++ b/Documentation/devicetree/bindings/spi/fsl-spi.txt @@ -42,6 +42,10 @@ Required properties:  - interrupts : should contain eSPI interrupt, the device has one interrupt.  - fsl,espi-num-chipselects : the number of the chipselect signals. +Optional properties: +- fsl,csbef: chip select assertion time in bits before frame starts +- fsl,csaft: chip select negation time in bits after frame ends +  Example:  	spi@110000 {  		#address-cells = <1>; @@ -51,4 +55,6 @@ Example:  		interrupts = <53 0x2>;  		interrupt-parent = <&mpic>;  		fsl,espi-num-chipselects = <4>; +		fsl,csbef = <1>; +		fsl,csaft = <1>;  	}; diff --git a/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt b/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt index 91ff771c7e7..7ea701e07dc 100644 --- a/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt +++ b/Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.txt @@ -4,10 +4,19 @@ Required properties:  - compatible : should be "nvidia,tegra114-spi".  - reg: Should contain SPI registers location and length.  - interrupts: Should contain SPI interrupts. -- nvidia,dma-request-selector : The Tegra DMA controller's phandle and -  request selector for this SPI controller. -- This is also require clock named "spi" as per binding document -  Documentation/devicetree/bindings/clock/clock-bindings.txt +- clock-names : Must include the following entries: +  - spi +- resets : Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names : Must include the following entries: +  - spi +- dmas : Must contain an entry for each entry in clock-names. +  See ../dma/dma.txt for details. +- dma-names : Must include the following entries: +  - rx +  - tx +- clocks : Must contain an entry for each entry in clock-names. +  See ../clocks/clock-bindings.txt for details.  Recommended properties:  - spi-max-frequency: Definition as per @@ -18,9 +27,14 @@ spi@7000d600 {  	compatible = "nvidia,tegra114-spi";  	reg = <0x7000d600 0x200>;  	interrupts = <0 82 0x04>; -	nvidia,dma-request-selector = <&apbdma 16>;  	spi-max-frequency = <25000000>;  	#address-cells = <1>;  	#size-cells = <0>; +	clocks = <&tegra_car 44>; +	clock-names = "spi"; +	resets = <&tegra_car 44>; +	reset-names = "spi"; +	dmas = <&apbdma 16>, <&apbdma 16>; +	dma-names = "rx", "tx";  	status = "disabled";  }; diff --git a/Documentation/devicetree/bindings/spi/nvidia,tegra20-sflash.txt b/Documentation/devicetree/bindings/spi/nvidia,tegra20-sflash.txt index 7b53da5cb75..bdf08e6dec9 100644 --- a/Documentation/devicetree/bindings/spi/nvidia,tegra20-sflash.txt +++ b/Documentation/devicetree/bindings/spi/nvidia,tegra20-sflash.txt @@ -4,8 +4,17 @@ Required properties:  - compatible : should be "nvidia,tegra20-sflash".  - reg: Should contain SFLASH registers location and length.  - interrupts: Should contain SFLASH interrupts. -- nvidia,dma-request-selector : The Tegra DMA controller's phandle and -  request selector for this SFLASH controller. +- clocks : Must contain one entry, for the module clock. +  See ../clocks/clock-bindings.txt for details. +- resets : Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names : Must include the following entries: +  - spi +- dmas : Must contain an entry for each entry in clock-names. +  See ../dma/dma.txt for details. +- dma-names : Must include the following entries: +  - rx +  - tx  Recommended properties:  - spi-max-frequency: Definition as per @@ -17,10 +26,13 @@ spi@7000c380 {  	compatible = "nvidia,tegra20-sflash";  	reg = <0x7000c380 0x80>;  	interrupts = <0 39 0x04>; -	nvidia,dma-request-selector = <&apbdma 16>;  	spi-max-frequency = <25000000>;  	#address-cells = <1>;  	#size-cells = <0>; +	clocks = <&tegra_car 43>; +	resets = <&tegra_car 43>; +	reset-names = "spi"; +	dmas = <&apbdma 11>, <&apbdma 11>; +	dma-names = "rx", "tx";  	status = "disabled";  }; - diff --git a/Documentation/devicetree/bindings/spi/nvidia,tegra20-slink.txt b/Documentation/devicetree/bindings/spi/nvidia,tegra20-slink.txt index eefe15e3d95..5db9144a33c 100644 --- a/Documentation/devicetree/bindings/spi/nvidia,tegra20-slink.txt +++ b/Documentation/devicetree/bindings/spi/nvidia,tegra20-slink.txt @@ -4,8 +4,17 @@ Required properties:  - compatible : should be "nvidia,tegra20-slink", "nvidia,tegra30-slink".  - reg: Should contain SLINK registers location and length.  - interrupts: Should contain SLINK interrupts. -- nvidia,dma-request-selector : The Tegra DMA controller's phandle and -  request selector for this SLINK controller. +- clocks : Must contain one entry, for the module clock. +  See ../clocks/clock-bindings.txt for details. +- resets : Must contain an entry for each entry in reset-names. +  See ../reset/reset.txt for details. +- reset-names : Must include the following entries: +  - spi +- dmas : Must contain an entry for each entry in clock-names. +  See ../dma/dma.txt for details. +- dma-names : Must include the following entries: +  - rx +  - tx  Recommended properties:  - spi-max-frequency: Definition as per @@ -17,10 +26,13 @@ spi@7000d600 {  	compatible = "nvidia,tegra20-slink";  	reg = <0x7000d600 0x200>;  	interrupts = <0 82 0x04>; -	nvidia,dma-request-selector = <&apbdma 16>;  	spi-max-frequency = <25000000>;  	#address-cells = <1>;  	#size-cells = <0>; +	clocks = <&tegra_car 44>; +	resets = <&tegra_car 44>; +	reset-names = "spi"; +	dmas = <&apbdma 16>, <&apbdma 16>; +	dma-names = "rx", "tx";  	status = "disabled";  }; - diff --git a/Documentation/devicetree/bindings/spi/nvidia,tegra20-spi.txt b/Documentation/devicetree/bindings/spi/nvidia,tegra20-spi.txt deleted file mode 100644 index 6b9e5189669..00000000000 --- a/Documentation/devicetree/bindings/spi/nvidia,tegra20-spi.txt +++ /dev/null @@ -1,5 +0,0 @@ -NVIDIA Tegra 2 SPI device - -Required properties: -- compatible : should be "nvidia,tegra20-spi". -- gpios : should specify GPIOs used for chipselect. diff --git a/Documentation/devicetree/bindings/spi/omap-spi.txt b/Documentation/devicetree/bindings/spi/omap-spi.txt index 4c85c4c6958..2ba5f9c023a 100644 --- a/Documentation/devicetree/bindings/spi/omap-spi.txt +++ b/Documentation/devicetree/bindings/spi/omap-spi.txt @@ -2,8 +2,8 @@ OMAP2+ McSPI device  Required properties:  - compatible : -  - "ti,omap2-spi" for OMAP2 & OMAP3. -  - "ti,omap4-spi" for OMAP4+. +  - "ti,omap2-mcspi" for OMAP2 & OMAP3. +  - "ti,omap4-mcspi" for OMAP4+.  - ti,spi-num-cs : Number of chipselect supported  by the instance.  - ti,hwmods: Name of the hwmod associated to the McSPI  - ti,pindir-d0-out-d1-in: Select the D0 pin as output and D1 as diff --git a/Documentation/devicetree/bindings/spi/qcom,spi-qup.txt b/Documentation/devicetree/bindings/spi/qcom,spi-qup.txt new file mode 100644 index 00000000000..bee6ff204ba --- /dev/null +++ b/Documentation/devicetree/bindings/spi/qcom,spi-qup.txt @@ -0,0 +1,91 @@ +Qualcomm Universal Peripheral (QUP) Serial Peripheral Interface (SPI) + +The QUP core is an AHB slave that provides a common data path (an output FIFO +and an input FIFO) for serial peripheral interface (SPI) mini-core. + +SPI in master mode supports up to 50MHz, up to four chip selects, programmable +data path from 4 bits to 32 bits and numerous protocol variants. + +Required properties: +- compatible:     Should contain "qcom,spi-qup-v2.1.1" or "qcom,spi-qup-v2.2.1" +- reg:            Should contain base register location and length +- interrupts:     Interrupt number used by this controller + +- clocks:         Should contain the core clock and the AHB clock. +- clock-names:    Should be "core" for the core clock and "iface" for the +                  AHB clock. + +- #address-cells: Number of cells required to define a chip select +                  address on the SPI bus. Should be set to 1. +- #size-cells:    Should be zero. + +Optional properties: +- spi-max-frequency: Specifies maximum SPI clock frequency, +                     Units - Hz. Definition as per +                     Documentation/devicetree/bindings/spi/spi-bus.txt +- num-cs:	total number of chipselects +- cs-gpios:	should specify GPIOs used for chipselects. +		The gpios will be referred to as reg = <index> in the SPI child +		nodes.  If unspecified, a single SPI device without a chip +		select can be used. + + +SPI slave nodes must be children of the SPI master node and can contain +properties described in Documentation/devicetree/bindings/spi/spi-bus.txt + +Example: + +	spi_8: spi@f9964000 { /* BLSP2 QUP2 */ + +		compatible = "qcom,spi-qup-v2"; +		#address-cells = <1>; +		#size-cells = <0>; +		reg = <0xf9964000 0x1000>; +		interrupts = <0 102 0>; +		spi-max-frequency = <19200000>; + +		clocks = <&gcc GCC_BLSP2_QUP2_SPI_APPS_CLK>, <&gcc GCC_BLSP2_AHB_CLK>; +		clock-names = "core", "iface"; + +		pinctrl-names = "default"; +		pinctrl-0 = <&spi8_default>; + +		device@0 { +			compatible = "arm,pl022-dummy"; +			#address-cells = <1>; +			#size-cells = <1>; +			reg = <0>; /* Chip select 0 */ +			spi-max-frequency = <19200000>; +			spi-cpol; +		}; + +		device@1 { +			compatible = "arm,pl022-dummy"; +			#address-cells = <1>; +			#size-cells = <1>; +			reg = <1>; /* Chip select 1 */ +			spi-max-frequency = <9600000>; +			spi-cpha; +		}; + +		device@2 { +			compatible = "arm,pl022-dummy"; +			#address-cells = <1>; +			#size-cells = <1>; +			reg = <2>; /* Chip select 2 */ +			spi-max-frequency = <19200000>; +			spi-cpol; +			spi-cpha; +		}; + +		device@3 { +			compatible = "arm,pl022-dummy"; +			#address-cells = <1>; +			#size-cells = <1>; +			reg = <3>; /* Chip select 3 */ +			spi-max-frequency = <19200000>; +			spi-cpol; +			spi-cpha; +			spi-cs-high; +		}; +	}; diff --git a/Documentation/devicetree/bindings/spi/sh-hspi.txt b/Documentation/devicetree/bindings/spi/sh-hspi.txt new file mode 100644 index 00000000000..319bad4af87 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/sh-hspi.txt @@ -0,0 +1,29 @@ +Renesas HSPI. + +Required properties: +- compatible       : "renesas,hspi-<soctype>", "renesas,hspi" as fallback. +		     Examples with soctypes are: +		       - "renesas,hspi-r8a7778" (R-Car M1) +		       - "renesas,hspi-r8a7779" (R-Car H1) +- reg              : Offset and length of the register set for the device +- interrupt-parent : The phandle for the interrupt controller that +		     services interrupts for this device +- interrupts       : Interrupt specifier +- #address-cells   : Must be <1> +- #size-cells      : Must be <0> + +Pinctrl properties might be needed, too.  See +Documentation/devicetree/bindings/pinctrl/renesas,*. + +Example: + +	hspi0: spi@fffc7000 { +		compatible = "renesas,hspi-r8a7778", "renesas,hspi"; +		reg = <0xfffc7000 0x18>; +		interrupt-parent = <&gic>; +		interrupts = <0 63 IRQ_TYPE_LEVEL_HIGH>; +		#address-cells = <1>; +		#size-cells = <0>; +		status = "disabled"; +	}; + diff --git a/Documentation/devicetree/bindings/spi/sh-msiof.txt b/Documentation/devicetree/bindings/spi/sh-msiof.txt index e6222106ca3..f24baf3b6cc 100644 --- a/Documentation/devicetree/bindings/spi/sh-msiof.txt +++ b/Documentation/devicetree/bindings/spi/sh-msiof.txt @@ -1,12 +1,40 @@  Renesas MSIOF spi controller  Required properties: -- compatible : 	"renesas,sh-msiof" for SuperH or -		"renesas,sh-mobile-msiof" for SH Mobile series -- reg : Offset and length of the register set for the device -- interrupts : interrupt line used by MSIOF +- compatible           : "renesas,msiof-<soctype>" for SoCs, +			 "renesas,sh-msiof" for SuperH, or +			 "renesas,sh-mobile-msiof" for SH Mobile series. +			 Examples with soctypes are: +			 "renesas,msiof-r8a7790" (R-Car H2) +			 "renesas,msiof-r8a7791" (R-Car M2) +- reg                  : Offset and length of the register set for the device +- interrupt-parent     : The phandle for the interrupt controller that +			 services interrupts for this device +- interrupts           : Interrupt specifier +- #address-cells       : Must be <1> +- #size-cells          : Must be <0>  Optional properties: -- num-cs		: total number of chip-selects -- renesas,tx-fifo-size	: Overrides the default tx fifo size given in words -- renesas,rx-fifo-size	: Overrides the default rx fifo size given in words +- clocks               : Must contain a reference to the functional clock. +- num-cs               : Total number of chip-selects (default is 1) + +Optional properties, deprecated for soctype-specific bindings: +- renesas,tx-fifo-size : Overrides the default tx fifo size given in words +			 (default is 64) +- renesas,rx-fifo-size : Overrides the default rx fifo size given in words +			 (default is 64, or 256 on R-Car H2 and M2) + +Pinctrl properties might be needed, too.  See +Documentation/devicetree/bindings/pinctrl/renesas,*. + +Example: + +	msiof0: spi@e6e20000 { +		compatible = "renesas,msiof-r8a7791"; +		reg = <0 0xe6e20000 0 0x0064>; +		interrupts = <0 156 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&mstp0_clks R8A7791_CLK_MSIOF0>; +		#address-cells = <1>; +		#size-cells = <0>; +		status = "disabled"; +	}; diff --git a/Documentation/devicetree/bindings/spi/spi-bus.txt b/Documentation/devicetree/bindings/spi/spi-bus.txt index 800dafe5b01..bbaa857dd68 100644 --- a/Documentation/devicetree/bindings/spi/spi-bus.txt +++ b/Documentation/devicetree/bindings/spi/spi-bus.txt @@ -55,19 +55,21 @@ contain the following properties.      		chip select active high  - spi-3wire       - (optional) Empty property indicating device requires      		    3-wire mode. +- spi-lsb-first   - (optional) Empty property indicating device requires +		LSB first mode.  - spi-tx-bus-width - (optional) The bus width(number of data wires) that                        used for MOSI. Defaults to 1 if not present.  - spi-rx-bus-width - (optional) The bus width(number of data wires) that                        used for MISO. Defaults to 1 if not present.  Some SPI controllers and devices support Dual and Quad SPI transfer mode. -It allows data in SPI system transfered in 2 wires(DUAL) or 4 wires(QUAD). +It allows data in the SPI system to be transferred in 2 wires(DUAL) or 4 wires(QUAD).  Now the value that spi-tx-bus-width and spi-rx-bus-width can receive is  only 1(SINGLE), 2(DUAL) and 4(QUAD).  Dual/Quad mode is not allowed when 3-wire mode is used.  If a gpio chipselect is used for the SPI slave the gpio number will be passed -via the cs_gpio +via the SPI master node cs-gpios property.  SPI example for an MPC5200 SPI bus:  	spi@f00 { diff --git a/Documentation/devicetree/bindings/spi/spi-cadence.txt b/Documentation/devicetree/bindings/spi/spi-cadence.txt new file mode 100644 index 00000000000..94f09141a4f --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-cadence.txt @@ -0,0 +1,31 @@ +Cadence SPI controller Device Tree Bindings +------------------------------------------- + +Required properties: +- compatible		: Should be "cdns,spi-r1p6" or "xlnx,zynq-spi-r1p6". +- reg			: Physical base address and size of SPI registers map. +- interrupts		: Property with a value describing the interrupt +			  number. +- interrupt-parent	: Must be core interrupt controller +- clock-names		: List of input clock names - "ref_clk", "pclk" +			  (See clock bindings for details). +- clocks		: Clock phandles (see clock bindings for details). + +Optional properties: +- num-cs		: Number of chip selects used. +			  If a decoder is used, this will be the number of +			  chip selects after the decoder. +- is-decoded-cs		: Flag to indicate whether decoder is used or not. + +Example: + +	spi@e0007000 { +		compatible = "xlnx,zynq-spi-r1p6"; +		clock-names = "ref_clk", "pclk"; +		clocks = <&clkc 26>, <&clkc 35>; +		interrupt-parent = <&intc>; +		interrupts = <0 49 4>; +		num-cs = <4>; +		is-decoded-cs = <0>; +		reg = <0xe0007000 0x1000>; +	} ; diff --git a/Documentation/devicetree/bindings/spi/spi-dw.txt b/Documentation/devicetree/bindings/spi/spi-dw.txt new file mode 100644 index 00000000000..7b63ed60199 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-dw.txt @@ -0,0 +1,24 @@ +Synopsys DesignWare SPI master + +Required properties: +- compatible: should be "snps,designware-spi" +- #address-cells: see spi-bus.txt +- #size-cells: see spi-bus.txt +- reg: address and length of the spi master registers +- interrupts: should contain one interrupt +- clocks: spi clock phandle +- num-cs: see spi-bus.txt + +Optional properties: +- cs-gpios: see spi-bus.txt + +Example: + +spi: spi@4020a000 { +	compatible = "snps,designware-spi"; +	interrupts = <11 1>; +	reg = <0x4020a000 0x1000>; +	clocks = <&pclk>; +	num-cs = <2>; +	cs-gpios = <&banka 0 0>; +}; diff --git a/Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt b/Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt index a1fb3035a42..5376de40f10 100644 --- a/Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt +++ b/Documentation/devicetree/bindings/spi/spi-fsl-dspi.txt @@ -10,6 +10,7 @@ Required properties:  - pinctrl-names: must contain a "default" entry.  - spi-num-chipselects : the number of the chipselect signals.  - bus-num : the slave chip chipselect signal number. +- big-endian : if DSPI modudle is big endian, the bool will be set in node.  Example:  dspi0@4002c000 { @@ -24,6 +25,7 @@ dspi0@4002c000 {  	bus-num = <0>;  	pinctrl-names = "default";  	pinctrl-0 = <&pinctrl_dspi0_1>; +	big-endian;  	status = "okay";  	sflash: at26df081a@0 { diff --git a/Documentation/devicetree/bindings/spi/spi-rspi.txt b/Documentation/devicetree/bindings/spi/spi-rspi.txt new file mode 100644 index 00000000000..d57d82a7405 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-rspi.txt @@ -0,0 +1,61 @@ +Device tree configuration for Renesas RSPI/QSPI driver + +Required properties: +- compatible       : For Renesas Serial Peripheral Interface on legacy SH: +		     "renesas,rspi-<soctype>", "renesas,rspi" as fallback. +		     For Renesas Serial Peripheral Interface on RZ/A1H: +		     "renesas,rspi-<soctype>", "renesas,rspi-rz" as fallback. +		     For Quad Serial Peripheral Interface on R-Car Gen2: +		     "renesas,qspi-<soctype>", "renesas,qspi" as fallback. +		     Examples with soctypes are: +		        - "renesas,rspi-sh7757" (SH) +			- "renesas,rspi-r7s72100" (RZ/A1H) +			- "renesas,qspi-r8a7790" (R-Car H2) +			- "renesas,qspi-r8a7791" (R-Car M2) +- reg              : Address start and address range size of the device +- interrupts       : A list of interrupt-specifiers, one for each entry in +		     interrupt-names. +		     If interrupt-names is not present, an interrupt specifier +		     for a single muxed interrupt. +- interrupt-names  : A list of interrupt names. Should contain (if present): +		       - "error" for SPEI, +		       - "rx" for SPRI, +		       - "tx" to SPTI, +		       - "mux" for a single muxed interrupt. +- interrupt-parent : The phandle for the interrupt controller that +		     services interrupts for this device. +- num-cs	   : Number of chip selects. Some RSPI cores have more than 1. +- #address-cells   : Must be <1> +- #size-cells      : Must be <0> + +Optional properties: +- clocks           : Must contain a reference to the functional clock. + +Pinctrl properties might be needed, too.  See +Documentation/devicetree/bindings/pinctrl/renesas,*. + +Examples: + +	spi0: spi@e800c800 { +		compatible = "renesas,rspi-r7s72100", "renesas,rspi-rz"; +		reg = <0xe800c800 0x24>; +		interrupts = <0 238 IRQ_TYPE_LEVEL_HIGH>, +			     <0 239 IRQ_TYPE_LEVEL_HIGH>, +			     <0 240 IRQ_TYPE_LEVEL_HIGH>; +		interrupt-names = "error", "rx", "tx"; +		interrupt-parent = <&gic>; +		num-cs = <1>; +		#address-cells = <1>; +		#size-cells = <0>; +	}; + +	spi: spi@e6b10000 { +		compatible = "renesas,qspi-r8a7791", "renesas,qspi"; +		reg = <0 0xe6b10000 0 0x2c>; +		interrupt-parent = <&gic>; +		interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>; +		clocks = <&mstp9_clks R8A7791_CLK_QSPI_MOD>; +		num-cs = <1>; +		#address-cells = <1>; +		#size-cells = <0>; +	}; diff --git a/Documentation/devicetree/bindings/spi/spi-sun4i.txt b/Documentation/devicetree/bindings/spi/spi-sun4i.txt new file mode 100644 index 00000000000..de827f5a301 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-sun4i.txt @@ -0,0 +1,24 @@ +Allwinner A10 SPI controller + +Required properties: +- compatible: Should be "allwinner,sun4-a10-spi". +- reg: Should contain register location and length. +- interrupts: Should contain interrupt. +- clocks: phandle to the clocks feeding the SPI controller. Two are +          needed: +  - "ahb": the gated AHB parent clock +  - "mod": the parent module clock +- clock-names: Must contain the clock names described just above + +Example: + +spi1: spi@01c06000 { +	compatible = "allwinner,sun4i-a10-spi"; +	reg = <0x01c06000 0x1000>; +	interrupts = <11>; +	clocks = <&ahb_gates 21>, <&spi1_clk>; +	clock-names = "ahb", "mod"; +	status = "disabled"; +	#address-cells = <1>; +	#size-cells = <0>; +}; diff --git a/Documentation/devicetree/bindings/spi/spi-sun6i.txt b/Documentation/devicetree/bindings/spi/spi-sun6i.txt new file mode 100644 index 00000000000..21de73db6a0 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-sun6i.txt @@ -0,0 +1,24 @@ +Allwinner A31 SPI controller + +Required properties: +- compatible: Should be "allwinner,sun6i-a31-spi". +- reg: Should contain register location and length. +- interrupts: Should contain interrupt. +- clocks: phandle to the clocks feeding the SPI controller. Two are +          needed: +  - "ahb": the gated AHB parent clock +  - "mod": the parent module clock +- clock-names: Must contain the clock names described just above +- resets: phandle to the reset controller asserting this device in +          reset + +Example: + +spi1: spi@01c69000 { +	compatible = "allwinner,sun6i-a31-spi"; +	reg = <0x01c69000 0x1000>; +	interrupts = <0 66 4>; +	clocks = <&ahb1_gates 21>, <&spi1_clk>; +	clock-names = "ahb", "mod"; +	resets = <&ahb1_rst 21>; +}; diff --git a/Documentation/devicetree/bindings/spi/spi-xtensa-xtfpga.txt b/Documentation/devicetree/bindings/spi/spi-xtensa-xtfpga.txt new file mode 100644 index 00000000000..b6ebe2bc704 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-xtensa-xtfpga.txt @@ -0,0 +1,9 @@ +Cadence Xtensa XTFPGA platform SPI controller. + +This simple SPI master controller is built into xtfpga bitstreams and is used +to control daughterboard audio codec. + +Required properties: +- compatible: should be "cdns,xtfpga-spi". +- reg: physical base address of the controller and length of memory mapped +  region. diff --git a/Documentation/devicetree/bindings/spi/spi_atmel.txt b/Documentation/devicetree/bindings/spi/spi_atmel.txt index 07e04cdc0c9..4f8184d069c 100644 --- a/Documentation/devicetree/bindings/spi/spi_atmel.txt +++ b/Documentation/devicetree/bindings/spi/spi_atmel.txt @@ -5,6 +5,9 @@ Required properties:  - reg: Address and length of the register set for the device  - interrupts: Should contain spi interrupt  - cs-gpios: chipselects +- clock-names: tuple listing input clock names. +	Required elements: "spi_clk" +- clocks: phandles to input clocks.  Example: @@ -14,6 +17,8 @@ spi1: spi@fffcc000 {  	interrupts = <13 4 5>;  	#address-cells = <1>;  	#size-cells = <0>; +	clocks = <&spi1_clk>; +	clock-names = "spi_clk";  	cs-gpios = <&pioB 3 0>;  	status = "okay"; diff --git a/Documentation/devicetree/bindings/spi/ti_qspi.txt b/Documentation/devicetree/bindings/spi/ti_qspi.txt index 1f9641ade0b..601a360531a 100644 --- a/Documentation/devicetree/bindings/spi/ti_qspi.txt +++ b/Documentation/devicetree/bindings/spi/ti_qspi.txt @@ -3,6 +3,11 @@ TI QSPI controller.  Required properties:  - compatible : should be "ti,dra7xxx-qspi" or "ti,am4372-qspi".  - reg: Should contain QSPI registers location and length. +- reg-names: Should contain the resource reg names. +	- qspi_base: Qspi configuration register Address space +	- qspi_mmap: Memory mapped Address space +	- (optional) qspi_ctrlmod: Control module Address space +- interrupts: should contain the qspi interrupt number.  - #address-cells, #size-cells : Must be present if the device has sub-nodes  - ti,hwmods: Name of the hwmod associated to the QSPI @@ -14,7 +19,8 @@ Example:  qspi: qspi@4b300000 {  	compatible = "ti,dra7xxx-qspi"; -	reg = <0x4b300000 0x100>; +	reg = <0x47900000 0x100>, <0x30000000 0x3ffffff>; +	reg-names = "qspi_base", "qspi_mmap";  	#address-cells = <1>;  	#size-cells = <0>;  	spi-max-frequency = <25000000>; diff --git a/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.txt b/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.txt new file mode 100644 index 00000000000..715d0998af8 --- /dev/null +++ b/Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.txt @@ -0,0 +1,61 @@ +Qualcomm SPMI Controller (PMIC Arbiter) + +The SPMI PMIC Arbiter is found on the Snapdragon 800 Series.  It is an SPMI +controller with wrapping arbitration logic to allow for multiple on-chip +devices to control a single SPMI master. + +The PMIC Arbiter can also act as an interrupt controller, providing interrupts +to slave devices. + +See spmi.txt for the generic SPMI controller binding requirements for child +nodes. + +See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for +generic interrupt controller binding documentation. + +Required properties: +- compatible : should be "qcom,spmi-pmic-arb". +- reg-names  : must contain: +     "core" - core registers +     "intr" - interrupt controller registers +     "cnfg" - configuration registers +- reg : address + size pairs describing the PMIC arb register sets; order must +        correspond with the order of entries in reg-names +- #address-cells : must be set to 2 +- #size-cells : must be set to 0 +- qcom,ee : indicates the active Execution Environment identifier (0-5) +- qcom,channel : which of the PMIC Arb provided channels to use for accesses (0-5) +- interrupts : interrupt list for the PMIC Arb controller, must contain a +               single interrupt entry for the peripheral interrupt +- interrupt-names : corresponding interrupt names for the interrupts +                    listed in the 'interrupts' property, must contain: +     "periph_irq" - summary interrupt for PMIC peripherals +- interrupt-controller : boolean indicator that the PMIC arbiter is an interrupt controller +- #interrupt-cells :  must be set to 4. Interrupts are specified as a 4-tuple: +    cell 1: slave ID for the requested interrupt (0-15) +    cell 2: peripheral ID for requested interrupt (0-255) +    cell 3: the requested peripheral interrupt (0-7) +    cell 4: interrupt flags indicating level-sense information, as defined in +            dt-bindings/interrupt-controller/irq.h + +Example: + +	spmi { +		compatible = "qcom,spmi-pmic-arb"; +		reg-names = "core", "intr", "cnfg"; +		reg = <0xfc4cf000 0x1000>, +		      <0xfc4cb000 0x1000>, +		      <0xfc4ca000 0x1000>; + +		interrupt-names = "periph_irq"; +		interrupts = <0 190 0>; + +		qcom,ee = <0>; +		qcom,channel = <0>; + +		#address-cells = <2>; +		#size-cells = <0>; + +		interrupt-controller; +		#interrupt-cells = <4>; +	}; diff --git a/Documentation/devicetree/bindings/spmi/spmi.txt b/Documentation/devicetree/bindings/spmi/spmi.txt new file mode 100644 index 00000000000..4bb10d161a2 --- /dev/null +++ b/Documentation/devicetree/bindings/spmi/spmi.txt @@ -0,0 +1,41 @@ +System Power Management Interface (SPMI) Controller + +This document defines a generic set of bindings for use by SPMI controllers.  A +controller is modelled in device tree as a node with zero or more child nodes, +each representing a unique slave on the bus. + +Required properties: +- #address-cells : must be set to 2 +- #size-cells : must be set to 0 + +Child nodes: + +An SPMI controller node can contain zero or more child nodes representing slave +devices on the bus.  Child 'reg' properties are specified as an address, type +pair.  The address must be in the range 0-15 (4 bits).  The type must be one of +SPMI_USID (0) or SPMI_GSID (1) for Unique Slave ID or Group Slave ID respectively. +These are the identifiers "statically assigned by the system integrator", as +per the SPMI spec. + +Each child node must have one and only one 'reg' entry of type SPMI_USID. + +#include <dt-bindings/spmi/spmi.h> + +	spmi@.. { +		compatible = "..."; +		reg = <...>; + +		#address-cells = <2>; +		#size-cells = <0>; + +		child@0 { +			compatible = "..."; +			reg = <0 SPMI_USID>; +		}; + +		child@7 { +			compatible = "..."; +			reg = <7 SPMI_USID +			       3 SPMI_GSID>; +		}; +	}; diff --git a/Documentation/devicetree/bindings/staging/dwc2.txt b/Documentation/devicetree/bindings/staging/dwc2.txt deleted file mode 100644 index 1a1b7cfa484..00000000000 --- a/Documentation/devicetree/bindings/staging/dwc2.txt +++ /dev/null @@ -1,15 +0,0 @@ -Platform DesignWare HS OTG USB 2.0 controller ------------------------------------------------------ - -Required properties: -- compatible : "snps,dwc2" -- reg : Should contain 1 register range (address and length) -- interrupts : Should contain 1 interrupt - -Example: - -        usb@101c0000 { -                compatible = "ralink,rt3050-usb, snps,dwc2"; -                reg = <0x101c0000 40000>; -                interrupts = <18>; -        }; diff --git a/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt b/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt index 46882058b59..ee05dc39069 100644 --- a/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt +++ b/Documentation/devicetree/bindings/staging/iio/adc/mxs-lradc.txt @@ -1,7 +1,8 @@  * Freescale i.MX28 LRADC device driver  Required properties: -- compatible: Should be "fsl,imx28-lradc" +- compatible: Should be "fsl,imx23-lradc" for i.MX23 SoC and "fsl,imx28-lradc" +              for i.MX28 SoC  - reg: Address and length of the register set for the device  - interrupts: Should contain the LRADC interrupts @@ -9,13 +10,38 @@ Optional properties:  - fsl,lradc-touchscreen-wires: Number of wires used to connect the touchscreen                                 to LRADC. Valid value is either 4 or 5. If this                                 property is not present, then the touchscreen is -                               disabled. +                               disabled. 5 wires is valid for i.MX28 SoC only. +- fsl,ave-ctrl: number of samples per direction to calculate an average value. +                Allowed value is 1 ... 31, default is 4 +- fsl,ave-delay: delay between consecutive samples. Allowed value is +                 1 ... 2047. It is used if 'fsl,ave-ctrl' > 1, counts at +                 2 kHz and its default is 2 (= 1 ms) +- fsl,settling: delay between plate switch to next sample. Allowed value is +                1 ... 2047. It counts at 2 kHz and its default is +                10 (= 5 ms) -Examples: +Example for i.MX23 SoC: + +	lradc@80050000 { +		compatible = "fsl,imx23-lradc"; +		reg = <0x80050000 0x2000>; +		interrupts = <36 37 38 39 40 41 42 43 44>; +		status = "okay"; +		fsl,lradc-touchscreen-wires = <4>; +		fsl,ave-ctrl = <4>; +		fsl,ave-delay = <2>; +		fsl,settling = <10>; +	}; + +Example for i.MX28 SoC:  	lradc@80050000 {  		compatible = "fsl,imx28-lradc";  		reg = <0x80050000 0x2000>; -		interrupts = <10 14 15 16 17 18 19 -				20 21 22 23 24 25>; +		interrupts = <10 14 15 16 17 18 19 20 21 22 23 24 25>; +		status = "okay"; +		fsl,lradc-touchscreen-wires = <5>; +		fsl,ave-ctrl = <4>; +		fsl,ave-delay = <2>; +		fsl,settling = <10>;  	}; diff --git a/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt b/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt index b876d4925a5..e75f0e549ff 100644 --- a/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt +++ b/Documentation/devicetree/bindings/staging/imx-drm/fsl-imx-drm.txt @@ -1,3 +1,22 @@ +Freescale i.MX DRM master device +================================ + +The freescale i.MX DRM master device is a virtual device needed to list all +IPU or other display interface nodes that comprise the graphics subsystem. + +Required properties: +- compatible: Should be "fsl,imx-display-subsystem" +- ports: Should contain a list of phandles pointing to display interface ports +  of IPU devices + +example: + +display-subsystem { +	compatible = "fsl,display-subsystem"; +	ports = <&ipu_di0>; +}; + +  Freescale i.MX IPUv3  ==================== @@ -7,18 +26,31 @@ Required properties:    datasheet  - interrupts: Should contain sync interrupt and error interrupt,    in this order. -- #crtc-cells: 1, See below  - resets: phandle pointing to the system reset controller and            reset line index, see reset/fsl,imx-src.txt for details +Optional properties: +- port@[0-3]: Port nodes with endpoint definitions as defined in +  Documentation/devicetree/bindings/media/video-interfaces.txt. +  Ports 0 and 1 should correspond to CSI0 and CSI1, +  ports 2 and 3 should correspond to DI0 and DI1, respectively.  example:  ipu: ipu@18000000 { -	#crtc-cells = <1>; +	#address-cells = <1>; +	#size-cells = <0>;  	compatible = "fsl,imx53-ipu";  	reg = <0x18000000 0x080000000>;  	interrupts = <11 10>;  	resets = <&src 2>; + +	ipu_di0: port@2 { +		reg = <2>; + +		ipu_di0_disp0: endpoint { +			remote-endpoint = <&display_in>; +		}; +	};  };  Parallel display support @@ -26,19 +58,26 @@ Parallel display support  Required properties:  - compatible: Should be "fsl,imx-parallel-display" -- crtc: the crtc this display is connected to, see below  Optional properties:  - interface_pix_fmt: How this display is connected to the -  crtc. Currently supported types: "rgb24", "rgb565", "bgr666" +  display interface. Currently supported types: "rgb24", "rgb565", "bgr666" +  and "lvds666".  - edid: verbatim EDID data block describing attached display.  - ddc: phandle describing the i2c bus handling the display data    channel +- port: A port node with endpoint definitions as defined in +  Documentation/devicetree/bindings/media/video-interfaces.txt.  example:  display@di0 {  	compatible = "fsl,imx-parallel-display";  	edid = [edid-data]; -	crtc = <&ipu 0>;  	interface-pix-fmt = "rgb24"; + +	port { +		display_in: endpoint { +			remote-endpoint = <&ipu_di0_disp0>; +		}; +	};  }; diff --git a/Documentation/devicetree/bindings/staging/imx-drm/hdmi.txt b/Documentation/devicetree/bindings/staging/imx-drm/hdmi.txt new file mode 100644 index 00000000000..1b756cf9afb --- /dev/null +++ b/Documentation/devicetree/bindings/staging/imx-drm/hdmi.txt @@ -0,0 +1,58 @@ +Device-Tree bindings for HDMI Transmitter + +HDMI Transmitter +================ + +The HDMI Transmitter is a Synopsys DesignWare HDMI 1.4 TX controller IP +with accompanying PHY IP. + +Required properties: + - #address-cells : should be <1> + - #size-cells : should be <0> + - compatible : should be "fsl,imx6q-hdmi" or "fsl,imx6dl-hdmi". + - gpr : should be <&gpr>. +   The phandle points to the iomuxc-gpr region containing the HDMI +   multiplexer control register. + - clocks, clock-names : phandles to the HDMI iahb and isrf clocks, as described +   in Documentation/devicetree/bindings/clock/clock-bindings.txt and +   Documentation/devicetree/bindings/clock/imx6q-clock.txt. + - port@[0-4]: Up to four port nodes with endpoint definitions as defined in +   Documentation/devicetree/bindings/media/video-interfaces.txt, +   corresponding to the four inputs to the HDMI multiplexer. + +Optional properties: + - ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing + +example: + +	gpr: iomuxc-gpr@020e0000 { +		/* ... */ +	}; + +        hdmi: hdmi@0120000 { +                #address-cells = <1>; +                #size-cells = <0>; +                compatible = "fsl,imx6q-hdmi"; +                reg = <0x00120000 0x9000>; +                interrupts = <0 115 0x04>; +                gpr = <&gpr>; +                clocks = <&clks 123>, <&clks 124>; +                clock-names = "iahb", "isfr"; +                ddc-i2c-bus = <&i2c2>; + +                port@0 { +                        reg = <0>; + +                        hdmi_mux_0: endpoint { +                                remote-endpoint = <&ipu1_di0_hdmi>; +                        }; +                }; + +                port@1 { +                        reg = <1>; + +                        hdmi_mux_1: endpoint { +                                remote-endpoint = <&ipu1_di1_hdmi>; +                        }; +                }; +        }; diff --git a/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt b/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt index ed9377811ee..578a1fca366 100644 --- a/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt +++ b/Documentation/devicetree/bindings/staging/imx-drm/ldb.txt @@ -50,12 +50,14 @@ have a look at Documentation/devicetree/bindings/video/display-timing.txt.  Required properties:   - reg : should be <0> or <1> - - crtcs : a list of phandles with index pointing to the IPU display interfaces -           that can be used as video source for this channel.   - fsl,data-mapping : should be "spwg" or "jeida"                        This describes how the color bits are laid out in the                        serialized LVDS signal.   - fsl,data-width : should be <18> or <24> + - port: A port node with endpoint definitions as defined in +   Documentation/devicetree/bindings/media/video-interfaces.txt. +   On i.MX6, there should be four ports (port@[0-3]) that correspond +   to the four LVDS multiplexer inputs.  example: @@ -77,23 +79,33 @@ ldb: ldb@53fa8008 {  	lvds-channel@0 {  		reg = <0>; -		crtcs = <&ipu 0>;  		fsl,data-mapping = "spwg";  		fsl,data-width = <24>;  		display-timings {  			/* ... */  		}; + +		port { +			lvds0_in: endpoint { +				remote-endpoint = <&ipu_di0_lvds0>; +			}; +		};  	};  	lvds-channel@1 {  		reg = <1>; -		crtcs = <&ipu 1>;  		fsl,data-mapping = "spwg";  		fsl,data-width = <24>;  		display-timings {  			/* ... */  		}; + +		port { +			lvds1_in: endpoint { +				remote-endpoint = <&ipu_di1_lvds1>; +			}; +		};  	};  }; diff --git a/Documentation/devicetree/bindings/staging/xillybus.txt b/Documentation/devicetree/bindings/staging/xillybus.txt new file mode 100644 index 00000000000..9e316dc2e40 --- /dev/null +++ b/Documentation/devicetree/bindings/staging/xillybus.txt @@ -0,0 +1,20 @@ +* Xillybus driver for generic FPGA interface + +Required properties: +- compatible: Should be "xillybus,xillybus-1.00.a" +- reg: Address and length of the register set for the device +- interrupts: Contains one interrupt node, typically consisting of three cells. +- interrupt-parent: the phandle for the interrupt controller that +                    services interrupts for this device. + +Optional properties: +- dma-coherent: Present if DMA operations are coherent + +Example: + +	xillybus@ff200400 { +		compatible = "xillybus,xillybus-1.00.a"; +		reg = < 0xff200400 0x00000080 >; +		interrupts = < 0 40 1 >; +		interrupt-parent = <&intc>; +	} ; diff --git a/Documentation/devicetree/bindings/submitting-patches.txt b/Documentation/devicetree/bindings/submitting-patches.txt new file mode 100644 index 00000000000..042a0273b8b --- /dev/null +++ b/Documentation/devicetree/bindings/submitting-patches.txt @@ -0,0 +1,38 @@ + +  Submitting devicetree (DT) binding patches + +I. For patch submitters + +  0) Normal patch submission rules from Documentation/SubmittingPatches +     applies. + +  1) The Documentation/ portion of the patch should be a separate patch. + +  2) Submit the entire series to the devicetree mailinglist at + +       devicetree@vger.kernel.org + +II. For kernel maintainers + +  1) If you aren't comfortable reviewing a given binding, reply to it and ask +     the devicetree maintainers for guidance.  This will help them prioritize +     which ones to review and which ones are ok to let go. + +  2) For driver (not subsystem) bindings: If you are comfortable with the +     binding, and it hasn't received an Acked-by from the devicetree +     maintainers after a few weeks, go ahead and take it. + +     Subsystem bindings (anything affecting more than a single device) +     then getting a devicetree maintainer to review it is required. + +  3) For a series going though multiple trees, the binding patch should be +     kept with the driver using the binding. + +III. Notes + +  0) Please see ...bindings/ABI.txt for details regarding devicetree ABI. + +  1) This document is intended as a general familiarization with the process as +     decided at the 2013 Kernel Summit.  When in doubt, the current word of the +     devicetree maintainers overrules this document.  In that situation, a patch +     updating this document would be appreciated. diff --git a/Documentation/devicetree/bindings/thermal/armada-thermal.txt b/Documentation/devicetree/bindings/thermal/armada-thermal.txt index fff93d5f92d..4cf024929a3 100644 --- a/Documentation/devicetree/bindings/thermal/armada-thermal.txt +++ b/Documentation/devicetree/bindings/thermal/armada-thermal.txt @@ -1,11 +1,21 @@ -* Marvell Armada 370/XP thermal management +* Marvell Armada 370/375/380/XP thermal management  Required properties:  - compatible:	Should be set to one of the following:  		marvell,armada370-thermal +		marvell,armada375-thermal +		marvell,armada375-z1-thermal +		marvell,armada380-thermal  		marvell,armadaxp-thermal +		Note: As the name suggests, "marvell,armada375-z1-thermal" +		applies for the SoC Z1 stepping only. On such stepping +		some quirks need to be done and the register offset differs +		from the one in the A0 stepping. +		The operating system may auto-detect the SoC stepping and +		update the compatible and register offsets at runtime. +  - reg:		Device's register space.  		Two entries are expected, see the examples below.  		The first one is required for the sensor register; diff --git a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt index 284f5300fd8..c94909215c0 100644 --- a/Documentation/devicetree/bindings/thermal/exynos-thermal.txt +++ b/Documentation/devicetree/bindings/thermal/exynos-thermal.txt @@ -6,16 +6,35 @@  	       "samsung,exynos4412-tmu"  	       "samsung,exynos4210-tmu"  	       "samsung,exynos5250-tmu" +	       "samsung,exynos5260-tmu" +	       "samsung,exynos5420-tmu" for TMU channel 0, 1 on Exynos5420 +	       "samsung,exynos5420-tmu-ext-triminfo" for TMU channels 2, 3 and 4 +			Exynos5420 (Must pass triminfo base and triminfo clock)  	       "samsung,exynos5440-tmu"  - interrupt-parent : The phandle for the interrupt controller  - reg : Address range of the thermal registers. For soc's which has multiple  	instances of TMU and some registers are shared across all TMU's like  	interrupt related then 2 set of register has to supplied. First set -	belongs	to each instance of TMU and second set belongs to common TMU -	registers. +	belongs	to register set of TMU instance and second set belongs to +	registers shared with the TMU instance. + +  NOTE: On Exynos5420, the TRIMINFO register is misplaced for TMU +	channels 2, 3 and 4 +	Use "samsung,exynos5420-tmu-ext-triminfo" in cases, there is a misplaced +	register, also provide clock to access that base. + +	TRIMINFO at 0x1006c000 contains data for TMU channel 3 +	TRIMINFO at 0x100a0000 contains data for TMU channel 4 +	TRIMINFO at 0x10068000 contains data for TMU channel 2 +  - interrupts : Should contain interrupt for thermal system -- clocks : The main clock for TMU device +- clocks : The main clocks for TMU device +	-- 1. operational clock for TMU channel +	-- 2. optional clock to access the shared registers of TMU channel  - clock-names : Thermal system clock name +	-- "tmu_apbif" operational clock for current TMU channel +	-- "tmu_triminfo_apbif" clock to access the shared triminfo register +		for current TMU channel  - vtmu-supply: This entry is optional and provides the regulator node supplying  		voltage to TMU. If needed this entry can be placed inside  		board/platform specific dts file. @@ -43,6 +62,31 @@ Example 2):  		clock-names = "tmu_apbif";  	}; +Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") +	tmu_cpu2: tmu@10068000 { +		compatible = "samsung,exynos5420-tmu-ext-triminfo"; +		reg = <0x10068000 0x100>, <0x1006c000 0x4>; +		interrupts = <0 184 0>; +		clocks = <&clock 318>, <&clock 318>; +		clock-names = "tmu_apbif", "tmu_triminfo_apbif"; +	}; + +	tmu_cpu3: tmu@1006c000 { +		compatible = "samsung,exynos5420-tmu-ext-triminfo"; +		reg = <0x1006c000 0x100>, <0x100a0000 0x4>; +		interrupts = <0 185 0>; +		clocks = <&clock 318>, <&clock 319>; +		clock-names = "tmu_apbif", "tmu_triminfo_apbif"; +	}; + +	tmu_gpu: tmu@100a0000 { +		compatible = "samsung,exynos5420-tmu-ext-triminfo"; +		reg = <0x100a0000 0x100>, <0x10068000 0x4>; +		interrupts = <0 215 0>; +		clocks = <&clock 319>, <&clock 318>; +		clock-names = "tmu_apbif", "tmu_triminfo_apbif"; +	}; +  Note: For multi-instance tmu each instance should have an alias correctly  numbered in "aliases" node. diff --git a/Documentation/devicetree/bindings/thermal/imx-thermal.txt b/Documentation/devicetree/bindings/thermal/imx-thermal.txt index 541c25e49ab..1f0f67234a9 100644 --- a/Documentation/devicetree/bindings/thermal/imx-thermal.txt +++ b/Documentation/devicetree/bindings/thermal/imx-thermal.txt @@ -8,10 +8,14 @@ Required properties:    calibration data, e.g. OCOTP on imx6q.  The details about calibration data    can be found in SoC Reference Manual. +Optional properties: +- clocks : thermal sensor's clock source. +  Example:  tempmon {  	compatible = "fsl,imx6q-tempmon";  	fsl,tempmon = <&anatop>;  	fsl,tempmon-data = <&ocotp>; +	clocks = <&clks 172>;  }; diff --git a/Documentation/devicetree/bindings/thermal/thermal.txt b/Documentation/devicetree/bindings/thermal/thermal.txt new file mode 100644 index 00000000000..f5db6b72a36 --- /dev/null +++ b/Documentation/devicetree/bindings/thermal/thermal.txt @@ -0,0 +1,595 @@ +* Thermal Framework Device Tree descriptor + +This file describes a generic binding to provide a way of +defining hardware thermal structure using device tree. +A thermal structure includes thermal zones and their components, +such as trip points, polling intervals, sensors and cooling devices +binding descriptors. + +The target of device tree thermal descriptors is to describe only +the hardware thermal aspects. The thermal device tree bindings are +not about how the system must control or which algorithm or policy +must be taken in place. + +There are five types of nodes involved to describe thermal bindings: +- thermal sensors: devices which may be used to take temperature +  measurements. +- cooling devices: devices which may be used to dissipate heat. +- trip points: describe key temperatures at which cooling is recommended. The +  set of points should be chosen based on hardware limits. +- cooling maps: used to describe links between trip points and cooling devices; +- thermal zones: used to describe thermal data within the hardware; + +The following is a description of each of these node types. + +* Thermal sensor devices + +Thermal sensor devices are nodes providing temperature sensing capabilities on +thermal zones. Typical devices are I2C ADC converters and bandgaps. These are +nodes providing temperature data to thermal zones. Thermal sensor devices may +control one or more internal sensors. + +Required property: +- #thermal-sensor-cells: Used to provide sensor device specific information +  Type: unsigned	 while referring to it. Typically 0 on thermal sensor +  Size: one cell	 nodes with only one sensor, and at least 1 on nodes +			 with several internal sensors, in order +			 to identify uniquely the sensor instances within +			 the IC. See thermal zone binding for more details +			 on how consumers refer to sensor devices. + +* Cooling device nodes + +Cooling devices are nodes providing control on power dissipation. There +are essentially two ways to provide control on power dissipation. First +is by means of regulating device performance, which is known as passive +cooling. A typical passive cooling is a CPU that has dynamic voltage and +frequency scaling (DVFS), and uses lower frequencies as cooling states. +Second is by means of activating devices in order to remove +the dissipated heat, which is known as active cooling, e.g. regulating +fan speeds. In both cases, cooling devices shall have a way to determine +the state of cooling in which the device is. + +Any cooling device has a range of cooling states (i.e. different levels +of heat dissipation). For example a fan's cooling states correspond to +the different fan speeds possible. Cooling states are referred to by +single unsigned integers, where larger numbers mean greater heat +dissipation. The precise set of cooling states associated with a device +(as referred to be the cooling-min-state and cooling-max-state +properties) should be defined in a particular device's binding. +For more examples of cooling devices, refer to the example sections below. + +Required properties: +- cooling-min-state:	An integer indicating the smallest +  Type: unsigned	cooling state accepted. Typically 0. +  Size: one cell + +- cooling-max-state:	An integer indicating the largest +  Type: unsigned	cooling state accepted. +  Size: one cell + +- #cooling-cells:	Used to provide cooling device specific information +  Type: unsigned	while referring to it. Must be at least 2, in order +  Size: one cell      	to specify minimum and maximum cooling state used +			in the reference. The first cell is the minimum +			cooling state requested and the second cell is +			the maximum cooling state requested in the reference. +			See Cooling device maps section below for more details +			on how consumers refer to cooling devices. + +* Trip points + +The trip node is a node to describe a point in the temperature domain +in which the system takes an action. This node describes just the point, +not the action. + +Required properties: +- temperature:		An integer indicating the trip temperature level, +  Type: signed		in millicelsius. +  Size: one cell + +- hysteresis:		A low hysteresis value on temperature property (above). +  Type: unsigned	This is a relative value, in millicelsius. +  Size: one cell + +- type:			a string containing the trip type. Expected values are: +	"active":	A trip point to enable active cooling +	"passive":	A trip point to enable passive cooling +	"hot":		A trip point to notify emergency +	"critical":	Hardware not reliable. +  Type: string + +* Cooling device maps + +The cooling device maps node is a node to describe how cooling devices +get assigned to trip points of the zone. The cooling devices are expected +to be loaded in the target system. + +Required properties: +- cooling-device:	A phandle of a cooling device with its specifier, +  Type: phandle +	referring to which cooling device is used in this +    cooling specifier	binding. In the cooling specifier, the first cell +			is the minimum cooling state and the second cell +			is the maximum cooling state used in this map. +- trip:			A phandle of a trip point node within the same thermal +  Type: phandle of	zone. +   trip point node + +Optional property: +- contribution:		The cooling contribution to the thermal zone of the +  Type: unsigned	referred cooling device at the referred trip point. +  Size: one cell      	The contribution is a ratio of the sum +			of all cooling contributions within a thermal zone. + +Note: Using the THERMAL_NO_LIMIT (-1UL) constant in the cooling-device phandle +limit specifier means: +(i)   - minimum state allowed for minimum cooling state used in the reference. +(ii)  - maximum state allowed for maximum cooling state used in the reference. +Refer to include/dt-bindings/thermal/thermal.h for definition of this constant. + +* Thermal zone nodes + +The thermal zone node is the node containing all the required info +for describing a thermal zone, including its cooling device bindings. The +thermal zone node must contain, apart from its own properties, one sub-node +containing trip nodes and one sub-node containing all the zone cooling maps. + +Required properties: +- polling-delay:	The maximum number of milliseconds to wait between polls +  Type: unsigned	when checking this thermal zone. +  Size: one cell + +- polling-delay-passive: The maximum number of milliseconds to wait +  Type: unsigned	between polls when performing passive cooling. +  Size: one cell + +- thermal-sensors:	A list of thermal sensor phandles and sensor specifier +  Type: list of 	used while monitoring the thermal zone. +  phandles + sensor +  specifier + +- trips:		A sub-node which is a container of only trip point nodes +  Type: sub-node	required to describe the thermal zone. + +- cooling-maps:		A sub-node which is a container of only cooling device +  Type: sub-node	map nodes, used to describe the relation between trips +			and cooling devices. + +Optional property: +- coefficients:		An array of integers (one signed cell) containing +  Type: array		coefficients to compose a linear relation between +  Elem size: one cell	the sensors listed in the thermal-sensors property. +  Elem type: signed	Coefficients defaults to 1, in case this property +			is not specified. A simple linear polynomial is used: +			Z = c0 * x0 + c1 + x1 + ... + c(n-1) * x(n-1) + cn. + +			The coefficients are ordered and they match with sensors +			by means of sensor ID. Additional coefficients are +			interpreted as constant offset. + +Note: The delay properties are bound to the maximum dT/dt (temperature +derivative over time) in two situations for a thermal zone: +(i)  - when passive cooling is activated (polling-delay-passive); and +(ii) - when the zone just needs to be monitored (polling-delay) or +when active cooling is activated. + +The maximum dT/dt is highly bound to hardware power consumption and dissipation +capability. The delays should be chosen to account for said max dT/dt, +such that a device does not cross several trip boundaries unexpectedly +between polls. Choosing the right polling delays shall avoid having the +device in temperature ranges that may damage the silicon structures and +reduce silicon lifetime. + +* The thermal-zones node + +The "thermal-zones" node is a container for all thermal zone nodes. It shall +contain only sub-nodes describing thermal zones as in the section +"Thermal zone nodes". The "thermal-zones" node appears under "/". + +* Examples + +Below are several examples on how to use thermal data descriptors +using device tree bindings: + +(a) - CPU thermal zone + +The CPU thermal zone example below describes how to setup one thermal zone +using one single sensor as temperature source and many cooling devices and +power dissipation control sources. + +#include <dt-bindings/thermal/thermal.h> + +cpus { +	/* +	 * Here is an example of describing a cooling device for a DVFS +	 * capable CPU. The CPU node describes its four OPPs. +	 * The cooling states possible are 0..3, and they are +	 * used as OPP indexes. The minimum cooling state is 0, which means +	 * all four OPPs can be available to the system. The maximum +	 * cooling state is 3, which means only the lowest OPPs (198MHz@0.85V) +	 * can be available in the system. +	 */ +	cpu0: cpu@0 { +		... +		operating-points = < +			/* kHz    uV */ +			970000  1200000 +			792000  1100000 +			396000  950000 +			198000  850000 +		>; +		cooling-min-state = <0>; +		cooling-max-state = <3>; +		#cooling-cells = <2>; /* min followed by max */ +	}; +	... +}; + +&i2c1 { +	... +	/* +	 * A simple fan controller which supports 10 speeds of operation +	 * (represented as 0-9). +	 */ +	fan0: fan@0x48 { +		... +		cooling-min-state = <0>; +		cooling-max-state = <9>; +		#cooling-cells = <2>; /* min followed by max */ +	}; +}; + +ocp { +	... +	/* +	 * A simple IC with a single bandgap temperature sensor. +	 */ +	bandgap0: bandgap@0x0000ED00 { +		... +		#thermal-sensor-cells = <0>; +	}; +}; + +thermal-zones { +	cpu-thermal: cpu-thermal { +		polling-delay-passive = <250>; /* milliseconds */ +		polling-delay = <1000>; /* milliseconds */ + +		thermal-sensors = <&bandgap0>; + +		trips { +			cpu-alert0: cpu-alert { +				temperature = <90000>; /* millicelsius */ +				hysteresis = <2000>; /* millicelsius */ +				type = "active"; +			}; +			cpu-alert1: cpu-alert { +				temperature = <100000>; /* millicelsius */ +				hysteresis = <2000>; /* millicelsius */ +				type = "passive"; +			}; +			cpu-crit: cpu-crit { +				temperature = <125000>; /* millicelsius */ +				hysteresis = <2000>; /* millicelsius */ +				type = "critical"; +			}; +		}; + +		cooling-maps { +			map0 { +				trip = <&cpu-alert0>; +				cooling-device = <&fan0 THERMAL_NO_LIMITS 4>; +			}; +			map1 { +				trip = <&cpu-alert1>; +				cooling-device = <&fan0 5 THERMAL_NO_LIMITS>; +			}; +			map2 { +				trip = <&cpu-alert1>; +				cooling-device = +				    <&cpu0 THERMAL_NO_LIMITS THERMAL_NO_LIMITS>; +			}; +		}; +	}; +}; + +In the example above, the ADC sensor (bandgap0) at address 0x0000ED00 is +used to monitor the zone 'cpu-thermal' using its sole sensor. A fan +device (fan0) is controlled via I2C bus 1, at address 0x48, and has ten +different cooling states 0-9. It is used to remove the heat out of +the thermal zone 'cpu-thermal' using its cooling states +from its minimum to 4, when it reaches trip point 'cpu-alert0' +at 90C, as an example of active cooling. The same cooling device is used at +'cpu-alert1', but from 5 to its maximum state. The cpu@0 device is also +linked to the same thermal zone, 'cpu-thermal', as a passive cooling device, +using all its cooling states at trip point 'cpu-alert1', +which is a trip point at 100C. On the thermal zone 'cpu-thermal', at the +temperature of 125C, represented by the trip point 'cpu-crit', the silicon +is not reliable anymore. + +(b) - IC with several internal sensors + +The example below describes how to deploy several thermal zones based off a +single sensor IC, assuming it has several internal sensors. This is a common +case on SoC designs with several internal IPs that may need different thermal +requirements, and thus may have their own sensor to monitor or detect internal +hotspots in their silicon. + +#include <dt-bindings/thermal/thermal.h> + +ocp { +	... +	/* +	 * A simple IC with several bandgap temperature sensors. +	 */ +	bandgap0: bandgap@0x0000ED00 { +		... +		#thermal-sensor-cells = <1>; +	}; +}; + +thermal-zones { +	cpu-thermal: cpu-thermal { +		polling-delay-passive = <250>; /* milliseconds */ +		polling-delay = <1000>; /* milliseconds */ + +				/* sensor       ID */ +		thermal-sensors = <&bandgap0     0>; + +		trips { +			/* each zone within the SoC may have its own trips */ +			cpu-alert: cpu-alert { +				temperature = <100000>; /* millicelsius */ +				hysteresis = <2000>; /* millicelsius */ +				type = "passive"; +			}; +			cpu-crit: cpu-crit { +				temperature = <125000>; /* millicelsius */ +				hysteresis = <2000>; /* millicelsius */ +				type = "critical"; +			}; +		}; + +		cooling-maps { +			/* each zone within the SoC may have its own cooling */ +			... +		}; +	}; + +	gpu-thermal: gpu-thermal { +		polling-delay-passive = <120>; /* milliseconds */ +		polling-delay = <1000>; /* milliseconds */ + +				/* sensor       ID */ +		thermal-sensors = <&bandgap0     1>; + +		trips { +			/* each zone within the SoC may have its own trips */ +			gpu-alert: gpu-alert { +				temperature = <90000>; /* millicelsius */ +				hysteresis = <2000>; /* millicelsius */ +				type = "passive"; +			}; +			gpu-crit: gpu-crit { +				temperature = <105000>; /* millicelsius */ +				hysteresis = <2000>; /* millicelsius */ +				type = "critical"; +			}; +		}; + +		cooling-maps { +			/* each zone within the SoC may have its own cooling */ +			... +		}; +	}; + +	dsp-thermal: dsp-thermal { +		polling-delay-passive = <50>; /* milliseconds */ +		polling-delay = <1000>; /* milliseconds */ + +				/* sensor       ID */ +		thermal-sensors = <&bandgap0     2>; + +		trips { +			/* each zone within the SoC may have its own trips */ +			dsp-alert: gpu-alert { +				temperature = <90000>; /* millicelsius */ +				hysteresis = <2000>; /* millicelsius */ +				type = "passive"; +			}; +			dsp-crit: gpu-crit { +				temperature = <135000>; /* millicelsius */ +				hysteresis = <2000>; /* millicelsius */ +				type = "critical"; +			}; +		}; + +		cooling-maps { +			/* each zone within the SoC may have its own cooling */ +			... +		}; +	}; +}; + +In the example above, there is one bandgap IC which has the capability to +monitor three sensors. The hardware has been designed so that sensors are +placed on different places in the DIE to monitor different temperature +hotspots: one for CPU thermal zone, one for GPU thermal zone and the +other to monitor a DSP thermal zone. + +Thus, there is a need to assign each sensor provided by the bandgap IC +to different thermal zones. This is achieved by means of using the +#thermal-sensor-cells property and using the first cell of the sensor +specifier as sensor ID. In the example, then, <bandgap 0> is used to +monitor CPU thermal zone, <bandgap 1> is used to monitor GPU thermal +zone and <bandgap 2> is used to monitor DSP thermal zone. Each zone +may be uncorrelated, having its own dT/dt requirements, trips +and cooling maps. + + +(c) - Several sensors within one single thermal zone + +The example below illustrates how to use more than one sensor within +one thermal zone. + +#include <dt-bindings/thermal/thermal.h> + +&i2c1 { +	... +	/* +	 * A simple IC with a single temperature sensor. +	 */ +	adc: sensor@0x49 { +		... +		#thermal-sensor-cells = <0>; +	}; +}; + +ocp { +	... +	/* +	 * A simple IC with a single bandgap temperature sensor. +	 */ +	bandgap0: bandgap@0x0000ED00 { +		... +		#thermal-sensor-cells = <0>; +	}; +}; + +thermal-zones { +	cpu-thermal: cpu-thermal { +		polling-delay-passive = <250>; /* milliseconds */ +		polling-delay = <1000>; /* milliseconds */ + +		thermal-sensors = <&bandgap0>,	/* cpu */ +				  <&adc>;	/* pcb north */ + +		/* hotspot = 100 * bandgap - 120 * adc + 484 */ +		coefficients = 		<100	-120	484>; + +		trips { +			... +		}; + +		cooling-maps { +			... +		}; +	}; +}; + +In some cases, there is a need to use more than one sensor to extrapolate +a thermal hotspot in the silicon. The above example illustrates this situation. +For instance, it may be the case that a sensor external to CPU IP may be placed +close to CPU hotspot and together with internal CPU sensor, it is used +to determine the hotspot. Assuming this is the case for the above example, +the hypothetical extrapolation rule would be: +		hotspot = 100 * bandgap - 120 * adc + 484 + +In other context, the same idea can be used to add fixed offset. For instance, +consider the hotspot extrapolation rule below: +		hotspot = 1 * adc + 6000 + +In the above equation, the hotspot is always 6C higher than what is read +from the ADC sensor. The binding would be then: +        thermal-sensors =  <&adc>; + +		/* hotspot = 1 * adc + 6000 */ +	coefficients = 		<1	6000>; + +(d) - Board thermal + +The board thermal example below illustrates how to setup one thermal zone +with many sensors and many cooling devices. + +#include <dt-bindings/thermal/thermal.h> + +&i2c1 { +	... +	/* +	 * An IC with several temperature sensor. +	 */ +	adc-dummy: sensor@0x50 { +		... +		#thermal-sensor-cells = <1>; /* sensor internal ID */ +	}; +}; + +thermal-zones { +	batt-thermal { +		polling-delay-passive = <500>; /* milliseconds */ +		polling-delay = <2500>; /* milliseconds */ + +				/* sensor       ID */ +		thermal-sensors = <&adc-dummy     4>; + +		trips { +			... +		}; + +		cooling-maps { +			... +		}; +	}; + +	board-thermal: board-thermal { +		polling-delay-passive = <1000>; /* milliseconds */ +		polling-delay = <2500>; /* milliseconds */ + +				/* sensor       ID */ +		thermal-sensors = <&adc-dummy     0>, /* pcb top edge */ +				  <&adc-dummy     1>, /* lcd */ +				  <&adc-dymmy     2>; /* back cover */ +		/* +		 * An array of coefficients describing the sensor +		 * linear relation. E.g.: +		 * z = c1*x1 + c2*x2 + c3*x3 +		 */ +		coefficients =		<1200	-345	890>; + +		trips { +			/* Trips are based on resulting linear equation */ +			cpu-trip: cpu-trip { +				temperature = <60000>; /* millicelsius */ +				hysteresis = <2000>; /* millicelsius */ +				type = "passive"; +			}; +			gpu-trip: gpu-trip { +				temperature = <55000>; /* millicelsius */ +				hysteresis = <2000>; /* millicelsius */ +				type = "passive"; +			} +			lcd-trip: lcp-trip { +				temperature = <53000>; /* millicelsius */ +				hysteresis = <2000>; /* millicelsius */ +				type = "passive"; +			}; +			crit-trip: crit-trip { +				temperature = <68000>; /* millicelsius */ +				hysteresis = <2000>; /* millicelsius */ +				type = "critical"; +			}; +		}; + +		cooling-maps { +			map0 { +				trip = <&cpu-trip>; +				cooling-device = <&cpu0 0 2>; +				contribution = <55>; +			}; +			map1 { +				trip = <&gpu-trip>; +				cooling-device = <&gpu0 0 2>; +				contribution = <20>; +			}; +			map2 { +				trip = <&lcd-trip>; +				cooling-device = <&lcd0 5 10>; +				contribution = <15>; +			}; +		}; +	}; +}; + +The above example is a mix of previous examples, a sensor IP with several internal +sensors used to monitor different zones, one of them is composed by several sensors and +with different cooling devices. diff --git a/Documentation/devicetree/bindings/timer/allwinner,sun4i-timer.txt b/Documentation/devicetree/bindings/timer/allwinner,sun4i-timer.txt index 48aeb7884ed..5c2e23574ca 100644 --- a/Documentation/devicetree/bindings/timer/allwinner,sun4i-timer.txt +++ b/Documentation/devicetree/bindings/timer/allwinner,sun4i-timer.txt @@ -2,7 +2,7 @@ Allwinner A1X SoCs Timer Controller  Required properties: -- compatible : should be "allwinner,sun4i-timer" +- compatible : should be "allwinner,sun4i-a10-timer"  - reg : Specifies base physical address and size of the registers.  - interrupts : The interrupt of the first timer  - clocks: phandle to the source clock (usually a 24 MHz fixed clock) @@ -10,7 +10,7 @@ Required properties:  Example:  timer { -	compatible = "allwinner,sun4i-timer"; +	compatible = "allwinner,sun4i-a10-timer";  	reg = <0x01c20c00 0x400>;  	interrupts = <22>;  	clocks = <&osc>; diff --git a/Documentation/devicetree/bindings/timer/allwinner,sun5i-a13-hstimer.txt b/Documentation/devicetree/bindings/timer/allwinner,sun5i-a13-hstimer.txt new file mode 100644 index 00000000000..27cfc7d7ccd --- /dev/null +++ b/Documentation/devicetree/bindings/timer/allwinner,sun5i-a13-hstimer.txt @@ -0,0 +1,26 @@ +Allwinner SoCs High Speed Timer Controller + +Required properties: + +- compatible :	should be "allwinner,sun5i-a13-hstimer" or +		"allwinner,sun7i-a20-hstimer" +- reg : Specifies base physical address and size of the registers. +- interrupts :	The interrupts of these timers (2 for the sun5i IP, 4 for the sun7i +		one) +- clocks: phandle to the source clock (usually the AHB clock) + +Optionnal properties: +- resets: phandle to a reset controller asserting the timer + +Example: + +timer@01c60000 { +	compatible = "allwinner,sun7i-a20-hstimer"; +	reg = <0x01c60000 0x1000>; +	interrupts = <0 51 1>, +		     <0 52 1>, +		     <0 53 1>, +		     <0 54 1>; +	clocks = <&ahb1_gates 19>; +	resets = <&ahb1rst 19>; +}; diff --git a/Documentation/devicetree/bindings/timer/energymicro,efm32-timer.txt b/Documentation/devicetree/bindings/timer/energymicro,efm32-timer.txt new file mode 100644 index 00000000000..e502c11b221 --- /dev/null +++ b/Documentation/devicetree/bindings/timer/energymicro,efm32-timer.txt @@ -0,0 +1,23 @@ +* EFM32 timer hardware + +The efm32 Giant Gecko SoCs come with four 16 bit timers. Two counters can be +connected to form a 32 bit counter. Each timer has three Compare/Capture +channels and can be used as PWM or Quadrature Decoder. Available clock sources +are the cpu's HFPERCLK (with a 10-bit prescaler) or an external pin. + +Required properties: +- compatible : Should be "energymicro,efm32-timer" +- reg : Address and length of the register set +- clocks : Should contain a reference to the HFPERCLK + +Optional properties: +- interrupts : Reference to the timer interrupt + +Example: + +timer@40010c00 { +	compatible = "energymicro,efm32-timer"; +	reg = <0x40010c00 0x400>; +	interrupts = <14>; +	clocks = <&cmu clk_HFPERCLKTIMER3>; +}; diff --git a/Documentation/devicetree/bindings/timer/fsl,ftm-timer.txt b/Documentation/devicetree/bindings/timer/fsl,ftm-timer.txt new file mode 100644 index 00000000000..aa8c40230e5 --- /dev/null +++ b/Documentation/devicetree/bindings/timer/fsl,ftm-timer.txt @@ -0,0 +1,31 @@ +Freescale FlexTimer Module (FTM) Timer + +Required properties: + +- compatible : should be "fsl,ftm-timer" +- reg : Specifies base physical address and size of the register sets for the +  clock event device and clock source device. +- interrupts : Should be the clock event device interrupt. +- clocks : The clocks provided by the SoC to drive the timer, must contain an +  entry for each entry in clock-names. +- clock-names : Must include the following entries: +  o "ftm-evt" +  o "ftm-src" +  o "ftm-evt-counter-en" +  o "ftm-src-counter-en" +- big-endian: One boolean property, the big endian mode will be in use if it is +  present, or the little endian mode will be in use for all the device registers. + +Example: +ftm: ftm@400b8000 { +	compatible = "fsl,ftm-timer"; +	reg = <0x400b8000 0x1000 0x400b9000 0x1000>; +	interrupts = <0 44 IRQ_TYPE_LEVEL_HIGH>; +	clock-names = "ftm-evt", "ftm-src", +		"ftm-evt-counter-en", "ftm-src-counter-en"; +	clocks = <&clks VF610_CLK_FTM2>, +		<&clks VF610_CLK_FTM3>, +		<&clks VF610_CLK_FTM2_EXT_FIX_EN>, +		<&clks VF610_CLK_FTM3_EXT_FIX_EN>; +	big-endian; +}; diff --git a/Documentation/devicetree/bindings/timer/nvidia,tegra20-timer.txt b/Documentation/devicetree/bindings/timer/nvidia,tegra20-timer.txt index e019fdc3877..4a864bd10d3 100644 --- a/Documentation/devicetree/bindings/timer/nvidia,tegra20-timer.txt +++ b/Documentation/devicetree/bindings/timer/nvidia,tegra20-timer.txt @@ -8,6 +8,8 @@ Required properties:  - compatible : should be "nvidia,tegra20-timer".  - reg : Specifies base physical address and size of the registers.  - interrupts : A list of 4 interrupts; one per timer channel. +- clocks : Must contain one entry, for the module clock. +  See ../clocks/clock-bindings.txt for details.  Example: @@ -18,4 +20,5 @@ timer {  			0 1 0x04  			0 41 0x04  			0 42 0x04>; +	clocks = <&tegra_car 132>;  }; diff --git a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt index 906109d4c59..b5082a1cf46 100644 --- a/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt +++ b/Documentation/devicetree/bindings/timer/nvidia,tegra30-timer.txt @@ -10,6 +10,8 @@ Required properties:  - reg : Specifies base physical address and size of the registers.  - interrupts : A list of 6 interrupts; one per each of timer channels 1      through 5, and one for the shared interrupt for the remaining channels. +- clocks : Must contain one entry, for the module clock. +  See ../clocks/clock-bindings.txt for details.  timer {  	compatible = "nvidia,tegra30-timer", "nvidia,tegra20-timer"; @@ -20,4 +22,5 @@ timer {  		      0 42 0x04  		      0 121 0x04  		      0 122 0x04>; +	clocks = <&tegra_car 214>;  }; diff --git a/Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt b/Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt index b5a86d20ee3..167d5dab9f6 100644 --- a/Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt +++ b/Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt @@ -31,38 +31,58 @@ Required properties:  	7: ..  	i: Local Timer Interrupt n -Example 1: In this example, the system uses only the first global timer -	   interrupt generated by MCT and the remaining three global timer -	   interrupts are unused. Two local timer interrupts have been -	   specified. +  For MCT block that uses a per-processor interrupt for local timers, such +  as ones compatible with "samsung,exynos4412-mct", only one local timer +  interrupt might be specified, meaning that all local timers use the same +  per processor interrupt. + +Example 1: In this example, the IP contains two local timers, using separate +	   interrupts, so two local timer interrupts have been specified, +	   in addition to four global timer interrupts.  	mct@10050000 {  		compatible = "samsung,exynos4210-mct";  		reg = <0x10050000 0x800>; -		interrupts = <0 57 0>, <0 0 0>, <0 0 0>, <0 0 0>, +		interrupts = <0 57 0>, <0 69 0>, <0 70 0>, <0 71 0>,  			     <0 42 0>, <0 48 0>;  	}; -Example 2: In this example, the MCT global and local timer interrupts are -	   connected to two separate interrupt controllers. Hence, an -	   interrupt-map is created to map the interrupts to the respective -	   interrupt controllers. +Example 2: In this example, the timer interrupts are connected to two separate +	   interrupt controllers. Hence, an interrupt-map is created to map +	   the interrupts to the respective interrupt controllers.  	mct@101C0000 {  		compatible = "samsung,exynos4210-mct";  		reg = <0x101C0000 0x800>; -		interrupt-controller; -		#interrups-cells = <2>;  		interrupt-parent = <&mct_map>; -		interrupts = <0 0>, <1 0>, <2 0>, <3 0>, -			     <4 0>, <5 0>; +		interrupts = <0>, <1>, <2>, <3>, <4>, <5>;  		mct_map: mct-map { -			#interrupt-cells = <2>; +			#interrupt-cells = <1>;  			#address-cells = <0>;  			#size-cells = <0>; -			interrupt-map = <0x0 0 &combiner 23 3>, -					<0x4 0 &gic 0 120 0>, -					<0x5 0 &gic 0 121 0>; +			interrupt-map = <0 &gic 0 57 0>, +					<1 &gic 0 69 0>, +					<2 &combiner 12 6>, +					<3 &combiner 12 7>, +					<4 &gic 0 42 0>, +					<5 &gic 0 48 0>;  		};  	}; + +Example 3: In this example, the IP contains four local timers, but using +	   a per-processor interrupt to handle them. Either all the local +	   timer interrupts can be specified, with the same interrupt specifier +	   value or just the first one. + +	mct@10050000 { +		compatible = "samsung,exynos4412-mct"; +		reg = <0x10050000 0x800>; + +		/* Both ways are possible in this case. Either: */ +		interrupts = <0 57 0>, <0 69 0>, <0 70 0>, <0 71 0>, +			     <0 42 0>; +		/* or: */ +		interrupts = <0 57 0>, <0 69 0>, <0 70 0>, <0 71 0>, +			     <0 42 0>, <0 42 0>, <0 42 0>, <0 42 0>; +	}; diff --git a/Documentation/devicetree/bindings/timer/ti,keystone-timer.txt b/Documentation/devicetree/bindings/timer/ti,keystone-timer.txt new file mode 100644 index 00000000000..5fbe361252b --- /dev/null +++ b/Documentation/devicetree/bindings/timer/ti,keystone-timer.txt @@ -0,0 +1,29 @@ +* Device tree bindings for Texas instruments Keystone timer + +This document provides bindings for the 64-bit timer in the KeyStone +architecture devices. The timer can be configured as a general-purpose 64-bit +timer, dual general-purpose 32-bit timers. When configured as dual 32-bit +timers, each half can operate in conjunction (chain mode) or independently +(unchained mode) of each other. + +It is global timer is a free running up-counter and can generate interrupt +when the counter reaches preset counter values. + +Documentation: +http://www.ti.com/lit/ug/sprugv5a/sprugv5a.pdf + +Required properties: + +- compatible : should be "ti,keystone-timer". +- reg : specifies base physical address and count of the registers. +- interrupts : interrupt generated by the timer. +- clocks : the clock feeding the timer clock. + +Example: + +timer@22f0000 { +	compatible = "ti,keystone-timer"; +	reg = <0x022f0000 0x80>; +	interrupts = <GIC_SPI 110 IRQ_TYPE_EDGE_RISING>; +	clocks = <&clktimer15>; +}; diff --git a/Documentation/devicetree/bindings/usb/atmel-usb.txt b/Documentation/devicetree/bindings/usb/atmel-usb.txt index 55f51af08bc..bc2222ca3f2 100644 --- a/Documentation/devicetree/bindings/usb/atmel-usb.txt +++ b/Documentation/devicetree/bindings/usb/atmel-usb.txt @@ -57,8 +57,8 @@ Required properties:   - ep childnode: To specify the number of endpoints and their properties.  Optional properties: - - atmel,vbus-gpio: If present, specifies a gpio that needs to be -   activated for the bus to be powered. + - atmel,vbus-gpio: If present, specifies a gpio that allows to detect whether +   vbus is present (USB is connected).  Required child node properties:   - name: Name of the endpoint. diff --git a/Documentation/devicetree/bindings/usb/ci13xxx-imx.txt b/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt index b4b5b7906c8..a6a32cb7f77 100644 --- a/Documentation/devicetree/bindings/usb/ci13xxx-imx.txt +++ b/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt @@ -18,6 +18,7 @@ Optional properties:  - vbus-supply: regulator for vbus  - disable-over-current: disable over current detect  - external-vbus-divider: enables off-chip resistor divider for Vbus +- maximum-speed: limit the maximum connection speed to "full-speed".  Examples:  usb@02184000 { /* USB OTG */ @@ -28,4 +29,5 @@ usb@02184000 { /* USB OTG */  	fsl,usbmisc = <&usbmisc 0>;  	disable-over-current;  	external-vbus-divider; +	maximum-speed = "full-speed";  }; diff --git a/Documentation/devicetree/bindings/usb/ci-hdrc-qcom.txt b/Documentation/devicetree/bindings/usb/ci-hdrc-qcom.txt new file mode 100644 index 00000000000..f2899b55093 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/ci-hdrc-qcom.txt @@ -0,0 +1,17 @@ +Qualcomm CI13xxx (Chipidea) USB controllers + +Required properties: +- compatible:   should contain "qcom,ci-hdrc" +- reg:          offset and length of the register set in the memory map +- interrupts:   interrupt-specifier for the controller interrupt. +- usb-phy:      phandle for the PHY device +- dr_mode:      Should be "peripheral" + +Examples: +	gadget@f9a55000 { +		compatible = "qcom,ci-hdrc"; +		reg = <0xf9a55000 0x400>; +		dr_mode = "peripheral"; +		interrupts = <0 134 0>; +		usb-phy = <&usbphy0>; +	}; diff --git a/Documentation/devicetree/bindings/usb/ci-hdrc-zevio.txt b/Documentation/devicetree/bindings/usb/ci-hdrc-zevio.txt new file mode 100644 index 00000000000..abbcb2aea38 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/ci-hdrc-zevio.txt @@ -0,0 +1,17 @@ +* LSI Zevio USB OTG Controller + +Required properties: +- compatible: Should be "lsi,zevio-usb" +- reg: Should contain registers location and length +- interrupts: Should contain controller interrupt + +Optional properties: +- vbus-supply: regulator for vbus + +Examples: +		usb0: usb@b0000000 { +			reg = <0xb0000000 0x1000>; +			compatible = "lsi,zevio-usb"; +			interrupts = <8>; +			vbus-supply = <&vbus_reg>; +		}; diff --git a/Documentation/devicetree/bindings/usb/dwc2.txt b/Documentation/devicetree/bindings/usb/dwc2.txt new file mode 100644 index 00000000000..467ddd15d40 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/dwc2.txt @@ -0,0 +1,29 @@ +Platform DesignWare HS OTG USB 2.0 controller +----------------------------------------------------- + +Required properties: +- compatible : One of: +  - brcm,bcm2835-usb: The DWC2 USB controller instance in the BCM2835 SoC. +  - snps,dwc2: A generic DWC2 USB controller with default parameters. +- reg : Should contain 1 register range (address and length) +- interrupts : Should contain 1 interrupt +- clocks: clock provider specifier +- clock-names: shall be "otg" +Refer to clk/clock-bindings.txt for generic clock consumer properties + +Optional properties: +- phys: phy provider specifier +- phy-names: shall be "usb2-phy" +Refer to phy/phy-bindings.txt for generic phy consumer properties + +Example: + +        usb@101c0000 { +                compatible = "ralink,rt3050-usb, snps,dwc2"; +                reg = <0x101c0000 40000>; +                interrupts = <18>; +		clocks = <&usb_otg_ahb_clk>; +		clock-names = "otg"; +		phys = <&usbphy>; +		phy-names = "usb2-phy"; +        }; diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt index e807635f9e1..471366d6a12 100644 --- a/Documentation/devicetree/bindings/usb/dwc3.txt +++ b/Documentation/devicetree/bindings/usb/dwc3.txt @@ -6,11 +6,13 @@ Required properties:   - compatible: must be "snps,dwc3"   - reg : Address and length of the register set for the device   - interrupts: Interrupts used by the dwc3 controller. + +Optional properties:   - usb-phy : array of phandle for the PHY device.  The first element     in the array is expected to be a handle to the USB2/HS PHY and     the second element is expected to be a handle to the USB3/SS PHY - -Optional properties: + - phys: from the *Generic PHY* bindings + - phy-names: from the *Generic PHY* bindings   - tx-fifo-resize: determines if the FIFO *has* to be reallocated.  This is usually a subnode to DWC3 glue to which it is connected. diff --git a/Documentation/devicetree/bindings/usb/ehci-omap.txt b/Documentation/devicetree/bindings/usb/ehci-omap.txt index 485a9a1efa7..3dc231c832b 100644 --- a/Documentation/devicetree/bindings/usb/ehci-omap.txt +++ b/Documentation/devicetree/bindings/usb/ehci-omap.txt @@ -21,7 +21,7 @@ Documentation/devicetree/bindings/mfd/omap-usb-host.txt  Example for OMAP4:  usbhsehci: ehci@4a064c00 { -	compatible = "ti,ehci-omap", "usb-ehci"; +	compatible = "ti,ehci-omap";  	reg = <0x4a064c00 0x400>;  	interrupts = <0 77 0x4>;  }; diff --git a/Documentation/devicetree/bindings/usb/ehci-orion.txt b/Documentation/devicetree/bindings/usb/ehci-orion.txt index 6bc09ec14c4..17c3bc858b8 100644 --- a/Documentation/devicetree/bindings/usb/ehci-orion.txt +++ b/Documentation/devicetree/bindings/usb/ehci-orion.txt @@ -6,6 +6,11 @@ Required properties:    region.  - interrupts: The EHCI interrupt +Optional properties: +- clocks: reference to the clock +- phys: reference to the USB PHY +- phy-names: name of the USB PHY, should be "usb" +  Example:  	ehci@50000 { diff --git a/Documentation/devicetree/bindings/usb/exynos-usb.txt b/Documentation/devicetree/bindings/usb/exynos-usb.txt index d967ba16de6..a3b5990d0f2 100644 --- a/Documentation/devicetree/bindings/usb/exynos-usb.txt +++ b/Documentation/devicetree/bindings/usb/exynos-usb.txt @@ -12,6 +12,13 @@ Required properties:   - interrupts: interrupt number to the cpu.   - clocks: from common clock binding: handle to usb clock.   - clock-names: from common clock binding: Shall be "usbhost". + - port: if in the SoC there are EHCI phys, they should be listed here. +   One phy per port. Each port should have following entries: +	- reg: port number on EHCI controller, e.g +	       On Exynos5250, port 0 is USB2.0 otg phy +			      port 1 is HSIC phy0 +			      port 2 is HSIC phy1 +	- phys: from the *Generic PHY* bindings; specifying phy used by port.  Optional properties:   - samsung,vbus-gpio:  if present, specifies the GPIO that @@ -27,6 +34,14 @@ Example:  		clocks = <&clock 285>;  		clock-names = "usbhost"; + +		#address-cells = <1>; +		#size-cells = <0>; +		port@0 { +		    reg = <0>; +		    phys = <&usb2phy 1>; +		    status = "disabled"; +		};  	};  OHCI @@ -38,6 +53,13 @@ Required properties:   - interrupts: interrupt number to the cpu.   - clocks: from common clock binding: handle to usb clock.   - clock-names: from common clock binding: Shall be "usbhost". + - port: if in the SoC there are OHCI phys, they should be listed here. +   One phy per port. Each port should have following entries: +	- reg: port number on OHCI controller, e.g +	       On Exynos5250, port 0 is USB2.0 otg phy +			      port 1 is HSIC phy0 +			      port 2 is HSIC phy1 +	- phys: from the *Generic PHY* bindings, specifying phy used by port.  Example:  	usb@12120000 { @@ -47,6 +69,15 @@ Example:  		clocks = <&clock 285>;  		clock-names = "usbhost"; + +		#address-cells = <1>; +		#size-cells = <0>; +		port@0 { +		    reg = <0>; +		    phys = <&usb2phy 1>; +		    status = "disabled"; +		}; +  	};  DWC3 diff --git a/Documentation/devicetree/bindings/usb/fsl-usb.txt b/Documentation/devicetree/bindings/usb/fsl-usb.txt index bd5723f0b67..4779c029b67 100644 --- a/Documentation/devicetree/bindings/usb/fsl-usb.txt +++ b/Documentation/devicetree/bindings/usb/fsl-usb.txt @@ -8,7 +8,9 @@ and additions :  Required properties :   - compatible : Should be "fsl-usb2-mph" for multi port host USB     controllers, or "fsl-usb2-dr" for dual role USB controllers -   or "fsl,mpc5121-usb2-dr" for dual role USB controllers of MPC5121 +   or "fsl,mpc5121-usb2-dr" for dual role USB controllers of MPC5121. +   Wherever applicable, the IP version of the USB controller should +   also be mentioned (for eg. fsl-usb2-dr-v2.2 for bsc9132).   - phy_type : For multi port host USB controllers, should be one of     "ulpi", or "serial". For dual role USB controllers, should be     one of "ulpi", "utmi", "utmi_wide", or "serial". diff --git a/Documentation/devicetree/bindings/usb/gr-udc.txt b/Documentation/devicetree/bindings/usb/gr-udc.txt new file mode 100644 index 00000000000..e9445224fab --- /dev/null +++ b/Documentation/devicetree/bindings/usb/gr-udc.txt @@ -0,0 +1,34 @@ +USB Peripheral Controller driver for Aeroflex Gaisler GRUSBDC. + +The GRUSBDC USB Device Controller core is available in the GRLIB VHDL +IP core library. + +Note: In the ordinary environment for the core, a Leon SPARC system, +these properties are built from information in the AMBA plug&play. + +Required properties: + +- name : Should be "GAISLER_USBDC" or "01_021" + +- reg : Address and length of the register set for the device + +- interrupts : Interrupt numbers for this device. Either one interrupt number +	for all interrupts, or one for status related interrupts, one for IN +	endpoint related interrupts and one for OUT endpoint related interrupts. + +Optional properties: + +- epobufsizes : Array of buffer sizes for OUT endpoints when they differ +	from the default size of 1024. The array is indexed by the OUT endpoint +	number. If the property is present it typically contains one entry for +	each OUT endpoint of the core. Fewer entries overrides the default sizes +	only for as many endpoints as the array contains. + +- epibufsizes : Array of buffer sizes for IN endpoints when they differ +	from the default size of 1024. The array is indexed by the IN endpoint +	number. If the property is present it typically contains one entry for +	each IN endpoint of the core. Fewer entries overrides the default sizes +	only for as many endpoints as the array contains. + +For further information look in the documentation for the GLIB IP core library: +http://www.gaisler.com/products/grlib/grip.pdf diff --git a/Documentation/devicetree/bindings/usb/keystone-phy.txt b/Documentation/devicetree/bindings/usb/keystone-phy.txt new file mode 100644 index 00000000000..f37b3a86341 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/keystone-phy.txt @@ -0,0 +1,20 @@ +TI Keystone USB PHY + +Required properties: + - compatible: should be "ti,keystone-usbphy". + - #address-cells, #size-cells : should be '1' if the device has sub-nodes +   with 'reg' property. + - reg : Address and length of the usb phy control register set. + +The main purpose of this PHY driver is to enable the USB PHY reference clock +gate on the Keystone SOC for both the USB2 and USB3 PHY. Otherwise it is just +an NOP PHY driver.  Hence this node is referenced as both the usb2 and usb3 +phy node in the USB Glue layer driver node. + +usb_phy: usb_phy@2620738 { +	compatible = "ti,keystone-usbphy"; +	#address-cells = <1>; +	#size-cells = <1>; +	reg = <0x2620738 32>; +	status = "disabled"; +}; diff --git a/Documentation/devicetree/bindings/usb/keystone-usb.txt b/Documentation/devicetree/bindings/usb/keystone-usb.txt new file mode 100644 index 00000000000..60527d335b5 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/keystone-usb.txt @@ -0,0 +1,42 @@ +TI Keystone Soc USB Controller + +DWC3 GLUE + +Required properties: + - compatible: should be "ti,keystone-dwc3". + - #address-cells, #size-cells : should be '1' if the device has sub-nodes +   with 'reg' property. + - reg : Address and length of the register set for the USB subsystem on +   the SOC. + - interrupts : The irq number of this device that is used to interrupt the +   MPU. + - ranges: allows valid 1:1 translation between child's address space and +   parent's address space. + - clocks: Clock IDs array as required by the controller. + - clock-names: names of clocks correseponding to IDs in the clock property. + +Sub-nodes: +The dwc3 core should be added as subnode to Keystone DWC3 glue. +- dwc3 : +   The binding details of dwc3 can be found in: +   Documentation/devicetree/bindings/usb/dwc3.txt + +Example: +	usb: usb@2680000 { +		compatible = "ti,keystone-dwc3"; +		#address-cells = <1>; +		#size-cells = <1>; +		reg = <0x2680000 0x10000>; +		clocks = <&clkusb>; +		clock-names = "usb"; +		interrupts = <GIC_SPI 393 IRQ_TYPE_EDGE_RISING>; +		ranges; +		status = "disabled"; + +		dwc3@2690000 { +			compatible = "synopsys,dwc3"; +			reg = <0x2690000 0x70000>; +			interrupts = <GIC_SPI 393 IRQ_TYPE_EDGE_RISING>; +			usb-phy = <&usb_phy>, <&usb_phy>; +		}; +	}; diff --git a/Documentation/devicetree/bindings/usb/msm-hsusb.txt b/Documentation/devicetree/bindings/usb/msm-hsusb.txt new file mode 100644 index 00000000000..2826f2af503 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/msm-hsusb.txt @@ -0,0 +1,95 @@ +MSM SoC HSUSB controllers + +EHCI + +Required properties: +- compatible:	Should contain "qcom,ehci-host" +- regs:			offset and length of the register set in the memory map +- usb-phy:		phandle for the PHY device + +Example EHCI controller device node: + +	ehci: ehci@f9a55000 { +		compatible = "qcom,ehci-host"; +		reg = <0xf9a55000 0x400>; +		usb-phy = <&usb_otg>; +	}; + +USB PHY with optional OTG: + +Required properties: +- compatible:   Should contain: +  "qcom,usb-otg-ci" for chipsets with ChipIdea 45nm PHY +  "qcom,usb-otg-snps" for chipsets with Synopsys 28nm PHY + +- regs:         Offset and length of the register set in the memory map +- interrupts:   interrupt-specifier for the OTG interrupt. + +- clocks:       A list of phandle + clock-specifier pairs for the +                clocks listed in clock-names +- clock-names:  Should contain the following: +  "phy"         USB PHY reference clock +  "core"        Protocol engine clock +  "iface"       Interface bus clock +  "alt_core"    Protocol engine clock for targets with asynchronous +                reset methodology. (optional) + +- vdccx-supply: phandle to the regulator for the vdd supply for +                digital circuit operation. +- v1p8-supply:  phandle to the regulator for the 1.8V supply +- v3p3-supply:  phandle to the regulator for the 3.3V supply + +- resets:       A list of phandle + reset-specifier pairs for the +                resets listed in reset-names +- reset-names:  Should contain the following: +  "phy"         USB PHY controller reset +  "link"        USB LINK controller reset + +- qcom,otg-control: OTG control (VBUS and ID notifications) can be one of +                1 - PHY control +                2 - PMIC control + +Optional properties: +- dr_mode:      One of "host", "peripheral" or "otg". Defaults to "otg" + +- qcom,phy-init-sequence: PHY configuration sequence values. This is related to Device +                Mode Eye Diagram test. Start address at which these values will be +                written is ULPI_EXT_VENDOR_SPECIFIC. Value of -1 is reserved as +                "do not overwrite default value at this address". +                For example: qcom,phy-init-sequence = < -1 0x63 >; +                Will update only value at address ULPI_EXT_VENDOR_SPECIFIC + 1. + +- qcom,phy-num: Select number of pyco-phy to use, can be one of +                0 - PHY one, default +                1 - Second PHY +                Some platforms may have configuration to allow USB +                controller work with any of the two HSPHYs present. + +- qcom,vdd-levels: This property must be a list of three integer values +                (no, min, max) where each value represents either a voltage +                in microvolts or a value corresponding to voltage corner. + +Example HSUSB OTG controller device node: + +    usb@f9a55000 { +        compatible = "qcom,usb-otg-snps"; +        reg = <0xf9a55000 0x400>; +        interrupts = <0 134 0>; +        dr_mode = "peripheral"; + +        clocks = <&gcc GCC_XO_CLK>, <&gcc GCC_USB_HS_SYSTEM_CLK>, +                <&gcc GCC_USB_HS_AHB_CLK>; + +        clock-names = "phy", "core", "iface"; + +        vddcx-supply = <&pm8841_s2_corner>; +        v1p8-supply = <&pm8941_l6>; +        v3p3-supply = <&pm8941_l24>; + +        resets = <&gcc GCC_USB2A_PHY_BCR>, <&gcc GCC_USB_HS_BCR>; +        reset-names = "phy", "link"; + +        qcom,otg-control = <1>; +        qcom,phy-init-sequence = < -1 0x63 >; +        qcom,vdd-levels = <1 5 7>; +	}; diff --git a/Documentation/devicetree/bindings/usb/mxs-phy.txt b/Documentation/devicetree/bindings/usb/mxs-phy.txt index 5835b27146e..cef181a9d8b 100644 --- a/Documentation/devicetree/bindings/usb/mxs-phy.txt +++ b/Documentation/devicetree/bindings/usb/mxs-phy.txt @@ -1,13 +1,19 @@  * Freescale MXS USB Phy Device  Required properties: -- compatible: Should be "fsl,imx23-usbphy" +- compatible: should contain: +	* "fsl,imx23-usbphy" for imx23 and imx28 +	* "fsl,imx6q-usbphy" for imx6dq and imx6dl +	* "fsl,imx6sl-usbphy" for imx6sl +  "fsl,imx23-usbphy" is still a fallback for other strings  - reg: Should contain registers location and length  - interrupts: Should contain phy interrupt +- fsl,anatop: phandle for anatop register, it is only for imx6 SoC series  Example:  usbphy1: usbphy@020c9000 {  	compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy";  	reg = <0x020c9000 0x1000>;  	interrupts = <0 44 0x04>; +	fsl,anatop = <&anatop>;  }; diff --git a/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt b/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt index df0933043a5..3dc9140e3df 100644 --- a/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt +++ b/Documentation/devicetree/bindings/usb/nvidia,tegra20-ehci.txt @@ -8,7 +8,12 @@ and additions :  Required properties :   - compatible : Should be "nvidia,tegra20-ehci".   - nvidia,phy : phandle of the PHY that the controller is connected to. - - clocks : Contains a single entry which defines the USB controller's clock. + - clocks : Must contain one entry, for the module clock. +   See ../clocks/clock-bindings.txt for details. + - resets : Must contain an entry for each entry in reset-names. +   See ../reset/reset.txt for details. + - reset-names : Must include the following entries: +   - usb  Optional properties:   - nvidia,needs-double-reset : boolean is to be set for some of the Tegra20 diff --git a/Documentation/devicetree/bindings/usb/ohci-omap3.txt b/Documentation/devicetree/bindings/usb/ohci-omap3.txt index 14ab42812a8..ce8c47cff6d 100644 --- a/Documentation/devicetree/bindings/usb/ohci-omap3.txt +++ b/Documentation/devicetree/bindings/usb/ohci-omap3.txt @@ -9,7 +9,7 @@ Required properties:  Example for OMAP4:  usbhsohci: ohci@4a064800 { -	compatible = "ti,ohci-omap3", "usb-ohci"; +	compatible = "ti,ohci-omap3";  	reg = <0x4a064800 0x400>;  	interrupts = <0 76 0x4>;  }; diff --git a/Documentation/devicetree/bindings/usb/omap-usb.txt b/Documentation/devicetree/bindings/usb/omap-usb.txt index 9088ab09e20..38d9bb8507c 100644 --- a/Documentation/devicetree/bindings/usb/omap-usb.txt +++ b/Documentation/devicetree/bindings/usb/omap-usb.txt @@ -3,9 +3,6 @@ OMAP GLUE AND OTHER OMAP SPECIFIC COMPONENTS  OMAP MUSB GLUE   - compatible : Should be "ti,omap4-musb" or "ti,omap3-musb"   - ti,hwmods : must be "usb_otg_hs" - - ti,has-mailbox : to specify that omap uses an external mailbox -   (in control module) to communicate with the musb core during device connect -   and disconnect.   - multipoint : Should be "1" indicating the musb controller supports     multipoint. This is a MUSB configuration-specific setting.   - num-eps : Specifies the number of endpoints. This is also a @@ -19,6 +16,9 @@ OMAP MUSB GLUE   - power : Should be "50". This signifies the controller can supply up to     100mA when operating in host mode.   - usb-phy : the phandle for the PHY device + - phys : the phandle for the PHY device (used by generic PHY framework) + - phy-names : the names of the PHY corresponding to the PHYs present in the +   *phy* phandle.  Optional properties:   - ctrl-module : phandle of the control module this glue uses to write to @@ -28,11 +28,12 @@ SOC specific device node entry  usb_otg_hs: usb_otg_hs@4a0ab000 {  	compatible = "ti,omap4-musb";  	ti,hwmods = "usb_otg_hs"; -	ti,has-mailbox;  	multipoint = <1>;  	num-eps = <16>;  	ram-bits = <12>;  	ctrl-module = <&omap_control_usb>; +	phys = <&usb2_phy>; +	phy-names = "usb2-phy";  };  Board specific device node entry @@ -43,7 +44,9 @@ Board specific device node entry  };  OMAP DWC3 GLUE - - compatible : Should be "ti,dwc3" + - compatible : Should be +	* "ti,dwc3" for OMAP5 and DRA7 +	* "ti,am437x-dwc3" for AM437x   - ti,hwmods : Should be "usb_otg_ss"   - reg : Address and length of the register set for the device.   - interrupts : The irq number of this device that is used to interrupt the @@ -75,25 +78,3 @@ omap_dwc3 {  	ranges;  }; -OMAP CONTROL USB - -Required properties: - - compatible: Should be "ti,omap-control-usb" - - reg : Address and length of the register set for the device. It contains -   the address of "control_dev_conf" and "otghs_control" or "phy_power_usb" -   depending upon omap4 or omap5. - - reg-names: The names of the register addresses corresponding to the registers -   filled in "reg". - - ti,type: This is used to differentiate whether the control module has -   usb mailbox or usb3 phy power. omap4 has usb mailbox in control module to -   notify events to the musb core and omap5 has usb3 phy power register to -   power on usb3 phy. Should be "1" if it has mailbox and "2" if it has usb3 -   phy power. - -omap_control_usb: omap-control-usb@4a002300 { -	compatible = "ti,omap-control-usb"; -	reg = <0x4a002300 0x4>, -	      <0x4a00233c 0x4>; -	reg-names = "control_dev_conf", "otghs_control"; -	ti,type = <1>; -}; diff --git a/Documentation/devicetree/bindings/usb/usb-ehci.txt b/Documentation/devicetree/bindings/usb/usb-ehci.txt index fa18612f757..43c1a4e0676 100644 --- a/Documentation/devicetree/bindings/usb/usb-ehci.txt +++ b/Documentation/devicetree/bindings/usb/usb-ehci.txt @@ -1,19 +1,21 @@  USB EHCI controllers  Required properties: -  - compatible : should be "usb-ehci". +  - compatible : should be "generic-ehci".    - reg : should contain at least address and length of the standard EHCI      register set for the device. Optional platform-dependent registers      (debug-port or other) can be also specified here, but only after      definition of standard EHCI registers.    - interrupts : one EHCI interrupt should be described here. -If device registers are implemented in big endian mode, the device -node should have "big-endian-regs" property. -If controller implementation operates with big endian descriptors, -"big-endian-desc" property should be specified. -If both big endian registers and descriptors are used by the controller -implementation, "big-endian" property can be specified instead of having -both "big-endian-regs" and "big-endian-desc". + +Optional properties: + - big-endian-regs : boolean, set this for hcds with big-endian registers + - big-endian-desc : boolean, set this for hcds with big-endian descriptors + - big-endian : boolean, for hcds with big-endian-regs + big-endian-desc + - clocks : a list of phandle + clock specifier pairs + - phys : phandle + phy specifier pair + - phy-names : "usb" + - resets : phandle + reset specifier pair  Example (Sequoia 440EPx):      ehci@e0000300 { @@ -23,3 +25,13 @@ Example (Sequoia 440EPx):  	   reg = <0 e0000300 90 0 e0000390 70>;  	   big-endian;     }; + +Example (Allwinner sun4i A10 SoC): +   ehci0: usb@01c14000 { +	   compatible = "allwinner,sun4i-a10-ehci", "generic-ehci"; +	   reg = <0x01c14000 0x100>; +	   interrupts = <39>; +	   clocks = <&ahb_gates 1>; +	   phys = <&usbphy 1>; +	   phy-names = "usb"; +   }; diff --git a/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt b/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt index d7e272671c7..1bd37faba05 100644 --- a/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt +++ b/Documentation/devicetree/bindings/usb/usb-nop-xceiv.txt @@ -15,7 +15,7 @@ Optional properties:  - vcc-supply: phandle to the regulator that provides RESET to the PHY. -- reset-supply: phandle to the regulator that provides power to the PHY. +- reset-gpios: Should specify the GPIO for reset.  Example: @@ -25,10 +25,9 @@ Example:  		clocks = <&osc 0>;  		clock-names = "main_clk";  		vcc-supply = <&hsusb1_vcc_regulator>; -		reset-supply = <&hsusb1_reset_regulator>; +		reset-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;  	};  hsusb1_phy is a NOP USB PHY device that gets its clock from an oscillator  and expects that clock to be configured to 19.2MHz by the NOP PHY driver. -hsusb1_vcc_regulator provides power to the PHY and hsusb1_reset_regulator -controls RESET. +hsusb1_vcc_regulator provides power to the PHY and GPIO 7 controls RESET. diff --git a/Documentation/devicetree/bindings/usb/usb-ohci.txt b/Documentation/devicetree/bindings/usb/usb-ohci.txt new file mode 100644 index 00000000000..b968a1aea99 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/usb-ohci.txt @@ -0,0 +1,26 @@ +USB OHCI controllers + +Required properties: +- compatible : "generic-ohci" +- reg : ohci controller register range (address and length) +- interrupts : ohci controller interrupt + +Optional properties: +- big-endian-regs : boolean, set this for hcds with big-endian registers +- big-endian-desc : boolean, set this for hcds with big-endian descriptors +- big-endian : boolean, for hcds with big-endian-regs + big-endian-desc +- clocks : a list of phandle + clock specifier pairs +- phys : phandle + phy specifier pair +- phy-names : "usb" +- resets : phandle + reset specifier pair + +Example: + +	ohci0: usb@01c14400 { +		compatible = "allwinner,sun4i-a10-ohci", "generic-ohci"; +		reg = <0x01c14400 0x100>; +		interrupts = <64>; +		clocks = <&usb_clk 6>, <&ahb_gates 2>; +		phys = <&usbphy 1>; +		phy-names = "usb"; +	}; diff --git a/Documentation/devicetree/bindings/usb/usb-phy.txt b/Documentation/devicetree/bindings/usb/usb-phy.txt deleted file mode 100644 index 61496f5cb09..00000000000 --- a/Documentation/devicetree/bindings/usb/usb-phy.txt +++ /dev/null @@ -1,42 +0,0 @@ -USB PHY - -OMAP USB2 PHY - -Required properties: - - compatible: Should be "ti,omap-usb2" - - reg : Address and length of the register set for the device. - -Optional properties: - - ctrl-module : phandle of the control module used by PHY driver to power on -   the PHY. - -This is usually a subnode of ocp2scp to which it is connected. - -usb2phy@4a0ad080 { -	compatible = "ti,omap-usb2"; -	reg = <0x4a0ad080 0x58>; -	ctrl-module = <&omap_control_usb>; -}; - -OMAP USB3 PHY - -Required properties: - - compatible: Should be "ti,omap-usb3" - - reg : Address and length of the register set for the device. - - reg-names: The names of the register addresses corresponding to the registers -   filled in "reg". - -Optional properties: - - ctrl-module : phandle of the control module used by PHY driver to power on -   the PHY. - -This is usually a subnode of ocp2scp to which it is connected. - -usb3phy@4a084400 { -	compatible = "ti,omap-usb3"; -	reg = <0x4a084400 0x80>, -	      <0x4a084800 0x64>, -	      <0x4a084c00 0x40>; -	reg-names = "phy_rx", "phy_tx", "pll_ctrl"; -	ctrl-module = <&omap_control_usb>; -}; diff --git a/Documentation/devicetree/bindings/usb/platform-uhci.txt b/Documentation/devicetree/bindings/usb/usb-uhci.txt index a4fb0719d15..298133416c9 100644 --- a/Documentation/devicetree/bindings/usb/platform-uhci.txt +++ b/Documentation/devicetree/bindings/usb/usb-uhci.txt @@ -2,14 +2,14 @@ Generic Platform UHCI Controller  -----------------------------------------------------  Required properties: -- compatible : "platform-uhci" +- compatible : "generic-uhci" (deprecated: "platform-uhci")  - reg : Should contain 1 register ranges(address and length)  - interrupts : UHCI controller interrupt  Example:  	uhci@d8007b00 { -		compatible = "platform-uhci"; +		compatible = "generic-uhci";  		reg = <0xd8007b00 0x200>;  		interrupts = <43>;  	}; diff --git a/Documentation/devicetree/bindings/usb/usb-xhci.txt b/Documentation/devicetree/bindings/usb/usb-xhci.txt index 5752df0e17a..5a79377c6a9 100644 --- a/Documentation/devicetree/bindings/usb/usb-xhci.txt +++ b/Documentation/devicetree/bindings/usb/usb-xhci.txt @@ -1,14 +1,20 @@  USB xHCI controllers  Required properties: -  - compatible: should be "xhci-platform". +  - compatible: should be one of "generic-xhci", +    "marvell,armada-375-xhci", "marvell,armada-380-xhci", +    "renesas,xhci-r8a7790", "renesas,xhci-r8a7791" (deprecated: +    "xhci-platform").    - reg: should contain address and length of the standard XHCI      register set for the device.    - interrupts: one XHCI interrupt should be described here. +Optional property: +  - clocks: reference to a clock +  Example:  	usb@f0931000 { -		compatible = "xhci-platform"; +		compatible = "generic-xhci";  		reg = <0xf0931000 0x8c8>;  		interrupts = <0x0 0x4e 0x0>;  	}; diff --git a/Documentation/devicetree/bindings/usb/usb3503.txt b/Documentation/devicetree/bindings/usb/usb3503.txt index a018da4a7ad..221ac0dbc67 100644 --- a/Documentation/devicetree/bindings/usb/usb3503.txt +++ b/Documentation/devicetree/bindings/usb/usb3503.txt @@ -15,6 +15,14 @@ Optional properties:  - reset-gpios: Should specify GPIO for reset.  - initial-mode: Should specify initial mode.                  (1 for HUB mode, 2 for STANDBY mode) +- refclk: Clock used for driving REFCLK signal (optional, if not provided +	the driver assumes that clock signal is always available, its +	rate is specified by REF_SEL pins and a value from the primary +	reference clock frequencies table is used) +- refclk-frequency: Frequency of the REFCLK signal as defined by REF_SEL +	pins (optional, if not provided, driver will not set rate of the +	REFCLK signal and assume that a value from the primary reference +	clock frequencies table is used)  Examples:  	usb3503@08 { diff --git a/Documentation/devicetree/bindings/usb/ux500-usb.txt b/Documentation/devicetree/bindings/usb/ux500-usb.txt index 330d6ec1540..439a41c79af 100644 --- a/Documentation/devicetree/bindings/usb/ux500-usb.txt +++ b/Documentation/devicetree/bindings/usb/ux500-usb.txt @@ -15,7 +15,7 @@ Optional properties:  Example:  usb_per5@a03e0000 { -	compatible = "stericsson,db8500-musb", "mentor,musb"; +	compatible = "stericsson,db8500-musb";  	reg = <0xa03e0000 0x10000>;  	interrupts = <0 23 0x4>;  	interrupt-names = "mc"; diff --git a/Documentation/devicetree/bindings/usb/via,vt8500-ehci.txt b/Documentation/devicetree/bindings/usb/via,vt8500-ehci.txt deleted file mode 100644 index 17b3ad1d97e..00000000000 --- a/Documentation/devicetree/bindings/usb/via,vt8500-ehci.txt +++ /dev/null @@ -1,15 +0,0 @@ -VIA/Wondermedia VT8500 EHCI Controller ------------------------------------------------------ - -Required properties: -- compatible : "via,vt8500-ehci" -- reg : Should contain 1 register ranges(address and length) -- interrupts : ehci controller interrupt - -Example: - -	ehci@d8007900 { -		compatible = "via,vt8500-ehci"; -		reg = <0xd8007900 0x200>; -		interrupts = <43>; -	}; diff --git a/Documentation/devicetree/bindings/usb/vt8500-ehci.txt b/Documentation/devicetree/bindings/usb/vt8500-ehci.txt deleted file mode 100644 index 5fb8fd6e250..00000000000 --- a/Documentation/devicetree/bindings/usb/vt8500-ehci.txt +++ /dev/null @@ -1,12 +0,0 @@ -VIA VT8500 and Wondermedia WM8xxx SoC USB controllers. - -Required properties: - - compatible: Should be "via,vt8500-ehci" or "wm,prizm-ehci". - - reg: Address range of the ehci registers. size should be 0x200 - - interrupts: Should contain the ehci interrupt. - -usb: ehci@D8007100 { -	compatible = "wm,prizm-ehci", "usb-ehci"; -	reg = <0xD8007100 0x200>; -	interrupts = <1>; -}; diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt index 2956800f024..46a311e728a 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.txt +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt @@ -3,73 +3,144 @@ Device tree binding vendor prefix registry.  Keep list in alphabetical order.  This isn't an exhaustive list, but you should add new prefixes to it before  using them to avoid name-space collisions. +abilis	Abilis Systems +active-semi	Active-Semi International Inc  ad	Avionic Design GmbH  adi	Analog Devices, Inc.  aeroflexgaisler	Aeroflex Gaisler AB  ak	Asahi Kasei Corp. +allwinner	Allwinner Technology Co., Ltd.  altr	Altera Corp.  amcc	Applied Micro Circuits Corporation (APM, formally AMCC) +amd	Advanced Micro Devices (AMD), Inc. +ams	AMS AG +amstaos	AMS-Taos Inc.  apm	Applied Micro Circuits Corporation (APM)  arm	ARM Ltd. +armadeus	ARMadeus Systems SARL  atmel	Atmel Corporation +auo	AU Optronics Corporation  avago	Avago Technologies  bosch	Bosch Sensortec GmbH  brcm	Broadcom Corporation +buffalo	Buffalo, Inc. +calxeda	Calxeda +capella	Capella Microsystems, Inc  cavium	Cavium, Inc. +cdns	Cadence Design Systems Inc.  chrp	Common Hardware Reference Platform +chunghwa	Chunghwa Picture Tubes Ltd.  cirrus	Cirrus Logic, Inc.  cortina	Cortina Systems, Inc. +crystalfontz	Crystalfontz America, Inc.  dallas	Maxim Integrated Products (formerly Dallas Semiconductor)  davicom	DAVICOM Semiconductor, Inc.  denx	Denx Software Engineering +digi	Digi International Inc. +dlink	D-Link Corporation +dmo	Data Modul AG +ebv	EBV Elektronik +edt	Emerging Display Technologies  emmicro	EM Microelectronic +epfl	Ecole Polytechnique Fédérale de Lausanne  epson	Seiko Epson Corp.  est	ESTeem Wireless Modems +eukrea  Eukréa Electromatique +excito	Excito  fsl	Freescale Semiconductor  GEFanuc	GE Fanuc Intelligent Platforms Embedded Systems, Inc.  gef	GE Fanuc Intelligent Platforms Embedded Systems, Inc. +globalscale	Globalscale Technologies, Inc. +gmt	Global Mixed-mode Technology, Inc. +google	Google, Inc. +gumstix	Gumstix, Inc. +haoyu	Haoyu Microelectronic Co. Ltd.  hisilicon	Hisilicon Limited. +honeywell	Honeywell  hp	Hewlett Packard +i2se	I2SE GmbH  ibm	International Business Machines (IBM)  idt	Integrated Device Technologies, Inc. +iom	Iomega Corporation  img	Imagination Technologies Ltd. +intel	Intel Corporation  intercontrol	Inter Control Group +isee	ISEE 2007 S.L. +isl	Intersil +karo	Ka-Ro electronics GmbH +keymile	Keymile GmbH +lacie	LaCie +lantiq	Lantiq Semiconductor +lg	LG Corporation  linux	Linux-specific binding  lsi	LSI Corp. (LSI Logic) +lltc	Linear Technology Corporation  marvell	Marvell Technology Group Ltd.  maxim	Maxim Integrated Products +micrel	Micrel Inc.  microchip	Microchip Technology Inc.  mosaixtech	Mosaix Technologies, Inc. +moxa	Moxa +mpl	MPL AG +mundoreader	Mundo Reader S.L. +murata	Murata Manufacturing Co., Ltd. +mxicy	Macronix International Co., Ltd.  national	National Semiconductor +neonode		Neonode Inc. +netgear	NETGEAR +newhaven	Newhaven Display International  nintendo	Nintendo +nokia	Nokia  nvidia	NVIDIA  nxp	NXP Semiconductors  onnn	ON Semiconductor Corp. +opencores	OpenCores.org +panasonic	Panasonic Corporation +phytec	PHYTEC Messtechnik GmbH  picochip	Picochip Ltd +plathome	Plat'Home Co., Ltd.  powervr	PowerVR (deprecated, use img)  qca	Qualcomm Atheros, Inc. -qcom	Qualcomm, Inc. +qcom	Qualcomm Technologies, Inc +qnap	QNAP Systems, Inc. +radxa	Radxa +raidsonic	RaidSonic Technology GmbH  ralink	Mediatek/Ralink Technology Corp.  ramtron	Ramtron International  realtek Realtek Semiconductor Corp.  renesas	Renesas Electronics Corporation +ricoh	Ricoh Co. Ltd. +rockchip	Fuzhou Rockchip Electronics Co., Ltd  samsung	Samsung Semiconductor  sbs	Smart Battery System  schindler	Schindler +seagate	Seagate Technology PLC  sil	Silicon Image  silabs	Silicon Laboratories  simtek +sii	Seiko Instruments, Inc.  sirf	SiRF Technology, Inc. +smsc	Standard Microsystems Corporation  snps 	Synopsys, Inc. +spansion	Spansion Inc.  st	STMicroelectronics  ste	ST-Ericsson  stericsson	ST-Ericsson -toumaz	Toumaz +synology	Synology, Inc.  ti	Texas Instruments +tlm	Trusted Logic Mobility +toradex	Toradex AG  toshiba	Toshiba Corporation +toumaz	Toumaz +usi	Universal Scientifc Industrial Co., Ltd.  v3	V3 Semiconductor +variscite	Variscite Ltd.  via	VIA Technologies, Inc. +voipac	Voipac Technologies s.r.o. +winbond Winbond Electronics corp.  wlf	Wolfson Microelectronics  wm	Wondermedia Technologies, Inc. -winbond Winbond Electronics corp. +xes	Extreme Engineering Solutions (X-ES)  xlnx	Xilinx +zyxel	ZyXEL Communications Corp. +zarlink	Zarlink Semiconductor diff --git a/Documentation/devicetree/bindings/video/analog-tv-connector.txt b/Documentation/devicetree/bindings/video/analog-tv-connector.txt new file mode 100644 index 00000000000..0218fcdc129 --- /dev/null +++ b/Documentation/devicetree/bindings/video/analog-tv-connector.txt @@ -0,0 +1,25 @@ +Analog TV Connector +=================== + +Required properties: +- compatible: "composite-connector" or "svideo-connector" + +Optional properties: +- label: a symbolic name for the connector + +Required nodes: +- Video port for TV input + +Example +------- + +tv: connector { +	compatible = "composite-connector"; +	label = "tv"; + +	port { +		tv_connector_in: endpoint { +			remote-endpoint = <&venc_out>; +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/video/atmel,lcdc.txt b/Documentation/devicetree/bindings/video/atmel,lcdc.txt new file mode 100644 index 00000000000..1ec175eddca --- /dev/null +++ b/Documentation/devicetree/bindings/video/atmel,lcdc.txt @@ -0,0 +1,75 @@ +Atmel LCDC Framebuffer +----------------------------------------------------- + +Required properties: +- compatible : +	"atmel,at91sam9261-lcdc" ,  +	"atmel,at91sam9263-lcdc" , +	"atmel,at91sam9g10-lcdc" , +	"atmel,at91sam9g45-lcdc" , +	"atmel,at91sam9g45es-lcdc" , +	"atmel,at91sam9rl-lcdc" , +	"atmel,at32ap-lcdc" +- reg : Should contain 1 register ranges(address and length) +- interrupts : framebuffer controller interrupt +- display: a phandle pointing to the display node + +Required nodes: +- display: a display node is required to initialize the lcd panel +	This should be in the board dts. +- default-mode: a videomode within the display with timing parameters +	as specified below. + +Example: + +	fb0: fb@0x00500000 { +		compatible = "atmel,at91sam9g45-lcdc"; +		reg = <0x00500000 0x1000>; +		interrupts = <23 3 0>; +		pinctrl-names = "default"; +		pinctrl-0 = <&pinctrl_fb>; +		display = <&display0>; +		status = "okay"; +		#address-cells = <1>; +		#size-cells = <1>; + +	}; + +Atmel LCDC Display +----------------------------------------------------- +Required properties (as per of_videomode_helper): + + - atmel,dmacon: dma controler configuration + - atmel,lcdcon2: lcd controler configuration + - atmel,guard-time: lcd guard time (Delay in frame periods) + - bits-per-pixel: lcd panel bit-depth. + +Optional properties (as per of_videomode_helper): + - atmel,lcdcon-backlight: enable backlight + - atmel,lcd-wiring-mode: lcd wiring mode "RGB" or "BRG" + - atmel,power-control-gpio: gpio to power on or off the LCD (as many as needed) + +Example: +	display0: display { +		bits-per-pixel = <32>; +		atmel,lcdcon-backlight; +		atmel,dmacon = <0x1>; +		atmel,lcdcon2 = <0x80008002>; +		atmel,guard-time = <9>; +		atmel,lcd-wiring-mode = <1>; + +		display-timings { +			native-mode = <&timing0>; +			timing0: timing0 { +				clock-frequency = <9000000>; +				hactive = <480>; +				vactive = <272>; +				hback-porch = <1>; +				hfront-porch = <1>; +				vback-porch = <40>; +				vfront-porch = <1>; +				hsync-len = <45>; +				vsync-len = <1>; +			}; +		}; +	}; diff --git a/Documentation/devicetree/bindings/video/backlight/gpio-backlight.txt b/Documentation/devicetree/bindings/video/backlight/gpio-backlight.txt new file mode 100644 index 00000000000..321be664053 --- /dev/null +++ b/Documentation/devicetree/bindings/video/backlight/gpio-backlight.txt @@ -0,0 +1,16 @@ +gpio-backlight bindings + +Required properties: +  - compatible: "gpio-backlight" +  - gpios: describes the gpio that is used for enabling/disabling the backlight. +    refer to bindings/gpio/gpio.txt for more details. + +Optional properties: +  - default-on: enable the backlight at boot. + +Example: +	backlight { +		compatible = "gpio-backlight"; +		gpios = <&gpio3 4 GPIO_ACTIVE_HIGH>; +		default-on; +	}; diff --git a/Documentation/devicetree/bindings/video/backlight/lp855x.txt b/Documentation/devicetree/bindings/video/backlight/lp855x.txt index 1482103d288..96e83a56048 100644 --- a/Documentation/devicetree/bindings/video/backlight/lp855x.txt +++ b/Documentation/devicetree/bindings/video/backlight/lp855x.txt @@ -2,7 +2,7 @@ lp855x bindings  Required properties:    - compatible: "ti,lp8550", "ti,lp8551", "ti,lp8552", "ti,lp8553", -                "ti,lp8556", "ti,lp8557" +                "ti,lp8555", "ti,lp8556", "ti,lp8557"    - reg: I2C slave address (u8)    - dev-ctrl: Value of DEVICE CONTROL register (u8). It depends on the device. @@ -15,6 +15,33 @@ Optional properties:  Example: +	/* LP8555 */ +	backlight@2c { +		compatible = "ti,lp8555"; +		reg = <0x2c>; + +		dev-ctrl = /bits/ 8 <0x00>; +		pwm-period = <10000>; + +		/* 4V OV, 4 output LED0 string enabled */ +		rom_14h { +			rom-addr = /bits/ 8 <0x14>; +			rom-val = /bits/ 8 <0xcf>; +		}; + +		/* Heavy smoothing, 24ms ramp time step */ +		rom_15h { +			rom-addr = /bits/ 8 <0x15>; +			rom-val = /bits/ 8 <0xc7>; +		}; + +		/* 4 output LED1 string enabled */ +		rom_19h { +			rom-addr = /bits/ 8 <0x19>; +			rom-val = /bits/ 8 <0x0f>; +		}; +	}; +  	/* LP8556 */  	backlight@2c {  		compatible = "ti,lp8556"; diff --git a/Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt b/Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt index 1e4fc727f3b..764db86d441 100644 --- a/Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt +++ b/Documentation/devicetree/bindings/video/backlight/pwm-backlight.txt @@ -10,12 +10,16 @@ Required properties:        last value in the array represents a 100% duty cycle (brightest).    - default-brightness-level: the default brightness level (index into the        array defined by the "brightness-levels" property) +  - power-supply: regulator for supply voltage  Optional properties:    - pwm-names: a list of names for the PWM devices specified in the                 "pwms" property (see PWM binding[0]) +  - enable-gpios: contains a single GPIO specifier for the GPIO which enables +                  and disables the backlight (see GPIO binding[1])  [0]: Documentation/devicetree/bindings/pwm/pwm.txt +[1]: Documentation/devicetree/bindings/gpio/gpio.txt  Example: @@ -25,4 +29,7 @@ Example:  		brightness-levels = <0 4 8 16 32 64 128 255>;  		default-brightness-level = <6>; + +		power-supply = <&vdd_bl_reg>; +		enable-gpios = <&gpio 58 0>;  	}; diff --git a/Documentation/devicetree/bindings/video/dvi-connector.txt b/Documentation/devicetree/bindings/video/dvi-connector.txt new file mode 100644 index 00000000000..fc53f7c60bc --- /dev/null +++ b/Documentation/devicetree/bindings/video/dvi-connector.txt @@ -0,0 +1,35 @@ +DVI Connector +============== + +Required properties: +- compatible: "dvi-connector" + +Optional properties: +- label: a symbolic name for the connector +- ddc-i2c-bus: phandle to the i2c bus that is connected to DVI DDC +- analog: the connector has DVI analog pins +- digital: the connector has DVI digital pins +- dual-link: the connector has pins for DVI dual-link + +Required nodes: +- Video port for DVI input + +Note: One (or both) of 'analog' or 'digital' must be set. + +Example +------- + +dvi0: connector@0 { +	compatible = "dvi-connector"; +	label = "dvi"; + +	digital; + +	ddc-i2c-bus = <&i2c3>; + +	port { +		dvi_connector_in: endpoint { +			remote-endpoint = <&tfp410_out>; +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/video/exynos_dp.txt b/Documentation/devicetree/bindings/video/exynos_dp.txt index 84f10c16cb3..53dbccfa80c 100644 --- a/Documentation/devicetree/bindings/video/exynos_dp.txt +++ b/Documentation/devicetree/bindings/video/exynos_dp.txt @@ -6,10 +6,10 @@ We use two nodes:  	-dptx-phy node(defined inside dp-controller node)  For the DP-PHY initialization, we use the dptx-phy node. -Required properties for dptx-phy: -	-reg: +Required properties for dptx-phy: deprecated, use phys and phy-names +	-reg: deprecated  		Base address of DP PHY register. -	-samsung,enable-mask: +	-samsung,enable-mask: deprecated  		The bit-mask used to enable/disable DP PHY.  For the Panel initialization, we read data from dp-controller node. @@ -27,6 +27,10 @@ Required properties for dp-controller:  		from common clock binding: Shall be "dp".  	-interrupt-parent:  		phandle to Interrupt combiner node. +	-phys: +		from general PHY binding: the phandle for the PHY device. +	-phy-names: +		from general PHY binding: Should be "dp".  	-samsung,color-space:  		input video data format.  			COLOR_RGB = 0, COLOR_YCBCR422 = 1, COLOR_YCBCR444 = 2 @@ -45,6 +49,8 @@ Required properties for dp-controller:  	-samsung,lane-count:  		number of lanes supported by the panel.  			LANE_COUNT1 = 1, LANE_COUNT2 = 2, LANE_COUNT4 = 4 +	- display-timings: timings for the connected panel as described by +		Documentation/devicetree/bindings/video/display-timing.txt  Optional properties for dp-controller:  	-interlaced: @@ -56,6 +62,10 @@ Optional properties for dp-controller:  	-hsync-active-high:  		HSYNC polarity configuration.  			High if defined, Low if not defined +	-samsung,hpd-gpio: +		Hotplug detect GPIO. +			Indicates which GPIO should be used for hotplug +			detection  Example: @@ -68,11 +78,8 @@ SOC specific portion:  		clocks = <&clock 342>;  		clock-names = "dp"; -		dptx-phy { -			reg = <0x10040720>; -			samsung,enable-mask = <1>; -		}; - +		phys = <&dp_phy>; +		phy-names = "dp";  	};  Board Specific portion: @@ -83,4 +90,19 @@ Board Specific portion:  		samsung,color-depth = <1>;  		samsung,link-rate = <0x0a>;  		samsung,lane-count = <4>; + +		display-timings { +			native-mode = <&lcd_timing>; +			lcd_timing: 1366x768 { +				clock-frequency = <70589280>; +				hactive = <1366>; +				vactive = <768>; +				hfront-porch = <40>; +				hback-porch = <40>; +				hsync-len = <32>; +				vback-porch = <10>; +				vfront-porch = <12>; +				vsync-len = <6>; +			}; +		};  	}; diff --git a/Documentation/devicetree/bindings/video/exynos_dsim.txt b/Documentation/devicetree/bindings/video/exynos_dsim.txt new file mode 100644 index 00000000000..33b5730d07b --- /dev/null +++ b/Documentation/devicetree/bindings/video/exynos_dsim.txt @@ -0,0 +1,80 @@ +Exynos MIPI DSI Master + +Required properties: +  - compatible: "samsung,exynos4210-mipi-dsi" +  - reg: physical base address and length of the registers set for the device +  - interrupts: should contain DSI interrupt +  - clocks: list of clock specifiers, must contain an entry for each required +    entry in clock-names +  - clock-names: should include "bus_clk"and "pll_clk" entries +  - phys: list of phy specifiers, must contain an entry for each required +    entry in phy-names +  - phy-names: should include "dsim" entry +  - vddcore-supply: MIPI DSIM Core voltage supply (e.g. 1.1V) +  - vddio-supply: MIPI DSIM I/O and PLL voltage supply (e.g. 1.8V) +  - samsung,pll-clock-frequency: specifies frequency of the "pll_clk" clock +  - #address-cells, #size-cells: should be set respectively to <1> and <0> +    according to DSI host bindings (see MIPI DSI bindings [1]) + +Optional properties: +  - samsung,power-domain: a phandle to DSIM power domain node + +Child nodes: +  Should contain DSI peripheral nodes (see MIPI DSI bindings [1]). + +Video interfaces: +  Device node can contain video interface port nodes according to [2]. +  The following are properties specific to those nodes: + +  port node: +    - reg: (required) can be 0 for input RGB/I80 port or 1 for DSI port; + +  endpoint node of DSI port (reg = 1): +    - samsung,burst-clock-frequency: specifies DSI frequency in high-speed burst +      mode +    - samsung,esc-clock-frequency: specifies DSI frequency in escape mode + +[1]: Documentation/devicetree/bindings/mipi/dsi/mipi-dsi-bus.txt +[2]: Documentation/devicetree/bindings/media/video-interfaces.txt + +Example: + +	dsi@11C80000 { +		compatible = "samsung,exynos4210-mipi-dsi"; +		reg = <0x11C80000 0x10000>; +		interrupts = <0 79 0>; +		clocks = <&clock 286>, <&clock 143>; +		clock-names = "bus_clk", "pll_clk"; +		phys = <&mipi_phy 1>; +		phy-names = "dsim"; +		vddcore-supply = <&vusb_reg>; +		vddio-supply = <&vmipi_reg>; +		samsung,power-domain = <&pd_lcd0>; +		#address-cells = <1>; +		#size-cells = <0>; +		samsung,pll-clock-frequency = <24000000>; + +		panel@1 { +			reg = <0>; +			... +			port { +				panel_ep: endpoint { +					remote-endpoint = <&dsi_ep>; +				}; +			}; +		}; + +		ports { +			#address-cells = <1>; +			#size-cells = <0>; + +			port@1 { +				dsi_ep: endpoint { +					reg = <0>; +					samsung,burst-clock-frequency = <500000000>; +					samsung,esc-clock-frequency = <20000000>; +					remote-endpoint = <&panel_ep>; +				}; +			}; +		}; +	}; diff --git a/Documentation/devicetree/bindings/video/exynos_hdmi.txt b/Documentation/devicetree/bindings/video/exynos_hdmi.txt index 323983be3c3..1fd8cf9cbfa 100644 --- a/Documentation/devicetree/bindings/video/exynos_hdmi.txt +++ b/Documentation/devicetree/bindings/video/exynos_hdmi.txt @@ -5,6 +5,7 @@ Required properties:  	1) "samsung,exynos5-hdmi" <DEPRECATED>  	2) "samsung,exynos4210-hdmi"  	3) "samsung,exynos4212-hdmi" +	4) "samsung,exynos5420-hdmi"  - reg: physical base address of the hdmi and length of memory mapped  	region.  - interrupts: interrupt number to the cpu. @@ -12,6 +13,22 @@ Required properties:  	a) phandle of the gpio controller node.  	b) pin number within the gpio controller.  	c) optional flags and pull up/down. +- clocks: list of clock IDs from SoC clock driver. +	a) hdmi: Gate of HDMI IP bus clock. +	b) sclk_hdmi: Gate of HDMI special clock. +	c) sclk_pixel: Pixel special clock, one of the two possible inputs of +		HDMI clock mux. +	d) sclk_hdmiphy: HDMI PHY clock output, one of two possible inputs of +		HDMI clock mux. +	e) mout_hdmi: It is required by the driver to switch between the 2 +		parents i.e. sclk_pixel and sclk_hdmiphy. If hdmiphy is stable +		after configuration, parent is set to sclk_hdmiphy else +		sclk_pixel. +- clock-names: aliases as per driver requirements for above clock IDs: +	"hdmi", "sclk_hdmi", "sclk_pixel", "sclk_hdmiphy" and "mout_hdmi". +- ddc: phandle to the hdmi ddc node +- phy: phandle to the hdmi phy node +- samsung,syscon-phandle: phandle for system controller node for PMU.  Example: @@ -20,4 +37,7 @@ Example:  		reg = <0x14530000 0x100000>;  		interrupts = <0 95 0>;  		hpd-gpio = <&gpx3 7 1>; +		ddc = <&hdmi_ddc_node>; +		phy = <&hdmi_phy_node>; +		samsung,syscon-phandle = <&pmu_system_controller>;  	}; diff --git a/Documentation/devicetree/bindings/video/exynos_mixer.txt b/Documentation/devicetree/bindings/video/exynos_mixer.txt index 3334b0a8e34..7bfde9c9d65 100644 --- a/Documentation/devicetree/bindings/video/exynos_mixer.txt +++ b/Documentation/devicetree/bindings/video/exynos_mixer.txt @@ -10,6 +10,10 @@ Required properties:  - reg: physical base address of the mixer and length of memory mapped  	region.  - interrupts: interrupt number to the cpu. +- clocks: list of clock IDs from SoC clock driver. +	a) mixer: Gate of Mixer IP bus clock. +	b) sclk_hdmi: HDMI Special clock, one of the two possible inputs of +               mixer mux.  Example: diff --git a/Documentation/devicetree/bindings/video/fsl,imx-fb.txt b/Documentation/devicetree/bindings/video/fsl,imx-fb.txt index 46da08db186..0329f60d431 100644 --- a/Documentation/devicetree/bindings/video/fsl,imx-fb.txt +++ b/Documentation/devicetree/bindings/video/fsl,imx-fb.txt @@ -15,8 +15,12 @@ Required nodes:  	- fsl,pcr: LCDC PCR value  Optional properties: +- lcd-supply: Regulator for LCD supply voltage.  - fsl,dmacr: DMA Control Register value. This is optional. By default, the  	register is not modified as recommended by the datasheet. +- fsl,lpccr: Contrast Control Register value. This property provides the +	default value for the contrast control register. +	If that property is ommited, the register is zeroed.  - fsl,lscr1: LCDC Sharp Configuration Register value.  Example: diff --git a/Documentation/devicetree/bindings/video/hdmi-connector.txt b/Documentation/devicetree/bindings/video/hdmi-connector.txt new file mode 100644 index 00000000000..acd5668b1ce --- /dev/null +++ b/Documentation/devicetree/bindings/video/hdmi-connector.txt @@ -0,0 +1,29 @@ +HDMI Connector +============== + +Required properties: +- compatible: "hdmi-connector" +- type: the HDMI connector type: "a", "b", "c", "d" or "e" + +Optional properties: +- label: a symbolic name for the connector +- hpd-gpios: HPD GPIO number + +Required nodes: +- Video port for HDMI input + +Example +------- + +hdmi0: connector@1 { +	compatible = "hdmi-connector"; +	label = "hdmi"; + +	type = "a"; + +	port { +		hdmi_connector_in: endpoint { +			remote-endpoint = <&tpd12s015_out>; +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/video/lgphilips,lb035q02.txt b/Documentation/devicetree/bindings/video/lgphilips,lb035q02.txt new file mode 100644 index 00000000000..1a1e653e540 --- /dev/null +++ b/Documentation/devicetree/bindings/video/lgphilips,lb035q02.txt @@ -0,0 +1,33 @@ +LG.Philips LB035Q02 Panel +========================= + +Required properties: +- compatible: "lgphilips,lb035q02" +- enable-gpios: panel enable gpio + +Optional properties: +- label: a symbolic name for the panel + +Required nodes: +- Video port for DPI input + +Example +------- + +lcd-panel: panel@0 { +	compatible = "lgphilips,lb035q02"; +	reg = <0>; +	spi-max-frequency = <100000>; +	spi-cpol; +	spi-cpha; + +	label = "lcd"; + +	enable-gpios = <&gpio7 7 0>; + +	port { +		lcd_in: endpoint { +			remote-endpoint = <&dpi_out>; +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/video/panel-dpi.txt b/Documentation/devicetree/bindings/video/panel-dpi.txt new file mode 100644 index 00000000000..a40180b05ba --- /dev/null +++ b/Documentation/devicetree/bindings/video/panel-dpi.txt @@ -0,0 +1,45 @@ +Generic MIPI DPI Panel +====================== + +Required properties: +- compatible: "panel-dpi" + +Optional properties: +- label: a symbolic name for the panel +- enable-gpios: panel enable gpio + +Required nodes: +- "panel-timing" containing video timings +  (Documentation/devicetree/bindings/video/display-timing.txt) +- Video port for DPI input + +Example +------- + +lcd0: display@0 { +        compatible = "samsung,lte430wq-f0c", "panel-dpi"; +        label = "lcd"; + +        port { +            lcd_in: endpoint { +                    remote-endpoint = <&dpi_out>; +            }; +        }; + +        panel-timing { +                clock-frequency = <9200000>; +                hactive = <480>; +                vactive = <272>; +                hfront-porch = <8>; +                hback-porch = <4>; +                hsync-len = <41>; +                vback-porch = <2>; +                vfront-porch = <4>; +                vsync-len = <10>; + +                hsync-active = <0>; +                vsync-active = <0>; +                de-active = <1>; +                pixelclk-active = <1>; +        }; +}; diff --git a/Documentation/devicetree/bindings/video/panel-dsi-cm.txt b/Documentation/devicetree/bindings/video/panel-dsi-cm.txt new file mode 100644 index 00000000000..dce48eb9db5 --- /dev/null +++ b/Documentation/devicetree/bindings/video/panel-dsi-cm.txt @@ -0,0 +1,29 @@ +Generic MIPI DSI Command Mode Panel +=================================== + +Required properties: +- compatible: "panel-dsi-cm" + +Optional properties: +- label: a symbolic name for the panel +- reset-gpios: panel reset gpio +- te-gpios: panel TE gpio + +Required nodes: +- Video port for DSI input + +Example +------- + +lcd0: display { +	compatible = "tpo,taal", "panel-dsi-cm"; +	label = "lcd0"; + +	reset-gpios = <&gpio4 6 GPIO_ACTIVE_HIGH>; + +	port { +		lcd0_in: endpoint { +			remote-endpoint = <&dsi1_out_ep>; +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/video/samsung-fimd.txt b/Documentation/devicetree/bindings/video/samsung-fimd.txt index 778838a0336..2dad41b689a 100644 --- a/Documentation/devicetree/bindings/video/samsung-fimd.txt +++ b/Documentation/devicetree/bindings/video/samsung-fimd.txt @@ -39,6 +39,23 @@ Required properties:  Optional Properties:  - samsung,power-domain: a phandle to FIMD power domain node. +- samsung,invert-vden: video enable signal is inverted +- samsung,invert-vclk: video clock signal is inverted +- display-timings: timing settings for FIMD, as described in document [1]. +		Can be used in case timings cannot be provided otherwise +		or to override timings provided by the panel. + +The device node can contain 'port' child nodes according to the bindings defined +in [2]. The following are properties specific to those nodes: +- reg: (required) port index, can be: +		0 - for CAMIF0 input, +		1 - for CAMIF1 input, +		2 - for CAMIF2 input, +		3 - for parallel output, +		4 - for write-back interface + +[1]: Documentation/devicetree/bindings/video/display-timing.txt +[2]: Documentation/devicetree/bindings/media/video-interfaces.txt  Example: diff --git a/Documentation/devicetree/bindings/video/sharp,ls037v7dw01.txt b/Documentation/devicetree/bindings/video/sharp,ls037v7dw01.txt new file mode 100644 index 00000000000..0cc8981e9d4 --- /dev/null +++ b/Documentation/devicetree/bindings/video/sharp,ls037v7dw01.txt @@ -0,0 +1,43 @@ +SHARP LS037V7DW01 TFT-LCD panel +=================================== + +Required properties: +- compatible: "sharp,ls037v7dw01" + +Optional properties: +- label: a symbolic name for the panel +- enable-gpios: a GPIO spec for the optional enable pin. +  This pin is the INI pin as specified in the LS037V7DW01.pdf file. +- reset-gpios: a GPIO spec for the optional reset pin. +  This pin is the RESB pin as specified in the LS037V7DW01.pdf file. +- mode-gpios: a GPIO +  ordered MO, LR, and UD as specified in the LS037V7DW01.pdf file. + +Required nodes: +- Video port for DPI input + +This panel can have zero to five GPIOs to configure to change configuration +between QVGA and VGA mode and the scan direction. As these pins can be also +configured with external pulls, all the GPIOs are considered optional with holes +in the array. + +Example +------- + +Example when connected to a omap2+ based device: + +lcd0: display { +	compatible = "sharp,ls037v7dw01"; +	power-supply = <&lcd_3v3>; +	enable-gpios = <&gpio5 24 GPIO_ACTIVE_HIGH>;	/* gpio152, lcd INI */ +	reset-gpios = <&gpio5 27 GPIO_ACTIVE_HIGH>;	/* gpio155, lcd RESB */ +	mode-gpios = <&gpio5 26 GPIO_ACTIVE_HIGH	/* gpio154, lcd MO */ +		      &gpio1 2 GPIO_ACTIVE_HIGH		/* gpio2, lcd LR */ +		      &gpio1 3 GPIO_ACTIVE_HIGH>;	/* gpio3, lcd UD */ + +	port { +		lcd_in: endpoint { +			remote-endpoint = <&dpi_out>; +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/video/sony,acx565akm.txt b/Documentation/devicetree/bindings/video/sony,acx565akm.txt new file mode 100644 index 00000000000..e1233328074 --- /dev/null +++ b/Documentation/devicetree/bindings/video/sony,acx565akm.txt @@ -0,0 +1,30 @@ +Sony ACX565AKM SDI Panel +======================== + +Required properties: +- compatible: "sony,acx565akm" + +Optional properties: +- label: a symbolic name for the panel +- reset-gpios: panel reset gpio + +Required nodes: +- Video port for SDI input + +Example +------- + +acx565akm@2 { +	compatible = "sony,acx565akm"; +	spi-max-frequency = <6000000>; +	reg = <2>; + +	label = "lcd"; +	reset-gpios = <&gpio3 26 GPIO_ACTIVE_HIGH>; /* 90 */ + +	port { +		lcd_in: endpoint { +			remote-endpoint = <&sdi_out>; +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/video/ssd1289fb.txt b/Documentation/devicetree/bindings/video/ssd1289fb.txt new file mode 100644 index 00000000000..4fcd5e68cb6 --- /dev/null +++ b/Documentation/devicetree/bindings/video/ssd1289fb.txt @@ -0,0 +1,13 @@ +* Solomon SSD1289 Framebuffer Driver + +Required properties: +  - compatible: Should be "solomon,ssd1289fb". The only supported bus for +    now is lbc. +  - reg: Should contain address of the controller on the LBC bus. The detail +    was described in Documentation/devicetree/bindings/powerpc/fsl/lbc.txt + +Examples: +display@2,0 { +	compatible = "solomon,ssd1289fb"; +	reg = <0x2 0x0000 0x0004>; +}; diff --git a/Documentation/devicetree/bindings/video/ti,omap-dss.txt b/Documentation/devicetree/bindings/video/ti,omap-dss.txt new file mode 100644 index 00000000000..d5f1a3fe310 --- /dev/null +++ b/Documentation/devicetree/bindings/video/ti,omap-dss.txt @@ -0,0 +1,211 @@ +Texas Instruments OMAP Display Subsystem +======================================== + +Generic Description +------------------- + +This document is a generic description of the OMAP Display Subsystem bindings. +Binding details for each OMAP SoC version are described in respective binding +documentation. + +The OMAP Display Subsystem (DSS) hardware consists of DSS Core, DISPC module and +a number of encoder modules. All DSS versions contain DSS Core and DISPC, but +the encoder modules vary. + +The DSS Core is the parent of the other DSS modules, and manages clock routing, +integration to the SoC, etc. + +DISPC is the display controller, which reads pixels from the memory and outputs +a RGB pixel stream to encoders. + +The encoder modules encode the received RGB pixel stream to a video output like +HDMI, MIPI DPI, etc. + +Video Ports +----------- + +The DSS Core and the encoders have video port outputs. The structure of the +video ports is described in Documentation/devicetree/bindings/video/video- +ports.txt, and the properties for the ports and endpoints for each encoder are +described in the SoC's DSS binding documentation. + +The video ports are used to describe the connections to external hardware, like +panels or external encoders. + +Aliases +------- + +The board dts file may define aliases for displays to assign "displayX" style +name for each display. If no aliases are defined, a semi-random number is used +for the display. + +Example +------- + +A shortened example of the DSS description for OMAP4, with non-relevant parts +removed, defined in omap4.dtsi: + +dss: dss@58000000 { +	compatible = "ti,omap4-dss"; +	reg = <0x58000000 0x80>; +	status = "disabled"; +	ti,hwmods = "dss_core"; +	clocks = <&dss_dss_clk>; +	clock-names = "fck"; +	#address-cells = <1>; +	#size-cells = <1>; +	ranges; + +	dispc@58001000 { +		compatible = "ti,omap4-dispc"; +		reg = <0x58001000 0x1000>; +		interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; +		ti,hwmods = "dss_dispc"; +		clocks = <&dss_dss_clk>; +		clock-names = "fck"; +	}; + +	hdmi: encoder@58006000 { +		compatible = "ti,omap4-hdmi"; +		reg = <0x58006000 0x200>, +		      <0x58006200 0x100>, +		      <0x58006300 0x100>, +		      <0x58006400 0x1000>; +		reg-names = "wp", "pll", "phy", "core"; +		interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>; +		status = "disabled"; +		ti,hwmods = "dss_hdmi"; +		clocks = <&dss_48mhz_clk>, <&dss_sys_clk>; +		clock-names = "fck", "sys_clk"; +	}; +}; + +A shortened example of the board description for OMAP4 Panda board, defined in +omap4-panda.dts. + +The Panda board has a DVI and a HDMI connector, and the board contains a TFP410 +chip (MIPI DPI to DVI encoder) and a TPD12S015 chip (HDMI ESD protection & level +shifter). The video pipelines for the connectors are formed as follows: + +DSS Core --(MIPI DPI)--> TFP410 --(DVI)--> DVI Connector +OMAP HDMI --(HDMI)--> TPD12S015 --(HDMI)--> HDMI Connector + +/ { +	aliases { +		display0 = &dvi0; +		display1 = &hdmi0; +	}; + +	tfp410: encoder@0 { +		compatible = "ti,tfp410"; +		gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;	/* 0, power-down */ + +		pinctrl-names = "default"; +		pinctrl-0 = <&tfp410_pins>; + +		ports { +			#address-cells = <1>; +			#size-cells = <0>; + +			port@0 { +				reg = <0>; + +				tfp410_in: endpoint@0 { +					remote-endpoint = <&dpi_out>; +				}; +			}; + +			port@1 { +				reg = <1>; + +				tfp410_out: endpoint@0 { +					remote-endpoint = <&dvi_connector_in>; +				}; +			}; +		}; +	}; + +	dvi0: connector@0 { +		compatible = "dvi-connector"; +		label = "dvi"; + +		i2c-bus = <&i2c3>; + +		port { +			dvi_connector_in: endpoint { +				remote-endpoint = <&tfp410_out>; +			}; +		}; +	}; + +	tpd12s015: encoder@1 { +		compatible = "ti,tpd12s015"; + +		pinctrl-names = "default"; +		pinctrl-0 = <&tpd12s015_pins>; + +		gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>,	/* 60, CT CP HPD */ +			<&gpio2 9 GPIO_ACTIVE_HIGH>,	/* 41, LS OE */ +			<&gpio2 31 GPIO_ACTIVE_HIGH>;	/* 63, HPD */ + +		ports { +			#address-cells = <1>; +			#size-cells = <0>; + +			port@0 { +				reg = <0>; + +				tpd12s015_in: endpoint@0 { +					remote-endpoint = <&hdmi_out>; +				}; +			}; + +			port@1 { +				reg = <1>; + +				tpd12s015_out: endpoint@0 { +					remote-endpoint = <&hdmi_connector_in>; +				}; +			}; +		}; +	}; + +	hdmi0: connector@1 { +		compatible = "hdmi-connector"; +		label = "hdmi"; + +		port { +			hdmi_connector_in: endpoint { +				remote-endpoint = <&tpd12s015_out>; +			}; +		}; +	}; +}; + +&dss { +	status = "ok"; + +	pinctrl-names = "default"; +	pinctrl-0 = <&dss_dpi_pins>; + +	port { +		dpi_out: endpoint { +			remote-endpoint = <&tfp410_in>; +			data-lines = <24>; +		}; +	}; +}; + +&hdmi { +	status = "ok"; +	vdda-supply = <&vdac>; + +	pinctrl-names = "default"; +	pinctrl-0 = <&dss_hdmi_pins>; + +	port { +		hdmi_out: endpoint { +			remote-endpoint = <&tpd12s015_in>; +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/video/ti,omap2-dss.txt b/Documentation/devicetree/bindings/video/ti,omap2-dss.txt new file mode 100644 index 00000000000..fa8bb2ed117 --- /dev/null +++ b/Documentation/devicetree/bindings/video/ti,omap2-dss.txt @@ -0,0 +1,54 @@ +Texas Instruments OMAP2 Display Subsystem +========================================= + +See Documentation/devicetree/bindings/video/ti,omap-dss.txt for generic +description about OMAP Display Subsystem bindings. + +DSS Core +-------- + +Required properties: +- compatible: "ti,omap2-dss" +- reg: address and length of the register space +- ti,hwmods: "dss_core" + +Optional nodes: +- Video port for DPI output + +DPI Endpoint required properties: +- data-lines: number of lines used + + +DISPC +----- + +Required properties: +- compatible: "ti,omap2-dispc" +- reg: address and length of the register space +- ti,hwmods: "dss_dispc" +- interrupts: the DISPC interrupt + + +RFBI +---- + +Required properties: +- compatible: "ti,omap2-rfbi" +- reg: address and length of the register space +- ti,hwmods: "dss_rfbi" + + +VENC +---- + +Required properties: +- compatible: "ti,omap2-venc" +- reg: address and length of the register space +- ti,hwmods: "dss_venc" +- vdda-supply: power supply for DAC + +VENC Endpoint required properties: + +Required properties: +- ti,invert-polarity: invert the polarity of the video signal +- ti,channels: 1 for composite, 2 for s-video diff --git a/Documentation/devicetree/bindings/video/ti,omap3-dss.txt b/Documentation/devicetree/bindings/video/ti,omap3-dss.txt new file mode 100644 index 00000000000..0023fa4b132 --- /dev/null +++ b/Documentation/devicetree/bindings/video/ti,omap3-dss.txt @@ -0,0 +1,83 @@ +Texas Instruments OMAP3 Display Subsystem +========================================= + +See Documentation/devicetree/bindings/video/ti,omap-dss.txt for generic +description about OMAP Display Subsystem bindings. + +DSS Core +-------- + +Required properties: +- compatible: "ti,omap3-dss" +- reg: address and length of the register space +- ti,hwmods: "dss_core" +- clocks: handle to fclk +- clock-names: "fck" + +Optional nodes: +- Video ports: +	- Port 0: DPI output +	- Port 1: SDI output + +DPI Endpoint required properties: +- data-lines: number of lines used + +SDI Endpoint required properties: +- datapairs: number of datapairs used + + +DISPC +----- + +Required properties: +- compatible: "ti,omap3-dispc" +- reg: address and length of the register space +- ti,hwmods: "dss_dispc" +- interrupts: the DISPC interrupt +- clocks: handle to fclk +- clock-names: "fck" + + +RFBI +---- + +Required properties: +- compatible: "ti,omap3-rfbi" +- reg: address and length of the register space +- ti,hwmods: "dss_rfbi" +- clocks: handles to fclk and iclk +- clock-names: "fck", "ick" + + +VENC +---- + +Required properties: +- compatible: "ti,omap3-venc" +- reg: address and length of the register space +- ti,hwmods: "dss_venc" +- vdda-supply: power supply for DAC +- clocks: handle to fclk +- clock-names: "fck" + +VENC Endpoint required properties: +- ti,invert-polarity: invert the polarity of the video signal +- ti,channels: 1 for composite, 2 for s-video + + +DSI +--- + +Required properties: +- compatible: "ti,omap3-dsi" +- reg: addresses and lengths of the register spaces for 'proto', 'phy' and 'pll' +- reg-names: "proto", "phy", "pll" +- interrupts: the DSI interrupt line +- ti,hwmods: "dss_dsi1" +- vdd-supply: power supply for DSI +- clocks: handles to fclk and pll clock +- clock-names: "fck", "sys_clk" + +DSI Endpoint required properties: +- lanes: list of pin numbers for the DSI lanes: CLK+, CLK-, DATA0+, DATA0-, +  DATA1+, DATA1-, ... diff --git a/Documentation/devicetree/bindings/video/ti,omap4-dss.txt b/Documentation/devicetree/bindings/video/ti,omap4-dss.txt new file mode 100644 index 00000000000..b8c29fbd1fb --- /dev/null +++ b/Documentation/devicetree/bindings/video/ti,omap4-dss.txt @@ -0,0 +1,115 @@ +Texas Instruments OMAP4 Display Subsystem +========================================= + +See Documentation/devicetree/bindings/video/ti,omap-dss.txt for generic +description about OMAP Display Subsystem bindings. + +DSS Core +-------- + +Required properties: +- compatible: "ti,omap4-dss" +- reg: address and length of the register space +- ti,hwmods: "dss_core" +- clocks: handle to fclk +- clock-names: "fck" + +Required nodes: +- DISPC + +Optional nodes: +- DSS Submodules: RFBI, VENC, DSI, HDMI +- Video port for DPI output + +DPI Endpoint required properties: +- data-lines: number of lines used + + +DISPC +----- + +Required properties: +- compatible: "ti,omap4-dispc" +- reg: address and length of the register space +- ti,hwmods: "dss_dispc" +- interrupts: the DISPC interrupt +- clocks: handle to fclk +- clock-names: "fck" + + +RFBI +---- + +Required properties: +- compatible: "ti,omap4-rfbi" +- reg: address and length of the register space +- ti,hwmods: "dss_rfbi" +- clocks: handles to fclk and iclk +- clock-names: "fck", "ick" + +Optional nodes: +- Video port for RFBI output +- RFBI controlled peripherals + + +VENC +---- + +Required properties: +- compatible: "ti,omap4-venc" +- reg: address and length of the register space +- ti,hwmods: "dss_venc" +- vdda-supply: power supply for DAC +- clocks: handle to fclk +- clock-names: "fck" + +Optional nodes: +- Video port for VENC output + +VENC Endpoint required properties: +- ti,invert-polarity: invert the polarity of the video signal +- ti,channels: 1 for composite, 2 for s-video + + +DSI +--- + +Required properties: +- compatible: "ti,omap4-dsi" +- reg: addresses and lengths of the register spaces for 'proto', 'phy' and 'pll' +- reg-names: "proto", "phy", "pll" +- interrupts: the DSI interrupt line +- ti,hwmods: "dss_dsi1" or "dss_dsi2" +- vdd-supply: power supply for DSI +- clocks: handles to fclk and pll clock +- clock-names: "fck", "sys_clk" + +Optional nodes: +- Video port for DSI output +- DSI controlled peripherals + +DSI Endpoint required properties: +- lanes: list of pin numbers for the DSI lanes: CLK+, CLK-, DATA0+, DATA0-, +  DATA1+, DATA1-, ... + + +HDMI +---- + +Required properties: +- compatible: "ti,omap4-hdmi" +- reg: addresses and lengths of the register spaces for 'wp', 'pll', 'phy', +       'core' +- reg-names: "wp", "pll", "phy", "core" +- interrupts: the HDMI interrupt line +- ti,hwmods: "dss_hdmi" +- vdda-supply: vdda power supply +- clocks: handles to fclk and pll clock +- clock-names: "fck", "sys_clk" + +Optional nodes: +- Video port for HDMI output + +HDMI Endpoint optional properties: +- lanes: list of 8 pin numbers for the HDMI lanes: CLK+, CLK-, D0+, D0-, +  D1+, D1-, D2+, D2-. (default: 0,1,2,3,4,5,6,7) diff --git a/Documentation/devicetree/bindings/video/ti,omap5-dss.txt b/Documentation/devicetree/bindings/video/ti,omap5-dss.txt new file mode 100644 index 00000000000..38ffc8fcd81 --- /dev/null +++ b/Documentation/devicetree/bindings/video/ti,omap5-dss.txt @@ -0,0 +1,96 @@ +Texas Instruments OMAP5 Display Subsystem +========================================= + +See Documentation/devicetree/bindings/video/ti,omap-dss.txt for generic +description about OMAP Display Subsystem bindings. + +DSS Core +-------- + +Required properties: +- compatible: "ti,omap5-dss" +- reg: address and length of the register space +- ti,hwmods: "dss_core" +- clocks: handle to fclk +- clock-names: "fck" + +Required nodes: +- DISPC + +Optional nodes: +- DSS Submodules: RFBI, DSI, HDMI +- Video port for DPI output + +DPI Endpoint required properties: +- data-lines: number of lines used + + +DISPC +----- + +Required properties: +- compatible: "ti,omap5-dispc" +- reg: address and length of the register space +- ti,hwmods: "dss_dispc" +- interrupts: the DISPC interrupt +- clocks: handle to fclk +- clock-names: "fck" + + +RFBI +---- + +Required properties: +- compatible: "ti,omap5-rfbi" +- reg: address and length of the register space +- ti,hwmods: "dss_rfbi" +- clocks: handles to fclk and iclk +- clock-names: "fck", "ick" + +Optional nodes: +- Video port for RFBI output +- RFBI controlled peripherals + + +DSI +--- + +Required properties: +- compatible: "ti,omap5-dsi" +- reg: addresses and lengths of the register spaces for 'proto', 'phy' and 'pll' +- reg-names: "proto", "phy", "pll" +- interrupts: the DSI interrupt line +- ti,hwmods: "dss_dsi1" or "dss_dsi2" +- vdd-supply: power supply for DSI +- clocks: handles to fclk and pll clock +- clock-names: "fck", "sys_clk" + +Optional nodes: +- Video port for DSI output +- DSI controlled peripherals + +DSI Endpoint required properties: +- lanes: list of pin numbers for the DSI lanes: CLK+, CLK-, DATA0+, DATA0-, +  DATA1+, DATA1-, ... + + +HDMI +---- + +Required properties: +- compatible: "ti,omap5-hdmi" +- reg: addresses and lengths of the register spaces for 'wp', 'pll', 'phy', +       'core' +- reg-names: "wp", "pll", "phy", "core" +- interrupts: the HDMI interrupt line +- ti,hwmods: "dss_hdmi" +- vdda-supply: vdda power supply +- clocks: handles to fclk and pll clock +- clock-names: "fck", "sys_clk" + +Optional nodes: +- Video port for HDMI output + +HDMI Endpoint optional properties: +- lanes: list of 8 pin numbers for the HDMI lanes: CLK+, CLK-, D0+, D0-, +  D1+, D1-, D2+, D2-. (default: 0,1,2,3,4,5,6,7) diff --git a/Documentation/devicetree/bindings/video/ti,tfp410.txt b/Documentation/devicetree/bindings/video/ti,tfp410.txt new file mode 100644 index 00000000000..2cbe32a3d0b --- /dev/null +++ b/Documentation/devicetree/bindings/video/ti,tfp410.txt @@ -0,0 +1,41 @@ +TFP410 DPI to DVI encoder +========================= + +Required properties: +- compatible: "ti,tfp410" + +Optional properties: +- powerdown-gpios: power-down gpio + +Required nodes: +- Video port 0 for DPI input +- Video port 1 for DVI output + +Example +------- + +tfp410: encoder@0 { +	compatible = "ti,tfp410"; +	powerdown-gpios = <&twl_gpio 2 GPIO_ACTIVE_LOW>; + +	ports { +		#address-cells = <1>; +		#size-cells = <0>; + +		port@0 { +			reg = <0>; + +			tfp410_in: endpoint@0 { +				remote-endpoint = <&dpi_out>; +			}; +		}; + +		port@1 { +			reg = <1>; + +			tfp410_out: endpoint@0 { +				remote-endpoint = <&dvi_connector_in>; +			}; +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/video/ti,tpd12s015.txt b/Documentation/devicetree/bindings/video/ti,tpd12s015.txt new file mode 100644 index 00000000000..26e6d32e3f2 --- /dev/null +++ b/Documentation/devicetree/bindings/video/ti,tpd12s015.txt @@ -0,0 +1,44 @@ +TPD12S015 HDMI level shifter and ESD protection chip +==================================================== + +Required properties: +- compatible: "ti,tpd12s015" + +Optional properties: +- gpios: CT CP HPD, LS OE and HPD gpios + +Required nodes: +- Video port 0 for HDMI input +- Video port 1 for HDMI output + +Example +------- + +tpd12s015: encoder@1 { +	compatible = "ti,tpd12s015"; + +	gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>,	/* 60, CT CP HPD */ +		<&gpio2 9 GPIO_ACTIVE_HIGH>,	/* 41, LS OE */ +		<&gpio2 31 GPIO_ACTIVE_HIGH>;	/* 63, HPD */ + +	ports { +		#address-cells = <1>; +		#size-cells = <0>; + +		port@0 { +			reg = <0>; + +			tpd12s015_in: endpoint@0 { +				remote-endpoint = <&hdmi_out>; +			}; +		}; + +		port@1 { +			reg = <1>; + +			tpd12s015_out: endpoint@0 { +				remote-endpoint = <&hdmi_connector_in>; +			}; +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/video/toppoly,td028ttec1.txt b/Documentation/devicetree/bindings/video/toppoly,td028ttec1.txt new file mode 100644 index 00000000000..7175dc3740a --- /dev/null +++ b/Documentation/devicetree/bindings/video/toppoly,td028ttec1.txt @@ -0,0 +1,30 @@ +Toppoly TD028TTEC1 Panel +======================== + +Required properties: +- compatible: "toppoly,td028ttec1" + +Optional properties: +- label: a symbolic name for the panel + +Required nodes: +- Video port for DPI input + +Example +------- + +lcd-panel: td028ttec1@0 { +	compatible = "toppoly,td028ttec1"; +	reg = <0>; +	spi-max-frequency = <100000>; +	spi-cpol; +	spi-cpha; + +	label = "lcd"; +	port { +		lcd_in: endpoint { +			remote-endpoint = <&dpi_out>; +		}; +	}; +}; + diff --git a/Documentation/devicetree/bindings/video/tpo,td043mtea1.txt b/Documentation/devicetree/bindings/video/tpo,td043mtea1.txt new file mode 100644 index 00000000000..ec6d6297516 --- /dev/null +++ b/Documentation/devicetree/bindings/video/tpo,td043mtea1.txt @@ -0,0 +1,33 @@ +TPO TD043MTEA1 Panel +==================== + +Required properties: +- compatible: "tpo,td043mtea1" +- reset-gpios: panel reset gpio + +Optional properties: +- label: a symbolic name for the panel + +Required nodes: +- Video port for DPI input + +Example +------- + +lcd-panel: panel@0 { +	compatible = "tpo,td043mtea1"; +	reg = <0>; +	spi-max-frequency = <100000>; +	spi-cpol; +	spi-cpha; + +	label = "lcd"; + +	reset-gpios = <&gpio7 7 0>; + +	port { +		lcd_in: endpoint { +			remote-endpoint = <&dpi_out>; +		}; +	}; +}; diff --git a/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt index fcdd48f7dcf..f90e294d763 100644 --- a/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/atmel-wdt.txt @@ -9,11 +9,37 @@ Required properties:  Optional properties:  - timeout-sec: contains the watchdog timeout in seconds. +- interrupts : Should contain WDT interrupt. +- atmel,max-heartbeat-sec : Should contain the maximum heartbeat value in +	seconds. This value should be less or equal to 16. It is used to +	compute the WDV field. +- atmel,min-heartbeat-sec : Should contain the minimum heartbeat value in +	seconds. This value must be smaller than the max-heartbeat-sec value. +	It is used to compute the WDD field. +- atmel,watchdog-type : Should be "hardware" or "software". Hardware watchdog +	use the at91 watchdog reset. Software watchdog use the watchdog +	interrupt to trigger a software reset. +- atmel,reset-type : Should be "proc" or "all". +	"all" : assert peripherals and processor reset signals +	"proc" : assert the processor reset signal +	This is valid only when using "hardware" watchdog. +- atmel,disable : Should be present if you want to disable the watchdog. +- atmel,idle-halt : Should be present if you want to stop the watchdog when +	entering idle state. +- atmel,dbg-halt : Should be present if you want to stop the watchdog when +	entering debug state.  Example: -  	watchdog@fffffd40 {  		compatible = "atmel,at91sam9260-wdt";  		reg = <0xfffffd40 0x10>; -		timeout-sec = <10>; +		interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>; +		timeout-sec = <15>; +		atmel,watchdog-type = "hardware"; +		atmel,reset-type = "all"; +		atmel,dbg-halt; +		atmel,idle-halt; +		atmel,max-heartbeat-sec = <16>; +		atmel,min-heartbeat-sec = <0>; +		status = "okay";  	}; diff --git a/Documentation/devicetree/bindings/watchdog/davinci-wdt.txt b/Documentation/devicetree/bindings/watchdog/davinci-wdt.txt index 75558ccd9a0..e60b9a13bdc 100644 --- a/Documentation/devicetree/bindings/watchdog/davinci-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/davinci-wdt.txt @@ -1,12 +1,24 @@ -DaVinci Watchdog Timer (WDT) Controller +Texas Instruments DaVinci/Keystone Watchdog Timer (WDT) Controller  Required properties: -- compatible : Should be "ti,davinci-wdt" +- compatible : Should be "ti,davinci-wdt", "ti,keystone-wdt"  - reg : Should contain WDT registers location and length +Optional properties: +- timeout-sec : Contains the watchdog timeout in seconds +- clocks : the clock feeding the watchdog timer. +	   Needed if platform uses clocks. +	   See clock-bindings.txt + +Documentation: +Davinci DM646x - http://www.ti.com/lit/ug/spruer5b/spruer5b.pdf +Keystone - http://www.ti.com/lit/ug/sprugv5a/sprugv5a.pdf +  Examples:  wdt: wdt@2320000 {  	compatible = "ti,davinci-wdt";  	reg = <0x02320000 0x80>; +	timeout-sec = <30>; +	clocks = <&clkwdtimer0>;  }; diff --git a/Documentation/devicetree/bindings/watchdog/dw_wdt.txt b/Documentation/devicetree/bindings/watchdog/dw_wdt.txt new file mode 100644 index 00000000000..08e16f684f2 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/dw_wdt.txt @@ -0,0 +1,21 @@ +Synopsys Designware Watchdog Timer + +Required Properties: + +- compatible	: Should contain "snps,dw-wdt" +- reg		: Base address and size of the watchdog timer registers. +- clocks	: phandle + clock-specifier for the clock that drives the +		watchdog timer. + +Optional Properties: + +- interrupts	: The interrupt used for the watchdog timeout warning. + +Example: + +	watchdog0: wd@ffd02000 { +		compatible = "snps,dw-wdt"; +		reg = <0xffd02000 0x1000>; +		interrupts = <0 171 4>; +		clocks = <&per_base_clk>; +	}; diff --git a/Documentation/devicetree/bindings/watchdog/gpio-wdt.txt b/Documentation/devicetree/bindings/watchdog/gpio-wdt.txt new file mode 100644 index 00000000000..37afec19494 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/gpio-wdt.txt @@ -0,0 +1,23 @@ +* GPIO-controlled Watchdog + +Required Properties: +- compatible: Should contain "linux,wdt-gpio". +- gpios: From common gpio binding; gpio connection to WDT reset pin. +- hw_algo: The algorithm used by the driver. Should be one of the +  following values: +  - toggle: Either a high-to-low or a low-to-high transition clears +    the WDT counter. The watchdog timer is disabled when GPIO is +    left floating or connected to a three-state buffer. +  - level: Low or high level starts counting WDT timeout, +    the opposite level disables the WDT. Active level is determined +    by the GPIO flags. +- hw_margin_ms: Maximum time to reset watchdog circuit (milliseconds). + +Example: +	watchdog: watchdog { +		/* ADM706 */ +		compatible = "linux,wdt-gpio"; +		gpios = <&gpio3 9 GPIO_ACTIVE_LOW>; +		hw_algo = "toggle"; +		hw_margin_ms = <1600>; +	}; diff --git a/Documentation/devicetree/bindings/watchdog/marvel.txt b/Documentation/devicetree/bindings/watchdog/marvel.txt index 5dc8d30061c..97223fddb7b 100644 --- a/Documentation/devicetree/bindings/watchdog/marvel.txt +++ b/Documentation/devicetree/bindings/watchdog/marvel.txt @@ -3,17 +3,31 @@  Required Properties:  - Compatibility : "marvell,orion-wdt" -- reg		: Address of the timer registers +		  "marvell,armada-370-wdt" +		  "marvell,armada-xp-wdt" +		  "marvell,armada-375-wdt" +		  "marvell,armada-380-wdt" + +- reg		: Should contain two entries: first one with the +		  timer control address, second one with the +		  rstout enable address. + +For "marvell,armada-375-wdt" and "marvell,armada-380-wdt": + +- reg		: A third entry is mandatory and should contain the +                  shared mask/unmask RSTOUT address.  Optional properties: +- interrupts	: Contains the IRQ for watchdog expiration  - timeout-sec	: Contains the watchdog timeout in seconds  Example:  	wdt@20300 {  		compatible = "marvell,orion-wdt"; -		reg = <0x20300 0x28>; +		reg = <0x20300 0x28>, <0x20108 0x4>; +		interrupts = <3>;  		timeout-sec = <10>;  		status = "okay";  	}; diff --git a/Documentation/devicetree/bindings/gpio/men-a021-wdt.txt b/Documentation/devicetree/bindings/watchdog/men-a021-wdt.txt index 370dee3226d..370dee3226d 100644 --- a/Documentation/devicetree/bindings/gpio/men-a021-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/men-a021-wdt.txt diff --git a/Documentation/devicetree/bindings/watchdog/moxa,moxart-watchdog.txt b/Documentation/devicetree/bindings/watchdog/moxa,moxart-watchdog.txt new file mode 100644 index 00000000000..1169857d1d1 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/moxa,moxart-watchdog.txt @@ -0,0 +1,15 @@ +MOXA ART Watchdog timer + +Required properties: + +- compatible : Must be "moxa,moxart-watchdog" +- reg : Should contain registers location and length +- clocks : Should contain phandle for the clock that drives the counter + +Example: + +	watchdog: watchdog@98500000 { +		compatible = "moxa,moxart-watchdog"; +		reg = <0x98500000 0x10>; +		clocks = <&coreclk>; +	}; diff --git a/Documentation/devicetree/bindings/watchdog/of-xilinx-wdt.txt b/Documentation/devicetree/bindings/watchdog/of-xilinx-wdt.txt new file mode 100644 index 00000000000..6d63782a737 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/of-xilinx-wdt.txt @@ -0,0 +1,23 @@ +Xilinx AXI/PLB soft-core watchdog Device Tree Bindings +--------------------------------------------------------- + +Required properties: +- compatible		: Should be "xlnx,xps-timebase-wdt-1.00.a" or +			  "xlnx,xps-timebase-wdt-1.01.a". +- reg			: Physical base address and size + +Optional properties: +- clock-frequency	: Frequency of clock in Hz +- xlnx,wdt-enable-once	: 0 - Watchdog can be restarted +			  1 - Watchdog can be enabled just once +- xlnx,wdt-interval	: Watchdog timeout interval in 2^<val> clock cycles, +			  <val> is integer from 8 to 31. + +Example: +axi-timebase-wdt@40100000 { +	clock-frequency = <50000000>; +	compatible = "xlnx,xps-timebase-wdt-1.00.a"; +	reg = <0x40100000 0x10000>; +	xlnx,wdt-enable-once = <0x0>; +	xlnx,wdt-interval = <0x1b>; +} ; diff --git a/Documentation/devicetree/bindings/watchdog/rt2880-wdt.txt b/Documentation/devicetree/bindings/watchdog/rt2880-wdt.txt new file mode 100644 index 00000000000..d7bab3db9d1 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/rt2880-wdt.txt @@ -0,0 +1,19 @@ +Ralink Watchdog Timers + +Required properties: +- compatible: must be "ralink,rt2880-wdt" +- reg: physical base address of the controller and length of the register range + +Optional properties: +- interrupt-parent: phandle to the INTC device node +- interrupts: Specify the INTC interrupt number + +Example: + +	watchdog@120 { +		compatible = "ralink,rt2880-wdt"; +		reg = <0x120 0x10>; + +		interrupt-parent = <&intc>; +		interrupts = <1>; +	}; diff --git a/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt b/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt index 2aa486cc1ff..cfff37511aa 100644 --- a/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/samsung-wdt.txt @@ -5,10 +5,29 @@ after a preset amount of time during which the WDT reset event has not  occurred.  Required properties: -- compatible : should be "samsung,s3c2410-wdt" +- compatible : should be one among the following +	(a) "samsung,s3c2410-wdt" for Exynos4 and previous SoCs +	(b) "samsung,exynos5250-wdt" for Exynos5250 +	(c) "samsung,exynos5420-wdt" for Exynos5420 +  - reg : base physical address of the controller and length of memory mapped  	region.  - interrupts : interrupt number to the cpu. +- samsung,syscon-phandle : reference to syscon node (This property required only +	in case of compatible being "samsung,exynos5250-wdt" or "samsung,exynos5420-wdt". +	In case of Exynos5250 and 5420 this property points to syscon node holding the PMU +	base address)  Optional properties:  - timeout-sec : contains the watchdog timeout in seconds. + +Example: + +watchdog@101D0000 { +	compatible = "samsung,exynos5250-wdt"; +	reg = <0x101D0000 0x100>; +	interrupts = <0 42 0>; +	clocks = <&clock 336>; +	clock-names = "watchdog"; +	samsung,syscon-phandle = <&pmu_syscon>; +}; diff --git a/Documentation/devicetree/bindings/watchdog/sirfsoc_wdt.txt b/Documentation/devicetree/bindings/watchdog/sirfsoc_wdt.txt new file mode 100644 index 00000000000..9cbc76c89b2 --- /dev/null +++ b/Documentation/devicetree/bindings/watchdog/sirfsoc_wdt.txt @@ -0,0 +1,14 @@ +SiRFSoC Timer and Watchdog Timer(WDT) Controller + +Required properties: +- compatible: "sirf,prima2-tick" +- reg: Address range of tick timer/WDT register set +- interrupts: interrupt number to the cpu + +Example: + +timer@b0020000 { +	compatible = "sirf,prima2-tick"; +	reg = <0xb0020000 0x1000>; +	interrupts = <0>; +}; diff --git a/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt index e39cb266c8f..b8f75c51453 100644 --- a/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt @@ -2,13 +2,13 @@ Allwinner SoCs Watchdog timer  Required properties: -- compatible : should be "allwinner,<soc-family>-wdt", the currently supported -  SoC families being sun4i and sun6i +- compatible : should be either "allwinner,sun4i-a10-wdt" or +               "allwinner,sun6i-a31-wdt"  - reg : Specifies base physical address and size of the registers.  Example:  wdt: watchdog@01c20c90 { -	compatible = "allwinner,sun4i-wdt"; +	compatible = "allwinner,sun4i-a10-wdt";  	reg = <0x01c20c90 0x10>;  }; diff --git a/Documentation/devicetree/booting-without-of.txt b/Documentation/devicetree/booting-without-of.txt index b2fb2f5e192..1f013bd0d32 100644 --- a/Documentation/devicetree/booting-without-of.txt +++ b/Documentation/devicetree/booting-without-of.txt @@ -1364,19 +1364,16 @@ Appendix A - Sample SOC node for MPC8540  				phy0: ethernet-phy@0 {  					interrupts = <5 1>;  					reg = <0>; -					device_type = "ethernet-phy";  				};  				phy1: ethernet-phy@1 {  					interrupts = <5 1>;  					reg = <1>; -					device_type = "ethernet-phy";  				};  				phy3: ethernet-phy@3 {  					interrupts = <7 1>;  					reg = <3>; -					device_type = "ethernet-phy";  				};  			};  		};  | 
