forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
arm64: dts: rockchip: add Anbernic RG-ARC S and RG-ARC D
Add support for the Anbernic RG-ARC S and RG-ARC D devices. These devices feature the following: - Rockchip RK3566 SoC - 4 inch 480x640 display (rotated) - Goodix multi-touch (ARC D only, untested as I lack the device) - 1GB (ARC S) or 2GB (ARC D) of RAM - 2 SDMMC slots - eMMC (ARC D only) - Realtek 8821CS WiFi/Bluetooth - External stereo speakers - 6 face buttons (A, B, C, X, Y, Z) along with a D-Pad and start and select buttons. - A PWM vibrator. Note that the Goodix touchscreen on I2C2 is not defined, as I lack the necessary hardware to confirm it works correctly with the mainline driver. Signed-off-by: Chris Morgan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Heiko Stuebner <[email protected]>
- Loading branch information
1 parent
e441dd4
commit 05a708c
Showing
4 changed files
with
300 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||
|
||
/dts-v1/; | ||
|
||
#include <dt-bindings/gpio/gpio.h> | ||
#include <dt-bindings/input/linux-event-codes.h> | ||
#include <dt-bindings/pinctrl/rockchip.h> | ||
#include "rk3566-anbernic-rg-arc.dtsi" | ||
|
||
/ { | ||
model = "Anbernic RG ARC-D"; | ||
compatible = "anbernic,rg-arc-d", "rockchip,rk3566"; | ||
|
||
aliases { | ||
mmc0 = &sdhci; | ||
mmc1 = &sdmmc0; | ||
mmc2 = &sdmmc1; | ||
mmc3 = &sdmmc2; | ||
}; | ||
}; | ||
|
||
/* | ||
* Unknown Goodix touchscreen at i2c2 0x14. Needs testing before it's | ||
* enabled. | ||
*/ | ||
&i2c2 { | ||
pinctrl-0 = <&i2c2m1_xfer>; | ||
pinctrl-names = "default"; | ||
status = "okay"; | ||
}; | ||
|
||
&sdhci { | ||
bus-width = <8>; | ||
mmc-hs200-1_8v; | ||
non-removable; | ||
pinctrl-0 = <&emmc_bus8>, <&emmc_clk>, <&emmc_cmd>, | ||
<&emmc_datastrobe>, <&emmc_rstnout>; | ||
pinctrl-names = "default"; | ||
vmmc-supply = <&vcc_3v3>; | ||
vqmmc-supply = <&vcc_1v8>; | ||
status = "okay"; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||
|
||
/dts-v1/; | ||
|
||
#include <dt-bindings/gpio/gpio.h> | ||
#include <dt-bindings/input/linux-event-codes.h> | ||
#include <dt-bindings/pinctrl/rockchip.h> | ||
#include "rk3566-anbernic-rg-arc.dtsi" | ||
|
||
/ { | ||
model = "Anbernic RG ARC-S"; | ||
compatible = "anbernic,rg-arc-s", "rockchip,rk3566"; | ||
|
||
aliases { | ||
mmc1 = &sdmmc0; | ||
mmc2 = &sdmmc1; | ||
mmc3 = &sdmmc2; | ||
}; | ||
}; |
237 changes: 237 additions & 0 deletions
237
arch/arm64/boot/dts/rockchip/rk3566-anbernic-rg-arc.dtsi
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,237 @@ | ||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT) | ||
|
||
/dts-v1/; | ||
|
||
#include <dt-bindings/gpio/gpio.h> | ||
#include <dt-bindings/input/linux-event-codes.h> | ||
#include <dt-bindings/pinctrl/rockchip.h> | ||
#include "rk3566-anbernic-rgxx3.dtsi" | ||
|
||
/ { | ||
backlight: backlight { | ||
compatible = "pwm-backlight"; | ||
power-supply = <&vcc_sys>; | ||
pwms = <&pwm4 0 25000 0>; | ||
}; | ||
|
||
battery: battery { | ||
compatible = "simple-battery"; | ||
charge-full-design-microamp-hours = <3472000>; | ||
charge-term-current-microamp = <300000>; | ||
constant-charge-current-max-microamp = <2000000>; | ||
constant-charge-voltage-max-microvolt = <4200000>; | ||
factory-internal-resistance-micro-ohms = <117000>; | ||
voltage-max-design-microvolt = <4172000>; | ||
voltage-min-design-microvolt = <3400000>; | ||
|
||
ocv-capacity-celsius = <20>; | ||
ocv-capacity-table-0 = <4172000 100>, <4054000 95>, <3984000 90>, <3926000 85>, | ||
<3874000 80>, <3826000 75>, <3783000 70>, <3746000 65>, | ||
<3714000 60>, <3683000 55>, <3650000 50>, <3628000 45>, | ||
<3612000 40>, <3600000 35>, <3587000 30>, <3571000 25>, | ||
<3552000 20>, <3525000 15>, <3492000 10>, <3446000 5>, | ||
<3400000 0>; | ||
}; | ||
|
||
/* Channels reversed for both headphones and speakers. */ | ||
sound { | ||
compatible = "simple-audio-card"; | ||
pinctrl-0 = <&hp_det>; | ||
pinctrl-names = "default"; | ||
simple-audio-card,name = "rk817_ext"; | ||
simple-audio-card,aux-devs = <&spk_amp>; | ||
simple-audio-card,format = "i2s"; | ||
simple-audio-card,hp-det-gpio = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>; | ||
simple-audio-card,mclk-fs = <256>; | ||
simple-audio-card,widgets = | ||
"Microphone", "Mic Jack", | ||
"Headphone", "Headphones", | ||
"Speaker", "Internal Speakers"; | ||
simple-audio-card,routing = | ||
"MICL", "Mic Jack", | ||
"Headphones", "HPOL", | ||
"Headphones", "HPOR", | ||
"Internal Speakers", "Speaker Amp OUTL", | ||
"Internal Speakers", "Speaker Amp OUTR", | ||
"Speaker Amp INL", "HPOL", | ||
"Speaker Amp INR", "HPOR"; | ||
simple-audio-card,pin-switches = "Internal Speakers"; | ||
|
||
simple-audio-card,codec { | ||
sound-dai = <&rk817>; | ||
}; | ||
|
||
simple-audio-card,cpu { | ||
sound-dai = <&i2s1_8ch>; | ||
}; | ||
}; | ||
|
||
spk_amp: audio-amplifier { | ||
compatible = "simple-audio-amplifier"; | ||
enable-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>; | ||
pinctrl-0 = <&spk_amp_enable_h>; | ||
pinctrl-names = "default"; | ||
sound-name-prefix = "Speaker Amp"; | ||
}; | ||
}; | ||
|
||
&cru { | ||
assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>, | ||
<&pmucru PLL_PPLL>, <&cru PLL_VPLL>; | ||
assigned-clock-rates = <32768>, <1200000000>, | ||
<200000000>, <128000000>; | ||
}; | ||
|
||
&dsi_dphy0 { | ||
status = "okay"; | ||
}; | ||
|
||
&dsi0 { | ||
status = "okay"; | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
|
||
ports { | ||
dsi0_in: port@0 { | ||
reg = <0>; | ||
dsi0_in_vp1: endpoint { | ||
remote-endpoint = <&vp1_out_dsi0>; | ||
}; | ||
}; | ||
|
||
dsi0_out: port@1 { | ||
reg = <1>; | ||
mipi_out_panel: endpoint { | ||
remote-endpoint = <&mipi_in_panel>; | ||
}; | ||
}; | ||
}; | ||
|
||
panel: panel@0 { | ||
compatible = "anbernic,rg-arc-panel", "sitronix,st7701"; | ||
reg = <0>; | ||
backlight = <&backlight>; | ||
IOVCC-supply = <&vcc3v3_lcd0_n>; | ||
pinctrl-names = "default"; | ||
pinctrl-0 = <&lcd_rst>; | ||
reset-gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_HIGH>; | ||
rotation = <90>; | ||
VCC-supply = <&vcc3v3_lcd0_n>; | ||
|
||
port { | ||
mipi_in_panel: endpoint { | ||
remote-endpoint = <&mipi_out_panel>; | ||
}; | ||
}; | ||
}; | ||
}; | ||
|
||
/* | ||
* Device uses a non-standard six button layout for a gamepad with X, | ||
* Y, and Z on the top row of buttons and A, B, and C under the bottom | ||
* row. | ||
*/ | ||
&gpio_keys_control { | ||
button-a { | ||
gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_LOW>; | ||
label = "A"; | ||
linux,code = <BTN_A>; | ||
}; | ||
|
||
button-b { | ||
gpios = <&gpio3 RK_PC2 GPIO_ACTIVE_LOW>; | ||
label = "B"; | ||
linux,code = <BTN_B>; | ||
}; | ||
|
||
button-c { | ||
gpios = <&gpio3 RK_PA2 GPIO_ACTIVE_LOW>; | ||
label = "C"; | ||
linux,code = <BTN_C>; | ||
}; | ||
|
||
button-left { | ||
gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_LOW>; | ||
label = "DPAD-LEFT"; | ||
linux,code = <BTN_DPAD_LEFT>; | ||
}; | ||
|
||
button-r1 { | ||
gpios = <&gpio3 RK_PB4 GPIO_ACTIVE_LOW>; | ||
label = "TR"; | ||
linux,code = <BTN_TR>; | ||
}; | ||
|
||
button-r2 { | ||
gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>; | ||
label = "TR2"; | ||
linux,code = <BTN_TR2>; | ||
}; | ||
|
||
button-right { | ||
gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_LOW>; | ||
label = "DPAD-RIGHT"; | ||
linux,code = <BTN_DPAD_RIGHT>; | ||
}; | ||
|
||
button-x { | ||
gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>; | ||
label = "X"; | ||
linux,code = <BTN_X>; | ||
}; | ||
|
||
button-y { | ||
gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_LOW>; | ||
label = "Y"; | ||
linux,code = <BTN_Y>; | ||
}; | ||
|
||
button-z { | ||
gpios = <&gpio3 RK_PA1 GPIO_ACTIVE_LOW>; | ||
label = "Z"; | ||
linux,code = <BTN_Z>; | ||
}; | ||
}; | ||
|
||
&pinctrl { | ||
audio-amplifier { | ||
spk_amp_enable_h: spk-amp-enable-h { | ||
rockchip,pins = | ||
<4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>; | ||
}; | ||
}; | ||
|
||
gpio-lcd { | ||
lcd_rst: lcd-rst { | ||
rockchip,pins = | ||
<4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>; | ||
}; | ||
}; | ||
|
||
headphone { | ||
hp_det: hp-det { | ||
rockchip,pins = | ||
<4 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; | ||
}; | ||
}; | ||
}; | ||
|
||
&pwm4 { | ||
status = "okay"; | ||
}; | ||
|
||
&rk817 { | ||
rk817_charger: charger { | ||
monitored-battery = <&battery>; | ||
rockchip,resistor-sense-micro-ohms = <10000>; | ||
rockchip,sleep-enter-current-microamp = <300000>; | ||
rockchip,sleep-filter-current-microamp = <100000>; | ||
}; | ||
}; | ||
|
||
&vp1 { | ||
vp1_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 { | ||
reg = <ROCKCHIP_VOP2_EP_MIPI0>; | ||
remote-endpoint = <&dsi0_in_vp1>; | ||
}; | ||
}; |