> 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

Reply via email to