arm64: dts: Amlogic updates for v5.3
Highlights: - new SoC: S922X (G12B family, A73/A53 big.LITTLE) - new board: Hardkernel odroid-N2 (SoC: G12B S922X) - add/use ethernet PHY interrupt/reset lines - G12A: add/enable audio, PWM, IR, i2c, SD/eMMC, WiFi, bluetooth, network - gxbb-vega-s95 board: fix WiFi/BT, enable more peripherals -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEe4dGDhaSf6n1v/EMWTcYmtP7xmUFAl0L+UIACgkQWTcYmtP7 xmXf3A/7B3NzV6ESRTpcbZVh4V2esBb/1DYXYqbiliBGt3xvsmSi1sqQY8DN1Vpq M07fzWcwDXVAEa9Yd6UmS2zzxV61AxZHvGhr7+zTJ+2wTpSTfvRcnC3x8AF1rqVy TCC/VzDKtA3s/D0se0iHm6y/Aj/ysWBDQ7boT6Ex2pKm0WoC8qT5zDaYFBtV1i4W vo0xWhcbGiaif3OzDi6Y9qtPSbgPBOKFG9/tXSasxAR9rqx5LSnEBOP+HQUTMVTj K2fLcxAHR0833OrNkg27CUJDZBGI74otgUZv+ZFBYHDbb1x8gWYYBAKzO/sp7bBW rJRoZ4ILHfszRJjpH87x8+KCcQunuCq+R9eGTt0B4i871JH2uMPhUp7jiZO4WRbm yzFVkfxNM+3F+ZIy82JFPoKnHkTbvwyGCxQm3dzJROMx8f81rIS0EnCSvr4noGst +vo+brMgbiUYmKzB9wGklnQBuiRxes5xnoKo7WtiAYwJfmemWak7S8xOcNTnMXdY o56o0o+bf5QHM2GkYpUk4E3xst+WTgrALUePSm6MgBmwyePoTkMFywpdHFWT3edX lHxAgkRs2zctk0N3fm9nzASC991tTLY4De5/yPLQ5J8yzpXp0gDsIHV0RPJ8y7j8 EeqAhbwxtLRqxaTPxQQai+5JWe7ExtzLfRQWpgTUn0yzVwPUIpg= =f2yc -----END PGP SIGNATURE----- Merge tag 'amlogic-dt64' of https://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic into arm/dt arm64: dts: Amlogic updates for v5.3 Highlights: - new SoC: S922X (G12B family, A73/A53 big.LITTLE) - new board: Hardkernel odroid-N2 (SoC: G12B S922X) - add/use ethernet PHY interrupt/reset lines - G12A: add/enable audio, PWM, IR, i2c, SD/eMMC, WiFi, bluetooth, network - gxbb-vega-s95 board: fix WiFi/BT, enable more peripherals * tag 'amlogic-dt64' of https://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-amlogic: (79 commits) arm64: dts: meson: g12a: x96-max: add the Ethernet PHY interrupt line arm64: dts: meson: g12b: odroid-n2: add the Ethernet PHY interrupt line arm64: dts: meson: g12b: odroid-n2: add the Ethernet PHY reset line arm64: dts: meson: use the generic Ethernet PHY reset GPIO bindings arm64: dts: meson: g12a: x96-max: fix the Ethernet PHY reset line arm64: dts: meson: g12a: sort sdio nodes correctly arm64: dts: meson-g12a-x96-max: add sound card arm64: dts: meson-g12b-odroid-n2: add sound card arm64: dts: meson: sei510: add sound card arm64: dts: meson: sei510: add max98357a DAC ASoC: meson: add tohdmitx DT bindings arm64: dts: meson: g12a: add the GPIO interrupt controller arm64: dts: meson-g12a-x96-max: bump bluetooth bus speed to 2Mbaud/s arm64: dts: meson-g12a-sei510: bump bluetooth bus speed to 2Mbaud/s arm64: dts: meson-g12a-x96-max: add 32k clock to bluetooth node arm64: dts: meson-g12a-sei510: add 32k clock to bluetooth node arm64: dts: meson-g12a-sei510: Enable Wifi SDIO module arm64: dts: meson-g12a-x96-max: Enable Wifi SDIO Module arm64: dts: meson-g12a-x96-max: add support for sdcard and emmc arm64: dts: meson: g12a: add SDIO controller ... Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
		
						commit
						d78cda5aa0
					
				| @ -1,142 +0,0 @@ | ||||
| Amlogic MesonX device tree bindings | ||||
| ------------------------------------------- | ||||
| 
 | ||||
| Work in progress statement: | ||||
| 
 | ||||
| Device tree files and bindings applying to Amlogic SoCs and boards are | ||||
| considered "unstable". Any Amlogic device tree binding may change at | ||||
| any time. Be sure to use a device tree binary and a kernel image | ||||
| generated from the same source tree. | ||||
| 
 | ||||
| Please refer to Documentation/devicetree/bindings/ABI.txt for a definition of a | ||||
| stable binding/ABI. | ||||
| 
 | ||||
| --------------------------------------------------------------- | ||||
| 
 | ||||
| Boards with the Amlogic Meson6 SoC shall have the following properties: | ||||
|   Required root node property: | ||||
|     compatible: "amlogic,meson6" | ||||
| 
 | ||||
| Boards with the Amlogic Meson8 SoC shall have the following properties: | ||||
|   Required root node property: | ||||
|     compatible: "amlogic,meson8"; | ||||
| 
 | ||||
| Boards with the Amlogic Meson8b SoC shall have the following properties: | ||||
|   Required root node property: | ||||
|     compatible: "amlogic,meson8b"; | ||||
| 
 | ||||
| Boards with the Amlogic Meson8m2 SoC shall have the following properties: | ||||
|   Required root node property: | ||||
|     compatible: "amlogic,meson8m2"; | ||||
| 
 | ||||
| Boards with the Amlogic Meson GXBaby SoC shall have the following properties: | ||||
|   Required root node property: | ||||
|     compatible: "amlogic,meson-gxbb"; | ||||
| 
 | ||||
| Boards with the Amlogic Meson GXL S905X SoC shall have the following properties: | ||||
|   Required root node property: | ||||
|     compatible: "amlogic,s905x", "amlogic,meson-gxl"; | ||||
| 
 | ||||
| Boards with the Amlogic Meson GXL S905D SoC shall have the following properties: | ||||
|   Required root node property: | ||||
|     compatible: "amlogic,s905d", "amlogic,meson-gxl"; | ||||
| 
 | ||||
| Boards with the Amlogic Meson GXL S805X SoC shall have the following properties: | ||||
|   Required root node property: | ||||
|     compatible: "amlogic,s805x", "amlogic,meson-gxl"; | ||||
| 
 | ||||
| Boards with the Amlogic Meson GXL S905W SoC shall have the following properties: | ||||
|   Required root node property: | ||||
|     compatible: "amlogic,s905w", "amlogic,meson-gxl"; | ||||
| 
 | ||||
| Boards with the Amlogic Meson GXM S912 SoC shall have the following properties: | ||||
|   Required root node property: | ||||
|     compatible: "amlogic,s912", "amlogic,meson-gxm"; | ||||
| 
 | ||||
| Boards with the Amlogic Meson AXG A113D SoC shall have the following properties: | ||||
|   Required root node property: | ||||
|     compatible: "amlogic,a113d", "amlogic,meson-axg"; | ||||
| 
 | ||||
| Boards with the Amlogic Meson G12A S905D2 SoC shall have the following properties: | ||||
|   Required root node property: | ||||
|     compatible: "amlogic,g12a"; | ||||
| 
 | ||||
| Board compatible values (alphabetically, grouped by SoC): | ||||
| 
 | ||||
|   - "geniatech,atv1200" (Meson6) | ||||
| 
 | ||||
|   - "minix,neo-x8" (Meson8) | ||||
| 
 | ||||
|   - "endless,ec100" (Meson8b) | ||||
|   - "hardkernel,odroid-c1" (Meson8b) | ||||
|   - "tronfy,mxq" (Meson8b) | ||||
| 
 | ||||
|   - "tronsmart,mxiii-plus" (Meson8m2) | ||||
| 
 | ||||
|   - "amlogic,p200" (Meson gxbb) | ||||
|   - "amlogic,p201" (Meson gxbb) | ||||
|   - "friendlyarm,nanopi-k2" (Meson gxbb) | ||||
|   - "hardkernel,odroid-c2" (Meson gxbb) | ||||
|   - "nexbox,a95x" (Meson gxbb or Meson gxl s905x) | ||||
|   - "tronsmart,vega-s95-pro", "tronsmart,vega-s95" (Meson gxbb) | ||||
|   - "tronsmart,vega-s95-meta", "tronsmart,vega-s95" (Meson gxbb) | ||||
|   - "tronsmart,vega-s95-telos", "tronsmart,vega-s95" (Meson gxbb) | ||||
|   - "wetek,hub" (Meson gxbb) | ||||
|   - "wetek,play2" (Meson gxbb) | ||||
| 
 | ||||
|   - "amlogic,p212" (Meson gxl s905x) | ||||
|   - "hwacom,amazetv" (Meson gxl s905x) | ||||
|   - "khadas,vim" (Meson gxl s905x) | ||||
|   - "libretech,cc" (Meson gxl s905x) | ||||
| 
 | ||||
|   - "amlogic,p230" (Meson gxl s905d) | ||||
|   - "amlogic,p231" (Meson gxl s905d) | ||||
|   - "phicomm,n1" (Meson gxl s905d) | ||||
| 
 | ||||
|   - "amlogic,p241" (Meson gxl s805x) | ||||
|   - "libretech,aml-s805x-ac" (Meson gxl s805x) | ||||
| 
 | ||||
|   - "amlogic,p281" (Meson gxl s905w) | ||||
|   - "oranth,tx3-mini" (Meson gxl s905w) | ||||
| 
 | ||||
|   - "amlogic,q200" (Meson gxm s912) | ||||
|   - "amlogic,q201" (Meson gxm s912) | ||||
|   - "khadas,vim2" (Meson gxm s912) | ||||
|   - "kingnovel,r-box-pro" (Meson gxm S912) | ||||
|   - "nexbox,a1" (Meson gxm s912) | ||||
|   - "tronsmart,vega-s96" (Meson gxm s912) | ||||
| 
 | ||||
|   - "amlogic,s400" (Meson axg a113d) | ||||
| 
 | ||||
|   - "amlogic,u200" (Meson g12a s905d2) | ||||
|   - "amediatech,x96-max" (Meson g12a s905x2) | ||||
|   - "seirobotics,sei510" (Meson g12a s905x2) | ||||
| 
 | ||||
| Amlogic Meson Firmware registers Interface | ||||
| ------------------------------------------ | ||||
| 
 | ||||
| The Meson SoCs have a register bank with status and data shared with the | ||||
| secure firmware. | ||||
| 
 | ||||
| Required properties: | ||||
|  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon" | ||||
| 
 | ||||
| Properties should indentify components of this register interface : | ||||
| 
 | ||||
| Meson GX SoC Information | ||||
| ------------------------ | ||||
| A firmware register encodes the SoC type, package and revision information on | ||||
| the Meson GX SoCs. | ||||
| If present, the following property should be added : | ||||
| 
 | ||||
| Optional properties: | ||||
|   - amlogic,has-chip-id: If present, the interface gives the current SoC version. | ||||
| 
 | ||||
| Example | ||||
| ------- | ||||
| 
 | ||||
| ao-secure@140 { | ||||
| 	compatible = "amlogic,meson-gx-ao-secure", "syscon"; | ||||
| 	reg = <0x0 0x140 0x0 0x140>; | ||||
| 	amlogic,has-chip-id; | ||||
| }; | ||||
							
								
								
									
										144
									
								
								Documentation/devicetree/bindings/arm/amlogic.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								Documentation/devicetree/bindings/arm/amlogic.yaml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,144 @@ | ||||
| # SPDX-License-Identifier: GPL-2.0 | ||||
| %YAML 1.2 | ||||
| --- | ||||
| $id: http://devicetree.org/schemas/arm/amlogic.yaml# | ||||
| $schema: http://devicetree.org/meta-schemas/core.yaml# | ||||
| 
 | ||||
| title: Amlogic MesonX device tree bindings | ||||
| 
 | ||||
| maintainers: | ||||
|   - Kevin Hilman <khilman@baylibre.com> | ||||
| 
 | ||||
| description: |+ | ||||
|   Work in progress statement: | ||||
| 
 | ||||
|   Device tree files and bindings applying to Amlogic SoCs and boards are | ||||
|   considered "unstable". Any Amlogic device tree binding may change at | ||||
|   any time. Be sure to use a device tree binary and a kernel image | ||||
|   generated from the same source tree. | ||||
| 
 | ||||
|   Please refer to Documentation/devicetree/bindings/ABI.txt for a definition of a | ||||
|   stable binding/ABI. | ||||
| 
 | ||||
| properties: | ||||
|   $nodename: | ||||
|     const: '/' | ||||
|   compatible: | ||||
|     oneOf: | ||||
|       - description: Boards with the Amlogic Meson6 SoC | ||||
|         items: | ||||
|           - enum: | ||||
|               - geniatech,atv1200 | ||||
|           - const: amlogic,meson6 | ||||
| 
 | ||||
|       - description: Boards with the Amlogic Meson8 SoC | ||||
|         items: | ||||
|           - enum: | ||||
|               - minix,neo-x8 | ||||
|           - const: amlogic,meson8 | ||||
| 
 | ||||
|       - description: Boards with the Amlogic Meson8m2 SoC | ||||
|         items: | ||||
|           - enum: | ||||
|               - tronsmart,mxiii-plus | ||||
|           - const: amlogic,meson8m2 | ||||
| 
 | ||||
|       - description: Boards with the Amlogic Meson8b SoC | ||||
|         items: | ||||
|           - enum: | ||||
|               - endless,ec100 | ||||
|               - hardkernel,odroid-c1 | ||||
|               - tronfy,mxq | ||||
|           - const: amlogic,meson8b | ||||
| 
 | ||||
|       - description: Boards with the Amlogic Meson GXBaby SoC | ||||
|         items: | ||||
|           - enum: | ||||
|               - amlogic,p200 | ||||
|               - amlogic,p201 | ||||
|               - friendlyarm,nanopi-k2 | ||||
|               - hardkernel,odroid-c2 | ||||
|               - nexbox,a95x | ||||
|               - wetek,hub | ||||
|               - wetek,play2 | ||||
|           - const: amlogic,meson-gxbb | ||||
| 
 | ||||
|       - description: Tronsmart Vega S95 devices | ||||
|         items: | ||||
|           - enum: | ||||
|               - tronsmart,vega-s95-pro | ||||
|               - tronsmart,vega-s95-meta | ||||
|               - tronsmart,vega-s95-telos | ||||
|           - const: tronsmart,vega-s95 | ||||
|           - const: amlogic,meson-gxbb | ||||
| 
 | ||||
|       - description: Boards with the Amlogic Meson GXL S805X SoC | ||||
|         items: | ||||
|           - enum: | ||||
|               - amlogic,p241 | ||||
|               - libretech,aml-s805x-ac | ||||
|           - const: amlogic,s805x | ||||
|           - const: amlogic,meson-gxl | ||||
| 
 | ||||
|       - description: Boards with the Amlogic Meson GXL S905W SoC | ||||
|         items: | ||||
|           - enum: | ||||
|               - amlogic,p281 | ||||
|               - oranth,tx3-mini | ||||
|           - const: amlogic,s905w | ||||
|           - const: amlogic,meson-gxl | ||||
| 
 | ||||
|       - description: Boards with the Amlogic Meson GXL S905X SoC | ||||
|         items: | ||||
|           - enum: | ||||
|               - amediatech,x96-max | ||||
|               - amlogic,p212 | ||||
|               - hwacom,amazetv | ||||
|               - khadas,vim | ||||
|               - libretech,cc | ||||
|               - nexbox,a95x | ||||
|               - seirobotics,sei510 | ||||
|           - const: amlogic,s905x | ||||
|           - const: amlogic,meson-gxl | ||||
| 
 | ||||
|       - description: Boards with the Amlogic Meson GXL S905D SoC | ||||
|         items: | ||||
|           - enum: | ||||
|               - amlogic,p230 | ||||
|               - amlogic,p231 | ||||
|               - phicomm,n1 | ||||
|           - const: amlogic,s905d | ||||
|           - const: amlogic,meson-gxl | ||||
| 
 | ||||
|       - description: Boards with the Amlogic Meson GXM S912 SoC | ||||
|         items: | ||||
|           - enum: | ||||
|               - amlogic,q200 | ||||
|               - amlogic,q201 | ||||
|               - khadas,vim2 | ||||
|               - kingnovel,r-box-pro | ||||
|               - nexbox,a1 | ||||
|               - tronsmart,vega-s96 | ||||
|           - const: amlogic,s912 | ||||
|           - const: amlogic,meson-gxm | ||||
| 
 | ||||
|       - description: Boards with the Amlogic Meson AXG A113D SoC | ||||
|         items: | ||||
|           - enum: | ||||
|               - amlogic,s400 | ||||
|           - const: amlogic,a113d | ||||
|           - const: amlogic,meson-axg | ||||
| 
 | ||||
|       - description: Boards with the Amlogic Meson G12A S905D2 SoC | ||||
|         items: | ||||
|           - enum: | ||||
|               - amlogic,u200 | ||||
|           - const: amlogic,g12a | ||||
| 
 | ||||
|       - description: Boards with the Amlogic Meson G12B S922X SoC | ||||
|         items: | ||||
|           - enum: | ||||
|               - hardkernel,odroid-n2 | ||||
|           - const: amlogic,g12b | ||||
| 
 | ||||
| ... | ||||
| @ -0,0 +1,28 @@ | ||||
| Amlogic Meson Firmware registers Interface | ||||
| ------------------------------------------ | ||||
| 
 | ||||
| The Meson SoCs have a register bank with status and data shared with the | ||||
| secure firmware. | ||||
| 
 | ||||
| Required properties: | ||||
|  - compatible: For Meson GX SoCs, must be "amlogic,meson-gx-ao-secure", "syscon" | ||||
| 
 | ||||
| Properties should indentify components of this register interface : | ||||
| 
 | ||||
| Meson GX SoC Information | ||||
| ------------------------ | ||||
| A firmware register encodes the SoC type, package and revision information on | ||||
| the Meson GX SoCs. | ||||
| If present, the following property should be added : | ||||
| 
 | ||||
| Optional properties: | ||||
|   - amlogic,has-chip-id: If present, the interface gives the current SoC version. | ||||
| 
 | ||||
| Example | ||||
| ------- | ||||
| 
 | ||||
| ao-secure@140 { | ||||
| 	compatible = "amlogic,meson-gx-ao-secure", "syscon"; | ||||
| 	reg = <0x0 0x140 0x0 0x140>; | ||||
| 	amlogic,has-chip-id; | ||||
| }; | ||||
| @ -0,0 +1,55 @@ | ||||
| * Amlogic HDMI Tx control glue | ||||
| 
 | ||||
| Required properties: | ||||
| - compatible: "amlogic,g12a-tohdmitx" | ||||
| - reg: physical base address of the controller and length of memory | ||||
|        mapped region. | ||||
| - #sound-dai-cells: should be 1. | ||||
| 
 | ||||
| Example on the S905X2 SoC: | ||||
| 
 | ||||
| tohdmitx: audio-controller@744 { | ||||
| 	compatible = "amlogic,g12a-tohdmitx"; | ||||
| 	reg = <0x0 0x744 0x0 0x4>; | ||||
| 	#sound-dai-cells = <1>; | ||||
| }; | ||||
| 
 | ||||
| Example of an 'amlogic,axg-sound-card': | ||||
| 
 | ||||
| sound { | ||||
| 	compatible = "amlogic,axg-sound-card"; | ||||
| 
 | ||||
| [...] | ||||
| 
 | ||||
| 	dai-link-x { | ||||
| 		sound-dai = <&tdmif_a>; | ||||
| 		dai-format = "i2s"; | ||||
| 		dai-tdm-slot-tx-mask-0 = <1 1>; | ||||
| 
 | ||||
| 		codec-0 { | ||||
| 			sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>; | ||||
| 		}; | ||||
| 
 | ||||
| 		codec-1 { | ||||
| 			sound-dai = <&external_dac>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	dai-link-y { | ||||
| 		sound-dai = <&tdmif_c>; | ||||
| 		dai-format = "i2s"; | ||||
| 		dai-tdm-slot-tx-mask-0 = <1 1>; | ||||
| 
 | ||||
| 		codec { | ||||
| 			sound-dai = <&tohdmitx TOHDMITX_I2S_IN_C>; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	dai-link-z { | ||||
| 		sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; | ||||
| 
 | ||||
| 		codec { | ||||
| 			sound-dai = <&hdmi_tx>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| @ -3,6 +3,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-axg-s400.dtb | ||||
| dtb-$(CONFIG_ARCH_MESON) += meson-g12a-sei510.dtb | ||||
| dtb-$(CONFIG_ARCH_MESON) += meson-g12a-u200.dtb | ||||
| dtb-$(CONFIG_ARCH_MESON) += meson-g12a-x96-max.dtb | ||||
| dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb | ||||
| dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb | ||||
| dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nexbox-a95x.dtb | ||||
| dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-odroidc2.dtb | ||||
|  | ||||
| @ -482,8 +482,8 @@ | ||||
| 
 | ||||
| /* emmc storage */ | ||||
| &sd_emmc_c { | ||||
| 	status = "disabled"; | ||||
| 	pinctrl-0 = <&emmc_pins>; | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; | ||||
| 	pinctrl-1 = <&emmc_clk_gate_pins>; | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 
 | ||||
|  | ||||
| @ -171,7 +171,9 @@ | ||||
| 		ranges; | ||||
| 
 | ||||
| 		ethmac: ethernet@ff3f0000 { | ||||
| 			compatible = "amlogic,meson-axg-dwmac", "snps,dwmac"; | ||||
| 			compatible = "amlogic,meson-axg-dwmac", | ||||
| 				     "snps,dwmac-3.70a", | ||||
| 				     "snps,dwmac"; | ||||
| 			reg = <0x0 0xff3f0000 0x0 0x10000 | ||||
| 			       0x0 0xff634540 0x0 0x8>; | ||||
| 			interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; | ||||
| @ -299,7 +301,7 @@ | ||||
| 				}; | ||||
| 
 | ||||
| 				emmc_pins: emmc { | ||||
| 					mux { | ||||
| 					mux-0 { | ||||
| 						groups = "emmc_nand_d0", | ||||
| 							 "emmc_nand_d1", | ||||
| 							 "emmc_nand_d2", | ||||
| @ -308,14 +310,26 @@ | ||||
| 							 "emmc_nand_d5", | ||||
| 							 "emmc_nand_d6", | ||||
| 							 "emmc_nand_d7", | ||||
| 							 "emmc_clk", | ||||
| 							 "emmc_cmd", | ||||
| 							 "emmc_ds"; | ||||
| 							 "emmc_cmd"; | ||||
| 						function = "emmc"; | ||||
| 						bias-pull-up; | ||||
| 					}; | ||||
| 
 | ||||
| 					mux-1 { | ||||
| 						groups = "emmc_clk"; | ||||
| 						function = "emmc"; | ||||
| 						bias-disable; | ||||
| 					}; | ||||
| 				}; | ||||
| 
 | ||||
| 				emmc_ds_pins: emmc_ds { | ||||
| 					mux { | ||||
| 						groups = "emmc_ds"; | ||||
| 						function = "emmc"; | ||||
| 						bias-pull-down; | ||||
| 					}; | ||||
| 				}; | ||||
| 
 | ||||
| 				emmc_clk_gate_pins: emmc_clk_gate { | ||||
| 					mux { | ||||
| 						groups = "BOOT_8"; | ||||
| @ -559,13 +573,18 @@ | ||||
| 				}; | ||||
| 
 | ||||
| 				sdio_pins: sdio { | ||||
| 					mux { | ||||
| 					mux-0 { | ||||
| 						groups = "sdio_d0", | ||||
| 							 "sdio_d1", | ||||
| 							 "sdio_d2", | ||||
| 							 "sdio_d3", | ||||
| 							 "sdio_cmd", | ||||
| 							 "sdio_clk"; | ||||
| 							 "sdio_cmd"; | ||||
| 						function = "sdio"; | ||||
| 						bias-pull-up; | ||||
| 					}; | ||||
| 
 | ||||
| 					mux-1 { | ||||
| 						groups = "sdio_clk"; | ||||
| 						function = "sdio"; | ||||
| 						bias-disable; | ||||
| 					}; | ||||
|  | ||||
| @ -9,15 +9,12 @@ | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include <dt-bindings/gpio/meson-g12a-gpio.h> | ||||
| #include <dt-bindings/sound/meson-g12a-tohdmitx.h> | ||||
| 
 | ||||
| / { | ||||
| 	compatible = "seirobotics,sei510", "amlogic,g12a"; | ||||
| 	model = "SEI Robotics SEI510"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		serial0 = &uart_AO; | ||||
| 	}; | ||||
| 
 | ||||
| 	adc_keys { | ||||
| 		compatible = "adc-keys"; | ||||
| 		io-channels = <&saradc 0>; | ||||
| @ -31,13 +28,25 @@ | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	ao_5v: regulator-ao_5v { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "AO_5V"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&dc_in>; | ||||
| 		regulator-always-on; | ||||
| 	aliases { | ||||
| 		serial0 = &uart_AO; | ||||
| 		ethernet0 = ðmac; | ||||
| 	}; | ||||
| 
 | ||||
| 	mono_dac: audio-codec-0 { | ||||
| 		compatible = "maxim,max98357a"; | ||||
| 		#sound-dai-cells = <0>; | ||||
| 		sound-name-prefix = "U16"; | ||||
| 		sdmode-gpios = <&gpio GPIOX_8 GPIO_ACTIVE_HIGH>; | ||||
| 	}; | ||||
| 
 | ||||
| 	dmics: audio-codec-1 { | ||||
| 		#sound-dai-cells = <0>; | ||||
| 		compatible = "dmic-codec"; | ||||
| 		num-channels = <2>; | ||||
| 		wakeup-delay-ms = <50>; | ||||
| 		status = "okay"; | ||||
| 		sound-name-prefix = "MIC"; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen { | ||||
| @ -54,21 +63,9 @@ | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	dc_in: regulator-dc_in { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "DC_IN"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		regulator-always-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	emmc_1v8: regulator-emmc_1v8 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "EMMC_1V8"; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 		vin-supply = <&vddao_3v3>; | ||||
| 		regulator-always-on; | ||||
| 	emmc_pwrseq: emmc-pwrseq { | ||||
| 		compatible = "mmc-pwrseq-emmc"; | ||||
| 		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; | ||||
| 	}; | ||||
| 
 | ||||
| 	hdmi-connector { | ||||
| @ -87,12 +84,30 @@ | ||||
| 		reg = <0x0 0x0 0x0 0x40000000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	reserved-memory { | ||||
| 		/* TEE Reserved Memory */ | ||||
| 		bl32_reserved: bl32@5000000 { | ||||
| 			reg = <0x0 0x05300000 0x0 0x2000000>; | ||||
| 			no-map; | ||||
| 		}; | ||||
| 	ao_5v: regulator-ao_5v { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "AO_5V"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&dc_in>; | ||||
| 		regulator-always-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	dc_in: regulator-dc_in { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "DC_IN"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		regulator-always-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	emmc_1v8: regulator-emmc_1v8 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "EMMC_1V8"; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 		vin-supply = <&vddao_3v3>; | ||||
| 		regulator-always-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	vddao_3v3: regulator-vddao_3v3 { | ||||
| @ -122,6 +137,146 @@ | ||||
| 		vin-supply = <&vddao_3v3>; | ||||
| 		regulator-always-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	reserved-memory { | ||||
| 		/* TEE Reserved Memory */ | ||||
| 		bl32_reserved: bl32@5000000 { | ||||
| 			reg = <0x0 0x05300000 0x0 0x2000000>; | ||||
| 			no-map; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	sdio_pwrseq: sdio-pwrseq { | ||||
| 		compatible = "mmc-pwrseq-simple"; | ||||
| 		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; | ||||
| 		clocks = <&wifi32k>; | ||||
| 		clock-names = "ext_clock"; | ||||
| 	}; | ||||
| 
 | ||||
| 	wifi32k: wifi32k { | ||||
| 		compatible = "pwm-clock"; | ||||
| 		#clock-cells = <0>; | ||||
| 		clock-frequency = <32768>; | ||||
| 		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ | ||||
| 	}; | ||||
| 
 | ||||
| 	sound { | ||||
| 		compatible = "amlogic,axg-sound-card"; | ||||
| 		model = "G12A-SEI510"; | ||||
| 		audio-aux-devs = <&tdmout_a>, <&tdmout_b>, | ||||
| 				 <&tdmin_a>, <&tdmin_b>; | ||||
| 		audio-routing = "TDMOUT_A IN 0", "FRDDR_A OUT 0", | ||||
| 				"TDMOUT_A IN 1", "FRDDR_B OUT 0", | ||||
| 				"TDMOUT_A IN 2", "FRDDR_C OUT 0", | ||||
| 				"TDM_A Playback", "TDMOUT_A OUT", | ||||
| 				"TDMOUT_B IN 0", "FRDDR_A OUT 1", | ||||
| 				"TDMOUT_B IN 1", "FRDDR_B OUT 1", | ||||
| 				"TDMOUT_B IN 2", "FRDDR_C OUT 1", | ||||
| 				"TDM_B Playback", "TDMOUT_B OUT", | ||||
| 				"TODDR_A IN 4", "PDM Capture", | ||||
| 				"TODDR_B IN 4", "PDM Capture", | ||||
| 				"TODDR_C IN 4", "PDM Capture", | ||||
| 				"TDMIN_A IN 0", "TDM_A Capture", | ||||
| 				"TDMIN_A IN 3", "TDM_A Loopback", | ||||
| 				"TDMIN_B IN 0", "TDM_A Capture", | ||||
| 				"TDMIN_B IN 3", "TDM_A Loopback", | ||||
| 				"TDMIN_A IN 1", "TDM_B Capture", | ||||
| 				"TDMIN_A IN 4", "TDM_B Loopback", | ||||
| 				"TDMIN_B IN 1", "TDM_B Capture", | ||||
| 				"TDMIN_B IN 4", "TDM_B Loopback", | ||||
| 				"TODDR_A IN 0", "TDMIN_A OUT", | ||||
| 				"TODDR_B IN 0", "TDMIN_A OUT", | ||||
| 				"TODDR_C IN 0", "TDMIN_A OUT", | ||||
| 				"TODDR_A IN 1", "TDMIN_B OUT", | ||||
| 				"TODDR_B IN 1", "TDMIN_B OUT", | ||||
| 				"TODDR_C IN 1", "TDMIN_B OUT"; | ||||
| 
 | ||||
| 		assigned-clocks = <&clkc CLKID_MPLL2>, | ||||
| 				  <&clkc CLKID_MPLL0>, | ||||
| 				  <&clkc CLKID_MPLL1>; | ||||
| 		assigned-clock-parents = <0>, <0>, <0>; | ||||
| 		assigned-clock-rates = <294912000>, | ||||
| 				       <270950400>, | ||||
| 				       <393216000>; | ||||
| 		status = "okay"; | ||||
| 
 | ||||
| 		dai-link-0 { | ||||
| 			sound-dai = <&frddr_a>; | ||||
| 		}; | ||||
| 
 | ||||
| 		dai-link-1 { | ||||
| 			sound-dai = <&frddr_b>; | ||||
| 		}; | ||||
| 
 | ||||
| 		dai-link-2 { | ||||
| 			sound-dai = <&frddr_c>; | ||||
| 		}; | ||||
| 
 | ||||
| 		dai-link-3 { | ||||
| 			sound-dai = <&toddr_a>; | ||||
| 		}; | ||||
| 
 | ||||
| 		dai-link-4 { | ||||
| 			sound-dai = <&toddr_b>; | ||||
| 		}; | ||||
| 
 | ||||
| 		dai-link-5 { | ||||
| 			sound-dai = <&toddr_c>; | ||||
| 		}; | ||||
| 
 | ||||
| 		/* internal speaker interface */ | ||||
| 		dai-link-6 { | ||||
| 			sound-dai = <&tdmif_a>; | ||||
| 			dai-format = "i2s"; | ||||
| 			dai-tdm-slot-tx-mask-0 = <1 1>; | ||||
| 			mclk-fs = <256>; | ||||
| 
 | ||||
| 			codec-0 { | ||||
| 				sound-dai = <&mono_dac>; | ||||
| 			}; | ||||
| 
 | ||||
| 			codec-1 { | ||||
| 				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_A>; | ||||
| 			}; | ||||
| 		}; | ||||
| 
 | ||||
| 		/* 8ch hdmi interface */ | ||||
| 		dai-link-7 { | ||||
| 			sound-dai = <&tdmif_b>; | ||||
| 			dai-format = "i2s"; | ||||
| 			dai-tdm-slot-tx-mask-0 = <1 1>; | ||||
| 			dai-tdm-slot-tx-mask-1 = <1 1>; | ||||
| 			dai-tdm-slot-tx-mask-2 = <1 1>; | ||||
| 			dai-tdm-slot-tx-mask-3 = <1 1>; | ||||
| 			mclk-fs = <256>; | ||||
| 
 | ||||
| 			codec@0 { | ||||
| 				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>; | ||||
| 			}; | ||||
| 		}; | ||||
| 
 | ||||
| 		/* internal digital mics */ | ||||
| 		dai-link-8 { | ||||
| 			sound-dai = <&pdm>; | ||||
| 
 | ||||
| 			codec { | ||||
| 				sound-dai = <&dmics>; | ||||
| 			}; | ||||
| 		}; | ||||
| 
 | ||||
| 		/* hdmi glue */ | ||||
| 		dai-link-9 { | ||||
| 			sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; | ||||
| 
 | ||||
| 			codec { | ||||
| 				sound-dai = <&hdmi_tx>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &arb { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &cec_AO { | ||||
| @ -138,27 +293,32 @@ | ||||
| 	hdmi-phandle = <&hdmi_tx>; | ||||
| }; | ||||
| 
 | ||||
| &clkc_audio { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &cvbs_vdac_port { | ||||
| 	cvbs_vdac_out: endpoint { | ||||
| 		remote-endpoint = <&cvbs_connector_in>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| ðmac { | ||||
| 	status = "okay"; | ||||
| 	vref-supply = <&vddio_ao1v8>; | ||||
| 	phy-handle = <&internal_ephy>; | ||||
| 	phy-mode = "rmii"; | ||||
| }; | ||||
| 
 | ||||
| &uart_A { | ||||
| &frddr_a { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	uart-has-rtscts; | ||||
| }; | ||||
| 
 | ||||
| 	bluetooth { | ||||
| 		compatible = "brcm,bcm43438-bt"; | ||||
| 		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; | ||||
| 	}; | ||||
| &frddr_b { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &frddr_c { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_tx { | ||||
| @ -173,6 +333,163 @@ | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &i2c3 { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| }; | ||||
| 
 | ||||
| &pwm_ef { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&pwm_e_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	clocks = <&xtal>; | ||||
| 	clock-names = "clkin0"; | ||||
| }; | ||||
| 
 | ||||
| &pdm { | ||||
| 	pinctrl-0 = <&pdm_din0_z_pins>, <&pdm_din1_z_pins>, | ||||
| 		    <&pdm_din2_z_pins>, <&pdm_din3_z_pins>, | ||||
| 		    <&pdm_dclk_z_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| 	status = "okay"; | ||||
| 	vref-supply = <&vddio_ao1v8>; | ||||
| }; | ||||
| 
 | ||||
| /* SDIO */ | ||||
| &sd_emmc_a { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&sdio_pins>; | ||||
| 	pinctrl-1 = <&sdio_clk_gate_pins>; | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 	#address-cells = <1>; | ||||
| 	#size-cells = <0>; | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	sd-uhs-sdr50; | ||||
| 	max-frequency = <100000000>; | ||||
| 
 | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	mmc-pwrseq = <&sdio_pwrseq>; | ||||
| 
 | ||||
| 	vmmc-supply = <&vddao_3v3>; | ||||
| 	vqmmc-supply = <&vddio_ao1v8>; | ||||
| 
 | ||||
| 	brcmf: wifi@1 { | ||||
| 		reg = <1>; | ||||
| 		compatible = "brcm,bcm4329-fmac"; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| /* SD card */ | ||||
| &sd_emmc_b { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&sdcard_c_pins>; | ||||
| 	pinctrl-1 = <&sdcard_clk_gate_c_pins>; | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <50000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; | ||||
| 	vmmc-supply = <&vddao_3v3>; | ||||
| 	vqmmc-supply = <&vddao_3v3>; | ||||
| }; | ||||
| 
 | ||||
| /* eMMC */ | ||||
| &sd_emmc_c { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; | ||||
| 	pinctrl-1 = <&emmc_clk_gate_pins>; | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 
 | ||||
| 	bus-width = <8>; | ||||
| 	cap-mmc-highspeed; | ||||
| 	mmc-ddr-1_8v; | ||||
| 	mmc-hs200-1_8v; | ||||
| 	max-frequency = <200000000>; | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	mmc-pwrseq = <&emmc_pwrseq>; | ||||
| 	vmmc-supply = <&vddao_3v3>; | ||||
| 	vqmmc-supply = <&emmc_1v8>; | ||||
| }; | ||||
| 
 | ||||
| &tdmif_a { | ||||
| 	pinctrl-0 = <&tdm_a_dout0_pins>, <&tdm_a_fs_pins>, <&tdm_a_sclk_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "okay"; | ||||
| 
 | ||||
| 	assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD0>, | ||||
| 			  <&clkc_audio AUD_CLKID_TDM_LRCLK_PAD0>; | ||||
| 	assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_A_SCLK>, | ||||
| 				 <&clkc_audio AUD_CLKID_MST_A_LRCLK>; | ||||
| 	assigned-clock-rates = <0>, <0>; | ||||
| }; | ||||
| 
 | ||||
| &tdmif_b { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tdmin_a { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tdmin_b { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tdmout_a { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tdmout_b { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &toddr_a { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &toddr_b { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &toddr_c { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tohdmitx { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart_A { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	uart-has-rtscts; | ||||
| 
 | ||||
| 	bluetooth { | ||||
| 		compatible = "brcm,bcm43438-bt"; | ||||
| 		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; | ||||
| 		max-speed = <2000000>; | ||||
| 		clocks = <&wifi32k>; | ||||
| 		clock-names = "lpo"; | ||||
| 		vbat-supply = <&vddao_3v3>; | ||||
| 		vddio-supply = <&vddio_ao1v8>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &uart_AO { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&uart_ao_a_pins>; | ||||
|  | ||||
| @ -15,14 +15,12 @@ | ||||
| 
 | ||||
| 	aliases { | ||||
| 		serial0 = &uart_AO; | ||||
| 		ethernet0 = ðmac; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen { | ||||
| 		stdout-path = "serial0:115200n8"; | ||||
| 	}; | ||||
| 	memory@0 { | ||||
| 		device_type = "memory"; | ||||
| 		reg = <0x0 0x0 0x0 0x40000000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	cvbs-connector { | ||||
| 		compatible = "composite-video-connector"; | ||||
| @ -34,13 +32,9 @@ | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	flash_1v8: regulator-flash_1v8 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "FLASH_1V8"; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 		vin-supply = <&vcc_3v3>; | ||||
| 		regulator-always-on; | ||||
| 	emmc_pwrseq: emmc-pwrseq { | ||||
| 		compatible = "mmc-pwrseq-emmc"; | ||||
| 		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; | ||||
| 	}; | ||||
| 
 | ||||
| 	hdmi-connector { | ||||
| @ -54,6 +48,20 @@ | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	memory@0 { | ||||
| 		device_type = "memory"; | ||||
| 		reg = <0x0 0x0 0x0 0x40000000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	flash_1v8: regulator-flash_1v8 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "FLASH_1V8"; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 		vin-supply = <&vcc_3v3>; | ||||
| 		regulator-always-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	main_12v: regulator-main_12v { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "12V"; | ||||
| @ -62,6 +70,17 @@ | ||||
| 		regulator-always-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb_pwr_en: regulator-usb_pwr_en { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "USB_PWR_EN"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc_5v>; | ||||
| 
 | ||||
| 		gpio = <&gpio GPIOH_6 GPIO_ACTIVE_HIGH>; | ||||
| 		enable-active-high; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_1v8: regulator-vcc_1v8 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "VCC_1V8"; | ||||
| @ -92,17 +111,6 @@ | ||||
| 		enable-active-high; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb_pwr_en: regulator-usb_pwr_en { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "USB_PWR_EN"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc_5v>; | ||||
| 
 | ||||
| 		gpio = <&gpio GPIOH_6 GPIO_ACTIVE_HIGH>; | ||||
| 		enable-active-high; | ||||
| 	}; | ||||
| 
 | ||||
| 	vddao_1v8: regulator-vddao_1v8 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "VDDAO_1V8"; | ||||
| @ -143,6 +151,12 @@ | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| ðmac { | ||||
| 	status = "okay"; | ||||
| 	phy-handle = <&internal_ephy>; | ||||
| 	phy-mode = "rmii"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_tx { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>; | ||||
| @ -156,6 +170,70 @@ | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &ir { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&remote_input_ao_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| }; | ||||
| 
 | ||||
| /* i2c Touch */ | ||||
| &i2c0 { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&i2c0_sda_z0_pins>, <&i2c0_sck_z1_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| }; | ||||
| 
 | ||||
| /* i2c CM */ | ||||
| &i2c2 { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&i2c2_sda_z_pins>, <&i2c2_sck_z_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| }; | ||||
| 
 | ||||
| /* i2c Audio */ | ||||
| &i2c3 { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| }; | ||||
| 
 | ||||
| /* SD card */ | ||||
| &sd_emmc_b { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&sdcard_c_pins>; | ||||
| 	pinctrl-1 = <&sdcard_clk_gate_c_pins>; | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <50000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; | ||||
| 	vmmc-supply = <&vddao_3v3>; | ||||
| 	vqmmc-supply = <&vddao_3v3>; | ||||
| }; | ||||
| 
 | ||||
| /* eMMC */ | ||||
| &sd_emmc_c { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; | ||||
| 	pinctrl-1 = <&emmc_clk_gate_pins>; | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 
 | ||||
| 	bus-width = <8>; | ||||
| 	cap-mmc-highspeed; | ||||
| 	mmc-ddr-1_8v; | ||||
| 	mmc-hs200-1_8v; | ||||
| 	max-frequency = <200000000>; | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	mmc-pwrseq = <&emmc_pwrseq>; | ||||
| 	vmmc-supply = <&vcc_3v3>; | ||||
| 	vqmmc-supply = <&flash_1v8>; | ||||
| }; | ||||
| 
 | ||||
| &uart_AO { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&uart_ao_a_pins>; | ||||
|  | ||||
| @ -8,6 +8,7 @@ | ||||
| #include "meson-g12a.dtsi" | ||||
| #include <dt-bindings/gpio/gpio.h> | ||||
| #include <dt-bindings/gpio/meson-g12a-gpio.h> | ||||
| #include <dt-bindings/sound/meson-g12a-tohdmitx.h> | ||||
| 
 | ||||
| / { | ||||
| 	compatible = "amediatech,x96-max", "amlogic,u200", "amlogic,g12a"; | ||||
| @ -15,7 +16,16 @@ | ||||
| 
 | ||||
| 	aliases { | ||||
| 		serial0 = &uart_AO; | ||||
| 		ethernet0 = ðmac; | ||||
| 	}; | ||||
| 
 | ||||
| 	spdif_dit: audio-codec-1 { | ||||
| 		#sound-dai-cells = <0>; | ||||
| 		compatible = "linux,spdif-dit"; | ||||
| 		status = "okay"; | ||||
| 		sound-name-prefix = "DIT"; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen { | ||||
| 		stdout-path = "serial0:115200n8"; | ||||
| 	}; | ||||
| @ -45,6 +55,18 @@ | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	emmc_pwrseq: emmc-pwrseq { | ||||
| 		compatible = "mmc-pwrseq-emmc"; | ||||
| 		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; | ||||
| 	}; | ||||
| 
 | ||||
| 	sdio_pwrseq: sdio-pwrseq { | ||||
| 		compatible = "mmc-pwrseq-simple"; | ||||
| 		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; | ||||
| 		clocks = <&wifi32k>; | ||||
| 		clock-names = "ext_clock"; | ||||
| 	}; | ||||
| 
 | ||||
| 	flash_1v8: regulator-flash_1v8 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "FLASH_1V8"; | ||||
| @ -109,6 +131,97 @@ | ||||
| 		vin-supply = <&dc_in>; | ||||
| 		regulator-always-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	sound { | ||||
| 		compatible = "amlogic,axg-sound-card"; | ||||
| 		model = "G12A-X96-MAX"; | ||||
| 		audio-aux-devs = <&tdmout_b>; | ||||
| 		audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1", | ||||
| 				"TDMOUT_B IN 1", "FRDDR_B OUT 1", | ||||
| 				"TDMOUT_B IN 2", "FRDDR_C OUT 1", | ||||
| 				"TDM_B Playback", "TDMOUT_B OUT", | ||||
| 				"SPDIFOUT IN 0", "FRDDR_A OUT 3", | ||||
| 				"SPDIFOUT IN 1", "FRDDR_B OUT 3", | ||||
| 				"SPDIFOUT IN 2", "FRDDR_C OUT 3"; | ||||
| 
 | ||||
| 		assigned-clocks = <&clkc CLKID_MPLL2>, | ||||
| 				  <&clkc CLKID_MPLL0>, | ||||
| 				  <&clkc CLKID_MPLL1>; | ||||
| 		assigned-clock-parents = <0>, <0>, <0>; | ||||
| 		assigned-clock-rates = <294912000>, | ||||
| 				       <270950400>, | ||||
| 				       <393216000>; | ||||
| 		status = "okay"; | ||||
| 
 | ||||
| 		dai-link-0 { | ||||
| 			sound-dai = <&frddr_a>; | ||||
| 		}; | ||||
| 
 | ||||
| 		dai-link-1 { | ||||
| 			sound-dai = <&frddr_b>; | ||||
| 		}; | ||||
| 
 | ||||
| 		dai-link-2 { | ||||
| 			sound-dai = <&frddr_c>; | ||||
| 		}; | ||||
| 
 | ||||
| 		/* 8ch hdmi interface */ | ||||
| 		dai-link-3 { | ||||
| 			sound-dai = <&tdmif_b>; | ||||
| 			dai-format = "i2s"; | ||||
| 			dai-tdm-slot-tx-mask-0 = <1 1>; | ||||
| 			dai-tdm-slot-tx-mask-1 = <1 1>; | ||||
| 			dai-tdm-slot-tx-mask-2 = <1 1>; | ||||
| 			dai-tdm-slot-tx-mask-3 = <1 1>; | ||||
| 			mclk-fs = <256>; | ||||
| 
 | ||||
| 			codec { | ||||
| 				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>; | ||||
| 			}; | ||||
| 		}; | ||||
| 
 | ||||
| 		/* spdif hdmi or toslink interface */ | ||||
| 		dai-link-4 { | ||||
| 			sound-dai = <&spdifout>; | ||||
| 
 | ||||
| 			codec-0 { | ||||
| 				sound-dai = <&spdif_dit>; | ||||
| 			}; | ||||
| 
 | ||||
| 			codec-1 { | ||||
| 				sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_A>; | ||||
| 			}; | ||||
| 		}; | ||||
| 
 | ||||
| 		/* spdif hdmi interface */ | ||||
| 		dai-link-5 { | ||||
| 			sound-dai = <&spdifout_b>; | ||||
| 
 | ||||
| 			codec { | ||||
| 				sound-dai = <&tohdmitx TOHDMITX_SPDIF_IN_B>; | ||||
| 			}; | ||||
| 		}; | ||||
| 
 | ||||
| 		/* hdmi glue */ | ||||
| 		dai-link-6 { | ||||
| 			sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; | ||||
| 
 | ||||
| 			codec { | ||||
| 				sound-dai = <&hdmi_tx>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	wifi32k: wifi32k { | ||||
| 		compatible = "pwm-clock"; | ||||
| 		#clock-cells = <0>; | ||||
| 		clock-frequency = <32768>; | ||||
| 		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &arb { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &cec_AO { | ||||
| @ -125,12 +238,28 @@ | ||||
| 	hdmi-phandle = <&hdmi_tx>; | ||||
| }; | ||||
| 
 | ||||
| &clkc_audio { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &cvbs_vdac_port { | ||||
| 	cvbs_vdac_out: endpoint { | ||||
| 		remote-endpoint = <&cvbs_connector_in>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &frddr_a { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &frddr_b { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &frddr_c { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_tx { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>; | ||||
| @ -144,6 +273,46 @@ | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &ir { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&remote_input_ao_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| }; | ||||
| 
 | ||||
| &ext_mdio { | ||||
| 	external_phy: ethernet-phy@0 { | ||||
| 		/* Realtek RTL8211F (0x001cc916) */ | ||||
| 		reg = <0>; | ||||
| 		max-speed = <1000>; | ||||
| 		eee-broken-1000t; | ||||
| 
 | ||||
| 		reset-assert-us = <10000>; | ||||
| 		reset-deassert-us = <30000>; | ||||
| 		reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; | ||||
| 
 | ||||
| 		interrupt-parent = <&gpio_intc>; | ||||
| 		/* MAC_INTR on GPIOZ_14 */ | ||||
| 		interrupts = <26 IRQ_TYPE_LEVEL_LOW>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| ðmac { | ||||
| 	pinctrl-0 = <ð_pins>, <ð_rgmii_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "okay"; | ||||
| 	phy-mode = "rgmii"; | ||||
| 	phy-handle = <&external_phy>; | ||||
| 	amlogic,tx-delay-ns = <2>; | ||||
| }; | ||||
| 
 | ||||
| &pwm_ef { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&pwm_e_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	clocks = <&xtal>; | ||||
| 	clock-names = "clkin0"; | ||||
| }; | ||||
| 
 | ||||
| &uart_A { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; | ||||
| @ -153,6 +322,9 @@ | ||||
| 	bluetooth { | ||||
| 		compatible = "brcm,bcm43438-bt"; | ||||
| 		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; | ||||
| 		max-speed = <2000000>; | ||||
| 		clocks = <&wifi32k>; | ||||
| 		clock-names = "lpo"; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| @ -166,3 +338,88 @@ | ||||
| 	status = "okay"; | ||||
| 	dr_mode = "host"; | ||||
| }; | ||||
| 
 | ||||
| /* SDIO */ | ||||
| &sd_emmc_a { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&sdio_pins>; | ||||
| 	pinctrl-1 = <&sdio_clk_gate_pins>; | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 	#address-cells = <1>; | ||||
| 	#size-cells = <0>; | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	sd-uhs-sdr50; | ||||
| 	max-frequency = <100000000>; | ||||
| 
 | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	mmc-pwrseq = <&sdio_pwrseq>; | ||||
| 
 | ||||
| 	vmmc-supply = <&vddao_3v3>; | ||||
| 	vqmmc-supply = <&vddao_1v8>; | ||||
| 
 | ||||
| 	brcmf: wifi@1 { | ||||
| 		reg = <1>; | ||||
| 		compatible = "brcm,bcm4329-fmac"; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| /* SD card */ | ||||
| &sd_emmc_b { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&sdcard_c_pins>; | ||||
| 	pinctrl-1 = <&sdcard_clk_gate_c_pins>; | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; | ||||
| 	vmmc-supply = <&vddao_3v3>; | ||||
| 	vqmmc-supply = <&vddao_3v3>; | ||||
| }; | ||||
| 
 | ||||
| /* eMMC */ | ||||
| &sd_emmc_c { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; | ||||
| 	pinctrl-1 = <&emmc_clk_gate_pins>; | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 
 | ||||
| 	bus-width = <8>; | ||||
| 	cap-mmc-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	mmc-pwrseq = <&emmc_pwrseq>; | ||||
| 	vmmc-supply = <&vcc_3v3>; | ||||
| 	vqmmc-supply = <&flash_1v8>; | ||||
| }; | ||||
| 
 | ||||
| &spdifout { | ||||
| 	pinctrl-0 = <&spdif_out_h_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &spdifout_b { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tdmif_b { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tdmout_b { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tohdmitx { | ||||
| 	status = "okay"; | ||||
| }; | ||||
|  | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										386
									
								
								arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										386
									
								
								arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,386 @@ | ||||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| /* | ||||
|  * Copyright (c) 2019 BayLibre, SAS | ||||
|  * Author: Neil Armstrong <narmstrong@baylibre.com> | ||||
|  */ | ||||
| 
 | ||||
| /dts-v1/; | ||||
| 
 | ||||
| #include "meson-g12b.dtsi" | ||||
| #include <dt-bindings/input/input.h> | ||||
| #include <dt-bindings/gpio/meson-g12a-gpio.h> | ||||
| #include <dt-bindings/sound/meson-g12a-tohdmitx.h> | ||||
| 
 | ||||
| / { | ||||
| 	compatible = "hardkernel,odroid-n2", "amlogic,g12b"; | ||||
| 	model = "Hardkernel ODROID-N2"; | ||||
| 
 | ||||
| 	aliases { | ||||
| 		serial0 = &uart_AO; | ||||
| 		ethernet0 = ðmac; | ||||
| 	}; | ||||
| 
 | ||||
| 	chosen { | ||||
| 		stdout-path = "serial0:115200n8"; | ||||
| 	}; | ||||
| 
 | ||||
| 	memory@0 { | ||||
| 		device_type = "memory"; | ||||
| 		reg = <0x0 0x0 0x0 0x40000000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	emmc_pwrseq: emmc-pwrseq { | ||||
| 		compatible = "mmc-pwrseq-emmc"; | ||||
| 		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>; | ||||
| 	}; | ||||
| 
 | ||||
| 	leds { | ||||
| 		compatible = "gpio-leds"; | ||||
| 
 | ||||
| 		blue { | ||||
| 			label = "n2:blue"; | ||||
| 			gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>; | ||||
| 			linux,default-trigger = "heartbeat"; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	tflash_vdd: regulator-tflash_vdd { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 
 | ||||
| 		regulator-name = "TFLASH_VDD"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 		gpio = <&gpio_ao GPIOAO_8 GPIO_ACTIVE_HIGH>; | ||||
| 		enable-active-high; | ||||
| 	}; | ||||
| 
 | ||||
| 	tf_io: gpio-regulator-tf_io { | ||||
| 		compatible = "regulator-gpio"; | ||||
| 
 | ||||
| 		regulator-name = "TF_IO"; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 
 | ||||
| 		gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>; | ||||
| 		gpios-states = <0>; | ||||
| 
 | ||||
| 		states = <3300000 0 | ||||
| 			  1800000 1>; | ||||
| 	}; | ||||
| 
 | ||||
| 	flash_1v8: regulator-flash_1v8 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "FLASH_1V8"; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 		vin-supply = <&vcc_3v3>; | ||||
| 		regulator-always-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	main_12v: regulator-main_12v { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "12V"; | ||||
| 		regulator-min-microvolt = <12000000>; | ||||
| 		regulator-max-microvolt = <12000000>; | ||||
| 		regulator-always-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_5v: regulator-vcc_5v { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "5V"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		regulator-always-on; | ||||
| 		vin-supply = <&main_12v>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_1v8: regulator-vcc_1v8 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "VCC_1V8"; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 		vin-supply = <&vcc_3v3>; | ||||
| 		regulator-always-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_3v3: regulator-vcc_3v3 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "VCC_3V3"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&vddao_3v3>; | ||||
| 		regulator-always-on; | ||||
| 		/* FIXME: actually controlled by VDDCPU_B_EN */ | ||||
| 	}; | ||||
| 
 | ||||
| 	hub_5v: regulator-hub_5v { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "HUB_5V"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc_5v>; | ||||
| 
 | ||||
| 		/* Connected to the Hub CHIPENABLE, LOW sets low power state */ | ||||
| 		gpio = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>; | ||||
| 		enable-active-high; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb_pwr_en: regulator-usb_pwr_en { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "USB_PWR_EN"; | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| 		vin-supply = <&vcc_5v>; | ||||
| 
 | ||||
| 		/* Connected to the microUSB port power enable */ | ||||
| 		gpio = <&gpio GPIOH_6 GPIO_ACTIVE_HIGH>; | ||||
| 		enable-active-high; | ||||
| 	}; | ||||
| 
 | ||||
| 	vddao_1v8: regulator-vddao_1v8 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "VDDAO_1V8"; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 		vin-supply = <&vddao_3v3>; | ||||
| 		regulator-always-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	vddao_3v3: regulator-vddao_3v3 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "VDDAO_3V3"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		vin-supply = <&main_12v>; | ||||
| 		regulator-always-on; | ||||
| 	}; | ||||
| 
 | ||||
| 	hdmi-connector { | ||||
| 		compatible = "hdmi-connector"; | ||||
| 		type = "a"; | ||||
| 
 | ||||
| 		port { | ||||
| 			hdmi_connector_in: endpoint { | ||||
| 				remote-endpoint = <&hdmi_tx_tmds_out>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	sound { | ||||
| 		compatible = "amlogic,axg-sound-card"; | ||||
| 		model = "G12A-ODROIDN2"; | ||||
| 		audio-aux-devs = <&tdmout_b>; | ||||
| 		audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1", | ||||
| 				"TDMOUT_B IN 1", "FRDDR_B OUT 1", | ||||
| 				"TDMOUT_B IN 2", "FRDDR_C OUT 1", | ||||
| 				"TDM_B Playback", "TDMOUT_B OUT"; | ||||
| 
 | ||||
| 		assigned-clocks = <&clkc CLKID_MPLL2>, | ||||
| 				  <&clkc CLKID_MPLL0>, | ||||
| 				  <&clkc CLKID_MPLL1>; | ||||
| 		assigned-clock-parents = <0>, <0>, <0>; | ||||
| 		assigned-clock-rates = <294912000>, | ||||
| 				       <270950400>, | ||||
| 				       <393216000>; | ||||
| 		status = "okay"; | ||||
| 
 | ||||
| 		dai-link-0 { | ||||
| 			sound-dai = <&frddr_a>; | ||||
| 		}; | ||||
| 
 | ||||
| 		dai-link-1 { | ||||
| 			sound-dai = <&frddr_b>; | ||||
| 		}; | ||||
| 
 | ||||
| 		dai-link-2 { | ||||
| 			sound-dai = <&frddr_c>; | ||||
| 		}; | ||||
| 
 | ||||
| 		/* 8ch hdmi interface */ | ||||
| 		dai-link-3 { | ||||
| 			sound-dai = <&tdmif_b>; | ||||
| 			dai-format = "i2s"; | ||||
| 			dai-tdm-slot-tx-mask-0 = <1 1>; | ||||
| 			dai-tdm-slot-tx-mask-1 = <1 1>; | ||||
| 			dai-tdm-slot-tx-mask-2 = <1 1>; | ||||
| 			dai-tdm-slot-tx-mask-3 = <1 1>; | ||||
| 			mclk-fs = <256>; | ||||
| 
 | ||||
| 			codec { | ||||
| 				sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>; | ||||
| 			}; | ||||
| 		}; | ||||
| 
 | ||||
| 		/* hdmi glue */ | ||||
| 		dai-link-4 { | ||||
| 			sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>; | ||||
| 
 | ||||
| 			codec { | ||||
| 				sound-dai = <&hdmi_tx>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &arb { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &cec_AO { | ||||
| 	pinctrl-0 = <&cec_ao_a_h_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "disabled"; | ||||
| 	hdmi-phandle = <&hdmi_tx>; | ||||
| }; | ||||
| 
 | ||||
| &cecb_AO { | ||||
| 	pinctrl-0 = <&cec_ao_b_h_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "okay"; | ||||
| 	hdmi-phandle = <&hdmi_tx>; | ||||
| }; | ||||
| 
 | ||||
| &clkc_audio { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &ext_mdio { | ||||
| 	external_phy: ethernet-phy@0 { | ||||
| 		/* Realtek RTL8211F (0x001cc916) */	 | ||||
| 		reg = <0>; | ||||
| 		max-speed = <1000>; | ||||
| 
 | ||||
| 		reset-assert-us = <10000>; | ||||
| 		reset-deassert-us = <30000>; | ||||
| 		reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>; | ||||
| 
 | ||||
| 		interrupt-parent = <&gpio_intc>; | ||||
| 		/* MAC_INTR on GPIOZ_14 */ | ||||
| 		interrupts = <26 IRQ_TYPE_LEVEL_LOW>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| ðmac { | ||||
| 	pinctrl-0 = <ð_pins>, <ð_rgmii_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	status = "okay"; | ||||
| 	phy-mode = "rgmii"; | ||||
| 	phy-handle = <&external_phy>; | ||||
| 	amlogic,tx-delay-ns = <2>; | ||||
| }; | ||||
| 
 | ||||
| &frddr_a { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &frddr_b { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &frddr_c { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &gpio { | ||||
| 	/* | ||||
| 	 * WARNING: The USB Hub on the Odroid-N2 needs a reset signal | ||||
| 	 * to be turned high in order to be detected by the USB Controller | ||||
| 	 * This signal should be handled by a USB specific power sequence | ||||
| 	 * in order to reset the Hub when USB bus is powered down. | ||||
| 	 */ | ||||
| 	usb-hub { | ||||
| 		gpio-hog; | ||||
| 		gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>; | ||||
| 		output-high; | ||||
| 		line-name = "usb-hub-reset"; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_tx { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	hdmi-supply = <&vcc_5v>; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_tx_tmds_port { | ||||
| 	hdmi_tx_tmds_out: endpoint { | ||||
| 		remote-endpoint = <&hdmi_connector_in>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &ir { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&remote_input_ao_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| }; | ||||
| 
 | ||||
| /* SD card */ | ||||
| &sd_emmc_b { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&sdcard_c_pins>; | ||||
| 	pinctrl-1 = <&sdcard_clk_gate_c_pins>; | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <50000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>; | ||||
| 	vmmc-supply = <&tflash_vdd>; | ||||
| 	vqmmc-supply = <&tf_io>; | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| /* eMMC */ | ||||
| &sd_emmc_c { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; | ||||
| 	pinctrl-1 = <&emmc_clk_gate_pins>; | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 
 | ||||
| 	bus-width = <8>; | ||||
| 	cap-mmc-highspeed; | ||||
| 	mmc-ddr-1_8v; | ||||
| 	mmc-hs200-1_8v; | ||||
| 	max-frequency = <200000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	mmc-pwrseq = <&emmc_pwrseq>; | ||||
| 	vmmc-supply = <&vcc_3v3>; | ||||
| 	vqmmc-supply = <&flash_1v8>; | ||||
| }; | ||||
| 
 | ||||
| &tdmif_b { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tdmout_b { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &tohdmitx { | ||||
| 	status = "okay"; | ||||
| }; | ||||
| 
 | ||||
| &uart_AO { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&uart_ao_a_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| }; | ||||
| 
 | ||||
| &usb { | ||||
| 	status = "okay"; | ||||
| 	vbus-supply = <&usb_pwr_en>; | ||||
| }; | ||||
| 
 | ||||
| &usb2_phy0 { | ||||
| 	phy-supply = <&vcc_5v>; | ||||
| }; | ||||
| 
 | ||||
| &usb2_phy1 { | ||||
| 	/* Enable the hub which is connected to this port */ | ||||
| 	phy-supply = <&hub_5v>; | ||||
| }; | ||||
							
								
								
									
										82
									
								
								arch/arm64/boot/dts/amlogic/meson-g12b.dtsi
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								arch/arm64/boot/dts/amlogic/meson-g12b.dtsi
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,82 @@ | ||||
| // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||||
| /* | ||||
|  * Copyright (c) 2019 BayLibre, SAS | ||||
|  * Author: Neil Armstrong <narmstrong@baylibre.com> | ||||
|  */ | ||||
| 
 | ||||
| #include "meson-g12a.dtsi" | ||||
| 
 | ||||
| / { | ||||
| 	compatible = "amlogic,g12b"; | ||||
| 
 | ||||
| 	cpus { | ||||
| 		cpu-map { | ||||
| 			cluster0 { | ||||
| 				core0 { | ||||
| 					cpu = <&cpu0>; | ||||
| 				}; | ||||
| 
 | ||||
| 				core1 { | ||||
| 					cpu = <&cpu1>; | ||||
| 				}; | ||||
| 			}; | ||||
| 
 | ||||
| 			cluster1 { | ||||
| 				core0 { | ||||
| 					cpu = <&cpu100>; | ||||
| 				}; | ||||
| 
 | ||||
| 				core1 { | ||||
| 					cpu = <&cpu101>; | ||||
| 				}; | ||||
| 
 | ||||
| 				core2 { | ||||
| 					cpu = <&cpu102>; | ||||
| 				}; | ||||
| 
 | ||||
| 				core3 { | ||||
| 					cpu = <&cpu103>; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
| 
 | ||||
| 		/delete-node/ cpu@2; | ||||
| 		/delete-node/ cpu@3; | ||||
| 
 | ||||
| 		cpu100: cpu@100 { | ||||
| 			device_type = "cpu"; | ||||
| 			compatible = "arm,cortex-a73"; | ||||
| 			reg = <0x0 0x100>; | ||||
| 			enable-method = "psci"; | ||||
| 			next-level-cache = <&l2>; | ||||
| 		}; | ||||
| 
 | ||||
| 		cpu101: cpu@101 { | ||||
| 			device_type = "cpu"; | ||||
| 			compatible = "arm,cortex-a73"; | ||||
| 			reg = <0x0 0x101>; | ||||
| 			enable-method = "psci"; | ||||
| 			next-level-cache = <&l2>; | ||||
| 		}; | ||||
| 
 | ||||
| 		cpu102: cpu@102 { | ||||
| 			device_type = "cpu"; | ||||
| 			compatible = "arm,cortex-a73"; | ||||
| 			reg = <0x0 0x102>; | ||||
| 			enable-method = "psci"; | ||||
| 			next-level-cache = <&l2>; | ||||
| 		}; | ||||
| 
 | ||||
| 		cpu103: cpu@103 { | ||||
| 			device_type = "cpu"; | ||||
| 			compatible = "arm,cortex-a73"; | ||||
| 			reg = <0x0 0x103>; | ||||
| 			enable-method = "psci"; | ||||
| 			next-level-cache = <&l2>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &clkc { | ||||
| 	compatible = "amlogic,g12b-clkc"; | ||||
| }; | ||||
| @ -164,7 +164,7 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 
 | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
| @ -184,7 +184,7 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; | ||||
|  | ||||
| @ -486,7 +486,9 @@ | ||||
| 		}; | ||||
| 
 | ||||
| 		ethmac: ethernet@c9410000 { | ||||
| 			compatible = "amlogic,meson-gx-dwmac", "amlogic,meson-gxbb-dwmac", "snps,dwmac"; | ||||
| 			compatible = "amlogic,meson-gxbb-dwmac", | ||||
| 				     "snps,dwmac-3.70a", | ||||
| 				     "snps,dwmac"; | ||||
| 			reg = <0x0 0xc9410000 0x0 0x10000 | ||||
| 			       0x0 0xc8834540 0x0 0x4>; | ||||
| 			interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; | ||||
|  | ||||
| @ -154,10 +154,6 @@ | ||||
| 
 | ||||
| 	amlogic,tx-delay-ns = <2>; | ||||
| 
 | ||||
| 	snps,reset-gpio = <&gpio GPIOZ_14 0>; | ||||
| 	snps,reset-delays-us = <0 10000 1000000>; | ||||
| 	snps,reset-active-low; | ||||
| 
 | ||||
| 	mdio { | ||||
| 		compatible = "snps,dwmac-mdio"; | ||||
| 		#address-cells = <1>; | ||||
| @ -166,6 +162,11 @@ | ||||
| 		eth_phy0: ethernet-phy@0 { | ||||
| 			/* Realtek RTL8211F (0x001cc916) */ | ||||
| 			reg = <0>; | ||||
| 
 | ||||
| 			reset-assert-us = <10000>; | ||||
| 			reset-deassert-us = <30000>; | ||||
| 			reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; | ||||
| 
 | ||||
| 			interrupt-parent = <&gpio_intc>; | ||||
| 			/* MAC_INTR on GPIOZ_15 */ | ||||
| 			interrupts = <29 IRQ_TYPE_LEVEL_LOW>; | ||||
| @ -273,7 +274,7 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <200000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 
 | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
| @ -301,8 +302,8 @@ | ||||
| 	sd-uhs-sdr12; | ||||
| 	sd-uhs-sdr25; | ||||
| 	sd-uhs-sdr50; | ||||
| 	sd-uhs-sdr104; | ||||
| 	max-frequency = <200000000>; | ||||
| 	sd-uhs-ddr50; | ||||
| 	max-frequency = <100000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; | ||||
|  | ||||
| @ -162,10 +162,6 @@ | ||||
| 	phy-handle = <ð_phy0>; | ||||
| 	phy-mode = "rmii"; | ||||
| 
 | ||||
| 	snps,reset-gpio = <&gpio GPIOZ_14 0>; | ||||
| 	snps,reset-delays-us = <0 10000 1000000>; | ||||
| 	snps,reset-active-low; | ||||
| 
 | ||||
| 	mdio { | ||||
| 		compatible = "snps,dwmac-mdio"; | ||||
| 		#address-cells = <1>; | ||||
| @ -174,6 +170,10 @@ | ||||
| 		eth_phy0: ethernet-phy@0 { | ||||
| 			/* IC Plus IP101GR (0x02430c54) */ | ||||
| 			reg = <0>; | ||||
| 
 | ||||
| 			reset-assert-us = <10000>; | ||||
| 			reset-deassert-us = <10000>; | ||||
| 			reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| @ -235,7 +235,7 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; | ||||
|  | ||||
| @ -126,10 +126,6 @@ | ||||
| 	phy-handle = <ð_phy0>; | ||||
| 	phy-mode = "rgmii"; | ||||
| 
 | ||||
| 	snps,reset-gpio = <&gpio GPIOZ_14 0>; | ||||
| 	snps,reset-delays-us = <0 10000 1000000>; | ||||
| 	snps,reset-active-low; | ||||
| 
 | ||||
| 	amlogic,tx-delay-ns = <2>; | ||||
| 
 | ||||
| 	mdio { | ||||
| @ -140,6 +136,11 @@ | ||||
| 		eth_phy0: ethernet-phy@0 { | ||||
| 			/* Realtek RTL8211F (0x001cc916) */ | ||||
| 			reg = <0>; | ||||
| 
 | ||||
| 			reset-assert-us = <10000>; | ||||
| 			reset-deassert-us = <30000>; | ||||
| 			reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; | ||||
| 
 | ||||
| 			interrupt-parent = <&gpio_intc>; | ||||
| 			/* MAC_INTR on GPIOZ_15 */ | ||||
| 			interrupts = <29 IRQ_TYPE_LEVEL_LOW>; | ||||
| @ -255,6 +256,10 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	sd-uhs-sdr12; | ||||
| 	sd-uhs-sdr25; | ||||
| 	sd-uhs-sdr50; | ||||
| 	sd-uhs-ddr50; | ||||
| 	max-frequency = <100000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| @ -272,7 +277,7 @@ | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 
 | ||||
| 	bus-width = <8>; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <200000000>; | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
| 	cap-mmc-highspeed; | ||||
|  | ||||
| @ -68,10 +68,6 @@ | ||||
| 
 | ||||
| 	amlogic,tx-delay-ns = <2>; | ||||
| 
 | ||||
| 	snps,reset-gpio = <&gpio GPIOZ_14 0>; | ||||
| 	snps,reset-delays-us = <0 10000 1000000>; | ||||
| 	snps,reset-active-low; | ||||
| 
 | ||||
| 	mdio { | ||||
| 		compatible = "snps,dwmac-mdio"; | ||||
| 		#address-cells = <1>; | ||||
| @ -80,6 +76,11 @@ | ||||
| 		eth_phy0: ethernet-phy@3 { | ||||
| 			/* Micrel KSZ9031 (0x00221620) */ | ||||
| 			reg = <3>; | ||||
| 
 | ||||
| 			reset-assert-us = <10000>; | ||||
| 			reset-deassert-us = <30000>; | ||||
| 			reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; | ||||
| 
 | ||||
| 			interrupt-parent = <&gpio_intc>; | ||||
| 			/* MAC_INTR on GPIOZ_15 */ | ||||
| 			interrupts = <29 IRQ_TYPE_LEVEL_LOW>; | ||||
|  | ||||
| @ -165,7 +165,7 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 
 | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
|  | ||||
| @ -28,10 +28,10 @@ | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	usb_vbus: regulator-usb0-vbus { | ||||
| 	usb_pwr: regulator-usb-pwrs { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 
 | ||||
| 		regulator-name = "USB0_VBUS"; | ||||
| 		regulator-name = "USB_PWR"; | ||||
| 
 | ||||
| 		regulator-min-microvolt = <5000000>; | ||||
| 		regulator-max-microvolt = <5000000>; | ||||
| @ -40,6 +40,27 @@ | ||||
| 		enable-active-high; | ||||
| 	}; | ||||
| 
 | ||||
| 	vddio_boot: regulator-vddio_boot { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "VDDIO_BOOT"; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vddao_3v3: regulator-vddao_3v3 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "VDDAO_3V3"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vddio_ao18: regulator-vddio_ao18 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "VDDIO_AO18"; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_3v3: regulator-vcc_3v3 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "VCC_3V3"; | ||||
| @ -47,13 +68,6 @@ | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_1v8: regulator-vcc_1v8 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "VCC_1V8"; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	emmc_pwrseq: emmc-pwrseq { | ||||
| 		compatible = "mmc-pwrseq-emmc"; | ||||
| 		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; | ||||
| @ -66,15 +80,32 @@ | ||||
| 		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */ | ||||
| 	}; | ||||
| 
 | ||||
| 	hdmi-connector { | ||||
| 		compatible = "hdmi-connector"; | ||||
| 		type = "a"; | ||||
| 
 | ||||
| 		port { | ||||
| 			hdmi_connector_in: endpoint { | ||||
| 				remote-endpoint = <&hdmi_tx_tmds_out>; | ||||
| 			}; | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	sdio_pwrseq: sdio-pwrseq { | ||||
| 		compatible = "mmc-pwrseq-simple"; | ||||
| 		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>, | ||||
| 				<&gpio GPIOX_20 GPIO_ACTIVE_LOW>; | ||||
| 		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; | ||||
| 		clocks = <&wifi32k>; | ||||
| 		clock-names = "ext_clock"; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &cec_AO { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&ao_cec_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	hdmi-phandle = <&hdmi_tx>; | ||||
| }; | ||||
| 
 | ||||
| ðmac { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <ð_rgmii_pins>; | ||||
| @ -85,10 +116,6 @@ | ||||
| 
 | ||||
| 	amlogic,tx-delay-ns = <2>; | ||||
| 
 | ||||
| 	snps,reset-gpio = <&gpio GPIOZ_14 0>; | ||||
| 	snps,reset-delays-us = <0 10000 1000000>; | ||||
| 	snps,reset-active-low; | ||||
| 
 | ||||
| 	mdio { | ||||
| 		compatible = "snps,dwmac-mdio"; | ||||
| 		#address-cells = <1>; | ||||
| @ -97,10 +124,30 @@ | ||||
| 		eth_phy0: ethernet-phy@0 { | ||||
| 			/* Realtek RTL8211F (0x001cc916) */ | ||||
| 			reg = <0>; | ||||
| 
 | ||||
| 			reset-assert-us = <10000>; | ||||
| 			reset-deassert-us = <30000>; | ||||
| 			reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; | ||||
| 
 | ||||
| 			interrupt-parent = <&gpio_intc>; | ||||
| 			/* MAC_INTR on GPIOZ_15 */ | ||||
| 			interrupts = <29 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_tx { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| }; | ||||
| 
 | ||||
| &hdmi_tx_tmds_port { | ||||
| 	hdmi_tx_tmds_out: endpoint { | ||||
| 		remote-endpoint = <&hdmi_connector_in>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| &ir { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&remote_input_ao_pins>; | ||||
| @ -115,10 +162,15 @@ | ||||
| 	clock-names = "clkin0"; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| 	status = "okay"; | ||||
| 	vref-supply = <&vddio_ao18>; | ||||
| }; | ||||
| 
 | ||||
| /* Wireless SDIO Module */ | ||||
| &sd_emmc_a { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&sdio_pins &sdio_irq_pins>; | ||||
| 	pinctrl-0 = <&sdio_pins>; | ||||
| 	pinctrl-1 = <&sdio_clk_gate_pins>; | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 	#address-cells = <1>; | ||||
| @ -126,15 +178,15 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 
 | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	mmc-pwrseq = <&sdio_pwrseq>; | ||||
| 
 | ||||
| 	vmmc-supply = <&vcc_3v3>; | ||||
| 	vqmmc-supply = <&vcc_1v8>; | ||||
| 	vmmc-supply = <&vddao_3v3>; | ||||
| 	vqmmc-supply = <&vddio_boot>; | ||||
| 
 | ||||
| 	brcmf: wifi@1 { | ||||
| 		reg = <1>; | ||||
| @ -151,12 +203,13 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; | ||||
| 
 | ||||
| 	vmmc-supply = <&vcc_3v3>; | ||||
| 	vmmc-supply = <&vddao_3v3>; | ||||
| 	vqmmc-supply = <&vcc_3v3>; | ||||
| }; | ||||
| 
 | ||||
| /* eMMC */ | ||||
| @ -176,9 +229,22 @@ | ||||
| 
 | ||||
| 	mmc-pwrseq = <&emmc_pwrseq>; | ||||
| 	vmmc-supply = <&vcc_3v3>; | ||||
| 	vmmcq-sumpply = <&vcc_1v8>; | ||||
| 	vqmmc-supply = <&vddio_boot>; | ||||
| }; | ||||
| 
 | ||||
| /* This is connected to the Bluetooth module: */ | ||||
| &uart_A { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 
 | ||||
| 	bluetooth { | ||||
| 		compatible = "brcm,bcm43438-bt"; | ||||
| 		shutdown-gpios = <&gpio GPIOX_20 GPIO_ACTIVE_HIGH>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| /* This UART is brought out to the DB9 connector */ | ||||
| &uart_AO { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&uart_ao_a_pins>; | ||||
| @ -187,7 +253,7 @@ | ||||
| 
 | ||||
| &usb0_phy { | ||||
| 	status = "okay"; | ||||
| 	phy-supply = <&usb_vbus>; | ||||
| 	phy-supply = <&usb_pwr>; | ||||
| }; | ||||
| 
 | ||||
| &usb1_phy { | ||||
|  | ||||
| @ -59,6 +59,13 @@ | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vddio_ao18: regulator-vddio_ao18 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "VDDIO_AO18"; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	vcc_3v3: regulator-vcc_3v3 { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "VCC_3V3"; | ||||
| @ -130,10 +137,6 @@ | ||||
| 
 | ||||
| 	amlogic,tx-delay-ns = <2>; | ||||
| 
 | ||||
| 	snps,reset-gpio = <&gpio GPIOZ_14 0>; | ||||
| 	snps,reset-delays-us = <0 10000 1000000>; | ||||
| 	snps,reset-active-low; | ||||
| 
 | ||||
| 	mdio { | ||||
| 		compatible = "snps,dwmac-mdio"; | ||||
| 		#address-cells = <1>; | ||||
| @ -142,6 +145,10 @@ | ||||
| 		eth_phy0: ethernet-phy@0 { | ||||
| 			/* Realtek RTL8211F (0x001cc916) */ | ||||
| 			reg = <0>; | ||||
| 
 | ||||
| 			reset-assert-us = <10000>; | ||||
| 			reset-deassert-us = <30000>; | ||||
| 			reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; | ||||
| 		}; | ||||
| 	}; | ||||
| }; | ||||
| @ -172,6 +179,11 @@ | ||||
| 	clock-names = "clkin0"; | ||||
| }; | ||||
| 
 | ||||
| &saradc { | ||||
| 	status = "okay"; | ||||
| 	vref-supply = <&vddio_ao18>; | ||||
| }; | ||||
| 
 | ||||
| /* Wireless SDIO Module */ | ||||
| &sd_emmc_a { | ||||
| 	status = "okay"; | ||||
| @ -183,7 +195,7 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 
 | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
| @ -208,7 +220,7 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; | ||||
| @ -237,6 +249,19 @@ | ||||
| 	vqmmc-supply = <&vddio_boot>; | ||||
| }; | ||||
| 
 | ||||
| /* This is connected to the Bluetooth module: */ | ||||
| &uart_A { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	uart-has-rtscts; | ||||
| 
 | ||||
| 	bluetooth { | ||||
| 		compatible = "brcm,bcm43438-bt"; | ||||
| 		shutdown-gpios = <&gpio GPIOX_20 GPIO_ACTIVE_HIGH>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| /* This UART is brought out to the DB9 connector */ | ||||
| &uart_AO { | ||||
| 	status = "okay"; | ||||
|  | ||||
| @ -381,10 +381,15 @@ | ||||
| 		}; | ||||
| 
 | ||||
| 		emmc_pins: emmc { | ||||
| 			mux { | ||||
| 			mux-0 { | ||||
| 				groups = "emmc_nand_d07", | ||||
| 				       "emmc_cmd", | ||||
| 				       "emmc_clk"; | ||||
| 				       "emmc_cmd"; | ||||
| 				function = "emmc"; | ||||
| 				bias-pull-up; | ||||
| 			}; | ||||
| 
 | ||||
| 			mux-1 { | ||||
| 				groups = "emmc_clk"; | ||||
| 				function = "emmc"; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
| @ -394,7 +399,7 @@ | ||||
| 			mux { | ||||
| 				groups = "emmc_ds"; | ||||
| 				function = "emmc"; | ||||
| 				bias-disable; | ||||
| 				bias-pull-down; | ||||
| 			}; | ||||
| 		}; | ||||
| 
 | ||||
| @ -436,13 +441,18 @@ | ||||
| 		}; | ||||
| 
 | ||||
| 		sdcard_pins: sdcard { | ||||
| 			mux { | ||||
| 			mux-0 { | ||||
| 				groups = "sdcard_d0", | ||||
| 				       "sdcard_d1", | ||||
| 				       "sdcard_d2", | ||||
| 				       "sdcard_d3", | ||||
| 				       "sdcard_cmd", | ||||
| 				       "sdcard_clk"; | ||||
| 				       "sdcard_cmd"; | ||||
| 				function = "sdcard"; | ||||
| 				bias-pull-up; | ||||
| 			}; | ||||
| 
 | ||||
| 			mux-1 { | ||||
| 				groups = "sdcard_clk"; | ||||
| 				function = "sdcard"; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
| @ -457,13 +467,18 @@ | ||||
| 		}; | ||||
| 
 | ||||
| 		sdio_pins: sdio { | ||||
| 			mux { | ||||
| 			mux-0 { | ||||
| 				groups = "sdio_d0", | ||||
| 				       "sdio_d1", | ||||
| 				       "sdio_d2", | ||||
| 				       "sdio_d3", | ||||
| 				       "sdio_cmd", | ||||
| 				       "sdio_clk"; | ||||
| 				       "sdio_cmd"; | ||||
| 				function = "sdio"; | ||||
| 				bias-pull-up; | ||||
| 			}; | ||||
| 
 | ||||
| 			mux-1 { | ||||
| 				groups = "sdio_clk"; | ||||
| 				function = "sdio"; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
|  | ||||
| @ -160,7 +160,7 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 
 | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
|  | ||||
| @ -70,20 +70,21 @@ | ||||
| 
 | ||||
| 	amlogic,tx-delay-ns = <2>; | ||||
| 
 | ||||
| 	/* External PHY reset is shared with internal PHY Led signals */ | ||||
| 	snps,reset-gpio = <&gpio GPIOZ_14 0>; | ||||
| 	snps,reset-delays-us = <0 10000 1000000>; | ||||
| 	snps,reset-active-low; | ||||
| 
 | ||||
| 	/* External PHY is in RGMII */ | ||||
| 	phy-mode = "rgmii"; | ||||
| }; | ||||
| 
 | ||||
| &external_mdio { | ||||
| 	external_phy: ethernet-phy@0 { | ||||
| 		compatible = "ethernet-phy-id001c.c916", "ethernet-phy-ieee802.3-c22"; | ||||
| 		/* Realtek RTL8211F (0x001cc916) */ | ||||
| 		reg = <0>; | ||||
| 		max-speed = <1000>; | ||||
| 
 | ||||
| 		/* External PHY reset is shared with internal PHY Led signal */ | ||||
| 		reset-assert-us = <10000>; | ||||
| 		reset-deassert-us = <30000>; | ||||
| 		reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; | ||||
| 
 | ||||
| 		interrupt-parent = <&gpio_intc>; | ||||
| 		interrupts = <29 IRQ_TYPE_LEVEL_LOW>; | ||||
| 		eee-broken-1000t; | ||||
|  | ||||
| @ -115,11 +115,13 @@ | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 	}; | ||||
| 
 | ||||
| 	/* This is provided by LDOs on the eMMC daugther card */ | ||||
| 	vddio_boot: regulator-vddio_boot { | ||||
| 		compatible = "regulator-fixed"; | ||||
| 		regulator-name = "VDDIO_BOOT"; | ||||
| 		regulator-min-microvolt = <3300000>; | ||||
| 		regulator-max-microvolt = <3300000>; | ||||
| 		regulator-min-microvolt = <1800000>; | ||||
| 		regulator-max-microvolt = <1800000>; | ||||
| 		vin-supply = <&vcc_3v3>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| @ -235,7 +237,7 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; | ||||
| @ -253,9 +255,9 @@ | ||||
| 
 | ||||
| 	bus-width = <8>; | ||||
| 	cap-mmc-highspeed; | ||||
| 	mmc-ddr-3_3v; | ||||
| 	max-frequency = <50000000>; | ||||
| 	non-removable; | ||||
| 	mmc-ddr-1_8v; | ||||
| 	mmc-hs200-1_8v; | ||||
| 	max-frequency = <200000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	mmc-pwrseq = <&emmc_pwrseq>; | ||||
|  | ||||
| @ -180,7 +180,7 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; | ||||
|  | ||||
| @ -114,7 +114,7 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 
 | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
| @ -134,7 +134,7 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; | ||||
|  | ||||
| @ -326,10 +326,15 @@ | ||||
| 		}; | ||||
| 
 | ||||
| 		emmc_pins: emmc { | ||||
| 			mux { | ||||
| 			mux-0 { | ||||
| 				groups = "emmc_nand_d07", | ||||
| 				       "emmc_cmd", | ||||
| 				       "emmc_clk"; | ||||
| 				       "emmc_cmd"; | ||||
| 				function = "emmc"; | ||||
| 				bias-pull-up; | ||||
| 			}; | ||||
| 
 | ||||
| 			mux-1 { | ||||
| 				groups = "emmc_clk"; | ||||
| 				function = "emmc"; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
| @ -339,7 +344,7 @@ | ||||
| 			mux { | ||||
| 				groups = "emmc_ds"; | ||||
| 				function = "emmc"; | ||||
| 				bias-disable; | ||||
| 				bias-pull-down; | ||||
| 			}; | ||||
| 		}; | ||||
| 
 | ||||
| @ -381,13 +386,18 @@ | ||||
| 		}; | ||||
| 
 | ||||
| 		sdcard_pins: sdcard { | ||||
| 			mux { | ||||
| 			mux-0 { | ||||
| 				groups = "sdcard_d0", | ||||
| 				       "sdcard_d1", | ||||
| 				       "sdcard_d2", | ||||
| 				       "sdcard_d3", | ||||
| 				       "sdcard_cmd", | ||||
| 				       "sdcard_clk"; | ||||
| 				       "sdcard_cmd"; | ||||
| 				function = "sdcard"; | ||||
| 				bias-pull-up; | ||||
| 			}; | ||||
| 
 | ||||
| 			mux-1 { | ||||
| 				groups = "sdcard_clk"; | ||||
| 				function = "sdcard"; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
| @ -402,13 +412,18 @@ | ||||
| 		}; | ||||
| 
 | ||||
| 		sdio_pins: sdio { | ||||
| 			mux { | ||||
| 			mux-0 { | ||||
| 				groups = "sdio_d0", | ||||
| 				       "sdio_d1", | ||||
| 				       "sdio_d2", | ||||
| 				       "sdio_d3", | ||||
| 				       "sdio_cmd", | ||||
| 				       "sdio_clk"; | ||||
| 				       "sdio_cmd"; | ||||
| 				function = "sdio"; | ||||
| 				bias-pull-up; | ||||
| 			}; | ||||
| 
 | ||||
| 			mux-1 { | ||||
| 				groups = "sdio_clk"; | ||||
| 				function = "sdio"; | ||||
| 				bias-disable; | ||||
| 			}; | ||||
|  | ||||
| @ -18,7 +18,6 @@ | ||||
| 
 | ||||
| 	aliases { | ||||
| 		serial0 = &uart_AO; | ||||
| 		serial1 = &uart_A; | ||||
| 		serial2 = &uart_AO_B; | ||||
| 	}; | ||||
| 
 | ||||
| @ -63,11 +62,9 @@ | ||||
| 
 | ||||
| 	gpio-keys-polled { | ||||
| 		compatible = "gpio-keys-polled"; | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <0>; | ||||
| 		poll-interval = <100>; | ||||
| 
 | ||||
| 		button@0 { | ||||
| 		power-button { | ||||
| 			label = "power"; | ||||
| 			linux,code = <KEY_POWER>; | ||||
| 			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>; | ||||
| @ -242,11 +239,6 @@ | ||||
| 
 | ||||
| 	amlogic,tx-delay-ns = <2>; | ||||
| 
 | ||||
| 	/* External PHY reset is shared with internal PHY Led signals */ | ||||
| 	snps,reset-gpio = <&gpio GPIOZ_14 0>; | ||||
| 	snps,reset-delays-us = <0 10000 1000000>; | ||||
| 	snps,reset-active-low; | ||||
| 
 | ||||
| 	/* External PHY is in RGMII */ | ||||
| 	phy-mode = "rgmii"; | ||||
| 
 | ||||
| @ -257,6 +249,11 @@ | ||||
| 	external_phy: ethernet-phy@0 { | ||||
| 		/* Realtek RTL8211F (0x001cc916) */ | ||||
| 		reg = <0>; | ||||
| 
 | ||||
| 		reset-assert-us = <10000>; | ||||
| 		reset-deassert-us = <30000>; | ||||
| 		reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; | ||||
| 
 | ||||
| 		interrupt-parent = <&gpio_intc>; | ||||
| 		/* MAC_INTR on GPIOZ_15 */ | ||||
| 		interrupts = <25 IRQ_TYPE_LEVEL_LOW>; | ||||
| @ -324,12 +321,13 @@ | ||||
| &sd_emmc_a { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&sdio_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-1 = <&sdio_clk_gate_pins>; | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 	#address-cells = <1>; | ||||
| 	#size-cells = <0>; | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 
 | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
| @ -349,11 +347,12 @@ | ||||
| &sd_emmc_b { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&sdcard_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-1 = <&sdcard_clk_gate_pins>; | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; | ||||
| @ -366,17 +365,16 @@ | ||||
| &sd_emmc_c { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-1 = <&emmc_clk_gate_pins>; | ||||
| 	pinctrl-names = "default", "clk-gate"; | ||||
| 
 | ||||
| 	bus-width = <8>; | ||||
| 	cap-sd-highspeed; | ||||
| 	cap-mmc-highspeed; | ||||
| 	max-frequency = <200000000>; | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
| 	mmc-ddr-1_8v; | ||||
| 	mmc-hs200-1_8v; | ||||
| 	mmc-hs400-1_8v; | ||||
| 
 | ||||
| 	mmc-pwrseq = <&emmc_pwrseq>; | ||||
| 	vmmc-supply = <&vcc_3v3>; | ||||
| @ -404,8 +402,14 @@ | ||||
| /* This one is connected to the Bluetooth module */ | ||||
| &uart_A { | ||||
| 	status = "okay"; | ||||
| 	pinctrl-0 = <&uart_a_pins>; | ||||
| 	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	uart-has-rtscts; | ||||
| 
 | ||||
| 	bluetooth { | ||||
| 		compatible = "brcm,bcm43438-bt"; | ||||
| 		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| /* This is brought out on the Linux_RX (18) and Linux_TX (19) pins: */ | ||||
|  | ||||
| @ -101,19 +101,19 @@ | ||||
| 
 | ||||
| 	amlogic,tx-delay-ns = <2>; | ||||
| 
 | ||||
| 	snps,reset-gpio = <&gpio GPIOZ_14 0>; | ||||
| 	snps,reset-delays-us = <0 10000 1000000>; | ||||
| 	snps,reset-active-low; | ||||
| 
 | ||||
| 	/* External PHY is in RGMII */ | ||||
| 	phy-mode = "rgmii"; | ||||
| }; | ||||
| 
 | ||||
| &external_mdio { | ||||
| 	external_phy: ethernet-phy@0 { | ||||
| 		compatible = "ethernet-phy-id001c.c916", "ethernet-phy-ieee802.3-c22"; | ||||
| 		/* Realtek RTL8211F (0x001cc916) */ | ||||
| 		reg = <0>; | ||||
| 		max-speed = <1000>; | ||||
| 
 | ||||
| 		reset-assert-us = <10000>; | ||||
| 		reset-deassert-us = <30000>; | ||||
| 		reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| @ -144,7 +144,7 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; | ||||
|  | ||||
| @ -52,20 +52,21 @@ | ||||
| 
 | ||||
| 	amlogic,tx-delay-ns = <2>; | ||||
| 
 | ||||
| 	/* External PHY reset is shared with internal PHY Led signals */ | ||||
| 	snps,reset-gpio = <&gpio GPIOZ_14 0>; | ||||
| 	snps,reset-delays-us = <0 10000 1000000>; | ||||
| 	snps,reset-active-low; | ||||
| 
 | ||||
| 	/* External PHY is in RGMII */ | ||||
| 	phy-mode = "rgmii"; | ||||
| }; | ||||
| 
 | ||||
| &external_mdio { | ||||
| 	external_phy: ethernet-phy@0 { | ||||
| 		compatible = "ethernet-phy-id001c.c916", "ethernet-phy-ieee802.3-c22"; | ||||
| 		/* Realtek RTL8211F (0x001cc916) */ | ||||
| 		reg = <0>; | ||||
| 		max-speed = <1000>; | ||||
| 
 | ||||
| 		/* External PHY reset is shared with internal PHY Led signal */ | ||||
| 		reset-assert-us = <10000>; | ||||
| 		reset-deassert-us = <30000>; | ||||
| 		reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; | ||||
| 
 | ||||
| 		interrupt-parent = <&gpio_intc>; | ||||
| 		/* MAC_INTR on GPIOZ_15 */ | ||||
| 		interrupts = <25 IRQ_TYPE_LEVEL_LOW>; | ||||
|  | ||||
| @ -101,10 +101,6 @@ | ||||
| 	/* Select external PHY by default */ | ||||
| 	phy-handle = <&external_phy>; | ||||
| 
 | ||||
| 	snps,reset-gpio = <&gpio GPIOZ_14 0>; | ||||
| 	snps,reset-delays-us = <0 10000 1000000>; | ||||
| 	snps,reset-active-low; | ||||
| 
 | ||||
| 	amlogic,tx-delay-ns = <2>; | ||||
| 
 | ||||
| 	/* External PHY is in RGMII */ | ||||
| @ -113,9 +109,13 @@ | ||||
| 
 | ||||
| &external_mdio { | ||||
| 	external_phy: ethernet-phy@0 { | ||||
| 		compatible = "ethernet-phy-id001c.c916", "ethernet-phy-ieee802.3-c22"; | ||||
| 		/* Realtek RTL8211F (0x001cc916) */ | ||||
| 		reg = <0>; | ||||
| 		max-speed = <1000>; | ||||
| 
 | ||||
| 		reset-assert-us = <10000>; | ||||
| 		reset-deassert-us = <30000>; | ||||
| 		reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>; | ||||
| 	}; | ||||
| }; | ||||
| 
 | ||||
| @ -143,7 +143,7 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 
 | ||||
| 	non-removable; | ||||
| 	disable-wp; | ||||
| @ -167,7 +167,7 @@ | ||||
| 
 | ||||
| 	bus-width = <4>; | ||||
| 	cap-sd-highspeed; | ||||
| 	max-frequency = <100000000>; | ||||
| 	max-frequency = <50000000>; | ||||
| 	disable-wp; | ||||
| 
 | ||||
| 	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>; | ||||
|  | ||||
| @ -2734,8 +2734,8 @@ static struct clk_hw_onecell_data g12a_hw_onecell_data = { | ||||
| 		[CLKID_MALI_1_DIV]		= &g12a_mali_1_div.hw, | ||||
| 		[CLKID_MALI_1]			= &g12a_mali_1.hw, | ||||
| 		[CLKID_MALI]			= &g12a_mali.hw, | ||||
| 		[CLKID_MPLL_5OM_DIV]		= &g12a_mpll_50m_div.hw, | ||||
| 		[CLKID_MPLL_5OM]		= &g12a_mpll_50m.hw, | ||||
| 		[CLKID_MPLL_50M_DIV]		= &g12a_mpll_50m_div.hw, | ||||
| 		[CLKID_MPLL_50M]		= &g12a_mpll_50m.hw, | ||||
| 		[CLKID_SYS_PLL_DIV16_EN]	= &g12a_sys_pll_div16_en.hw, | ||||
| 		[CLKID_SYS_PLL_DIV16]		= &g12a_sys_pll_div16.hw, | ||||
| 		[CLKID_CPU_CLK_DYN0_SEL]	= &g12a_cpu_clk_premux0.hw, | ||||
|  | ||||
| @ -166,7 +166,7 @@ | ||||
| #define CLKID_HDMI_DIV				167 | ||||
| #define CLKID_MALI_0_DIV			170 | ||||
| #define CLKID_MALI_1_DIV			173 | ||||
| #define CLKID_MPLL_5OM_DIV			176 | ||||
| #define CLKID_MPLL_50M_DIV			176 | ||||
| #define CLKID_SYS_PLL_DIV16_EN			178 | ||||
| #define CLKID_SYS_PLL_DIV16			179 | ||||
| #define CLKID_CPU_CLK_DYN0_SEL			180 | ||||
|  | ||||
| @ -1761,7 +1761,7 @@ static struct clk_regmap meson8m2_gp_pll = { | ||||
| 	}, | ||||
| }; | ||||
| 
 | ||||
| static const char * const mmeson8b_vpu_0_1_parent_names[] = { | ||||
| static const char * const meson8b_vpu_0_1_parent_names[] = { | ||||
| 	"fclk_div4", "fclk_div3", "fclk_div5", "fclk_div7" | ||||
| }; | ||||
| 
 | ||||
| @ -1778,8 +1778,8 @@ static struct clk_regmap meson8b_vpu_0_sel = { | ||||
| 	.hw.init = &(struct clk_init_data){ | ||||
| 		.name = "vpu_0_sel", | ||||
| 		.ops = &clk_regmap_mux_ops, | ||||
| 		.parent_names = mmeson8b_vpu_0_1_parent_names, | ||||
| 		.num_parents = ARRAY_SIZE(mmeson8b_vpu_0_1_parent_names), | ||||
| 		.parent_names = meson8b_vpu_0_1_parent_names, | ||||
| 		.num_parents = ARRAY_SIZE(meson8b_vpu_0_1_parent_names), | ||||
| 		.flags = CLK_SET_RATE_PARENT, | ||||
| 	}, | ||||
| }; | ||||
| @ -1837,8 +1837,8 @@ static struct clk_regmap meson8b_vpu_1_sel = { | ||||
| 	.hw.init = &(struct clk_init_data){ | ||||
| 		.name = "vpu_1_sel", | ||||
| 		.ops = &clk_regmap_mux_ops, | ||||
| 		.parent_names = mmeson8b_vpu_0_1_parent_names, | ||||
| 		.num_parents = ARRAY_SIZE(mmeson8b_vpu_0_1_parent_names), | ||||
| 		.parent_names = meson8b_vpu_0_1_parent_names, | ||||
| 		.num_parents = ARRAY_SIZE(meson8b_vpu_0_1_parent_names), | ||||
| 		.flags = CLK_SET_RATE_PARENT, | ||||
| 	}, | ||||
| }; | ||||
|  | ||||
| @ -130,7 +130,7 @@ | ||||
| #define CLKID_MALI_1_SEL			172 | ||||
| #define CLKID_MALI_1				174 | ||||
| #define CLKID_MALI				175 | ||||
| #define CLKID_MPLL_5OM				177 | ||||
| #define CLKID_MPLL_50M				177 | ||||
| #define CLKID_CPU_CLK				187 | ||||
| #define CLKID_PCIE_PLL				201 | ||||
| #define CLKID_VDEC_1				204 | ||||
|  | ||||
							
								
								
									
										13
									
								
								include/dt-bindings/sound/meson-g12a-tohdmitx.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								include/dt-bindings/sound/meson-g12a-tohdmitx.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| /* SPDX-License-Identifier: GPL-2.0 */ | ||||
| #ifndef __DT_MESON_G12A_TOHDMITX_H | ||||
| #define __DT_MESON_G12A_TOHDMITX_H | ||||
| 
 | ||||
| #define TOHDMITX_I2S_IN_A	0 | ||||
| #define TOHDMITX_I2S_IN_B	1 | ||||
| #define TOHDMITX_I2S_IN_C	2 | ||||
| #define TOHDMITX_I2S_OUT	3 | ||||
| #define TOHDMITX_SPDIF_IN_A	4 | ||||
| #define TOHDMITX_SPDIF_IN_B	5 | ||||
| #define TOHDMITX_SPDIF_OUT	6 | ||||
| 
 | ||||
| #endif /* __DT_MESON_G12A_TOHDMITX_H */ | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user