forked from Qortal/Brooklyn
338 lines
5.3 KiB
Perl
338 lines
5.3 KiB
Perl
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;
|