All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] decode-dimms: Add support for at24 kernel driver
@ 2010-03-08  9:36 Jean Delvare
  0 siblings, 0 replies; only message in thread
From: Jean Delvare @ 2010-03-08  9:36 UTC (permalink / raw)
  To: Linux I2C

Add support for at24 kernel driver, in addition to the legacy eeprom
kernel driver.
---
 eeprom/decode-dimms |   47 +++++++++++++++++++++++++++++++++++++----------
 1 file changed, 37 insertions(+), 10 deletions(-)

--- i2c-tools.orig/eeprom/decode-dimms	2009-06-09 13:14:35.000000000 +0200
+++ i2c-tools/eeprom/decode-dimms	2010-03-08 09:00:05.000000000 +0100
@@ -1707,24 +1707,51 @@ printh('Memory Serial Presence Detect De
 Jean Delvare, Trent Piepho and others');
 
 
+# From a sysfs device path and an attribute name, return the attribute
+# value, or undef (stolen from sensors-detect)
+sub sysfs_device_attribute
+{
+	my ($device, $attr) = @_;
+	my $value;
+
+	open(local *FILE, "$device/$attr") or return "";
+	$value = <FILE>;
+	close(FILE);
+	return unless defined $value;
+
+	chomp($value);
+	return $value;
+}
+
 sub get_dimm_list
 {
-	my ($dir, $file, @files);
+	my (@dirs, $dir, $file, @files);
 
 	if ($use_sysfs) {
-		$dir = '/sys/bus/i2c/drivers/eeprom';
+		@dirs = ('/sys/bus/i2c/drivers/eeprom', '/sys/bus/i2c/drivers/at24');
 	} else {
-		$dir = '/proc/sys/dev/sensors';
+		@dirs = ('/proc/sys/dev/sensors');
 	}
 
-	if (opendir(local *DIR, $dir)) {
-		while (defined($file = readdir(DIR))) {
-			next if $use_sysfs && $file !~ /^\d+-[\da-f]+$/i;
-			next if !$use_sysfs && $file !~ /^eeprom-/;
-			push @files, { eeprom => "$file",
-				       file => "$dir/$file" };
+	foreach $dir (@dirs) {
+		if (opendir(local *DIR, $dir)) {
+			while (defined($file = readdir(DIR))) {
+				if ($use_sysfs) {
+					next if $file !~ /^\d+-[\da-f]+$/i;
+					next if ! -d "$dir/$file";
+					my $attr = sysfs_device_attribute("$dir/$file", "name");
+					next unless defined $attr && ($attr eq "eeprom" || $attr eq "spd");
+				} else {
+					next if $file !~ /^eeprom-/;
+				}
+				push @files, { eeprom => "$file",
+					       file => "$dir/$file" };
+			}
+			close(DIR);
 		}
-		close(DIR);
+	}
+
+	if (@files) {
 		return sort { $a->{file} cmp $b->{file} } @files;
 	} elsif (! -d '/sys/module/eeprom') {
 		print "No EEPROM found, are you sure the eeprom module is loaded?\n";


-- 
Jean Delvare

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2010-03-08  9:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-08  9:36 [PATCH] decode-dimms: Add support for at24 kernel driver Jean Delvare

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.