I'd wanted an rack-mounted Alpha for a little while, and recently bought an HP AlphaServer DS20L from Ebay. I installed NetBSD 6.1.1 on it and noticed in dmesg that the ALI7101 SMBus (i²c) controller wasn't configured. Adding:
# Acer Labs M7101 SMBus controller alipm* at pci? dev ? function ? iic* at alipm?
to the kernel configuration and rebuilding gave me an i²c bus, but no devices. NetBSD has the i2cscan utility, which allows scanning of some i²c buses for devices. Running this gave me the following output:
/dev/iic0: found device at 0x23 /dev/iic0: found device at 0x2c /dev/iic0: found device at 0x2d /dev/iic0: found device at 0x2e /dev/iic0: found device at 0x2f /dev/iic0: found device at 0x38 /dev/iic0: found device at 0x4e /dev/iic0: found device at 0x51 /dev/iic0: 8 devices found
Looking on the system board with a magnifying glass, I was able to identify Philips PCF8574 I/O controller and Philips PCF8582C EEPROM chips. Also, by searching for typical addresses, I guessed that the PCF8574 was at address 0x23, but I wasn't sure what the other devices were.
It's simple to modify i2cscan to also read or write bytes, so I tried reading register values in the i²c devices to try and work out what kind of chips they were. Beware! It's possible to lock up the system by doing this. I managed to do that a few times, and also ended up resetting part of the NVRAM and setting the System Fail LED to be on continuously.
After searching for a list of DS20L i²c devices, I came across an OpenBSD 3.9 dmesg showing their lmenv driver attaching at addresses 0x2c to 0x2f. It was fairly simple to port this to NetBSD. The DS20L dmesg is now:
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 6.99.24 (GENERIC-$Revision: 1.353 $) #15: Mon Oct 14 19:59:46 BST 2013 root@orion.coris.org.uk:/usr/obj/alpha/usr/src/sys/arch/alpha/compile/DS20L hp AlphaServer DS20L 833 MHz, s/n 0321700494 8192 byte page size, 2 processors. total memory = 1024 MB (2808 KB reserved for PROM, 1021 MB used by NetBSD) avail memory = 995 MB mainbus0 (root) cpu0 at mainbus0: ID 0 (primary), 21264B-4 cpu0: Architecture extensions: 0x1307<PAT,MVI,CIX,FIX,BWX> cpu1 at mainbus0: ID 1, 21264B-4 cpu1: processor off-line; multiprocessor support not present in kernel tsc0 at mainbus0: 21272 Core Logic Chipset, Cchip rev 0 tsc0: 4 Dchips, 1 memory bus of 32 bytes tsc0: arrays present: 1024MB (split), 0MB, 0MB, 0MB, Dchip 0 rev 1 tsp0 at tsc0 pci0 at tsp0 bus 0 ahc0 at pci0 dev 3 function 0: Adaptec aic7892 Ultra160 SCSI adapter ahc0: interrupting at dec 6600 irq 16 ahc0: aic7892: Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs scsibus0 at ahc0: 16 targets, 8 luns per target fxp0 at pci0 dev 4 function 0: i82550 Ethernet (rev. 0x0c) fxp0: interrupting at dec 6600 irq 20 fxp0: Ethernet address 00:02:56:00:22:04 inphy0 at fxp0 phy 1: i82555 10/100 media interface, rev. 4 inphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto ahc1 at pci0 dev 5 function 0: Adaptec 3960D Ultra160 SCSI adapter ahc1: interrupting at dec 6600 irq 24 ahc1: aic7899: Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs scsibus1 at ahc1: 16 targets, 8 luns per target ahc2 at pci0 dev 5 function 1: Adaptec 3960D Ultra160 SCSI adapter ahc2: interrupting at dec 6600 irq 25 ahc2: aic7899: Ultra160 Wide Channel B, SCSI Id=7, 32/253 SCBs scsibus2 at ahc2: 16 targets, 8 luns per target sio0 at pci0 dev 7 function 0: Acer Labs M1533 PCI-ISA Bridge (rev. 0xc3) aceride0 at pci0 dev 16 function 0: Acer Labs M5229 UDMA IDE Controller (rev. 0xc2) aceride0: primary channel interrupting at isa irq 14 atabus0 at aceride0 channel 0 aceride0: secondary channel interrupting at isa irq 15 atabus1 at aceride0 channel 1 alipm0 at pci0 dev 17 function 0: 74KHz clock iic0 at alipm0: I2C bus lmenv0 at iic0 addr 0x2c: ADM9240 rev 2 lmenv1 at iic0 addr 0x2d: ADM9240 rev 2 lmenv2 at iic0 addr 0x2e: ADM9240 rev 2 lmenv3 at iic0 addr 0x2f: ADM9240 rev 2 isa0 at sio0 lpt0 at isa0 port 0x3bc-0x3bf irq 7 com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo com0: console com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, working fifo pckbc0 at isa0 port 0x60-0x64 attimer0 at isa0 port 0x40-0x43 pcppi0 at isa0 port 0x61 midi0 at pcppi0: PC speaker spkr0 at pcppi0 isabeep0 at pcppi0 mcclock0 at isa0 port 0x70-0x71: mc146818 compatible time-of-day clock attimer0: attached to pcppi0 tsp1 at tsc0 pci1 at tsp1 bus 0 fxp1 at pci1 dev 3 function 0: i82559 Ethernet (rev. 0x08) fxp1: interrupting at dec 6600 irq 32 fxp1: Ethernet address 00:02:56:00:22:05 inphy1 at fxp1 phy 1: i82555 10/100 media interface, rev. 4 inphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto scsibus0: waiting 2 seconds for devices to settle... scsibus1: waiting 2 seconds for devices to settle... scsibus2: waiting 2 seconds for devices to settle... stray isa irq 15 atapibus0 at atabus1: 2 targets cd0 at atapibus0 drive 0: <CD-224E, , A.8D> cdrom removable sd0 at scsibus0 target 0 lun 0: <COMPAQ, BD0186459A, B014> disk fixed sd0: 17365 MB, 7001 cyl, 20 head, 254 sec, 512 bytes/sect x 35565080 sectors sd0: sync (25.00ns offset 63), 16-bit (80.000MB/s) transfers, tagged queueing root on fxp0
Running envstat shows:
Current CritMax WarnMax WarnMin CritMin Unit [lmenv0] +2.5Vin: 2.513 V Vccp1: 1.617 V +Vcc: 3.317 V +5Vin/Vcc: 4.922 V +12Vin: 12.125 V Vccp2: 1.167 V External: N/A Internal: 29.000 degC FAN1: 8823 RPM FAN2: 8766 RPM [lmenv1] +2.5Vin: 2.500 V Vccp1: 1.645 V +Vcc: 3.300 V +5Vin/Vcc: 4.922 V +12Vin: 12.188 V Vccp2: 0.352 V External: N/A Internal: 29.000 degC FAN1: 8709 RPM FAN2: 8653 RPM [lmenv2] +2.5Vin: 2.513 V Vccp1: 1.673 V +Vcc: 3.317 V +5Vin/Vcc: 4.948 V +12Vin: 12.188 V Vccp2: 1.252 V External: N/A Internal: 51.000 degC FAN1: 8544 RPM FAN2: 5294 RPM [lmenv3] +2.5Vin: 0.000 V Vccp1: 0.000 V +Vcc: 3.214 V +5Vin/Vcc: 5.052 V +12Vin: 12.188 V Vccp2: 0.000 V External: N/A Internal: 40.000 degC FAN1: 8490 RPM FAN2: 8083 RPM
These values agree with the CPU 0, CPU 1, Dimm, and I/O readings, respectively, from the SRM show power -verbose command (although the FAN2 reading on lmenv2 is odd and not displayed by the SRM). The changes have all been committed to -current. Next is to find the sensors for the Riser and PSU, the memory chips, and to turn off the System Fail LED.
Commits-^- More notes -^-