1
1
mirror of https://github.com/NixOS/mobile-nixos.git synced 2024-12-16 20:21:32 +03:00
mobile-nixos/devices/asus-dumo/default.nix
2020-08-14 20:59:23 -04:00

87 lines
2.2 KiB
Nix

{ config, lib, pkgs, ... }:
{
mobile.device.name = "asus-dumo";
mobile.device.identity = {
name = "Chromebook Tablet CT100PA";
manufacturer = "Asus";
};
mobile.hardware = {
soc = "rockchip-op1";
ram = 1024 * 4;
screen = {
width = 1536; height = 2048;
};
};
mobile.boot.stage-1 = {
kernel.package = pkgs.callPackage ./kernel {};
};
mobile.system.depthcharge.kpart = {
dtbs = "${config.mobile.boot.stage-1.kernel.package}/dtbs/rockchip";
};
# Serial console on ttyS2, using a suzyqable or equivalent.
boot.kernelParams = [
"console=ttyS2,115200n8"
"earlyprintk=ttyS2,115200n8"
"vt.global_cursor_default=0"
];
mobile.system.type = "depthcharge";
mobile.device.firmware = pkgs.callPackage ./firmware {};
mobile.boot.stage-1.firmware = [
config.mobile.device.firmware
];
mobile.boot.stage-1.tasks = [
# This hack unbinds and rebinds the currently problematic storage driver.
# TODO: move into a generic "gru family" thing.
(pkgs.writeText "fixup-sdhci-arasan.rb" ''
class Tasks::FixupSDHCIArasan < SingletonTask
MAX = 60;
NAME = "fe330000.sdhci"
DRIVER = "/sys/bus/platform/drivers/sdhci-arasan"
GLOB = "#{DRIVER}/#{NAME}/mmc_host/mmc*/mmc*/block"
def initialize()
add_dependency(:Mount, "/sys")
add_dependency(:Files, DRIVER)
#add_dependency(:Target, :Environment)
end
def run()
tries = 0
$stdout.print " -> Waiting for #{NAME}"
$stdout.flush
until Dir.glob(GLOB).length > 0 do
$stdout.print "."
$stdout.flush
tries += 1
begin
System.write(File.join(DRIVER, "unbind"), NAME)
rescue => e
$logger.fatal(e.inspect)
end
begin
System.write(File.join(DRIVER, "bind"), NAME)
rescue => e
$logger.fatal(e.inspect)
end
sleep(1)
raise "Couldn't get #{NAME} up in #{tries} tries." if tries > MAX
end
$stdout.puts "!\n"
log("Took #{tries} tries for #{NAME} to appear...")
end
end
'')
];
}