Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/ethernet/rocker/rocker.c The rocker commit was two overlapping changes, one to rename the ->vport member to ->pport, and another making the bitmask expression use '1ULL' instead of plain '1'. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
				commit
				
					
						71a83a6db6
					
				
			
		
					 1279 changed files with 49656 additions and 20344 deletions
				
			
		|  | @ -35,3 +35,11 @@ Contact:	Corentin Chary <corentin.chary@gmail.com> | ||||||
| Description:	Use your USB ports to charge devices, even | Description:	Use your USB ports to charge devices, even | ||||||
| 		when your laptop is powered off. | 		when your laptop is powered off. | ||||||
| 		1 means enabled, 0 means disabled. | 		1 means enabled, 0 means disabled. | ||||||
|  | 
 | ||||||
|  | What:		/sys/devices/platform/samsung/lid_handling | ||||||
|  | Date:		December 11, 2014 | ||||||
|  | KernelVersion:	3.19 | ||||||
|  | Contact:	Julijonas Kikutis <julijonas.kikutis@gmail.com> | ||||||
|  | Description:	Some Samsung laptops handle lid closing quicker and | ||||||
|  | 		only handle lid opening with this mode enabled. | ||||||
|  | 		1 means enabled, 0 means disabled. | ||||||
|  |  | ||||||
							
								
								
									
										114
									
								
								Documentation/ABI/testing/sysfs-driver-toshiba_acpi
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								Documentation/ABI/testing/sysfs-driver-toshiba_acpi
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,114 @@ | ||||||
|  | What:		/sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_backlight_mode | ||||||
|  | Date:		June 8, 2014 | ||||||
|  | KernelVersion:	3.15 | ||||||
|  | Contact:	Azael Avalos <coproscefalo@gmail.com> | ||||||
|  | Description:	This file controls the keyboard backlight operation mode, valid | ||||||
|  | 		values are: | ||||||
|  | 			* 0x1  -> FN-Z | ||||||
|  | 			* 0x2  -> AUTO (also called TIMER) | ||||||
|  | 			* 0x8  -> ON | ||||||
|  | 			* 0x10 -> OFF | ||||||
|  | 		Note that the kernel 3.16 onwards this file accepts all listed | ||||||
|  | 		parameters, kernel 3.15 only accepts the first two (FN-Z and | ||||||
|  | 		AUTO). | ||||||
|  | Users:		KToshiba | ||||||
|  | 
 | ||||||
|  | What:		/sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_backlight_timeout | ||||||
|  | Date:		June 8, 2014 | ||||||
|  | KernelVersion:	3.15 | ||||||
|  | Contact:	Azael Avalos <coproscefalo@gmail.com> | ||||||
|  | Description:	This file controls the timeout of the keyboard backlight | ||||||
|  | 		whenever the operation mode is set to AUTO (or TIMER), | ||||||
|  | 		valid values range from 0-60. | ||||||
|  | 		Note that the kernel 3.15 only had support for the first | ||||||
|  | 		keyboard type, the kernel 3.16 added support for the second | ||||||
|  | 		type and the range accepted for type 2 is 1-60. | ||||||
|  | 		See the entry named "kbd_type" | ||||||
|  | Users:		KToshiba | ||||||
|  | 
 | ||||||
|  | What:		/sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/position | ||||||
|  | Date:		June 8, 2014 | ||||||
|  | KernelVersion:	3.15 | ||||||
|  | Contact:	Azael Avalos <coproscefalo@gmail.com> | ||||||
|  | Description:	This file shows the absolute position of the built-in | ||||||
|  | 		accelereometer. | ||||||
|  | 
 | ||||||
|  | What:		/sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/touchpad | ||||||
|  | Date:		June 8, 2014 | ||||||
|  | KernelVersion:	3.15 | ||||||
|  | Contact:	Azael Avalos <coproscefalo@gmail.com> | ||||||
|  | Description:	This files controls the status of the touchpad and pointing | ||||||
|  | 		stick (if available), valid values are: | ||||||
|  | 			* 0 -> OFF | ||||||
|  | 			* 1 -> ON | ||||||
|  | Users:		KToshiba | ||||||
|  | 
 | ||||||
|  | What:		/sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/available_kbd_modes | ||||||
|  | Date:		August 3, 2014 | ||||||
|  | KernelVersion:	3.16 | ||||||
|  | Contact:	Azael Avalos <coproscefalo@gmail.com> | ||||||
|  | Description:	This file shows the supported keyboard backlight modes | ||||||
|  | 		the system supports, which can be: | ||||||
|  | 			* 0x1  -> FN-Z | ||||||
|  | 			* 0x2  -> AUTO (also called TIMER) | ||||||
|  | 			* 0x8  -> ON | ||||||
|  | 			* 0x10 -> OFF | ||||||
|  | 		Note that not all keyboard types support the listed modes. | ||||||
|  | 		See the entry named "available_kbd_modes" | ||||||
|  | Users:		KToshiba | ||||||
|  | 
 | ||||||
|  | What:		/sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_type | ||||||
|  | Date:		August 3, 2014 | ||||||
|  | KernelVersion:	3.16 | ||||||
|  | Contact:	Azael Avalos <coproscefalo@gmail.com> | ||||||
|  | Description:	This file shows the current keyboard backlight type, | ||||||
|  | 		which can be: | ||||||
|  | 			* 1 -> Type 1, supporting modes FN-Z and AUTO | ||||||
|  | 			* 2 -> Type 2, supporting modes TIMER, ON and OFF | ||||||
|  | Users:		KToshiba | ||||||
|  | 
 | ||||||
|  | What:		/sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/version | ||||||
|  | Date:		February, 2015 | ||||||
|  | KernelVersion:	3.20 | ||||||
|  | Contact:	Azael Avalos <coproscefalo@gmail.com> | ||||||
|  | Description:	This file shows the current version of the driver | ||||||
|  | 
 | ||||||
|  | What:		/sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/fan | ||||||
|  | Date:		February, 2015 | ||||||
|  | KernelVersion:	3.20 | ||||||
|  | Contact:	Azael Avalos <coproscefalo@gmail.com> | ||||||
|  | Description:	This file controls the state of the internal fan, valid | ||||||
|  | 		values are: | ||||||
|  | 			* 0 -> OFF | ||||||
|  | 			* 1 -> ON | ||||||
|  | 
 | ||||||
|  | What:		/sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/kbd_function_keys | ||||||
|  | Date:		February, 2015 | ||||||
|  | KernelVersion:	3.20 | ||||||
|  | Contact:	Azael Avalos <coproscefalo@gmail.com> | ||||||
|  | Description:	This file controls the Special Functions (hotkeys) operation | ||||||
|  | 		mode, valid values are: | ||||||
|  | 			* 0 -> Normal Operation | ||||||
|  | 			* 1 -> Special Functions | ||||||
|  | 		In the "Normal Operation" mode, the F{1-12} keys are as usual | ||||||
|  | 		and the hotkeys are accessed via FN-F{1-12}. | ||||||
|  | 		In the "Special Functions" mode, the F{1-12} keys trigger the | ||||||
|  | 		hotkey and the F{1-12} keys are accessed via FN-F{1-12}. | ||||||
|  | 
 | ||||||
|  | What:		/sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/panel_power_on | ||||||
|  | Date:		February, 2015 | ||||||
|  | KernelVersion:	3.20 | ||||||
|  | Contact:	Azael Avalos <coproscefalo@gmail.com> | ||||||
|  | Description:	This file controls whether the laptop should turn ON whenever | ||||||
|  | 		the LID is opened, valid values are: | ||||||
|  | 			* 0 -> Disabled | ||||||
|  | 			* 1 -> Enabled | ||||||
|  | 
 | ||||||
|  | What:		/sys/devices/LNXSYSTM:00/LNXSYBUS:00/TOS{1900,620{0,7,8}}:00/usb_three | ||||||
|  | Date:		February, 2015 | ||||||
|  | KernelVersion:	3.20 | ||||||
|  | Contact:	Azael Avalos <coproscefalo@gmail.com> | ||||||
|  | Description:	This file controls whether the USB 3 functionality, valid | ||||||
|  | 		values are: | ||||||
|  | 			* 0 -> Disabled (Acts as a regular USB 2) | ||||||
|  | 			* 1 -> Enabled (Full USB 3 functionality) | ||||||
|  | @ -197,6 +197,7 @@ | ||||||
|    may be configured as a kernel built-in or a kernel loadable module. |    may be configured as a kernel built-in or a kernel loadable module. | ||||||
|    You can only make use of <constant>kgdbwait</constant> and early |    You can only make use of <constant>kgdbwait</constant> and early | ||||||
|    debugging if you build kgdboc into the kernel as a built-in. |    debugging if you build kgdboc into the kernel as a built-in. | ||||||
|  |    </para> | ||||||
|    <para>Optionally you can elect to activate kms (Kernel Mode |    <para>Optionally you can elect to activate kms (Kernel Mode | ||||||
|    Setting) integration.  When you use kms with kgdboc and you have a |    Setting) integration.  When you use kms with kgdboc and you have a | ||||||
|    video driver that has atomic mode setting hooks, it is possible to |    video driver that has atomic mode setting hooks, it is possible to | ||||||
|  | @ -206,7 +207,6 @@ | ||||||
|    crashes or doing analysis of memory with kdb while allowing the |    crashes or doing analysis of memory with kdb while allowing the | ||||||
|    full graphics console applications to run. |    full graphics console applications to run. | ||||||
|    </para> |    </para> | ||||||
|    </para> |  | ||||||
|    <sect2 id="kgdbocArgs"> |    <sect2 id="kgdbocArgs"> | ||||||
|    <title>kgdboc arguments</title> |    <title>kgdboc arguments</title> | ||||||
|    <para>Usage: <constant>kgdboc=[kms][[,]kbd][[,]serial_device][,baud]</constant></para> |    <para>Usage: <constant>kgdboc=[kms][[,]kbd][[,]serial_device][,baud]</constant></para> | ||||||
|  | @ -284,7 +284,6 @@ | ||||||
|    </listitem> |    </listitem> | ||||||
|    </orderedlist> |    </orderedlist> | ||||||
|    </para> |    </para> | ||||||
|    </sect3> |  | ||||||
|    <para>NOTE: Kgdboc does not support interrupting the target via the |    <para>NOTE: Kgdboc does not support interrupting the target via the | ||||||
|    gdb remote protocol.  You must manually send a sysrq-g unless you |    gdb remote protocol.  You must manually send a sysrq-g unless you | ||||||
|    have a proxy that splits console output to a terminal program. |    have a proxy that splits console output to a terminal program. | ||||||
|  | @ -305,6 +304,7 @@ | ||||||
|     as well as on the initial connect, or to use a debugger proxy that |     as well as on the initial connect, or to use a debugger proxy that | ||||||
|     allows an unmodified gdb to do the debugging. |     allows an unmodified gdb to do the debugging. | ||||||
|    </para> |    </para> | ||||||
|  |    </sect3> | ||||||
|    </sect2> |    </sect2> | ||||||
|    </sect1> |    </sect1> | ||||||
|    <sect1 id="kgdbwait"> |    <sect1 id="kgdbwait"> | ||||||
|  | @ -350,12 +350,12 @@ | ||||||
|    </para> |    </para> | ||||||
|    </listitem> |    </listitem> | ||||||
|    </orderedlist> |    </orderedlist> | ||||||
|  |   </para> | ||||||
|    <para>IMPORTANT NOTE: You cannot use kgdboc + kgdbcon on a tty that is an |    <para>IMPORTANT NOTE: You cannot use kgdboc + kgdbcon on a tty that is an | ||||||
|    active system console.  An example of incorrect usage is <constant>console=ttyS0,115200 kgdboc=ttyS0 kgdbcon</constant> |    active system console.  An example of incorrect usage is <constant>console=ttyS0,115200 kgdboc=ttyS0 kgdbcon</constant> | ||||||
|    </para> |    </para> | ||||||
|    <para>It is possible to use this option with kgdboc on a tty that is not a system console. |    <para>It is possible to use this option with kgdboc on a tty that is not a system console. | ||||||
|    </para> |    </para> | ||||||
|   </para> |  | ||||||
|   </sect1> |   </sect1> | ||||||
|    <sect1 id="kgdbreboot"> |    <sect1 id="kgdbreboot"> | ||||||
|    <title>Run time parameter: kgdbreboot</title> |    <title>Run time parameter: kgdbreboot</title> | ||||||
|  |  | ||||||
|  | @ -404,8 +404,8 @@ supported and the interface files "release_agent" and | ||||||
|   be understood as an underflow into the highest possible value, -2 or |   be understood as an underflow into the highest possible value, -2 or | ||||||
|   -10M etc. do not work, so it's not consistent. |   -10M etc. do not work, so it's not consistent. | ||||||
| 
 | 
 | ||||||
|   memory.low, memory.high, and memory.max will use the string |   memory.low, memory.high, and memory.max will use the string "max" to | ||||||
|   "infinity" to indicate and set the highest possible value. |   indicate and set the highest possible value. | ||||||
| 
 | 
 | ||||||
| 5. Planned Changes | 5. Planned Changes | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -73,6 +73,8 @@ the operations defined in clk.h: | ||||||
| 						unsigned long *parent_rate); | 						unsigned long *parent_rate); | ||||||
| 		long		(*determine_rate)(struct clk_hw *hw, | 		long		(*determine_rate)(struct clk_hw *hw, | ||||||
| 						unsigned long rate, | 						unsigned long rate, | ||||||
|  | 						unsigned long min_rate, | ||||||
|  | 						unsigned long max_rate, | ||||||
| 						unsigned long *best_parent_rate, | 						unsigned long *best_parent_rate, | ||||||
| 						struct clk_hw **best_parent_clk); | 						struct clk_hw **best_parent_clk); | ||||||
| 		int		(*set_parent)(struct clk_hw *hw, u8 index); | 		int		(*set_parent)(struct clk_hw *hw, u8 index); | ||||||
|  |  | ||||||
|  | @ -51,7 +51,7 @@ Parameters: <cipher> <key> <iv_offset> <device path> \ | ||||||
|     Otherwise #opt_params is the number of following arguments. |     Otherwise #opt_params is the number of following arguments. | ||||||
| 
 | 
 | ||||||
|     Example of optional parameters section: |     Example of optional parameters section: | ||||||
|         1 allow_discards |         3 allow_discards same_cpu_crypt submit_from_crypt_cpus | ||||||
| 
 | 
 | ||||||
| allow_discards | allow_discards | ||||||
|     Block discard requests (a.k.a. TRIM) are passed through the crypt device. |     Block discard requests (a.k.a. TRIM) are passed through the crypt device. | ||||||
|  | @ -63,6 +63,19 @@ allow_discards | ||||||
|     used space etc.) if the discarded blocks can be located easily on the |     used space etc.) if the discarded blocks can be located easily on the | ||||||
|     device later. |     device later. | ||||||
| 
 | 
 | ||||||
|  | same_cpu_crypt | ||||||
|  |     Perform encryption using the same cpu that IO was submitted on. | ||||||
|  |     The default is to use an unbound workqueue so that encryption work | ||||||
|  |     is automatically balanced between available CPUs. | ||||||
|  | 
 | ||||||
|  | submit_from_crypt_cpus | ||||||
|  |     Disable offloading writes to a separate thread after encryption. | ||||||
|  |     There are some situations where offloading write bios from the | ||||||
|  |     encryption threads to a single thread degrades performance | ||||||
|  |     significantly.  The default is to offload write bios to the same | ||||||
|  |     thread because it benefits CFQ to have writes submitted using the | ||||||
|  |     same context. | ||||||
|  | 
 | ||||||
| Example scripts | Example scripts | ||||||
| =============== | =============== | ||||||
| LUKS (Linux Unified Key Setup) is now the preferred way to set up disk | LUKS (Linux Unified Key Setup) is now the preferred way to set up disk | ||||||
|  |  | ||||||
|  | @ -34,6 +34,8 @@ Required Properties for Clock Controller: | ||||||
| 	- "samsung,exynos7-clock-peris" | 	- "samsung,exynos7-clock-peris" | ||||||
| 	- "samsung,exynos7-clock-fsys0" | 	- "samsung,exynos7-clock-fsys0" | ||||||
| 	- "samsung,exynos7-clock-fsys1" | 	- "samsung,exynos7-clock-fsys1" | ||||||
|  | 	- "samsung,exynos7-clock-mscl" | ||||||
|  | 	- "samsung,exynos7-clock-aud" | ||||||
| 
 | 
 | ||||||
|  - reg: physical base address of the controller and the length of |  - reg: physical base address of the controller and the length of | ||||||
| 	memory mapped region. | 	memory mapped region. | ||||||
|  | @ -53,6 +55,7 @@ Input clocks for top0 clock controller: | ||||||
| 	- dout_sclk_bus1_pll | 	- dout_sclk_bus1_pll | ||||||
| 	- dout_sclk_cc_pll | 	- dout_sclk_cc_pll | ||||||
| 	- dout_sclk_mfc_pll | 	- dout_sclk_mfc_pll | ||||||
|  | 	- dout_sclk_aud_pll | ||||||
| 
 | 
 | ||||||
| Input clocks for top1 clock controller: | Input clocks for top1 clock controller: | ||||||
| 	- fin_pll | 	- fin_pll | ||||||
|  | @ -76,6 +79,14 @@ Input clocks for peric1 clock controller: | ||||||
| 	- sclk_uart1 | 	- sclk_uart1 | ||||||
| 	- sclk_uart2 | 	- sclk_uart2 | ||||||
| 	- sclk_uart3 | 	- sclk_uart3 | ||||||
|  | 	- sclk_spi0 | ||||||
|  | 	- sclk_spi1 | ||||||
|  | 	- sclk_spi2 | ||||||
|  | 	- sclk_spi3 | ||||||
|  | 	- sclk_spi4 | ||||||
|  | 	- sclk_i2s1 | ||||||
|  | 	- sclk_pcm1 | ||||||
|  | 	- sclk_spdif | ||||||
| 
 | 
 | ||||||
| Input clocks for peris clock controller: | Input clocks for peris clock controller: | ||||||
| 	- fin_pll | 	- fin_pll | ||||||
|  | @ -91,3 +102,7 @@ Input clocks for fsys1 clock controller: | ||||||
| 	- dout_aclk_fsys1_200 | 	- dout_aclk_fsys1_200 | ||||||
| 	- dout_sclk_mmc0 | 	- dout_sclk_mmc0 | ||||||
| 	- dout_sclk_mmc1 | 	- dout_sclk_mmc1 | ||||||
|  | 
 | ||||||
|  | Input clocks for aud clock controller: | ||||||
|  | 	- fin_pll | ||||||
|  | 	- fout_aud_pll | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| NVIDIA Tegra124 Clock And Reset Controller | NVIDIA Tegra124 and Tegra132 Clock And Reset Controller | ||||||
| 
 | 
 | ||||||
| This binding uses the common clock binding: | This binding uses the common clock binding: | ||||||
| Documentation/devicetree/bindings/clock/clock-bindings.txt | Documentation/devicetree/bindings/clock/clock-bindings.txt | ||||||
|  | @ -7,14 +7,16 @@ The CAR (Clock And Reset) Controller on Tegra is the HW module responsible | ||||||
| for muxing and gating Tegra's clocks, and setting their rates. | for muxing and gating Tegra's clocks, and setting their rates. | ||||||
| 
 | 
 | ||||||
| Required properties : | Required properties : | ||||||
| - compatible : Should be "nvidia,tegra124-car" | - compatible : Should be "nvidia,tegra124-car" or "nvidia,tegra132-car" | ||||||
| - reg : Should contain CAR registers location and length | - reg : Should contain CAR registers location and length | ||||||
| - clocks : Should contain phandle and clock specifiers for two clocks: | - clocks : Should contain phandle and clock specifiers for two clocks: | ||||||
|   the 32 KHz "32k_in", and the board-specific oscillator "osc". |   the 32 KHz "32k_in", and the board-specific oscillator "osc". | ||||||
| - #clock-cells : Should be 1. | - #clock-cells : Should be 1. | ||||||
|   In clock consumers, this cell represents the clock ID exposed by the |   In clock consumers, this cell represents the clock ID exposed by the | ||||||
|   CAR. The assignments may be found in header file |   CAR. The assignments may be found in the header files | ||||||
|   <dt-bindings/clock/tegra124-car.h>. |   <dt-bindings/clock/tegra124-car-common.h> (which covers IDs common | ||||||
|  |   to Tegra124 and Tegra132) and <dt-bindings/clock/tegra124-car.h> | ||||||
|  |   (for Tegra124-specific clocks). | ||||||
| - #reset-cells : Should be 1. | - #reset-cells : Should be 1. | ||||||
|   In clock consumers, this cell represents the bit number in the CAR's |   In clock consumers, this cell represents the bit number in the CAR's | ||||||
|   array of CLK_RST_CONTROLLER_RST_DEVICES_* registers. |   array of CLK_RST_CONTROLLER_RST_DEVICES_* registers. | ||||||
|  |  | ||||||
							
								
								
									
										21
									
								
								Documentation/devicetree/bindings/clock/qcom,lcc.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								Documentation/devicetree/bindings/clock/qcom,lcc.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | ||||||
|  | Qualcomm LPASS Clock & Reset Controller Binding | ||||||
|  | ------------------------------------------------ | ||||||
|  | 
 | ||||||
|  | Required properties : | ||||||
|  | - compatible : shall contain only one of the following: | ||||||
|  | 
 | ||||||
|  | 			"qcom,lcc-msm8960" | ||||||
|  | 			"qcom,lcc-apq8064" | ||||||
|  | 			"qcom,lcc-ipq8064" | ||||||
|  | 
 | ||||||
|  | - reg : shall contain base register location and length | ||||||
|  | - #clock-cells : shall contain 1 | ||||||
|  | - #reset-cells : shall contain 1 | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | 	clock-controller@28000000 { | ||||||
|  | 		compatible = "qcom,lcc-ipq8064"; | ||||||
|  | 		reg = <0x28000000 0x1000>; | ||||||
|  | 		#clock-cells = <1>; | ||||||
|  | 		#reset-cells = <1>; | ||||||
|  | 	}; | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| * Clock Block on Freescale CoreNet Platforms | * Clock Block on Freescale QorIQ Platforms | ||||||
| 
 | 
 | ||||||
| Freescale CoreNet chips take primary clocking input from the external | Freescale qoriq chips take primary clocking input from the external | ||||||
| SYSCLK signal. The SYSCLK input (frequency) is multiplied using | SYSCLK signal. The SYSCLK input (frequency) is multiplied using | ||||||
| multiple phase locked loops (PLL) to create a variety of frequencies | multiple phase locked loops (PLL) to create a variety of frequencies | ||||||
| which can then be passed to a variety of internal logic, including | which can then be passed to a variety of internal logic, including | ||||||
|  | @ -29,6 +29,7 @@ Required properties: | ||||||
| 	* "fsl,t4240-clockgen" | 	* "fsl,t4240-clockgen" | ||||||
| 	* "fsl,b4420-clockgen" | 	* "fsl,b4420-clockgen" | ||||||
| 	* "fsl,b4860-clockgen" | 	* "fsl,b4860-clockgen" | ||||||
|  | 	* "fsl,ls1021a-clockgen" | ||||||
| 	Chassis clock strings include: | 	Chassis clock strings include: | ||||||
| 	* "fsl,qoriq-clockgen-1.0": for chassis 1.0 clocks | 	* "fsl,qoriq-clockgen-1.0": for chassis 1.0 clocks | ||||||
| 	* "fsl,qoriq-clockgen-2.0": for chassis 2.0 clocks | 	* "fsl,qoriq-clockgen-2.0": for chassis 2.0 clocks | ||||||
|  |  | ||||||
|  | @ -11,6 +11,7 @@ Required Properties: | ||||||
| 
 | 
 | ||||||
|   - compatible: Must be one of the following |   - compatible: Must be one of the following | ||||||
|     - "renesas,r7s72100-mstp-clocks" for R7S72100 (RZ) MSTP gate clocks |     - "renesas,r7s72100-mstp-clocks" for R7S72100 (RZ) MSTP gate clocks | ||||||
|  |     - "renesas,r8a73a4-mstp-clocks" for R8A73A4 (R-Mobile APE6) MSTP gate clocks | ||||||
|     - "renesas,r8a7740-mstp-clocks" for R8A7740 (R-Mobile A1) MSTP gate clocks |     - "renesas,r8a7740-mstp-clocks" for R8A7740 (R-Mobile A1) MSTP gate clocks | ||||||
|     - "renesas,r8a7779-mstp-clocks" for R8A7779 (R-Car H1) 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,r8a7790-mstp-clocks" for R8A7790 (R-Car H2) MSTP gate clocks | ||||||
|  |  | ||||||
|  | @ -0,0 +1,33 @@ | ||||||
|  | * Renesas R8A73A4 Clock Pulse Generator (CPG) | ||||||
|  | 
 | ||||||
|  | The CPG generates core clocks for the R8A73A4 SoC. It includes five PLLs | ||||||
|  | and several fixed ratio dividers. | ||||||
|  | 
 | ||||||
|  | Required Properties: | ||||||
|  | 
 | ||||||
|  |   - compatible: Must be "renesas,r8a73a4-cpg-clocks" | ||||||
|  | 
 | ||||||
|  |   - reg: Base address and length of the memory resource used by the CPG | ||||||
|  | 
 | ||||||
|  |   - clocks: Reference to the parent clocks ("extal1" and "extal2") | ||||||
|  | 
 | ||||||
|  |   - #clock-cells: Must be 1 | ||||||
|  | 
 | ||||||
|  |   - clock-output-names: The names of the clocks. Supported clocks are "main", | ||||||
|  |     "pll0", "pll1", "pll2", "pll2s", "pll2h", "z", "z2", "i", "m3", "b", | ||||||
|  |     "m1", "m2", "zx", "zs", and "hp". | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Example | ||||||
|  | ------- | ||||||
|  | 
 | ||||||
|  |         cpg_clocks: cpg_clocks@e6150000 { | ||||||
|  |                 compatible = "renesas,r8a73a4-cpg-clocks"; | ||||||
|  |                 reg = <0 0xe6150000 0 0x10000>; | ||||||
|  |                 clocks = <&extal1_clk>, <&extal2_clk>; | ||||||
|  |                 #clock-cells = <1>; | ||||||
|  |                 clock-output-names = "main", "pll0", "pll1", "pll2", | ||||||
|  |                                      "pll2s", "pll2h", "z", "z2", | ||||||
|  |                                      "i", "m3", "b", "m1", "m2", | ||||||
|  |                                      "zx", "zs", "hp"; | ||||||
|  |         }; | ||||||
|  | @ -8,15 +8,18 @@ Required Properties: | ||||||
|   - compatible: Must be one of |   - compatible: Must be one of | ||||||
|     - "renesas,r8a7790-cpg-clocks" for the r8a7790 CPG |     - "renesas,r8a7790-cpg-clocks" for the r8a7790 CPG | ||||||
|     - "renesas,r8a7791-cpg-clocks" for the r8a7791 CPG |     - "renesas,r8a7791-cpg-clocks" for the r8a7791 CPG | ||||||
|  |     - "renesas,r8a7793-cpg-clocks" for the r8a7793 CPG | ||||||
|     - "renesas,r8a7794-cpg-clocks" for the r8a7794 CPG |     - "renesas,r8a7794-cpg-clocks" for the r8a7794 CPG | ||||||
|     - "renesas,rcar-gen2-cpg-clocks" for the generic R-Car Gen2 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 |   - reg: Base address and length of the memory resource used by the CPG | ||||||
| 
 | 
 | ||||||
|   - clocks: Reference to the parent clock |   - clocks: References to the parent clocks: first to the EXTAL clock, second | ||||||
|  |     to the USB_EXTAL clock | ||||||
|   - #clock-cells: Must be 1 |   - #clock-cells: Must be 1 | ||||||
|   - clock-output-names: The names of the clocks. Supported clocks are "main", |   - clock-output-names: The names of the clocks. Supported clocks are "main", | ||||||
|     "pll0", "pll1", "pll3", "lb", "qspi", "sdh", "sd0", "sd1" and "z" |     "pll0", "pll1", "pll3", "lb", "qspi", "sdh", "sd0", "sd1", "z", "rcan", and | ||||||
|  |     "adsp" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Example | Example | ||||||
|  | @ -26,8 +29,9 @@ Example | ||||||
| 		compatible = "renesas,r8a7790-cpg-clocks", | 		compatible = "renesas,r8a7790-cpg-clocks", | ||||||
| 			     "renesas,rcar-gen2-cpg-clocks"; | 			     "renesas,rcar-gen2-cpg-clocks"; | ||||||
| 		reg = <0 0xe6150000 0 0x1000>; | 		reg = <0 0xe6150000 0 0x1000>; | ||||||
| 		clocks = <&extal_clk>; | 		clocks = <&extal_clk &usb_extal_clk>; | ||||||
| 		#clock-cells = <1>; | 		#clock-cells = <1>; | ||||||
| 		clock-output-names = "main", "pll0, "pll1", "pll3", | 		clock-output-names = "main", "pll0, "pll1", "pll3", | ||||||
| 				     "lb", "qspi", "sdh", "sd0", "sd1", "z"; | 				     "lb", "qspi", "sdh", "sd0", "sd1", "z", | ||||||
|  | 				     "rcan", "adsp"; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|  | @ -26,7 +26,7 @@ Required properties: | ||||||
| 	"allwinner,sun5i-a10s-ahb-gates-clk" - for the AHB gates on A10s | 	"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,sun7i-a20-ahb-gates-clk" - for the AHB gates on A20 | ||||||
| 	"allwinner,sun6i-a31-ar100-clk" - for the AR100 on A31 | 	"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-clk" - for the AHB1 clock on A31 | ||||||
| 	"allwinner,sun6i-a31-ahb1-gates-clk" - for the AHB1 gates on A31 | 	"allwinner,sun6i-a31-ahb1-gates-clk" - for the AHB1 gates on A31 | ||||||
| 	"allwinner,sun8i-a23-ahb1-gates-clk" - for the AHB1 gates on A23 | 	"allwinner,sun8i-a23-ahb1-gates-clk" - for the AHB1 gates on A23 | ||||||
| 	"allwinner,sun9i-a80-ahb0-gates-clk" - for the AHB0 gates on A80 | 	"allwinner,sun9i-a80-ahb0-gates-clk" - for the AHB0 gates on A80 | ||||||
|  | @ -55,9 +55,11 @@ Required properties: | ||||||
| 	"allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31 | 	"allwinner,sun6i-a31-apb2-gates-clk" - for the APB2 gates on A31 | ||||||
| 	"allwinner,sun8i-a23-apb2-gates-clk" - for the APB2 gates on A23 | 	"allwinner,sun8i-a23-apb2-gates-clk" - for the APB2 gates on A23 | ||||||
| 	"allwinner,sun5i-a13-mbus-clk" - for the MBUS clock on A13 | 	"allwinner,sun5i-a13-mbus-clk" - for the MBUS clock on A13 | ||||||
| 	"allwinner,sun4i-a10-mmc-output-clk" - for the MMC output clock on A10 | 	"allwinner,sun4i-a10-mmc-clk" - for the MMC clock | ||||||
| 	"allwinner,sun4i-a10-mmc-sample-clk" - for the MMC sample clock on A10 | 	"allwinner,sun9i-a80-mmc-clk" - for mmc module clocks on A80 | ||||||
|  | 	"allwinner,sun9i-a80-mmc-config-clk" - for mmc gates + resets on A80 | ||||||
| 	"allwinner,sun4i-a10-mod0-clk" - for the module 0 family of clocks | 	"allwinner,sun4i-a10-mod0-clk" - for the module 0 family of clocks | ||||||
|  | 	"allwinner,sun9i-a80-mod0-clk" - for module 0 (storage) clocks on A80 | ||||||
| 	"allwinner,sun8i-a23-mbus-clk" - for the MBUS clock on A23 | 	"allwinner,sun8i-a23-mbus-clk" - for the MBUS clock on A23 | ||||||
| 	"allwinner,sun7i-a20-out-clk" - for the external output 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,sun7i-a20-gmac-clk" - for the GMAC clock module on A20/A31 | ||||||
|  | @ -73,7 +75,9 @@ Required properties for all clocks: | ||||||
| - #clock-cells : from common clock binding; shall be set to 0 except for | - #clock-cells : from common clock binding; shall be set to 0 except for | ||||||
| 	the following compatibles where it shall be set to 1: | 	the following compatibles where it shall be set to 1: | ||||||
| 	"allwinner,*-gates-clk", "allwinner,sun4i-pll5-clk", | 	"allwinner,*-gates-clk", "allwinner,sun4i-pll5-clk", | ||||||
| 	"allwinner,sun4i-pll6-clk", "allwinner,sun6i-a31-pll6-clk" | 	"allwinner,sun4i-pll6-clk", "allwinner,sun6i-a31-pll6-clk", | ||||||
|  | 	"allwinner,*-usb-clk", "allwinner,*-mmc-clk", | ||||||
|  | 	"allwinner,*-mmc-config-clk" | ||||||
| - clock-output-names : shall be the corresponding names of the outputs. | - clock-output-names : shall be the corresponding names of the outputs. | ||||||
| 	If the clock module only has one output, the name shall be the | 	If the clock module only has one output, the name shall be the | ||||||
| 	module name. | 	module name. | ||||||
|  | @ -81,6 +85,10 @@ Required properties for all clocks: | ||||||
| And "allwinner,*-usb-clk" clocks also require: | And "allwinner,*-usb-clk" clocks also require: | ||||||
| - reset-cells : shall be set to 1 | - reset-cells : shall be set to 1 | ||||||
| 
 | 
 | ||||||
|  | The "allwinner,sun9i-a80-mmc-config-clk" clock also requires: | ||||||
|  | - #reset-cells : shall be set to 1 | ||||||
|  | - resets : shall be the reset control phandle for the mmc block. | ||||||
|  | 
 | ||||||
| For "allwinner,sun7i-a20-gmac-clk", the parent clocks shall be fixed rate | For "allwinner,sun7i-a20-gmac-clk", the parent clocks shall be fixed rate | ||||||
| dummy clocks at 25 MHz and 125 MHz, respectively. See example. | dummy clocks at 25 MHz and 125 MHz, respectively. See example. | ||||||
| 
 | 
 | ||||||
|  | @ -95,6 +103,14 @@ For "allwinner,sun6i-a31-pll6-clk", there are 2 outputs. The first output | ||||||
| is the normal PLL6 output, or "pll6". The second output is rate doubled | is the normal PLL6 output, or "pll6". The second output is rate doubled | ||||||
| PLL6, or "pll6x2". | PLL6, or "pll6x2". | ||||||
| 
 | 
 | ||||||
|  | The "allwinner,*-mmc-clk" clocks have three different outputs: the | ||||||
|  | main clock, with the ID 0, and the output and sample clocks, with the | ||||||
|  | IDs 1 and 2, respectively. | ||||||
|  | 
 | ||||||
|  | The "allwinner,sun9i-a80-mmc-config-clk" clock has one clock/reset output | ||||||
|  | per mmc controller. The number of outputs is determined by the size of | ||||||
|  | the address block, which is related to the overall mmc block. | ||||||
|  | 
 | ||||||
| For example: | For example: | ||||||
| 
 | 
 | ||||||
| osc24M: clk@01c20050 { | osc24M: clk@01c20050 { | ||||||
|  | @ -138,11 +154,11 @@ cpu: cpu@01c20054 { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| mmc0_clk: clk@01c20088 { | mmc0_clk: clk@01c20088 { | ||||||
| 	#clock-cells = <0>; | 	#clock-cells = <1>; | ||||||
| 	compatible = "allwinner,sun4i-mod0-clk"; | 	compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 	reg = <0x01c20088 0x4>; | 	reg = <0x01c20088 0x4>; | ||||||
| 	clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 	clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | ||||||
| 	clock-output-names = "mmc0"; | 	clock-output-names = "mmc0", "mmc0_output", "mmc0_sample"; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| mii_phy_tx_clk: clk@2 { | mii_phy_tx_clk: clk@2 { | ||||||
|  | @ -170,3 +186,16 @@ gmac_clk: clk@01c20164 { | ||||||
| 	clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>; | 	clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>; | ||||||
| 	clock-output-names = "gmac"; | 	clock-output-names = "gmac"; | ||||||
| }; | }; | ||||||
|  | 
 | ||||||
|  | mmc_config_clk: clk@01c13000 { | ||||||
|  | 	compatible = "allwinner,sun9i-a80-mmc-config-clk"; | ||||||
|  | 	reg = <0x01c13000 0x10>; | ||||||
|  | 	clocks = <&ahb0_gates 8>; | ||||||
|  | 	clock-names = "ahb"; | ||||||
|  | 	resets = <&ahb0_resets 8>; | ||||||
|  | 	reset-names = "ahb"; | ||||||
|  | 	#clock-cells = <1>; | ||||||
|  | 	#reset-cells = <1>; | ||||||
|  | 	clock-output-names = "mmc0_config", "mmc1_config", | ||||||
|  | 			     "mmc2_config", "mmc3_config"; | ||||||
|  | }; | ||||||
|  |  | ||||||
							
								
								
									
										42
									
								
								Documentation/devicetree/bindings/clock/ti,cdce706.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								Documentation/devicetree/bindings/clock/ti,cdce706.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,42 @@ | ||||||
|  | Bindings for Texas Instruments CDCE706 programmable 3-PLL clock | ||||||
|  | synthesizer/multiplier/divider. | ||||||
|  | 
 | ||||||
|  | Reference: http://www.ti.com/lit/ds/symlink/cdce706.pdf | ||||||
|  | 
 | ||||||
|  | I2C device node required properties: | ||||||
|  | - compatible: shall be "ti,cdce706". | ||||||
|  | - reg: i2c device address, shall be in range [0x68...0x6b]. | ||||||
|  | - #clock-cells: from common clock binding; shall be set to 1. | ||||||
|  | - clocks: from common clock binding; list of parent clock | ||||||
|  |   handles, shall be reference clock(s) connected to CLK_IN0 | ||||||
|  |   and CLK_IN1 pins. | ||||||
|  | - clock-names: shall be clk_in0 and/or clk_in1. Use clk_in0 | ||||||
|  |   in case of crystal oscillator or differential signal input | ||||||
|  |   configuration. Use clk_in0 and clk_in1 in case of independent | ||||||
|  |   single-ended LVCMOS inputs configuration. | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | 
 | ||||||
|  | 	clocks { | ||||||
|  | 		clk54: clk54 { | ||||||
|  | 			#clock-cells = <0>; | ||||||
|  | 			compatible = "fixed-clock"; | ||||||
|  | 			clock-frequency = <54000000>; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | 	... | ||||||
|  | 	i2c0: i2c-master@0d090000 { | ||||||
|  | 		... | ||||||
|  | 		cdce706: clock-synth@69 { | ||||||
|  | 			compatible = "ti,cdce706"; | ||||||
|  | 			#clock-cells = <1>; | ||||||
|  | 			reg = <0x69>; | ||||||
|  | 			clocks = <&clk54>; | ||||||
|  | 			clock-names = "clk_in0"; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | 	... | ||||||
|  | 	simple-audio-card,codec { | ||||||
|  | 		... | ||||||
|  | 		clocks = <&cdce706 4>; | ||||||
|  | 	}; | ||||||
							
								
								
									
										33
									
								
								Documentation/devicetree/bindings/clock/ti/fapll.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								Documentation/devicetree/bindings/clock/ti/fapll.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,33 @@ | ||||||
|  | Binding for Texas Instruments FAPLL 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 FAPLL with usually two selectable input clocks | ||||||
|  | (reference clock and bypass clock), and one or more child | ||||||
|  | syntesizers. | ||||||
|  | 
 | ||||||
|  | [1] Documentation/devicetree/bindings/clock/clock-bindings.txt | ||||||
|  | 
 | ||||||
|  | Required properties: | ||||||
|  | - compatible : shall be "ti,dm816-fapll-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 FAPLL. | ||||||
|  | 
 | ||||||
|  | Examples: | ||||||
|  | 	main_fapll: main_fapll { | ||||||
|  | 		#clock-cells = <1>; | ||||||
|  | 		compatible = "ti,dm816-fapll-clock"; | ||||||
|  | 		reg = <0x400 0x40>; | ||||||
|  | 		clocks = <&sys_clkin_ck &sys_clkin_ck>; | ||||||
|  | 		clock-indices = <1>, <2>, <3>, <4>, <5>, | ||||||
|  | 				<6>, <7>; | ||||||
|  | 		clock-output-names = "main_pll_clk1", | ||||||
|  | 				     "main_pll_clk2", | ||||||
|  | 				     "main_pll_clk3", | ||||||
|  | 				     "main_pll_clk4", | ||||||
|  | 				     "main_pll_clk5", | ||||||
|  | 				     "main_pll_clk6", | ||||||
|  | 				     "main_pll_clk7"; | ||||||
|  | 	}; | ||||||
							
								
								
									
										57
									
								
								Documentation/devicetree/bindings/dma/img-mdc-dma.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								Documentation/devicetree/bindings/dma/img-mdc-dma.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,57 @@ | ||||||
|  | * IMG Multi-threaded DMA Controller (MDC) | ||||||
|  | 
 | ||||||
|  | Required properties: | ||||||
|  | - compatible: Must be "img,pistachio-mdc-dma". | ||||||
|  | - reg: Must contain the base address and length of the MDC registers. | ||||||
|  | - interrupts: Must contain all the per-channel DMA interrupts. | ||||||
|  | - clocks: Must contain an entry for each entry in clock-names. | ||||||
|  |   See ../clock/clock-bindings.txt for details. | ||||||
|  | - clock-names: Must include the following entries: | ||||||
|  |   - sys: MDC system interface clock. | ||||||
|  | - img,cr-periph: Must contain a phandle to the peripheral control syscon | ||||||
|  |   node which contains the DMA request to channel mapping registers. | ||||||
|  | - img,max-burst-multiplier: Must be the maximum supported burst size multiplier. | ||||||
|  |   The maximum burst size is this value multiplied by the hardware-reported bus | ||||||
|  |   width. | ||||||
|  | - #dma-cells: Must be 3: | ||||||
|  |   - The first cell is the peripheral's DMA request line. | ||||||
|  |   - The second cell is a bitmap specifying to which channels the DMA request | ||||||
|  |     line may be mapped (i.e. bit N set indicates channel N is usable). | ||||||
|  |   - The third cell is the thread ID to be used by the channel. | ||||||
|  | 
 | ||||||
|  | Optional properties: | ||||||
|  | - dma-channels: Number of supported DMA channels, up to 32.  If not specified | ||||||
|  |   the number reported by the hardware is used. | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | 
 | ||||||
|  | mdc: dma-controller@18143000 { | ||||||
|  | 	compatible = "img,pistachio-mdc-dma"; | ||||||
|  | 	reg = <0x18143000 0x1000>; | ||||||
|  | 	interrupts = <GIC_SHARED 27 IRQ_TYPE_LEVEL_HIGH>, | ||||||
|  | 		     <GIC_SHARED 28 IRQ_TYPE_LEVEL_HIGH>, | ||||||
|  | 		     <GIC_SHARED 29 IRQ_TYPE_LEVEL_HIGH>, | ||||||
|  | 		     <GIC_SHARED 30 IRQ_TYPE_LEVEL_HIGH>, | ||||||
|  | 		     <GIC_SHARED 31 IRQ_TYPE_LEVEL_HIGH>, | ||||||
|  | 		     <GIC_SHARED 32 IRQ_TYPE_LEVEL_HIGH>, | ||||||
|  | 		     <GIC_SHARED 33 IRQ_TYPE_LEVEL_HIGH>, | ||||||
|  | 		     <GIC_SHARED 34 IRQ_TYPE_LEVEL_HIGH>, | ||||||
|  | 		     <GIC_SHARED 35 IRQ_TYPE_LEVEL_HIGH>, | ||||||
|  | 		     <GIC_SHARED 36 IRQ_TYPE_LEVEL_HIGH>, | ||||||
|  | 		     <GIC_SHARED 37 IRQ_TYPE_LEVEL_HIGH>, | ||||||
|  | 		     <GIC_SHARED 38 IRQ_TYPE_LEVEL_HIGH>; | ||||||
|  | 	clocks = <&system_clk>; | ||||||
|  | 	clock-names = "sys"; | ||||||
|  | 
 | ||||||
|  | 	img,max-burst-multiplier = <16>; | ||||||
|  | 	img,cr-periph = <&cr_periph>; | ||||||
|  | 
 | ||||||
|  | 	#dma-cells = <3>; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | spi@18100f00 { | ||||||
|  | 	... | ||||||
|  | 	dmas = <&mdc 9 0xffffffff 0>, <&mdc 10 0xffffffff 0>; | ||||||
|  | 	dma-names = "tx", "rx"; | ||||||
|  | 	... | ||||||
|  | }; | ||||||
|  | @ -5,9 +5,6 @@ controller instances named DMAC capable of serving multiple clients. Channels | ||||||
| can be dedicated to specific clients or shared between a large number of | can be dedicated to specific clients or shared between a large number of | ||||||
| clients. | clients. | ||||||
| 
 | 
 | ||||||
| DMA clients are connected to the DMAC ports referenced by an 8-bit identifier |  | ||||||
| called MID/RID. |  | ||||||
| 
 |  | ||||||
| Each DMA client is connected to one dedicated port of the DMAC, identified by | Each DMA client is connected to one dedicated port of the DMAC, identified by | ||||||
| an 8-bit port number called the MID/RID. A DMA controller can thus serve up to | an 8-bit port number called the MID/RID. A DMA controller can thus serve up to | ||||||
| 256 clients in total. When the number of hardware channels is lower than the | 256 clients in total. When the number of hardware channels is lower than the | ||||||
|  |  | ||||||
|  | @ -38,7 +38,7 @@ Example: | ||||||
| 		chan_allocation_order = <1>; | 		chan_allocation_order = <1>; | ||||||
| 		chan_priority = <1>; | 		chan_priority = <1>; | ||||||
| 		block_size = <0xfff>; | 		block_size = <0xfff>; | ||||||
| 		data_width = <3 3 0 0>; | 		data_width = <3 3>; | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| DMA clients connected to the Designware DMA controller must use the format | DMA clients connected to the Designware DMA controller must use the format | ||||||
|  |  | ||||||
							
								
								
									
										37
									
								
								Documentation/devicetree/bindings/i2c/brcm,iproc-i2c.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								Documentation/devicetree/bindings/i2c/brcm,iproc-i2c.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,37 @@ | ||||||
|  | Broadcom iProc I2C controller | ||||||
|  | 
 | ||||||
|  | Required properties: | ||||||
|  | 
 | ||||||
|  | - compatible: | ||||||
|  |     Must be "brcm,iproc-i2c" | ||||||
|  | 
 | ||||||
|  | - reg: | ||||||
|  |     Define the base and range of the I/O address space that contain the iProc | ||||||
|  |     I2C controller registers | ||||||
|  | 
 | ||||||
|  | - interrupts: | ||||||
|  |     Should contain the I2C interrupt | ||||||
|  | 
 | ||||||
|  | - clock-frequency: | ||||||
|  |     This is the I2C bus clock. Need to be either 100000 or 400000 | ||||||
|  | 
 | ||||||
|  | - #address-cells: | ||||||
|  |     Always 1 (for I2C addresses) | ||||||
|  | 
 | ||||||
|  | - #size-cells: | ||||||
|  |     Always 0 | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | 	i2c0: i2c@18008000 { | ||||||
|  | 		compatible = "brcm,iproc-i2c"; | ||||||
|  | 		reg = <0x18008000 0x100>; | ||||||
|  | 		#address-cells = <1>; | ||||||
|  | 		#size-cells = <0>; | ||||||
|  | 		interrupts = <GIC_SPI 85 IRQ_TYPE_NONE>; | ||||||
|  | 		clock-frequency = <100000>; | ||||||
|  | 
 | ||||||
|  | 		codec: wm8750@1a { | ||||||
|  | 			compatible = "wlf,wm8750"; | ||||||
|  | 			reg = <0x1a>; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | @ -16,6 +16,9 @@ Required Properties: | ||||||
| Optional Properties: | Optional Properties: | ||||||
| 
 | 
 | ||||||
|   - reset-gpios: Reference to the GPIO connected to the reset input. |   - reset-gpios: Reference to the GPIO connected to the reset input. | ||||||
|  |   - i2c-mux-idle-disconnect: Boolean; if defined, forces mux to disconnect all | ||||||
|  |     children in idle state. This is necessary for example, if there are several | ||||||
|  |     multiplexers on the bus and the devices behind them use same I2C addresses. | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Example: | Example: | ||||||
|  |  | ||||||
|  | @ -4,16 +4,34 @@ Required properties: | ||||||
| - compatible      : "opencores,i2c-ocores" or "aeroflexgaisler,i2cmst" | - compatible      : "opencores,i2c-ocores" or "aeroflexgaisler,i2cmst" | ||||||
| - reg             : bus address start and address range size of device | - reg             : bus address start and address range size of device | ||||||
| - interrupts      : interrupt number | - interrupts      : interrupt number | ||||||
| - clock-frequency : frequency of bus clock in Hz | - clocks          : handle to the controller clock; see the note below. | ||||||
|  |                     Mutually exclusive with opencores,ip-clock-frequency | ||||||
|  | - opencores,ip-clock-frequency: frequency of the controller clock in Hz; | ||||||
|  |                     see the note below. Mutually exclusive with clocks | ||||||
| - #address-cells  : should be <1> | - #address-cells  : should be <1> | ||||||
| - #size-cells     : should be <0> | - #size-cells     : should be <0> | ||||||
| 
 | 
 | ||||||
| Optional properties: | Optional properties: | ||||||
|  | - clock-frequency : frequency of bus clock in Hz; see the note below. | ||||||
|  |                     Defaults to 100 KHz when the property is not specified | ||||||
| - reg-shift       : device register offsets are shifted by this value | - reg-shift       : device register offsets are shifted by this value | ||||||
| - reg-io-width    : io register width in bytes (1, 2 or 4) | - reg-io-width    : io register width in bytes (1, 2 or 4) | ||||||
| - regstep         : deprecated, use reg-shift above | - regstep         : deprecated, use reg-shift above | ||||||
| 
 | 
 | ||||||
| Example: | Note | ||||||
|  | clock-frequency property is meant to control the bus frequency for i2c bus | ||||||
|  | drivers, but it was incorrectly used to specify i2c controller input clock | ||||||
|  | frequency. So the following rules are set to fix this situation: | ||||||
|  | - if clock-frequency is present and neither opencores,ip-clock-frequency nor | ||||||
|  |   clocks are, then clock-frequency specifies i2c controller clock frequency. | ||||||
|  |   This is to keep backwards compatibility with setups using old DTB. i2c bus | ||||||
|  |   frequency is fixed at 100 KHz. | ||||||
|  | - if clocks is present it specifies i2c controller clock. clock-frequency | ||||||
|  |   property specifies i2c bus frequency. | ||||||
|  | - if opencores,ip-clock-frequency is present it specifies i2c controller | ||||||
|  |   clock frequency. clock-frequency property specifies i2c bus frequency. | ||||||
|  | 
 | ||||||
|  | Examples: | ||||||
| 
 | 
 | ||||||
| 	i2c0: ocores@a0000000 { | 	i2c0: ocores@a0000000 { | ||||||
| 		#address-cells = <1>; | 		#address-cells = <1>; | ||||||
|  | @ -21,7 +39,25 @@ Example: | ||||||
| 		compatible = "opencores,i2c-ocores"; | 		compatible = "opencores,i2c-ocores"; | ||||||
| 		reg = <0xa0000000 0x8>; | 		reg = <0xa0000000 0x8>; | ||||||
| 		interrupts = <10>; | 		interrupts = <10>; | ||||||
| 		clock-frequency = <20000000>; | 		opencores,ip-clock-frequency = <20000000>; | ||||||
|  | 
 | ||||||
|  | 		reg-shift = <0>;	/* 8 bit registers */ | ||||||
|  | 		reg-io-width = <1>;	/* 8 bit read/write */ | ||||||
|  | 
 | ||||||
|  | 		dummy@60 { | ||||||
|  | 			compatible = "dummy"; | ||||||
|  | 			reg = <0x60>; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | or | ||||||
|  | 	i2c0: ocores@a0000000 { | ||||||
|  | 		#address-cells = <1>; | ||||||
|  | 		#size-cells = <0>; | ||||||
|  | 		compatible = "opencores,i2c-ocores"; | ||||||
|  | 		reg = <0xa0000000 0x8>; | ||||||
|  | 		interrupts = <10>; | ||||||
|  | 		clocks = <&osc>; | ||||||
|  | 		clock-frequency = <400000>; /* i2c bus frequency 400 KHz */ | ||||||
| 
 | 
 | ||||||
| 		reg-shift = <0>;	/* 8 bit registers */ | 		reg-shift = <0>;	/* 8 bit registers */ | ||||||
| 		reg-io-width = <1>;	/* 8 bit read/write */ | 		reg-io-width = <1>;	/* 8 bit read/write */ | ||||||
|  |  | ||||||
|  | @ -21,6 +21,17 @@ Required on RK3066, RK3188 : | ||||||
| Optional properties : | Optional properties : | ||||||
| 
 | 
 | ||||||
|  - clock-frequency : SCL frequency to use (in Hz). If omitted, 100kHz is used. |  - clock-frequency : SCL frequency to use (in Hz). If omitted, 100kHz is used. | ||||||
|  |  - i2c-scl-rising-time-ns : Number of nanoseconds the SCL signal takes to rise | ||||||
|  | 	(t(r) in I2C specification). If not specified this is assumed to be | ||||||
|  | 	the maximum the specification allows(1000 ns for Standard-mode, | ||||||
|  | 	300 ns for Fast-mode) which might cause slightly slower communication. | ||||||
|  |  - i2c-scl-falling-time-ns : Number of nanoseconds the SCL signal takes to fall | ||||||
|  | 	(t(f) in the I2C specification). If not specified this is assumed to | ||||||
|  | 	be the maximum the specification allows (300 ns) which might cause | ||||||
|  | 	slightly slower communication. | ||||||
|  |  - i2c-sda-falling-time-ns : Number of nanoseconds the SDA signal takes to fall | ||||||
|  | 	(t(f) in the I2C specification). If not specified we'll use the SCL | ||||||
|  | 	value since they are the same in nearly all cases. | ||||||
| 
 | 
 | ||||||
| Example: | Example: | ||||||
| 
 | 
 | ||||||
|  | @ -39,4 +50,7 @@ i2c0: i2c@2002d000 { | ||||||
| 
 | 
 | ||||||
| 	clock-names = "i2c"; | 	clock-names = "i2c"; | ||||||
| 	clocks = <&cru PCLK_I2C0>; | 	clocks = <&cru PCLK_I2C0>; | ||||||
|  | 
 | ||||||
|  | 	i2c-scl-rising-time-ns = <800>; | ||||||
|  | 	i2c-scl-falling-time-ns = <100>; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -61,9 +61,8 @@ fsl,sgtl5000		SGTL5000: Ultra Low-Power Audio Codec | ||||||
| gmt,g751		G751: Digital Temperature Sensor and Thermal Watchdog with Two-Wire Interface | 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,slb9635tt	Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz) | ||||||
| infineon,slb9645tt	Infineon SLB9645 I2C TPM (new protocol, max 400khz) | infineon,slb9645tt	Infineon SLB9645 I2C TPM (new protocol, max 400khz) | ||||||
| isl,isl12057		Intersil ISL12057 I2C RTC Chip | isil,isl12057		Intersil ISL12057 I2C RTC Chip | ||||||
| isil,isl29028           (deprecated, use isl) | isil,isl29028		Intersil ISL29028 Ambient Light and Proximity Sensor | ||||||
| isl,isl29028            Intersil ISL29028 Ambient Light and Proximity Sensor |  | ||||||
| maxim,ds1050		5 Bit Programmable, Pulse-Width Modulator | maxim,ds1050		5 Bit Programmable, Pulse-Width Modulator | ||||||
| maxim,max1237		Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs | 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 | maxim,max6625		9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface | ||||||
|  |  | ||||||
							
								
								
									
										93
									
								
								Documentation/devicetree/bindings/mfd/da9063.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								Documentation/devicetree/bindings/mfd/da9063.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,93 @@ | ||||||
|  | * Dialog DA9063 Power Management Integrated Circuit (PMIC) | ||||||
|  | 
 | ||||||
|  | DA9093 consists of a large and varied group of sub-devices (I2C Only): | ||||||
|  | 
 | ||||||
|  | Device                   Supply Names    Description | ||||||
|  | ------                   ------------    ----------- | ||||||
|  | da9063-regulator        :               : LDOs & BUCKs | ||||||
|  | da9063-rtc              :               : Real-Time Clock | ||||||
|  | da9063-watchdog         :               : Watchdog | ||||||
|  | 
 | ||||||
|  | ====== | ||||||
|  | 
 | ||||||
|  | Required properties: | ||||||
|  | 
 | ||||||
|  | - compatible : Should be "dlg,da9063" | ||||||
|  | - reg : Specifies the I2C slave address (this defaults to 0x58 but it can be | ||||||
|  |   modified to match the chip's OTP settings). | ||||||
|  | - interrupt-parent : Specifies the reference to the interrupt controller for | ||||||
|  |   the DA9063. | ||||||
|  | - interrupts : IRQ line information. | ||||||
|  | - interrupt-controller | ||||||
|  | 
 | ||||||
|  | Sub-nodes: | ||||||
|  | 
 | ||||||
|  | - regulators : This node defines the settings for the LDOs and BUCKs. The | ||||||
|  |   DA9063 regulators are bound using their names listed below: | ||||||
|  | 
 | ||||||
|  |     bcore1    : BUCK CORE1 | ||||||
|  |     bcore2    : BUCK CORE2 | ||||||
|  |     bpro      : BUCK PRO | ||||||
|  |     bmem      : BUCK MEM | ||||||
|  |     bio       : BUCK IO | ||||||
|  |     bperi     : BUCK PERI | ||||||
|  |     ldo1      : LDO_1 | ||||||
|  |     ldo2      : LDO_2 | ||||||
|  |     ldo3      : LDO_3 | ||||||
|  |     ldo4      : LDO_4 | ||||||
|  |     ldo5      : LDO_5 | ||||||
|  |     ldo6      : LDO_6 | ||||||
|  |     ldo7      : LDO_7 | ||||||
|  |     ldo8      : LDO_8 | ||||||
|  |     ldo9      : LDO_9 | ||||||
|  |     ldo10     : LDO_10 | ||||||
|  |     ldo11     : LDO_11 | ||||||
|  | 
 | ||||||
|  |   The component follows the standard regulator framework and the bindings | ||||||
|  |   details of individual regulator device can be found in: | ||||||
|  |   Documentation/devicetree/bindings/regulator/regulator.txt | ||||||
|  | 
 | ||||||
|  | - rtc : This node defines settings for the Real-Time Clock associated with | ||||||
|  |   the DA9063. There are currently no entries in this binding, however | ||||||
|  |   compatible = "dlg,da9063-rtc" should be added if a node is created. | ||||||
|  | 
 | ||||||
|  | - watchdog : This node defines settings for the Watchdog timer associated | ||||||
|  |   with the DA9063. There are currently no entries in this binding, however | ||||||
|  |   compatible = "dlg,da9063-watchdog" should be added if a node is created. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | 
 | ||||||
|  | 	pmic0: da9063@58 { | ||||||
|  | 		compatible = "dlg,da9063" | ||||||
|  | 		reg = <0x58>; | ||||||
|  | 		interrupt-parent = <&gpio6>; | ||||||
|  | 		interrupts = <11 IRQ_TYPE_LEVEL_LOW>; | ||||||
|  | 		interrupt-controller; | ||||||
|  | 
 | ||||||
|  | 		rtc { | ||||||
|  | 			compatible = "dlg,da9063-rtc"; | ||||||
|  | 		}; | ||||||
|  | 
 | ||||||
|  | 		wdt { | ||||||
|  | 			compatible = "dlg,da9063-watchdog"; | ||||||
|  | 		}; | ||||||
|  | 
 | ||||||
|  | 		regulators { | ||||||
|  | 			DA9063_BCORE1: bcore1 { | ||||||
|  | 				regulator-name = "BCORE1"; | ||||||
|  | 				regulator-min-microvolt = <300000>; | ||||||
|  | 				regulator-max-microvolt = <1570000>; | ||||||
|  | 				regulator-min-microamp = <500000>; | ||||||
|  | 				regulator-max-microamp = <2000000>; | ||||||
|  | 				regulator-boot-on; | ||||||
|  | 			}; | ||||||
|  | 			DA9063_LDO11: ldo11 { | ||||||
|  | 				regulator-name = "LDO_11"; | ||||||
|  | 				regulator-min-microvolt = <900000>; | ||||||
|  | 				regulator-max-microvolt = <3600000>; | ||||||
|  | 				regulator-boot-on; | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  | 	}; | ||||||
|  | 
 | ||||||
							
								
								
									
										70
									
								
								Documentation/devicetree/bindings/mfd/qcom-rpm.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								Documentation/devicetree/bindings/mfd/qcom-rpm.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,70 @@ | ||||||
|  | Qualcomm Resource Power Manager (RPM) | ||||||
|  | 
 | ||||||
|  | This driver is used to interface with the Resource Power Manager (RPM) found in | ||||||
|  | various Qualcomm platforms. The RPM allows each component in the system to vote | ||||||
|  | for state of the system resources, such as clocks, regulators and bus | ||||||
|  | frequencies. | ||||||
|  | 
 | ||||||
|  | - compatible: | ||||||
|  | 	Usage: required | ||||||
|  | 	Value type: <string> | ||||||
|  | 	Definition: must be one of: | ||||||
|  | 		    "qcom,rpm-apq8064" | ||||||
|  | 		    "qcom,rpm-msm8660" | ||||||
|  | 		    "qcom,rpm-msm8960" | ||||||
|  | 
 | ||||||
|  | - reg: | ||||||
|  | 	Usage: required | ||||||
|  | 	Value type: <prop-encoded-array> | ||||||
|  | 	Definition: base address and size of the RPM's message ram | ||||||
|  | 
 | ||||||
|  | - interrupts: | ||||||
|  | 	Usage: required | ||||||
|  | 	Value type: <prop-encoded-array> | ||||||
|  | 	Definition: three entries specifying the RPM's: | ||||||
|  | 		    1. acknowledgement interrupt | ||||||
|  | 		    2. error interrupt | ||||||
|  | 		    3. wakeup interrupt | ||||||
|  | 
 | ||||||
|  | - interrupt-names: | ||||||
|  | 	Usage: required | ||||||
|  | 	Value type: <string-array> | ||||||
|  | 	Definition: must be the three strings "ack", "err" and "wakeup", in order | ||||||
|  | 
 | ||||||
|  | - #address-cells: | ||||||
|  | 	Usage: required | ||||||
|  | 	Value type: <u32> | ||||||
|  | 	Definition: must be 1 | ||||||
|  | 
 | ||||||
|  | - #size-cells: | ||||||
|  | 	Usage: required | ||||||
|  | 	Value type: <u32> | ||||||
|  | 	Definition: must be 0 | ||||||
|  | 
 | ||||||
|  | - qcom,ipc: | ||||||
|  | 	Usage: required | ||||||
|  | 	Value type: <prop-encoded-array> | ||||||
|  | 
 | ||||||
|  | 	Definition: three entries specifying the outgoing ipc bit used for | ||||||
|  | 		    signaling the RPM: | ||||||
|  | 		    - phandle to a syscon node representing the apcs registers | ||||||
|  | 		    - u32 representing offset to the register within the syscon | ||||||
|  | 		    - u32 representing the ipc bit within the register | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | = EXAMPLE | ||||||
|  | 
 | ||||||
|  | 	#include <dt-bindings/mfd/qcom-rpm.h> | ||||||
|  | 
 | ||||||
|  | 	rpm@108000 { | ||||||
|  | 		compatible = "qcom,rpm-msm8960"; | ||||||
|  | 		reg = <0x108000 0x1000>; | ||||||
|  | 		qcom,ipc = <&apcs 0x8 2>; | ||||||
|  | 
 | ||||||
|  | 		interrupts = <0 19 0>, <0 21 0>, <0 22 0>; | ||||||
|  | 		interrupt-names = "ack", "err", "wakeup"; | ||||||
|  | 
 | ||||||
|  | 		#address-cells = <1>; | ||||||
|  | 		#size-cells = <0>; | ||||||
|  | 	}; | ||||||
|  | 
 | ||||||
							
								
								
									
										43
									
								
								Documentation/devicetree/bindings/mips/cavium/cib.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								Documentation/devicetree/bindings/mips/cavium/cib.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,43 @@ | ||||||
|  | * Cavium Interrupt Bus widget | ||||||
|  | 
 | ||||||
|  | Properties: | ||||||
|  | - compatible: "cavium,octeon-7130-cib" | ||||||
|  | 
 | ||||||
|  |   Compatibility with cn70XX SoCs. | ||||||
|  | 
 | ||||||
|  | - interrupt-controller:  This is an interrupt controller. | ||||||
|  | 
 | ||||||
|  | - reg: Two elements consisting of the addresses of the RAW and EN | ||||||
|  |   registers of the CIB block | ||||||
|  | 
 | ||||||
|  | - cavium,max-bits: The index (zero based) of the highest numbered bit | ||||||
|  |   in the CIB block. | ||||||
|  | 
 | ||||||
|  | - interrupt-parent:  Always the CIU on the SoC. | ||||||
|  | 
 | ||||||
|  | - interrupts: The CIU line to which the CIB block is connected. | ||||||
|  | 
 | ||||||
|  | - #interrupt-cells: Must be <2>.  The first cell is the bit within the | ||||||
|  |    CIB.  The second cell specifies the triggering semantics of the | ||||||
|  |    line. | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | 
 | ||||||
|  | 	interrupt-controller@107000000e000 { | ||||||
|  | 		compatible = "cavium,octeon-7130-cib"; | ||||||
|  | 		reg = <0x10700 0x0000e000 0x0 0x8>, /* RAW */ | ||||||
|  | 		      <0x10700 0x0000e100 0x0 0x8>; /* EN */ | ||||||
|  | 		cavium,max-bits = <23>; | ||||||
|  | 
 | ||||||
|  | 		interrupt-controller; | ||||||
|  | 		interrupt-parent = <&ciu>; | ||||||
|  | 		interrupts = <1 24>; | ||||||
|  | 		/* Interrupts are specified by two parts: | ||||||
|  | 		 * 1) Bit number in the CIB* registers | ||||||
|  | 		 * 2) Triggering (1 - edge rising | ||||||
|  | 		 *		  2 - edge falling | ||||||
|  | 		 *		  4 - level active high | ||||||
|  | 		 *		  8 - level active low) | ||||||
|  | 		 */ | ||||||
|  | 		#interrupt-cells = <2>; | ||||||
|  | 	}; | ||||||
|  | @ -10,8 +10,8 @@ Absolute maximum transfer rate is 200MB/s | ||||||
| Required properties: | Required properties: | ||||||
|  - compatible : "allwinner,sun4i-a10-mmc" or "allwinner,sun5i-a13-mmc" |  - compatible : "allwinner,sun4i-a10-mmc" or "allwinner,sun5i-a13-mmc" | ||||||
|  - reg : mmc controller base registers |  - reg : mmc controller base registers | ||||||
|  - clocks : a list with 2 phandle + clock specifier pairs |  - clocks : a list with 4 phandle + clock specifier pairs | ||||||
|  - clock-names : must contain "ahb" and "mmc" |  - clock-names : must contain "ahb", "mmc", "output" and "sample" | ||||||
|  - interrupts : mmc controller interrupt |  - interrupts : mmc controller interrupt | ||||||
| 
 | 
 | ||||||
| Optional properties: | Optional properties: | ||||||
|  | @ -25,8 +25,8 @@ Examples: | ||||||
| 	mmc0: mmc@01c0f000 { | 	mmc0: mmc@01c0f000 { | ||||||
| 		compatible = "allwinner,sun5i-a13-mmc"; | 		compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 		reg = <0x01c0f000 0x1000>; | 		reg = <0x01c0f000 0x1000>; | ||||||
| 		clocks = <&ahb_gates 8>, <&mmc0_clk>; | 		clocks = <&ahb_gates 8>, <&mmc0_clk>, <&mmc0_output_clk>, <&mmc0_sample_clk>; | ||||||
| 		clock-names = "ahb", "mod"; | 		clock-names = "ahb", "mod", "output", "sample"; | ||||||
| 		interrupts = <0 32 4>; | 		interrupts = <0 32 4>; | ||||||
| 		status = "disabled"; | 		status = "disabled"; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| Atmel NAND flash | Atmel NAND flash | ||||||
| 
 | 
 | ||||||
| Required properties: | Required properties: | ||||||
| - compatible : "atmel,at91rm9200-nand". | - compatible : should be "atmel,at91rm9200-nand" or "atmel,sama5d4-nand". | ||||||
| - reg : should specify localbus address and size used for the chip, | - reg : should specify localbus address and size used for the chip, | ||||||
| 	and hardware ECC controller if available. | 	and hardware ECC controller if available. | ||||||
| 	If the hardware ECC is PMECC, it should contain address and size for | 	If the hardware ECC is PMECC, it should contain address and size for | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| * Freescale Quad Serial Peripheral Interface(QuadSPI) | * Freescale Quad Serial Peripheral Interface(QuadSPI) | ||||||
| 
 | 
 | ||||||
| Required properties: | Required properties: | ||||||
|   - compatible : Should be "fsl,vf610-qspi" |   - compatible : Should be "fsl,vf610-qspi" or "fsl,imx6sx-qspi" | ||||||
|   - reg : the first contains the register location and length, |   - reg : the first contains the register location and length, | ||||||
|           the second contains the memory mapping address and length |           the second contains the memory mapping address and length | ||||||
|   - reg-names: Should contain the reg names "QuadSPI" and "QuadSPI-memory" |   - reg-names: Should contain the reg names "QuadSPI" and "QuadSPI-memory" | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| * Freescale General-Purpose Media Interface (GPMI) | * Freescale General-Purpose Media Interface (GPMI) | ||||||
| 
 | 
 | ||||||
| The GPMI nand controller provides an interface to control the | The GPMI nand controller provides an interface to control the | ||||||
| NAND flash chips. We support only one NAND chip now. | NAND flash chips. | ||||||
| 
 | 
 | ||||||
| Required properties: | Required properties: | ||||||
|   - compatible : should be "fsl,<chip>-gpmi-nand" |   - compatible : should be "fsl,<chip>-gpmi-nand" | ||||||
|  |  | ||||||
							
								
								
									
										47
									
								
								Documentation/devicetree/bindings/mtd/hisi504-nand.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								Documentation/devicetree/bindings/mtd/hisi504-nand.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,47 @@ | ||||||
|  | Hisilicon Hip04 Soc NAND controller DT binding | ||||||
|  | 
 | ||||||
|  | Required properties: | ||||||
|  | 
 | ||||||
|  | - compatible:          Should be "hisilicon,504-nfc". | ||||||
|  | - reg:                 The first contains base physical address and size of | ||||||
|  |                        NAND controller's registers. The second contains base | ||||||
|  |                        physical address and size of NAND controller's buffer. | ||||||
|  | - interrupts:          Interrupt number for nfc. | ||||||
|  | - nand-bus-width:      See nand.txt. | ||||||
|  | - nand-ecc-mode:       Support none and hw ecc mode. | ||||||
|  | - #address-cells:      Partition address, should be set 1. | ||||||
|  | - #size-cells:         Partition size, should be set 1. | ||||||
|  | 
 | ||||||
|  | Optional properties: | ||||||
|  | 
 | ||||||
|  | - 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 = <16>, nand-ecc-step-size = <1024> | ||||||
|  | 
 | ||||||
|  | Flash chip may optionally contain additional sub-nodes describing partitions of | ||||||
|  | the address space. See partition.txt for more detail. | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | 
 | ||||||
|  | 	nand: nand@4020000 { | ||||||
|  | 		compatible = "hisilicon,504-nfc"; | ||||||
|  | 		reg = <0x4020000 0x10000>, <0x5000000 0x1000>; | ||||||
|  | 		interrupts = <0 379 4>; | ||||||
|  | 		nand-bus-width = <8>; | ||||||
|  | 		nand-ecc-mode = "hw"; | ||||||
|  | 		nand-ecc-strength = <16>; | ||||||
|  | 		nand-ecc-step-size = <1024>; | ||||||
|  | 		#address-cells = <1>; | ||||||
|  | 		#size-cells = <1>; | ||||||
|  | 
 | ||||||
|  | 		partition@0 { | ||||||
|  | 			label = "nand_text"; | ||||||
|  | 			reg = <0x00000000 0x00400000>; | ||||||
|  | 		}; | ||||||
|  | 
 | ||||||
|  | 		... | ||||||
|  | 
 | ||||||
|  | 	}; | ||||||
|  | @ -36,6 +36,11 @@ are defined: | ||||||
|  - vendor-id : Contains the flash chip's vendor id (1 byte). |  - vendor-id : Contains the flash chip's vendor id (1 byte). | ||||||
|  - device-id : Contains the flash chip's device id (1 byte). |  - device-id : Contains the flash chip's device id (1 byte). | ||||||
| 
 | 
 | ||||||
|  | For ROM compatible devices (and ROM fallback from cfi-flash), the following | ||||||
|  | additional (optional) property is defined: | ||||||
|  | 
 | ||||||
|  |  - erase-size : The chip's physical erase block size in bytes. | ||||||
|  | 
 | ||||||
| The device tree may optionally contain sub-nodes describing partitions of the | The device tree may optionally contain sub-nodes describing partitions of the | ||||||
| address space. See partition.txt for more detail. | address space. See partition.txt for more detail. | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -27,6 +27,8 @@ property is used. | ||||||
| - amd,serdes-cdr-rate: CDR rate speed selection | - amd,serdes-cdr-rate: CDR rate speed selection | ||||||
| - amd,serdes-pq-skew: PQ (data sampling) skew | - amd,serdes-pq-skew: PQ (data sampling) skew | ||||||
| - amd,serdes-tx-amp: TX amplitude boost | - amd,serdes-tx-amp: TX amplitude boost | ||||||
|  | - amd,serdes-dfe-tap-config: DFE taps available to run | ||||||
|  | - amd,serdes-dfe-tap-enable: DFE taps to enable | ||||||
| 
 | 
 | ||||||
| Example: | Example: | ||||||
| 	xgbe_phy@e1240800 { | 	xgbe_phy@e1240800 { | ||||||
|  | @ -41,4 +43,6 @@ Example: | ||||||
| 		amd,serdes-cdr-rate = <2>, <2>, <7>; | 		amd,serdes-cdr-rate = <2>, <2>, <7>; | ||||||
| 		amd,serdes-pq-skew = <10>, <10>, <30>; | 		amd,serdes-pq-skew = <10>, <10>, <30>; | ||||||
| 		amd,serdes-tx-amp = <15>, <15>, <10>; | 		amd,serdes-tx-amp = <15>, <15>, <10>; | ||||||
|  | 		amd,serdes-dfe-tap-config = <3>, <3>, <1>; | ||||||
|  | 		amd,serdes-dfe-tap-enable = <0>, <0>, <127>; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
							
								
								
									
										24
									
								
								Documentation/devicetree/bindings/pwm/img-pwm.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								Documentation/devicetree/bindings/pwm/img-pwm.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | ||||||
|  | *Imagination Technologies PWM DAC driver | ||||||
|  | 
 | ||||||
|  | Required properties: | ||||||
|  |   - compatible: Should be "img,pistachio-pwm" | ||||||
|  |   - reg: Should contain physical base address and length of pwm registers. | ||||||
|  |   - clocks: Must contain an entry for each entry in clock-names. | ||||||
|  | 	See ../clock/clock-bindings.txt for details. | ||||||
|  |   - clock-names: Must include the following entries. | ||||||
|  |     - pwm: PWM operating clock. | ||||||
|  |     - sys: PWM system interface clock. | ||||||
|  |   - #pwm-cells: Should be 2. See pwm.txt in this directory for the | ||||||
|  | 	description of the cells format. | ||||||
|  |   - img,cr-periph: Must contain a phandle to the peripheral control | ||||||
|  | 	syscon node which contains PWM control registers. | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | 	pwm: pwm@18101300 { | ||||||
|  | 		compatible = "img,pistachio-pwm"; | ||||||
|  | 		reg = <0x18101300 0x100>; | ||||||
|  | 		clocks = <&pwm_clk>, <&system_clk>; | ||||||
|  | 		clock-names = "pwm", "sys"; | ||||||
|  | 		#pwm-cells = <2>; | ||||||
|  | 		img,cr-periph = <&cr_periph>; | ||||||
|  | 	}; | ||||||
							
								
								
									
										20
									
								
								Documentation/devicetree/bindings/pwm/pwm-sun4i.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								Documentation/devicetree/bindings/pwm/pwm-sun4i.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | Allwinner sun4i and sun7i SoC PWM controller | ||||||
|  | 
 | ||||||
|  | Required properties: | ||||||
|  |   - compatible: should be one of: | ||||||
|  |     - "allwinner,sun4i-a10-pwm" | ||||||
|  |     - "allwinner,sun7i-a20-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. | ||||||
|  |   - clocks: From common clock binding, handle to the parent clock. | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | 
 | ||||||
|  | 	pwm: pwm@01c20e00 { | ||||||
|  | 		compatible = "allwinner,sun7i-a20-pwm"; | ||||||
|  | 		reg = <0x01c20e00 0xc>; | ||||||
|  | 		clocks = <&osc24M>; | ||||||
|  | 		#pwm-cells = <3>; | ||||||
|  | 		status = "disabled"; | ||||||
|  | 	}; | ||||||
|  | @ -12,6 +12,7 @@ | ||||||
| 	       "samsung,exynos5420-tmu-ext-triminfo" for TMU channels 2, 3 and 4 | 	       "samsung,exynos5420-tmu-ext-triminfo" for TMU channels 2, 3 and 4 | ||||||
| 			Exynos5420 (Must pass triminfo base and triminfo clock) | 			Exynos5420 (Must pass triminfo base and triminfo clock) | ||||||
| 	       "samsung,exynos5440-tmu" | 	       "samsung,exynos5440-tmu" | ||||||
|  | 	       "samsung,exynos7-tmu" | ||||||
| - interrupt-parent : The phandle for the interrupt controller | - interrupt-parent : The phandle for the interrupt controller | ||||||
| - reg : Address range of the thermal registers. For soc's which has multiple | - 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 | 	instances of TMU and some registers are shared across all TMU's like | ||||||
|  | @ -32,13 +33,28 @@ | ||||||
| - clocks : The main clocks for TMU device | - clocks : The main clocks for TMU device | ||||||
| 	-- 1. operational clock for TMU channel | 	-- 1. operational clock for TMU channel | ||||||
| 	-- 2. optional clock to access the shared registers of TMU channel | 	-- 2. optional clock to access the shared registers of TMU channel | ||||||
|  | 	-- 3. optional special clock for functional operation | ||||||
| - clock-names : Thermal system clock name | - clock-names : Thermal system clock name | ||||||
| 	-- "tmu_apbif" operational clock for current TMU channel | 	-- "tmu_apbif" operational clock for current TMU channel | ||||||
| 	-- "tmu_triminfo_apbif" clock to access the shared triminfo register | 	-- "tmu_triminfo_apbif" clock to access the shared triminfo register | ||||||
| 		for current TMU channel | 		for current TMU channel | ||||||
|  | 	-- "tmu_sclk" clock for functional operation of the current TMU | ||||||
|  | 		channel | ||||||
| - vtmu-supply: This entry is optional and provides the regulator node supplying | - vtmu-supply: This entry is optional and provides the regulator node supplying | ||||||
| 		voltage to TMU. If needed this entry can be placed inside | 		voltage to TMU. If needed this entry can be placed inside | ||||||
| 		board/platform specific dts file. | 		board/platform specific dts file. | ||||||
|  | Following properties are mandatory (depending on SoC): | ||||||
|  | - samsung,tmu_gain: Gain value for internal TMU operation. | ||||||
|  | - samsung,tmu_reference_voltage: Value of TMU IP block's reference voltage | ||||||
|  | - samsung,tmu_noise_cancel_mode: Mode for noise cancellation | ||||||
|  | - samsung,tmu_efuse_value: Default level of temperature - it is needed when | ||||||
|  | 			   in factory fusing produced wrong value | ||||||
|  | - samsung,tmu_min_efuse_value: Minimum temperature fused value | ||||||
|  | - samsung,tmu_max_efuse_value: Maximum temperature fused value | ||||||
|  | - samsung,tmu_first_point_trim: First point trimming value | ||||||
|  | - samsung,tmu_second_point_trim: Second point trimming value | ||||||
|  | - samsung,tmu_default_temp_offset: Default temperature offset | ||||||
|  | - samsung,tmu_cal_type: Callibration type | ||||||
| 
 | 
 | ||||||
| Example 1): | Example 1): | ||||||
| 
 | 
 | ||||||
|  | @ -51,6 +67,7 @@ Example 1): | ||||||
| 		clock-names = "tmu_apbif"; | 		clock-names = "tmu_apbif"; | ||||||
| 		status = "disabled"; | 		status = "disabled"; | ||||||
| 		vtmu-supply = <&tmu_regulator_node>; | 		vtmu-supply = <&tmu_regulator_node>; | ||||||
|  | 		#include "exynos4412-tmu-sensor-conf.dtsi" | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| Example 2): | Example 2): | ||||||
|  | @ -61,6 +78,7 @@ Example 2): | ||||||
| 		interrupts = <0 58 0>; | 		interrupts = <0 58 0>; | ||||||
| 		clocks = <&clock 21>; | 		clocks = <&clock 21>; | ||||||
| 		clock-names = "tmu_apbif"; | 		clock-names = "tmu_apbif"; | ||||||
|  | 		#include "exynos5440-tmu-sensor-conf.dtsi" | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") | Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") | ||||||
|  | @ -70,6 +88,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") | ||||||
| 		interrupts = <0 184 0>; | 		interrupts = <0 184 0>; | ||||||
| 		clocks = <&clock 318>, <&clock 318>; | 		clocks = <&clock 318>, <&clock 318>; | ||||||
| 		clock-names = "tmu_apbif", "tmu_triminfo_apbif"; | 		clock-names = "tmu_apbif", "tmu_triminfo_apbif"; | ||||||
|  | 		#include "exynos4412-tmu-sensor-conf.dtsi" | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	tmu_cpu3: tmu@1006c000 { | 	tmu_cpu3: tmu@1006c000 { | ||||||
|  | @ -78,6 +97,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") | ||||||
| 		interrupts = <0 185 0>; | 		interrupts = <0 185 0>; | ||||||
| 		clocks = <&clock 318>, <&clock 319>; | 		clocks = <&clock 318>, <&clock 319>; | ||||||
| 		clock-names = "tmu_apbif", "tmu_triminfo_apbif"; | 		clock-names = "tmu_apbif", "tmu_triminfo_apbif"; | ||||||
|  | 		#include "exynos4412-tmu-sensor-conf.dtsi" | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	tmu_gpu: tmu@100a0000 { | 	tmu_gpu: tmu@100a0000 { | ||||||
|  | @ -86,6 +106,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register") | ||||||
| 		interrupts = <0 215 0>; | 		interrupts = <0 215 0>; | ||||||
| 		clocks = <&clock 319>, <&clock 318>; | 		clocks = <&clock 319>, <&clock 318>; | ||||||
| 		clock-names = "tmu_apbif", "tmu_triminfo_apbif"; | 		clock-names = "tmu_apbif", "tmu_triminfo_apbif"; | ||||||
|  | 		#include "exynos4412-tmu-sensor-conf.dtsi" | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| Note: For multi-instance tmu each instance should have an alias correctly | Note: For multi-instance tmu each instance should have an alias correctly | ||||||
|  |  | ||||||
|  | @ -251,24 +251,24 @@ ocp { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| thermal-zones { | thermal-zones { | ||||||
| 	cpu-thermal: cpu-thermal { | 	cpu_thermal: cpu-thermal { | ||||||
| 		polling-delay-passive = <250>; /* milliseconds */ | 		polling-delay-passive = <250>; /* milliseconds */ | ||||||
| 		polling-delay = <1000>; /* milliseconds */ | 		polling-delay = <1000>; /* milliseconds */ | ||||||
| 
 | 
 | ||||||
| 		thermal-sensors = <&bandgap0>; | 		thermal-sensors = <&bandgap0>; | ||||||
| 
 | 
 | ||||||
| 		trips { | 		trips { | ||||||
| 			cpu-alert0: cpu-alert { | 			cpu_alert0: cpu-alert0 { | ||||||
| 				temperature = <90000>; /* millicelsius */ | 				temperature = <90000>; /* millicelsius */ | ||||||
| 				hysteresis = <2000>; /* millicelsius */ | 				hysteresis = <2000>; /* millicelsius */ | ||||||
| 				type = "active"; | 				type = "active"; | ||||||
| 			}; | 			}; | ||||||
| 			cpu-alert1: cpu-alert { | 			cpu_alert1: cpu-alert1 { | ||||||
| 				temperature = <100000>; /* millicelsius */ | 				temperature = <100000>; /* millicelsius */ | ||||||
| 				hysteresis = <2000>; /* millicelsius */ | 				hysteresis = <2000>; /* millicelsius */ | ||||||
| 				type = "passive"; | 				type = "passive"; | ||||||
| 			}; | 			}; | ||||||
| 			cpu-crit: cpu-crit { | 			cpu_crit: cpu-crit { | ||||||
| 				temperature = <125000>; /* millicelsius */ | 				temperature = <125000>; /* millicelsius */ | ||||||
| 				hysteresis = <2000>; /* millicelsius */ | 				hysteresis = <2000>; /* millicelsius */ | ||||||
| 				type = "critical"; | 				type = "critical"; | ||||||
|  | @ -277,17 +277,17 @@ thermal-zones { | ||||||
| 
 | 
 | ||||||
| 		cooling-maps { | 		cooling-maps { | ||||||
| 			map0 { | 			map0 { | ||||||
| 				trip = <&cpu-alert0>; | 				trip = <&cpu_alert0>; | ||||||
| 				cooling-device = <&fan0 THERMAL_NO_LIMITS 4>; | 				cooling-device = <&fan0 THERMAL_NO_LIMIT 4>; | ||||||
| 			}; | 			}; | ||||||
| 			map1 { | 			map1 { | ||||||
| 				trip = <&cpu-alert1>; | 				trip = <&cpu_alert1>; | ||||||
| 				cooling-device = <&fan0 5 THERMAL_NO_LIMITS>; | 				cooling-device = <&fan0 5 THERMAL_NO_LIMIT>; | ||||||
| 			}; | 			}; | ||||||
| 			map2 { | 			map2 { | ||||||
| 				trip = <&cpu-alert1>; | 				trip = <&cpu_alert1>; | ||||||
| 				cooling-device = | 				cooling-device = | ||||||
| 				    <&cpu0 THERMAL_NO_LIMITS THERMAL_NO_LIMITS>; | 				    <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; | ||||||
| 			}; | 			}; | ||||||
| 		}; | 		}; | ||||||
| 	}; | 	}; | ||||||
|  | @ -298,13 +298,13 @@ 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 | 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 | different cooling states 0-9. It is used to remove the heat out of | ||||||
| the thermal zone 'cpu-thermal' using its cooling states | the thermal zone 'cpu-thermal' using its cooling states | ||||||
| from its minimum to 4, when it reaches trip point 'cpu-alert0' | 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 | 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 | '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, | linked to the same thermal zone, 'cpu-thermal', as a passive cooling device, | ||||||
| using all its cooling states at trip point 'cpu-alert1', | 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 | 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 | temperature of 125C, represented by the trip point 'cpu_crit', the silicon | ||||||
| is not reliable anymore. | is not reliable anymore. | ||||||
| 
 | 
 | ||||||
| (b) - IC with several internal sensors | (b) - IC with several internal sensors | ||||||
|  | @ -329,7 +329,7 @@ ocp { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| thermal-zones { | thermal-zones { | ||||||
| 	cpu-thermal: cpu-thermal { | 	cpu_thermal: cpu-thermal { | ||||||
| 		polling-delay-passive = <250>; /* milliseconds */ | 		polling-delay-passive = <250>; /* milliseconds */ | ||||||
| 		polling-delay = <1000>; /* milliseconds */ | 		polling-delay = <1000>; /* milliseconds */ | ||||||
| 
 | 
 | ||||||
|  | @ -338,12 +338,12 @@ thermal-zones { | ||||||
| 
 | 
 | ||||||
| 		trips { | 		trips { | ||||||
| 			/* each zone within the SoC may have its own trips */ | 			/* each zone within the SoC may have its own trips */ | ||||||
| 			cpu-alert: cpu-alert { | 			cpu_alert: cpu-alert { | ||||||
| 				temperature = <100000>; /* millicelsius */ | 				temperature = <100000>; /* millicelsius */ | ||||||
| 				hysteresis = <2000>; /* millicelsius */ | 				hysteresis = <2000>; /* millicelsius */ | ||||||
| 				type = "passive"; | 				type = "passive"; | ||||||
| 			}; | 			}; | ||||||
| 			cpu-crit: cpu-crit { | 			cpu_crit: cpu-crit { | ||||||
| 				temperature = <125000>; /* millicelsius */ | 				temperature = <125000>; /* millicelsius */ | ||||||
| 				hysteresis = <2000>; /* millicelsius */ | 				hysteresis = <2000>; /* millicelsius */ | ||||||
| 				type = "critical"; | 				type = "critical"; | ||||||
|  | @ -356,7 +356,7 @@ thermal-zones { | ||||||
| 		}; | 		}; | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	gpu-thermal: gpu-thermal { | 	gpu_thermal: gpu-thermal { | ||||||
| 		polling-delay-passive = <120>; /* milliseconds */ | 		polling-delay-passive = <120>; /* milliseconds */ | ||||||
| 		polling-delay = <1000>; /* milliseconds */ | 		polling-delay = <1000>; /* milliseconds */ | ||||||
| 
 | 
 | ||||||
|  | @ -365,12 +365,12 @@ thermal-zones { | ||||||
| 
 | 
 | ||||||
| 		trips { | 		trips { | ||||||
| 			/* each zone within the SoC may have its own trips */ | 			/* each zone within the SoC may have its own trips */ | ||||||
| 			gpu-alert: gpu-alert { | 			gpu_alert: gpu-alert { | ||||||
| 				temperature = <90000>; /* millicelsius */ | 				temperature = <90000>; /* millicelsius */ | ||||||
| 				hysteresis = <2000>; /* millicelsius */ | 				hysteresis = <2000>; /* millicelsius */ | ||||||
| 				type = "passive"; | 				type = "passive"; | ||||||
| 			}; | 			}; | ||||||
| 			gpu-crit: gpu-crit { | 			gpu_crit: gpu-crit { | ||||||
| 				temperature = <105000>; /* millicelsius */ | 				temperature = <105000>; /* millicelsius */ | ||||||
| 				hysteresis = <2000>; /* millicelsius */ | 				hysteresis = <2000>; /* millicelsius */ | ||||||
| 				type = "critical"; | 				type = "critical"; | ||||||
|  | @ -383,7 +383,7 @@ thermal-zones { | ||||||
| 		}; | 		}; | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	dsp-thermal: dsp-thermal { | 	dsp_thermal: dsp-thermal { | ||||||
| 		polling-delay-passive = <50>; /* milliseconds */ | 		polling-delay-passive = <50>; /* milliseconds */ | ||||||
| 		polling-delay = <1000>; /* milliseconds */ | 		polling-delay = <1000>; /* milliseconds */ | ||||||
| 
 | 
 | ||||||
|  | @ -392,12 +392,12 @@ thermal-zones { | ||||||
| 
 | 
 | ||||||
| 		trips { | 		trips { | ||||||
| 			/* each zone within the SoC may have its own trips */ | 			/* each zone within the SoC may have its own trips */ | ||||||
| 			dsp-alert: gpu-alert { | 			dsp_alert: dsp-alert { | ||||||
| 				temperature = <90000>; /* millicelsius */ | 				temperature = <90000>; /* millicelsius */ | ||||||
| 				hysteresis = <2000>; /* millicelsius */ | 				hysteresis = <2000>; /* millicelsius */ | ||||||
| 				type = "passive"; | 				type = "passive"; | ||||||
| 			}; | 			}; | ||||||
| 			dsp-crit: gpu-crit { | 			dsp_crit: gpu-crit { | ||||||
| 				temperature = <135000>; /* millicelsius */ | 				temperature = <135000>; /* millicelsius */ | ||||||
| 				hysteresis = <2000>; /* millicelsius */ | 				hysteresis = <2000>; /* millicelsius */ | ||||||
| 				type = "critical"; | 				type = "critical"; | ||||||
|  | @ -457,7 +457,7 @@ ocp { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| thermal-zones { | thermal-zones { | ||||||
| 	cpu-thermal: cpu-thermal { | 	cpu_thermal: cpu-thermal { | ||||||
| 		polling-delay-passive = <250>; /* milliseconds */ | 		polling-delay-passive = <250>; /* milliseconds */ | ||||||
| 		polling-delay = <1000>; /* milliseconds */ | 		polling-delay = <1000>; /* milliseconds */ | ||||||
| 
 | 
 | ||||||
|  | @ -508,7 +508,7 @@ with many sensors and many cooling devices. | ||||||
| 	/* | 	/* | ||||||
| 	 * An IC with several temperature sensor. | 	 * An IC with several temperature sensor. | ||||||
| 	 */ | 	 */ | ||||||
| 	adc-dummy: sensor@0x50 { | 	adc_dummy: sensor@0x50 { | ||||||
| 		... | 		... | ||||||
| 		#thermal-sensor-cells = <1>; /* sensor internal ID */ | 		#thermal-sensor-cells = <1>; /* sensor internal ID */ | ||||||
| 	}; | 	}; | ||||||
|  | @ -520,7 +520,7 @@ thermal-zones { | ||||||
| 		polling-delay = <2500>; /* milliseconds */ | 		polling-delay = <2500>; /* milliseconds */ | ||||||
| 
 | 
 | ||||||
| 				/* sensor       ID */ | 				/* sensor       ID */ | ||||||
| 		thermal-sensors = <&adc-dummy     4>; | 		thermal-sensors = <&adc_dummy     4>; | ||||||
| 
 | 
 | ||||||
| 		trips { | 		trips { | ||||||
| 			... | 			... | ||||||
|  | @ -531,14 +531,14 @@ thermal-zones { | ||||||
| 		}; | 		}; | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	board-thermal: board-thermal { | 	board_thermal: board-thermal { | ||||||
| 		polling-delay-passive = <1000>; /* milliseconds */ | 		polling-delay-passive = <1000>; /* milliseconds */ | ||||||
| 		polling-delay = <2500>; /* milliseconds */ | 		polling-delay = <2500>; /* milliseconds */ | ||||||
| 
 | 
 | ||||||
| 				/* sensor       ID */ | 				/* sensor       ID */ | ||||||
| 		thermal-sensors = <&adc-dummy     0>, /* pcb top edge */ | 		thermal-sensors = <&adc_dummy     0>, /* pcb top edge */ | ||||||
| 				  <&adc-dummy     1>, /* lcd */ | 				  <&adc_dummy     1>, /* lcd */ | ||||||
| 				  <&adc-dymmy     2>; /* back cover */ | 				  <&adc_dummy     2>; /* back cover */ | ||||||
| 		/* | 		/* | ||||||
| 		 * An array of coefficients describing the sensor | 		 * An array of coefficients describing the sensor | ||||||
| 		 * linear relation. E.g.: | 		 * linear relation. E.g.: | ||||||
|  | @ -548,22 +548,22 @@ thermal-zones { | ||||||
| 
 | 
 | ||||||
| 		trips { | 		trips { | ||||||
| 			/* Trips are based on resulting linear equation */ | 			/* Trips are based on resulting linear equation */ | ||||||
| 			cpu-trip: cpu-trip { | 			cpu_trip: cpu-trip { | ||||||
| 				temperature = <60000>; /* millicelsius */ | 				temperature = <60000>; /* millicelsius */ | ||||||
| 				hysteresis = <2000>; /* millicelsius */ | 				hysteresis = <2000>; /* millicelsius */ | ||||||
| 				type = "passive"; | 				type = "passive"; | ||||||
| 			}; | 			}; | ||||||
| 			gpu-trip: gpu-trip { | 			gpu_trip: gpu-trip { | ||||||
| 				temperature = <55000>; /* millicelsius */ | 				temperature = <55000>; /* millicelsius */ | ||||||
| 				hysteresis = <2000>; /* millicelsius */ | 				hysteresis = <2000>; /* millicelsius */ | ||||||
| 				type = "passive"; | 				type = "passive"; | ||||||
| 			} | 			} | ||||||
| 			lcd-trip: lcp-trip { | 			lcd_trip: lcp-trip { | ||||||
| 				temperature = <53000>; /* millicelsius */ | 				temperature = <53000>; /* millicelsius */ | ||||||
| 				hysteresis = <2000>; /* millicelsius */ | 				hysteresis = <2000>; /* millicelsius */ | ||||||
| 				type = "passive"; | 				type = "passive"; | ||||||
| 			}; | 			}; | ||||||
| 			crit-trip: crit-trip { | 			crit_trip: crit-trip { | ||||||
| 				temperature = <68000>; /* millicelsius */ | 				temperature = <68000>; /* millicelsius */ | ||||||
| 				hysteresis = <2000>; /* millicelsius */ | 				hysteresis = <2000>; /* millicelsius */ | ||||||
| 				type = "critical"; | 				type = "critical"; | ||||||
|  | @ -572,17 +572,17 @@ thermal-zones { | ||||||
| 
 | 
 | ||||||
| 		cooling-maps { | 		cooling-maps { | ||||||
| 			map0 { | 			map0 { | ||||||
| 				trip = <&cpu-trip>; | 				trip = <&cpu_trip>; | ||||||
| 				cooling-device = <&cpu0 0 2>; | 				cooling-device = <&cpu0 0 2>; | ||||||
| 				contribution = <55>; | 				contribution = <55>; | ||||||
| 			}; | 			}; | ||||||
| 			map1 { | 			map1 { | ||||||
| 				trip = <&gpu-trip>; | 				trip = <&gpu_trip>; | ||||||
| 				cooling-device = <&gpu0 0 2>; | 				cooling-device = <&gpu0 0 2>; | ||||||
| 				contribution = <20>; | 				contribution = <20>; | ||||||
| 			}; | 			}; | ||||||
| 			map2 { | 			map2 { | ||||||
| 				trip = <&lcd-trip>; | 				trip = <&lcd_trip>; | ||||||
| 				cooling-device = <&lcd0 5 10>; | 				cooling-device = <&lcd0 5 10>; | ||||||
| 				contribution = <15>; | 				contribution = <15>; | ||||||
| 			}; | 			}; | ||||||
|  |  | ||||||
|  | @ -13,6 +13,11 @@ Required Properties: | ||||||
|     by the GPIO flags. |     by the GPIO flags. | ||||||
| - hw_margin_ms: Maximum time to reset watchdog circuit (milliseconds). | - hw_margin_ms: Maximum time to reset watchdog circuit (milliseconds). | ||||||
| 
 | 
 | ||||||
|  | Optional Properties: | ||||||
|  | - always-running: If the watchdog timer cannot be disabled, add this flag to | ||||||
|  |   have the driver keep toggling the signal without a client. It will only cease | ||||||
|  |   to toggle the signal when the device is open and the timeout elapsed. | ||||||
|  | 
 | ||||||
| Example: | Example: | ||||||
| 	watchdog: watchdog { | 	watchdog: watchdog { | ||||||
| 		/* ADM706 */ | 		/* ADM706 */ | ||||||
|  |  | ||||||
							
								
								
									
										19
									
								
								Documentation/devicetree/bindings/watchdog/imgpdc-wdt.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								Documentation/devicetree/bindings/watchdog/imgpdc-wdt.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | ||||||
|  | *ImgTec PowerDown Controller (PDC) Watchdog Timer (WDT) | ||||||
|  | 
 | ||||||
|  | Required properties: | ||||||
|  | - compatible : Should be "img,pdc-wdt" | ||||||
|  | - reg : Should contain WDT registers location and length | ||||||
|  | - clocks: Must contain an entry for each entry in clock-names. | ||||||
|  | - clock-names: Should contain "wdt" and "sys"; the watchdog counter | ||||||
|  |                clock and register interface clock respectively. | ||||||
|  | - interrupts : Should contain WDT interrupt | ||||||
|  | 
 | ||||||
|  | Examples: | ||||||
|  | 
 | ||||||
|  | watchdog@18102100 { | ||||||
|  | 	compatible = "img,pdc-wdt"; | ||||||
|  | 	reg = <0x18102100 0x100>; | ||||||
|  | 	clocks = <&pdc_wdt_clk>, <&sys_clk>; | ||||||
|  | 	clock-names = "wdt", "sys"; | ||||||
|  | 	interrupts = <0 52 IRQ_TYPE_LEVEL_HIGH>; | ||||||
|  | }; | ||||||
|  | @ -0,0 +1,12 @@ | ||||||
|  | Ingenic Watchdog Timer (WDT) Controller for JZ4740 | ||||||
|  | 
 | ||||||
|  | Required properties: | ||||||
|  | compatible: "ingenic,jz4740-watchdog" | ||||||
|  | reg: Register address and length for watchdog registers | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | 
 | ||||||
|  | watchdog: jz4740-watchdog@0x10002000 { | ||||||
|  | 	compatible = "ingenic,jz4740-watchdog"; | ||||||
|  | 	reg = <0x10002000 0x100>; | ||||||
|  | }; | ||||||
							
								
								
									
										13
									
								
								Documentation/devicetree/bindings/watchdog/mtk-wdt.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								Documentation/devicetree/bindings/watchdog/mtk-wdt.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | ||||||
|  | Mediatek SoCs Watchdog timer | ||||||
|  | 
 | ||||||
|  | Required properties: | ||||||
|  | 
 | ||||||
|  | - compatible : should be "mediatek,mt6589-wdt" | ||||||
|  | - reg : Specifies base physical address and size of the registers. | ||||||
|  | 
 | ||||||
|  | Example: | ||||||
|  | 
 | ||||||
|  | wdt: watchdog@010000000 { | ||||||
|  | 	compatible = "mediatek,mt6589-wdt"; | ||||||
|  | 	reg = <0x10000000 0x18>; | ||||||
|  | }; | ||||||
|  | @ -113,6 +113,31 @@ need to initialize a few fields in there: | ||||||
|   * channels:	should be initialized as a list using the |   * channels:	should be initialized as a list using the | ||||||
| 		INIT_LIST_HEAD macro for example | 		INIT_LIST_HEAD macro for example | ||||||
| 
 | 
 | ||||||
|  |   * src_addr_widths: | ||||||
|  |     - should contain a bitmask of the supported source transfer width | ||||||
|  | 
 | ||||||
|  |   * dst_addr_widths: | ||||||
|  |     - should contain a bitmask of the supported destination transfer | ||||||
|  |       width | ||||||
|  | 
 | ||||||
|  |   * directions: | ||||||
|  |     - should contain a bitmask of the supported slave directions | ||||||
|  |       (i.e. excluding mem2mem transfers) | ||||||
|  | 
 | ||||||
|  |   * residue_granularity: | ||||||
|  |     - Granularity of the transfer residue reported to dma_set_residue. | ||||||
|  |     - This can be either: | ||||||
|  |       + Descriptor | ||||||
|  |         -> Your device doesn't support any kind of residue | ||||||
|  |            reporting. The framework will only know that a particular | ||||||
|  |            transaction descriptor is done. | ||||||
|  |       + Segment | ||||||
|  |         -> Your device is able to report which chunks have been | ||||||
|  |            transferred | ||||||
|  |       + Burst | ||||||
|  |         -> Your device is able to report which burst have been | ||||||
|  |            transferred | ||||||
|  | 
 | ||||||
|   * dev: 	should hold the pointer to the struct device associated |   * dev: 	should hold the pointer to the struct device associated | ||||||
| 		to your current driver instance. | 		to your current driver instance. | ||||||
| 
 | 
 | ||||||
|  | @ -274,48 +299,36 @@ supported. | ||||||
|        account the current period. |        account the current period. | ||||||
|      - This function can be called in an interrupt context. |      - This function can be called in an interrupt context. | ||||||
| 
 | 
 | ||||||
|    * device_control |    * device_config | ||||||
|      - Used by client drivers to control and configure the channel it |      - Reconfigures the channel with the configuration given as | ||||||
|        has a handle on. |        argument | ||||||
|      - Called with a command and an argument |      - This command should NOT perform synchronously, or on any | ||||||
|        + The command is one of the values listed by the enum |        currently queued transfers, but only on subsequent ones | ||||||
|          dma_ctrl_cmd. The valid commands are: |      - In this case, the function will receive a dma_slave_config | ||||||
|          + DMA_PAUSE |        structure pointer as an argument, that will detail which | ||||||
|            + Pauses a transfer on the channel |        configuration to use. | ||||||
|            + This command should operate synchronously on the channel, |      - Even though that structure contains a direction field, this | ||||||
|              pausing right away the work of the given channel |        field is deprecated in favor of the direction argument given to | ||||||
|          + DMA_RESUME |        the prep_* functions | ||||||
|            + Restarts a transfer on the channel |      - This call is mandatory for slave operations only. This should NOT be | ||||||
|            + This command should operate synchronously on the channel, |        set or expected to be set for memcpy operations. | ||||||
|              resuming right away the work of the given channel |        If a driver support both, it should use this call for slave | ||||||
|          + DMA_TERMINATE_ALL |        operations only and not for memcpy ones. | ||||||
|            + Aborts all the pending and ongoing transfers on the |  | ||||||
|              channel |  | ||||||
|            + This command should operate synchronously on the channel, |  | ||||||
|              terminating right away all the channels |  | ||||||
|          + DMA_SLAVE_CONFIG |  | ||||||
|            + Reconfigures the channel with passed configuration |  | ||||||
|            + This command should NOT perform synchronously, or on any |  | ||||||
|              currently queued transfers, but only on subsequent ones |  | ||||||
|            + In this case, the function will receive a |  | ||||||
|              dma_slave_config structure pointer as an argument, that |  | ||||||
|              will detail which configuration to use. |  | ||||||
|            + Even though that structure contains a direction field, |  | ||||||
|              this field is deprecated in favor of the direction |  | ||||||
|              argument given to the prep_* functions |  | ||||||
|          + FSLDMA_EXTERNAL_START |  | ||||||
|            + TODO: Why does that even exist? |  | ||||||
|        + The argument is an opaque unsigned long. This actually is a |  | ||||||
|          pointer to a struct dma_slave_config that should be used only |  | ||||||
|          in the DMA_SLAVE_CONFIG. |  | ||||||
| 
 | 
 | ||||||
|   * device_slave_caps |    * device_pause | ||||||
|     - Called through the framework by client drivers in order to have |      - Pauses a transfer on the channel | ||||||
|       an idea of what are the properties of the channel allocated to |      - This command should operate synchronously on the channel, | ||||||
|       them. |        pausing right away the work of the given channel | ||||||
|     - Such properties are the buswidth, available directions, etc. | 
 | ||||||
|     - Required for every generic layer doing DMA transfers, such as |    * device_resume | ||||||
|       ASoC. |      - Resumes a transfer on the channel | ||||||
|  |      - This command should operate synchronously on the channel, | ||||||
|  |        pausing right away the work of the given channel | ||||||
|  | 
 | ||||||
|  |    * device_terminate_all | ||||||
|  |      - Aborts all the pending and ongoing transfers on the channel | ||||||
|  |      - This command should operate synchronously on the channel, | ||||||
|  |        terminating right away all the channels | ||||||
| 
 | 
 | ||||||
| Misc notes (stuff that should be documented, but don't really know | Misc notes (stuff that should be documented, but don't really know | ||||||
| where to put them) | where to put them) | ||||||
|  |  | ||||||
|  | @ -164,8 +164,6 @@ the block device inode.  See there for more details. | ||||||
| 
 | 
 | ||||||
| --------------------------- file_system_type --------------------------- | --------------------------- file_system_type --------------------------- | ||||||
| prototypes: | prototypes: | ||||||
| 	int (*get_sb) (struct file_system_type *, int, |  | ||||||
| 		       const char *, void *, struct vfsmount *); |  | ||||||
| 	struct dentry *(*mount) (struct file_system_type *, int, | 	struct dentry *(*mount) (struct file_system_type *, int, | ||||||
| 		       const char *, void *); | 		       const char *, void *); | ||||||
| 	void (*kill_sb) (struct super_block *); | 	void (*kill_sb) (struct super_block *); | ||||||
|  |  | ||||||
|  | @ -5,8 +5,8 @@ system. | ||||||
| 
 | 
 | ||||||
| dlmfs is built with OCFS2 as it requires most of its infrastructure. | dlmfs is built with OCFS2 as it requires most of its infrastructure. | ||||||
| 
 | 
 | ||||||
| Project web page:    http://oss.oracle.com/projects/ocfs2 | Project web page:    http://ocfs2.wiki.kernel.org | ||||||
| Tools web page:      http://oss.oracle.com/projects/ocfs2-tools | Tools web page:      https://github.com/markfasheh/ocfs2-tools | ||||||
| OCFS2 mailing lists: http://oss.oracle.com/projects/ocfs2/mailman/ | OCFS2 mailing lists: http://oss.oracle.com/projects/ocfs2/mailman/ | ||||||
| 
 | 
 | ||||||
| All code copyright 2005 Oracle except when otherwise noted. | All code copyright 2005 Oracle except when otherwise noted. | ||||||
|  |  | ||||||
|  | @ -8,8 +8,8 @@ also make it attractive for non-clustered use. | ||||||
| You'll want to install the ocfs2-tools package in order to at least | You'll want to install the ocfs2-tools package in order to at least | ||||||
| get "mount.ocfs2" and "ocfs2_hb_ctl". | get "mount.ocfs2" and "ocfs2_hb_ctl". | ||||||
| 
 | 
 | ||||||
| Project web page:    http://oss.oracle.com/projects/ocfs2 | Project web page:    http://ocfs2.wiki.kernel.org | ||||||
| Tools web page:      http://oss.oracle.com/projects/ocfs2-tools | Tools git tree:      https://github.com/markfasheh/ocfs2-tools | ||||||
| OCFS2 mailing lists: http://oss.oracle.com/projects/ocfs2/mailman/ | OCFS2 mailing lists: http://oss.oracle.com/projects/ocfs2/mailman/ | ||||||
| 
 | 
 | ||||||
| All code copyright 2005 Oracle except when otherwise noted. | All code copyright 2005 Oracle except when otherwise noted. | ||||||
|  |  | ||||||
|  | @ -159,6 +159,22 @@ overlay filesystem (though an operation on the name of the file such as | ||||||
| rename or unlink will of course be noticed and handled). | rename or unlink will of course be noticed and handled). | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | Multiple lower layers | ||||||
|  | --------------------- | ||||||
|  | 
 | ||||||
|  | Multiple lower layers can now be given using the the colon (":") as a | ||||||
|  | separator character between the directory names.  For example: | ||||||
|  | 
 | ||||||
|  |   mount -t overlay overlay -olowerdir=/lower1:/lower2:/lower3 /merged | ||||||
|  | 
 | ||||||
|  | As the example shows, "upperdir=" and "workdir=" may be omitted.  In | ||||||
|  | that case the overlay will be read-only. | ||||||
|  | 
 | ||||||
|  | The specified lower directories will be stacked beginning from the | ||||||
|  | rightmost one and going left.  In the above example lower1 will be the | ||||||
|  | top, lower2 the middle and lower3 the bottom layer. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| Non-standard behavior | Non-standard behavior | ||||||
| --------------------- | --------------------- | ||||||
| 
 | 
 | ||||||
|  | @ -196,3 +212,15 @@ Changes to the underlying filesystems while part of a mounted overlay | ||||||
| filesystem are not allowed.  If the underlying filesystem is changed, | filesystem are not allowed.  If the underlying filesystem is changed, | ||||||
| the behavior of the overlay is undefined, though it will not result in | the behavior of the overlay is undefined, though it will not result in | ||||||
| a crash or deadlock. | a crash or deadlock. | ||||||
|  | 
 | ||||||
|  | Testsuite | ||||||
|  | --------- | ||||||
|  | 
 | ||||||
|  | There's testsuite developed by David Howells at: | ||||||
|  | 
 | ||||||
|  |   git://git.infradead.org/users/dhowells/unionmount-testsuite.git | ||||||
|  | 
 | ||||||
|  | Run as root: | ||||||
|  | 
 | ||||||
|  |   # cd unionmount-testsuite | ||||||
|  |   # ./run --ov | ||||||
|  |  | ||||||
|  | @ -12,7 +12,7 @@ FUNCTIONALITY CONSTANTS | ||||||
| ----------------------- | ----------------------- | ||||||
| 
 | 
 | ||||||
| For the most up-to-date list of functionality constants, please check | For the most up-to-date list of functionality constants, please check | ||||||
| <linux/i2c.h>! | <uapi/linux/i2c.h>! | ||||||
| 
 | 
 | ||||||
|   I2C_FUNC_I2C                    Plain i2c-level commands (Pure SMBus |   I2C_FUNC_I2C                    Plain i2c-level commands (Pure SMBus | ||||||
|                                   adapters typically can not do these) |                                   adapters typically can not do these) | ||||||
|  |  | ||||||
|  | @ -1,137 +0,0 @@ | ||||||
| Paravirt_ops on IA64 |  | ||||||
| ==================== |  | ||||||
|                           21 May 2008, Isaku Yamahata <yamahata@valinux.co.jp> |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Introduction |  | ||||||
| ------------ |  | ||||||
| The aim of this documentation is to help with maintainability and/or to |  | ||||||
| encourage people to use paravirt_ops/IA64. |  | ||||||
| 
 |  | ||||||
| paravirt_ops (pv_ops in short) is a way for virtualization support of |  | ||||||
| Linux kernel on x86. Several ways for virtualization support were |  | ||||||
| proposed, paravirt_ops is the winner. |  | ||||||
| On the other hand, now there are also several IA64 virtualization |  | ||||||
| technologies like kvm/IA64, xen/IA64 and many other academic IA64 |  | ||||||
| hypervisors so that it is good to add generic virtualization |  | ||||||
| infrastructure on Linux/IA64. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| What is paravirt_ops? |  | ||||||
| --------------------- |  | ||||||
| It has been developed on x86 as virtualization support via API, not ABI. |  | ||||||
| It allows each hypervisor to override operations which are important for |  | ||||||
| hypervisors at API level. And it allows a single kernel binary to run on |  | ||||||
| all supported execution environments including native machine. |  | ||||||
| Essentially paravirt_ops is a set of function pointers which represent |  | ||||||
| operations corresponding to low level sensitive instructions and high |  | ||||||
| level functionalities in various area. But one significant difference |  | ||||||
| from usual function pointer table is that it allows optimization with |  | ||||||
| binary patch. It is because some of these operations are very |  | ||||||
| performance sensitive and indirect call overhead is not negligible. |  | ||||||
| With binary patch, indirect C function call can be transformed into |  | ||||||
| direct C function call or in-place execution to eliminate the overhead. |  | ||||||
| 
 |  | ||||||
| Thus, operations of paravirt_ops are classified into three categories. |  | ||||||
| - simple indirect call |  | ||||||
|   These operations correspond to high level functionality so that the |  | ||||||
|   overhead of indirect call isn't very important. |  | ||||||
| 
 |  | ||||||
| - indirect call which allows optimization with binary patch |  | ||||||
|   Usually these operations correspond to low level instructions. They |  | ||||||
|   are called frequently and performance critical. So the overhead is |  | ||||||
|   very important. |  | ||||||
| 
 |  | ||||||
| - a set of macros for hand written assembly code |  | ||||||
|   Hand written assembly codes (.S files) also need paravirtualization |  | ||||||
|   because they include sensitive instructions or some of code paths in |  | ||||||
|   them are very performance critical. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| The relation to the IA64 machine vector |  | ||||||
| --------------------------------------- |  | ||||||
| Linux/IA64 has the IA64 machine vector functionality which allows the |  | ||||||
| kernel to switch implementations (e.g. initialization, ipi, dma api...) |  | ||||||
| depending on executing platform. |  | ||||||
| We can replace some implementations very easily defining a new machine |  | ||||||
| vector. Thus another approach for virtualization support would be |  | ||||||
| enhancing the machine vector functionality. |  | ||||||
| But paravirt_ops approach was taken because |  | ||||||
| - virtualization support needs wider support than machine vector does. |  | ||||||
|   e.g. low level instruction paravirtualization. It must be |  | ||||||
|        initialized very early before platform detection. |  | ||||||
| 
 |  | ||||||
| - virtualization support needs more functionality like binary patch. |  | ||||||
|   Probably the calling overhead might not be very large compared to the |  | ||||||
|   emulation overhead of virtualization. However in the native case, the |  | ||||||
|   overhead should be eliminated completely. |  | ||||||
|   A single kernel binary should run on each environment including native, |  | ||||||
|   and the overhead of paravirt_ops on native environment should be as |  | ||||||
|   small as possible. |  | ||||||
| 
 |  | ||||||
| - for full virtualization technology, e.g. KVM/IA64 or |  | ||||||
|   Xen/IA64 HVM domain, the result would be |  | ||||||
|   (the emulated platform machine vector. probably dig) + (pv_ops). |  | ||||||
|   This means that the virtualization support layer should be under |  | ||||||
|   the machine vector layer. |  | ||||||
| 
 |  | ||||||
| Possibly it might be better to move some function pointers from |  | ||||||
| paravirt_ops to machine vector. In fact, Xen domU case utilizes both |  | ||||||
| pv_ops and machine vector. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| IA64 paravirt_ops |  | ||||||
| ----------------- |  | ||||||
| In this section, the concrete paravirt_ops will be discussed. |  | ||||||
| Because of the architecture difference between ia64 and x86, the |  | ||||||
| resulting set of functions is very different from x86 pv_ops. |  | ||||||
| 
 |  | ||||||
| - C function pointer tables |  | ||||||
| They are not very performance critical so that simple C indirect |  | ||||||
| function call is acceptable. The following structures are defined at |  | ||||||
| this moment. For details see linux/include/asm-ia64/paravirt.h |  | ||||||
|   - struct pv_info |  | ||||||
|     This structure describes the execution environment. |  | ||||||
|   - struct pv_init_ops |  | ||||||
|     This structure describes the various initialization hooks. |  | ||||||
|   - struct pv_iosapic_ops |  | ||||||
|     This structure describes hooks to iosapic operations. |  | ||||||
|   - struct pv_irq_ops |  | ||||||
|     This structure describes hooks to irq related operations |  | ||||||
|   - struct pv_time_op |  | ||||||
|     This structure describes hooks to steal time accounting. |  | ||||||
| 
 |  | ||||||
| - a set of indirect calls which need optimization |  | ||||||
| Currently this class of functions correspond to a subset of IA64 |  | ||||||
| intrinsics. At this moment the optimization with binary patch isn't |  | ||||||
| implemented yet. |  | ||||||
| struct pv_cpu_op is defined. For details see |  | ||||||
| linux/include/asm-ia64/paravirt_privop.h |  | ||||||
| Mostly they correspond to ia64 intrinsics 1-to-1. |  | ||||||
| Caveat: Now they are defined as C indirect function pointers, but in |  | ||||||
| order to support binary patch optimization, they will be changed |  | ||||||
| using GCC extended inline assembly code. |  | ||||||
| 
 |  | ||||||
| - a set of macros for hand written assembly code (.S files) |  | ||||||
| For maintenance purpose, the taken approach for .S files is single |  | ||||||
| source code and compile multiple times with different macros definitions. |  | ||||||
| Each pv_ops instance must define those macros to compile. |  | ||||||
| The important thing here is that sensitive, but non-privileged |  | ||||||
| instructions must be paravirtualized and that some privileged |  | ||||||
| instructions also need paravirtualization for reasonable performance. |  | ||||||
| Developers who modify .S files must be aware of that. At this moment |  | ||||||
| an easy checker is implemented to detect paravirtualization breakage. |  | ||||||
| But it doesn't cover all the cases. |  | ||||||
| 
 |  | ||||||
| Sometimes this set of macros is called pv_cpu_asm_op. But there is no |  | ||||||
| corresponding structure in the source code. |  | ||||||
| Those macros mostly 1:1 correspond to a subset of privileged |  | ||||||
| instructions. See linux/include/asm-ia64/native/inst.h. |  | ||||||
| And some functions written in assembly also need to be overrided so |  | ||||||
| that each pv_ops instance have to define some macros. Again see |  | ||||||
| linux/include/asm-ia64/native/inst.h. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| Those structures must be initialized very early before start_kernel. |  | ||||||
| Probably initialized in head.S using multi entry point or some other trick. |  | ||||||
| For native case implementation see linux/arch/ia64/kernel/paravirt.c. |  | ||||||
|  | @ -3,8 +3,8 @@ ALPS Touchpad Protocol | ||||||
| 
 | 
 | ||||||
| Introduction | Introduction | ||||||
| ------------ | ------------ | ||||||
| Currently the ALPS touchpad driver supports five protocol versions in use by | Currently the ALPS touchpad driver supports seven protocol versions in use by | ||||||
| ALPS touchpads, called versions 1, 2, 3, 4 and 5. | ALPS touchpads, called versions 1, 2, 3, 4, 5, 6 and 7. | ||||||
| 
 | 
 | ||||||
| Since roughly mid-2010 several new ALPS touchpads have been released and | Since roughly mid-2010 several new ALPS touchpads have been released and | ||||||
| integrated into a variety of laptops and netbooks.  These new touchpads | integrated into a variety of laptops and netbooks.  These new touchpads | ||||||
|  | @ -240,3 +240,67 @@ For mt, the format is: | ||||||
|  byte 3:    0  x23  x22   x21 x20  x19  x18   x17 |  byte 3:    0  x23  x22   x21 x20  x19  x18   x17 | ||||||
|  byte 4:    0   x9   x8    x7  x6   x5   x4    x3 |  byte 4:    0   x9   x8    x7  x6   x5   x4    x3 | ||||||
|  byte 5:    0  x16  x15   x14 x13  x12  x11   x10 |  byte 5:    0  x16  x15   x14 x13  x12  x11   x10 | ||||||
|  | 
 | ||||||
|  | ALPS Absolute Mode - Protocol Version 6 | ||||||
|  | --------------------------------------- | ||||||
|  | 
 | ||||||
|  | For trackstick packet, the format is: | ||||||
|  | 
 | ||||||
|  |  byte 0:    1    1    1    1    1    1    1    1 | ||||||
|  |  byte 1:    0   X6   X5   X4   X3   X2   X1   X0 | ||||||
|  |  byte 2:    0   Y6   Y5   Y4   Y3   Y2   Y1   Y0 | ||||||
|  |  byte 3:    ?   Y7   X7    ?    ?    M    R    L | ||||||
|  |  byte 4:   Z7   Z6   Z5   Z4   Z3   Z2   Z1   Z0 | ||||||
|  |  byte 5:    0    1    1    1    1    1    1    1 | ||||||
|  | 
 | ||||||
|  | For touchpad packet, the format is: | ||||||
|  | 
 | ||||||
|  |  byte 0:    1    1    1    1    1    1    1    1 | ||||||
|  |  byte 1:    0    0    0    0   x3   x2   x1   x0 | ||||||
|  |  byte 2:    0    0    0    0   y3   y2   y1   y0 | ||||||
|  |  byte 3:    ?   x7   x6   x5   x4    ?    r    l | ||||||
|  |  byte 4:    ?   y7   y6   y5   y4    ?    ?    ? | ||||||
|  |  byte 5:   z7   z6   z5   z4   z3   z2   z1   z0 | ||||||
|  | 
 | ||||||
|  | (v6 touchpad does not have middle button) | ||||||
|  | 
 | ||||||
|  | ALPS Absolute Mode - Protocol Version 7 | ||||||
|  | --------------------------------------- | ||||||
|  | 
 | ||||||
|  | For trackstick packet, the format is: | ||||||
|  | 
 | ||||||
|  |  byte 0:    0    1    0    0    1    0    0    0 | ||||||
|  |  byte 1:    1    1    *    *    1    M    R    L | ||||||
|  |  byte 2:   X7    1   X5   X4   X3   X2   X1   X0 | ||||||
|  |  byte 3:   Z6    1   Y6   X6    1   Y2   Y1   Y0 | ||||||
|  |  byte 4:   Y7    0   Y5   Y4   Y3    1    1    0 | ||||||
|  |  byte 5:  T&P    0   Z5   Z4   Z3   Z2   Z1   Z0 | ||||||
|  | 
 | ||||||
|  | For touchpad packet, the format is: | ||||||
|  | 
 | ||||||
|  |          packet-fmt     b7     b6     b5     b4     b3     b2     b1     b0 | ||||||
|  |  byte 0: TWO & MULTI     L      1      R      M      1   Y0-2   Y0-1   Y0-0 | ||||||
|  |  byte 0: NEW             L      1   X1-5      1      1   Y0-2   Y0-1   Y0-0 | ||||||
|  |  byte 1:             Y0-10   Y0-9   Y0-8   Y0-7   Y0-6   Y0-5   Y0-4   Y0-3 | ||||||
|  |  byte 2:             X0-11      1  X0-10   X0-9   X0-8   X0-7   X0-6   X0-5 | ||||||
|  |  byte 3:             X1-11      1   X0-4   X0-3      1   X0-2   X0-1   X0-0 | ||||||
|  |  byte 4: TWO         X1-10    TWO   X1-9   X1-8   X1-7   X1-6   X1-5   X1-4 | ||||||
|  |  byte 4: MULTI       X1-10    TWO   X1-9   X1-8   X1-7   X1-6   Y1-5      1 | ||||||
|  |  byte 4: NEW         X1-10    TWO   X1-9   X1-8   X1-7   X1-6      0      0 | ||||||
|  |  byte 5: TWO & NEW   Y1-10      0   Y1-9   Y1-8   Y1-7   Y1-6   Y1-5   Y1-4 | ||||||
|  |  byte 5: MULTI       Y1-10      0   Y1-9   Y1-8   Y1-7   Y1-6    F-1    F-0 | ||||||
|  | 
 | ||||||
|  |  L:         Left button | ||||||
|  |  R / M:     Non-clickpads: Right / Middle button | ||||||
|  |             Clickpads: When > 2 fingers are down, and some fingers | ||||||
|  |             are in the button area, then the 2 coordinates reported | ||||||
|  |             are for fingers outside the button area and these report | ||||||
|  |             extra fingers being present in the right / left button | ||||||
|  |             area. Note these fingers are not added to the F field! | ||||||
|  |             so if a TWO packet is received and R = 1 then there are | ||||||
|  |             3 fingers down, etc. | ||||||
|  |  TWO:       1: Two touches present, byte 0/4/5 are in TWO fmt | ||||||
|  |             0: If byte 4 bit 0 is 1, then byte 0/4/5 are in MULTI fmt | ||||||
|  |                otherwise byte 0 bit 4 must be set and byte 0/4/5 are | ||||||
|  |                in NEW fmt | ||||||
|  |  F:         Number of fingers - 3, 0 means 3 fingers, 1 means 4 ... | ||||||
|  |  | ||||||
|  | @ -524,15 +524,16 @@ more details, with real examples. | ||||||
| 	Example: | 	Example: | ||||||
| 		#arch/x86/Makefile | 		#arch/x86/Makefile | ||||||
| 		cflags-y += $(shell \ | 		cflags-y += $(shell \ | ||||||
| 		if [ $(call cc-version) -ge 0300 ] ; then \ | 		if [ $(cc-version) -ge 0300 ] ; then \ | ||||||
| 			echo "-mregparm=3"; fi ;) | 			echo "-mregparm=3"; fi ;) | ||||||
| 
 | 
 | ||||||
| 	In the above example, -mregparm=3 is only used for gcc version greater | 	In the above example, -mregparm=3 is only used for gcc version greater | ||||||
| 	than or equal to gcc 3.0. | 	than or equal to gcc 3.0. | ||||||
| 
 | 
 | ||||||
|     cc-ifversion |     cc-ifversion | ||||||
| 	cc-ifversion tests the version of $(CC) and equals last argument if | 	cc-ifversion tests the version of $(CC) and equals the fourth parameter | ||||||
| 	version expression is true. | 	if version expression is true, or the fifth (if given) if the version | ||||||
|  | 	expression is false. | ||||||
| 
 | 
 | ||||||
| 	Example: | 	Example: | ||||||
| 		#fs/reiserfs/Makefile | 		#fs/reiserfs/Makefile | ||||||
|  | @ -552,7 +553,7 @@ more details, with real examples. | ||||||
| 
 | 
 | ||||||
| 	Example: | 	Example: | ||||||
| 		#arch/powerpc/Makefile | 		#arch/powerpc/Makefile | ||||||
| 		$(Q)if test "$(call cc-fullversion)" = "040200" ; then \ | 		$(Q)if test "$(cc-fullversion)" = "040200" ; then \ | ||||||
| 			echo -n '*** GCC-4.2.0 cannot compile the 64-bit powerpc ' ; \ | 			echo -n '*** GCC-4.2.0 cannot compile the 64-bit powerpc ' ; \ | ||||||
| 			false ; \ | 			false ; \ | ||||||
| 		fi | 		fi | ||||||
|  | @ -751,12 +752,12 @@ generated by kbuild are deleted all over the kernel src tree when | ||||||
| Additional files can be specified in kbuild makefiles by use of $(clean-files). | Additional files can be specified in kbuild makefiles by use of $(clean-files). | ||||||
| 
 | 
 | ||||||
| 	Example: | 	Example: | ||||||
| 		#drivers/pci/Makefile | 		#lib/Makefile | ||||||
| 		clean-files := devlist.h classlist.h | 		clean-files := crc32table.h | ||||||
| 
 | 
 | ||||||
| When executing "make clean", the two files "devlist.h classlist.h" will be | When executing "make clean", the two files "devlist.h classlist.h" will be | ||||||
| deleted. Kbuild will assume files to be in the same relative directory as the | deleted. Kbuild will assume files to be in the same relative directory as the | ||||||
| Makefile except if an absolute path is specified (path starting with '/'). | Makefile, except if prefixed with $(objtree). | ||||||
| 
 | 
 | ||||||
| To delete a directory hierarchy use: | To delete a directory hierarchy use: | ||||||
| 
 | 
 | ||||||
|  | @ -764,9 +765,8 @@ To delete a directory hierarchy use: | ||||||
| 		#scripts/package/Makefile | 		#scripts/package/Makefile | ||||||
| 		clean-dirs := $(objtree)/debian/ | 		clean-dirs := $(objtree)/debian/ | ||||||
| 
 | 
 | ||||||
| This will delete the directory debian, including all subdirectories. | This will delete the directory debian in the toplevel directory, including all | ||||||
| Kbuild will assume the directories to be in the same relative path as the | subdirectories. | ||||||
| Makefile if no absolute path is specified (path does not start with '/'). |  | ||||||
| 
 | 
 | ||||||
| To exclude certain files from make clean, use the $(no-clean-files) variable. | To exclude certain files from make clean, use the $(no-clean-files) variable. | ||||||
| This is only a special case used in the top level Kbuild file: | This is only a special case used in the top level Kbuild file: | ||||||
|  |  | ||||||
|  | @ -2,6 +2,9 @@ Virtualization support in the Linux kernel. | ||||||
| 
 | 
 | ||||||
| 00-INDEX | 00-INDEX | ||||||
| 	- this file. | 	- this file. | ||||||
|  | 
 | ||||||
|  | paravirt_ops.txt | ||||||
|  | 	- Describes the Linux kernel pv_ops to support different hypervisors | ||||||
| kvm/ | kvm/ | ||||||
| 	- Kernel Virtual Machine.  See also http://linux-kvm.org | 	- Kernel Virtual Machine.  See also http://linux-kvm.org | ||||||
| uml/ | uml/ | ||||||
|  |  | ||||||
							
								
								
									
										32
									
								
								Documentation/virtual/paravirt_ops.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								Documentation/virtual/paravirt_ops.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,32 @@ | ||||||
|  | Paravirt_ops | ||||||
|  | ============ | ||||||
|  | 
 | ||||||
|  | Linux provides support for different hypervisor virtualization technologies. | ||||||
|  | Historically different binary kernels would be required in order to support | ||||||
|  | different hypervisors, this restriction was removed with pv_ops. | ||||||
|  | Linux pv_ops is a virtualization API which enables support for different | ||||||
|  | hypervisors. It allows each hypervisor to override critical operations and | ||||||
|  | allows a single kernel binary to run on all supported execution environments | ||||||
|  | including native machine -- without any hypervisors. | ||||||
|  | 
 | ||||||
|  | pv_ops provides a set of function pointers which represent operations | ||||||
|  | corresponding to low level critical instructions and high level | ||||||
|  | functionalities in various areas. pv-ops allows for optimizations at run | ||||||
|  | time by enabling binary patching of the low-ops critical operations | ||||||
|  | at boot time. | ||||||
|  | 
 | ||||||
|  | pv_ops operations are classified into three categories: | ||||||
|  | 
 | ||||||
|  | - simple indirect call | ||||||
|  |   These operations correspond to high level functionality where it is | ||||||
|  |   known that the overhead of indirect call isn't very important. | ||||||
|  | 
 | ||||||
|  | - indirect call which allows optimization with binary patch | ||||||
|  |   Usually these operations correspond to low level critical instructions. They | ||||||
|  |   are called frequently and are performance critical. The overhead is | ||||||
|  |   very important. | ||||||
|  | 
 | ||||||
|  | - a set of macros for hand written assembly code | ||||||
|  |   Hand written assembly codes (.S files) also need paravirtualization | ||||||
|  |   because they include sensitive instructions or some of code paths in | ||||||
|  |   them are very performance critical. | ||||||
|  | @ -3,7 +3,7 @@ protocol of kernel. These should be filled by bootloader or 16-bit | ||||||
| real-mode setup code of the kernel. References/settings to it mainly | real-mode setup code of the kernel. References/settings to it mainly | ||||||
| are in: | are in: | ||||||
| 
 | 
 | ||||||
|   arch/x86/include/asm/bootparam.h |   arch/x86/include/uapi/asm/bootparam.h | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Offset	Proto	Name		Meaning | Offset	Proto	Name		Meaning | ||||||
|  |  | ||||||
							
								
								
									
										79
									
								
								Kbuild
									
										
									
									
									
								
							
							
						
						
									
										79
									
								
								Kbuild
									
										
									
									
									
								
							|  | @ -5,51 +5,6 @@ | ||||||
| # 2) Generate asm-offsets.h (may need bounds.h) | # 2) Generate asm-offsets.h (may need bounds.h) | ||||||
| # 3) Check for missing system calls | # 3) Check for missing system calls | ||||||
| 
 | 
 | ||||||
| ##### |  | ||||||
| # 1) Generate bounds.h |  | ||||||
| 
 |  | ||||||
| bounds-file := include/generated/bounds.h |  | ||||||
| 
 |  | ||||||
| always  := $(bounds-file) |  | ||||||
| targets := $(bounds-file) kernel/bounds.s |  | ||||||
| 
 |  | ||||||
| quiet_cmd_bounds = GEN     $@ |  | ||||||
| define cmd_bounds |  | ||||||
| 	(set -e; \ |  | ||||||
| 	 echo "#ifndef __LINUX_BOUNDS_H__"; \ |  | ||||||
| 	 echo "#define __LINUX_BOUNDS_H__"; \ |  | ||||||
| 	 echo "/*"; \ |  | ||||||
| 	 echo " * DO NOT MODIFY."; \ |  | ||||||
| 	 echo " *"; \ |  | ||||||
| 	 echo " * This file was generated by Kbuild"; \ |  | ||||||
| 	 echo " *"; \ |  | ||||||
| 	 echo " */"; \ |  | ||||||
| 	 echo ""; \ |  | ||||||
| 	 sed -ne $(sed-y) $<; \ |  | ||||||
| 	 echo ""; \ |  | ||||||
| 	 echo "#endif" ) > $@ |  | ||||||
| endef |  | ||||||
| 
 |  | ||||||
| # We use internal kbuild rules to avoid the "is up to date" message from make |  | ||||||
| kernel/bounds.s: kernel/bounds.c FORCE |  | ||||||
| 	$(Q)mkdir -p $(dir $@) |  | ||||||
| 	$(call if_changed_dep,cc_s_c) |  | ||||||
| 
 |  | ||||||
| $(obj)/$(bounds-file): kernel/bounds.s Kbuild |  | ||||||
| 	$(Q)mkdir -p $(dir $@) |  | ||||||
| 	$(call cmd,bounds) |  | ||||||
| 
 |  | ||||||
| ##### |  | ||||||
| # 2) Generate asm-offsets.h |  | ||||||
| # |  | ||||||
| 
 |  | ||||||
| offsets-file := include/generated/asm-offsets.h |  | ||||||
| 
 |  | ||||||
| always  += $(offsets-file) |  | ||||||
| targets += $(offsets-file) |  | ||||||
| targets += arch/$(SRCARCH)/kernel/asm-offsets.s |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # Default sed regexp - multiline due to syntax constraints | # Default sed regexp - multiline due to syntax constraints | ||||||
| define sed-y | define sed-y | ||||||
| 	"/^->/{s:->#\(.*\):/* \1 */:; \ | 	"/^->/{s:->#\(.*\):/* \1 */:; \ | ||||||
|  | @ -61,13 +16,12 @@ endef | ||||||
| quiet_cmd_offsets = GEN     $@ | quiet_cmd_offsets = GEN     $@ | ||||||
| define cmd_offsets | define cmd_offsets | ||||||
| 	(set -e; \ | 	(set -e; \ | ||||||
| 	 echo "#ifndef __ASM_OFFSETS_H__"; \ | 	 echo "#ifndef $2"; \ | ||||||
| 	 echo "#define __ASM_OFFSETS_H__"; \ | 	 echo "#define $2"; \ | ||||||
| 	 echo "/*"; \ | 	 echo "/*"; \ | ||||||
| 	 echo " * DO NOT MODIFY."; \ | 	 echo " * DO NOT MODIFY."; \ | ||||||
| 	 echo " *"; \ | 	 echo " *"; \ | ||||||
| 	 echo " * This file was generated by Kbuild"; \ | 	 echo " * This file was generated by Kbuild"; \ | ||||||
| 	 echo " *"; \ |  | ||||||
| 	 echo " */"; \ | 	 echo " */"; \ | ||||||
| 	 echo ""; \ | 	 echo ""; \ | ||||||
| 	 sed -ne $(sed-y) $<; \ | 	 sed -ne $(sed-y) $<; \ | ||||||
|  | @ -75,6 +29,33 @@ define cmd_offsets | ||||||
| 	 echo "#endif" ) > $@ | 	 echo "#endif" ) > $@ | ||||||
| endef | endef | ||||||
| 
 | 
 | ||||||
|  | ##### | ||||||
|  | # 1) Generate bounds.h | ||||||
|  | 
 | ||||||
|  | bounds-file := include/generated/bounds.h | ||||||
|  | 
 | ||||||
|  | always  := $(bounds-file) | ||||||
|  | targets := $(bounds-file) kernel/bounds.s | ||||||
|  | 
 | ||||||
|  | # We use internal kbuild rules to avoid the "is up to date" message from make | ||||||
|  | kernel/bounds.s: kernel/bounds.c FORCE | ||||||
|  | 	$(Q)mkdir -p $(dir $@) | ||||||
|  | 	$(call if_changed_dep,cc_s_c) | ||||||
|  | 
 | ||||||
|  | $(obj)/$(bounds-file): kernel/bounds.s Kbuild | ||||||
|  | 	$(Q)mkdir -p $(dir $@) | ||||||
|  | 	$(call cmd,offsets,__LINUX_BOUNDS_H__) | ||||||
|  | 
 | ||||||
|  | ##### | ||||||
|  | # 2) Generate asm-offsets.h | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | offsets-file := include/generated/asm-offsets.h | ||||||
|  | 
 | ||||||
|  | always  += $(offsets-file) | ||||||
|  | targets += $(offsets-file) | ||||||
|  | targets += arch/$(SRCARCH)/kernel/asm-offsets.s | ||||||
|  | 
 | ||||||
| # We use internal kbuild rules to avoid the "is up to date" message from make | # We use internal kbuild rules to avoid the "is up to date" message from make | ||||||
| arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \ | arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \ | ||||||
|                                       $(obj)/$(bounds-file) FORCE |                                       $(obj)/$(bounds-file) FORCE | ||||||
|  | @ -82,7 +63,7 @@ arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \ | ||||||
| 	$(call if_changed_dep,cc_s_c) | 	$(call if_changed_dep,cc_s_c) | ||||||
| 
 | 
 | ||||||
| $(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild | $(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild | ||||||
| 	$(call cmd,offsets) | 	$(call cmd,offsets,__ASM_OFFSETS_H__) | ||||||
| 
 | 
 | ||||||
| ##### | ##### | ||||||
| # 3) Check for missing system calls | # 3) Check for missing system calls | ||||||
|  |  | ||||||
							
								
								
									
										30
									
								
								MAINTAINERS
									
										
									
									
									
								
							
							
						
						
									
										30
									
								
								MAINTAINERS
									
										
									
									
									
								
							|  | @ -2065,7 +2065,7 @@ F:	include/net/bluetooth/ | ||||||
| BONDING DRIVER | BONDING DRIVER | ||||||
| M:	Jay Vosburgh <j.vosburgh@gmail.com> | M:	Jay Vosburgh <j.vosburgh@gmail.com> | ||||||
| M:	Veaceslav Falico <vfalico@gmail.com> | M:	Veaceslav Falico <vfalico@gmail.com> | ||||||
| M:	Andy Gospodarek <andy@greyhouse.net> | M:	Andy Gospodarek <gospo@cumulusnetworks.com> | ||||||
| L:	netdev@vger.kernel.org | L:	netdev@vger.kernel.org | ||||||
| W:	http://sourceforge.net/projects/bonding/ | W:	http://sourceforge.net/projects/bonding/ | ||||||
| S:	Supported | S:	Supported | ||||||
|  | @ -2433,7 +2433,8 @@ F:	arch/powerpc/oprofile/*cell* | ||||||
| F:	arch/powerpc/platforms/cell/ | F:	arch/powerpc/platforms/cell/ | ||||||
| 
 | 
 | ||||||
| CEPH DISTRIBUTED FILE SYSTEM CLIENT | CEPH DISTRIBUTED FILE SYSTEM CLIENT | ||||||
| M:	Sage Weil <sage@inktank.com> | M:	Yan, Zheng <zyan@redhat.com> | ||||||
|  | M:	Sage Weil <sage@redhat.com> | ||||||
| L:	ceph-devel@vger.kernel.org | L:	ceph-devel@vger.kernel.org | ||||||
| W:	http://ceph.com/ | W:	http://ceph.com/ | ||||||
| T:	git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git | T:	git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git | ||||||
|  | @ -3936,7 +3937,7 @@ S:	Maintained | ||||||
| F:	drivers/staging/fbtft/ | F:	drivers/staging/fbtft/ | ||||||
| 
 | 
 | ||||||
| FCOE SUBSYSTEM (libfc, libfcoe, fcoe) | FCOE SUBSYSTEM (libfc, libfcoe, fcoe) | ||||||
| M:	Robert Love <robert.w.love@intel.com> | M:	Vasu Dev <vasu.dev@intel.com> | ||||||
| L:	fcoe-devel@open-fcoe.org | L:	fcoe-devel@open-fcoe.org | ||||||
| W:	www.Open-FCoE.org | W:	www.Open-FCoE.org | ||||||
| S:	Supported | S:	Supported | ||||||
|  | @ -4092,6 +4093,12 @@ S:	Maintained | ||||||
| F:	include/linux/platform_data/video-imxfb.h | F:	include/linux/platform_data/video-imxfb.h | ||||||
| F:	drivers/video/fbdev/imxfb.c | F:	drivers/video/fbdev/imxfb.c | ||||||
| 
 | 
 | ||||||
|  | FREESCALE QUAD SPI DRIVER | ||||||
|  | M:	Han Xu <han.xu@freescale.com> | ||||||
|  | L:	linux-mtd@lists.infradead.org | ||||||
|  | S:	Maintained | ||||||
|  | F:	drivers/mtd/spi-nor/fsl-quadspi.c | ||||||
|  | 
 | ||||||
| FREESCALE SOC FS_ENET DRIVER | FREESCALE SOC FS_ENET DRIVER | ||||||
| M:	Pantelis Antoniou <pantelis.antoniou@gmail.com> | M:	Pantelis Antoniou <pantelis.antoniou@gmail.com> | ||||||
| M:	Vitaly Bordug <vbordug@ru.mvista.com> | M:	Vitaly Bordug <vbordug@ru.mvista.com> | ||||||
|  | @ -7206,8 +7213,7 @@ ORACLE CLUSTER FILESYSTEM 2 (OCFS2) | ||||||
| M:	Mark Fasheh <mfasheh@suse.com> | M:	Mark Fasheh <mfasheh@suse.com> | ||||||
| M:	Joel Becker <jlbec@evilplan.org> | M:	Joel Becker <jlbec@evilplan.org> | ||||||
| L:	ocfs2-devel@oss.oracle.com (moderated for non-subscribers) | L:	ocfs2-devel@oss.oracle.com (moderated for non-subscribers) | ||||||
| W:	http://oss.oracle.com/projects/ocfs2/ | W:	http://ocfs2.wiki.kernel.org | ||||||
| T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2.git |  | ||||||
| S:	Supported | S:	Supported | ||||||
| F:	Documentation/filesystems/ocfs2.txt | F:	Documentation/filesystems/ocfs2.txt | ||||||
| F:	Documentation/filesystems/dlmfs.txt | F:	Documentation/filesystems/dlmfs.txt | ||||||
|  | @ -7296,7 +7302,7 @@ M:	Alok Kataria <akataria@vmware.com> | ||||||
| M:	Rusty Russell <rusty@rustcorp.com.au> | M:	Rusty Russell <rusty@rustcorp.com.au> | ||||||
| L:	virtualization@lists.linux-foundation.org | L:	virtualization@lists.linux-foundation.org | ||||||
| S:	Supported | S:	Supported | ||||||
| F:	Documentation/ia64/paravirt_ops.txt | F:	Documentation/virtual/paravirt_ops.txt | ||||||
| F:	arch/*/kernel/paravirt* | F:	arch/*/kernel/paravirt* | ||||||
| F:	arch/*/include/asm/paravirt.h | F:	arch/*/include/asm/paravirt.h | ||||||
| 
 | 
 | ||||||
|  | @ -7992,8 +7998,8 @@ S:	Supported | ||||||
| F:	drivers/net/wireless/ath/wcn36xx/ | F:	drivers/net/wireless/ath/wcn36xx/ | ||||||
| 
 | 
 | ||||||
| RADOS BLOCK DEVICE (RBD) | RADOS BLOCK DEVICE (RBD) | ||||||
| M:	Yehuda Sadeh <yehuda@inktank.com> | M:	Ilya Dryomov <idryomov@gmail.com> | ||||||
| M:	Sage Weil <sage@inktank.com> | M:	Sage Weil <sage@redhat.com> | ||||||
| M:	Alex Elder <elder@kernel.org> | M:	Alex Elder <elder@kernel.org> | ||||||
| M:	ceph-devel@vger.kernel.org | M:	ceph-devel@vger.kernel.org | ||||||
| W:	http://ceph.com/ | W:	http://ceph.com/ | ||||||
|  | @ -8496,6 +8502,7 @@ SYNOPSYS DESIGNWARE DMAC DRIVER | ||||||
| M:	Viresh Kumar <viresh.linux@gmail.com> | M:	Viresh Kumar <viresh.linux@gmail.com> | ||||||
| M:	Andy Shevchenko <andriy.shevchenko@linux.intel.com> | M:	Andy Shevchenko <andriy.shevchenko@linux.intel.com> | ||||||
| S:	Maintained | S:	Maintained | ||||||
|  | F:	include/linux/dma/dw.h | ||||||
| F:	include/linux/platform_data/dma-dw.h | F:	include/linux/platform_data/dma-dw.h | ||||||
| F:	drivers/dma/dw/ | F:	drivers/dma/dw/ | ||||||
| 
 | 
 | ||||||
|  | @ -8558,7 +8565,7 @@ S:	Maintained | ||||||
| F:	drivers/scsi/sr* | F:	drivers/scsi/sr* | ||||||
| 
 | 
 | ||||||
| SCSI RDMA PROTOCOL (SRP) INITIATOR | SCSI RDMA PROTOCOL (SRP) INITIATOR | ||||||
| M:	Bart Van Assche <bvanassche@acm.org> | M:	Bart Van Assche <bart.vanassche@sandisk.com> | ||||||
| L:	linux-rdma@vger.kernel.org | L:	linux-rdma@vger.kernel.org | ||||||
| S:	Supported | S:	Supported | ||||||
| W:	http://www.openfabrics.org | W:	http://www.openfabrics.org | ||||||
|  | @ -9710,6 +9717,11 @@ L:	linux-omap@vger.kernel.org | ||||||
| S:	Maintained | S:	Maintained | ||||||
| F:	drivers/thermal/ti-soc-thermal/ | F:	drivers/thermal/ti-soc-thermal/ | ||||||
| 
 | 
 | ||||||
|  | TI CDCE706 CLOCK DRIVER | ||||||
|  | M:	Max Filippov <jcmvbkbc@gmail.com> | ||||||
|  | S:	Maintained | ||||||
|  | F:	drivers/clk/clk-cdce706.c | ||||||
|  | 
 | ||||||
| TI CLOCK DRIVER | TI CLOCK DRIVER | ||||||
| M:	Tero Kristo <t-kristo@ti.com> | M:	Tero Kristo <t-kristo@ti.com> | ||||||
| L:	linux-omap@vger.kernel.org | L:	linux-omap@vger.kernel.org | ||||||
|  |  | ||||||
							
								
								
									
										12
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -1,8 +1,8 @@ | ||||||
| VERSION = 3 | VERSION = 4 | ||||||
| PATCHLEVEL = 19 | PATCHLEVEL = 0 | ||||||
| SUBLEVEL = 0 | SUBLEVEL = 0 | ||||||
| EXTRAVERSION = | EXTRAVERSION = -rc2 | ||||||
| NAME = Diseased Newt | NAME = Hurr durr I'ma sheep | ||||||
| 
 | 
 | ||||||
| # *DOCUMENTATION*
 | # *DOCUMENTATION*
 | ||||||
| # To see a list of typical targets execute "make help"
 | # To see a list of typical targets execute "make help"
 | ||||||
|  | @ -502,7 +502,7 @@ endif | ||||||
| ifeq ($(KBUILD_EXTMOD),) | ifeq ($(KBUILD_EXTMOD),) | ||||||
|         ifneq ($(filter config %config,$(MAKECMDGOALS)),) |         ifneq ($(filter config %config,$(MAKECMDGOALS)),) | ||||||
|                 config-targets := 1 |                 config-targets := 1 | ||||||
|                 ifneq ($(filter-out config %config,$(MAKECMDGOALS)),) |                 ifneq ($(words $(MAKECMDGOALS)),1) | ||||||
|                         mixed-targets := 1 |                         mixed-targets := 1 | ||||||
|                 endif |                 endif | ||||||
|         endif |         endif | ||||||
|  | @ -1180,7 +1180,7 @@ CLEAN_DIRS  += $(MODVERDIR) | ||||||
| # Directories & files removed with 'make mrproper'
 | # Directories & files removed with 'make mrproper'
 | ||||||
| MRPROPER_DIRS  += include/config usr/include include/generated          \
 | MRPROPER_DIRS  += include/config usr/include include/generated          \
 | ||||||
| 		  arch/*/include/generated .tmp_objdiff | 		  arch/*/include/generated .tmp_objdiff | ||||||
| MRPROPER_FILES += .config .config.old .version .old_version $(version_h) \
 | MRPROPER_FILES += .config .config.old .version .old_version \
 | ||||||
| 		  Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
 | 		  Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \
 | ||||||
| 		  signing_key.priv signing_key.x509 x509.genkey		\
 | 		  signing_key.priv signing_key.x509 x509.genkey		\
 | ||||||
| 		  extra_certificates signing_key.x509.keyid		\
 | 		  extra_certificates signing_key.x509.keyid		\
 | ||||||
|  |  | ||||||
|  | @ -27,7 +27,7 @@ | ||||||
| #define get_ds()  (KERNEL_DS) | #define get_ds()  (KERNEL_DS) | ||||||
| #define set_fs(x) (current_thread_info()->addr_limit = (x)) | #define set_fs(x) (current_thread_info()->addr_limit = (x)) | ||||||
| 
 | 
 | ||||||
| #define segment_eq(a,b)	((a).seg == (b).seg) | #define segment_eq(a, b)	((a).seg == (b).seg) | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * Is a address valid? This does a straightforward calculation rather |  * Is a address valid? This does a straightforward calculation rather | ||||||
|  | @ -39,13 +39,13 @@ | ||||||
|  *  - AND "addr+size" doesn't have any high-bits set |  *  - AND "addr+size" doesn't have any high-bits set | ||||||
|  *  - OR we are in kernel mode. |  *  - OR we are in kernel mode. | ||||||
|  */ |  */ | ||||||
| #define __access_ok(addr,size,segment) \ | #define __access_ok(addr, size, segment) \ | ||||||
| 	(((segment).seg & (addr | size | (addr+size))) == 0) | 	(((segment).seg & (addr | size | (addr+size))) == 0) | ||||||
| 
 | 
 | ||||||
| #define access_ok(type,addr,size)				\ | #define access_ok(type, addr, size)				\ | ||||||
| ({								\ | ({								\ | ||||||
| 	__chk_user_ptr(addr);					\ | 	__chk_user_ptr(addr);					\ | ||||||
| 	__access_ok(((unsigned long)(addr)),(size),get_fs());	\ | 	__access_ok(((unsigned long)(addr)), (size), get_fs());	\ | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  | @ -60,20 +60,20 @@ | ||||||
|  * (a) re-use the arguments for side effects (sizeof/typeof is ok) |  * (a) re-use the arguments for side effects (sizeof/typeof is ok) | ||||||
|  * (b) require any knowledge of processes at this stage |  * (b) require any knowledge of processes at this stage | ||||||
|  */ |  */ | ||||||
| #define put_user(x,ptr) \ | #define put_user(x, ptr) \ | ||||||
|   __put_user_check((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr)),get_fs()) |   __put_user_check((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr)), get_fs()) | ||||||
| #define get_user(x,ptr) \ | #define get_user(x, ptr) \ | ||||||
|   __get_user_check((x),(ptr),sizeof(*(ptr)),get_fs()) |   __get_user_check((x), (ptr), sizeof(*(ptr)), get_fs()) | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * The "__xxx" versions do not do address space checking, useful when |  * The "__xxx" versions do not do address space checking, useful when | ||||||
|  * doing multiple accesses to the same area (the programmer has to do the |  * doing multiple accesses to the same area (the programmer has to do the | ||||||
|  * checks by hand with "access_ok()") |  * checks by hand with "access_ok()") | ||||||
|  */ |  */ | ||||||
| #define __put_user(x,ptr) \ | #define __put_user(x, ptr) \ | ||||||
|   __put_user_nocheck((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr))) |   __put_user_nocheck((__typeof__(*(ptr)))(x), (ptr), sizeof(*(ptr))) | ||||||
| #define __get_user(x,ptr) \ | #define __get_user(x, ptr) \ | ||||||
|   __get_user_nocheck((x),(ptr),sizeof(*(ptr))) |   __get_user_nocheck((x), (ptr), sizeof(*(ptr))) | ||||||
|    |    | ||||||
| /*
 | /*
 | ||||||
|  * The "lda %1, 2b-1b(%0)" bits are magic to get the assembler to |  * The "lda %1, 2b-1b(%0)" bits are magic to get the assembler to | ||||||
|  | @ -84,7 +84,7 @@ | ||||||
| 
 | 
 | ||||||
| extern void __get_user_unknown(void); | extern void __get_user_unknown(void); | ||||||
| 
 | 
 | ||||||
| #define __get_user_nocheck(x,ptr,size)				\ | #define __get_user_nocheck(x, ptr, size)			\ | ||||||
| ({								\ | ({								\ | ||||||
| 	long __gu_err = 0;					\ | 	long __gu_err = 0;					\ | ||||||
| 	unsigned long __gu_val;					\ | 	unsigned long __gu_val;					\ | ||||||
|  | @ -96,16 +96,16 @@ extern void __get_user_unknown(void); | ||||||
| 	  case 8: __get_user_64(ptr); break;			\ | 	  case 8: __get_user_64(ptr); break;			\ | ||||||
| 	  default: __get_user_unknown(); break;			\ | 	  default: __get_user_unknown(); break;			\ | ||||||
| 	}							\ | 	}							\ | ||||||
| 	(x) = (__typeof__(*(ptr))) __gu_val;			\ | 	(x) = (__force __typeof__(*(ptr))) __gu_val;		\ | ||||||
| 	__gu_err;						\ | 	__gu_err;						\ | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| #define __get_user_check(x,ptr,size,segment)				\ | #define __get_user_check(x, ptr, size, segment)				\ | ||||||
| ({									\ | ({									\ | ||||||
| 	long __gu_err = -EFAULT;					\ | 	long __gu_err = -EFAULT;					\ | ||||||
| 	unsigned long __gu_val = 0;					\ | 	unsigned long __gu_val = 0;					\ | ||||||
| 	const __typeof__(*(ptr)) __user *__gu_addr = (ptr);		\ | 	const __typeof__(*(ptr)) __user *__gu_addr = (ptr);		\ | ||||||
| 	if (__access_ok((unsigned long)__gu_addr,size,segment)) {	\ | 	if (__access_ok((unsigned long)__gu_addr, size, segment)) {	\ | ||||||
| 		__gu_err = 0;						\ | 		__gu_err = 0;						\ | ||||||
| 		switch (size) {						\ | 		switch (size) {						\ | ||||||
| 		  case 1: __get_user_8(__gu_addr); break;		\ | 		  case 1: __get_user_8(__gu_addr); break;		\ | ||||||
|  | @ -115,7 +115,7 @@ extern void __get_user_unknown(void); | ||||||
| 		  default: __get_user_unknown(); break;			\ | 		  default: __get_user_unknown(); break;			\ | ||||||
| 		}							\ | 		}							\ | ||||||
| 	}								\ | 	}								\ | ||||||
| 	(x) = (__typeof__(*(ptr))) __gu_val;				\ | 	(x) = (__force __typeof__(*(ptr))) __gu_val;			\ | ||||||
| 	__gu_err;							\ | 	__gu_err;							\ | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
|  | @ -201,31 +201,31 @@ struct __large_struct { unsigned long buf[100]; }; | ||||||
| 
 | 
 | ||||||
| extern void __put_user_unknown(void); | extern void __put_user_unknown(void); | ||||||
| 
 | 
 | ||||||
| #define __put_user_nocheck(x,ptr,size)				\ | #define __put_user_nocheck(x, ptr, size)			\ | ||||||
| ({								\ | ({								\ | ||||||
| 	long __pu_err = 0;					\ | 	long __pu_err = 0;					\ | ||||||
| 	__chk_user_ptr(ptr);					\ | 	__chk_user_ptr(ptr);					\ | ||||||
| 	switch (size) {						\ | 	switch (size) {						\ | ||||||
| 	  case 1: __put_user_8(x,ptr); break;			\ | 	  case 1: __put_user_8(x, ptr); break;			\ | ||||||
| 	  case 2: __put_user_16(x,ptr); break;			\ | 	  case 2: __put_user_16(x, ptr); break;			\ | ||||||
| 	  case 4: __put_user_32(x,ptr); break;			\ | 	  case 4: __put_user_32(x, ptr); break;			\ | ||||||
| 	  case 8: __put_user_64(x,ptr); break;			\ | 	  case 8: __put_user_64(x, ptr); break;			\ | ||||||
| 	  default: __put_user_unknown(); break;			\ | 	  default: __put_user_unknown(); break;			\ | ||||||
| 	}							\ | 	}							\ | ||||||
| 	__pu_err;						\ | 	__pu_err;						\ | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| #define __put_user_check(x,ptr,size,segment)				\ | #define __put_user_check(x, ptr, size, segment)				\ | ||||||
| ({									\ | ({									\ | ||||||
| 	long __pu_err = -EFAULT;					\ | 	long __pu_err = -EFAULT;					\ | ||||||
| 	__typeof__(*(ptr)) __user *__pu_addr = (ptr);			\ | 	__typeof__(*(ptr)) __user *__pu_addr = (ptr);			\ | ||||||
| 	if (__access_ok((unsigned long)__pu_addr,size,segment)) {	\ | 	if (__access_ok((unsigned long)__pu_addr, size, segment)) {	\ | ||||||
| 		__pu_err = 0;						\ | 		__pu_err = 0;						\ | ||||||
| 		switch (size) {						\ | 		switch (size) {						\ | ||||||
| 		  case 1: __put_user_8(x,__pu_addr); break;		\ | 		  case 1: __put_user_8(x, __pu_addr); break;		\ | ||||||
| 		  case 2: __put_user_16(x,__pu_addr); break;		\ | 		  case 2: __put_user_16(x, __pu_addr); break;		\ | ||||||
| 		  case 4: __put_user_32(x,__pu_addr); break;		\ | 		  case 4: __put_user_32(x, __pu_addr); break;		\ | ||||||
| 		  case 8: __put_user_64(x,__pu_addr); break;		\ | 		  case 8: __put_user_64(x, __pu_addr); break;		\ | ||||||
| 		  default: __put_user_unknown(); break;			\ | 		  default: __put_user_unknown(); break;			\ | ||||||
| 		}							\ | 		}							\ | ||||||
| 	}								\ | 	}								\ | ||||||
|  | @ -237,7 +237,7 @@ extern void __put_user_unknown(void); | ||||||
|  * instead of writing: this is because they do not write to |  * instead of writing: this is because they do not write to | ||||||
|  * any memory gcc knows about, so there are no aliasing issues |  * any memory gcc knows about, so there are no aliasing issues | ||||||
|  */ |  */ | ||||||
| #define __put_user_64(x,addr)					\ | #define __put_user_64(x, addr)					\ | ||||||
| __asm__ __volatile__("1: stq %r2,%1\n"				\ | __asm__ __volatile__("1: stq %r2,%1\n"				\ | ||||||
| 	"2:\n"							\ | 	"2:\n"							\ | ||||||
| 	".section __ex_table,\"a\"\n"				\ | 	".section __ex_table,\"a\"\n"				\ | ||||||
|  | @ -247,7 +247,7 @@ __asm__ __volatile__("1: stq %r2,%1\n"				\ | ||||||
| 		: "=r"(__pu_err)				\ | 		: "=r"(__pu_err)				\ | ||||||
| 		: "m" (__m(addr)), "rJ" (x), "0"(__pu_err)) | 		: "m" (__m(addr)), "rJ" (x), "0"(__pu_err)) | ||||||
| 
 | 
 | ||||||
| #define __put_user_32(x,addr)					\ | #define __put_user_32(x, addr)					\ | ||||||
| __asm__ __volatile__("1: stl %r2,%1\n"				\ | __asm__ __volatile__("1: stl %r2,%1\n"				\ | ||||||
| 	"2:\n"							\ | 	"2:\n"							\ | ||||||
| 	".section __ex_table,\"a\"\n"				\ | 	".section __ex_table,\"a\"\n"				\ | ||||||
|  | @ -260,7 +260,7 @@ __asm__ __volatile__("1: stl %r2,%1\n"				\ | ||||||
| #ifdef __alpha_bwx__ | #ifdef __alpha_bwx__ | ||||||
| /* Those lucky bastards with ev56 and later CPUs can do byte/word moves.  */ | /* Those lucky bastards with ev56 and later CPUs can do byte/word moves.  */ | ||||||
| 
 | 
 | ||||||
| #define __put_user_16(x,addr)					\ | #define __put_user_16(x, addr)					\ | ||||||
| __asm__ __volatile__("1: stw %r2,%1\n"				\ | __asm__ __volatile__("1: stw %r2,%1\n"				\ | ||||||
| 	"2:\n"							\ | 	"2:\n"							\ | ||||||
| 	".section __ex_table,\"a\"\n"				\ | 	".section __ex_table,\"a\"\n"				\ | ||||||
|  | @ -270,7 +270,7 @@ __asm__ __volatile__("1: stw %r2,%1\n"				\ | ||||||
| 		: "=r"(__pu_err)				\ | 		: "=r"(__pu_err)				\ | ||||||
| 		: "m"(__m(addr)), "rJ"(x), "0"(__pu_err)) | 		: "m"(__m(addr)), "rJ"(x), "0"(__pu_err)) | ||||||
| 
 | 
 | ||||||
| #define __put_user_8(x,addr)					\ | #define __put_user_8(x, addr)					\ | ||||||
| __asm__ __volatile__("1: stb %r2,%1\n"				\ | __asm__ __volatile__("1: stb %r2,%1\n"				\ | ||||||
| 	"2:\n"							\ | 	"2:\n"							\ | ||||||
| 	".section __ex_table,\"a\"\n"				\ | 	".section __ex_table,\"a\"\n"				\ | ||||||
|  | @ -283,7 +283,7 @@ __asm__ __volatile__("1: stb %r2,%1\n"				\ | ||||||
| /* Unfortunately, we can't get an unaligned access trap for the sub-word
 | /* Unfortunately, we can't get an unaligned access trap for the sub-word
 | ||||||
|    write, so we have to do a general unaligned operation.  */ |    write, so we have to do a general unaligned operation.  */ | ||||||
| 
 | 
 | ||||||
| #define __put_user_16(x,addr)					\ | #define __put_user_16(x, addr)					\ | ||||||
| {								\ | {								\ | ||||||
| 	long __pu_tmp1, __pu_tmp2, __pu_tmp3, __pu_tmp4;	\ | 	long __pu_tmp1, __pu_tmp2, __pu_tmp3, __pu_tmp4;	\ | ||||||
| 	__asm__ __volatile__(					\ | 	__asm__ __volatile__(					\ | ||||||
|  | @ -308,13 +308,13 @@ __asm__ __volatile__("1: stb %r2,%1\n"				\ | ||||||
| 	"	.long 4b - .\n"					\ | 	"	.long 4b - .\n"					\ | ||||||
| 	"	lda $31, 5b-4b(%0)\n"				\ | 	"	lda $31, 5b-4b(%0)\n"				\ | ||||||
| 	".previous"						\ | 	".previous"						\ | ||||||
| 		: "=r"(__pu_err), "=&r"(__pu_tmp1),		\ | 		: "=r"(__pu_err), "=&r"(__pu_tmp1), 		\ | ||||||
| 		  "=&r"(__pu_tmp2), "=&r"(__pu_tmp3),		\ | 		  "=&r"(__pu_tmp2), "=&r"(__pu_tmp3), 		\ | ||||||
| 		  "=&r"(__pu_tmp4)				\ | 		  "=&r"(__pu_tmp4)				\ | ||||||
| 		: "r"(addr), "r"((unsigned long)(x)), "0"(__pu_err)); \ | 		: "r"(addr), "r"((unsigned long)(x)), "0"(__pu_err)); \ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #define __put_user_8(x,addr)					\ | #define __put_user_8(x, addr)					\ | ||||||
| {								\ | {								\ | ||||||
| 	long __pu_tmp1, __pu_tmp2;				\ | 	long __pu_tmp1, __pu_tmp2;				\ | ||||||
| 	__asm__ __volatile__(					\ | 	__asm__ __volatile__(					\ | ||||||
|  | @ -330,7 +330,7 @@ __asm__ __volatile__("1: stb %r2,%1\n"				\ | ||||||
| 	"	.long 2b - .\n"					\ | 	"	.long 2b - .\n"					\ | ||||||
| 	"	lda $31, 3b-2b(%0)\n"				\ | 	"	lda $31, 3b-2b(%0)\n"				\ | ||||||
| 	".previous"						\ | 	".previous"						\ | ||||||
| 		: "=r"(__pu_err),				\ | 		: "=r"(__pu_err), 				\ | ||||||
| 	  	  "=&r"(__pu_tmp1), "=&r"(__pu_tmp2)		\ | 	  	  "=&r"(__pu_tmp1), "=&r"(__pu_tmp2)		\ | ||||||
| 		: "r"((unsigned long)(x)), "r"(addr), "0"(__pu_err)); \ | 		: "r"((unsigned long)(x)), "r"(addr), "0"(__pu_err)); \ | ||||||
| } | } | ||||||
|  | @ -366,7 +366,7 @@ __copy_tofrom_user_nocheck(void *to, const void *from, long len) | ||||||
| 		: "=r" (__cu_len), "=r" (__cu_from), "=r" (__cu_to) | 		: "=r" (__cu_len), "=r" (__cu_from), "=r" (__cu_to) | ||||||
| 		: __module_address(__copy_user) | 		: __module_address(__copy_user) | ||||||
| 		  "0" (__cu_len), "1" (__cu_from), "2" (__cu_to) | 		  "0" (__cu_len), "1" (__cu_from), "2" (__cu_to) | ||||||
| 		: "$1","$2","$3","$4","$5","$28","memory"); | 		: "$1", "$2", "$3", "$4", "$5", "$28", "memory"); | ||||||
| 
 | 
 | ||||||
| 	return __cu_len; | 	return __cu_len; | ||||||
| } | } | ||||||
|  | @ -379,15 +379,15 @@ __copy_tofrom_user(void *to, const void *from, long len, const void __user *vali | ||||||
| 	return len; | 	return len; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #define __copy_to_user(to,from,n)					\ | #define __copy_to_user(to, from, n)					\ | ||||||
| ({									\ | ({									\ | ||||||
| 	__chk_user_ptr(to);						\ | 	__chk_user_ptr(to);						\ | ||||||
| 	__copy_tofrom_user_nocheck((__force void *)(to),(from),(n));	\ | 	__copy_tofrom_user_nocheck((__force void *)(to), (from), (n));	\ | ||||||
| }) | }) | ||||||
| #define __copy_from_user(to,from,n)					\ | #define __copy_from_user(to, from, n)					\ | ||||||
| ({									\ | ({									\ | ||||||
| 	__chk_user_ptr(from);						\ | 	__chk_user_ptr(from);						\ | ||||||
| 	__copy_tofrom_user_nocheck((to),(__force void *)(from),(n));	\ | 	__copy_tofrom_user_nocheck((to), (__force void *)(from), (n));	\ | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| #define __copy_to_user_inatomic __copy_to_user | #define __copy_to_user_inatomic __copy_to_user | ||||||
|  | @ -418,7 +418,7 @@ __clear_user(void __user *to, long len) | ||||||
| 		: "=r"(__cl_len), "=r"(__cl_to) | 		: "=r"(__cl_len), "=r"(__cl_to) | ||||||
| 		: __module_address(__do_clear_user) | 		: __module_address(__do_clear_user) | ||||||
| 		  "0"(__cl_len), "1"(__cl_to) | 		  "0"(__cl_len), "1"(__cl_to) | ||||||
| 		: "$1","$2","$3","$4","$5","$28","memory"); | 		: "$1", "$2", "$3", "$4", "$5", "$28", "memory"); | ||||||
| 	return __cl_len; | 	return __cl_len; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -112,7 +112,7 @@ | ||||||
| 			chan_allocation_order = <0>; | 			chan_allocation_order = <0>; | ||||||
| 			chan_priority = <1>; | 			chan_priority = <1>; | ||||||
| 			block_size = <0x7ff>; | 			block_size = <0x7ff>; | ||||||
| 			data_width = <2 0 0 0>; | 			data_width = <2>; | ||||||
| 			clocks = <&ahb_clk>; | 			clocks = <&ahb_clk>; | ||||||
| 			clock-names = "hclk"; | 			clock-names = "hclk"; | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
|  | @ -195,6 +195,7 @@ | ||||||
| 
 | 
 | ||||||
| &usb0 { | &usb0 { | ||||||
| 	status = "okay"; | 	status = "okay"; | ||||||
|  | 	dr_mode = "peripheral"; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| &usb1 { | &usb1 { | ||||||
|  |  | ||||||
|  | @ -133,20 +133,6 @@ | ||||||
| 		>; | 		>; | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	i2c1_pins_default: i2c1_pins_default { |  | ||||||
| 		pinctrl-single,pins = < |  | ||||||
| 			0x15c (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE2) /* spi0_cs0.i2c1_scl */ |  | ||||||
| 			0x158 (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE2) /* spi0_d1.i2c1_sda */ |  | ||||||
| 		>; |  | ||||||
| 	}; |  | ||||||
| 
 |  | ||||||
| 	i2c1_pins_sleep: i2c1_pins_sleep { |  | ||||||
| 		pinctrl-single,pins = < |  | ||||||
| 			0x15c (PIN_INPUT_PULLDOWN | MUX_MODE7) /* spi0_cs0.i2c1_scl */ |  | ||||||
| 			0x158 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* spi0_d1.i2c1_sda */ |  | ||||||
| 		>; |  | ||||||
| 	}; |  | ||||||
| 
 |  | ||||||
| 	mmc1_pins_default: pinmux_mmc1_pins_default { | 	mmc1_pins_default: pinmux_mmc1_pins_default { | ||||||
| 		pinctrl-single,pins = < | 		pinctrl-single,pins = < | ||||||
| 			0x100 (PIN_INPUT | MUX_MODE0) /* mmc0_clk.mmc0_clk */ | 			0x100 (PIN_INPUT | MUX_MODE0) /* mmc0_clk.mmc0_clk */ | ||||||
|  | @ -254,7 +240,7 @@ | ||||||
| 	status = "okay"; | 	status = "okay"; | ||||||
| 	pinctrl-names = "default", "sleep"; | 	pinctrl-names = "default", "sleep"; | ||||||
| 	pinctrl-0 = <&i2c0_pins_default>; | 	pinctrl-0 = <&i2c0_pins_default>; | ||||||
| 	pinctrl-1 = <&i2c0_pins_default>; | 	pinctrl-1 = <&i2c0_pins_sleep>; | ||||||
| 	clock-frequency = <400000>; | 	clock-frequency = <400000>; | ||||||
| 
 | 
 | ||||||
| 	at24@50 { | 	at24@50 { | ||||||
|  | @ -262,17 +248,10 @@ | ||||||
| 		pagesize = <64>; | 		pagesize = <64>; | ||||||
| 		reg = <0x50>; | 		reg = <0x50>; | ||||||
| 	}; | 	}; | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| &i2c1 { |  | ||||||
| 	status = "okay"; |  | ||||||
| 	pinctrl-names = "default", "sleep"; |  | ||||||
| 	pinctrl-0 = <&i2c1_pins_default>; |  | ||||||
| 	pinctrl-1 = <&i2c1_pins_default>; |  | ||||||
| 	clock-frequency = <400000>; |  | ||||||
| 
 | 
 | ||||||
| 	tps: tps62362@60 { | 	tps: tps62362@60 { | ||||||
| 		compatible = "ti,tps62362"; | 		compatible = "ti,tps62362"; | ||||||
|  | 		reg = <0x60>; | ||||||
| 		regulator-name = "VDD_MPU"; | 		regulator-name = "VDD_MPU"; | ||||||
| 		regulator-min-microvolt = <950000>; | 		regulator-min-microvolt = <950000>; | ||||||
| 		regulator-max-microvolt = <1330000>; | 		regulator-max-microvolt = <1330000>; | ||||||
|  |  | ||||||
|  | @ -549,14 +549,6 @@ | ||||||
| 	pinctrl-0 = <&usb1_pins>; | 	pinctrl-0 = <&usb1_pins>; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| &omap_dwc3_1 { |  | ||||||
| 	extcon = <&extcon_usb1>; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| &omap_dwc3_2 { |  | ||||||
| 	extcon = <&extcon_usb2>; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| &usb2 { | &usb2 { | ||||||
| 	dr_mode = "peripheral"; | 	dr_mode = "peripheral"; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -70,6 +70,26 @@ | ||||||
| 		}; | 		}; | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
|  | 	i2c0: i2c@18008000 { | ||||||
|  | 		compatible = "brcm,cygnus-iproc-i2c", "brcm,iproc-i2c"; | ||||||
|  | 		reg = <0x18008000 0x100>; | ||||||
|  | 		#address-cells = <1>; | ||||||
|  | 		#size-cells = <0>; | ||||||
|  | 		interrupts = <GIC_SPI 85 IRQ_TYPE_NONE>; | ||||||
|  | 		clock-frequency = <100000>; | ||||||
|  | 		status = "disabled"; | ||||||
|  | 	}; | ||||||
|  | 
 | ||||||
|  | 	i2c1: i2c@1800b000 { | ||||||
|  | 		compatible = "brcm,cygnus-iproc-i2c", "brcm,iproc-i2c"; | ||||||
|  | 		reg = <0x1800b000 0x100>; | ||||||
|  | 		#address-cells = <1>; | ||||||
|  | 		#size-cells = <0>; | ||||||
|  | 		interrupts = <GIC_SPI 86 IRQ_TYPE_NONE>; | ||||||
|  | 		clock-frequency = <100000>; | ||||||
|  | 		status = "disabled"; | ||||||
|  | 	}; | ||||||
|  | 
 | ||||||
| 	uart0: serial@18020000 { | 	uart0: serial@18020000 { | ||||||
| 		compatible = "snps,dw-apb-uart"; | 		compatible = "snps,dw-apb-uart"; | ||||||
| 		reg = <0x18020000 0x100>; | 		reg = <0x18020000 0x100>; | ||||||
|  |  | ||||||
|  | @ -66,8 +66,9 @@ | ||||||
| 			reg = <0x1d000 0x1000>; | 			reg = <0x1d000 0x1000>; | ||||||
| 			cache-unified; | 			cache-unified; | ||||||
| 			cache-level = <2>; | 			cache-level = <2>; | ||||||
| 			cache-sets = <16>; | 			cache-size = <524288>; | ||||||
| 			cache-size = <0x80000>; | 			cache-sets = <1024>; | ||||||
|  | 			cache-line-size = <32>; | ||||||
| 			interrupts = <GIC_PPI 0 IRQ_TYPE_LEVEL_HIGH>; | 			interrupts = <GIC_PPI 0 IRQ_TYPE_LEVEL_HIGH>; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -35,6 +35,18 @@ | ||||||
| 			DM816X_IOPAD(0x0aac, PIN_INPUT | MUX_MODE0)	/* SPI_D1 */ | 			DM816X_IOPAD(0x0aac, PIN_INPUT | MUX_MODE0)	/* SPI_D1 */ | ||||||
| 		>; | 		>; | ||||||
| 	}; | 	}; | ||||||
|  | 
 | ||||||
|  | 	usb0_pins: pinmux_usb0_pins { | ||||||
|  | 		pinctrl-single,pins = < | ||||||
|  | 			DM816X_IOPAD(0x0d00, MUX_MODE0)			/* USB0_DRVVBUS */ | ||||||
|  | 		>; | ||||||
|  | 	}; | ||||||
|  | 
 | ||||||
|  | 	usb1_pins: pinmux_usb0_pins { | ||||||
|  | 		pinctrl-single,pins = < | ||||||
|  | 			DM816X_IOPAD(0x0d04, MUX_MODE0)			/* USB1_DRVVBUS */ | ||||||
|  | 		>; | ||||||
|  | 	}; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| &i2c1 { | &i2c1 { | ||||||
|  | @ -127,3 +139,16 @@ | ||||||
| &mmc1 { | &mmc1 { | ||||||
| 	vmmc-supply = <&vmmcsd_fixed>; | 	vmmc-supply = <&vmmcsd_fixed>; | ||||||
| }; | }; | ||||||
|  | 
 | ||||||
|  | /* At least dm8168-evm rev c won't support multipoint, later may */ | ||||||
|  | &usb0 { | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	pinctrl-0 = <&usb0_pins>; | ||||||
|  | 	mentor,multipoint = <0>; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | &usb1 { | ||||||
|  | 	pinctrl-names = "default"; | ||||||
|  | 	pinctrl-0 = <&usb1_pins>; | ||||||
|  | 	mentor,multipoint = <0>; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | @ -97,10 +97,31 @@ | ||||||
| 
 | 
 | ||||||
| 			/* Device Configuration Registers */ | 			/* Device Configuration Registers */ | ||||||
| 			scm_conf: syscon@600 { | 			scm_conf: syscon@600 { | ||||||
| 				compatible = "syscon"; | 				compatible = "syscon", "simple-bus"; | ||||||
| 				reg = <0x600 0x110>; | 				reg = <0x600 0x110>; | ||||||
| 				#address-cells = <1>; | 				#address-cells = <1>; | ||||||
| 				#size-cells = <1>; | 				#size-cells = <1>; | ||||||
|  | 				ranges = <0 0x600 0x110>; | ||||||
|  | 
 | ||||||
|  | 				usb_phy0: usb-phy@20 { | ||||||
|  | 					compatible = "ti,dm8168-usb-phy"; | ||||||
|  | 					reg = <0x20 0x8>; | ||||||
|  | 					reg-names = "phy"; | ||||||
|  | 					clocks = <&main_fapll 6>; | ||||||
|  | 					clock-names = "refclk"; | ||||||
|  | 					#phy-cells = <0>; | ||||||
|  | 					syscon = <&scm_conf>; | ||||||
|  | 				}; | ||||||
|  | 
 | ||||||
|  | 				usb_phy1: usb-phy@28 { | ||||||
|  | 					compatible = "ti,dm8168-usb-phy"; | ||||||
|  | 					reg = <0x28 0x8>; | ||||||
|  | 					reg-names = "phy"; | ||||||
|  | 					clocks = <&main_fapll 6>; | ||||||
|  | 					clock-names = "refclk"; | ||||||
|  | 					#phy-cells = <0>; | ||||||
|  | 					syscon = <&scm_conf>; | ||||||
|  | 				}; | ||||||
| 			}; | 			}; | ||||||
| 
 | 
 | ||||||
| 			scrm_clocks: clocks { | 			scrm_clocks: clocks { | ||||||
|  | @ -357,7 +378,10 @@ | ||||||
| 				reg-names = "mc", "control"; | 				reg-names = "mc", "control"; | ||||||
| 				interrupts = <18>; | 				interrupts = <18>; | ||||||
| 				interrupt-names = "mc"; | 				interrupt-names = "mc"; | ||||||
| 				dr_mode = "otg"; | 				dr_mode = "host"; | ||||||
|  | 				interface-type = <0>; | ||||||
|  | 				phys = <&usb_phy0>; | ||||||
|  | 				phy-names = "usb2-phy"; | ||||||
| 				mentor,multipoint = <1>; | 				mentor,multipoint = <1>; | ||||||
| 				mentor,num-eps = <16>; | 				mentor,num-eps = <16>; | ||||||
| 				mentor,ram-bits = <12>; | 				mentor,ram-bits = <12>; | ||||||
|  | @ -366,13 +390,15 @@ | ||||||
| 
 | 
 | ||||||
| 			usb1: usb@47401800 { | 			usb1: usb@47401800 { | ||||||
| 				compatible = "ti,musb-am33xx"; | 				compatible = "ti,musb-am33xx"; | ||||||
| 				status = "disabled"; |  | ||||||
| 				reg = <0x47401c00 0x400 | 				reg = <0x47401c00 0x400 | ||||||
| 				       0x47401800 0x200>; | 				       0x47401800 0x200>; | ||||||
| 				reg-names = "mc", "control"; | 				reg-names = "mc", "control"; | ||||||
| 				interrupts = <19>; | 				interrupts = <19>; | ||||||
| 				interrupt-names = "mc"; | 				interrupt-names = "mc"; | ||||||
| 				dr_mode = "otg"; | 				dr_mode = "host"; | ||||||
|  | 				interface-type = <0>; | ||||||
|  | 				phys = <&usb_phy1>; | ||||||
|  | 				phy-names = "usb2-phy"; | ||||||
| 				mentor,multipoint = <1>; | 				mentor,multipoint = <1>; | ||||||
| 				mentor,num-eps = <16>; | 				mentor,num-eps = <16>; | ||||||
| 				mentor,ram-bits = <12>; | 				mentor,ram-bits = <12>; | ||||||
|  |  | ||||||
|  | @ -543,14 +543,6 @@ | ||||||
| 	}; | 	}; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| &omap_dwc3_1 { |  | ||||||
| 	extcon = <&extcon_usb1>; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| &omap_dwc3_2 { |  | ||||||
| 	extcon = <&extcon_usb2>; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| &usb1 { | &usb1 { | ||||||
| 	dr_mode = "peripheral"; | 	dr_mode = "peripheral"; | ||||||
| 	pinctrl-names = "default"; | 	pinctrl-names = "default"; | ||||||
|  |  | ||||||
|  | @ -249,8 +249,8 @@ | ||||||
| 				     <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, | 				     <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, | ||||||
| 				     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; | 				     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; | ||||||
| 			#dma-cells = <1>; | 			#dma-cells = <1>; | ||||||
| 			#dma-channels = <32>; | 			dma-channels = <32>; | ||||||
| 			#dma-requests = <127>; | 			dma-requests = <127>; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		gpio1: gpio@4ae10000 { | 		gpio1: gpio@4ae10000 { | ||||||
|  | @ -1090,8 +1090,8 @@ | ||||||
| 				      <0x4A096800 0x40>; /* pll_ctrl */ | 				      <0x4A096800 0x40>; /* pll_ctrl */ | ||||||
| 				reg-names = "phy_rx", "phy_tx", "pll_ctrl"; | 				reg-names = "phy_rx", "phy_tx", "pll_ctrl"; | ||||||
| 				ctrl-module = <&omap_control_sata>; | 				ctrl-module = <&omap_control_sata>; | ||||||
| 				clocks = <&sys_clkin1>; | 				clocks = <&sys_clkin1>, <&sata_ref_clk>; | ||||||
| 				clock-names = "sysclk"; | 				clock-names = "sysclk", "refclk"; | ||||||
| 				#phy-cells = <0>; | 				#phy-cells = <0>; | ||||||
| 			}; | 			}; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -380,14 +380,6 @@ | ||||||
| 	phy-supply = <&ldo4_reg>; | 	phy-supply = <&ldo4_reg>; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| &omap_dwc3_1 { |  | ||||||
| 	extcon = <&extcon_usb1>; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| &omap_dwc3_2 { |  | ||||||
| 	extcon = <&extcon_usb2>; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| &usb1 { | &usb1 { | ||||||
| 	dr_mode = "peripheral"; | 	dr_mode = "peripheral"; | ||||||
| 	pinctrl-names = "default"; | 	pinctrl-names = "default"; | ||||||
|  |  | ||||||
|  | @ -87,8 +87,8 @@ | ||||||
| 				     <14>, | 				     <14>, | ||||||
| 				     <15>; | 				     <15>; | ||||||
| 			#dma-cells = <1>; | 			#dma-cells = <1>; | ||||||
| 			#dma-channels = <32>; | 			dma-channels = <32>; | ||||||
| 			#dma-requests = <64>; | 			dma-requests = <64>; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		i2c1: i2c@48070000 { | 		i2c1: i2c@48070000 { | ||||||
|  |  | ||||||
|  | @ -16,6 +16,13 @@ | ||||||
| 	model = "Nokia N900"; | 	model = "Nokia N900"; | ||||||
| 	compatible = "nokia,omap3-n900", "ti,omap3430", "ti,omap3"; | 	compatible = "nokia,omap3-n900", "ti,omap3430", "ti,omap3"; | ||||||
| 
 | 
 | ||||||
|  | 	aliases { | ||||||
|  | 		i2c0; | ||||||
|  | 		i2c1 = &i2c1; | ||||||
|  | 		i2c2 = &i2c2; | ||||||
|  | 		i2c3 = &i2c3; | ||||||
|  | 	}; | ||||||
|  | 
 | ||||||
| 	cpus { | 	cpus { | ||||||
| 		cpu@0 { | 		cpu@0 { | ||||||
| 			cpu0-supply = <&vcc>; | 			cpu0-supply = <&vcc>; | ||||||
|  | @ -704,7 +711,7 @@ | ||||||
| 		compatible = "smsc,lan91c94"; | 		compatible = "smsc,lan91c94"; | ||||||
| 		interrupt-parent = <&gpio2>; | 		interrupt-parent = <&gpio2>; | ||||||
| 		interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;	/* gpio54 */ | 		interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;	/* gpio54 */ | ||||||
| 		reg = <1 0x300 0xf>;		/* 16 byte IO range at offset 0x300 */ | 		reg = <1 0 0xf>;		/* 16 byte IO range */ | ||||||
| 		bank-width = <2>; | 		bank-width = <2>; | ||||||
| 		pinctrl-names = "default"; | 		pinctrl-names = "default"; | ||||||
| 		pinctrl-0 = <ðernet_pins>; | 		pinctrl-0 = <ðernet_pins>; | ||||||
|  |  | ||||||
|  | @ -155,8 +155,8 @@ | ||||||
| 				     <14>, | 				     <14>, | ||||||
| 				     <15>; | 				     <15>; | ||||||
| 			#dma-cells = <1>; | 			#dma-cells = <1>; | ||||||
| 			#dma-channels = <32>; | 			dma-channels = <32>; | ||||||
| 			#dma-requests = <96>; | 			dma-requests = <96>; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		omap3_pmx_core: pinmux@48002030 { | 		omap3_pmx_core: pinmux@48002030 { | ||||||
|  |  | ||||||
|  | @ -223,8 +223,8 @@ | ||||||
| 				     <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>, | 				     <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>, | ||||||
| 				     <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; | 				     <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; | ||||||
| 			#dma-cells = <1>; | 			#dma-cells = <1>; | ||||||
| 			#dma-channels = <32>; | 			dma-channels = <32>; | ||||||
| 			#dma-requests = <127>; | 			dma-requests = <127>; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		gpio1: gpio@4a310000 { | 		gpio1: gpio@4a310000 { | ||||||
|  |  | ||||||
|  | @ -238,8 +238,8 @@ | ||||||
| 				     <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>, | 				     <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>, | ||||||
| 				     <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; | 				     <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; | ||||||
| 			#dma-cells = <1>; | 			#dma-cells = <1>; | ||||||
| 			#dma-channels = <32>; | 			dma-channels = <32>; | ||||||
| 			#dma-requests = <127>; | 			dma-requests = <127>; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		gpio1: gpio@4ae10000 { | 		gpio1: gpio@4ae10000 { | ||||||
|  | @ -929,8 +929,8 @@ | ||||||
| 				      <0x4A096800 0x40>; /* pll_ctrl */ | 				      <0x4A096800 0x40>; /* pll_ctrl */ | ||||||
| 				reg-names = "phy_rx", "phy_tx", "pll_ctrl"; | 				reg-names = "phy_rx", "phy_tx", "pll_ctrl"; | ||||||
| 				ctrl-module = <&omap_control_sata>; | 				ctrl-module = <&omap_control_sata>; | ||||||
| 				clocks = <&sys_clkin>; | 				clocks = <&sys_clkin>, <&sata_ref_clk>; | ||||||
| 				clock-names = "sysclk"; | 				clock-names = "sysclk", "refclk"; | ||||||
| 				#phy-cells = <0>; | 				#phy-cells = <0>; | ||||||
| 			}; | 			}; | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
|  | @ -117,7 +117,7 @@ | ||||||
| 			chan_priority = <1>; | 			chan_priority = <1>; | ||||||
| 			block_size = <0xfff>; | 			block_size = <0xfff>; | ||||||
| 			dma-masters = <2>; | 			dma-masters = <2>; | ||||||
| 			data_width = <3 3 0 0>; | 			data_width = <3 3>; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		dma@eb000000 { | 		dma@eb000000 { | ||||||
|  | @ -133,7 +133,7 @@ | ||||||
| 			chan_allocation_order = <1>; | 			chan_allocation_order = <1>; | ||||||
| 			chan_priority = <1>; | 			chan_priority = <1>; | ||||||
| 			block_size = <0xfff>; | 			block_size = <0xfff>; | ||||||
| 			data_width = <3 3 0 0>; | 			data_width = <3 3>; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		fsmc: flash@b0000000 { | 		fsmc: flash@b0000000 { | ||||||
|  |  | ||||||
|  | @ -294,35 +294,43 @@ | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc0_clk: clk@01c20088 { | 		mmc0_clk: clk@01c20088 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c20088 0x4>; | 			reg = <0x01c20088 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | ||||||
| 			clock-output-names = "mmc0"; | 			clock-output-names = "mmc0", | ||||||
|  | 					     "mmc0_output", | ||||||
|  | 					     "mmc0_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc1_clk: clk@01c2008c { | 		mmc1_clk: clk@01c2008c { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c2008c 0x4>; | 			reg = <0x01c2008c 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | ||||||
| 			clock-output-names = "mmc1"; | 			clock-output-names = "mmc1", | ||||||
|  | 					     "mmc1_output", | ||||||
|  | 					     "mmc1_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc2_clk: clk@01c20090 { | 		mmc2_clk: clk@01c20090 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c20090 0x4>; | 			reg = <0x01c20090 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | ||||||
| 			clock-output-names = "mmc2"; | 			clock-output-names = "mmc2", | ||||||
|  | 					     "mmc2_output", | ||||||
|  | 					     "mmc2_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc3_clk: clk@01c20094 { | 		mmc3_clk: clk@01c20094 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c20094 0x4>; | 			reg = <0x01c20094 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | ||||||
| 			clock-output-names = "mmc3"; | 			clock-output-names = "mmc3", | ||||||
|  | 					     "mmc3_output", | ||||||
|  | 					     "mmc3_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		ts_clk: clk@01c20098 { | 		ts_clk: clk@01c20098 { | ||||||
|  | @ -468,8 +476,14 @@ | ||||||
| 		mmc0: mmc@01c0f000 { | 		mmc0: mmc@01c0f000 { | ||||||
| 			compatible = "allwinner,sun4i-a10-mmc"; | 			compatible = "allwinner,sun4i-a10-mmc"; | ||||||
| 			reg = <0x01c0f000 0x1000>; | 			reg = <0x01c0f000 0x1000>; | ||||||
| 			clocks = <&ahb_gates 8>, <&mmc0_clk>; | 			clocks = <&ahb_gates 8>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc0_clk 0>, | ||||||
|  | 				 <&mmc0_clk 1>, | ||||||
|  | 				 <&mmc0_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			interrupts = <32>; | 			interrupts = <32>; | ||||||
| 			status = "disabled"; | 			status = "disabled"; | ||||||
| 		}; | 		}; | ||||||
|  | @ -477,8 +491,14 @@ | ||||||
| 		mmc1: mmc@01c10000 { | 		mmc1: mmc@01c10000 { | ||||||
| 			compatible = "allwinner,sun4i-a10-mmc"; | 			compatible = "allwinner,sun4i-a10-mmc"; | ||||||
| 			reg = <0x01c10000 0x1000>; | 			reg = <0x01c10000 0x1000>; | ||||||
| 			clocks = <&ahb_gates 9>, <&mmc1_clk>; | 			clocks = <&ahb_gates 9>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc1_clk 0>, | ||||||
|  | 				 <&mmc1_clk 1>, | ||||||
|  | 				 <&mmc1_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			interrupts = <33>; | 			interrupts = <33>; | ||||||
| 			status = "disabled"; | 			status = "disabled"; | ||||||
| 		}; | 		}; | ||||||
|  | @ -486,8 +506,14 @@ | ||||||
| 		mmc2: mmc@01c11000 { | 		mmc2: mmc@01c11000 { | ||||||
| 			compatible = "allwinner,sun4i-a10-mmc"; | 			compatible = "allwinner,sun4i-a10-mmc"; | ||||||
| 			reg = <0x01c11000 0x1000>; | 			reg = <0x01c11000 0x1000>; | ||||||
| 			clocks = <&ahb_gates 10>, <&mmc2_clk>; | 			clocks = <&ahb_gates 10>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc2_clk 0>, | ||||||
|  | 				 <&mmc2_clk 1>, | ||||||
|  | 				 <&mmc2_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			interrupts = <34>; | 			interrupts = <34>; | ||||||
| 			status = "disabled"; | 			status = "disabled"; | ||||||
| 		}; | 		}; | ||||||
|  | @ -495,8 +521,14 @@ | ||||||
| 		mmc3: mmc@01c12000 { | 		mmc3: mmc@01c12000 { | ||||||
| 			compatible = "allwinner,sun4i-a10-mmc"; | 			compatible = "allwinner,sun4i-a10-mmc"; | ||||||
| 			reg = <0x01c12000 0x1000>; | 			reg = <0x01c12000 0x1000>; | ||||||
| 			clocks = <&ahb_gates 11>, <&mmc3_clk>; | 			clocks = <&ahb_gates 11>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc3_clk 0>, | ||||||
|  | 				 <&mmc3_clk 1>, | ||||||
|  | 				 <&mmc3_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			interrupts = <35>; | 			interrupts = <35>; | ||||||
| 			status = "disabled"; | 			status = "disabled"; | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
|  | @ -218,27 +218,33 @@ | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc0_clk: clk@01c20088 { | 		mmc0_clk: clk@01c20088 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c20088 0x4>; | 			reg = <0x01c20088 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | ||||||
| 			clock-output-names = "mmc0"; | 			clock-output-names = "mmc0", | ||||||
|  | 					     "mmc0_output", | ||||||
|  | 					     "mmc0_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc1_clk: clk@01c2008c { | 		mmc1_clk: clk@01c2008c { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c2008c 0x4>; | 			reg = <0x01c2008c 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | ||||||
| 			clock-output-names = "mmc1"; | 			clock-output-names = "mmc1", | ||||||
|  | 					     "mmc1_output", | ||||||
|  | 					     "mmc1_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc2_clk: clk@01c20090 { | 		mmc2_clk: clk@01c20090 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c20090 0x4>; | 			reg = <0x01c20090 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | ||||||
| 			clock-output-names = "mmc2"; | 			clock-output-names = "mmc2", | ||||||
|  | 					     "mmc2_output", | ||||||
|  | 					     "mmc2_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		ts_clk: clk@01c20098 { | 		ts_clk: clk@01c20098 { | ||||||
|  | @ -368,8 +374,14 @@ | ||||||
| 		mmc0: mmc@01c0f000 { | 		mmc0: mmc@01c0f000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c0f000 0x1000>; | 			reg = <0x01c0f000 0x1000>; | ||||||
| 			clocks = <&ahb_gates 8>, <&mmc0_clk>; | 			clocks = <&ahb_gates 8>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc0_clk 0>, | ||||||
|  | 				 <&mmc0_clk 1>, | ||||||
|  | 				 <&mmc0_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			interrupts = <32>; | 			interrupts = <32>; | ||||||
| 			status = "disabled"; | 			status = "disabled"; | ||||||
| 		}; | 		}; | ||||||
|  | @ -377,8 +389,14 @@ | ||||||
| 		mmc1: mmc@01c10000 { | 		mmc1: mmc@01c10000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c10000 0x1000>; | 			reg = <0x01c10000 0x1000>; | ||||||
| 			clocks = <&ahb_gates 9>, <&mmc1_clk>; | 			clocks = <&ahb_gates 9>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc1_clk 0>, | ||||||
|  | 				 <&mmc1_clk 1>, | ||||||
|  | 				 <&mmc1_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			interrupts = <33>; | 			interrupts = <33>; | ||||||
| 			status = "disabled"; | 			status = "disabled"; | ||||||
| 		}; | 		}; | ||||||
|  | @ -386,8 +404,14 @@ | ||||||
| 		mmc2: mmc@01c11000 { | 		mmc2: mmc@01c11000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c11000 0x1000>; | 			reg = <0x01c11000 0x1000>; | ||||||
| 			clocks = <&ahb_gates 10>, <&mmc2_clk>; | 			clocks = <&ahb_gates 10>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc2_clk 0>, | ||||||
|  | 				 <&mmc2_clk 1>, | ||||||
|  | 				 <&mmc2_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			interrupts = <34>; | 			interrupts = <34>; | ||||||
| 			status = "disabled"; | 			status = "disabled"; | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
|  | @ -257,27 +257,33 @@ | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc0_clk: clk@01c20088 { | 		mmc0_clk: clk@01c20088 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c20088 0x4>; | 			reg = <0x01c20088 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | ||||||
| 			clock-output-names = "mmc0"; | 			clock-output-names = "mmc0", | ||||||
|  | 					     "mmc0_output", | ||||||
|  | 					     "mmc0_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc1_clk: clk@01c2008c { | 		mmc1_clk: clk@01c2008c { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c2008c 0x4>; | 			reg = <0x01c2008c 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | ||||||
| 			clock-output-names = "mmc1"; | 			clock-output-names = "mmc1", | ||||||
|  | 					     "mmc1_output", | ||||||
|  | 					     "mmc1_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc2_clk: clk@01c20090 { | 		mmc2_clk: clk@01c20090 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c20090 0x4>; | 			reg = <0x01c20090 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | ||||||
| 			clock-output-names = "mmc2"; | 			clock-output-names = "mmc2", | ||||||
|  | 					     "mmc2_output", | ||||||
|  | 					     "mmc2_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		ts_clk: clk@01c20098 { | 		ts_clk: clk@01c20098 { | ||||||
|  | @ -391,8 +397,14 @@ | ||||||
| 		mmc0: mmc@01c0f000 { | 		mmc0: mmc@01c0f000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c0f000 0x1000>; | 			reg = <0x01c0f000 0x1000>; | ||||||
| 			clocks = <&ahb_gates 8>, <&mmc0_clk>; | 			clocks = <&ahb_gates 8>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc0_clk 0>, | ||||||
|  | 				 <&mmc0_clk 1>, | ||||||
|  | 				 <&mmc0_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			interrupts = <32>; | 			interrupts = <32>; | ||||||
| 			status = "disabled"; | 			status = "disabled"; | ||||||
| 		}; | 		}; | ||||||
|  | @ -400,8 +412,14 @@ | ||||||
| 		mmc2: mmc@01c11000 { | 		mmc2: mmc@01c11000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c11000 0x1000>; | 			reg = <0x01c11000 0x1000>; | ||||||
| 			clocks = <&ahb_gates 10>, <&mmc2_clk>; | 			clocks = <&ahb_gates 10>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc2_clk 0>, | ||||||
|  | 				 <&mmc2_clk 1>, | ||||||
|  | 				 <&mmc2_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			interrupts = <34>; | 			interrupts = <34>; | ||||||
| 			status = "disabled"; | 			status = "disabled"; | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
|  | @ -190,19 +190,11 @@ | ||||||
| 			clock-output-names = "axi"; | 			clock-output-names = "axi"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		ahb1_mux: ahb1_mux@01c20054 { |  | ||||||
| 			#clock-cells = <0>; |  | ||||||
| 			compatible = "allwinner,sun6i-a31-ahb1-mux-clk"; |  | ||||||
| 			reg = <0x01c20054 0x4>; |  | ||||||
| 			clocks = <&osc32k>, <&osc24M>, <&axi>, <&pll6 0>; |  | ||||||
| 			clock-output-names = "ahb1_mux"; |  | ||||||
| 		}; |  | ||||||
| 
 |  | ||||||
| 		ahb1: ahb1@01c20054 { | 		ahb1: ahb1@01c20054 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <0>; | ||||||
| 			compatible = "allwinner,sun4i-a10-ahb-clk"; | 			compatible = "allwinner,sun6i-a31-ahb1-clk"; | ||||||
| 			reg = <0x01c20054 0x4>; | 			reg = <0x01c20054 0x4>; | ||||||
| 			clocks = <&ahb1_mux>; | 			clocks = <&osc32k>, <&osc24M>, <&axi>, <&pll6 0>; | ||||||
| 			clock-output-names = "ahb1"; | 			clock-output-names = "ahb1"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
|  | @ -265,35 +257,43 @@ | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc0_clk: clk@01c20088 { | 		mmc0_clk: clk@01c20088 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c20088 0x4>; | 			reg = <0x01c20088 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 0>; | 			clocks = <&osc24M>, <&pll6 0>; | ||||||
| 			clock-output-names = "mmc0"; | 			clock-output-names = "mmc0", | ||||||
|  | 					     "mmc0_output", | ||||||
|  | 					     "mmc0_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc1_clk: clk@01c2008c { | 		mmc1_clk: clk@01c2008c { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c2008c 0x4>; | 			reg = <0x01c2008c 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 0>; | 			clocks = <&osc24M>, <&pll6 0>; | ||||||
| 			clock-output-names = "mmc1"; | 			clock-output-names = "mmc1", | ||||||
|  | 					     "mmc1_output", | ||||||
|  | 					     "mmc1_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc2_clk: clk@01c20090 { | 		mmc2_clk: clk@01c20090 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c20090 0x4>; | 			reg = <0x01c20090 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 0>; | 			clocks = <&osc24M>, <&pll6 0>; | ||||||
| 			clock-output-names = "mmc2"; | 			clock-output-names = "mmc2", | ||||||
|  | 					     "mmc2_output", | ||||||
|  | 					     "mmc2_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc3_clk: clk@01c20094 { | 		mmc3_clk: clk@01c20094 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c20094 0x4>; | 			reg = <0x01c20094 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 0>; | 			clocks = <&osc24M>, <&pll6 0>; | ||||||
| 			clock-output-names = "mmc3"; | 			clock-output-names = "mmc3", | ||||||
|  | 					     "mmc3_output", | ||||||
|  | 					     "mmc3_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		spi0_clk: clk@01c200a0 { | 		spi0_clk: clk@01c200a0 { | ||||||
|  | @ -383,15 +383,21 @@ | ||||||
| 			#dma-cells = <1>; | 			#dma-cells = <1>; | ||||||
| 
 | 
 | ||||||
| 			/* DMA controller requires AHB1 clocked from PLL6 */ | 			/* DMA controller requires AHB1 clocked from PLL6 */ | ||||||
| 			assigned-clocks = <&ahb1_mux>; | 			assigned-clocks = <&ahb1>; | ||||||
| 			assigned-clock-parents = <&pll6 0>; | 			assigned-clock-parents = <&pll6 0>; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc0: mmc@01c0f000 { | 		mmc0: mmc@01c0f000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c0f000 0x1000>; | 			reg = <0x01c0f000 0x1000>; | ||||||
| 			clocks = <&ahb1_gates 8>, <&mmc0_clk>; | 			clocks = <&ahb1_gates 8>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc0_clk 0>, | ||||||
|  | 				 <&mmc0_clk 1>, | ||||||
|  | 				 <&mmc0_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			resets = <&ahb1_rst 8>; | 			resets = <&ahb1_rst 8>; | ||||||
| 			reset-names = "ahb"; | 			reset-names = "ahb"; | ||||||
| 			interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; | 			interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; | ||||||
|  | @ -401,8 +407,14 @@ | ||||||
| 		mmc1: mmc@01c10000 { | 		mmc1: mmc@01c10000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c10000 0x1000>; | 			reg = <0x01c10000 0x1000>; | ||||||
| 			clocks = <&ahb1_gates 9>, <&mmc1_clk>; | 			clocks = <&ahb1_gates 9>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc1_clk 0>, | ||||||
|  | 				 <&mmc1_clk 1>, | ||||||
|  | 				 <&mmc1_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			resets = <&ahb1_rst 9>; | 			resets = <&ahb1_rst 9>; | ||||||
| 			reset-names = "ahb"; | 			reset-names = "ahb"; | ||||||
| 			interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; | 			interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; | ||||||
|  | @ -412,8 +424,14 @@ | ||||||
| 		mmc2: mmc@01c11000 { | 		mmc2: mmc@01c11000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c11000 0x1000>; | 			reg = <0x01c11000 0x1000>; | ||||||
| 			clocks = <&ahb1_gates 10>, <&mmc2_clk>; | 			clocks = <&ahb1_gates 10>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc2_clk 0>, | ||||||
|  | 				 <&mmc2_clk 1>, | ||||||
|  | 				 <&mmc2_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			resets = <&ahb1_rst 10>; | 			resets = <&ahb1_rst 10>; | ||||||
| 			reset-names = "ahb"; | 			reset-names = "ahb"; | ||||||
| 			interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; | 			interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; | ||||||
|  | @ -423,8 +441,14 @@ | ||||||
| 		mmc3: mmc@01c12000 { | 		mmc3: mmc@01c12000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c12000 0x1000>; | 			reg = <0x01c12000 0x1000>; | ||||||
| 			clocks = <&ahb1_gates 11>, <&mmc3_clk>; | 			clocks = <&ahb1_gates 11>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc3_clk 0>, | ||||||
|  | 				 <&mmc3_clk 1>, | ||||||
|  | 				 <&mmc3_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			resets = <&ahb1_rst 11>; | 			resets = <&ahb1_rst 11>; | ||||||
| 			reset-names = "ahb"; | 			reset-names = "ahb"; | ||||||
| 			interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>; | 			interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>; | ||||||
|  |  | ||||||
|  | @ -337,35 +337,43 @@ | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc0_clk: clk@01c20088 { | 		mmc0_clk: clk@01c20088 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c20088 0x4>; | 			reg = <0x01c20088 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | ||||||
| 			clock-output-names = "mmc0"; | 			clock-output-names = "mmc0", | ||||||
|  | 					     "mmc0_output", | ||||||
|  | 					     "mmc0_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc1_clk: clk@01c2008c { | 		mmc1_clk: clk@01c2008c { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c2008c 0x4>; | 			reg = <0x01c2008c 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | ||||||
| 			clock-output-names = "mmc1"; | 			clock-output-names = "mmc1", | ||||||
|  | 					     "mmc1_output", | ||||||
|  | 					     "mmc1_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc2_clk: clk@01c20090 { | 		mmc2_clk: clk@01c20090 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c20090 0x4>; | 			reg = <0x01c20090 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | ||||||
| 			clock-output-names = "mmc2"; | 			clock-output-names = "mmc2", | ||||||
|  | 					     "mmc2_output", | ||||||
|  | 					     "mmc2_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc3_clk: clk@01c20094 { | 		mmc3_clk: clk@01c20094 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c20094 0x4>; | 			reg = <0x01c20094 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | 			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; | ||||||
| 			clock-output-names = "mmc3"; | 			clock-output-names = "mmc3", | ||||||
|  | 					     "mmc3_output", | ||||||
|  | 					     "mmc3_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		ts_clk: clk@01c20098 { | 		ts_clk: clk@01c20098 { | ||||||
|  | @ -583,8 +591,14 @@ | ||||||
| 		mmc0: mmc@01c0f000 { | 		mmc0: mmc@01c0f000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c0f000 0x1000>; | 			reg = <0x01c0f000 0x1000>; | ||||||
| 			clocks = <&ahb_gates 8>, <&mmc0_clk>; | 			clocks = <&ahb_gates 8>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc0_clk 0>, | ||||||
|  | 				 <&mmc0_clk 1>, | ||||||
|  | 				 <&mmc0_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; | 			interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; | ||||||
| 			status = "disabled"; | 			status = "disabled"; | ||||||
| 		}; | 		}; | ||||||
|  | @ -592,8 +606,14 @@ | ||||||
| 		mmc1: mmc@01c10000 { | 		mmc1: mmc@01c10000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c10000 0x1000>; | 			reg = <0x01c10000 0x1000>; | ||||||
| 			clocks = <&ahb_gates 9>, <&mmc1_clk>; | 			clocks = <&ahb_gates 9>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc1_clk 0>, | ||||||
|  | 				 <&mmc1_clk 1>, | ||||||
|  | 				 <&mmc1_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; | 			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>; | ||||||
| 			status = "disabled"; | 			status = "disabled"; | ||||||
| 		}; | 		}; | ||||||
|  | @ -601,8 +621,14 @@ | ||||||
| 		mmc2: mmc@01c11000 { | 		mmc2: mmc@01c11000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c11000 0x1000>; | 			reg = <0x01c11000 0x1000>; | ||||||
| 			clocks = <&ahb_gates 10>, <&mmc2_clk>; | 			clocks = <&ahb_gates 10>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc2_clk 0>, | ||||||
|  | 				 <&mmc2_clk 1>, | ||||||
|  | 				 <&mmc2_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; | 			interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; | ||||||
| 			status = "disabled"; | 			status = "disabled"; | ||||||
| 		}; | 		}; | ||||||
|  | @ -610,8 +636,14 @@ | ||||||
| 		mmc3: mmc@01c12000 { | 		mmc3: mmc@01c12000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c12000 0x1000>; | 			reg = <0x01c12000 0x1000>; | ||||||
| 			clocks = <&ahb_gates 11>, <&mmc3_clk>; | 			clocks = <&ahb_gates 11>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc3_clk 0>, | ||||||
|  | 				 <&mmc3_clk 1>, | ||||||
|  | 				 <&mmc3_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; | 			interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>; | ||||||
| 			status = "disabled"; | 			status = "disabled"; | ||||||
| 		}; | 		}; | ||||||
|  |  | ||||||
|  | @ -119,11 +119,19 @@ | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		/* dummy clock until actually implemented */ | 		/* dummy clock until actually implemented */ | ||||||
| 		pll6: pll6_clk { | 		pll5: pll5_clk { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <0>; | ||||||
| 			compatible = "fixed-clock"; | 			compatible = "fixed-clock"; | ||||||
| 			clock-frequency = <600000000>; | 			clock-frequency = <0>; | ||||||
| 			clock-output-names = "pll6"; | 			clock-output-names = "pll5"; | ||||||
|  | 		}; | ||||||
|  | 
 | ||||||
|  | 		pll6: clk@01c20028 { | ||||||
|  | 			#clock-cells = <1>; | ||||||
|  | 			compatible = "allwinner,sun6i-a31-pll6-clk"; | ||||||
|  | 			reg = <0x01c20028 0x4>; | ||||||
|  | 			clocks = <&osc24M>; | ||||||
|  | 			clock-output-names = "pll6", "pll6x2"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		cpu: cpu_clk@01c20050 { | 		cpu: cpu_clk@01c20050 { | ||||||
|  | @ -149,19 +157,11 @@ | ||||||
| 			clock-output-names = "axi"; | 			clock-output-names = "axi"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		ahb1_mux: ahb1_mux_clk@01c20054 { |  | ||||||
| 			#clock-cells = <0>; |  | ||||||
| 			compatible = "allwinner,sun6i-a31-ahb1-mux-clk"; |  | ||||||
| 			reg = <0x01c20054 0x4>; |  | ||||||
| 			clocks = <&osc32k>, <&osc24M>, <&axi>, <&pll6>; |  | ||||||
| 			clock-output-names = "ahb1_mux"; |  | ||||||
| 		}; |  | ||||||
| 
 |  | ||||||
| 		ahb1: ahb1_clk@01c20054 { | 		ahb1: ahb1_clk@01c20054 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <0>; | ||||||
| 			compatible = "allwinner,sun4i-a10-ahb-clk"; | 			compatible = "allwinner,sun6i-a31-ahb1-clk"; | ||||||
| 			reg = <0x01c20054 0x4>; | 			reg = <0x01c20054 0x4>; | ||||||
| 			clocks = <&ahb1_mux>; | 			clocks = <&osc32k>, <&osc24M>, <&axi>, <&pll6 0>; | ||||||
| 			clock-output-names = "ahb1"; | 			clock-output-names = "ahb1"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
|  | @ -202,7 +202,7 @@ | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <0>; | ||||||
| 			compatible = "allwinner,sun4i-a10-apb1-clk"; | 			compatible = "allwinner,sun4i-a10-apb1-clk"; | ||||||
| 			reg = <0x01c20058 0x4>; | 			reg = <0x01c20058 0x4>; | ||||||
| 			clocks = <&osc32k>, <&osc24M>, <&pll6>, <&pll6>; | 			clocks = <&osc32k>, <&osc24M>, <&pll6 0>, <&pll6 0>; | ||||||
| 			clock-output-names = "apb2"; | 			clock-output-names = "apb2"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
|  | @ -218,27 +218,41 @@ | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc0_clk: clk@01c20088 { | 		mmc0_clk: clk@01c20088 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c20088 0x4>; | 			reg = <0x01c20088 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6>; | 			clocks = <&osc24M>, <&pll6 0>; | ||||||
| 			clock-output-names = "mmc0"; | 			clock-output-names = "mmc0", | ||||||
|  | 					     "mmc0_output", | ||||||
|  | 					     "mmc0_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc1_clk: clk@01c2008c { | 		mmc1_clk: clk@01c2008c { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c2008c 0x4>; | 			reg = <0x01c2008c 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6>; | 			clocks = <&osc24M>, <&pll6 0>; | ||||||
| 			clock-output-names = "mmc1"; | 			clock-output-names = "mmc1", | ||||||
|  | 					     "mmc1_output", | ||||||
|  | 					     "mmc1_sample"; | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		mmc2_clk: clk@01c20090 { | 		mmc2_clk: clk@01c20090 { | ||||||
| 			#clock-cells = <0>; | 			#clock-cells = <1>; | ||||||
| 			compatible = "allwinner,sun4i-a10-mod0-clk"; | 			compatible = "allwinner,sun4i-a10-mmc-clk"; | ||||||
| 			reg = <0x01c20090 0x4>; | 			reg = <0x01c20090 0x4>; | ||||||
| 			clocks = <&osc24M>, <&pll6>; | 			clocks = <&osc24M>, <&pll6 0>; | ||||||
| 			clock-output-names = "mmc2"; | 			clock-output-names = "mmc2", | ||||||
|  | 					     "mmc2_output", | ||||||
|  | 					     "mmc2_sample"; | ||||||
|  | 		}; | ||||||
|  | 
 | ||||||
|  | 		mbus_clk: clk@01c2015c { | ||||||
|  | 			#clock-cells = <0>; | ||||||
|  | 			compatible = "allwinner,sun8i-a23-mbus-clk"; | ||||||
|  | 			reg = <0x01c2015c 0x4>; | ||||||
|  | 			clocks = <&osc24M>, <&pll6 1>, <&pll5>; | ||||||
|  | 			clock-output-names = "mbus"; | ||||||
| 		}; | 		}; | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
|  | @ -260,8 +274,14 @@ | ||||||
| 		mmc0: mmc@01c0f000 { | 		mmc0: mmc@01c0f000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c0f000 0x1000>; | 			reg = <0x01c0f000 0x1000>; | ||||||
| 			clocks = <&ahb1_gates 8>, <&mmc0_clk>; | 			clocks = <&ahb1_gates 8>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc0_clk 0>, | ||||||
|  | 				 <&mmc0_clk 1>, | ||||||
|  | 				 <&mmc0_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			resets = <&ahb1_rst 8>; | 			resets = <&ahb1_rst 8>; | ||||||
| 			reset-names = "ahb"; | 			reset-names = "ahb"; | ||||||
| 			interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; | 			interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; | ||||||
|  | @ -271,8 +291,14 @@ | ||||||
| 		mmc1: mmc@01c10000 { | 		mmc1: mmc@01c10000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c10000 0x1000>; | 			reg = <0x01c10000 0x1000>; | ||||||
| 			clocks = <&ahb1_gates 9>, <&mmc1_clk>; | 			clocks = <&ahb1_gates 9>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc1_clk 0>, | ||||||
|  | 				 <&mmc1_clk 1>, | ||||||
|  | 				 <&mmc1_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			resets = <&ahb1_rst 9>; | 			resets = <&ahb1_rst 9>; | ||||||
| 			reset-names = "ahb"; | 			reset-names = "ahb"; | ||||||
| 			interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; | 			interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; | ||||||
|  | @ -282,8 +308,14 @@ | ||||||
| 		mmc2: mmc@01c11000 { | 		mmc2: mmc@01c11000 { | ||||||
| 			compatible = "allwinner,sun5i-a13-mmc"; | 			compatible = "allwinner,sun5i-a13-mmc"; | ||||||
| 			reg = <0x01c11000 0x1000>; | 			reg = <0x01c11000 0x1000>; | ||||||
| 			clocks = <&ahb1_gates 10>, <&mmc2_clk>; | 			clocks = <&ahb1_gates 10>, | ||||||
| 			clock-names = "ahb", "mmc"; | 				 <&mmc2_clk 0>, | ||||||
|  | 				 <&mmc2_clk 1>, | ||||||
|  | 				 <&mmc2_clk 2>; | ||||||
|  | 			clock-names = "ahb", | ||||||
|  | 				      "mmc", | ||||||
|  | 				      "output", | ||||||
|  | 				      "sample"; | ||||||
| 			resets = <&ahb1_rst 10>; | 			resets = <&ahb1_rst 10>; | ||||||
| 			reset-names = "ahb"; | 			reset-names = "ahb"; | ||||||
| 			interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; | 			interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; | ||||||
|  |  | ||||||
|  | @ -62,6 +62,17 @@ CONFIG_MACH_SPEAR1340=y | ||||||
| CONFIG_ARCH_STI=y | CONFIG_ARCH_STI=y | ||||||
| CONFIG_ARCH_EXYNOS=y | CONFIG_ARCH_EXYNOS=y | ||||||
| CONFIG_EXYNOS5420_MCPM=y | CONFIG_EXYNOS5420_MCPM=y | ||||||
|  | CONFIG_ARCH_SHMOBILE_MULTI=y | ||||||
|  | CONFIG_ARCH_EMEV2=y | ||||||
|  | CONFIG_ARCH_R7S72100=y | ||||||
|  | CONFIG_ARCH_R8A73A4=y | ||||||
|  | CONFIG_ARCH_R8A7740=y | ||||||
|  | CONFIG_ARCH_R8A7779=y | ||||||
|  | CONFIG_ARCH_R8A7790=y | ||||||
|  | CONFIG_ARCH_R8A7791=y | ||||||
|  | CONFIG_ARCH_R8A7794=y | ||||||
|  | CONFIG_ARCH_SH73A0=y | ||||||
|  | CONFIG_MACH_MARZEN=y | ||||||
| CONFIG_ARCH_SUNXI=y | CONFIG_ARCH_SUNXI=y | ||||||
| CONFIG_ARCH_SIRF=y | CONFIG_ARCH_SIRF=y | ||||||
| CONFIG_ARCH_TEGRA=y | CONFIG_ARCH_TEGRA=y | ||||||
|  | @ -84,6 +95,8 @@ CONFIG_PCI_KEYSTONE=y | ||||||
| CONFIG_PCI_MSI=y | CONFIG_PCI_MSI=y | ||||||
| CONFIG_PCI_MVEBU=y | CONFIG_PCI_MVEBU=y | ||||||
| CONFIG_PCI_TEGRA=y | CONFIG_PCI_TEGRA=y | ||||||
|  | CONFIG_PCI_RCAR_GEN2=y | ||||||
|  | CONFIG_PCI_RCAR_GEN2_PCIE=y | ||||||
| CONFIG_PCIEPORTBUS=y | CONFIG_PCIEPORTBUS=y | ||||||
| CONFIG_SMP=y | CONFIG_SMP=y | ||||||
| CONFIG_NR_CPUS=8 | CONFIG_NR_CPUS=8 | ||||||
|  | @ -130,6 +143,7 @@ CONFIG_DEVTMPFS_MOUNT=y | ||||||
| CONFIG_DMA_CMA=y | CONFIG_DMA_CMA=y | ||||||
| CONFIG_CMA_SIZE_MBYTES=64 | CONFIG_CMA_SIZE_MBYTES=64 | ||||||
| CONFIG_OMAP_OCP2SCP=y | CONFIG_OMAP_OCP2SCP=y | ||||||
|  | CONFIG_SIMPLE_PM_BUS=y | ||||||
| CONFIG_MTD=y | CONFIG_MTD=y | ||||||
| CONFIG_MTD_CMDLINE_PARTS=y | CONFIG_MTD_CMDLINE_PARTS=y | ||||||
| CONFIG_MTD_BLOCK=y | CONFIG_MTD_BLOCK=y | ||||||
|  | @ -157,6 +171,7 @@ CONFIG_AHCI_SUNXI=y | ||||||
| CONFIG_AHCI_TEGRA=y | CONFIG_AHCI_TEGRA=y | ||||||
| CONFIG_SATA_HIGHBANK=y | CONFIG_SATA_HIGHBANK=y | ||||||
| CONFIG_SATA_MV=y | CONFIG_SATA_MV=y | ||||||
|  | CONFIG_SATA_RCAR=y | ||||||
| CONFIG_NETDEVICES=y | CONFIG_NETDEVICES=y | ||||||
| CONFIG_HIX5HD2_GMAC=y | CONFIG_HIX5HD2_GMAC=y | ||||||
| CONFIG_SUN4I_EMAC=y | CONFIG_SUN4I_EMAC=y | ||||||
|  | @ -167,14 +182,17 @@ CONFIG_MV643XX_ETH=y | ||||||
| CONFIG_MVNETA=y | CONFIG_MVNETA=y | ||||||
| CONFIG_KS8851=y | CONFIG_KS8851=y | ||||||
| CONFIG_R8169=y | CONFIG_R8169=y | ||||||
|  | CONFIG_SH_ETH=y | ||||||
| CONFIG_SMSC911X=y | CONFIG_SMSC911X=y | ||||||
| CONFIG_STMMAC_ETH=y | CONFIG_STMMAC_ETH=y | ||||||
| CONFIG_TI_CPSW=y | CONFIG_TI_CPSW=y | ||||||
| CONFIG_XILINX_EMACLITE=y | CONFIG_XILINX_EMACLITE=y | ||||||
| CONFIG_AT803X_PHY=y | CONFIG_AT803X_PHY=y | ||||||
| CONFIG_MARVELL_PHY=y | CONFIG_MARVELL_PHY=y | ||||||
|  | CONFIG_SMSC_PHY=y | ||||||
| CONFIG_BROADCOM_PHY=y | CONFIG_BROADCOM_PHY=y | ||||||
| CONFIG_ICPLUS_PHY=y | CONFIG_ICPLUS_PHY=y | ||||||
|  | CONFIG_MICREL_PHY=y | ||||||
| CONFIG_USB_PEGASUS=y | CONFIG_USB_PEGASUS=y | ||||||
| CONFIG_USB_USBNET=y | CONFIG_USB_USBNET=y | ||||||
| CONFIG_USB_NET_SMSC75XX=y | CONFIG_USB_NET_SMSC75XX=y | ||||||
|  | @ -192,15 +210,18 @@ CONFIG_KEYBOARD_CROS_EC=y | ||||||
| CONFIG_MOUSE_PS2_ELANTECH=y | CONFIG_MOUSE_PS2_ELANTECH=y | ||||||
| CONFIG_INPUT_TOUCHSCREEN=y | CONFIG_INPUT_TOUCHSCREEN=y | ||||||
| CONFIG_TOUCHSCREEN_ATMEL_MXT=y | CONFIG_TOUCHSCREEN_ATMEL_MXT=y | ||||||
|  | CONFIG_TOUCHSCREEN_ST1232=m | ||||||
| CONFIG_TOUCHSCREEN_STMPE=y | CONFIG_TOUCHSCREEN_STMPE=y | ||||||
| CONFIG_TOUCHSCREEN_SUN4I=y | CONFIG_TOUCHSCREEN_SUN4I=y | ||||||
| CONFIG_INPUT_MISC=y | CONFIG_INPUT_MISC=y | ||||||
| CONFIG_INPUT_MPU3050=y | CONFIG_INPUT_MPU3050=y | ||||||
| CONFIG_INPUT_AXP20X_PEK=y | CONFIG_INPUT_AXP20X_PEK=y | ||||||
|  | CONFIG_INPUT_ADXL34X=m | ||||||
| CONFIG_SERIO_AMBAKMI=y | CONFIG_SERIO_AMBAKMI=y | ||||||
| CONFIG_SERIAL_8250=y | CONFIG_SERIAL_8250=y | ||||||
| CONFIG_SERIAL_8250_CONSOLE=y | CONFIG_SERIAL_8250_CONSOLE=y | ||||||
| CONFIG_SERIAL_8250_DW=y | CONFIG_SERIAL_8250_DW=y | ||||||
|  | CONFIG_SERIAL_8250_EM=y | ||||||
| CONFIG_SERIAL_8250_MT6577=y | CONFIG_SERIAL_8250_MT6577=y | ||||||
| CONFIG_SERIAL_AMBA_PL011=y | CONFIG_SERIAL_AMBA_PL011=y | ||||||
| CONFIG_SERIAL_AMBA_PL011_CONSOLE=y | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y | ||||||
|  | @ -213,6 +234,9 @@ CONFIG_SERIAL_SIRFSOC_CONSOLE=y | ||||||
| CONFIG_SERIAL_TEGRA=y | CONFIG_SERIAL_TEGRA=y | ||||||
| CONFIG_SERIAL_IMX=y | CONFIG_SERIAL_IMX=y | ||||||
| CONFIG_SERIAL_IMX_CONSOLE=y | CONFIG_SERIAL_IMX_CONSOLE=y | ||||||
|  | CONFIG_SERIAL_SH_SCI=y | ||||||
|  | CONFIG_SERIAL_SH_SCI_NR_UARTS=20 | ||||||
|  | CONFIG_SERIAL_SH_SCI_CONSOLE=y | ||||||
| CONFIG_SERIAL_MSM=y | CONFIG_SERIAL_MSM=y | ||||||
| CONFIG_SERIAL_MSM_CONSOLE=y | CONFIG_SERIAL_MSM_CONSOLE=y | ||||||
| CONFIG_SERIAL_VT8500=y | CONFIG_SERIAL_VT8500=y | ||||||
|  | @ -233,19 +257,26 @@ CONFIG_I2C_MUX_PCA954x=y | ||||||
| CONFIG_I2C_MUX_PINCTRL=y | CONFIG_I2C_MUX_PINCTRL=y | ||||||
| CONFIG_I2C_CADENCE=y | CONFIG_I2C_CADENCE=y | ||||||
| CONFIG_I2C_DESIGNWARE_PLATFORM=y | CONFIG_I2C_DESIGNWARE_PLATFORM=y | ||||||
|  | CONFIG_I2C_GPIO=m | ||||||
| CONFIG_I2C_EXYNOS5=y | CONFIG_I2C_EXYNOS5=y | ||||||
| CONFIG_I2C_MV64XXX=y | CONFIG_I2C_MV64XXX=y | ||||||
|  | CONFIG_I2C_RIIC=y | ||||||
| CONFIG_I2C_S3C2410=y | CONFIG_I2C_S3C2410=y | ||||||
|  | CONFIG_I2C_SH_MOBILE=y | ||||||
| CONFIG_I2C_SIRF=y | CONFIG_I2C_SIRF=y | ||||||
| CONFIG_I2C_TEGRA=y |  | ||||||
| CONFIG_I2C_ST=y | CONFIG_I2C_ST=y | ||||||
| CONFIG_SPI=y | CONFIG_I2C_TEGRA=y | ||||||
| CONFIG_I2C_XILINX=y | CONFIG_I2C_XILINX=y | ||||||
| CONFIG_SPI_DAVINCI=y | CONFIG_I2C_RCAR=y | ||||||
|  | CONFIG_SPI=y | ||||||
| CONFIG_SPI_CADENCE=y | CONFIG_SPI_CADENCE=y | ||||||
|  | CONFIG_SPI_DAVINCI=y | ||||||
| CONFIG_SPI_OMAP24XX=y | CONFIG_SPI_OMAP24XX=y | ||||||
| CONFIG_SPI_ORION=y | CONFIG_SPI_ORION=y | ||||||
| CONFIG_SPI_PL022=y | CONFIG_SPI_PL022=y | ||||||
|  | CONFIG_SPI_RSPI=y | ||||||
|  | CONFIG_SPI_SH_MSIOF=m | ||||||
|  | CONFIG_SPI_SH_HSPI=y | ||||||
| CONFIG_SPI_SIRF=y | CONFIG_SPI_SIRF=y | ||||||
| CONFIG_SPI_SUN4I=y | CONFIG_SPI_SUN4I=y | ||||||
| CONFIG_SPI_SUN6I=y | CONFIG_SPI_SUN6I=y | ||||||
|  | @ -259,12 +290,15 @@ CONFIG_PINCTRL_PALMAS=y | ||||||
| CONFIG_PINCTRL_APQ8084=y | CONFIG_PINCTRL_APQ8084=y | ||||||
| CONFIG_GPIO_SYSFS=y | CONFIG_GPIO_SYSFS=y | ||||||
| CONFIG_GPIO_GENERIC_PLATFORM=y | CONFIG_GPIO_GENERIC_PLATFORM=y | ||||||
| CONFIG_GPIO_DWAPB=y |  | ||||||
| CONFIG_GPIO_DAVINCI=y | CONFIG_GPIO_DAVINCI=y | ||||||
|  | CONFIG_GPIO_DWAPB=y | ||||||
|  | CONFIG_GPIO_EM=y | ||||||
|  | CONFIG_GPIO_RCAR=y | ||||||
| CONFIG_GPIO_XILINX=y | CONFIG_GPIO_XILINX=y | ||||||
| CONFIG_GPIO_ZYNQ=y | CONFIG_GPIO_ZYNQ=y | ||||||
| CONFIG_GPIO_PCA953X=y | CONFIG_GPIO_PCA953X=y | ||||||
| CONFIG_GPIO_PCA953X_IRQ=y | CONFIG_GPIO_PCA953X_IRQ=y | ||||||
|  | CONFIG_GPIO_PCF857X=y | ||||||
| CONFIG_GPIO_TWL4030=y | CONFIG_GPIO_TWL4030=y | ||||||
| CONFIG_GPIO_PALMAS=y | CONFIG_GPIO_PALMAS=y | ||||||
| CONFIG_GPIO_SYSCON=y | CONFIG_GPIO_SYSCON=y | ||||||
|  | @ -276,10 +310,12 @@ CONFIG_POWER_RESET_AS3722=y | ||||||
| CONFIG_POWER_RESET_GPIO=y | CONFIG_POWER_RESET_GPIO=y | ||||||
| CONFIG_POWER_RESET_KEYSTONE=y | CONFIG_POWER_RESET_KEYSTONE=y | ||||||
| CONFIG_POWER_RESET_SUN6I=y | CONFIG_POWER_RESET_SUN6I=y | ||||||
|  | CONFIG_POWER_RESET_RMOBILE=y | ||||||
| CONFIG_SENSORS_LM90=y | CONFIG_SENSORS_LM90=y | ||||||
| CONFIG_SENSORS_LM95245=y | CONFIG_SENSORS_LM95245=y | ||||||
| CONFIG_THERMAL=y | CONFIG_THERMAL=y | ||||||
| CONFIG_CPU_THERMAL=y | CONFIG_CPU_THERMAL=y | ||||||
|  | CONFIG_RCAR_THERMAL=y | ||||||
| CONFIG_ARMADA_THERMAL=y | CONFIG_ARMADA_THERMAL=y | ||||||
| CONFIG_DAVINCI_WATCHDOG | CONFIG_DAVINCI_WATCHDOG | ||||||
| CONFIG_ST_THERMAL_SYSCFG=y | CONFIG_ST_THERMAL_SYSCFG=y | ||||||
|  | @ -290,6 +326,7 @@ CONFIG_ARM_SP805_WATCHDOG=y | ||||||
| CONFIG_ORION_WATCHDOG=y | CONFIG_ORION_WATCHDOG=y | ||||||
| CONFIG_SUNXI_WATCHDOG=y | CONFIG_SUNXI_WATCHDOG=y | ||||||
| CONFIG_MESON_WATCHDOG=y | CONFIG_MESON_WATCHDOG=y | ||||||
|  | CONFIG_MFD_AS3711=y | ||||||
| CONFIG_MFD_AS3722=y | CONFIG_MFD_AS3722=y | ||||||
| CONFIG_MFD_BCM590XX=y | CONFIG_MFD_BCM590XX=y | ||||||
| CONFIG_MFD_AXP20X=y | CONFIG_MFD_AXP20X=y | ||||||
|  | @ -304,13 +341,16 @@ CONFIG_MFD_TPS65090=y | ||||||
| CONFIG_MFD_TPS6586X=y | CONFIG_MFD_TPS6586X=y | ||||||
| CONFIG_MFD_TPS65910=y | CONFIG_MFD_TPS65910=y | ||||||
| CONFIG_REGULATOR_AB8500=y | CONFIG_REGULATOR_AB8500=y | ||||||
|  | CONFIG_REGULATOR_AS3711=y | ||||||
| CONFIG_REGULATOR_AS3722=y | CONFIG_REGULATOR_AS3722=y | ||||||
| CONFIG_REGULATOR_AXP20X=y | CONFIG_REGULATOR_AXP20X=y | ||||||
| CONFIG_REGULATOR_BCM590XX=y | CONFIG_REGULATOR_BCM590XX=y | ||||||
|  | CONFIG_REGULATOR_DA9210=y | ||||||
| CONFIG_REGULATOR_GPIO=y | CONFIG_REGULATOR_GPIO=y | ||||||
| CONFIG_MFD_SYSCON=y | CONFIG_MFD_SYSCON=y | ||||||
| CONFIG_POWER_RESET_SYSCON=y | CONFIG_POWER_RESET_SYSCON=y | ||||||
| CONFIG_REGULATOR_MAX8907=y | CONFIG_REGULATOR_MAX8907=y | ||||||
|  | CONFIG_REGULATOR_MAX8973=y | ||||||
| CONFIG_REGULATOR_MAX77686=y | CONFIG_REGULATOR_MAX77686=y | ||||||
| CONFIG_REGULATOR_PALMAS=y | CONFIG_REGULATOR_PALMAS=y | ||||||
| CONFIG_REGULATOR_S2MPS11=y | CONFIG_REGULATOR_S2MPS11=y | ||||||
|  | @ -324,18 +364,32 @@ CONFIG_REGULATOR_TWL4030=y | ||||||
| CONFIG_REGULATOR_VEXPRESS=y | CONFIG_REGULATOR_VEXPRESS=y | ||||||
| CONFIG_MEDIA_SUPPORT=y | CONFIG_MEDIA_SUPPORT=y | ||||||
| CONFIG_MEDIA_CAMERA_SUPPORT=y | CONFIG_MEDIA_CAMERA_SUPPORT=y | ||||||
|  | CONFIG_MEDIA_CONTROLLER=y | ||||||
|  | CONFIG_VIDEO_V4L2_SUBDEV_API=y | ||||||
| CONFIG_MEDIA_USB_SUPPORT=y | CONFIG_MEDIA_USB_SUPPORT=y | ||||||
| CONFIG_USB_VIDEO_CLASS=y | CONFIG_USB_VIDEO_CLASS=y | ||||||
| CONFIG_USB_GSPCA=y | CONFIG_USB_GSPCA=y | ||||||
|  | CONFIG_V4L_PLATFORM_DRIVERS=y | ||||||
|  | CONFIG_SOC_CAMERA=m | ||||||
|  | CONFIG_SOC_CAMERA_PLATFORM=m | ||||||
|  | CONFIG_VIDEO_RCAR_VIN=m | ||||||
|  | CONFIG_V4L_MEM2MEM_DRIVERS=y | ||||||
|  | CONFIG_VIDEO_RENESAS_VSP1=m | ||||||
|  | # CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set | ||||||
|  | CONFIG_VIDEO_ADV7180=m | ||||||
| CONFIG_DRM=y | CONFIG_DRM=y | ||||||
|  | CONFIG_DRM_RCAR_DU=m | ||||||
| CONFIG_DRM_TEGRA=y | CONFIG_DRM_TEGRA=y | ||||||
| CONFIG_DRM_PANEL_SIMPLE=y | CONFIG_DRM_PANEL_SIMPLE=y | ||||||
| CONFIG_FB_ARMCLCD=y | CONFIG_FB_ARMCLCD=y | ||||||
| CONFIG_FB_WM8505=y | CONFIG_FB_WM8505=y | ||||||
|  | CONFIG_FB_SH_MOBILE_LCDC=y | ||||||
| CONFIG_FB_SIMPLE=y | CONFIG_FB_SIMPLE=y | ||||||
|  | CONFIG_FB_SH_MOBILE_MERAM=y | ||||||
| CONFIG_BACKLIGHT_LCD_SUPPORT=y | CONFIG_BACKLIGHT_LCD_SUPPORT=y | ||||||
| CONFIG_BACKLIGHT_CLASS_DEVICE=y | CONFIG_BACKLIGHT_CLASS_DEVICE=y | ||||||
| CONFIG_BACKLIGHT_PWM=y | CONFIG_BACKLIGHT_PWM=y | ||||||
|  | CONFIG_BACKLIGHT_AS3711=y | ||||||
| CONFIG_FRAMEBUFFER_CONSOLE=y | CONFIG_FRAMEBUFFER_CONSOLE=y | ||||||
| CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y | CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y | ||||||
| CONFIG_SOUND=y | CONFIG_SOUND=y | ||||||
|  | @ -343,6 +397,8 @@ CONFIG_SND=y | ||||||
| CONFIG_SND_DYNAMIC_MINORS=y | CONFIG_SND_DYNAMIC_MINORS=y | ||||||
| CONFIG_SND_USB_AUDIO=y | CONFIG_SND_USB_AUDIO=y | ||||||
| CONFIG_SND_SOC=y | CONFIG_SND_SOC=y | ||||||
|  | CONFIG_SND_SOC_SH4_FSI=m | ||||||
|  | CONFIG_SND_SOC_RCAR=m | ||||||
| CONFIG_SND_SOC_TEGRA=y | CONFIG_SND_SOC_TEGRA=y | ||||||
| CONFIG_SND_SOC_TEGRA_RT5640=y | CONFIG_SND_SOC_TEGRA_RT5640=y | ||||||
| CONFIG_SND_SOC_TEGRA_WM8753=y | CONFIG_SND_SOC_TEGRA_WM8753=y | ||||||
|  | @ -350,6 +406,8 @@ CONFIG_SND_SOC_TEGRA_WM8903=y | ||||||
| CONFIG_SND_SOC_TEGRA_TRIMSLICE=y | CONFIG_SND_SOC_TEGRA_TRIMSLICE=y | ||||||
| CONFIG_SND_SOC_TEGRA_ALC5632=y | CONFIG_SND_SOC_TEGRA_ALC5632=y | ||||||
| CONFIG_SND_SOC_TEGRA_MAX98090=y | CONFIG_SND_SOC_TEGRA_MAX98090=y | ||||||
|  | CONFIG_SND_SOC_AK4642=m | ||||||
|  | CONFIG_SND_SOC_WM8978=m | ||||||
| CONFIG_USB=y | CONFIG_USB=y | ||||||
| CONFIG_USB_XHCI_HCD=y | CONFIG_USB_XHCI_HCD=y | ||||||
| CONFIG_USB_XHCI_MVEBU=y | CONFIG_USB_XHCI_MVEBU=y | ||||||
|  | @ -362,6 +420,8 @@ CONFIG_USB_ISP1760_HCD=y | ||||||
| CONFIG_USB_OHCI_HCD=y | CONFIG_USB_OHCI_HCD=y | ||||||
| CONFIG_USB_OHCI_HCD_STI=y | CONFIG_USB_OHCI_HCD_STI=y | ||||||
| CONFIG_USB_OHCI_HCD_PLATFORM=y | CONFIG_USB_OHCI_HCD_PLATFORM=y | ||||||
|  | CONFIG_USB_R8A66597_HCD=m | ||||||
|  | CONFIG_USB_RENESAS_USBHS=m | ||||||
| CONFIG_USB_STORAGE=y | CONFIG_USB_STORAGE=y | ||||||
| CONFIG_USB_DWC3=y | CONFIG_USB_DWC3=y | ||||||
| CONFIG_USB_CHIPIDEA=y | CONFIG_USB_CHIPIDEA=y | ||||||
|  | @ -374,6 +434,10 @@ CONFIG_SAMSUNG_USB3PHY=y | ||||||
| CONFIG_USB_GPIO_VBUS=y | CONFIG_USB_GPIO_VBUS=y | ||||||
| CONFIG_USB_ISP1301=y | CONFIG_USB_ISP1301=y | ||||||
| CONFIG_USB_MXS_PHY=y | CONFIG_USB_MXS_PHY=y | ||||||
|  | CONFIG_USB_RCAR_PHY=m | ||||||
|  | CONFIG_USB_RCAR_GEN2_PHY=m | ||||||
|  | CONFIG_USB_GADGET=y | ||||||
|  | CONFIG_USB_RENESAS_USBHS_UDC=m | ||||||
| CONFIG_MMC=y | CONFIG_MMC=y | ||||||
| CONFIG_MMC_BLOCK_MINORS=16 | CONFIG_MMC_BLOCK_MINORS=16 | ||||||
| CONFIG_MMC_ARMMMCI=y | CONFIG_MMC_ARMMMCI=y | ||||||
|  | @ -392,12 +456,14 @@ CONFIG_MMC_SDHCI_ST=y | ||||||
| CONFIG_MMC_OMAP=y | CONFIG_MMC_OMAP=y | ||||||
| CONFIG_MMC_OMAP_HS=y | CONFIG_MMC_OMAP_HS=y | ||||||
| CONFIG_MMC_MVSDIO=y | CONFIG_MMC_MVSDIO=y | ||||||
| CONFIG_MMC_SUNXI=y | CONFIG_MMC_SDHI=y | ||||||
| CONFIG_MMC_DW=y | CONFIG_MMC_DW=y | ||||||
| CONFIG_MMC_DW_IDMAC=y | CONFIG_MMC_DW_IDMAC=y | ||||||
| CONFIG_MMC_DW_PLTFM=y | CONFIG_MMC_DW_PLTFM=y | ||||||
| CONFIG_MMC_DW_EXYNOS=y | CONFIG_MMC_DW_EXYNOS=y | ||||||
| CONFIG_MMC_DW_ROCKCHIP=y | CONFIG_MMC_DW_ROCKCHIP=y | ||||||
|  | CONFIG_MMC_SH_MMCIF=y | ||||||
|  | CONFIG_MMC_SUNXI=y | ||||||
| CONFIG_NEW_LEDS=y | CONFIG_NEW_LEDS=y | ||||||
| CONFIG_LEDS_CLASS=y | CONFIG_LEDS_CLASS=y | ||||||
| CONFIG_LEDS_GPIO=y | CONFIG_LEDS_GPIO=y | ||||||
|  | @ -421,10 +487,12 @@ CONFIG_RTC_DRV_AS3722=y | ||||||
| CONFIG_RTC_DRV_DS1307=y | CONFIG_RTC_DRV_DS1307=y | ||||||
| CONFIG_RTC_DRV_MAX8907=y | CONFIG_RTC_DRV_MAX8907=y | ||||||
| CONFIG_RTC_DRV_MAX77686=y | CONFIG_RTC_DRV_MAX77686=y | ||||||
|  | CONFIG_RTC_DRV_RS5C372=m | ||||||
| CONFIG_RTC_DRV_PALMAS=y | CONFIG_RTC_DRV_PALMAS=y | ||||||
| CONFIG_RTC_DRV_TWL4030=y | CONFIG_RTC_DRV_TWL4030=y | ||||||
| CONFIG_RTC_DRV_TPS6586X=y | CONFIG_RTC_DRV_TPS6586X=y | ||||||
| CONFIG_RTC_DRV_TPS65910=y | CONFIG_RTC_DRV_TPS65910=y | ||||||
|  | CONFIG_RTC_DRV_S35390A=m | ||||||
| CONFIG_RTC_DRV_EM3027=y | CONFIG_RTC_DRV_EM3027=y | ||||||
| CONFIG_RTC_DRV_PL031=y | CONFIG_RTC_DRV_PL031=y | ||||||
| CONFIG_RTC_DRV_VT8500=y | CONFIG_RTC_DRV_VT8500=y | ||||||
|  | @ -436,6 +504,9 @@ CONFIG_DMADEVICES=y | ||||||
| CONFIG_DW_DMAC=y | CONFIG_DW_DMAC=y | ||||||
| CONFIG_MV_XOR=y | CONFIG_MV_XOR=y | ||||||
| CONFIG_TEGRA20_APB_DMA=y | CONFIG_TEGRA20_APB_DMA=y | ||||||
|  | CONFIG_SH_DMAE=y | ||||||
|  | CONFIG_RCAR_AUDMAC_PP=m | ||||||
|  | CONFIG_RCAR_DMAC=y | ||||||
| CONFIG_STE_DMA40=y | CONFIG_STE_DMA40=y | ||||||
| CONFIG_SIRF_DMA=y | CONFIG_SIRF_DMA=y | ||||||
| CONFIG_TI_EDMA=y | CONFIG_TI_EDMA=y | ||||||
|  | @ -468,6 +539,7 @@ CONFIG_IIO=y | ||||||
| CONFIG_XILINX_XADC=y | CONFIG_XILINX_XADC=y | ||||||
| CONFIG_AK8975=y | CONFIG_AK8975=y | ||||||
| CONFIG_PWM=y | CONFIG_PWM=y | ||||||
|  | CONFIG_PWM_RENESAS_TPU=y | ||||||
| CONFIG_PWM_TEGRA=y | CONFIG_PWM_TEGRA=y | ||||||
| CONFIG_PWM_VT8500=y | CONFIG_PWM_VT8500=y | ||||||
| CONFIG_PHY_HIX5HD2_SATA=y | CONFIG_PHY_HIX5HD2_SATA=y | ||||||
|  |  | ||||||
|  | @ -114,6 +114,7 @@ CONFIG_MTD_PHYSMAP_OF=y | ||||||
| CONFIG_MTD_NAND=y | CONFIG_MTD_NAND=y | ||||||
| CONFIG_MTD_NAND_ECC_BCH=y | CONFIG_MTD_NAND_ECC_BCH=y | ||||||
| CONFIG_MTD_NAND_OMAP2=y | CONFIG_MTD_NAND_OMAP2=y | ||||||
|  | CONFIG_MTD_NAND_OMAP_BCH=y | ||||||
| CONFIG_MTD_ONENAND=y | CONFIG_MTD_ONENAND=y | ||||||
| CONFIG_MTD_ONENAND_VERIFY_WRITE=y | CONFIG_MTD_ONENAND_VERIFY_WRITE=y | ||||||
| CONFIG_MTD_ONENAND_OMAP2=y | CONFIG_MTD_ONENAND_OMAP2=y | ||||||
|  | @ -248,6 +249,7 @@ CONFIG_TWL6040_CORE=y | ||||||
| CONFIG_REGULATOR_PALMAS=y | CONFIG_REGULATOR_PALMAS=y | ||||||
| CONFIG_REGULATOR_PBIAS=y | CONFIG_REGULATOR_PBIAS=y | ||||||
| CONFIG_REGULATOR_TI_ABB=y | CONFIG_REGULATOR_TI_ABB=y | ||||||
|  | CONFIG_REGULATOR_TPS62360=m | ||||||
| CONFIG_REGULATOR_TPS65023=y | CONFIG_REGULATOR_TPS65023=y | ||||||
| CONFIG_REGULATOR_TPS6507X=y | CONFIG_REGULATOR_TPS6507X=y | ||||||
| CONFIG_REGULATOR_TPS65217=y | CONFIG_REGULATOR_TPS65217=y | ||||||
|  | @ -374,7 +376,7 @@ CONFIG_PWM_TIEHRPWM=m | ||||||
| CONFIG_PWM_TWL=m | CONFIG_PWM_TWL=m | ||||||
| CONFIG_PWM_TWL_LED=m | CONFIG_PWM_TWL_LED=m | ||||||
| CONFIG_OMAP_USB2=m | CONFIG_OMAP_USB2=m | ||||||
| CONFIG_TI_PIPE3=m | CONFIG_TI_PIPE3=y | ||||||
| CONFIG_EXT2_FS=y | CONFIG_EXT2_FS=y | ||||||
| CONFIG_EXT3_FS=y | CONFIG_EXT3_FS=y | ||||||
| # CONFIG_EXT3_FS_XATTR is not set | # CONFIG_EXT3_FS_XATTR is not set | ||||||
|  |  | ||||||
|  | @ -73,7 +73,7 @@ static inline void set_fs(mm_segment_t fs) | ||||||
| 	modify_domain(DOMAIN_KERNEL, fs ? DOMAIN_CLIENT : DOMAIN_MANAGER); | 	modify_domain(DOMAIN_KERNEL, fs ? DOMAIN_CLIENT : DOMAIN_MANAGER); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #define segment_eq(a,b)	((a) == (b)) | #define segment_eq(a, b)	((a) == (b)) | ||||||
| 
 | 
 | ||||||
| #define __addr_ok(addr) ({ \ | #define __addr_ok(addr) ({ \ | ||||||
| 	unsigned long flag; \ | 	unsigned long flag; \ | ||||||
|  | @ -84,7 +84,7 @@ static inline void set_fs(mm_segment_t fs) | ||||||
| 	(flag == 0); }) | 	(flag == 0); }) | ||||||
| 
 | 
 | ||||||
| /* We use 33-bit arithmetic here... */ | /* We use 33-bit arithmetic here... */ | ||||||
| #define __range_ok(addr,size) ({ \ | #define __range_ok(addr, size) ({ \ | ||||||
| 	unsigned long flag, roksum; \ | 	unsigned long flag, roksum; \ | ||||||
| 	__chk_user_ptr(addr);	\ | 	__chk_user_ptr(addr);	\ | ||||||
| 	__asm__("adds %1, %2, %3; sbcccs %1, %1, %0; movcc %0, #0" \ | 	__asm__("adds %1, %2, %3; sbcccs %1, %1, %0; movcc %0, #0" \ | ||||||
|  | @ -123,7 +123,7 @@ extern int __get_user_64t_4(void *); | ||||||
| #define __GUP_CLOBBER_32t_8 "lr", "cc" | #define __GUP_CLOBBER_32t_8 "lr", "cc" | ||||||
| #define __GUP_CLOBBER_8	"lr", "cc" | #define __GUP_CLOBBER_8	"lr", "cc" | ||||||
| 
 | 
 | ||||||
| #define __get_user_x(__r2,__p,__e,__l,__s)				\ | #define __get_user_x(__r2, __p, __e, __l, __s)				\ | ||||||
| 	   __asm__ __volatile__ (					\ | 	   __asm__ __volatile__ (					\ | ||||||
| 		__asmeq("%0", "r0") __asmeq("%1", "r2")			\ | 		__asmeq("%0", "r0") __asmeq("%1", "r2")			\ | ||||||
| 		__asmeq("%3", "r1")					\ | 		__asmeq("%3", "r1")					\ | ||||||
|  | @ -134,7 +134,7 @@ extern int __get_user_64t_4(void *); | ||||||
| 
 | 
 | ||||||
| /* narrowing a double-word get into a single 32bit word register: */ | /* narrowing a double-word get into a single 32bit word register: */ | ||||||
| #ifdef __ARMEB__ | #ifdef __ARMEB__ | ||||||
| #define __get_user_x_32t(__r2, __p, __e, __l, __s)				\ | #define __get_user_x_32t(__r2, __p, __e, __l, __s)			\ | ||||||
| 	__get_user_x(__r2, __p, __e, __l, 32t_8) | 	__get_user_x(__r2, __p, __e, __l, 32t_8) | ||||||
| #else | #else | ||||||
| #define __get_user_x_32t __get_user_x | #define __get_user_x_32t __get_user_x | ||||||
|  | @ -158,7 +158,7 @@ extern int __get_user_64t_4(void *); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #define __get_user_check(x,p)							\ | #define __get_user_check(x, p)						\ | ||||||
| 	({								\ | 	({								\ | ||||||
| 		unsigned long __limit = current_thread_info()->addr_limit - 1; \ | 		unsigned long __limit = current_thread_info()->addr_limit - 1; \ | ||||||
| 		register const typeof(*(p)) __user *__p asm("r0") = (p);\ | 		register const typeof(*(p)) __user *__p asm("r0") = (p);\ | ||||||
|  | @ -196,10 +196,10 @@ extern int __get_user_64t_4(void *); | ||||||
| 		__e;							\ | 		__e;							\ | ||||||
| 	}) | 	}) | ||||||
| 
 | 
 | ||||||
| #define get_user(x,p)							\ | #define get_user(x, p)							\ | ||||||
| 	({								\ | 	({								\ | ||||||
| 		might_fault();						\ | 		might_fault();						\ | ||||||
| 		__get_user_check(x,p);					\ | 		__get_user_check(x, p);					\ | ||||||
| 	 }) | 	 }) | ||||||
| 
 | 
 | ||||||
| extern int __put_user_1(void *, unsigned int); | extern int __put_user_1(void *, unsigned int); | ||||||
|  | @ -207,7 +207,7 @@ extern int __put_user_2(void *, unsigned int); | ||||||
| extern int __put_user_4(void *, unsigned int); | extern int __put_user_4(void *, unsigned int); | ||||||
| extern int __put_user_8(void *, unsigned long long); | extern int __put_user_8(void *, unsigned long long); | ||||||
| 
 | 
 | ||||||
| #define __put_user_x(__r2,__p,__e,__l,__s)				\ | #define __put_user_x(__r2, __p, __e, __l, __s)				\ | ||||||
| 	   __asm__ __volatile__ (					\ | 	   __asm__ __volatile__ (					\ | ||||||
| 		__asmeq("%0", "r0") __asmeq("%2", "r2")			\ | 		__asmeq("%0", "r0") __asmeq("%2", "r2")			\ | ||||||
| 		__asmeq("%3", "r1")					\ | 		__asmeq("%3", "r1")					\ | ||||||
|  | @ -216,7 +216,7 @@ extern int __put_user_8(void *, unsigned long long); | ||||||
| 		: "0" (__p), "r" (__r2), "r" (__l)			\ | 		: "0" (__p), "r" (__r2), "r" (__l)			\ | ||||||
| 		: "ip", "lr", "cc") | 		: "ip", "lr", "cc") | ||||||
| 
 | 
 | ||||||
| #define __put_user_check(x,p)							\ | #define __put_user_check(x, p)						\ | ||||||
| 	({								\ | 	({								\ | ||||||
| 		unsigned long __limit = current_thread_info()->addr_limit - 1; \ | 		unsigned long __limit = current_thread_info()->addr_limit - 1; \ | ||||||
| 		const typeof(*(p)) __user *__tmp_p = (p);		\ | 		const typeof(*(p)) __user *__tmp_p = (p);		\ | ||||||
|  | @ -242,10 +242,10 @@ extern int __put_user_8(void *, unsigned long long); | ||||||
| 		__e;							\ | 		__e;							\ | ||||||
| 	}) | 	}) | ||||||
| 
 | 
 | ||||||
| #define put_user(x,p)							\ | #define put_user(x, p)							\ | ||||||
| 	({								\ | 	({								\ | ||||||
| 		might_fault();						\ | 		might_fault();						\ | ||||||
| 		__put_user_check(x,p);					\ | 		__put_user_check(x, p);					\ | ||||||
| 	 }) | 	 }) | ||||||
| 
 | 
 | ||||||
| #else /* CONFIG_MMU */ | #else /* CONFIG_MMU */ | ||||||
|  | @ -255,21 +255,21 @@ extern int __put_user_8(void *, unsigned long long); | ||||||
|  */ |  */ | ||||||
| #define USER_DS			KERNEL_DS | #define USER_DS			KERNEL_DS | ||||||
| 
 | 
 | ||||||
| #define segment_eq(a,b)		(1) | #define segment_eq(a, b)		(1) | ||||||
| #define __addr_ok(addr)		((void)(addr),1) | #define __addr_ok(addr)		((void)(addr), 1) | ||||||
| #define __range_ok(addr,size)	((void)(addr),0) | #define __range_ok(addr, size)	((void)(addr), 0) | ||||||
| #define get_fs()		(KERNEL_DS) | #define get_fs()		(KERNEL_DS) | ||||||
| 
 | 
 | ||||||
| static inline void set_fs(mm_segment_t fs) | static inline void set_fs(mm_segment_t fs) | ||||||
| { | { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #define get_user(x,p)	__get_user(x,p) | #define get_user(x, p)	__get_user(x, p) | ||||||
| #define put_user(x,p)	__put_user(x,p) | #define put_user(x, p)	__put_user(x, p) | ||||||
| 
 | 
 | ||||||
| #endif /* CONFIG_MMU */ | #endif /* CONFIG_MMU */ | ||||||
| 
 | 
 | ||||||
| #define access_ok(type,addr,size)	(__range_ok(addr,size) == 0) | #define access_ok(type, addr, size)	(__range_ok(addr, size) == 0) | ||||||
| 
 | 
 | ||||||
| #define user_addr_max() \ | #define user_addr_max() \ | ||||||
| 	(segment_eq(get_fs(), KERNEL_DS) ? ~0UL : get_fs()) | 	(segment_eq(get_fs(), KERNEL_DS) ? ~0UL : get_fs()) | ||||||
|  | @ -283,35 +283,35 @@ static inline void set_fs(mm_segment_t fs) | ||||||
|  * error occurs, and leave it unchanged on success.  Note that these |  * error occurs, and leave it unchanged on success.  Note that these | ||||||
|  * versions are void (ie, don't return a value as such). |  * versions are void (ie, don't return a value as such). | ||||||
|  */ |  */ | ||||||
| #define __get_user(x,ptr)						\ | #define __get_user(x, ptr)						\ | ||||||
| ({									\ | ({									\ | ||||||
| 	long __gu_err = 0;						\ | 	long __gu_err = 0;						\ | ||||||
| 	__get_user_err((x),(ptr),__gu_err);				\ | 	__get_user_err((x), (ptr), __gu_err);				\ | ||||||
| 	__gu_err;							\ | 	__gu_err;							\ | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| #define __get_user_error(x,ptr,err)					\ | #define __get_user_error(x, ptr, err)					\ | ||||||
| ({									\ | ({									\ | ||||||
| 	__get_user_err((x),(ptr),err);					\ | 	__get_user_err((x), (ptr), err);				\ | ||||||
| 	(void) 0;							\ | 	(void) 0;							\ | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| #define __get_user_err(x,ptr,err)					\ | #define __get_user_err(x, ptr, err)					\ | ||||||
| do {									\ | do {									\ | ||||||
| 	unsigned long __gu_addr = (unsigned long)(ptr);			\ | 	unsigned long __gu_addr = (unsigned long)(ptr);			\ | ||||||
| 	unsigned long __gu_val;						\ | 	unsigned long __gu_val;						\ | ||||||
| 	__chk_user_ptr(ptr);						\ | 	__chk_user_ptr(ptr);						\ | ||||||
| 	might_fault();							\ | 	might_fault();							\ | ||||||
| 	switch (sizeof(*(ptr))) {					\ | 	switch (sizeof(*(ptr))) {					\ | ||||||
| 	case 1:	__get_user_asm_byte(__gu_val,__gu_addr,err);	break;	\ | 	case 1:	__get_user_asm_byte(__gu_val, __gu_addr, err);	break;	\ | ||||||
| 	case 2:	__get_user_asm_half(__gu_val,__gu_addr,err);	break;	\ | 	case 2:	__get_user_asm_half(__gu_val, __gu_addr, err);	break;	\ | ||||||
| 	case 4:	__get_user_asm_word(__gu_val,__gu_addr,err);	break;	\ | 	case 4:	__get_user_asm_word(__gu_val, __gu_addr, err);	break;	\ | ||||||
| 	default: (__gu_val) = __get_user_bad();				\ | 	default: (__gu_val) = __get_user_bad();				\ | ||||||
| 	}								\ | 	}								\ | ||||||
| 	(x) = (__typeof__(*(ptr)))__gu_val;				\ | 	(x) = (__typeof__(*(ptr)))__gu_val;				\ | ||||||
| } while (0) | } while (0) | ||||||
| 
 | 
 | ||||||
| #define __get_user_asm_byte(x,addr,err)				\ | #define __get_user_asm_byte(x, addr, err)			\ | ||||||
| 	__asm__ __volatile__(					\ | 	__asm__ __volatile__(					\ | ||||||
| 	"1:	" TUSER(ldrb) "	%1,[%2],#0\n"			\ | 	"1:	" TUSER(ldrb) "	%1,[%2],#0\n"			\ | ||||||
| 	"2:\n"							\ | 	"2:\n"							\ | ||||||
|  | @ -330,7 +330,7 @@ do {									\ | ||||||
| 	: "cc") | 	: "cc") | ||||||
| 
 | 
 | ||||||
| #ifndef __ARMEB__ | #ifndef __ARMEB__ | ||||||
| #define __get_user_asm_half(x,__gu_addr,err)			\ | #define __get_user_asm_half(x, __gu_addr, err)			\ | ||||||
| ({								\ | ({								\ | ||||||
| 	unsigned long __b1, __b2;				\ | 	unsigned long __b1, __b2;				\ | ||||||
| 	__get_user_asm_byte(__b1, __gu_addr, err);		\ | 	__get_user_asm_byte(__b1, __gu_addr, err);		\ | ||||||
|  | @ -338,7 +338,7 @@ do {									\ | ||||||
| 	(x) = __b1 | (__b2 << 8);				\ | 	(x) = __b1 | (__b2 << 8);				\ | ||||||
| }) | }) | ||||||
| #else | #else | ||||||
| #define __get_user_asm_half(x,__gu_addr,err)			\ | #define __get_user_asm_half(x, __gu_addr, err)			\ | ||||||
| ({								\ | ({								\ | ||||||
| 	unsigned long __b1, __b2;				\ | 	unsigned long __b1, __b2;				\ | ||||||
| 	__get_user_asm_byte(__b1, __gu_addr, err);		\ | 	__get_user_asm_byte(__b1, __gu_addr, err);		\ | ||||||
|  | @ -347,7 +347,7 @@ do {									\ | ||||||
| }) | }) | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #define __get_user_asm_word(x,addr,err)				\ | #define __get_user_asm_word(x, addr, err)			\ | ||||||
| 	__asm__ __volatile__(					\ | 	__asm__ __volatile__(					\ | ||||||
| 	"1:	" TUSER(ldr) "	%1,[%2],#0\n"			\ | 	"1:	" TUSER(ldr) "	%1,[%2],#0\n"			\ | ||||||
| 	"2:\n"							\ | 	"2:\n"							\ | ||||||
|  | @ -365,35 +365,35 @@ do {									\ | ||||||
| 	: "r" (addr), "i" (-EFAULT)				\ | 	: "r" (addr), "i" (-EFAULT)				\ | ||||||
| 	: "cc") | 	: "cc") | ||||||
| 
 | 
 | ||||||
| #define __put_user(x,ptr)						\ | #define __put_user(x, ptr)						\ | ||||||
| ({									\ | ({									\ | ||||||
| 	long __pu_err = 0;						\ | 	long __pu_err = 0;						\ | ||||||
| 	__put_user_err((x),(ptr),__pu_err);				\ | 	__put_user_err((x), (ptr), __pu_err);				\ | ||||||
| 	__pu_err;							\ | 	__pu_err;							\ | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| #define __put_user_error(x,ptr,err)					\ | #define __put_user_error(x, ptr, err)					\ | ||||||
| ({									\ | ({									\ | ||||||
| 	__put_user_err((x),(ptr),err);					\ | 	__put_user_err((x), (ptr), err);				\ | ||||||
| 	(void) 0;							\ | 	(void) 0;							\ | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
| #define __put_user_err(x,ptr,err)					\ | #define __put_user_err(x, ptr, err)					\ | ||||||
| do {									\ | do {									\ | ||||||
| 	unsigned long __pu_addr = (unsigned long)(ptr);			\ | 	unsigned long __pu_addr = (unsigned long)(ptr);			\ | ||||||
| 	__typeof__(*(ptr)) __pu_val = (x);				\ | 	__typeof__(*(ptr)) __pu_val = (x);				\ | ||||||
| 	__chk_user_ptr(ptr);						\ | 	__chk_user_ptr(ptr);						\ | ||||||
| 	might_fault();							\ | 	might_fault();							\ | ||||||
| 	switch (sizeof(*(ptr))) {					\ | 	switch (sizeof(*(ptr))) {					\ | ||||||
| 	case 1: __put_user_asm_byte(__pu_val,__pu_addr,err);	break;	\ | 	case 1: __put_user_asm_byte(__pu_val, __pu_addr, err);	break;	\ | ||||||
| 	case 2: __put_user_asm_half(__pu_val,__pu_addr,err);	break;	\ | 	case 2: __put_user_asm_half(__pu_val, __pu_addr, err);	break;	\ | ||||||
| 	case 4: __put_user_asm_word(__pu_val,__pu_addr,err);	break;	\ | 	case 4: __put_user_asm_word(__pu_val, __pu_addr, err);	break;	\ | ||||||
| 	case 8:	__put_user_asm_dword(__pu_val,__pu_addr,err);	break;	\ | 	case 8:	__put_user_asm_dword(__pu_val, __pu_addr, err);	break;	\ | ||||||
| 	default: __put_user_bad();					\ | 	default: __put_user_bad();					\ | ||||||
| 	}								\ | 	}								\ | ||||||
| } while (0) | } while (0) | ||||||
| 
 | 
 | ||||||
| #define __put_user_asm_byte(x,__pu_addr,err)			\ | #define __put_user_asm_byte(x, __pu_addr, err)			\ | ||||||
| 	__asm__ __volatile__(					\ | 	__asm__ __volatile__(					\ | ||||||
| 	"1:	" TUSER(strb) "	%1,[%2],#0\n"			\ | 	"1:	" TUSER(strb) "	%1,[%2],#0\n"			\ | ||||||
| 	"2:\n"							\ | 	"2:\n"							\ | ||||||
|  | @ -411,22 +411,22 @@ do {									\ | ||||||
| 	: "cc") | 	: "cc") | ||||||
| 
 | 
 | ||||||
| #ifndef __ARMEB__ | #ifndef __ARMEB__ | ||||||
| #define __put_user_asm_half(x,__pu_addr,err)			\ | #define __put_user_asm_half(x, __pu_addr, err)			\ | ||||||
| ({								\ | ({								\ | ||||||
| 	unsigned long __temp = (unsigned long)(x);		\ | 	unsigned long __temp = (__force unsigned long)(x);	\ | ||||||
| 	__put_user_asm_byte(__temp, __pu_addr, err);		\ | 	__put_user_asm_byte(__temp, __pu_addr, err);		\ | ||||||
| 	__put_user_asm_byte(__temp >> 8, __pu_addr + 1, err);	\ | 	__put_user_asm_byte(__temp >> 8, __pu_addr + 1, err);	\ | ||||||
| }) | }) | ||||||
| #else | #else | ||||||
| #define __put_user_asm_half(x,__pu_addr,err)			\ | #define __put_user_asm_half(x, __pu_addr, err)			\ | ||||||
| ({								\ | ({								\ | ||||||
| 	unsigned long __temp = (unsigned long)(x);		\ | 	unsigned long __temp = (__force unsigned long)(x);	\ | ||||||
| 	__put_user_asm_byte(__temp >> 8, __pu_addr, err);	\ | 	__put_user_asm_byte(__temp >> 8, __pu_addr, err);	\ | ||||||
| 	__put_user_asm_byte(__temp, __pu_addr + 1, err);	\ | 	__put_user_asm_byte(__temp, __pu_addr + 1, err);	\ | ||||||
| }) | }) | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #define __put_user_asm_word(x,__pu_addr,err)			\ | #define __put_user_asm_word(x, __pu_addr, err)			\ | ||||||
| 	__asm__ __volatile__(					\ | 	__asm__ __volatile__(					\ | ||||||
| 	"1:	" TUSER(str) "	%1,[%2],#0\n"			\ | 	"1:	" TUSER(str) "	%1,[%2],#0\n"			\ | ||||||
| 	"2:\n"							\ | 	"2:\n"							\ | ||||||
|  | @ -451,7 +451,7 @@ do {									\ | ||||||
| #define	__reg_oper1	"%R2" | #define	__reg_oper1	"%R2" | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #define __put_user_asm_dword(x,__pu_addr,err)			\ | #define __put_user_asm_dword(x, __pu_addr, err)			\ | ||||||
| 	__asm__ __volatile__(					\ | 	__asm__ __volatile__(					\ | ||||||
|  ARM(	"1:	" TUSER(str) "	" __reg_oper1 ", [%1], #4\n"	) \ |  ARM(	"1:	" TUSER(str) "	" __reg_oper1 ", [%1], #4\n"	) \ | ||||||
|  ARM(	"2:	" TUSER(str) "	" __reg_oper0 ", [%1]\n"	) \ |  ARM(	"2:	" TUSER(str) "	" __reg_oper0 ", [%1]\n"	) \ | ||||||
|  | @ -480,9 +480,9 @@ extern unsigned long __must_check __copy_to_user_std(void __user *to, const void | ||||||
| extern unsigned long __must_check __clear_user(void __user *addr, unsigned long n); | extern unsigned long __must_check __clear_user(void __user *addr, unsigned long n); | ||||||
| extern unsigned long __must_check __clear_user_std(void __user *addr, unsigned long n); | extern unsigned long __must_check __clear_user_std(void __user *addr, unsigned long n); | ||||||
| #else | #else | ||||||
| #define __copy_from_user(to,from,n)	(memcpy(to, (void __force *)from, n), 0) | #define __copy_from_user(to, from, n)	(memcpy(to, (void __force *)from, n), 0) | ||||||
| #define __copy_to_user(to,from,n)	(memcpy((void __force *)to, from, n), 0) | #define __copy_to_user(to, from, n)	(memcpy((void __force *)to, from, n), 0) | ||||||
| #define __clear_user(addr,n)		(memset((void __force *)addr, 0, n), 0) | #define __clear_user(addr, n)		(memset((void __force *)addr, 0, n), 0) | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n) | static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n) | ||||||
|  |  | ||||||
|  | @ -231,7 +231,7 @@ static void cpu_pmu_destroy(struct arm_pmu *cpu_pmu) | ||||||
| /*
 | /*
 | ||||||
|  * PMU platform driver and devicetree bindings. |  * PMU platform driver and devicetree bindings. | ||||||
|  */ |  */ | ||||||
| static struct of_device_id cpu_pmu_of_device_ids[] = { | static const struct of_device_id cpu_pmu_of_device_ids[] = { | ||||||
| 	{.compatible = "arm,cortex-a17-pmu",	.data = armv7_a17_pmu_init}, | 	{.compatible = "arm,cortex-a17-pmu",	.data = armv7_a17_pmu_init}, | ||||||
| 	{.compatible = "arm,cortex-a15-pmu",	.data = armv7_a15_pmu_init}, | 	{.compatible = "arm,cortex-a15-pmu",	.data = armv7_a15_pmu_init}, | ||||||
| 	{.compatible = "arm,cortex-a12-pmu",	.data = armv7_a12_pmu_init}, | 	{.compatible = "arm,cortex-a12-pmu",	.data = armv7_a12_pmu_init}, | ||||||
|  |  | ||||||
|  | @ -2,5 +2,7 @@ config MACH_ASM9260 | ||||||
| 	bool "Alphascale ASM9260" | 	bool "Alphascale ASM9260" | ||||||
| 	depends on ARCH_MULTI_V5 | 	depends on ARCH_MULTI_V5 | ||||||
| 	select CPU_ARM926T | 	select CPU_ARM926T | ||||||
|  | 	select ASM9260_TIMER | ||||||
|  | 	select GENERIC_CLOCKEVENTS | ||||||
| 	help | 	help | ||||||
| 	  Support for Alphascale ASM9260 based platform. | 	  Support for Alphascale ASM9260 based platform. | ||||||
|  |  | ||||||
|  | @ -64,7 +64,6 @@ config SOC_SAMA5D4 | ||||||
| 	select SOC_SAMA5 | 	select SOC_SAMA5 | ||||||
| 	select CLKSRC_MMIO | 	select CLKSRC_MMIO | ||||||
| 	select CACHE_L2X0 | 	select CACHE_L2X0 | ||||||
| 	select CACHE_PL310 |  | ||||||
| 	select HAVE_FB_ATMEL | 	select HAVE_FB_ATMEL | ||||||
| 	select HAVE_AT91_UTMI | 	select HAVE_AT91_UTMI | ||||||
| 	select HAVE_AT91_SMD | 	select HAVE_AT91_SMD | ||||||
|  |  | ||||||
|  | @ -183,7 +183,7 @@ static struct clock_event_device clkevt = { | ||||||
| void __iomem *at91_st_base; | void __iomem *at91_st_base; | ||||||
| EXPORT_SYMBOL_GPL(at91_st_base); | EXPORT_SYMBOL_GPL(at91_st_base); | ||||||
| 
 | 
 | ||||||
| static struct of_device_id at91rm9200_st_timer_ids[] = { | static const struct of_device_id at91rm9200_st_timer_ids[] = { | ||||||
| 	{ .compatible = "atmel,at91rm9200-st" }, | 	{ .compatible = "atmel,at91rm9200-st" }, | ||||||
| 	{ /* sentinel */ } | 	{ /* sentinel */ } | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -35,10 +35,10 @@ extern void __init at91sam9260_pm_init(void); | ||||||
| extern void __init at91sam9g45_pm_init(void); | extern void __init at91sam9g45_pm_init(void); | ||||||
| extern void __init at91sam9x5_pm_init(void); | extern void __init at91sam9x5_pm_init(void); | ||||||
| #else | #else | ||||||
| void __init at91rm9200_pm_init(void) { } | static inline void __init at91rm9200_pm_init(void) { } | ||||||
| void __init at91sam9260_pm_init(void) { } | static inline void __init at91sam9260_pm_init(void) { } | ||||||
| void __init at91sam9g45_pm_init(void) { } | static inline void __init at91sam9g45_pm_init(void) { } | ||||||
| void __init at91sam9x5_pm_init(void) { } | static inline void __init at91sam9x5_pm_init(void) { } | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| #endif /* _AT91_GENERIC_H */ | #endif /* _AT91_GENERIC_H */ | ||||||
|  |  | ||||||
|  | @ -226,7 +226,7 @@ void at91_pm_set_standby(void (*at91_standby)(void)) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static struct of_device_id ramc_ids[] = { | static const struct of_device_id ramc_ids[] __initconst = { | ||||||
| 	{ .compatible = "atmel,at91rm9200-sdramc", .data = at91rm9200_standby }, | 	{ .compatible = "atmel,at91rm9200-sdramc", .data = at91rm9200_standby }, | ||||||
| 	{ .compatible = "atmel,at91sam9260-sdramc", .data = at91sam9_sdram_standby }, | 	{ .compatible = "atmel,at91sam9260-sdramc", .data = at91sam9_sdram_standby }, | ||||||
| 	{ .compatible = "atmel,at91sam9g45-ddramc", .data = at91_ddr_standby }, | 	{ .compatible = "atmel,at91sam9g45-ddramc", .data = at91_ddr_standby }, | ||||||
|  | @ -234,7 +234,7 @@ static struct of_device_id ramc_ids[] = { | ||||||
| 	{ /*sentinel*/ } | 	{ /*sentinel*/ } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| static void at91_dt_ramc(void) | static __init void at91_dt_ramc(void) | ||||||
| { | { | ||||||
| 	struct device_node *np; | 	struct device_node *np; | ||||||
| 	const struct of_device_id *of_id; | 	const struct of_device_id *of_id; | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ | ||||||
| #include <linux/init.h> | #include <linux/init.h> | ||||||
| #include <asm/mach/arch.h> | #include <asm/mach/arch.h> | ||||||
| 
 | 
 | ||||||
| static const char *axxia_dt_match[] __initconst = { | static const char *const axxia_dt_match[] __initconst = { | ||||||
| 	"lsi,axm5516", | 	"lsi,axm5516", | ||||||
| 	"lsi,axm5516-sim", | 	"lsi,axm5516-sim", | ||||||
| 	"lsi,axm5516-emu", | 	"lsi,axm5516-emu", | ||||||
|  |  | ||||||
|  | @ -68,7 +68,7 @@ config ARCH_BCM_MOBILE | ||||||
| 	  This enables support for systems based on Broadcom mobile SoCs. | 	  This enables support for systems based on Broadcom mobile SoCs. | ||||||
| 
 | 
 | ||||||
| config ARCH_BCM_281XX | config ARCH_BCM_281XX | ||||||
| 	bool "Broadcom BCM281XX SoC family" | 	bool "Broadcom BCM281XX SoC family" if ARCH_MULTI_V7 | ||||||
| 	select ARCH_BCM_MOBILE | 	select ARCH_BCM_MOBILE | ||||||
| 	select HAVE_SMP | 	select HAVE_SMP | ||||||
| 	help | 	help | ||||||
|  | @ -77,7 +77,7 @@ config ARCH_BCM_281XX | ||||||
| 	  variants. | 	  variants. | ||||||
| 
 | 
 | ||||||
| config ARCH_BCM_21664 | config ARCH_BCM_21664 | ||||||
| 	bool "Broadcom BCM21664 SoC family" | 	bool "Broadcom BCM21664 SoC family" if ARCH_MULTI_V7 | ||||||
| 	select ARCH_BCM_MOBILE | 	select ARCH_BCM_MOBILE | ||||||
| 	select HAVE_SMP | 	select HAVE_SMP | ||||||
| 	help | 	help | ||||||
|  |  | ||||||
|  | @ -17,7 +17,7 @@ | ||||||
| #include <asm/mach-types.h> | #include <asm/mach-types.h> | ||||||
| #include <asm/mach/arch.h> | #include <asm/mach/arch.h> | ||||||
| 
 | 
 | ||||||
| static const char *brcmstb_match[] __initconst = { | static const char *const brcmstb_match[] __initconst = { | ||||||
| 	"brcm,bcm7445", | 	"brcm,bcm7445", | ||||||
| 	"brcm,brcmstb", | 	"brcm,brcmstb", | ||||||
| 	NULL | 	NULL | ||||||
|  |  | ||||||
|  | @ -32,12 +32,14 @@ config ARCH_DAVINCI_DM646x | ||||||
| 
 | 
 | ||||||
| config ARCH_DAVINCI_DA830 | config ARCH_DAVINCI_DA830 | ||||||
| 	bool "DA830/OMAP-L137/AM17x based system" | 	bool "DA830/OMAP-L137/AM17x based system" | ||||||
|  | 	depends on !ARCH_DAVINCI_DMx || AUTO_ZRELADDR | ||||||
| 	select ARCH_DAVINCI_DA8XX | 	select ARCH_DAVINCI_DA8XX | ||||||
| 	select CPU_DCACHE_WRITETHROUGH # needed on silicon revs 1.0, 1.1 | 	select CPU_DCACHE_WRITETHROUGH # needed on silicon revs 1.0, 1.1 | ||||||
| 	select CP_INTC | 	select CP_INTC | ||||||
| 
 | 
 | ||||||
| config ARCH_DAVINCI_DA850 | config ARCH_DAVINCI_DA850 | ||||||
| 	bool "DA850/OMAP-L138/AM18x based system" | 	bool "DA850/OMAP-L138/AM18x based system" | ||||||
|  | 	depends on !ARCH_DAVINCI_DMx || AUTO_ZRELADDR | ||||||
| 	select ARCH_DAVINCI_DA8XX | 	select ARCH_DAVINCI_DA8XX | ||||||
| 	select CP_INTC | 	select CP_INTC | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -20,7 +20,7 @@ | ||||||
| 
 | 
 | ||||||
| #define DA8XX_NUM_UARTS	3 | #define DA8XX_NUM_UARTS	3 | ||||||
| 
 | 
 | ||||||
| static struct of_device_id da8xx_irq_match[] __initdata = { | static const struct of_device_id da8xx_irq_match[] __initconst = { | ||||||
| 	{ .compatible = "ti,cp-intc", .data = cp_intc_of_init, }, | 	{ .compatible = "ti,cp-intc", .data = cp_intc_of_init, }, | ||||||
| 	{ } | 	{ } | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -30,7 +30,7 @@ static void __iomem *pinmux_base; | ||||||
| /*
 | /*
 | ||||||
|  * Sets the DAVINCI MUX register based on the table |  * Sets the DAVINCI MUX register based on the table | ||||||
|  */ |  */ | ||||||
| int __init_or_module davinci_cfg_reg(const unsigned long index) | int davinci_cfg_reg(const unsigned long index) | ||||||
| { | { | ||||||
| 	static DEFINE_SPINLOCK(mux_spin_lock); | 	static DEFINE_SPINLOCK(mux_spin_lock); | ||||||
| 	struct davinci_soc_info *soc_info = &davinci_soc_info; | 	struct davinci_soc_info *soc_info = &davinci_soc_info; | ||||||
|  | @ -101,7 +101,7 @@ int __init_or_module davinci_cfg_reg(const unsigned long index) | ||||||
| } | } | ||||||
| EXPORT_SYMBOL(davinci_cfg_reg); | EXPORT_SYMBOL(davinci_cfg_reg); | ||||||
| 
 | 
 | ||||||
| int __init_or_module davinci_cfg_reg_list(const short pins[]) | int davinci_cfg_reg_list(const short pins[]) | ||||||
| { | { | ||||||
| 	int i, error = -EINVAL; | 	int i, error = -EINVAL; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -227,7 +227,7 @@ static void __init exynos_dt_machine_init(void) | ||||||
| 	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | 	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static char const *exynos_dt_compat[] __initconst = { | static char const *const exynos_dt_compat[] __initconst = { | ||||||
| 	"samsung,exynos3", | 	"samsung,exynos3", | ||||||
| 	"samsung,exynos3250", | 	"samsung,exynos3250", | ||||||
| 	"samsung,exynos4", | 	"samsung,exynos4", | ||||||
|  |  | ||||||
|  | @ -587,7 +587,7 @@ static struct exynos_pm_data exynos5420_pm_data = { | ||||||
| 	.cpu_suspend	= exynos5420_cpu_suspend, | 	.cpu_suspend	= exynos5420_cpu_suspend, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| static struct of_device_id exynos_pmu_of_device_ids[] = { | static const struct of_device_id exynos_pmu_of_device_ids[] __initconst = { | ||||||
| 	{ | 	{ | ||||||
| 		.compatible = "samsung,exynos3250-pmu", | 		.compatible = "samsung,exynos3250-pmu", | ||||||
| 		.data = &exynos3250_pm_data, | 		.data = &exynos3250_pm_data, | ||||||
|  |  | ||||||
|  | @ -169,7 +169,7 @@ static void __init highbank_init(void) | ||||||
| 		platform_device_register(&highbank_cpuidle_device); | 		platform_device_register(&highbank_cpuidle_device); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static const char *highbank_match[] __initconst = { | static const char *const highbank_match[] __initconst = { | ||||||
| 	"calxeda,highbank", | 	"calxeda,highbank", | ||||||
| 	"calxeda,ecx-2000", | 	"calxeda,ecx-2000", | ||||||
| 	NULL, | 	NULL, | ||||||
|  |  | ||||||
|  | @ -45,7 +45,7 @@ static void __init hi3620_map_io(void) | ||||||
| 	iotable_init(hi3620_io_desc, ARRAY_SIZE(hi3620_io_desc)); | 	iotable_init(hi3620_io_desc, ARRAY_SIZE(hi3620_io_desc)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static const char *hi3xxx_compat[] __initconst = { | static const char *const hi3xxx_compat[] __initconst = { | ||||||
| 	"hisilicon,hi3620-hi4511", | 	"hisilicon,hi3620-hi4511", | ||||||
| 	NULL, | 	NULL, | ||||||
| }; | }; | ||||||
|  | @ -55,7 +55,7 @@ DT_MACHINE_START(HI3620, "Hisilicon Hi3620 (Flattened Device Tree)") | ||||||
| 	.dt_compat	= hi3xxx_compat, | 	.dt_compat	= hi3xxx_compat, | ||||||
| MACHINE_END | MACHINE_END | ||||||
| 
 | 
 | ||||||
| static const char *hix5hd2_compat[] __initconst = { | static const char *const hix5hd2_compat[] __initconst = { | ||||||
| 	"hisilicon,hix5hd2", | 	"hisilicon,hix5hd2", | ||||||
| 	NULL, | 	NULL, | ||||||
| }; | }; | ||||||
|  | @ -64,7 +64,7 @@ DT_MACHINE_START(HIX5HD2_DT, "Hisilicon HIX5HD2 (Flattened Device Tree)") | ||||||
| 	.dt_compat	= hix5hd2_compat, | 	.dt_compat	= hix5hd2_compat, | ||||||
| MACHINE_END | MACHINE_END | ||||||
| 
 | 
 | ||||||
| static const char *hip04_compat[] __initconst = { | static const char *const hip04_compat[] __initconst = { | ||||||
| 	"hisilicon,hip04-d01", | 	"hisilicon,hip04-d01", | ||||||
| 	NULL, | 	NULL, | ||||||
| }; | }; | ||||||
|  | @ -73,7 +73,7 @@ DT_MACHINE_START(HIP04, "Hisilicon HiP04 (Flattened Device Tree)") | ||||||
| 	.dt_compat	= hip04_compat, | 	.dt_compat	= hip04_compat, | ||||||
| MACHINE_END | MACHINE_END | ||||||
| 
 | 
 | ||||||
| static const char *hip01_compat[] __initconst = { | static const char *const hip01_compat[] __initconst = { | ||||||
| 	"hisilicon,hip01", | 	"hisilicon,hip01", | ||||||
| 	"hisilicon,hip01-ca9x2", | 	"hisilicon,hip01-ca9x2", | ||||||
| 	NULL, | 	NULL, | ||||||
|  |  | ||||||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 David S. Miller
				David S. Miller