Lines Matching defs:mw
1896 struct memwin *mw = &sc->memwin[i];
1898 if (rw_initialized(&mw->mw_lock))
1899 rw_destroy(&mw->mw_lock);
3849 struct memwin *mw;
3872 for (i = 0, mw = &sc->memwin[0]; i < NUM_MEMWIN; i++, mw_init++, mw++) {
3873 if (!rw_initialized(&mw->mw_lock)) {
3874 rw_init(&mw->mw_lock, "memory window access");
3875 mw->mw_base = mw_init->base;
3876 mw->mw_aperture = mw_init->aperture;
3877 mw->mw_curpos = 0;
3881 (mw->mw_base + bar0) | V_BIR(0) |
3882 V_WINDOW(ilog2(mw->mw_aperture) - 10));
3883 rw_wlock(&mw->mw_lock);
3884 position_memwin(sc, i, mw->mw_curpos);
3885 rw_wunlock(&mw->mw_lock);
3895 * address prior to the requested address. mw->mw_curpos always has the actual
3901 struct memwin *mw;
3906 mw = &sc->memwin[idx];
3907 rw_assert(&mw->mw_lock, RA_WLOCKED);
3911 mw->mw_curpos = addr & ~0xf; /* start must be 16B aligned */
3914 mw->mw_curpos = addr & ~0x7f; /* start must be 128B aligned */
3917 t4_write_reg(sc, reg, mw->mw_curpos | pf);
3925 struct memwin *mw;
3934 mw = &sc->memwin[idx];
3936 rw_rlock(&mw->mw_lock);
3937 mw_end = mw->mw_curpos + mw->mw_aperture;
3938 if (addr >= mw_end || addr < mw->mw_curpos) {
3940 if (!rw_try_upgrade(&mw->mw_lock)) {
3941 rw_runlock(&mw->mw_lock);
3942 rw_wlock(&mw->mw_lock);
3944 rw_assert(&mw->mw_lock, RA_WLOCKED);
3946 rw_downgrade(&mw->mw_lock);
3947 mw_end = mw->mw_curpos + mw->mw_aperture;
3949 rw_assert(&mw->mw_lock, RA_RLOCKED);
3952 v = t4_read_reg(sc, mw->mw_base + addr -
3953 mw->mw_curpos);
3957 t4_write_reg(sc, mw->mw_base + addr -
3958 mw->mw_curpos, htole32(v));
3963 rw_runlock(&mw->mw_lock);