Deleted Added
sdiff udiff text old ( 233887 ) new ( 234450 )
full compact
1/*-
2 * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 12 unchanged lines hidden (view full) ---

21 * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
22 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
27 * THE POSSIBILITY OF SUCH DAMAGES.
28 *
29 * $FreeBSD: head/sys/dev/ath/ah_osdep.c 233887 2012-04-04 20:46:20Z adrian $
30 */
31#include "opt_ah.h"
32
33#include <sys/param.h>
34#include <sys/systm.h>
35#include <sys/kernel.h>
36#include <sys/module.h>
37#include <sys/sysctl.h>

--- 224 unchanged lines hidden (view full) ---

262 r->op = OP_WRITE;
263 r->reg = reg;
264 r->val = val;
265 alq_post(ath_hal_alq, ale);
266 }
267 }
268 if (ah->ah_config.ah_serialise_reg_war)
269 mtx_lock_spin(&ah_regser_mtx);
270#if _BYTE_ORDER == _BIG_ENDIAN
271 if (OS_REG_UNSWAPPED(reg))
272 bus_space_write_4(tag, h, reg, val);
273 else
274#endif
275 bus_space_write_stream_4(tag, h, reg, val);
276 if (ah->ah_config.ah_serialise_reg_war)
277 mtx_unlock_spin(&ah_regser_mtx);
278}
279
280u_int32_t
281ath_hal_reg_read(struct ath_hal *ah, u_int32_t reg)
282{
283 bus_space_tag_t tag = BUSTAG(ah);
284 bus_space_handle_t h = ah->ah_sh;
285 u_int32_t val;
286
287 if (ah->ah_config.ah_serialise_reg_war)
288 mtx_lock_spin(&ah_regser_mtx);
289#if _BYTE_ORDER == _BIG_ENDIAN
290 if (OS_REG_UNSWAPPED(reg))
291 val = bus_space_read_4(tag, h, reg);
292 else
293#endif
294 val = bus_space_read_stream_4(tag, h, reg);
295 if (ah->ah_config.ah_serialise_reg_war)
296 mtx_unlock_spin(&ah_regser_mtx);
297 if (ath_hal_alq) {
298 struct ale *ale = ath_hal_alq_get(ah);
299 if (ale) {
300 struct athregrec *r = (struct athregrec *) ale->ae_data;
301 r->threadid = curthread->td_tid;
302 r->op = OP_READ;

--- 35 unchanged lines hidden (view full) ---

338void
339ath_hal_reg_write(struct ath_hal *ah, u_int32_t reg, u_int32_t val)
340{
341 bus_space_tag_t tag = BUSTAG(ah);
342 bus_space_handle_t h = ah->ah_sh;
343
344 if (ah->ah_config.ah_serialise_reg_war)
345 mtx_lock_spin(&ah_regser_mtx);
346#if _BYTE_ORDER == _BIG_ENDIAN
347 if (OS_REG_UNSWAPPED(reg))
348 bus_space_write_4(tag, h, reg, val);
349 else
350#endif
351 bus_space_write_stream_4(tag, h, reg, val);
352 if (ah->ah_config.ah_serialise_reg_war)
353 mtx_unlock_spin(&ah_regser_mtx);
354}
355
356u_int32_t
357ath_hal_reg_read(struct ath_hal *ah, u_int32_t reg)
358{
359 bus_space_tag_t tag = BUSTAG(ah);
360 bus_space_handle_t h = ah->ah_sh;
361 u_int32_t val;
362
363 if (ah->ah_config.ah_serialise_reg_war)
364 mtx_lock_spin(&ah_regser_mtx);
365#if _BYTE_ORDER == _BIG_ENDIAN
366 if (OS_REG_UNSWAPPED(reg))
367 val = bus_space_read_4(tag, h, reg);
368 else
369#endif
370 val = bus_space_read_stream_4(tag, h, reg);
371 if (ah->ah_config.ah_serialise_reg_war)
372 mtx_unlock_spin(&ah_regser_mtx);
373 return val;
374}
375#endif /* AH_DEBUG || AH_REGOPS_FUNC */
376
377#ifdef AH_ASSERT
378void
379ath_hal_assert_failed(const char* filename, int lineno, const char *msg)
380{
381 printf("Atheros HAL assertion failure: %s: line %u: %s\n",
382 filename, lineno, msg);
383 panic("ath_hal_assert");
384}
385#endif /* AH_ASSERT */