diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/ath/wil6210/main.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/net/wireless/ath/wil6210/main.c b/drivers/net/wireless/ath/wil6210/main.c index 3e9a71f125be..4c1533088fe5 100644 --- a/drivers/net/wireless/ath/wil6210/main.c +++ b/drivers/net/wireless/ath/wil6210/main.c | |||
@@ -109,6 +109,15 @@ static void wil_connect_timer_fn(ulong x) | |||
109 | schedule_work(&wil->disconnect_worker); | 109 | schedule_work(&wil->disconnect_worker); |
110 | } | 110 | } |
111 | 111 | ||
112 | static void wil_cache_mbox_regs(struct wil6210_priv *wil) | ||
113 | { | ||
114 | /* make shadow copy of registers that should not change on run time */ | ||
115 | wil_memcpy_fromio_32(&wil->mbox_ctl, wil->csr + HOST_MBOX, | ||
116 | sizeof(struct wil6210_mbox_ctl)); | ||
117 | wil_mbox_ring_le2cpus(&wil->mbox_ctl.rx); | ||
118 | wil_mbox_ring_le2cpus(&wil->mbox_ctl.tx); | ||
119 | } | ||
120 | |||
112 | int wil_priv_init(struct wil6210_priv *wil) | 121 | int wil_priv_init(struct wil6210_priv *wil) |
113 | { | 122 | { |
114 | wil_dbg_MISC(wil, "%s()\n", __func__); | 123 | wil_dbg_MISC(wil, "%s()\n", __func__); |
@@ -138,11 +147,7 @@ int wil_priv_init(struct wil6210_priv *wil) | |||
138 | return -EAGAIN; | 147 | return -EAGAIN; |
139 | } | 148 | } |
140 | 149 | ||
141 | /* make shadow copy of registers that should not change on run time */ | 150 | wil_cache_mbox_regs(wil); |
142 | wil_memcpy_fromio_32(&wil->mbox_ctl, wil->csr + HOST_MBOX, | ||
143 | sizeof(struct wil6210_mbox_ctl)); | ||
144 | wil_mbox_ring_le2cpus(&wil->mbox_ctl.rx); | ||
145 | wil_mbox_ring_le2cpus(&wil->mbox_ctl.tx); | ||
146 | 151 | ||
147 | return 0; | 152 | return 0; |
148 | } | 153 | } |
@@ -260,11 +265,7 @@ int wil_reset(struct wil6210_priv *wil) | |||
260 | wil->pending_connect_cid = -1; | 265 | wil->pending_connect_cid = -1; |
261 | INIT_COMPLETION(wil->wmi_ready); | 266 | INIT_COMPLETION(wil->wmi_ready); |
262 | 267 | ||
263 | /* make shadow copy of registers that should not change on run time */ | 268 | wil_cache_mbox_regs(wil); |
264 | wil_memcpy_fromio_32(&wil->mbox_ctl, wil->csr + HOST_MBOX, | ||
265 | sizeof(struct wil6210_mbox_ctl)); | ||
266 | wil_mbox_ring_le2cpus(&wil->mbox_ctl.rx); | ||
267 | wil_mbox_ring_le2cpus(&wil->mbox_ctl.tx); | ||
268 | 269 | ||
269 | /* TODO: release MAC reset */ | 270 | /* TODO: release MAC reset */ |
270 | wil6210_enable_irq(wil); | 271 | wil6210_enable_irq(wil); |