diff options
Diffstat (limited to 'kernel/xpp/utils/zconf/Zaptel/Xpp/Xbus.pm')
-rw-r--r-- | kernel/xpp/utils/zconf/Zaptel/Xpp/Xbus.pm | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/kernel/xpp/utils/zconf/Zaptel/Xpp/Xbus.pm b/kernel/xpp/utils/zconf/Zaptel/Xpp/Xbus.pm index f87e2aa..9c73404 100644 --- a/kernel/xpp/utils/zconf/Zaptel/Xpp/Xbus.pm +++ b/kernel/xpp/utils/zconf/Zaptel/Xpp/Xbus.pm @@ -9,6 +9,7 @@ package Zaptel::Xpp::Xbus; # use strict; use Zaptel::Utils; +use Zaptel::Hardware; use Zaptel::Xpp::Xpd; my $proc_base = "/proc/xpp"; @@ -87,6 +88,8 @@ sub read_attrs() { if($attr eq 'STATUS') { # Some values are in all caps as well $val = uc($val); + } elsif($attr eq 'CONNECTOR') { + $val =~ s/^/@/; # Add prefix } elsif($attr eq 'LABEL') { # Fix badly burned labels. $val =~ s/[[:^print:]]/_/g; @@ -95,6 +98,19 @@ sub read_attrs() { } } +sub transport_type($$) { + my $xbus = shift || die; + my $xbus_dir = shift; + my $transport = "$xbus_dir/transport"; + if(-e "$transport/ep_00") { # It's USB + $xbus->{TRANSPORT_TYPE} = 'USB'; + } else { + warn "Unkown transport in $xbus_dir\n"; + undef $xbus->{TRANSPORT_TYPE}; + } + return $xbus->{TRANSPORT_TYPE}; +} + sub read_xpdnames_old($) { my $xbus_num = shift || die; my $pat = sprintf "/proc/xpp/XBUS-%02d/XPD-[0-9][0-9]", $xbus_num; @@ -142,16 +158,11 @@ sub new($$) { $self->read_attrs; # Get transport related info my $transport = "$xbus_dir/transport"; - my ($usbdev) = glob("$transport/usb_device:*"); - if(defined $usbdev) { # It's USB - if($usbdev =~ /.*usb_device:usbdev(\d+)\.(\d+)/) { - my $busnum = $1; - my $devnum = $2; - #printf STDERR "DEBUG: %03d/%03d\n", $busnum, $devnum; - $self->{USB_DEVNAME} = sprintf("%03d/%03d", $busnum, $devnum); - } else { - warn "Bad USB transport='$transport' usbdev='$usbdev'\n"; - } + my $transport_type = $self->transport_type($xbus_dir); + if(defined $transport_type) { + my $tt = "Zaptel::Hardware::$transport_type"; + my $hw = $tt->set_transport($self, $xbus_dir); + #printf STDERR "Xbus::new transport($transport_type): %s\n", $hw->{HARDWARE_NAME}; } my @xpdnames; my @xpds; |