| 1 | What is it? |
|---|
| 2 | ----------- |
|---|
| 3 | |
|---|
| 4 | This is just a quick and dirty hack to get the hardware monitoring working |
|---|
| 5 | on the ASUS P4B board under Linux. |
|---|
| 6 | It works by turning on the SMBus PCI device. |
|---|
| 7 | It is implemented as a module, p4b_smbus.o. |
|---|
| 8 | It only works with the ICH2 (82801BA) and ICH4 (82801DB). |
|---|
| 9 | |
|---|
| 10 | ASUS switches off the SMBus PCI Device |
|---|
| 11 | in the i801 ICH2/4 chip. I spoke two times |
|---|
| 12 | with the German support and learned that: "We do not want the users to be |
|---|
| 13 | irritated by just another PCI Device in the Win98 device manager." |
|---|
| 14 | Really funny :-). |
|---|
| 15 | |
|---|
| 16 | What does the module do? |
|---|
| 17 | ------------------------ |
|---|
| 18 | (Note: the following instructions assume the ICH2. For the ICH4, |
|---|
| 19 | the PCI IDs are 24C0 and 24C3) |
|---|
| 20 | |
|---|
| 21 | It turnes off (!) the bits number 8 and 3 in the LPC register of the ICH2. |
|---|
| 22 | This you can also try as root with setpci and pcitweak. |
|---|
| 23 | First do a: |
|---|
| 24 | |
|---|
| 25 | setpci -d 8086:2440 f2.w |
|---|
| 26 | |
|---|
| 27 | You will get an hex number VAL - in my case 148 (Hex)-, where you have to |
|---|
| 28 | erase the two bits - in my case you get 40 (Hex). |
|---|
| 29 | Then do a: |
|---|
| 30 | |
|---|
| 31 | setpci -d 8086:2440 f2.w=VAL |
|---|
| 32 | |
|---|
| 33 | Running "lspci -n" you will not see any new device, but with "pcitweak -l" you |
|---|
| 34 | should get a line similar to this in the output: |
|---|
| 35 | |
|---|
| 36 | PCI: 00:1f:3: chip 8086,2443 card 1043,8028 rev 12 class 0c,05,00 hdr 00 |
|---|
| 37 | |
|---|
| 38 | The important thing is the "8086,2443" here. |
|---|
| 39 | The device is activated, but not included in /proc/pci and |
|---|
| 40 | /proc/bus/pci/devices. This is the reason for running the module. |
|---|
| 41 | |
|---|
| 42 | What are the system requirements? |
|---|
| 43 | --------------------------------- |
|---|
| 44 | |
|---|
| 45 | - Obviously a board with Intel i801BA/DB ICH2/4 with broken bios. |
|---|
| 46 | - A linux working with a 2.4 kernel AND hotplug support in it! |
|---|
| 47 | - A installed kernel tree and gcc. |
|---|
| 48 | - i2c and sensor modules installed. |
|---|
| 49 | |
|---|
| 50 | How to install? |
|---|
| 51 | --------------- |
|---|
| 52 | |
|---|
| 53 | Simply do a: |
|---|
| 54 | |
|---|
| 55 | make -f Makefile.p4b |
|---|
| 56 | insmod p4b_smbus.o |
|---|
| 57 | modprobe i2c-core |
|---|
| 58 | modprobe i2c-i801 |
|---|
| 59 | modprobe i2c-dev |
|---|
| 60 | modprobe i2c-proc |
|---|
| 61 | |
|---|
| 62 | Then run your sensor: |
|---|
| 63 | |
|---|
| 64 | modprobe w83781d |
|---|
| 65 | |
|---|
| 66 | What should i never do? |
|---|
| 67 | ----------------------- |
|---|
| 68 | |
|---|
| 69 | Do not try to do a "rmmod p4b_smbus" before a "rmmod i2c-i801". |
|---|
| 70 | The other way around should be okay. Otherwise you remove the PCI device |
|---|
| 71 | without notifying the i2c driver. |
|---|
| 72 | |
|---|
| 73 | |
|---|
| 74 | ------------------------------- |
|---|
| 75 | Ilja Rauhut <IljaRauhut@web.de> |
|---|
| 76 | |
|---|