diff --git a/devices/turris-omnia/default.nix b/devices/turris-omnia/default.nix new file mode 100644 index 0000000..dc0ee0d --- /dev/null +++ b/devices/turris-omnia/default.nix @@ -0,0 +1,111 @@ +{ + description = '' + Turris Omnia + ************ + ''; + + system = { + crossSystem = { + config = "armv7l-unknown-linux-musleabihf"; + }; + }; + + module = {pkgs, config, lib, ... }: + let openwrt = pkgs.openwrt; in { + imports = [ ../../modules/arch/arm.nix ]; + kernel = { + src = pkgs.pkgsBuildBuild.fetchurl { + name = "linux.tar.gz"; + url = "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.71.tar.gz"; + hash = "sha256-yhO2cXIeIgUxkSZf/4aAsF11uxyh+UUZu6D1h92vCD8="; + }; + extraPatchPhase = '' + ${pkgs.openwrt.applyPatches.mvebu} + ''; + config = { + PCI = "y"; + OF = "y"; + MEMORY = "y"; # for MVEBU_DEVBUS + DMADEVICES = "y"; # for MV_XOR + CPU_V7 = "y"; + ARCH_MULTIPLATFORM = "y"; + ARCH_MVEBU = "y"; + ARCH_MULTI_V7= "y"; + PCI_MVEBU = "y"; + AHCI_MVEBU = "y"; + MACH_ARMADA_38X = "y"; + SMP = "y"; + NR_CPUS = "4"; + VFP = "y"; + NEON= "y"; + + # WARNING: unmet direct dependencies detected for ARCH_WANT_LIBATA_LEDS + ATA = "y"; + + # switch is DSA + # CONFIG_NET_DSA_MV88E6060=y + # CONFIG_NET_DSA_MV88E6XXX=y + # CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y + + # CONFIG_REGMAP=y + # CONFIG_REGMAP_I2C=y + # CONFIG_REGMAP_SPI=y + # CONFIG_REGMAP_MMIO=y + + PSTORE = "y"; + PSTORE_RAM = "y"; + PSTORE_CONSOLE = "y"; + PSTORE_DEFLATE_COMPRESS = "n"; + + SERIAL_8250 = "y"; + SERIAL_8250_CONSOLE = "y"; + SERIAL_OF_PLATFORM="y"; + SERIAL_MVEBU_UART = "y"; + SERIAL_MVEBU_CONSOLE = "y"; + + SERIAL_8250_DMA= "y"; + SERIAL_8250_DW= "y"; + SERIAL_8250_EXTENDED= "y"; + SERIAL_8250_MANY_PORTS= "y"; + SERIAL_8250_SHARE_IRQ= "y"; + OF_ADDRESS= "y"; + OF_MDIO= "y"; + + MVEBU_DEVBUS= "y"; # "Device Bus controller ... flash devices such as NOR, NAND, SRAM, and FPGA" + MVMDIO= "y"; + MVNETA= "y"; + MVNETA_BM= "y"; + MVNETA_BM_ENABLE= "y"; + MVPP2= "y"; + MV_XOR= "y"; + }; + }; + boot = { + commandLine = [ "console=ttyS0,115200" ]; + imageFormat = "fit"; + }; + + hardware = { + defaultOutput = "flashimage"; + loadAddress = "0x00008000"; + entryPoint = "0x00008000"; + rootDevice = "/dev/mtdblock0"; + dts = { + src = "${config.system.outputs.kernel.modulesupport}/arch/arm/boot/dts/armada-385-turris-omnia.dts"; + includes = [ + # "${openwrt.src}/target/linux/mediatek/dts" + "${config.system.outputs.kernel.modulesupport}/arch/arm/boot/dts/" + ]; + }; + + networkInterfaces = + let + inherit (config.system.service.network) link; + inherit (config.system.service) bridge; + in rec { + lan = link.build { ifname = "eth0"; }; + }; + }; + + }; +} diff --git a/pkgs/kernel/default.nix b/pkgs/kernel/default.nix index 3929d63..d05b8b3 100644 --- a/pkgs/kernel/default.nix +++ b/pkgs/kernel/default.nix @@ -77,7 +77,7 @@ stdenv.mkDerivation rec { export KBUILD_OUTPUT=`pwd` cp ${kconfigFile} .config cp ${kconfigFile} .config.orig - make V=1 olddefconfig + make olddefconfig ''; checkConfigurationPhase = '' diff --git a/pkgs/openwrt/default.nix b/pkgs/openwrt/default.nix index 53bd0a5..c8f32f5 100644 --- a/pkgs/openwrt/default.nix +++ b/pkgs/openwrt/default.nix @@ -34,4 +34,5 @@ in { applyPatches.ath79 = doPatch "ath79"; applyPatches.ramips = doPatch "ramips"; applyPatches.mediatek = doPatch "mediatek"; # aarch64 + applyPatches.mvebu = doPatch "mvebu"; # arm }