> Date: Sun, 1 Aug 2010 16:00:21 +0200 (CEST) > From: Mark Kettenis <mark.kette...@xs4all.nl> > CC: tech@openbsd.org > List-Owner: <mailto:tech-ow...@openbsd.org> > X-Loop: tech@openbsd.org > Sender: owner-t...@openbsd.org > X-XS4ALL-DNSBL-Checked: mxdrop127.xs4all.nl checked 192.43.244.163 against > DNS blacklists > X-CNFS-Analysis: v=1.1 cv=BV6iOS6O7aV3pd42iKzuhu9AXfb4rD1J2pLXhYW4ImA= c=1 > sm=0 a=oC6LqzNhtE8A:10 a=A3duGc4wJ8K8BtNzzvyz4A==:17 a=UBLVwNoYAAAA:8 > a=aGJVRp6NARZg9Kqi9TUA:9 a=uEjCT1qOjzX6jIdIbGkA:7 > a=Tl7SpIjGsPDy7bHnjLYpaUHstlYA:4 a=p_OKZn5TktUA:10 > a=A3duGc4wJ8K8BtNzzvyz4A==:117 > X-Virus-Scanned: by XS4ALL Virus Scanner > X-XS4ALL-Spam-Score: 0.0 () none > X-XS4ALL-Spam: NO > Envelope-To: mark.kette...@xs4all.nl > > > Date: Sun, 1 Aug 2010 14:13:02 +0100 > > From: Stuart Henderson <s...@spacehopper.org> > > > > iic(4) doesn't seem to work well on a Blade 2500; devices on the bus > > are detected but reading from them fails: > > > > pcfiic0 at ebus0 addr 320-321 ivec 0x2e > > iic0 at pcfiic0 > > "SUNW,i2c-imax" at iic0 addr 0x9 not configured > > "pca9556" at iic0 addr 0x18 not configured > > admtt0 at iic0 addr 0x2c, unable to read fan setting > > admtt1 at iic0 addr 0x2e, unable to read fan setting > > "fm3560" at iic0 addr 0x37 not configured > > "fm3560" at iic0 addr 0x4e not configured > > spdmem0 at iic0 addr 0x5d: no EEPROM found > > spdmem1 at iic0 addr 0x5e: no EEPROM found > > spdmem2 at iic0 addr 0x65: no EEPROM found > > spdmem3 at iic0 addr 0x66: no EEPROM found > > "ics951601" at iic0 addr 0x69 not configured > > Can you try the attached diff?
Ugh, that one had a small mistake in it; here's a better one. Index: pcf8584.c =================================================================== RCS file: /cvs/src/sys/dev/ic/pcf8584.c,v retrieving revision 1.10 diff -u -p -r1.10 pcf8584.c --- pcf8584.c 30 Apr 2010 15:18:29 -0000 1.10 +++ pcf8584.c 1 Aug 2010 14:16:42 -0000 @@ -275,8 +275,9 @@ void pcfiic_write(struct pcfiic_softc *sc, bus_size_t r, u_int8_t v) { bus_space_write_1(sc->sc_iot, sc->sc_ioh, sc->sc_regmap[r], v); - bus_space_barrier(sc->sc_iot, sc->sc_ioh, sc->sc_regmap[r], 1, - BUS_SPACE_BARRIER_WRITE); + bus_space_barrier(sc->sc_iot, sc->sc_ioh, 0, 4, + BUS_SPACE_BARRIER_WRITE | BUS_SPACE_BARRIER_READ); + bus_space_read_1(sc->sc_iot, sc->sc_ioh, sc->sc_regmap[PCF_S1]); } void