* [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.