blob: 26f49b7ec834322b36eb129065019e67f3b5131a [file] [log] [blame]
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -07001/*
2 * Copyright (c) 2007-2008 Atheros Communications Inc.
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16/* */
17/* Module Name : wrap_mis.c */
18/* */
19/* Abstract */
20/* This module contains wrapper functions for misc functions */
21/* */
22/* NOTES */
23/* Platform dependent. */
24/* */
25/************************************************************************/
26
27#include "oal_dt.h"
28#include "usbdrv.h"
29
30#include <linux/netlink.h>
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070031#include <net/iw_handler.h>
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070032
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070033/* extern struct zsWdsStruct wds[ZM_WDS_PORT_NUMBER]; */
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070034extern struct zsVapStruct vap[ZM_VAP_PORT_NUMBER];
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070035extern u16_t zfLnxGetVapId(zdev_t *dev);
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070036
37/* Simply return 0xffff if VAP function is not supported */
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070038u16_t zfwGetVapId(zdev_t *dev)
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070039{
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070040 return zfLnxGetVapId(dev);
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070041}
42
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070043void zfwSleep(zdev_t *dev, u32_t ms)
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070044{
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070045 if (in_interrupt() == 0)
46 mdelay(ms);
47 else {
48 int ii;
49 int iter = 100000 * ms;
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070050
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070051 for (ii = 0; ii < iter; ii++) {
52 }
53 }
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070054}
55
56#ifdef ZM_HALPLUS_LOCK
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070057asmlinkage struct zsWlanDev *zfwGetWlanDev(zdev_t *dev)
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070058{
Greg Kroah-Hartmanda3e8902009-01-05 13:44:36 -080059 struct usbdrv_private *macp = dev->ml_priv;
60 return macp->wd;
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070061}
62
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070063asmlinkage void zfwEnterCriticalSection(zdev_t *dev)
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070064{
Greg Kroah-Hartmanda3e8902009-01-05 13:44:36 -080065 struct usbdrv_private *macp = dev->ml_priv;
66 spin_lock_irqsave(&macp->cs_lock, macp->hal_irqFlag);
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070067}
68
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070069asmlinkage void zfwLeaveCriticalSection(zdev_t *dev)
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070070{
Greg Kroah-Hartmanda3e8902009-01-05 13:44:36 -080071 struct usbdrv_private *macp = dev->ml_priv;
72 spin_unlock_irqrestore(&macp->cs_lock, macp->hal_irqFlag);
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070073}
74
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070075asmlinkage u8_t zfwBufReadByte(zdev_t *dev, zbuf_t *buf, u16_t offset)
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070076{
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070077 return *(u8_t *)((u8_t *)buf->data+offset);
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070078}
79
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070080asmlinkage u16_t zfwBufReadHalfWord(zdev_t *dev, zbuf_t *buf, u16_t offset)
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070081{
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070082 return zmw_cpu_to_le16(*(u16_t *)((u8_t *)buf->data+offset));
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070083}
84
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070085asmlinkage void zfwBufWriteByte(zdev_t *dev, zbuf_t *buf, u16_t offset,
86 u8_t value)
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070087{
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070088 *(u8_t *)((u8_t *)buf->data+offset) = value;
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070089}
90
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070091asmlinkage void zfwBufWriteHalfWord(zdev_t *dev, zbuf_t *buf, u16_t offset,
92 u16_t value)
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070093{
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070094 *(u16_t *)((u8_t *)buf->data+offset) = zmw_cpu_to_le16(value);
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070095}
96
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070097asmlinkage u8_t *zfwGetBuffer(zdev_t *dev, zbuf_t *buf)
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -070098{
Mithlesh Thukral2bef7a02009-10-26 21:22:55 -070099 return (u8_t *)(buf->data);
Luis R. Rodriguez4bd43f52008-10-27 22:44:22 -0700100}
101#endif
102
103/* Leave an empty line below to remove warning message on some compiler */