diff options
author | Martin Blumenstingl <martin.blumenstingl@googlemail.com> | 2018-09-22 11:10:03 -0400 |
---|---|---|
committer | Kevin Hilman <khilman@baylibre.com> | 2018-09-26 04:48:59 -0400 |
commit | bbedc1f1d90e33803001ceb8d9585b2f04fc10d0 (patch) | |
tree | 8d56f25f786827ce298ebf350080c7ce755384ec | |
parent | a77d0bab18fcb393dd4c06438d612fcf40d75a35 (diff) |
ARM: dts: meson8b: Add support for the Endless Mini (EC-100)
The Endless Mini (EC-100) is a grapefruit-sized computer based on the
Amlogic Meson8b (S805) SoC which comes in two variants.
Both variants have in common:
- Amlogic Meson8b (S805) SoC
- two USB 2.0 ports on the rear, one one the front (connected to the SoC
through an internal hub)
- 3.5mm Stereo out and MIC combo port
- HDMI and CVBS output
- 5V power supply (rated at 3A / 15W)
- an internal embedded micro-controller (called "EC") which implements a
"breathing" effect for the LED and allows shutting down (powering off)
the whole device
- 10/100 Mbit/s Ethernet using an IC Plus IP101A/G PHY (note: the website
incorrectly lists a Gigabit Ethernet port)
- the CPU voltage is regulated using a PWM regulator. The GPL sources of
the EC-100 are using a PWM value of 0x1c0000 for 0.86V and a PWM value
of 0x00001c for 1.14V. When using the XTAL (24MHz) as input this
translates into a PWM period of 1148ns with 0.86V using a duty cycle of
100% and 1.14V using a duty cycle of 0%.
The main differences are:
- the main indicator for the variant is the RAM size: the "cheaper"
variant has 1 GB of RAM, while the more expensive one comes with 2GB
- the storage size differs: 24 GB vs 32 GB
- the "1 GB RAM" variant has Ethernet connectivity only, while the "2 GB"
variant has a Realtek RTL8723BS SDIO chip which adds 802.11b/g/n wifi
and Bluetooth 4.0 support
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
-rw-r--r-- | arch/arm/boot/dts/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/boot/dts/meson8b-ec100.dts | 248 |
2 files changed, 249 insertions, 0 deletions
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index b5bd3de87c33..856ebc036cc4 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile | |||
@@ -321,6 +321,7 @@ dtb-$(CONFIG_MACH_MESON6) += \ | |||
321 | meson6-atv1200.dtb | 321 | meson6-atv1200.dtb |
322 | dtb-$(CONFIG_MACH_MESON8) += \ | 322 | dtb-$(CONFIG_MACH_MESON8) += \ |
323 | meson8-minix-neo-x8.dtb \ | 323 | meson8-minix-neo-x8.dtb \ |
324 | meson8b-ec100.dtb \ | ||
324 | meson8b-mxq.dtb \ | 325 | meson8b-mxq.dtb \ |
325 | meson8b-odroidc1.dtb \ | 326 | meson8b-odroidc1.dtb \ |
326 | meson8m2-mxiii-plus.dtb | 327 | meson8m2-mxiii-plus.dtb |
diff --git a/arch/arm/boot/dts/meson8b-ec100.dts b/arch/arm/boot/dts/meson8b-ec100.dts new file mode 100644 index 000000000000..0872f6e3abf5 --- /dev/null +++ b/arch/arm/boot/dts/meson8b-ec100.dts | |||
@@ -0,0 +1,248 @@ | |||
1 | // SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||
2 | /* | ||
3 | * Copyright (c) 2018 Martin Blumenstingl <martin.blumenstingl@googlemail.com>. | ||
4 | */ | ||
5 | |||
6 | /dts-v1/; | ||
7 | |||
8 | #include <dt-bindings/gpio/gpio.h> | ||
9 | #include <dt-bindings/input/input.h> | ||
10 | |||
11 | #include "meson8b.dtsi" | ||
12 | |||
13 | / { | ||
14 | model = "Endless Computers Endless Mini"; | ||
15 | compatible = "endless,ec100", "amlogic,meson8b"; | ||
16 | |||
17 | aliases { | ||
18 | serial0 = &uart_AO; | ||
19 | }; | ||
20 | |||
21 | chosen { | ||
22 | stdout-path = "serial0:115200n8"; | ||
23 | }; | ||
24 | |||
25 | memory { | ||
26 | reg = <0x40000000 0x40000000>; | ||
27 | }; | ||
28 | |||
29 | gpio-keys { | ||
30 | compatible = "gpio-keys-polled"; | ||
31 | #address-cells = <1>; | ||
32 | #size-cells = <0>; | ||
33 | poll-interval = <100>; | ||
34 | |||
35 | pal-switch { | ||
36 | label = "pal"; | ||
37 | linux,input-type = <EV_SW>; | ||
38 | linux,code = <KEY_SWITCHVIDEOMODE>; | ||
39 | gpios = <&gpio GPIOH_7 GPIO_ACTIVE_LOW>; | ||
40 | }; | ||
41 | |||
42 | ntsc-switch { | ||
43 | label = "ntsc"; | ||
44 | linux,input-type = <EV_SW>; | ||
45 | linux,code = <KEY_SWITCHVIDEOMODE>; | ||
46 | gpios = <&gpio GPIOH_8 GPIO_ACTIVE_HIGH>; | ||
47 | }; | ||
48 | |||
49 | power-button { | ||
50 | label = "power"; | ||
51 | linux,code = <KEY_POWER>; | ||
52 | gpios = <&gpio GPIOH_9 GPIO_ACTIVE_LOW>; | ||
53 | }; | ||
54 | }; | ||
55 | |||
56 | gpio-poweroff { | ||
57 | compatible = "gpio-poweroff"; | ||
58 | /* | ||
59 | * shutdown is managed by the EC (embedded micro-controller) | ||
60 | * which is configured through GPIOAO_2 (poweroff GPIO) and | ||
61 | * GPIOAO_7 (power LED, which has to go LOW as well). | ||
62 | */ | ||
63 | gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>; | ||
64 | timeout-ms = <20000>; | ||
65 | }; | ||
66 | |||
67 | leds { | ||
68 | compatible = "gpio-leds"; | ||
69 | |||
70 | power { | ||
71 | label = "ec100:red:power"; | ||
72 | /* | ||
73 | * Needs to go LOW (together with the poweroff GPIO) | ||
74 | * during shutdown to allow the EC (embedded | ||
75 | * micro-controller) to shutdown the system. Setting | ||
76 | * the output to LOW signals the EC to start a | ||
77 | * "breathing"/pulsing effect until the power is fully | ||
78 | * turned off. | ||
79 | */ | ||
80 | gpios = <&gpio_ao GPIOAO_7 GPIO_ACTIVE_HIGH>; | ||
81 | default-state = "on"; | ||
82 | }; | ||
83 | }; | ||
84 | |||
85 | usb_vbus: regulator-usb-vbus { | ||
86 | compatible = "regulator-fixed"; | ||
87 | |||
88 | regulator-name = "USB_VBUS"; | ||
89 | |||
90 | regulator-min-microvolt = <5000000>; | ||
91 | regulator-max-microvolt = <5000000>; | ||
92 | |||
93 | gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>; | ||
94 | enable-active-high; | ||
95 | }; | ||
96 | |||
97 | vcc_5v: regulator-vcc5v { | ||
98 | compatible = "regulator-fixed"; | ||
99 | |||
100 | regulator-name = "VCC5V"; | ||
101 | |||
102 | regulator-min-microvolt = <5000000>; | ||
103 | regulator-max-microvolt = <5000000>; | ||
104 | |||
105 | gpio = <&gpio GPIODV_29 GPIO_ACTIVE_LOW>; | ||
106 | |||
107 | regulator-boot-on; | ||
108 | regulator-always-on; | ||
109 | }; | ||
110 | |||
111 | vcck: regulator-vcck { | ||
112 | compatible = "pwm-regulator"; | ||
113 | |||
114 | regulator-name = "VCCK"; | ||
115 | regulator-min-microvolt = <860000>; | ||
116 | regulator-max-microvolt = <1140000>; | ||
117 | |||
118 | pwms = <&pwm_cd 0 1148 0>; | ||
119 | pwm-dutycycle-range = <100 0>; | ||
120 | |||
121 | regulator-boot-on; | ||
122 | regulator-always-on; | ||
123 | }; | ||
124 | |||
125 | vcc_1v8: regulator-vcc1v8 { | ||
126 | compatible = "regulator-fixed"; | ||
127 | |||
128 | regulator-name = "VCC1V8"; | ||
129 | regulator-min-microvolt = <1800000>; | ||
130 | regulator-max-microvolt = <1800000>; | ||
131 | }; | ||
132 | |||
133 | vcc_3v3: regulator-vcc3v3 { | ||
134 | compatible = "regulator-fixed"; | ||
135 | |||
136 | regulator-name = "VCC3V3"; | ||
137 | regulator-min-microvolt = <3300000>; | ||
138 | regulator-max-microvolt = <3300000>; | ||
139 | }; | ||
140 | }; | ||
141 | |||
142 | &cpu0 { | ||
143 | cpu-supply = <&vcck>; | ||
144 | }; | ||
145 | |||
146 | ðmac { | ||
147 | status = "okay"; | ||
148 | |||
149 | pinctrl-0 = <ð_rmii_pins>; | ||
150 | pinctrl-names = "default"; | ||
151 | |||
152 | phy-handle = <ð_phy0>; | ||
153 | phy-mode = "rmii"; | ||
154 | |||
155 | snps,reset-gpio = <&gpio GPIOH_4 0>; | ||
156 | snps,reset-delays-us = <0 10000 1000000>; | ||
157 | snps,reset-active-low; | ||
158 | |||
159 | mdio { | ||
160 | compatible = "snps,dwmac-mdio"; | ||
161 | #address-cells = <1>; | ||
162 | #size-cells = <0>; | ||
163 | |||
164 | eth_phy0: ethernet-phy@0 { | ||
165 | /* IC Plus IP101A/G (0x02430c54) */ | ||
166 | reg = <0>; | ||
167 | }; | ||
168 | }; | ||
169 | }; | ||
170 | |||
171 | &i2c_A { | ||
172 | status = "okay"; | ||
173 | pinctrl-0 = <&i2c_a_pins>; | ||
174 | pinctrl-names = "default"; | ||
175 | |||
176 | rt5640: codec@1c { | ||
177 | compatible = "realtek,rt5640"; | ||
178 | reg = <0x1c>; | ||
179 | interrupt-parent = <&gpio_intc>; | ||
180 | interrupts = <13 IRQ_TYPE_EDGE_BOTH>; /* GPIOAO_13 */ | ||
181 | realtek,in1-differential; | ||
182 | }; | ||
183 | }; | ||
184 | |||
185 | &saradc { | ||
186 | status = "okay"; | ||
187 | vref-supply = <&vcc_1v8>; | ||
188 | }; | ||
189 | |||
190 | &sdio { | ||
191 | status = "okay"; | ||
192 | |||
193 | pinctrl-0 = <&sd_b_pins>; | ||
194 | pinctrl-names = "default"; | ||
195 | |||
196 | /* SD card */ | ||
197 | sd_card_slot: slot@1 { | ||
198 | compatible = "mmc-slot"; | ||
199 | reg = <1>; | ||
200 | status = "okay"; | ||
201 | |||
202 | bus-width = <4>; | ||
203 | no-sdio; | ||
204 | cap-mmc-highspeed; | ||
205 | cap-sd-highspeed; | ||
206 | disable-wp; | ||
207 | |||
208 | cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>; | ||
209 | cd-inverted; | ||
210 | |||
211 | vmmc-supply = <&vcc_3v3>; | ||
212 | }; | ||
213 | }; | ||
214 | |||
215 | &pwm_cd { | ||
216 | status = "okay"; | ||
217 | pinctrl-0 = <&pwm_c1_pins>; | ||
218 | pinctrl-names = "default"; | ||
219 | clocks = <&clkc CLKID_XTAL>; | ||
220 | clock-names = "clkin0"; | ||
221 | }; | ||
222 | |||
223 | /* exposed through the pin headers labeled "URDUG1" on the top of the PCB */ | ||
224 | &uart_AO { | ||
225 | status = "okay"; | ||
226 | pinctrl-0 = <&uart_ao_a_pins>; | ||
227 | pinctrl-names = "default"; | ||
228 | }; | ||
229 | |||
230 | /* | ||
231 | * connected to the Bluetooth part of the RTL8723BS SDIO wifi / Bluetooth | ||
232 | * combo chip. This is only available on the variant with 2GB RAM. | ||
233 | */ | ||
234 | &uart_B { | ||
235 | status = "okay"; | ||
236 | pinctrl-0 = <&uart_b0_pins>, <&uart_b0_cts_rts_pins>; | ||
237 | pinctrl-names = "default"; | ||
238 | uart-has-rtscts; | ||
239 | }; | ||
240 | |||
241 | &usb1 { | ||
242 | status = "okay"; | ||
243 | vbus-supply = <&usb_vbus>; | ||
244 | }; | ||
245 | |||
246 | &usb1_phy { | ||
247 | status = "okay"; | ||
248 | }; | ||