QortalOS Brooklyn for Raspberry Pi 4
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

337 lines
5.3 KiB

package dwc_otg_test;
use strict;
use Exporter ();
use vars qw(@ISA @EXPORT
$sysfsdir $paramdir $errors $params
);
@ISA = qw(Exporter);
#
# Globals
#
$sysfsdir = "/sys/devices/lm0";
$paramdir = "/sys/module/dwc_otg";
$errors = 0;
$params = [
{
NAME => "otg_cap",
DEFAULT => 0,
ENUM => [],
LOW => 0,
HIGH => 2
},
{
NAME => "dma_enable",
DEFAULT => 0,
ENUM => [],
LOW => 0,
HIGH => 1
},
{
NAME => "dma_burst_size",
DEFAULT => 32,
ENUM => [1, 4, 8, 16, 32, 64, 128, 256],
LOW => 1,
HIGH => 256
},
{
NAME => "host_speed",
DEFAULT => 0,
ENUM => [],
LOW => 0,
HIGH => 1
},
{
NAME => "host_support_fs_ls_low_power",
DEFAULT => 0,
ENUM => [],
LOW => 0,
HIGH => 1
},
{
NAME => "host_ls_low_power_phy_clk",
DEFAULT => 0,
ENUM => [],
LOW => 0,
HIGH => 1
},
{
NAME => "dev_speed",
DEFAULT => 0,
ENUM => [],
LOW => 0,
HIGH => 1
},
{
NAME => "enable_dynamic_fifo",
DEFAULT => 1,
ENUM => [],
LOW => 0,
HIGH => 1
},
{
NAME => "data_fifo_size",
DEFAULT => 8192,
ENUM => [],
LOW => 32,
HIGH => 32768
},
{
NAME => "dev_rx_fifo_size",
DEFAULT => 1064,
ENUM => [],
LOW => 16,
HIGH => 32768
},
{
NAME => "dev_nperio_tx_fifo_size",
DEFAULT => 1024,
ENUM => [],
LOW => 16,
HIGH => 32768
},
{
NAME => "dev_perio_tx_fifo_size_1",
DEFAULT => 256,
ENUM => [],
LOW => 4,
HIGH => 768
},
{
NAME => "dev_perio_tx_fifo_size_2",
DEFAULT => 256,
ENUM => [],
LOW => 4,
HIGH => 768
},
{
NAME => "dev_perio_tx_fifo_size_3",
DEFAULT => 256,
ENUM => [],
LOW => 4,
HIGH => 768
},
{
NAME => "dev_perio_tx_fifo_size_4",
DEFAULT => 256,
ENUM => [],
LOW => 4,
HIGH => 768
},
{
NAME => "dev_perio_tx_fifo_size_5",
DEFAULT => 256,
ENUM => [],
LOW => 4,
HIGH => 768
},
{
NAME => "dev_perio_tx_fifo_size_6",
DEFAULT => 256,
ENUM => [],
LOW => 4,
HIGH => 768
},
{
NAME => "dev_perio_tx_fifo_size_7",
DEFAULT => 256,
ENUM => [],
LOW => 4,
HIGH => 768
},
{
NAME => "dev_perio_tx_fifo_size_8",
DEFAULT => 256,
ENUM => [],
LOW => 4,
HIGH => 768
},
{
NAME => "dev_perio_tx_fifo_size_9",
DEFAULT => 256,
ENUM => [],
LOW => 4,
HIGH => 768
},
{
NAME => "dev_perio_tx_fifo_size_10",
DEFAULT => 256,
ENUM => [],
LOW => 4,
HIGH => 768
},
{
NAME => "dev_perio_tx_fifo_size_11",
DEFAULT => 256,
ENUM => [],
LOW => 4,
HIGH => 768
},
{
NAME => "dev_perio_tx_fifo_size_12",
DEFAULT => 256,
ENUM => [],
LOW => 4,
HIGH => 768
},
{
NAME => "dev_perio_tx_fifo_size_13",
DEFAULT => 256,
ENUM => [],
LOW => 4,
HIGH => 768
},
{
NAME => "dev_perio_tx_fifo_size_14",
DEFAULT => 256,
ENUM => [],
LOW => 4,
HIGH => 768
},
{
NAME => "dev_perio_tx_fifo_size_15",
DEFAULT => 256,
ENUM => [],
LOW => 4,
HIGH => 768
},
{
NAME => "host_rx_fifo_size",
DEFAULT => 1024,
ENUM => [],
LOW => 16,
HIGH => 32768
},
{
NAME => "host_nperio_tx_fifo_size",
DEFAULT => 1024,
ENUM => [],
LOW => 16,
HIGH => 32768
},
{
NAME => "host_perio_tx_fifo_size",
DEFAULT => 1024,
ENUM => [],
LOW => 16,
HIGH => 32768
},
{
NAME => "max_transfer_size",
DEFAULT => 65535,
ENUM => [],
LOW => 2047,
HIGH => 65535
},
{
NAME => "max_packet_count",
DEFAULT => 511,
ENUM => [],
LOW => 15,
HIGH => 511
},
{
NAME => "host_channels",
DEFAULT => 12,
ENUM => [],
LOW => 1,
HIGH => 16
},
{
NAME => "dev_endpoints",
DEFAULT => 6,
ENUM => [],
LOW => 1,
HIGH => 15
},
{
NAME => "phy_type",
DEFAULT => 1,
ENUM => [],
LOW => 0,
HIGH => 2
},
{
NAME => "phy_utmi_width",
DEFAULT => 16,
ENUM => [8, 16],
LOW => 8,
HIGH => 16
},
{
NAME => "phy_ulpi_ddr",
DEFAULT => 0,
ENUM => [],
LOW => 0,
HIGH => 1
},
];
#
#
sub check_arch {
$_ = `uname -m`;
chomp;
unless (m/armv4tl/) {
warn "# \n# Can't execute on $_. Run on integrator platform.\n# \n";
return 0;
}
return 1;
}
#
#
sub load_module {
my $params = shift;
print "\nRemoving Module\n";
system "rmmod dwc_otg";
print "Loading Module\n";
if ($params ne "") {
print "Module Parameters: $params\n";
}
if (system("modprobe dwc_otg $params")) {
warn "Unable to load module\n";
return 0;
}
return 1;
}
#
#
sub test_status {
my $arg = shift;
print "\n";
if (defined $arg) {
warn "WARNING: $arg\n";
}
if ($errors > 0) {
warn "TEST FAILED with $errors errors\n";
return 0;
} else {
print "TEST PASSED\n";
return 0 if (defined $arg);
}
return 1;
}
#
#
@EXPORT = qw(
$sysfsdir
$paramdir
$params
$errors
check_arch
load_module
test_status
);
1;