2 * Copyright (c) 2004-2011 Atheros Communications Inc.
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.
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.
23 static inline int hif_read_write_sync(struct ath6kl
*ar
, u32 addr
, u8
*buf
,
26 ath6kl_dbg(ATH6KL_DBG_HIF
,
27 "hif %s sync addr 0x%x buf 0x%p len %d request 0x%x\n",
28 (request
& HIF_WRITE
) ? "write" : "read",
29 addr
, buf
, len
, request
);
31 return ar
->hif_ops
->read_write_sync(ar
, addr
, buf
, len
, request
);
34 static inline int hif_write_async(struct ath6kl
*ar
, u32 address
, u8
*buffer
,
35 u32 length
, u32 request
,
36 struct htc_packet
*packet
)
38 ath6kl_dbg(ATH6KL_DBG_HIF
,
39 "hif write async addr 0x%x buf 0x%p len %d request 0x%x\n",
40 address
, buffer
, length
, request
);
42 return ar
->hif_ops
->write_async(ar
, address
, buffer
, length
,
45 static inline void ath6kl_hif_irq_enable(struct ath6kl
*ar
)
47 ath6kl_dbg(ATH6KL_DBG_HIF
, "hif irq enable\n");
49 return ar
->hif_ops
->irq_enable(ar
);
52 static inline void ath6kl_hif_irq_disable(struct ath6kl
*ar
)
54 ath6kl_dbg(ATH6KL_DBG_HIF
, "hif irq disable\n");
56 return ar
->hif_ops
->irq_disable(ar
);
59 static inline struct hif_scatter_req
*hif_scatter_req_get(struct ath6kl
*ar
)
61 return ar
->hif_ops
->scatter_req_get(ar
);
64 static inline void hif_scatter_req_add(struct ath6kl
*ar
,
65 struct hif_scatter_req
*s_req
)
67 return ar
->hif_ops
->scatter_req_add(ar
, s_req
);
70 static inline int ath6kl_hif_enable_scatter(struct ath6kl
*ar
)
72 return ar
->hif_ops
->enable_scatter(ar
);
75 static inline int ath6kl_hif_scat_req_rw(struct ath6kl
*ar
,
76 struct hif_scatter_req
*scat_req
)
78 return ar
->hif_ops
->scat_req_rw(ar
, scat_req
);
81 static inline void ath6kl_hif_cleanup_scatter(struct ath6kl
*ar
)
83 return ar
->hif_ops
->cleanup_scatter(ar
);
86 static inline int ath6kl_hif_suspend(struct ath6kl
*ar
,
87 struct cfg80211_wowlan
*wow
)
89 ath6kl_dbg(ATH6KL_DBG_HIF
, "hif suspend\n");
91 return ar
->hif_ops
->suspend(ar
, wow
);
95 * Read from the ATH6KL through its diagnostic window. No cooperation from
96 * the Target is required for this.
98 static inline int ath6kl_hif_diag_read32(struct ath6kl
*ar
, u32 address
,
101 return ar
->hif_ops
->diag_read32(ar
, address
, value
);
105 * Write to the ATH6KL through its diagnostic window. No cooperation from
106 * the Target is required for this.
108 static inline int ath6kl_hif_diag_write32(struct ath6kl
*ar
, u32 address
,
111 return ar
->hif_ops
->diag_write32(ar
, address
, value
);
114 static inline int ath6kl_hif_bmi_read(struct ath6kl
*ar
, u8
*buf
, u32 len
)
116 return ar
->hif_ops
->bmi_read(ar
, buf
, len
);
119 static inline int ath6kl_hif_bmi_write(struct ath6kl
*ar
, u8
*buf
, u32 len
)
121 return ar
->hif_ops
->bmi_write(ar
, buf
, len
);
124 static inline int ath6kl_hif_resume(struct ath6kl
*ar
)
126 ath6kl_dbg(ATH6KL_DBG_HIF
, "hif resume\n");
128 return ar
->hif_ops
->resume(ar
);
131 static inline int ath6kl_hif_power_on(struct ath6kl
*ar
)
133 ath6kl_dbg(ATH6KL_DBG_HIF
, "hif power on\n");
135 return ar
->hif_ops
->power_on(ar
);
138 static inline int ath6kl_hif_power_off(struct ath6kl
*ar
)
140 ath6kl_dbg(ATH6KL_DBG_HIF
, "hif power off\n");
142 return ar
->hif_ops
->power_off(ar
);
145 static inline void ath6kl_hif_stop(struct ath6kl
*ar
)
147 ath6kl_dbg(ATH6KL_DBG_HIF
, "hif stop\n");
149 ar
->hif_ops
->stop(ar
);