Helios64 NAS
This commit is contained in:
parent
e5f21fc35e
commit
7feddbcceb
@ -2,11 +2,27 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
imports =[
|
imports =[
|
||||||
./helios64.nix
|
./helios64
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# nsw2zwifzyl42mbhabayjo42b2kkq3wd3dqyl6efxsz6pvmgm5cup5ad.onion
|
||||||
|
|
||||||
nix.flakes.enable = true;
|
nix.flakes.enable = true;
|
||||||
|
|
||||||
networking.hostName = "s0";
|
networking.hostName = "s0";
|
||||||
fileSystems."/" = { device = lib.mkForce "/dev/disk/by-label/bold-emmc"; fsType = lib.mkForce "btrfs"; };
|
|
||||||
|
luks = {
|
||||||
|
enable = true;
|
||||||
|
device = {
|
||||||
|
path = "/dev/disk/by-uuid/975d8427-2c6a-440d-a1d2-18dd15ba5bc2";
|
||||||
|
allowDiscards = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.loader.grub.enable = false;
|
||||||
|
boot.loader.generic-extlinux-compatible.enable = true;
|
||||||
|
|
||||||
networking.interfaces.eth0.useDHCP = true;
|
networking.interfaces.eth0.useDHCP = true;
|
||||||
|
|
||||||
|
zramSwap.enable = true;
|
||||||
}
|
}
|
||||||
|
@ -1,47 +0,0 @@
|
|||||||
use std::cmp::{max, min};
|
|
||||||
use std::path::PathBuf;
|
|
||||||
use std::fs::{read_dir, read_to_string, write};
|
|
||||||
use std::thread::sleep;
|
|
||||||
use std::time::Duration;
|
|
||||||
|
|
||||||
const MINTEMP : i32 = 50000;
|
|
||||||
const MAXTEMP : i32 = 80000;
|
|
||||||
const MINSTART : i32 = 60;
|
|
||||||
const MINSTOP : i32 = 29;
|
|
||||||
const MAXPWM : i32 = 255;
|
|
||||||
|
|
||||||
|
|
||||||
fn adjust(fan: &PathBuf, sensor: &PathBuf) {
|
|
||||||
let temp: i32 = read_to_string(sensor).unwrap().trim().parse().unwrap();
|
|
||||||
let prev_pwm: i32 = read_to_string(fan).unwrap().trim().parse().unwrap();
|
|
||||||
|
|
||||||
let mut pwm: i32;
|
|
||||||
pwm = (temp - MINTEMP) * 255 / (MAXTEMP - MINTEMP);
|
|
||||||
pwm = max(pwm, 0);
|
|
||||||
if pwm > 0 {
|
|
||||||
pwm = max(pwm, if prev_pwm < MINSTOP { MINSTART } else { MINSTOP });
|
|
||||||
pwm = min(pwm, MAXPWM);
|
|
||||||
}
|
|
||||||
//println!("sensor: {}, pwm: {}", temp, pwm);
|
|
||||||
write(fan, pwm.to_string()).unwrap();
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
let mut fans = Vec::new();
|
|
||||||
for hwmon_dir in ["/sys/devices/platform/p6-fan/hwmon", "/sys/devices/platform/p7-fan/hwmon"].iter() {
|
|
||||||
for dir in read_dir(hwmon_dir).unwrap() {
|
|
||||||
let mut p = dir.unwrap().path();
|
|
||||||
p.push("pwm1");
|
|
||||||
if p.exists() {
|
|
||||||
fans.push(p)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let fans = fans;
|
|
||||||
loop {
|
|
||||||
for fan in &fans {
|
|
||||||
adjust(fan, &PathBuf::from("/sys/devices/virtual/thermal/thermal_zone0/hwmon0/temp1_input"))
|
|
||||||
}
|
|
||||||
sleep(Duration::from_secs(5));
|
|
||||||
}
|
|
||||||
}
|
|
38
machines/storage/s0/hardware-configuration.nix
Normal file
38
machines/storage/s0/hardware-configuration.nix
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "ahci" "usb_storage" ];
|
||||||
|
boot.initrd.kernelModules = [ "dm-snapshot" ];
|
||||||
|
boot.kernelModules = [ ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/mapper/vg-root";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=root" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/home" =
|
||||||
|
{ device = "/dev/mapper/vg-root";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=home" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/DF1E-0D0D";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/c7156f71-68f3-4f7a-bec0-06bdfa63f6c0"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
|
||||||
|
}
|
@ -1,42 +0,0 @@
|
|||||||
{ pkgs, lib, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Fan speed adjustment
|
|
||||||
systemd.services.fans = {
|
|
||||||
wantedBy = ["multi-user.target"];
|
|
||||||
serviceConfig.ExecStart = pkgs.runCommandCC "fans" { nativeBuildInputs = [ pkgs.rustc ]; } ''
|
|
||||||
rustc ${./fancontrol.rs} -o $out
|
|
||||||
'';
|
|
||||||
serviceConfig.Restart = "always";
|
|
||||||
};
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
kernelPackages = pkgs.linuxPackagesFor (pkgs.callPackage ./kernel.nix {});
|
|
||||||
#kernelPackages = pkgs.linuxPackages_latest;
|
|
||||||
kernelParams = ["panic=3" "boot.shell_on_fail"];
|
|
||||||
loader.grub.enable = false;
|
|
||||||
loader.generic-extlinux-compatible.enable = true;
|
|
||||||
initrd.postDeviceCommands = ''
|
|
||||||
(
|
|
||||||
cd /sys/bus/platform/drivers/sdhci-arasan
|
|
||||||
while true; do
|
|
||||||
test -e fe330000.sdhci/mmc_host/mmc*/mmc*/block && break
|
|
||||||
echo fe330000.sdhci > unbind
|
|
||||||
echo fe330000.sdhci > bind
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
)
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.disable-offload = {
|
|
||||||
wantedBy = ["sys-devices-platform-fe300000.ethernet-net-eth0.device" "multi-user.targtet"];
|
|
||||||
after = ["sys-devices-platform-fe300000.ethernet-net-eth0.device"];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
ExecStart = "${pkgs.ethtool}/bin/ethtool --offload eth0 tx off";
|
|
||||||
Restart = "on-failure";
|
|
||||||
RestartSec = "10";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
62
machines/storage/s0/helios64/README.md
Normal file
62
machines/storage/s0/helios64/README.md
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
Kobol Helios64
|
||||||
|
==============
|
||||||
|
|
||||||
|
The `default.nix` module provides the required setup for the system to work.
|
||||||
|
|
||||||
|
The `recommended.nix` module adds recommended settings for the system.
|
||||||
|
|
||||||
|
Status
|
||||||
|
------
|
||||||
|
|
||||||
|
### Works
|
||||||
|
|
||||||
|
- SATA hard drives
|
||||||
|
- Ethernet (1gbps)
|
||||||
|
- Serial through USB type-c (`ttyS2`)
|
||||||
|
|
||||||
|
### Untested
|
||||||
|
|
||||||
|
- Ethernet (2.5gbps)
|
||||||
|
- DP video out
|
||||||
|
- UPS behaviour
|
||||||
|
- `rootfs` on SATA drives
|
||||||
|
|
||||||
|
### Disabled
|
||||||
|
|
||||||
|
Due to misbehaviour, `ttyS0` (`&uart0`, `serial@ff180000`) has been disabled
|
||||||
|
via a kernel patch.
|
||||||
|
|
||||||
|
Without this change, using, or attempting to use `ttyS0` will break serial
|
||||||
|
output from `ttyS2`.
|
||||||
|
|
||||||
|
|
||||||
|
Kernel
|
||||||
|
------
|
||||||
|
|
||||||
|
Only Linux 5.10 (LTS) is supported, using the patch set derived from Armbian.
|
||||||
|
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
|
||||||
|
A *platform firmware* needs to be provided out of band for the system.
|
||||||
|
|
||||||
|
The author recommends Tow-Boot, for which a [draft pull request](https://github.com/Tow-Boot/Tow-Boot/pull/54)
|
||||||
|
adds support for the Helios64.
|
||||||
|
|
||||||
|
Any other supported *platform firmware* should work too.
|
||||||
|
|
||||||
|
> **NOTE**: at the time of writing (2021-10-10) the *platform firmware*
|
||||||
|
> **must** make use of the proprietary ram training. The open source equivalent
|
||||||
|
> will make the system unstable, and worse, will cause silent memory
|
||||||
|
> corruption, in addition to loud memory corruption.
|
||||||
|
|
||||||
|
|
||||||
|
Notes
|
||||||
|
-----
|
||||||
|
|
||||||
|
### Baud rate
|
||||||
|
|
||||||
|
The serial baud rate is configured for `115200`, which is a more common default
|
||||||
|
than the usual for Rockchip at `1500000`. See [the rationale for the decision](https://github.com/Tow-Boot/Tow-Boot/pull/33).
|
||||||
|
|
22
machines/storage/s0/helios64/default.nix
Normal file
22
machines/storage/s0/helios64/default.nix
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./modules/fancontrol.nix
|
||||||
|
./modules/heartbeat.nix
|
||||||
|
./modules/ups.nix
|
||||||
|
./modules/usbnet.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(import ./overlay.nix)
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.kernelParams = lib.mkAfter [
|
||||||
|
"console=ttyS2,115200n8"
|
||||||
|
"earlyprintk"
|
||||||
|
"earlycon=uart8250,mmio32,0xff1a0000"
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux_5_10_helios64;
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
# This is used to change the default configuration of Realtek USB ethernet adapters
|
||||||
|
|
||||||
|
ACTION!="add", GOTO="usb_realtek_net_end"
|
||||||
|
SUBSYSTEM!="usb", GOTO="usb_realtek_net_end"
|
||||||
|
ENV{DEVTYPE}!="usb_device", GOTO="usb_realtek_net_end"
|
||||||
|
|
||||||
|
# Modify this to change the default value
|
||||||
|
ENV{REALTEK_NIC_MODE}="1"
|
||||||
|
|
||||||
|
# Realtek
|
||||||
|
ATTR{idVendor}=="0bda", ATTR{idProduct}=="8156", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
ATTR{idVendor}=="0bda", ATTR{idProduct}=="8153", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
ATTR{idVendor}=="0bda", ATTR{idProduct}=="8152", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
|
||||||
|
# Samsung
|
||||||
|
ATTR{idVendor}=="04e8", ATTR{idProduct}=="a101", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
|
||||||
|
# Lenovo
|
||||||
|
ATTR{idVendor}=="17ef", ATTR{idProduct}=="304f", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
ATTR{idVendor}=="17ef", ATTR{idProduct}=="3052", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
ATTR{idVendor}=="17ef", ATTR{idProduct}=="3054", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
ATTR{idVendor}=="17ef", ATTR{idProduct}=="3057", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
ATTR{idVendor}=="17ef", ATTR{idProduct}=="3082", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
ATTR{idVendor}=="17ef", ATTR{idProduct}=="7205", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
ATTR{idVendor}=="17ef", ATTR{idProduct}=="720a", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
ATTR{idVendor}=="17ef", ATTR{idProduct}=="720b", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
ATTR{idVendor}=="17ef", ATTR{idProduct}=="720c", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
ATTR{idVendor}=="17ef", ATTR{idProduct}=="721e", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
ATTR{idVendor}=="17ef", ATTR{idProduct}=="a359", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
ATTR{idVendor}=="17ef", ATTR{idProduct}=="a387", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
|
||||||
|
# TP-LINK
|
||||||
|
ATTR{idVendor}=="2357", ATTR{idProduct}=="0601", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
|
||||||
|
# Nvidia
|
||||||
|
ATTR{idVendor}=="0955", ATTR{idProduct}=="09ff", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
|
||||||
|
|
||||||
|
LABEL="usb_realtek_net_end"
|
@ -0,0 +1 @@
|
|||||||
|
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="r8152", KERNEL=="eth1", NAME="eth1"
|
23
machines/storage/s0/helios64/modules/bsp/90-helios64-hwmon.rules
Executable file
23
machines/storage/s0/helios64/modules/bsp/90-helios64-hwmon.rules
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
# Helios64 persistent hwmon
|
||||||
|
|
||||||
|
ACTION=="remove", GOTO="helios64_hwmon_end"
|
||||||
|
|
||||||
|
#
|
||||||
|
KERNELS=="p6-fan", SUBSYSTEMS=="platform", ENV{_HELIOS64_FAN_}="p6", ENV{_IS_HELIOS64_FAN_}="1", ENV{IS_HELIOS64_HWMON}="1"
|
||||||
|
KERNELS=="p7-fan", SUBSYSTEMS=="platform", ENV{_HELIOS64_FAN_}="p7", ENV{_IS_HELIOS64_FAN_}="1", ENV{IS_HELIOS64_HWMON}="1"
|
||||||
|
KERNELS=="2-004c", SUBSYSTEMS=="i2c", DRIVERS=="lm75", ENV{IS_HELIOS64_HWMON}="1"
|
||||||
|
|
||||||
|
SUBSYSTEM!="hwmon", GOTO="helios64_hwmon_end"
|
||||||
|
|
||||||
|
ENV{HWMON_PATH}="/sys%p"
|
||||||
|
#
|
||||||
|
ATTR{name}=="cpu", ENV{IS_HELIOS64_HWMON}="1", ENV{HELIOS64_SYMLINK}="/dev/thermal-cpu"
|
||||||
|
#
|
||||||
|
ENV{IS_HELIOS64_HWMON}=="1", ATTR{name}=="lm75", ENV{HELIOS64_SYMLINK}="/dev/thermal-board"
|
||||||
|
ENV{_IS_HELIOS64_FAN_}=="1", ENV{HELIOS64_SYMLINK}="/dev/fan-$env{_HELIOS64_FAN_}"
|
||||||
|
|
||||||
|
#
|
||||||
|
ENV{IS_HELIOS64_HWMON}=="1", RUN+="/bin/ln -sf $env{HWMON_PATH} $env{HELIOS64_SYMLINK}"
|
||||||
|
|
||||||
|
LABEL="helios64_hwmon_end"
|
||||||
|
|
@ -0,0 +1,11 @@
|
|||||||
|
ACTION=="add", GOTO="helios64_ups_end"
|
||||||
|
ACTION=="remove", GOTO="helios64_ups_end"
|
||||||
|
|
||||||
|
# Power loss event
|
||||||
|
ACTION=="change", SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTRS{online}=="0", RUN+="/usr/bin/systemctl start helios64-ups.timer"
|
||||||
|
|
||||||
|
# Power restore event
|
||||||
|
ACTION=="change", SUBSYSTEM=="power_supply", ATTR{type}=="Mains", ATTRS{online}=="1", RUN+="/usr/bin/systemctl stop helios64-ups.timer"
|
||||||
|
|
||||||
|
LABEL="helios64_ups_end"
|
||||||
|
|
41
machines/storage/s0/helios64/modules/fancontrol.nix
Normal file
41
machines/storage/s0/helios64/modules/fancontrol.nix
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
hardware.fancontrol.enable = true;
|
||||||
|
hardware.fancontrol.config = ''
|
||||||
|
# Helios64 PWM Fan Control Configuration
|
||||||
|
# Temp source : /dev/thermal-cpu
|
||||||
|
INTERVAL=10
|
||||||
|
FCTEMPS=/dev/fan-p6/pwm1=/dev/thermal-cpu/temp1_input /dev/fan-p7/pwm1=/dev/thermal-cpu/temp1_input
|
||||||
|
MINTEMP=/dev/fan-p6/pwm1=40 /dev/fan-p7/pwm1=40
|
||||||
|
MAXTEMP=/dev/fan-p6/pwm1=80 /dev/fan-p7/pwm1=80
|
||||||
|
MINSTART=/dev/fan-p6/pwm1=60 /dev/fan-p7/pwm1=60
|
||||||
|
MINSTOP=/dev/fan-p6/pwm1=29 /dev/fan-p7/pwm1=29
|
||||||
|
MINPWM=20
|
||||||
|
'';
|
||||||
|
|
||||||
|
services.udev.packages = [
|
||||||
|
# Fan control
|
||||||
|
(pkgs.callPackage (
|
||||||
|
{ stdenv, lib, coreutils }:
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "helios64-udev-fancontrol";
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p "$out/etc/udev/rules.d/";
|
||||||
|
install -Dm644 "${./bsp/90-helios64-hwmon.rules}" \
|
||||||
|
"$out/etc/udev/rules.d/90-helios64-hwmon.rules"
|
||||||
|
substituteInPlace "$out/etc/udev/rules.d/90-helios64-hwmon.rules" \
|
||||||
|
--replace '/bin/ln' '${lib.getBin coreutils}/bin/ln'
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Udev rules for fancontrol for the Helios64";
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
) {})
|
||||||
|
];
|
||||||
|
}
|
20
machines/storage/s0/helios64/modules/heartbeat.nix
Normal file
20
machines/storage/s0/helios64/modules/heartbeat.nix
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{ pkgs, lib, ... }:
|
||||||
|
{
|
||||||
|
systemd.services.heartbeat = {
|
||||||
|
enable = true;
|
||||||
|
description = "Enable heartbeat & network activity led on Helios64";
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = ''
|
||||||
|
${lib.getBin pkgs.bash}/bin/bash -c 'echo heartbeat | ${lib.getBin pkgs.coreutils}/bin/tee /sys/class/leds/helios64\\:\\:status/trigger'
|
||||||
|
${lib.getBin pkgs.bash}/bin/bash -c 'echo netdev | ${lib.getBin pkgs.coreutils}/bin/tee /sys/class/leds/helios64\\:blue\\:net/trigger'
|
||||||
|
${lib.getBin pkgs.bash}/bin/bash -c 'echo eth0 | ${lib.getBin pkgs.coreutils}/bin/tee /sys/class/leds/helios64\\:blue\\:net/device_name'
|
||||||
|
${lib.getBin pkgs.bash}/bin/bash -c 'echo 1 | ${lib.getBin pkgs.coreutils}/bin/tee /sys/class/leds/helios64\\:blue\\:net/link'
|
||||||
|
${lib.getBin pkgs.bash}/bin/bash -c 'echo 1 | ${lib.getBin pkgs.coreutils}/bin/tee /sys/class/leds/helios64\\:blue\\:net/rx'
|
||||||
|
${lib.getBin pkgs.bash}/bin/bash -c 'echo 1 | ${lib.getBin pkgs.coreutils}/bin/tee /sys/class/leds/helios64\\:blue\\:net/tx'
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
after = [ "getty.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
}
|
51
machines/storage/s0/helios64/modules/ups.nix
Normal file
51
machines/storage/s0/helios64/modules/ups.nix
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
systemd.services.helios64-ups = {
|
||||||
|
enable = true;
|
||||||
|
description = "Helios64 UPS Action";
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = "${pkgs.systemd}/bin/poweroff";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.timers.helios64-ups = {
|
||||||
|
enable = true;
|
||||||
|
description = "Helios64 UPS Shutdown timer on power loss";
|
||||||
|
# disabling the timer by default. Even though armbian enaled
|
||||||
|
# the timer by default through this, we don't, as we can't
|
||||||
|
# rely on the udev rules to disable it after a system switch.
|
||||||
|
# wantedBy = [ "multi-user.target" ];
|
||||||
|
timerConfig = {
|
||||||
|
OnActiveSec = "10m";
|
||||||
|
AccuracySec = "1s";
|
||||||
|
Unit = "helios64-ups.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# The udev rule that will trigger the above service.
|
||||||
|
services.udev.packages = [
|
||||||
|
(pkgs.callPackage (
|
||||||
|
{ stdenv, lib, coreutils, systemd }:
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "helios64-udev-ups";
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p "$out/etc/udev/rules.d/";
|
||||||
|
install -Dm644 "${./bsp/90-helios64-ups.rules}" \
|
||||||
|
"$out/etc/udev/rules.d/90-helios64-ups.rules"
|
||||||
|
substituteInPlace "$out/etc/udev/rules.d/90-helios64-ups.rules" \
|
||||||
|
--replace '/bin/ln' '${lib.getBin coreutils}/bin/ln' \
|
||||||
|
--replace '/usr/bin/systemctl' '${lib.getBin systemd}/bin/systemctl'
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Udev rules for UPS for the Helios64";
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
) {})
|
||||||
|
];
|
||||||
|
}
|
32
machines/storage/s0/helios64/modules/usbnet.nix
Normal file
32
machines/storage/s0/helios64/modules/usbnet.nix
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.udev.packages = [
|
||||||
|
# this one will set the usb net ethernet into the right mode
|
||||||
|
# and stop it from spamming the console.
|
||||||
|
(pkgs.callPackage (
|
||||||
|
{ stdenv, lib, coreutils }:
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
name = "helios64-udev-usb-net";
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
dontBuild = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p "$out/etc/udev/rules.d/";
|
||||||
|
install -Dm644 "${./bsp/50-usb-realtek-net.rules}" \
|
||||||
|
"$out/etc/udev/rules.d/50-usb-realtek-net.rules"
|
||||||
|
install -Dm644 "${./bsp/70-keep-usb-lan-as-eth1.rules}" \
|
||||||
|
"$out/etc/udev/rules.d/70-keep-usb-lan-as-eth1.rules"
|
||||||
|
substituteInPlace "$out/etc/udev/rules.d/50-usb-realtek-net.rules" \
|
||||||
|
--replace '/bin/ln' '${lib.getBin coreutils}/bin/ln'
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Udev rules for the USB network interface for the Helios64";
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
) {})
|
||||||
|
];
|
||||||
|
}
|
75
machines/storage/s0/helios64/overlay.nix
Normal file
75
machines/storage/s0/helios64/overlay.nix
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
self: super: {
|
||||||
|
linux_5_10_helios64 = self.linux_5_10.override {
|
||||||
|
|
||||||
|
kernelPatches = [
|
||||||
|
{
|
||||||
|
name = "helios64-patch-set.patch";
|
||||||
|
patch = self.fetchurl {
|
||||||
|
# v5.10.68..v5.10-helios64-2021-10-10 @ https://github.com/samueldr/linux
|
||||||
|
# Hosted as a pre-rendered patch because `fetchpatch` strips added files.
|
||||||
|
url = "https://gist.githubusercontent.com/samueldr/1a409f88f2107054c87a70403686b871/raw/abee3d5d5415c466f8111371b63f759f614547c6/helios64.patch";
|
||||||
|
sha256 = "1gx2z345vb4r2mdfmydbzc5baj58rrn416rzb2fz7azxpyib5ym4";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{ name = "115200 baud"; patch = ./115200baud.patch; }
|
||||||
|
];
|
||||||
|
|
||||||
|
# Configuration mainly to remove unused platforms and things.
|
||||||
|
structuredExtraConfig = with self.lib.kernel; {
|
||||||
|
ARCH_ROCKCHIP = yes;
|
||||||
|
|
||||||
|
ARCH_ACTIONS = no;
|
||||||
|
ARCH_AGILEX = no;
|
||||||
|
ARCH_SUNXI = no;
|
||||||
|
ARCH_ALPINE = no;
|
||||||
|
ARCH_BCM2835 = no;
|
||||||
|
ARCH_BERLIN = no;
|
||||||
|
ARCH_BRCMSTB = no;
|
||||||
|
ARCH_EXYNOS = no;
|
||||||
|
ARCH_K3 = no;
|
||||||
|
ARCH_LAYERSCAPE = no;
|
||||||
|
ARCH_LG1K = no;
|
||||||
|
ARCH_HISI = no;
|
||||||
|
ARCH_MEDIATEK = no;
|
||||||
|
ARCH_MESON = no;
|
||||||
|
ARCH_MVEBU = no;
|
||||||
|
ARCH_MXC = no;
|
||||||
|
ARCH_QCOM = no;
|
||||||
|
ARCH_RENESAS = no;
|
||||||
|
ARCH_S32 = no;
|
||||||
|
ARCH_SEATTLE = no;
|
||||||
|
ARCH_STRATIX10 = no;
|
||||||
|
ARCH_SYNQUACER = no;
|
||||||
|
ARCH_TEGRA = no;
|
||||||
|
ARCH_SPRD = no;
|
||||||
|
ARCH_THUNDER = no;
|
||||||
|
ARCH_THUNDER2 = no;
|
||||||
|
ARCH_UNIPHIER = no;
|
||||||
|
ARCH_VEXPRESS = no;
|
||||||
|
ARCH_VISCONTI = no;
|
||||||
|
ARCH_XGENE = no;
|
||||||
|
ARCH_ZX = no;
|
||||||
|
ARCH_ZYNQMP = no;
|
||||||
|
ARCH_RANDOM = no;
|
||||||
|
ARCH_R8A77995 = no;
|
||||||
|
ARCH_R8A77990 = no;
|
||||||
|
ARCH_R8A77950 = no;
|
||||||
|
ARCH_R8A77951 = no;
|
||||||
|
ARCH_R8A77965 = no;
|
||||||
|
ARCH_R8A77960 = no;
|
||||||
|
ARCH_R8A77961 = no;
|
||||||
|
ARCH_R8A77980 = no;
|
||||||
|
ARCH_R8A77970 = no;
|
||||||
|
ARCH_R8A774C0 = no;
|
||||||
|
ARCH_R8A774E1 = no;
|
||||||
|
ARCH_R8A774A1 = no;
|
||||||
|
ARCH_R8A774B1 = no;
|
||||||
|
ARCH_STACKWALK = no;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Force modules closure to be built even if some modules are missing
|
||||||
|
# (Workaround for a NixOS change in strictness)
|
||||||
|
makeModulesClosure = x:
|
||||||
|
super.makeModulesClosure (x // { allowMissing = true; });
|
||||||
|
}
|
8
machines/storage/s0/helios64/recommended.nix
Normal file
8
machines/storage/s0/helios64/recommended.nix
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
# Since 20.03, you must explicitly specify to use dhcp on an interface
|
||||||
|
networking.interfaces.eth0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
# Helps with 4GiB of RAM
|
||||||
|
zramSwap.enable = lib.mkDefault true;
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -1,437 +0,0 @@
|
|||||||
From 09e006cfb43e8ec38afe28278b210dab72e6cac8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <uwe@kleine-koenig.org>
|
|
||||||
Date: Wed, 14 Oct 2020 22:00:30 +0200
|
|
||||||
Subject: arm64: dts: rockchip: Add basic support for Kobol's Helios64
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
The hardware is described in detail on Kobol's wiki at
|
|
||||||
https://wiki.kobol.io/helios64/intro/.
|
|
||||||
|
|
||||||
Up to now the following peripherals are working:
|
|
||||||
|
|
||||||
- UART
|
|
||||||
- Micro-SD card
|
|
||||||
- eMMC
|
|
||||||
- ethernet port 1
|
|
||||||
- status LED
|
|
||||||
- temperature sensor on i2c bus 2
|
|
||||||
|
|
||||||
Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org>
|
|
||||||
Link: https://lore.kernel.org/r/20201014200030.845759-3-uwe@kleine-koenig.org
|
|
||||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
|
||||||
---
|
|
||||||
arch/arm64/boot/dts/rockchip/Makefile | 1 +
|
|
||||||
.../boot/dts/rockchip/rk3399-kobol-helios64.dts | 372 +++++++++++++++++++++
|
|
||||||
2 files changed, 373 insertions(+)
|
|
||||||
create mode 100644 arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
|
|
||||||
index 26661c7b736b7..28b26a874313e 100644
|
|
||||||
--- a/arch/arm64/boot/dts/rockchip/Makefile
|
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/Makefile
|
|
||||||
@@ -26,6 +26,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-hugsun-x99.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-khadas-edge.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-khadas-edge-captain.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-khadas-edge-v.dtb
|
|
||||||
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-kobol-helios64.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-leez-p710.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopc-t4.dtb
|
|
||||||
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-nanopi-m4.dtb
|
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts b/arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000..2a561be724b22
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts
|
|
||||||
@@ -0,0 +1,387 @@
|
|
||||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
|
||||||
+/*
|
|
||||||
+ * Copyright (c) 2020 Aditya Prayoga <aditya@kobol.io>
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ * The Kobol Helios64 is a board designed to operate as a NAS and optionally
|
|
||||||
+ * ships with an enclosing that can host five 2.5" hard disks.
|
|
||||||
+ *
|
|
||||||
+ * See https://wiki.kobol.io/helios64/intro/ for further details.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+/dts-v1/;
|
|
||||||
+#include "rk3399.dtsi"
|
|
||||||
+#include "rk3399-opp.dtsi"
|
|
||||||
+
|
|
||||||
+/ {
|
|
||||||
+ model = "Kobol Helios64";
|
|
||||||
+ compatible = "kobol,helios64", "rockchip,rk3399";
|
|
||||||
+
|
|
||||||
+ avdd_1v8_s0: avdd-1v8-s0 {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "avdd_1v8_s0";
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ regulator-min-microvolt = <1800000>;
|
|
||||||
+ regulator-max-microvolt = <1800000>;
|
|
||||||
+ vin-supply = <&vcc3v3_sys_s3>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ clkin_gmac: external-gmac-clock {
|
|
||||||
+ compatible = "fixed-clock";
|
|
||||||
+ clock-frequency = <125000000>;
|
|
||||||
+ clock-output-names = "clkin_gmac";
|
|
||||||
+ #clock-cells = <0>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ leds {
|
|
||||||
+ compatible = "gpio-leds";
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&sys_grn_led_on &sys_red_led_on>;
|
|
||||||
+
|
|
||||||
+ led-0 {
|
|
||||||
+ label = "helios64:green:status";
|
|
||||||
+ gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ default-state = "on";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ led-1 {
|
|
||||||
+ label = "helios64:red:fault";
|
|
||||||
+ gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ default-state = "keep";
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vcc1v8_sys_s0: vcc1v8-sys-s0 {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "vcc1v8_sys_s0";
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ regulator-min-microvolt = <1800000>;
|
|
||||||
+ regulator-max-microvolt = <1800000>;
|
|
||||||
+ vin-supply = <&vcc1v8_sys_s3>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vcc3v0_sd: vcc3v0-sd {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ enable-active-high;
|
|
||||||
+ gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ regulator-name = "vcc3v0_sd";
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ regulator-min-microvolt = <3000000>;
|
|
||||||
+ regulator-max-microvolt = <3000000>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&sdmmc0_pwr_h>;
|
|
||||||
+ vin-supply = <&vcc3v3_sys_s3>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vcc3v3_sys_s3: vcc_lan: vcc3v3-sys-s3 {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "vcc3v3_sys_s3";
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ regulator-min-microvolt = <3300000>;
|
|
||||||
+ regulator-max-microvolt = <3300000>;
|
|
||||||
+ vin-supply = <&vcc5v0_sys>;
|
|
||||||
+
|
|
||||||
+ regulator-state-mem {
|
|
||||||
+ regulator-on-in-suspend;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vcc5v0_sys: vcc5v0-sys {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "vcc5v0_sys";
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ regulator-min-microvolt = <5000000>;
|
|
||||||
+ regulator-max-microvolt = <5000000>;
|
|
||||||
+ vin-supply = <&vcc12v_dcin_bkup>;
|
|
||||||
+
|
|
||||||
+ regulator-state-mem {
|
|
||||||
+ regulator-on-in-suspend;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vcc12v_dcin: vcc12v-dcin {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "vcc12v_dcin";
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ regulator-min-microvolt = <12000000>;
|
|
||||||
+ regulator-max-microvolt = <12000000>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vcc12v_dcin_bkup: vcc12v-dcin-bkup {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "vcc12v_dcin_bkup";
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ regulator-min-microvolt = <12000000>;
|
|
||||||
+ regulator-max-microvolt = <12000000>;
|
|
||||||
+ vin-supply = <&vcc12v_dcin>;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ * The system doesn't run stable with cpu freq enabled, so disallow the lower
|
|
||||||
+ * frequencies until this problem is properly understood and resolved.
|
|
||||||
+ */
|
|
||||||
+&cluster0_opp {
|
|
||||||
+ /delete-node/ opp00;
|
|
||||||
+ /delete-node/ opp01;
|
|
||||||
+ /delete-node/ opp02;
|
|
||||||
+ /delete-node/ opp03;
|
|
||||||
+ /delete-node/ opp04;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&cluster1_opp {
|
|
||||||
+ /delete-node/ opp00;
|
|
||||||
+ /delete-node/ opp01;
|
|
||||||
+ /delete-node/ opp02;
|
|
||||||
+ /delete-node/ opp03;
|
|
||||||
+ /delete-node/ opp04;
|
|
||||||
+ /delete-node/ opp05;
|
|
||||||
+ /delete-node/ opp06;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&cpu_b0 {
|
|
||||||
+ cpu-supply = <&vdd_cpu_b>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&cpu_b1 {
|
|
||||||
+ cpu-supply = <&vdd_cpu_b>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&cpu_l0 {
|
|
||||||
+ cpu-supply = <&vdd_cpu_l>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&cpu_l1 {
|
|
||||||
+ cpu-supply = <&vdd_cpu_l>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&cpu_l2 {
|
|
||||||
+ cpu-supply = <&vdd_cpu_l>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&cpu_l3 {
|
|
||||||
+ cpu-supply = <&vdd_cpu_l>;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&emmc_phy {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&gmac {
|
|
||||||
+ assigned-clock-parents = <&clkin_gmac>;
|
|
||||||
+ assigned-clocks = <&cru SCLK_RMII_SRC>;
|
|
||||||
+ clock_in_out = "input";
|
|
||||||
+ phy-mode = "rgmii";
|
|
||||||
+ phy-supply = <&vcc_lan>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&rgmii_pins &gphy_reset>;
|
|
||||||
+ rx_delay = <0x20>;
|
|
||||||
+ tx_delay = <0x28>;
|
|
||||||
+ snps,reset-active-low;
|
|
||||||
+ snps,reset-delays-us = <0 10000 50000>;
|
|
||||||
+ snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&i2c0 {
|
|
||||||
+ clock-frequency = <400000>;
|
|
||||||
+ i2c-scl-rising-time-ns = <168>;
|
|
||||||
+ i2c-scl-falling-time-ns = <4>;
|
|
||||||
+ status = "okay";
|
|
||||||
+
|
|
||||||
+ rk808: pmic@1b {
|
|
||||||
+ compatible = "rockchip,rk808";
|
|
||||||
+ reg = <0x1b>;
|
|
||||||
+ interrupt-parent = <&gpio0>;
|
|
||||||
+ interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
|
|
||||||
+ clock-output-names = "xin32k", "rk808-clkout2";
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pmic_int_l>;
|
|
||||||
+ vcc1-supply = <&vcc5v0_sys>;
|
|
||||||
+ vcc2-supply = <&vcc5v0_sys>;
|
|
||||||
+ vcc3-supply = <&vcc5v0_sys>;
|
|
||||||
+ vcc4-supply = <&vcc5v0_sys>;
|
|
||||||
+ vcc6-supply = <&vcc5v0_sys>;
|
|
||||||
+ vcc7-supply = <&vcc5v0_sys>;
|
|
||||||
+ vcc8-supply = <&vcc3v3_sys_s3>;
|
|
||||||
+ vcc9-supply = <&vcc5v0_sys>;
|
|
||||||
+ vcc10-supply = <&vcc5v0_sys>;
|
|
||||||
+ vcc11-supply = <&vcc5v0_sys>;
|
|
||||||
+ vcc12-supply = <&vcc3v3_sys_s3>;
|
|
||||||
+ vddio-supply = <&vcc3v0_s3>;
|
|
||||||
+ wakeup-source;
|
|
||||||
+ #clock-cells = <1>;
|
|
||||||
+
|
|
||||||
+ regulators {
|
|
||||||
+ vdd_cpu_l: DCDC_REG2 {
|
|
||||||
+ regulator-name = "vdd_cpu_l";
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ regulator-min-microvolt = <750000>;
|
|
||||||
+ regulator-max-microvolt = <1350000>;
|
|
||||||
+ regulator-ramp-delay = <6001>;
|
|
||||||
+
|
|
||||||
+ regulator-state-mem {
|
|
||||||
+ regulator-off-in-suspend;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vcc1v8_sys_s3: DCDC_REG4 {
|
|
||||||
+ regulator-name = "vcc1v8_sys_s3";
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ regulator-min-microvolt = <1800000>;
|
|
||||||
+ regulator-max-microvolt = <1800000>;
|
|
||||||
+
|
|
||||||
+ regulator-state-mem {
|
|
||||||
+ regulator-on-in-suspend;
|
|
||||||
+ regulator-suspend-microvolt = <1800000>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vcc_sdio_s0: LDO_REG4 {
|
|
||||||
+ regulator-name = "vcc_sdio_s0";
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ regulator-min-microvolt = <1800000>;
|
|
||||||
+ regulator-max-microvolt = <3000000>;
|
|
||||||
+
|
|
||||||
+ regulator-state-mem {
|
|
||||||
+ regulator-on-in-suspend;
|
|
||||||
+ regulator-suspend-microvolt = <3000000>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vcc3v0_s3: LDO_REG8 {
|
|
||||||
+ regulator-name = "vcc3v0_s3";
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ regulator-min-microvolt = <3000000>;
|
|
||||||
+ regulator-max-microvolt = <3000000>;
|
|
||||||
+
|
|
||||||
+ regulator-state-mem {
|
|
||||||
+ regulator-on-in-suspend;
|
|
||||||
+ regulator-suspend-microvolt = <3000000>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vdd_cpu_b: regulator@40 {
|
|
||||||
+ compatible = "silergy,syr827";
|
|
||||||
+ reg = <0x40>;
|
|
||||||
+ fcs,suspend-voltage-selector = <1>;
|
|
||||||
+ regulator-name = "vdd_cpu_b";
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ regulator-min-microvolt = <712500>;
|
|
||||||
+ regulator-max-microvolt = <1500000>;
|
|
||||||
+ regulator-ramp-delay = <1000>;
|
|
||||||
+ vin-supply = <&vcc5v0_sys>;
|
|
||||||
+
|
|
||||||
+ regulator-state-mem {
|
|
||||||
+ regulator-off-in-suspend;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&i2c2 {
|
|
||||||
+ clock-frequency = <400000>;
|
|
||||||
+ i2c-scl-rising-time-ns = <160>;
|
|
||||||
+ i2c-scl-falling-time-ns = <30>;
|
|
||||||
+ status = "okay";
|
|
||||||
+
|
|
||||||
+ temp@4c {
|
|
||||||
+ compatible = "national,lm75";
|
|
||||||
+ reg = <0x4c>;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&io_domains {
|
|
||||||
+ audio-supply = <&vcc1v8_sys_s0>;
|
|
||||||
+ bt656-supply = <&vcc1v8_sys_s0>;
|
|
||||||
+ gpio1830-supply = <&vcc3v0_s3>;
|
|
||||||
+ sdmmc-supply = <&vcc_sdio_s0>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pcie0 {
|
|
||||||
+ num-lanes = <2>;
|
|
||||||
+ max-link-speed = <2>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pcie_prst &pcie_clkreqn_cpm>;
|
|
||||||
+ vpcie12v-supply = <&vcc12v_dcin>;
|
|
||||||
+ vpcie3v3-supply = <&pcie_power>;
|
|
||||||
+ vpcie1v8-supply = <&avdd_1v8_s0>;
|
|
||||||
+ vpcie0v9-supply = <&avdd_0v9_s0>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pcie_phy {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pinctrl {
|
|
||||||
+ gmac {
|
|
||||||
+ gphy_reset: gphy-reset {
|
|
||||||
+ rockchip,pins = <3 RK_PB7 RK_FUNC_GPIO &pcfg_output_low>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ leds {
|
|
||||||
+ sys_grn_led_on: sys-grn-led-on {
|
|
||||||
+ rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ sys_red_led_on: sys-red-led-on {
|
|
||||||
+ rockchip,pins = <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_down>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pmic {
|
|
||||||
+ pmic_int_l: pmic-int-l {
|
|
||||||
+ rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ vcc3v0-sd {
|
|
||||||
+ sdmmc0_pwr_h: sdmmc0-pwr-h {
|
|
||||||
+ rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pmu_io_domains {
|
|
||||||
+ pmu1830-supply = <&vcc3v0_s3>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&sdhci {
|
|
||||||
+ bus-width = <8>;
|
|
||||||
+ mmc-hs200-1_8v;
|
|
||||||
+ non-removable;
|
|
||||||
+ vqmmc-supply = <&vcc1v8_sys_s0>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&sdmmc {
|
|
||||||
+ bus-width = <4>;
|
|
||||||
+ cap-sd-highspeed;
|
|
||||||
+ cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
|
|
||||||
+ disable-wp;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
|
|
||||||
+ vmmc-supply = <&vcc3v0_sd>;
|
|
||||||
+ vqmmc-supply = <&vcc_sdio_s0>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&uart2 {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
--
|
|
||||||
cgit 1.2.3-1.el7
|
|
@ -1,38 +0,0 @@
|
|||||||
From 62dbf80fc581a8eed7288ed7aca24446054eb616 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <uwe@kleine-koenig.org>
|
|
||||||
Date: Mon, 2 Nov 2020 16:06:58 +0100
|
|
||||||
Subject: dt-bindings: arm: rockchip: Add Kobol Helios64
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
Document the new board by Kobol introduced recently in
|
|
||||||
rockchip/rk3399-kobol-helios64.dts.
|
|
||||||
|
|
||||||
Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org>
|
|
||||||
Acked-by: Rob Herring <robh@kernel.org>
|
|
||||||
Link: https://lore.kernel.org/r/20201102150658.167161-1-uwe@kleine-koenig.org
|
|
||||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
|
||||||
---
|
|
||||||
Documentation/devicetree/bindings/arm/rockchip.yaml | 5 +++++
|
|
||||||
1 file changed, 5 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml
|
|
||||||
index 65b4cc2c63f7c..70fa4d98db564 100644
|
|
||||||
--- a/Documentation/devicetree/bindings/arm/rockchip.yaml
|
|
||||||
+++ b/Documentation/devicetree/bindings/arm/rockchip.yaml
|
|
||||||
@@ -381,6 +381,11 @@ properties:
|
|
||||||
- khadas,edge-v
|
|
||||||
- const: rockchip,rk3399
|
|
||||||
|
|
||||||
+ - description: Kobol Helios64
|
|
||||||
+ items:
|
|
||||||
+ - const: kobol,helios64
|
|
||||||
+ - const: rockchip,rk3399
|
|
||||||
+
|
|
||||||
- description: Mecer Xtreme Mini S6
|
|
||||||
items:
|
|
||||||
- const: mecer,xms6
|
|
||||||
--
|
|
||||||
cgit 1.2.3-1.el7
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,34 +0,0 @@
|
|||||||
From fa67f2817ff2c9bb07472d30e58d904922f1a538 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <uwe@kleine-koenig.org>
|
|
||||||
Date: Wed, 14 Oct 2020 22:00:29 +0200
|
|
||||||
Subject: dt-bindings: vendor-prefixes: Add kobol prefix
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
The prefix is already used in arm/armada-388-helios4.dts.
|
|
||||||
|
|
||||||
Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org>
|
|
||||||
Acked-by: Rob Herring <robh@kernel.org>
|
|
||||||
Link: https://lore.kernel.org/r/20201014200030.845759-2-uwe@kleine-koenig.org
|
|
||||||
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
|
||||||
---
|
|
||||||
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
|
||||||
index 2735be1a84709..259faf1b382c0 100644
|
|
||||||
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
|
||||||
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
|
|
||||||
@@ -553,6 +553,8 @@ patternProperties:
|
|
||||||
description: Kionix, Inc.
|
|
||||||
"^kobo,.*":
|
|
||||||
description: Rakuten Kobo Inc.
|
|
||||||
+ "^kobol,.*":
|
|
||||||
+ description: Kobol Innovations Pte. Ltd.
|
|
||||||
"^koe,.*":
|
|
||||||
description: Kaohsiung Opto-Electronics Inc.
|
|
||||||
"^kontron,.*":
|
|
||||||
--
|
|
||||||
cgit 1.2.3-1.el7
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
|||||||
From e7e9a3a959927094d59b67f46ecc1c5d50190ce8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aditya Prayoga <aditya@kobol.io>
|
|
||||||
Date: Tue, 15 Sep 2020 13:42:02 +0700
|
|
||||||
Subject: [PATCH] Remove PCIE ep-gpios from Helios64
|
|
||||||
|
|
||||||
Signed-off-by: Aditya Prayoga <aditya@kobol.io>
|
|
||||||
---
|
|
||||||
arch/arm64/boot/dts/rockchip/rk3399-helios64.dts | 1 -
|
|
||||||
1 file changed, 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts b/arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts
|
|
||||||
index c065ba82d..002c93912 100644
|
|
||||||
--- a/arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/rockchip/rk3399-kobol-helios64.dts
|
|
||||||
@@ -721,7 +721,6 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
&pcie0 {
|
|
||||||
- ep-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>;
|
|
||||||
num-lanes = <2>;
|
|
||||||
max-link-speed = <2>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
--
|
|
||||||
Created with Armbian build tools https://github.com/armbian/build
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
|||||||
From 002593cfe8fc7539a6aa2dfb246d832e0b8b8516 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aditya Prayoga <aditya@kobol.io>
|
|
||||||
Date: Tue, 15 Sep 2020 13:29:45 +0700
|
|
||||||
Subject: [PATCH] PCI: rockchip: support ep-gpio undefined case
|
|
||||||
|
|
||||||
Signed-off-by: Aditya Prayoga <aditya@kobol.io>
|
|
||||||
---
|
|
||||||
drivers/pci/controller/pcie-rockchip.c | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/pci/controller/pcie-rockchip.c b/drivers/pci/controller/pcie-rockchip.c
|
|
||||||
index c53d1322a..e4f42591d 100644
|
|
||||||
--- a/drivers/pci/controller/pcie-rockchip.c
|
|
||||||
+++ b/drivers/pci/controller/pcie-rockchip.c
|
|
||||||
@@ -119,9 +119,9 @@ int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rockchip->is_rc) {
|
|
||||||
- rockchip->ep_gpio = devm_gpiod_get(dev, "ep", GPIOD_OUT_HIGH);
|
|
||||||
+ rockchip->ep_gpio = devm_gpiod_get_optional(dev, "ep", GPIOD_OUT_HIGH);
|
|
||||||
if (IS_ERR(rockchip->ep_gpio)) {
|
|
||||||
- dev_err(dev, "missing ep-gpios property in node\n");
|
|
||||||
+ dev_err(dev, "invalid ep-gpios property in node\n");
|
|
||||||
return PTR_ERR(rockchip->ep_gpio);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
--
|
|
||||||
Created with Armbian build tools https://github.com/armbian/build
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
|||||||
From efb3ec2ca3a88530d45c593f051ec53f80a4c4d8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Moritz Angermann <moritz.angermann@gmail.com>
|
|
||||||
Date: Fri, 4 Dec 2020 17:00:03 +0800
|
|
||||||
Subject: [PATCH] Update rk3399-helios64-u-boot.dtsi
|
|
||||||
|
|
||||||
---
|
|
||||||
arch/arm/dts/rk3399-kobol-helios64-u-boot.dtsi | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/rk3399-kobol-helios64-u-boot.dtsi b/arch/arm/dts/rk3399-kobol-helios64-u-boot.dtsi
|
|
||||||
index 27ea5eaa971..3a260c7e126 100644
|
|
||||||
--- a/arch/arm/dts/rk3399-kobol-helios64-u-boot.dtsi
|
|
||||||
+++ b/arch/arm/dts/rk3399-kobol-helios64-u-boot.dtsi
|
|
||||||
@@ -16,7 +16,7 @@
|
|
||||||
|
|
||||||
chosen {
|
|
||||||
bootargs = "earlycon=uart8250,mmio32,0xff1a0000 earlyprintk";
|
|
||||||
- stdout-path = "serial2:1500000n8";
|
|
||||||
+ stdout-path = "serial2:115200n8";
|
|
||||||
u-boot,spl-boot-order = "same-as-spl", &spiflash, &sdmmc, &sdhci;
|
|
||||||
};
|
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user