mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-03-31 14:41:55 -07:00
RK3326: better support for EE clones
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
<file>rk3326-powkiddy-rgb10x</file>
|
||||
<file>rk3326-magicx-xu10</file>
|
||||
<file>rk3326-magicx-xu-mini-m</file>
|
||||
<file>rk3326-gameconsole-r36max</file>
|
||||
<file>rk3326-gameconsole-eeclone</file>
|
||||
</b>
|
||||
</RK3326>
|
||||
<RK3399 mkimage_options="dtb,extlinux,uboot" fdt="device_trees/rk3399-anbernic-rg552.dtb" fdt_type="fdt" dtb_prefix="rockchip">
|
||||
|
||||
@@ -40,7 +40,7 @@ if itest.w ${hwid_adc} > 139 && itest.w ${hwid_adc} < 191; then
|
||||
elif itest.w ${hwid_adc} > 999 && itest.w ${hwid_adc} < 1051; then
|
||||
setenv fdtfile "rk3326-magicx-xu-mini-m.dtb"
|
||||
elif itest.w ${hwid_adc} > 489 && itest.w ${hwid_adc} < 541; then
|
||||
setenv fdtfile "rk3326-gameconsole-r36max.dtb"
|
||||
setenv fdtfile "rk3326-gameconsole-eeclone.dtb"
|
||||
else
|
||||
echo "Unexpected ADC value ${hwid_adc}, falling back to OGA dtb"
|
||||
setenv fdtfile "rk3326-odroid-go2.dtb"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-r36max.dts
|
||||
@@ -0,0 +1,884 @@
|
||||
+++ b/arch/arm64/boot/dts/rockchip/rk3326-gameconsole-eeclone.dts
|
||||
@@ -0,0 +1,926 @@
|
||||
+/// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
+/*
|
||||
+ * Copyright (c) 2024-present ROCKNIX (https://github.com/ROCKNIX)
|
||||
@@ -16,15 +16,15 @@ new file mode 100644
|
||||
+#include "rk3326.dtsi"
|
||||
+
|
||||
+/ {
|
||||
+ model = "K36 family clone";
|
||||
+ compatible = "gameconsole,r36max", "rockchip,rk3326";
|
||||
+ model = "Generic EE clone";
|
||||
+ compatible = "gameconsole,eeclone", "rockchip,rk3326";
|
||||
+
|
||||
+ aliases {
|
||||
+ mmc0 = &emmc;
|
||||
+ mmc1 = &sdmmc;
|
||||
+ mmc2 = &sdio;
|
||||
+ serial1 = &uart2;
|
||||
+ serial2 = &uart1;
|
||||
+ serial2 = &uart5;
|
||||
+ };
|
||||
+
|
||||
+ backlight: backlight {
|
||||
@@ -93,6 +93,9 @@ new file mode 100644
|
||||
+ keyup-threshold-microvolt = <1800000>;
|
||||
+ poll-interval = <100>;
|
||||
+
|
||||
+ /* disabled by default, dtbo may enable it when needed */
|
||||
+ status = "disabled";
|
||||
+
|
||||
+ button-vol-up {
|
||||
+ press-threshold-microvolt = <15000>;
|
||||
+ label = "VOLUMEUP";
|
||||
@@ -266,6 +269,30 @@ new file mode 100644
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ leds: gpio-leds {
|
||||
+ compatible = "gpio-leds";
|
||||
+ pinctrl-0 = <&led_pins>;
|
||||
+ pinctrl-names = "default";
|
||||
+
|
||||
+ /* charge_red_gpio = <&gpio0 17 0>; */
|
||||
+ led-0 {
|
||||
+ color = <LED_COLOR_ID_RED>;
|
||||
+ default-state = "off";
|
||||
+ function = LED_FUNCTION_CHARGING;
|
||||
+ linux,default-trigger = "battery-charging-blink-full-solid";
|
||||
+ gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+
|
||||
+ /* charge_blue_gpio = <&gpio0 0 0>; */
|
||||
+ led-1 {
|
||||
+ color = <LED_COLOR_ID_BLUE>;
|
||||
+ default-state = "on";
|
||||
+ function = LED_FUNCTION_POWER;
|
||||
+ linux,default-trigger = "default-on";
|
||||
+ gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ spk_amp: audio-amplifier {
|
||||
+ compatible = "simple-audio-amplifier";
|
||||
+ enable-gpios = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>;
|
||||
@@ -304,10 +331,11 @@ new file mode 100644
|
||||
+
|
||||
+ vccsys: vccsys {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc3v8_sys";
|
||||
+ regulator-name = "vcc5v0_sys";
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <3800000>;
|
||||
+ regulator-max-microvolt = <3800000>;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ };
|
||||
+
|
||||
+ vcc-phy-regulator {
|
||||
@@ -331,19 +359,19 @@ new file mode 100644
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc_host: vcc_host {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc_host";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ gpio = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>;
|
||||
+ vcc_host: vcc_host {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc_host";
|
||||
+ regulator-min-microvolt = <5000000>;
|
||||
+ regulator-max-microvolt = <5000000>;
|
||||
+ gpio = <&gpio3 RK_PA4 GPIO_ACTIVE_HIGH>;
|
||||
+ pinctrl-0 = <&vcc5_usb>;
|
||||
+ pinctrl-names = "default";
|
||||
+ enable-active-high;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ vin-supply = <&usb_midu>;
|
||||
+ };
|
||||
+ enable-active-high;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ vin-supply = <&usb_midu>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&dmc {
|
||||
@@ -451,13 +479,13 @@ new file mode 100644
|
||||
+ vcc6-supply = <&vccsys>;
|
||||
+ vcc7-supply = <&vcc_3v0>;
|
||||
+ vcc8-supply = <&vccsys>;
|
||||
+ vcc9-supply = <&usb_midu>;
|
||||
+
|
||||
+ regulators {
|
||||
+ vdd_logic: DCDC_REG1 {
|
||||
+ regulator-name = "vdd_logic";
|
||||
+ regulator-min-microvolt = <850000>;
|
||||
+ regulator-max-microvolt = <1150000>;
|
||||
+ regulator-min-microvolt = <950000>;
|
||||
+ regulator-max-microvolt = <1350000>;
|
||||
+ regulator-initial-mode = <0x02>;
|
||||
+ regulator-ramp-delay = <6001>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
@@ -473,6 +501,7 @@ new file mode 100644
|
||||
+ regulator-min-microvolt = <850000>;
|
||||
+ regulator-max-microvolt = <1350000>;
|
||||
+ regulator-ramp-delay = <6001>;
|
||||
+ regulator-initial-mode = <0x02>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+
|
||||
@@ -486,6 +515,7 @@ new file mode 100644
|
||||
+ regulator-name = "vcc_ddr";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-initial-mode = <0x02>;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
@@ -496,6 +526,7 @@ new file mode 100644
|
||||
+ regulator-name = "vcc_3v0";
|
||||
+ regulator-min-microvolt = <3000000>;
|
||||
+ regulator-max-microvolt = <3000000>;
|
||||
+ regulator-initial-mode = <0x02>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+
|
||||
@@ -573,24 +604,24 @@ new file mode 100644
|
||||
+ vcc_sd: LDO_REG6 {
|
||||
+ regulator-name = "vcc_sd";
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <3000000>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-on-in-suspend;
|
||||
+ regulator-suspend-microvolt = <3000000>;
|
||||
+ regulator-suspend-microvolt = <3300000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ vcc2v8_dvp: LDO_REG7 {
|
||||
+ regulator-name = "vcc2v8_dvp";
|
||||
+ regulator-min-microvolt = <2800000>;
|
||||
+ regulator-max-microvolt = <2800000>;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
+ regulator-suspend-microvolt = <2800000>;
|
||||
+ regulator-suspend-microvolt = <3300000>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
@@ -611,6 +642,8 @@ new file mode 100644
|
||||
+ regulator-min-microvolt = <1500000>;
|
||||
+ regulator-max-microvolt = <1500000>;
|
||||
+ regulator-name = "vdd1v5_dvp";
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+
|
||||
+ regulator-state-mem {
|
||||
+ regulator-off-in-suspend;
|
||||
@@ -620,12 +653,13 @@ new file mode 100644
|
||||
+
|
||||
+ usb_midu: BOOST {
|
||||
+ regulator-name = "usb_midu";
|
||||
+ regulator-min-microvolt = <4700000>;
|
||||
+ regulator-min-microvolt = <4900000>;
|
||||
+ regulator-max-microvolt = <5400000>;
|
||||
+ regulator-always-on;
|
||||
+ regulator-boot-on;
|
||||
+ };
|
||||
+
|
||||
+ /*
|
||||
+ otg_switch: OTG_SWITCH {
|
||||
+ regulator-name = "otg_switch";
|
||||
+
|
||||
@@ -633,6 +667,7 @@ new file mode 100644
|
||||
+ regulator-off-in-suspend;
|
||||
+ };
|
||||
+ };
|
||||
+ */
|
||||
+ };
|
||||
+
|
||||
+ rk817_charger: charger {
|
||||
@@ -740,7 +775,7 @@ new file mode 100644
|
||||
+ };
|
||||
+
|
||||
+ u2phy_otg: otg-port {
|
||||
+ status = "okay";
|
||||
+ status = "disabled";
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
@@ -799,8 +834,15 @@ new file mode 100644
|
||||
+
|
||||
+ vcc5-usb {
|
||||
+ vcc5_usb: vcc5-usb {
|
||||
+ rockchip,pins = <0x03 0x04 0x00 0x9f>;
|
||||
+ phandle = <0xb2>;
|
||||
+ rockchip,pins = <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ gpio-led {
|
||||
+ led_pins: led-pins {
|
||||
+ rockchip,pins =
|
||||
+ <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>, /* charge_blue_gpio = <&gpio0 0 0>; */
|
||||
+ <0 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>; /* charge_red_gpio = <&gpio0 17 0>; */
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
@@ -833,7 +875,7 @@ new file mode 100644
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&uart1 {
|
||||
+&uart5 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+&uart2 {
|
||||
@@ -0,0 +1,11 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
|
||||
|
||||
cat <<EOF >/storage/.config/profile.d/001-device_config
|
||||
# Device Features
|
||||
DEVICE_PLAYBACK_PATH_SPK="HP"
|
||||
DEVICE_PLAYBACK_PATH_HP="SPK"
|
||||
DEVICE_BATTERY_LED_STATUS="true"
|
||||
DEVICE_TEMP_SENSOR="/sys/devices/virtual/thermal/thermal_zone0/temp"
|
||||
EOF
|
||||
@@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
STOCKPART="/dev/disk/by-label/EMUELEC"
|
||||
DTBDIR="/flash/stock"
|
||||
DTBOPATH="/flash/overlays/mipi-panel.dtbo"
|
||||
TMPDIR="/tmp/flash_prepare"
|
||||
|
||||
# no-op if dtbo already exists
|
||||
[ -f "${DTBOPATH}" ] && exit 0
|
||||
|
||||
# Obtain stock dtb if needed and possible
|
||||
if ! ls "${DTBDIR}"/*.dtb; then
|
||||
if [ ! -L "${STOCKPART}" ]; then
|
||||
echo "No stock dtb nor stock firmware partition found. Skipping dtbo generation" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Prepare temporary destination
|
||||
mkdir -p "${TMPDIR}/${DTBDIR}"
|
||||
# Prepare source
|
||||
mkdir -p /tmp/stock
|
||||
mount "${STOCKPART}" /tmp/stock
|
||||
# Copy all the dtbs (actually, there should be exactly one)
|
||||
cp /tmp/stock/*.dtb "${TMPDIR}/${DTBDIR}"
|
||||
fi
|
||||
|
||||
STOCKDTB=$(ls "${DTBDIR}"/*.dtb "${TMPDIR}/${DTBDIR}"/*.dtb | head -1)
|
||||
mkdir -p "${TMPDIR}/$(dirname ${DTBOPATH})"
|
||||
echo "Preparing dtbo. This may take about a minute"
|
||||
/usr/libexec/generic-dsi/rocknix_dtbo.py "${STOCKDTB}" -o "${TMPDIR}/${DTBOPATH}"
|
||||
|
||||
|
||||
# Modifications to be made on firmaware partition
|
||||
if [ -d "${TMPDIR}/flash" ]; then
|
||||
mount -o remount,rw /flash
|
||||
|
||||
rsync -av ${TMPDIR}/flash/ /flash || true
|
||||
|
||||
# Cleanup and reboot
|
||||
mount -o remount,ro /flash
|
||||
sync
|
||||
fi
|
||||
|
||||
[ -f "${DTBOPATH}" ] && reboot
|
||||
@@ -0,0 +1,9 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
|
||||
|
||||
cat <<EOF >/storage/.config/profile.d/010-led_control
|
||||
DEVICE_LED_CONTROL="false"
|
||||
DEVICE_LED_BRIGHTNESS="false"
|
||||
DEVICE_LED_CHARGING="false"
|
||||
EOF
|
||||
@@ -0,0 +1,58 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
|
||||
|
||||
#Set mupen64-plus-sa config for OGA
|
||||
if [ ! -d "/storage/.config/mupen64plus" ]; then
|
||||
mkdir -p "/storage/.config/mupen64plus/"
|
||||
cp -r /usr/local/share/mupen64plus/mupen64plus.cfg* /storage/.config/mupen64plus/
|
||||
fi
|
||||
if [ -f "/storage/.config/mupen64plus/mupen64plus.cfg.gen_2s" ]; then
|
||||
rm /storage/.config/mupen64plus/mupen64plus.cfg
|
||||
cp /storage/.config/mupen64plus/mupen64plus.cfg.gen_2s /storage/.config/mupen64plus/mupen64plus.cfg
|
||||
fi
|
||||
|
||||
#Set drastic-sa config for OGA
|
||||
if [ ! -d "/storage/.config/drastic" ]; then
|
||||
mkdir -p "/storage/.config/drastic"
|
||||
cp -r "/usr/config/drastic" "/storage/.config/"
|
||||
fi
|
||||
if [ -f "/storage/.config/drastic/config/drastic.cfg.gen_2s" ]; then
|
||||
cp /storage/.config/drastic/config/drastic.cfg.gen_2s /storage/.config/drastic/config/drastic.cfg
|
||||
fi
|
||||
|
||||
#Set ppsspp config for OGA
|
||||
if [ ! -d "/storage/.config/ppsspp" ]; then
|
||||
mkdir -p "/storage/.config/ppsspp"
|
||||
cp -r "/usr/config/ppsspp" "/storage/.config/"
|
||||
fi
|
||||
|
||||
#Map ppsspp controls
|
||||
if grep OGABE -q "/storage/.config/ppsspp/PSP/SYSTEM/controls.ini"; then
|
||||
exit 1
|
||||
else
|
||||
cat <<EOF >/storage/.config/ppsspp/PSP/SYSTEM/controls.ini
|
||||
#OGABE
|
||||
[ControlMapping]
|
||||
Up = 10-19
|
||||
Down = 10-20
|
||||
Left = 10-21
|
||||
Right = 10-22
|
||||
Circle = 10-189
|
||||
Cross = 10-190
|
||||
Square = 10-188
|
||||
Triangle = 10-191
|
||||
Start = 10-197
|
||||
Select = 10-196
|
||||
L = 10-193
|
||||
R = 10-192
|
||||
An.Up = 10-4003
|
||||
An.Down = 10-4002
|
||||
An.Left = 10-4001
|
||||
An.Right = 10-4000
|
||||
Fast-forward = 1-61
|
||||
Pause = 10-106
|
||||
Save State = 10-4010
|
||||
Load State = 10-4008
|
||||
EOF
|
||||
fi
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2023 JELOS (https://github.com/JustEnoughLinuxOS)
|
||||
|
||||
cat <<EOF >/storage/.config/profile.d/050-modifiers
|
||||
DEVICE_FUNC_KEYA_MODIFIER="BTN_MODE"
|
||||
DEVICE_FUNC_KEYB_MODIFIER="BTN_THUMBR"
|
||||
EOF
|
||||
@@ -0,0 +1,54 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX)
|
||||
|
||||
# Simple script to watch the battery capacity and
|
||||
# turn the power LED to different states:
|
||||
# Blinking red when charge is less than 20%
|
||||
# Blue turns off when charge is less than 10%
|
||||
|
||||
RED_TRIGGER=/sys/class/leds/red\:charging/trigger
|
||||
BLUE_TRIGGER=/sys/class/leds/blue\:status/trigger
|
||||
|
||||
function red_led() {
|
||||
case $1 in
|
||||
none) echo none > ${RED_TRIGGER};;
|
||||
blink) echo timer > ${RED_TRIGGER};;
|
||||
steady) echo default-on > ${RED_TRIGGER};;
|
||||
esac
|
||||
}
|
||||
|
||||
function blue_led() {
|
||||
case $1 in
|
||||
none) echo none > ${BLUE_TRIGGER};;
|
||||
blink) echo timer > ${BLUE_TRIGGER};;
|
||||
steady) echo default-on > ${BLUE_TRIGGER};;
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
while true
|
||||
do
|
||||
CAP=$(cat /sys/class/power_supply/battery/capacity)
|
||||
STAT=$(cat /sys/class/power_supply/battery/status)
|
||||
if [[ ${STAT} == "Discharging" ]]; then
|
||||
if (( ${CAP} <= 10 )); then
|
||||
blue_led none
|
||||
red_led blink
|
||||
continue
|
||||
elif (( ${CAP} <= 20 )); then
|
||||
blue_led steady
|
||||
red_led blink
|
||||
else
|
||||
blue_led steady
|
||||
red_led none
|
||||
fi
|
||||
elif (( ${CAP} <= 95 )); then
|
||||
blue_led steady
|
||||
red_led steady
|
||||
else
|
||||
blue_led steady
|
||||
red_led none
|
||||
fi
|
||||
sleep 15
|
||||
done
|
||||
@@ -2,12 +2,19 @@
|
||||
# Copyright (C) 2024 ROCKNIX (https://github.com/ROCKNIX)
|
||||
|
||||
PKG_NAME="generic-dsi"
|
||||
PKG_VERSION="0.1.0"
|
||||
PKG_VERSION="fa1bd4c5b55bb60bfded06a1c1964328b871345d"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_LONGDESC="generic DSI panel driver"
|
||||
PKG_LONGDESC="generic DSI panel driver and stock DTB import scripts"
|
||||
PKG_DEPENDS_TARGET="pyFDT"
|
||||
PKG_URL="https://github.com/stolen/overlay_server/archive/${PKG_VERSION}.zip"
|
||||
PKG_TOOLCHAIN="manual"
|
||||
|
||||
unpack() {
|
||||
mkdir -p "${PKG_BUILD}"
|
||||
cd "${PKG_BUILD}"
|
||||
unzip "${SOURCES}/${PKG_NAME}/${PKG_SOURCE_NAME}"
|
||||
}
|
||||
|
||||
### For development. Easier to check if code compiles and works.
|
||||
### No need for a long build-transfer-reboot-wait-reboot-check loop
|
||||
make_target() {
|
||||
@@ -21,6 +28,9 @@ make_target() {
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p "${INSTALL}/usr/libexec/generic-dsi"
|
||||
# rocknix_dtbo.py is a better script handling not just panel, but also joypad, headphones, etc.
|
||||
cp -v "${PKG_BUILD}/"overlay_server*"/rocknix_dtbo.py" "${INSTALL}/usr/libexec/generic-dsi/"
|
||||
# importpanel.py still here because it's simple, documented in wiki and performs just one task well
|
||||
cp -v "${PKG_DIR}/scripts/importpanel.py" "${INSTALL}/usr/libexec/generic-dsi/"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user