beelink-gt1: new device (MR 3924)

[ci:skip-build]: already built successfully in CI
This commit is contained in:
@exkc 2023-03-09 02:42:21 +08:00 committed by Oliver Smith
parent 22a8c4a06a
commit 505598c09e
No known key found for this signature in database
GPG key ID: 5AE7F5513E0885CB
6 changed files with 607 additions and 0 deletions

View file

@ -0,0 +1,54 @@
# Reference: <https://postmarketos.org/devicepkg>
# Maintainer: exkc <exxxxkc@getgoogleoff.me>
pkgname=device-beelink-gt1
pkgver=1
pkgrel=0
pkgdesc="Beelink gt1 (Ultimate)"
url="https://postmarketos.org"
license="MIT"
arch="aarch64"
options="!check !archcheck"
depends="postmarketos-base postmarketos-update-kernel u-boot-beelink-gt1 soc-amlogic-s905"
makedepends="devicepkg-dev"
subpackages="
$pkgname-kernel-alpine:kernel_alpine
$pkgname-kernel-amlogic:kernel_amlogic
$pkgname-nonfree-firmware:nonfree_firmware
"
source="
asound.state
deviceinfo"
build() {
devicepkg_build $startdir $pkgname
}
package() {
devicepkg_package $startdir $pkgname
install -D -m644 "$srcdir"/asound.state \
"$pkgdir"/var/lib/alsa/asound.state
}
kernel_alpine() {
pkgdesc="linux-edge from Alpine"
depends="linux-edge"
devicepkg_subpackage_kernel $startdir $pkgname $subpkgname
}
kernel_amlogic() {
pkgdesc="linux-postmarketos-amlogic from postmarketOS"
depends="linux-postmarketos-amlogic"
devicepkg_subpackage_kernel $startdir $pkgname $subpkgname
}
nonfree_firmware() {
pkgdesc="Beelink gt1 Firmware"
depends="firmware-beelink-gt1 linux-firmware-meson"
mkdir "$subpkgdir"
}
sha512sums="
a38e33d5bce26549c73f9aad2988ef8d7e7a3bbb28ac37348545fe7edb935be1b51dbdf8a857fb9d49be7e6eab7d40ac2f11fdcd618487747b809f7236ccf57b asound.state
07df6b6835e42987dd1d6f16a0137c2cc5a1f234a1c8fe18159601cfad65ac4d406fd427f83a2113b9812056c87222e57d83a8e02270d7c5ab0d49cdab2ab9d0 deviceinfo
"

View file

@ -0,0 +1,217 @@
state.P230Q200 {
control.1 {
iface MIXER
name 'AIU ACODEC I2S Lane Select'
value 3
comment {
access 'read write'
type INTEGER
count 1
range '0 - 3'
}
}
control.2 {
iface MIXER
name 'ACODEC Playback Channel Mode'
value Stereo
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Stereo
item.1 Mono
}
}
control.3 {
iface MIXER
name 'ACODEC Playback Switch'
value true
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.4 {
iface MIXER
name 'ACODEC Playback Volume'
value.0 255
value.1 255
comment {
access 'read write'
type INTEGER
count 2
range '0 - 255'
dbmin -9999999
dbmax 0
dbvalue.0 0
dbvalue.1 0
}
}
control.5 {
iface MIXER
name 'ACODEC Ramp Rate'
value Fast
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Fast
item.1 Slow
}
}
control.6 {
iface MIXER
name 'ACODEC Volume Ramp Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.7 {
iface MIXER
name 'ACODEC Mute Ramp Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.8 {
iface MIXER
name 'ACODEC Unmute Ramp Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.9 {
iface PCM
device 4
name 'Playback Channel Map'
value.0 0
value.1 0
value.2 0
value.3 0
value.4 0
value.5 0
value.6 0
value.7 0
comment {
access read
type INTEGER
count 8
range '0 - 36'
}
}
control.10 {
iface PCM
device 4
name 'IEC958 Playback Mask'
value ffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
comment {
access read
type IEC958
count 1
}
}
control.11 {
iface PCM
device 4
name 'IEC958 Playback Default'
value '0400000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access 'read write'
type IEC958
count 1
}
}
control.12 {
iface PCM
device 4
name ELD
value '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
comment {
access 'read volatile'
type BYTES
count 128
}
}
control.13 {
iface MIXER
name 'AIU SPDIF SRC SEL'
value SPDIF
comment {
access 'read write'
type ENUMERATED
count 1
item.0 SPDIF
item.1 I2S
}
}
control.14 {
iface MIXER
name 'AIU HDMI CTRL SRC'
value I2S
comment {
access 'read write'
type ENUMERATED
count 1
item.0 DISABLED
item.1 PCM
item.2 I2S
}
}
control.15 {
iface MIXER
name 'AIU ACODEC SRC'
value DISABLED
comment {
access 'read write'
type ENUMERATED
count 1
item.0 DISABLED
item.1 I2S
item.2 PCM
}
}
control.16 {
iface MIXER
name 'AIU ACODEC OUT EN Switch'
value false
comment {
access 'read write'
type BOOLEAN
count 1
}
}
control.17 {
iface MIXER
name 'ACODEC Right DAC Sel'
value Right
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Right
item.1 Left
}
}
control.18 {
iface MIXER
name 'ACODEC Left DAC Sel'
value Left
comment {
access 'read write'
type ENUMERATED
count 1
item.0 Left
item.1 Right
}
}
}

View file

@ -0,0 +1,33 @@
# Reference: <https://postmarketos.org/deviceinfo>
# Please use double quotes only. You can source this file in shell scripts.
deviceinfo_format_version="0"
deviceinfo_name="Beelink gt1 (Ultimate)"
deviceinfo_manufacturer="Beelink"
deviceinfo_codename="beelink-gt1"
deviceinfo_dtb="amlogic/meson-gxm-gt1-ultimate"
deviceinfo_year="2016"
deviceinfo_arch="aarch64"
# Device related
deviceinfo_gpu_accelerated="true"
deviceinfo_chassis="desktop"
deviceinfo_keyboard="true"
deviceinfo_external_storage="true"
deviceinfo_screen_width="1920"
deviceinfo_screen_height="1080"
# Bootloader related
deviceinfo_flash_method="none"
deviceinfo_sd_embed_firmware_step_size="512"
deviceinfo_sd_embed_firmware="u-boot/beelink-gt1/u-boot.bin.sd-stripped.bin:1"
deviceinfo_boot_part_start="4096"
deviceinfo_generate_extlinux_config="true"
# Close to mainline kernel options
deviceinfo_modules_initfs_amlogic="meson_drm meson_dw_hdmi display_connector"
deviceinfo_kernel_cmdline_amlogic="rw console=ttyAML0,115200 console=tty0 PMOS_NO_OUTPUT_REDIRECT no_console_suspend"
# Alpine kernel options
deviceinfo_kernel_cmdline_alpine="rw console=ttyAML0,115200 console=tty0 PMOS_NO_OUTPUT_REDIRECT no_console_suspend"
deviceinfo_modules_initfs_alpine="fixed meson_gxbb_wdt meson_wdt meson-gx-mmc dw_hdmi drm_display_helper cec display_connector drm_kms_helper drm meson_drm meson_dw_hdmi"

View file

@ -0,0 +1,24 @@
# Maintainer: exkc <exxxxkc@getgoogleoff.me>
pkgname=firmware-beelink-gt1
pkgver=1
pkgrel=0
pkgdesc="Broadcom firmware for Beelink gt1 (Ultimate)"
url="https://github.com/LibreELEC/brcmfmac_sdio-firmware"
arch="aarch64"
license="proprietary"
options="!check !strip !archcheck !tracedeps pmb:cross-native"
_commit="c70355f9ec6d015b91a5c3199aa08b433e2f7caf"
source="$pkgname-$_commit.tar.gz::$url/archive/$_commit.tar.gz"
_fwdir="/lib/firmware/postmarketos/brcm"
builddir="$srcdir/brcmfmac_sdio-firmware-$_commit"
package() {
install -Dm644 brcmfmac43455-sdio.bin "$pkgdir/$_fwdir"/brcmfmac43455-sdio.azw,gt1-ultimate.bin
install -Dm644 brcmfmac43455-sdio.txt "$pkgdir/$_fwdir"/brcmfmac43455-sdio.azw,gt1-ultimate.txt
}
sha512sums="
e9d358d6942e361b9019a8d50c744826e2e6cb42326241e6b9f8b8fb50ac1567de8a9ef36204e7b39c935efd7b17a8c1e918243ba5813595b1652b870aff2ce6 firmware-beelink-gt1-c70355f9ec6d015b91a5c3199aa08b433e2f7caf.tar.gz
"

View file

@ -0,0 +1,218 @@
From e8914ff61f978a65a3647517535181f973830afb Mon Sep 17 00:00:00 2001
From: "@exkc" <exkc@exkc.moe>
Date: Sat, 4 Mar 2023 23:50:49 +0800
Subject: [PATCH] add basic support for beelink-gt1
---
.../dts/meson-gxm-gt1-ultimate-u-boot.dtsi | 7 ++
arch/arm/dts/meson-gxm-gt1-ultimate.dts | 91 +++++++++++++++++++
configs/gt1_ultimate_defconfig | 85 +++++++++++++++++
3 files changed, 183 insertions(+)
create mode 100644 arch/arm/dts/meson-gxm-gt1-ultimate-u-boot.dtsi
create mode 100644 arch/arm/dts/meson-gxm-gt1-ultimate.dts
create mode 100644 configs/gt1_ultimate_defconfig
diff --git a/arch/arm/dts/meson-gxm-gt1-ultimate-u-boot.dtsi b/arch/arm/dts/meson-gxm-gt1-ultimate-u-boot.dtsi
new file mode 100644
index 0000000000..39270ea71c
--- /dev/null
+++ b/arch/arm/dts/meson-gxm-gt1-ultimate-u-boot.dtsi
@@ -0,0 +1,7 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 BayLibre, SAS.
+ * Author: Neil Armstrong <narmstrong@baylibre.com>
+ */
+
+#include "meson-gxl-u-boot.dtsi"
diff --git a/arch/arm/dts/meson-gxm-gt1-ultimate.dts b/arch/arm/dts/meson-gxm-gt1-ultimate.dts
new file mode 100644
index 0000000000..2c267884cc
--- /dev/null
+++ b/arch/arm/dts/meson-gxm-gt1-ultimate.dts
@@ -0,0 +1,91 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) Christian Hewitt <christianshewitt@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "meson-gxm.dtsi"
+#include "meson-gx-p23x-q20x.dtsi"
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+ compatible = "azw,gt1-ultimate", "amlogic,s912", "amlogic,meson-gxm";
+ model = "Beelink GT1 Ultimate";
+
+ leds {
+ compatible = "gpio-leds";
+
+ led-white {
+ color = <LED_COLOR_ID_WHITE>;
+ function = LED_FUNCTION_POWER;
+ gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
+ default-state = "on";
+ panic-indicator;
+ };
+ };
+
+ adc-keys {
+ compatible = "adc-keys";
+ io-channels = <&saradc 0>;
+ io-channel-names = "buttons";
+ keyup-threshold-microvolt = <1710000>;
+
+ button-function {
+ label = "update";
+ linux,code = <KEY_VENDOR>;
+ press-threshold-microvolt = <10000>;
+ };
+ };
+};
+
+&ethmac {
+ pinctrl-0 = <&eth_pins>;
+ pinctrl-names = "default";
+ phy-handle = <&external_phy>;
+ amlogic,tx-delay-ns = <2>;
+ phy-mode = "rgmii";
+};
+
+&external_mdio {
+ external_phy: ethernet-phy@0 {
+ /* Realtek RTL8211F (0x001cc916) */
+ reg = <0>;
+ max-speed = <1000>;
+
+ reset-assert-us = <10000>;
+ reset-deassert-us = <80000>;
+ reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
+
+ interrupt-parent = <&gpio_intc>;
+ /* MAC_INTR on GPIOZ_15 */
+ interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
+ };
+};
+
+&ir {
+ linux,rc-map-name = "rc-beelink-gs1";
+};
+
+&sd_emmc_a {
+ brcmf: wifi@1 {
+ reg = <1>;
+ compatible = "brcm,bcm4329-fmac";
+ };
+};
+
+&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";
+ };
+};
diff --git a/configs/beelink_gt1_ultimate_defconfig b/configs/beelink_gt1_ultimate_defconfig
new file mode 100644
index 0000000000..b5ed30fab4
--- /dev/null
+++ b/configs/beelink_gt1_ultimate_defconfig
@@ -0,0 +1,85 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MESON=y
+CONFIG_TEXT_BASE=0x01000000
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
+CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x20000000
+CONFIG_ENV_SIZE=0x10000
+CONFIG_ENV_OFFSET=0xFFFF0000
+CONFIG_ENV_SECT_SIZE=0x10000
+CONFIG_DM_GPIO=y
+CONFIG_DEFAULT_DEVICE_TREE="meson-gxm-gt1-ultimate"
+CONFIG_DM_RESET=y
+CONFIG_MESON_GXM=y
+CONFIG_DEBUG_UART_BASE=0xc81004c0
+CONFIG_DEBUG_UART_CLOCK=24000000
+CONFIG_IDENT_STRING=" gt1-ultimate"
+CONFIG_SYS_LOAD_ADDR=0x1000000
+CONFIG_DEBUG_UART=y
+CONFIG_REMAKE_ELF=y
+CONFIG_OF_BOARD_SETUP=y
+CONFIG_USE_PREBOOT=y
+# CONFIG_DISPLAY_CPUINFO is not set
+CONFIG_MISC_INIT_R=y
+CONFIG_SYS_MAXARGS=32
+# CONFIG_CMD_BDI is not set
+# CONFIG_CMD_IMI is not set
+CONFIG_CMD_ADC=y
+CONFIG_CMD_GPIO=y
+# CONFIG_CMD_LOADS is not set
+CONFIG_CMD_MMC=y
+CONFIG_CMD_SF_TEST=y
+CONFIG_CMD_SPI=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_USB_MASS_STORAGE=y
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_REGULATOR=y
+CONFIG_OF_CONTROL=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_SARADC_MESON=y
+CONFIG_MMC_MESON_GX=y
+CONFIG_MTD=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SPI_FLASH_GIGADEVICE=y
+CONFIG_PHY_REALTEK=y
+CONFIG_DM_MDIO=y
+CONFIG_DM_MDIO_MUX=y
+CONFIG_ETH_DESIGNWARE_MESON8B=y
+CONFIG_MDIO_MUX_MMIOREG=y
+CONFIG_MESON_GXL_USB_PHY=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_MESON_GXL=y
+CONFIG_POWER_DOMAIN=y
+CONFIG_MESON_EE_POWER_DOMAIN=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DEBUG_UART_ANNOUNCE=y
+CONFIG_DEBUG_UART_SKIP_INIT=y
+CONFIG_MESON_SERIAL=y
+CONFIG_SPI=y
+CONFIG_DM_SPI=y
+CONFIG_MESON_SPIFC=y
+CONFIG_USB=y
+CONFIG_DM_USB_GADGET=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_DWC3=y
+CONFIG_USB_DWC3=y
+# CONFIG_USB_DWC3_GADGET is not set
+CONFIG_USB_DWC3_MESON_GXL=y
+CONFIG_USB_KEYBOARD=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e
+CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
+CONFIG_USB_GADGET_DWC2_OTG=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_VIDEO=y
+CONFIG_SYS_WHITE_ON_BLACK=y
+CONFIG_VIDEO_MESON=y
+CONFIG_VIDEO_DT_SIMPLEFB=y
+CONFIG_SPLASH_SCREEN=y
+CONFIG_SPLASH_SCREEN_ALIGN=y
+CONFIG_VIDEO_BMP_RLE8=y
+CONFIG_BMP_16BPP=y
+CONFIG_BMP_24BPP=y
+CONFIG_BMP_32BPP=y
+CONFIG_OF_LIBFDT_OVERLAY=y
--
2.39.1

View file

@ -0,0 +1,61 @@
# Reference: <https://u-boot.readthedocs.io/en/latest/board/amlogic/radxa-zero.html>
# Maintainer: exkc <exxxxkc@getgoogleoff.me>
pkgname=u-boot-beelink-gt1
pkgver=2023.04
pkgrel=0
pkgdesc="U-Boot bootloader for Beelink gt1"
url="https://source.denx.de/u-boot"
arch="aarch64"
_ubootver=2023.04-rc3
license="GPL-2.0-or-later OFL-1.1 BSD-2-Clause BSD-3-Clause eCos-2.0 IBM-pibs
ISC LGPL-2.0-only LGPL-2.1-only X11 proprietary"
makedepends="$depends_dev
bc
bison
crust
dtc
flex
openssl-dev
py3-setuptools
python3-dev
swig
bash
"
options="!check"
# https://u-boot.readthedocs.io/en/latest/board/amlogic/pre-generated-fip.html
_amlogicblob_commit="e96b6a694380ff07d5a9e4be644ffe254bd18512"
source="https://source.denx.de/u-boot/u-boot/-/archive/v$_ubootver/u-boot-v$_ubootver.tar.gz
0001-add-basic-support-for-beelink-gt1.patch
amlogicblob_beelink-gt1.tar.gz::https://github.com/LibreELEC/amlogic-boot-fip/archive/$_amlogicblob_commit.tar.gz
"
builddir="$srcdir/u-boot-v$_ubootver"
_fipbuilddir="$srcdir/amlogic-boot-fip-$_amlogicblob_commit"
build() {
touch include/config.h
LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > include/timestamp_autogenerated.h
LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> include/timestamp_autogenerated.h
make ARCH=arm beelink_gt1_ultimate_defconfig
make ARCH=arm all
cd $_fipbuilddir
mkdir build
./build-fip.sh beelink-gt1 $builddir/u-boot.bin ./build
cd ./build
dd if=u-boot.bin.sd.bin of=u-boot.bin.sd-stripped.bin conv=fsync,notrunc bs=512 skip=1
}
package() {
_installdir="$pkgdir/usr/share/u-boot/beelink-gt1"
install -Dm644 "$_fipbuilddir/build/u-boot.bin.sd-stripped.bin" -t "$_installdir"
install -Dm644 "$_fipbuilddir/build/u-boot.bin.sd.bin" -t "$_installdir"
install -Dm644 "$_fipbuilddir/build/u-boot.bin" -t "$_installdir"
install -Dm644 "$_fipbuilddir/build/u-boot.bin.usb.bl2" -t "$_installdir"
install -Dm644 "$_fipbuilddir/build/u-boot.bin.usb.tpl" -t "$_installdir"
}
sha512sums="
4d2afc652d1431f17694bb41493c699dd477c82b466282a24094c59fada558df7c8a79518c1804729a73dd901d2e24beb1643313cb2d93d348559410182bc67b u-boot-v2023.04-rc3.tar.gz
d870e1ea53e70038600c9a9ac03a2493f511ebf27231ff899c6f2c6f3d9160d91882871553e48475b46a4ba80f9037f7fcb0243b26649f7f3753fa13d220e352 0001-add-basic-support-for-beelink-gt1.patch
98ecbbc56e8326ce11db4e316a7bb3812d713fbe630235825ddb657b28419eb406f7117208a5c0360653ebdccb9af1a48357d0c257cd61f11a8c3cdaa78548b5 amlogicblob_beelink-gt1.tar.gz
"