[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#275108: better resource range guessing via dmidata



Package: hw-detect

Forwarding since I don't have time or ability to work on this, and we
have a partial patch.

----- Forwarded message from Per Olofsson <pelle@dsv.su.se> -----

From: Per Olofsson <pelle@dsv.su.se>
Date: Thu, 16 Sep 2004 22:14:06 +0200
To: Joey Hess <joey@kitenet.net>
Subject: Re: pcmcia-cs
User-Agent: Mutt/1.5.6+20040722i

Joey Hess:
> > I'm thinking that maybe I should only make a small change - add some
> > minimal detection code for Dell Inspiron 8000's to ddetect and don't
> > bother changing the actual pcmcia-cs package for sarge. The smaller
> > the change the less can go wrong. I should probably look over the BTS
> > reports to see if any other laptops than I8Ks are problematic though.
> 
> Any update on the status of this change?

Not really, unfortunately. I've not been feeling very well lately and
I haven't had the energy to do anything.

I did however at one point compile a small list of problematic laptops
and added an initial implementation to hw-detect. The list and the
patch is attached. I haven't tested the patch though, and even if I
had I would still not been able to test whether it works on the
problematic hardware as I don't own any such hardware. In addition,
dmidecode-udeb will have to be present on the image.

-- 
Pelle

Dell Latitude D800 (#267531)
Dell Inspiron 8600
Fujitsu-Siemens Amilo A7620 (#254403)
Gericom Blockbuster
Dell Inspiron 8100 (verified, 0x800-0x8ff)
Dell Inspiron 8000
Dell Latitude D505
Dell Latitude D600

Index: hw-detect.sh
===================================================================
--- hw-detect.sh	(revision 19659)
+++ hw-detect.sh	(working copy)
@@ -490,6 +490,44 @@
 	fi
 fi
 
+DMIDATA=/etc/dmidata
+
+get_dmidata() {
+	if ! [ -f $DMIDATA ]; then
+		if [ -x /usr/sbin/dmidecode ]; then
+			dmidecode > $DMIDATA | logger -t hw-detect
+		else
+			log "dmidecode not available"
+			return 1
+		fi
+	fi
+}
+
+dmi_field() {
+    cat $DMIDATA | sed -n "/$1\$/,\$p" | sed '/^Handle/,$d' | tr -d '\t' \
+        | tail +2 | grep "^$2" | cut -d: -f2 \
+        | sed 's/^ *\([^ ].*[^ ]\) *$/\1/'
+}
+
+detect_pcmcia_resource_opts() {
+	if ! get_dmidata; then
+		return
+	fi
+	local manufacturer=$(dmi_field "System Information" "Manufacturer")
+	local product_name=$(dmi_field "System Information" "Product Name")
+
+	case "$manufacturer" in
+	Dell*)
+		case "$product_name" in
+		"Inspiron 8"*|"Latitude D800"*|"Latitude D505"*|
+		"Latitude D600"*)
+			echo "exclude port 0x800-0x8ff"
+			;;
+		esac
+		;;
+	esac
+}
+
 apply_pcmcia_resource_opts() {
 	local config_opts=/etc/pcmcia/config.opts
 	
@@ -535,6 +573,8 @@
 	fi
 	if db_go && db_get hw-detect/start_pcmcia && [ "$RET" = true ]; then
 		if ! [ -e /var/run/cardmgr.pid ]; then
+			db_set hw-detect/pcmcia_resources \
+				$(detect_pcmcia_resource_opts) || true
 			db_input medium hw-detect/pcmcia_resources || true
 			db_go || true
 			db_get hw-detect/pcmcia_resources || true


----- End forwarded message -----
-- 
see shy jo

Attachment: signature.asc
Description: Digital signature


Reply to: