[zaptel-commits] tzafrir: branch tzafrir/sysfs r3497 - in /team/tzafrir/sysfs: ./ xpp/ xpp/uti...

SVN commits to the Zaptel project zaptel-commits at lists.digium.com
Sun Dec 16 20:04:34 CST 2007


Author: tzafrir
Date: Sun Dec 16 20:04:34 2007
New Revision: 3497

URL: http://svn.digium.com/view/zaptel?view=rev&rev=3497
Log:
* Add a "conector" field to the span.
* Add a standard function to fill PCI data from span and device.
* Use the connector field to link between devices and spans in
  zaptel_hardware.
* Make wcfxo detect the clone I have at home.

Modified:
    team/tzafrir/sysfs/wcfxo.c
    team/tzafrir/sysfs/xpp/utils/zaptel_hardware
    team/tzafrir/sysfs/xpp/utils/zconf/Zaptel/Hardware/PCI.pm
    team/tzafrir/sysfs/xpp/utils/zconf/Zaptel/Span.pm
    team/tzafrir/sysfs/xpp/xpp_zap.c
    team/tzafrir/sysfs/zaptel-sysfs.c
    team/tzafrir/sysfs/zaptel.h

Modified: team/tzafrir/sysfs/wcfxo.c
URL: http://svn.digium.com/view/zaptel/team/tzafrir/sysfs/wcfxo.c?view=diff&rev=3497&r1=3496&r2=3497
==============================================================================
--- team/tzafrir/sysfs/wcfxo.c (original)
+++ team/tzafrir/sysfs/wcfxo.c Sun Dec 16 20:04:34 2007
@@ -627,8 +627,7 @@
 	sprintf(wc->span.name, "WCFXO/%d", wc->pos);
 	snprintf(wc->span.desc, sizeof(wc->span.desc) - 1, "%s Board %d", wc->variety, wc->pos + 1);
 	sprintf(wc->chan.name, "WCFXO/%d/%d", wc->pos, 0);
-	snprintf(wc->span.location, sizeof(wc->span.location) - 1,
-		 "PCI Bus %02d Slot %02d", wc->dev->bus->number, PCI_SLOT(wc->dev->devfn) + 1);
+	zt_fill_data_pci(&wc->span, wc->dev);
 	wc->span.manufacturer = "Digium";
 	strncpy(wc->span.devicetype, wc->variety, sizeof(wc->span.devicetype) - 1);
 	wc->chan.sigcap = ZT_SIG_FXSKS | ZT_SIG_FXSLS | ZT_SIG_SF;
@@ -636,7 +635,6 @@
 	wc->span.chans = &wc->chan;
 	wc->span.channels = 1;
 	wc->span.hooksig = wcfxo_hooksig;
-	wc->span.irq = wc->dev->irq;
 	wc->span.open = wcfxo_open;
 	wc->span.close = wcfxo_close;
 	wc->span.flags = ZT_FLAG_RBS;
@@ -979,6 +977,7 @@
 }
 
 static struct pci_device_id wcfxo_pci_tbl[] = {
+	{ 0xe159, 0x0001, 0x8084, PCI_ANY_ID, 0, 0, (unsigned long) &generic },
 	{ 0xe159, 0x0001, 0x8085, PCI_ANY_ID, 0, 0, (unsigned long) &wcx101p },
 	{ 0xe159, 0x0001, 0x8086, PCI_ANY_ID, 0, 0, (unsigned long) &generic },
 	{ 0xe159, 0x0001, 0x8087, PCI_ANY_ID, 0, 0, (unsigned long) &generic },

Modified: team/tzafrir/sysfs/xpp/utils/zaptel_hardware
URL: http://svn.digium.com/view/zaptel/team/tzafrir/sysfs/xpp/utils/zaptel_hardware?view=diff&rev=3497&r1=3496&r2=3497
==============================================================================
--- team/tzafrir/sysfs/xpp/utils/zaptel_hardware (original)
+++ team/tzafrir/sysfs/xpp/utils/zaptel_hardware Sun Dec 16 20:04:34 2007
@@ -63,6 +63,11 @@
 	$driver = "$driver" . (($loaded) ? "+" : "-");
 	my $description = $dev->description || "";
 	printf $format, $dev->hardware_name, $driver, $dev->vendor, $dev->product, $description;
+	my @spans_dev = grep {defined($_->device_path) && $_->bus_type.':'.$_->device_path eq $dev->hardware_name} 
+		@spans;
+	foreach my $span (@spans_dev) {
+		print "\tSpan: ". $span->num . $span->name. "\n";
+	}
 	if(!$xbus) {
 		next;
 	}

Modified: team/tzafrir/sysfs/xpp/utils/zconf/Zaptel/Hardware/PCI.pm
URL: http://svn.digium.com/view/zaptel/team/tzafrir/sysfs/xpp/utils/zconf/Zaptel/Hardware/PCI.pm?view=diff&rev=3497&r1=3496&r2=3497
==============================================================================
--- team/tzafrir/sysfs/xpp/utils/zconf/Zaptel/Hardware/PCI.pm (original)
+++ team/tzafrir/sysfs/xpp/utils/zconf/Zaptel/Hardware/PCI.pm Sun Dec 16 20:04:34 2007
@@ -45,9 +45,10 @@
 	'e159:0001/e16b'	=> { DRIVER => 'pciradio', DESCRIPTION => 'PCIRADIO' },
 
 	# from wcfxo
+	'e159:0001/8084'	=> { DRIVER => 'wcfxo', DESCRIPTION => 'Wildcard X101P Clone' },
 	'e159:0001/8085'	=> { DRIVER => 'wcfxo', DESCRIPTION => 'Wildcard X101P' },
-	'e159:0001/8086'	=> { DRIVER => 'wcfxo', DESCRIPTION => 'Generic Clone' },
-	'e159:0001/8087'	=> { DRIVER => 'wcfxo', DESCRIPTION => 'Generic Clone' },
+	'e159:0001/8086'	=> { DRIVER => 'wcfxo', DESCRIPTION => 'Wildcard X100P Clone' },
+	'e159:0001/8087'	=> { DRIVER => 'wcfxo', DESCRIPTION => 'Wildcard X100P Clone' },
 	'1057:5608'		=> { DRIVER => 'wcfxo', DESCRIPTION => 'Wildcard X100P' },
 
 	# from wct1xxp
@@ -193,6 +194,7 @@
 			);
 		push(@devices, $d);
 	}
+
 }
 
 1;

Modified: team/tzafrir/sysfs/xpp/utils/zconf/Zaptel/Span.pm
URL: http://svn.digium.com/view/zaptel/team/tzafrir/sysfs/xpp/utils/zconf/Zaptel/Span.pm?view=diff&rev=3497&r1=3496&r2=3497
==============================================================================
--- team/tzafrir/sysfs/xpp/utils/zconf/Zaptel/Span.pm (original)
+++ team/tzafrir/sysfs/xpp/utils/zconf/Zaptel/Span.pm Sun Dec 16 20:04:34 2007
@@ -73,6 +73,8 @@
 	$self->{TYPE} = "UNKNOWN";
 	my $sysfs_dir = sprintf("$sysfs_base/span-%02d", $num);
 	if ( -d $sysfs_dir ) {
+		$self->{CONNECTOR} = 
+			_read_one_line_file("$sysfs_dir/connector");
 		$self->{CODING} = 
 			_read_one_line_file("$sysfs_dir/digital_coding");
 		$self->{FRAMING} = 
@@ -83,6 +85,12 @@
 			_read_one_line_file("$sysfs_dir/sync_master");
 		$self->{NAME} = 
 			_read_one_line_file("$sysfs_dir/name");
+		my ($bus_type,$device_path) = split(/-/, $self->connector, 2);
+		if (defined $device_path) {
+			$self->{BUS_TYPE} = $bus_type;
+			$self->{DEVICE_PATH} = $device_path;
+		}
+
 	}
 	open(F, "$proc_base/$num") or die "Failed to open '$proc_base/$num\n";
 	my $head = <F>;

Modified: team/tzafrir/sysfs/xpp/xpp_zap.c
URL: http://svn.digium.com/view/zaptel/team/tzafrir/sysfs/xpp/xpp_zap.c?view=diff&rev=3497&r1=3496&r2=3497
==============================================================================
--- team/tzafrir/sysfs/xpp/xpp_zap.c (original)
+++ team/tzafrir/sysfs/xpp/xpp_zap.c Sun Dec 16 20:04:34 2007
@@ -1684,6 +1684,8 @@
 
 	span = &xpd->span;
 	snprintf(span->name, MAX_SPANNAME, "%s/%s", xbus->busname, xpd->xpdname);
+	snprintf(span->location,  sizeof(span->location),  "%s", xbus->busdesc);
+	snprintf(span->connector, sizeof(span->connector), "%s", xbus->busdesc);
 	span->deflaw = ZT_LAW_MULAW;
 	init_waitqueue_head(&span->maintq);
 	span->pvt = xpd;

Modified: team/tzafrir/sysfs/zaptel-sysfs.c
URL: http://svn.digium.com/view/zaptel/team/tzafrir/sysfs/zaptel-sysfs.c?view=diff&rev=3497&r1=3496&r2=3497
==============================================================================
--- team/tzafrir/sysfs/zaptel-sysfs.c (original)
+++ team/tzafrir/sysfs/zaptel-sysfs.c Sun Dec 16 20:04:34 2007
@@ -180,6 +180,13 @@
 }
 
 /*--------- Sysfs Device handling ----*/
+static DEVICE_ATTR_FUNC(connector_show, dev, buf)
+{
+	struct zt_span *span = dev_to_span(dev);
+	return snprintf(buf, PAGE_SIZE, "%s\n", span->connector);
+}
+static	DEVICE_ATTR(connector, S_IRUGO, connector_show, NULL);
+
 static DEVICE_ATTR_FUNC(digital_coding_show, dev, buf)
 {
 	struct	zt_span *span = dev_to_span(dev);
@@ -243,6 +250,7 @@
 	BUG_ON(!span);
 	zap_dbg_span(span, "\n");
 	device = &span->device;
+	device_remove_file(&span->device, &dev_attr_connector);
 	device_remove_file(&span->device, &dev_attr_digital_coding);
 	device_remove_file(&span->device, &dev_attr_digital_framing);
 	device_remove_file(&span->device, &dev_attr_flags);
@@ -276,6 +284,7 @@
 		zap_err_span(span, "%s: device_add failed: %d\n", __FUNCTION__, ret);
 		goto out;
 	}
+	span_add_attribute(connector);
 	span_add_attribute(digital_coding);
 	span_add_attribute(digital_framing);
 	span_add_attribute(flags);
@@ -367,4 +376,43 @@
 	return ret;
 }
 
-
+#include <linux/pci.h>
+#include <linux/usb.h>
+
+/*! Fill the PCI-specific fields in a zaptel span. 
+ * @span the span in which to fill the fields
+ * @dev the PCI device from which to fill details.
+ *
+ * Caller should have an exclusive access to span (e.g: hold lock).
+ */
+void zt_fill_data_pci(struct zt_span *span, struct pci_dev *dev) {
+	snprintf(span->location, sizeof(span->location) - 1,
+		 "PCI Bus %02d Slot %02d", dev->bus->number, PCI_SLOT(dev->devfn) + 1);
+	snprintf(span->connector, sizeof(span->connector) - 1,
+			"pci-%04x:%02x:%02x.%x", 
+			pci_domain_nr(dev->bus), dev->bus->number, 
+			PCI_SLOT(dev->devfn), PCI_FUNC(dev->devfn)
+		);
+	span->irq = dev->irq;
+}
+
+
+/*! Fill the USB-specific fields in a zaptel span. 
+ * @span the span in which to fill the fields
+ * @dev the PCI device from which to fill details.
+ *
+ * Caller should have an exclusive access to span (e.g: hold lock).
+ */
+void zt_fill_data_usb(struct zt_span *span, struct usb_device *dev) {
+	char buf[80];
+
+	usb_make_path(dev, buf, sizeof(buf));
+	snprintf(span->location, sizeof(span->location) - 1, "USB %s", buf);
+	snprintf(span->connector, sizeof(span->connector) - 1, "usb:%s", buf);
+	span->irq = 0;
+}
+
+#include <linux/usb.h>
+
+EXPORT_SYMBOL(zt_fill_data_pci);
+EXPORT_SYMBOL(zt_fill_data_usb);

Modified: team/tzafrir/sysfs/zaptel.h
URL: http://svn.digium.com/view/zaptel/team/tzafrir/sysfs/zaptel.h?view=diff&rev=3497&r1=3496&r2=3497
==============================================================================
--- team/tzafrir/sysfs/zaptel.h (original)
+++ team/tzafrir/sysfs/zaptel.h Sun Dec 16 20:04:34 2007
@@ -1440,6 +1440,7 @@
 	const char *manufacturer;	/* span's device manufacturer */
 	char devicetype[80];		/* span's device type */
 	char location[40];		/* span device's location in system */
+	char connector[40];		/* span device's location in system */
 	int deflaw;			/* Default law (ZT_MULAW or ZT_ALAW) */
 	int alarms;			/* Pending alarms on span */
 	int flags;
@@ -1550,6 +1551,16 @@
 	int watchstate;
 #endif	
 };
+
+/* The following functions will only be included if usb.h/pci.h is 
+ * already loaded.
+ */
+#ifdef LINUX_PCI_H
+void zt_fill_data_pci(struct zt_span *span, struct pci_dev *dev);
+#endif
+#ifdef __LINUX_USB_H
+void zt_fill_data_usb(struct zt_span *span, struct usb_device *dev);
+#endif
 
 struct zt_transcoder_channel {
 	void *pvt;




More information about the zaptel-commits mailing list