forked from Qortal/Brooklyn
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
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;
|
|
|