On Wed, Mar 31, 2010 at 05:09:41AM +0000, Michael Lorenz wrote:
> Module Name:  src
> Committed By: macallan
> Date:         Wed Mar 31 05:09:41 UTC 2010
> 
> Modified Files:
>       src/sys/dev/ic: pcf8584.c
> 
> Log Message:
> Do as OpenSolaris does and read the status register after each write.
> Now this driver works on my Blade 2500.

 void
 pcfiic_write(struct pcfiic_softc *sc, bus_size_t r, u_int8_t v)
 {
+       volatile uint8_t junk;
        bus_space_write_1(sc->sc_iot, sc->sc_ioh, sc->sc_regmap[r], v);
+       junk = bus_space_read_1(sc->sc_iot, sc->sc_ioh, PCF_S1);
        bus_space_barrier(sc->sc_iot, sc->sc_ioh, sc->sc_regmap[r], 1,
            BUS_SPACE_BARRIER_WRITE);
 }

I wonder, does the device need the read, or is the bus_space_barrier()
insufficient to flush the write to the device?

Dave

-- 
David Young             OJC Technologies
dyo...@ojctech.com      Urbana, IL * (217) 278-3933

Reply via email to