Provide a workaround for setting the correct endianness when doing CFI on

a mips big-endian board.

This is (hopefully! ish!) a temporary change until a slightly better way
can be found to express this without a config option.

Tested:

* BUFFALO WZR-HP-G300NH 1stGen (by submitter)

Submitted by:	Mori Hiroki <yamori813@yahoo.co.jp>
This commit is contained in:
Adrian Chadd 2016-02-04 22:39:27 +00:00
parent 24e61dbfdd
commit 3f84dfc1cd
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=295284
2 changed files with 16 additions and 0 deletions

View file

@ -918,6 +918,7 @@ VNET_DEBUG opt_global.h
# Common Flash Interface (CFI) options
CFI_SUPPORT_STRATAFLASH opt_cfi.h
CFI_ARMEDANDDANGEROUS opt_cfi.h
CFI_HARDWAREBYTESWAP opt_cfi.h
# Sound options
SND_DEBUG opt_snd.h

View file

@ -99,11 +99,17 @@ cfi_read(struct cfi_softc *sc, u_int ofs)
break;
case 2:
sval = bus_space_read_2(sc->sc_tag, sc->sc_handle, ofs);
#ifdef CFI_HARDWAREBYTESWAP
val = sval;
#else
val = le16toh(sval);
#endif
break;
case 4:
val = bus_space_read_4(sc->sc_tag, sc->sc_handle, ofs);
#ifndef CFI_HARDWAREBYTESWAP
val = le32toh(val);
#endif
break;
default:
val = ~0;
@ -122,10 +128,19 @@ cfi_write(struct cfi_softc *sc, u_int ofs, u_int val)
bus_space_write_1(sc->sc_tag, sc->sc_handle, ofs, val);
break;
case 2:
#ifdef CFI_HARDWAREBYTESWAP
bus_space_write_2(sc->sc_tag, sc->sc_handle, ofs, val);
#else
bus_space_write_2(sc->sc_tag, sc->sc_handle, ofs, htole16(val));
#endif
break;
case 4:
#ifdef CFI_HARDWAREBYTESWAP
bus_space_write_4(sc->sc_tag, sc->sc_handle, ofs, val);
#else
bus_space_write_4(sc->sc_tag, sc->sc_handle, ofs, htole32(val));
#endif
break;
}
}