From 36c7305e781aba6ce81077931ca662a0adff8e37 Mon Sep 17 00:00:00 2001 From: "Mark D. Studebaker" Date: Sat, 6 Mar 2004 20:27:41 +0000 Subject: [PATCH] use /sys/class/i2c-dev/i2c-x/name file if available; solves problem with drivers that have multiple busses; requires Greg's patch (for kernel 2.6.5?) git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@2341 7894878c-1315-0410-8ee3-d5d059ff63e0 --- CHANGES | 4 ++++ prog/dump/i2cbusses.c | 14 +++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index c30cc344..d9a64ab6 100644 --- a/CHANGES +++ b/CHANGES @@ -17,6 +17,10 @@ ask CVS about it: ----------------------------------------------------------------------------- +2.8.6 (2004????) + Programs i2cdetect, i2cdump, i2cset: Fix incorrect bus names if possible + + 2.8.5 (20040305) File doc/chips/SUMMARY: Update File etc/sensors.conf.eg: Epox 8K3A tweaks. (Kronos) diff --git a/prog/dump/i2cbusses.c b/prog/dump/i2cbusses.c index f6d19f59..15b65d8d 100644 --- a/prog/dump/i2cbusses.c +++ b/prog/dump/i2cbusses.c @@ -90,11 +90,19 @@ void print_i2c_busses(int procfmt) if (!strcmp(de->d_name, "..")) continue; - /* this seems to work for ISA */ - sprintf(n, "%s/%s/device/name", sysfs, de->d_name); + /* this should work for kernels 2.6.5 or higher and */ + /* is preferred because is unambiguous */ + sprintf(n, "%s/%s/name", sysfs, de->d_name); f = fopen(n, "r"); + /* this seems to work for ISA */ + if(f == NULL) { + sprintf(n, "%s/%s/device/name", sysfs, de->d_name); + f = fopen(n, "r"); + } + /* non-ISA is much harder */ + /* and this won't find the correct bus name if a driver + has more than one bus */ if(f == NULL) { - /* non-ISA is much harder */ sprintf(n, "%s/%s/device", sysfs, de->d_name); if(!(ddir = opendir(n))) continue;