2019-09-10 21:16:38 +03:00
|
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
|
|
|
|
{
|
|
|
|
mobile.device.name = "asus-dumo";
|
2020-05-24 00:27:57 +03:00
|
|
|
mobile.device.identity = {
|
2020-04-04 07:23:39 +03:00
|
|
|
name = "Chromebook Tablet CT100PA";
|
|
|
|
manufacturer = "Asus";
|
2020-05-24 00:27:57 +03:00
|
|
|
};
|
|
|
|
|
2019-09-10 21:16:38 +03:00
|
|
|
mobile.hardware = {
|
|
|
|
soc = "rockchip-op1";
|
|
|
|
ram = 1024 * 4;
|
|
|
|
screen = {
|
|
|
|
width = 1536; height = 2048;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2020-05-25 01:38:42 +03:00
|
|
|
mobile.boot.stage-1 = {
|
|
|
|
kernel.package = pkgs.callPackage ./kernel {};
|
|
|
|
};
|
|
|
|
|
2020-05-24 09:43:12 +03:00
|
|
|
mobile.system.depthcharge.kpart = {
|
2020-05-25 01:38:42 +03:00
|
|
|
dtbs = "${config.mobile.boot.stage-1.kernel.package}/dtbs/rockchip";
|
2020-05-24 09:43:12 +03:00
|
|
|
};
|
|
|
|
|
2020-05-24 01:14:10 +03:00
|
|
|
# Serial console on ttyS2, using a suzyqable or equivalent.
|
|
|
|
boot.kernelParams = [
|
|
|
|
"console=ttyS2,115200n8"
|
|
|
|
"earlyprintk=ttyS2,115200n8"
|
|
|
|
"vt.global_cursor_default=0"
|
|
|
|
];
|
|
|
|
|
2019-09-10 21:16:38 +03:00
|
|
|
mobile.system.type = "depthcharge";
|
2020-01-25 03:52:23 +03:00
|
|
|
|
2020-06-02 01:59:32 +03:00
|
|
|
mobile.device.firmware = pkgs.callPackage ./firmware {};
|
|
|
|
mobile.boot.stage-1.firmware = [
|
|
|
|
config.mobile.device.firmware
|
|
|
|
];
|
|
|
|
|
2020-01-25 03:52:23 +03:00
|
|
|
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
|
|
|
|
'')
|
|
|
|
];
|
2019-09-10 21:16:38 +03:00
|
|
|
}
|