Helios64 NAS
This commit is contained in:
parent
e5f21fc35e
commit
7feddbcceb
@ -2,11 +2,27 @@
|
||||
|
||||
{
|
||||
imports =[
|
||||
./helios64.nix
|
||||
./helios64
|
||||
];
|
||||
|
||||
# nsw2zwifzyl42mbhabayjo42b2kkq3wd3dqyl6efxsz6pvmgm5cup5ad.onion
|
||||
|
||||
nix.flakes.enable = true;
|
||||
|
||||
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;
|
||||
|
||||
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