mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 10:33:41 +02:00
ARM: dts: sunxi: add support for Anbernic RG-Nano
The Anbernic RG-Nano is a small portable game device based on the Allwinner V3s SoC. It has GPIO buttons on the face and side for input, a single mono speaker, a 240x240 SPI controlled display, a USB-C OTG port, an SD card slot for booting, and 64MB of RAM included in the SoC. There does not appear to be a crystal feeding the internal RTC so it does not keep proper time (for me it ran 8 hours slow in a 24 hour period). External RTC works just fine. Working/Tested: - SDMMC - UART (for debugging) - Buttons - Charging/battery/PMIC - Speaker - RTC (external RTC) - USB - Display Signed-off-by: Chris Morgan <macromorgan@hotmail.com> Reviewed-by: Andre Przywara <andre.przywara@arm.com> Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com> Reviewed-by: Samuel Holland <samuel@sholland.org> Link: https://lore.kernel.org/r/20230929144441.3409-5-macroalpha82@gmail.com Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
This commit is contained in:
parent
50fa4947ef
commit
ce63e97b67
|
|
@ -256,6 +256,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \
|
|||
sun8i-t113s-mangopi-mq-r-t113.dtb \
|
||||
sun8i-t3-cqa3t-bv3.dtb \
|
||||
sun8i-v3-sl631-imx179.dtb \
|
||||
sun8i-v3s-anbernic-rg-nano.dtb \
|
||||
sun8i-v3s-licheepi-zero.dtb \
|
||||
sun8i-v3s-licheepi-zero-dock.dtb \
|
||||
sun8i-v40-bananapi-m2-berry.dtb
|
||||
|
|
|
|||
276
arch/arm/boot/dts/allwinner/sun8i-v3s-anbernic-rg-nano.dts
Normal file
276
arch/arm/boot/dts/allwinner/sun8i-v3s-anbernic-rg-nano.dts
Normal file
|
|
@ -0,0 +1,276 @@
|
|||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
|
||||
/dts-v1/;
|
||||
#include <dt-bindings/input/linux-event-codes.h>
|
||||
#include "sun8i-v3s.dtsi"
|
||||
#include "sunxi-common-regulators.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Anbernic RG Nano";
|
||||
compatible = "anbernic,rg-nano", "allwinner,sun8i-v3s";
|
||||
|
||||
aliases {
|
||||
rtc0 = &pcf8563;
|
||||
rtc1 = &rtc;
|
||||
serial0 = &uart0;
|
||||
};
|
||||
|
||||
backlight: backlight {
|
||||
compatible = "pwm-backlight";
|
||||
brightness-levels = <0 1 2 3 8 14 21 32 46 60 80 100>;
|
||||
default-brightness-level = <11>;
|
||||
power-supply = <®_vcc5v0>;
|
||||
pwms = <&pwm 0 40000 1>;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
gpio_keys: gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
button-a {
|
||||
gpios = <&gpio_expander 12 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
label = "BTN-A";
|
||||
linux,code = <BTN_EAST>;
|
||||
};
|
||||
|
||||
button-b {
|
||||
gpios = <&gpio_expander 14 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
label = "BTN-B";
|
||||
linux,code = <BTN_SOUTH>;
|
||||
};
|
||||
|
||||
button-down {
|
||||
gpios = <&gpio_expander 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
label = "DPAD-DOWN";
|
||||
linux,code = <BTN_DPAD_DOWN>;
|
||||
};
|
||||
|
||||
button-left {
|
||||
gpios = <&gpio_expander 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
label = "DPAD-LEFT";
|
||||
linux,code = <BTN_DPAD_LEFT>;
|
||||
};
|
||||
|
||||
button-right {
|
||||
gpios = <&gpio_expander 0 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
label = "DPAD-RIGHT";
|
||||
linux,code = <BTN_DPAD_RIGHT>;
|
||||
};
|
||||
|
||||
button-se {
|
||||
gpios = <&gpio_expander 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
label = "BTN-SELECT";
|
||||
linux,code = <BTN_SELECT>;
|
||||
};
|
||||
|
||||
button-st {
|
||||
gpios = <&gpio_expander 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
label = "BTN-START";
|
||||
linux,code = <BTN_START>;
|
||||
};
|
||||
|
||||
button-tl {
|
||||
gpios = <&gpio_expander 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
label = "BTN-L";
|
||||
linux,code = <BTN_TL>;
|
||||
};
|
||||
|
||||
button-tr {
|
||||
gpios = <&gpio_expander 15 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
label = "BTN-R";
|
||||
linux,code = <BTN_TR>;
|
||||
};
|
||||
|
||||
button-up {
|
||||
gpios = <&gpio_expander 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
label = "DPAD-UP";
|
||||
linux,code = <BTN_DPAD_UP>;
|
||||
};
|
||||
|
||||
button-x {
|
||||
gpios = <&gpio_expander 11 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
label = "BTN-X";
|
||||
linux,code = <BTN_NORTH>;
|
||||
};
|
||||
|
||||
button-y {
|
||||
gpios = <&gpio_expander 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
|
||||
label = "BTN-Y";
|
||||
linux,code = <BTN_WEST>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&codec {
|
||||
allwinner,audio-routing = "Speaker", "HP",
|
||||
"MIC1", "Mic",
|
||||
"Mic", "HBIAS";
|
||||
allwinner,pa-gpios = <&pio 5 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PF6 */
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
|
||||
gpio_expander: gpio@20 {
|
||||
compatible = "nxp,pcal6416";
|
||||
reg = <0x20>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
interrupt-parent = <&pio>;
|
||||
interrupts = <1 3 IRQ_TYPE_EDGE_BOTH>; /* PB3/EINT3 */
|
||||
vcc-supply = <®_vcc3v3>;
|
||||
};
|
||||
|
||||
axp209: pmic@34 {
|
||||
reg = <0x34>;
|
||||
interrupt-parent = <&pio>;
|
||||
interrupts = <1 5 IRQ_TYPE_EDGE_FALLING>; /* PB5/EINT5 */
|
||||
};
|
||||
|
||||
pcf8563: rtc@51 {
|
||||
compatible = "nxp,pcf8563";
|
||||
reg = <0x51>;
|
||||
};
|
||||
};
|
||||
|
||||
#include "axp209.dtsi"
|
||||
|
||||
&battery_power_supply {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mmc0 {
|
||||
broken-cd;
|
||||
bus-width = <4>;
|
||||
disable-wp;
|
||||
vmmc-supply = <®_vcc3v3>;
|
||||
vqmmc-supply = <®_vcc3v3>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ohci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pio {
|
||||
vcc-pb-supply = <®_vcc3v3>;
|
||||
vcc-pc-supply = <®_vcc3v3>;
|
||||
vcc-pf-supply = <®_vcc3v3>;
|
||||
vcc-pg-supply = <®_vcc3v3>;
|
||||
|
||||
spi0_no_miso_pins: spi0-no-miso-pins {
|
||||
pins = "PC1", "PC2", "PC3";
|
||||
function = "spi0";
|
||||
};
|
||||
};
|
||||
|
||||
&pwm {
|
||||
pinctrl-0 = <&pwm0_pin>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* DCDC2 wired into vdd-cpu, vdd-sys, and vdd-ephy. */
|
||||
®_dcdc2 {
|
||||
regulator-always-on;
|
||||
regulator-max-microvolt = <1250000>;
|
||||
regulator-min-microvolt = <1250000>;
|
||||
regulator-name = "vdd-cpu";
|
||||
};
|
||||
|
||||
/* DCDC3 wired into every 3.3v input that isn't the RTC. */
|
||||
®_dcdc3 {
|
||||
regulator-always-on;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-name = "vcc-io";
|
||||
};
|
||||
|
||||
/* LDO1 wired into RTC, voltage is hard-wired at 3.3v. */
|
||||
®_ldo1 {
|
||||
regulator-always-on;
|
||||
regulator-name = "vcc-rtc";
|
||||
};
|
||||
|
||||
/* LDO2 wired into VCC-PLL and audio codec. */
|
||||
®_ldo2 {
|
||||
regulator-always-on;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-name = "vcc-pll";
|
||||
};
|
||||
|
||||
/* LDO3, LDO4, and LDO5 unused. */
|
||||
®_ldo3 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
®_ldo4 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
/* RTC uses internal oscillator */
|
||||
&rtc {
|
||||
/delete-property/ clocks;
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-0 = <&spi0_no_miso_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
display@0 {
|
||||
compatible = "saef,sftc154b", "panel-mipi-dbi-spi";
|
||||
reg = <0>;
|
||||
backlight = <&backlight>;
|
||||
dc-gpios = <&pio 2 0 GPIO_ACTIVE_HIGH>; /* PC0 */
|
||||
reset-gpios = <&pio 1 2 GPIO_ACTIVE_HIGH>; /* PB2 */
|
||||
spi-max-frequency = <100000000>;
|
||||
|
||||
height-mm = <39>;
|
||||
width-mm = <39>;
|
||||
|
||||
/* Set hb-porch to compensate for non-visible area */
|
||||
panel-timing {
|
||||
hactive = <240>;
|
||||
vactive = <240>;
|
||||
hback-porch = <80>;
|
||||
vback-porch = <0>;
|
||||
clock-frequency = <0>;
|
||||
hfront-porch = <0>;
|
||||
hsync-len = <0>;
|
||||
vfront-porch = <0>;
|
||||
vsync-len = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-0 = <&uart0_pb_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_otg {
|
||||
dr_mode = "otg";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_power_supply {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbphy {
|
||||
usb0_id_det-gpios = <&pio 6 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PG5 */
|
||||
status = "okay";
|
||||
};
|
||||
Loading…
Reference in New Issue
Block a user