Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/flash/mx25l.c
Show First 20 Lines • Show All 266 Lines • ▼ Show 20 Lines | if (sc->sc_flags & FL_ENABLE_4B_ADDR) { | ||||
txBuf[4] = (sector & 0xff); | txBuf[4] = (sector & 0xff); | ||||
} else { | } else { | ||||
cmd.rx_cmd_sz = 4; | cmd.rx_cmd_sz = 4; | ||||
cmd.tx_cmd_sz = 4; | cmd.tx_cmd_sz = 4; | ||||
txBuf[1] = ((sector >> 16) & 0xff); | txBuf[1] = ((sector >> 16) & 0xff); | ||||
txBuf[2] = ((sector >> 8) & 0xff); | txBuf[2] = ((sector >> 8) & 0xff); | ||||
txBuf[3] = (sector & 0xff); | txBuf[3] = (sector & 0xff); | ||||
} | } | ||||
if ((err = SPIBUS_TRANSFER(sc->sc_parent, sc->sc_dev, &cmd)) != 0) | err = SPIBUS_TRANSFER(sc->sc_parent, sc->sc_dev, &cmd); | ||||
return (err); | return (err); | ||||
err = mx25l_wait_for_device_ready(sc); | |||||
return (err); | |||||
} | } | ||||
static int | static int | ||||
mx25l_write(struct mx25l_softc *sc, off_t offset, caddr_t data, off_t count) | mx25l_write(struct mx25l_softc *sc, off_t offset, caddr_t data, off_t count) | ||||
{ | { | ||||
uint8_t txBuf[8], rxBuf[8]; | uint8_t txBuf[8], rxBuf[8]; | ||||
struct spi_command cmd; | struct spi_command cmd; | ||||
off_t bytes_to_write; | off_t bytes_to_write; | ||||
▲ Show 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | while (count != 0) { | ||||
if ((err = mx25l_wait_for_device_ready(sc)) != 0) | if ((err = mx25l_wait_for_device_ready(sc)) != 0) | ||||
break; | break; | ||||
if ((err = mx25l_set_writable(sc, 1)) != 0) | if ((err = mx25l_set_writable(sc, 1)) != 0) | ||||
break; | break; | ||||
err = SPIBUS_TRANSFER(sc->sc_parent, sc->sc_dev, &cmd); | err = SPIBUS_TRANSFER(sc->sc_parent, sc->sc_dev, &cmd); | ||||
if (err != 0) | if (err != 0) | ||||
break; | break; | ||||
err = mx25l_wait_for_device_ready(sc); | |||||
if (err) | |||||
break; | |||||
data += bytes_to_write; | data += bytes_to_write; | ||||
offset += bytes_to_write; | offset += bytes_to_write; | ||||
count -= bytes_to_write; | count -= bytes_to_write; | ||||
} | } | ||||
mx25l_set_writable(sc, 0); | |||||
return (err); | return (err); | ||||
} | } | ||||
static int | static int | ||||
mx25l_read(struct mx25l_softc *sc, off_t offset, caddr_t data, off_t count) | mx25l_read(struct mx25l_softc *sc, off_t offset, caddr_t data, off_t count) | ||||
{ | { | ||||
uint8_t txBuf[8], rxBuf[8]; | uint8_t txBuf[8], rxBuf[8]; | ||||
struct spi_command cmd; | struct spi_command cmd; | ||||
▲ Show 20 Lines • Show All 322 Lines • Show Last 20 Lines |