1e76ac2bfSKalle Valo /*
2e76ac2bfSKalle Valo  * Copyright (c) 2004-2011 Atheros Communications Inc.
3e76ac2bfSKalle Valo  *
4e76ac2bfSKalle Valo  * Permission to use, copy, modify, and/or distribute this software for any
5e76ac2bfSKalle Valo  * purpose with or without fee is hereby granted, provided that the above
6e76ac2bfSKalle Valo  * copyright notice and this permission notice appear in all copies.
7e76ac2bfSKalle Valo  *
8e76ac2bfSKalle Valo  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9e76ac2bfSKalle Valo  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10e76ac2bfSKalle Valo  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11e76ac2bfSKalle Valo  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12e76ac2bfSKalle Valo  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13e76ac2bfSKalle Valo  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14e76ac2bfSKalle Valo  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15e76ac2bfSKalle Valo  */
16e76ac2bfSKalle Valo 
17e76ac2bfSKalle Valo #ifndef HTC_OPS_H
18e76ac2bfSKalle Valo #define HTC_OPS_H
19e76ac2bfSKalle Valo 
20e76ac2bfSKalle Valo #include "htc.h"
21e76ac2bfSKalle Valo #include "debug.h"
22e76ac2bfSKalle Valo 
ath6kl_htc_create(struct ath6kl * ar)23e76ac2bfSKalle Valo static inline void *ath6kl_htc_create(struct ath6kl *ar)
24e76ac2bfSKalle Valo {
25e76ac2bfSKalle Valo 	return ar->htc_ops->create(ar);
26e76ac2bfSKalle Valo }
27e76ac2bfSKalle Valo 
ath6kl_htc_wait_target(struct htc_target * target)28e76ac2bfSKalle Valo static inline int ath6kl_htc_wait_target(struct htc_target *target)
29e76ac2bfSKalle Valo {
30e76ac2bfSKalle Valo 	return target->dev->ar->htc_ops->wait_target(target);
31e76ac2bfSKalle Valo }
32e76ac2bfSKalle Valo 
ath6kl_htc_start(struct htc_target * target)33e76ac2bfSKalle Valo static inline int ath6kl_htc_start(struct htc_target *target)
34e76ac2bfSKalle Valo {
35e76ac2bfSKalle Valo 	return target->dev->ar->htc_ops->start(target);
36e76ac2bfSKalle Valo }
37e76ac2bfSKalle Valo 
ath6kl_htc_conn_service(struct htc_target * target,struct htc_service_connect_req * req,struct htc_service_connect_resp * resp)38e76ac2bfSKalle Valo static inline int ath6kl_htc_conn_service(struct htc_target *target,
39e76ac2bfSKalle Valo 					  struct htc_service_connect_req *req,
40e76ac2bfSKalle Valo 					  struct htc_service_connect_resp *resp)
41e76ac2bfSKalle Valo {
42e76ac2bfSKalle Valo 	return target->dev->ar->htc_ops->conn_service(target, req, resp);
43e76ac2bfSKalle Valo }
44e76ac2bfSKalle Valo 
ath6kl_htc_tx(struct htc_target * target,struct htc_packet * packet)45e76ac2bfSKalle Valo static inline int ath6kl_htc_tx(struct htc_target *target,
46e76ac2bfSKalle Valo 				struct htc_packet *packet)
47e76ac2bfSKalle Valo {
48e76ac2bfSKalle Valo 	return target->dev->ar->htc_ops->tx(target, packet);
49e76ac2bfSKalle Valo }
50e76ac2bfSKalle Valo 
ath6kl_htc_stop(struct htc_target * target)51e76ac2bfSKalle Valo static inline void ath6kl_htc_stop(struct htc_target *target)
52e76ac2bfSKalle Valo {
53e76ac2bfSKalle Valo 	return target->dev->ar->htc_ops->stop(target);
54e76ac2bfSKalle Valo }
55e76ac2bfSKalle Valo 
ath6kl_htc_cleanup(struct htc_target * target)56e76ac2bfSKalle Valo static inline void ath6kl_htc_cleanup(struct htc_target *target)
57e76ac2bfSKalle Valo {
58e76ac2bfSKalle Valo 	return target->dev->ar->htc_ops->cleanup(target);
59e76ac2bfSKalle Valo }
60e76ac2bfSKalle Valo 
ath6kl_htc_flush_txep(struct htc_target * target,enum htc_endpoint_id endpoint,u16 tag)61e76ac2bfSKalle Valo static inline void ath6kl_htc_flush_txep(struct htc_target *target,
62e76ac2bfSKalle Valo 					 enum htc_endpoint_id endpoint,
63e76ac2bfSKalle Valo 					 u16 tag)
64e76ac2bfSKalle Valo {
65e76ac2bfSKalle Valo 	return target->dev->ar->htc_ops->flush_txep(target, endpoint, tag);
66e76ac2bfSKalle Valo }
67e76ac2bfSKalle Valo 
ath6kl_htc_flush_rx_buf(struct htc_target * target)68e76ac2bfSKalle Valo static inline void ath6kl_htc_flush_rx_buf(struct htc_target *target)
69e76ac2bfSKalle Valo {
70e76ac2bfSKalle Valo 	return target->dev->ar->htc_ops->flush_rx_buf(target);
71e76ac2bfSKalle Valo }
72e76ac2bfSKalle Valo 
ath6kl_htc_activity_changed(struct htc_target * target,enum htc_endpoint_id endpoint,bool active)73e76ac2bfSKalle Valo static inline void ath6kl_htc_activity_changed(struct htc_target *target,
74e76ac2bfSKalle Valo 					       enum htc_endpoint_id endpoint,
75e76ac2bfSKalle Valo 					       bool active)
76e76ac2bfSKalle Valo {
77e76ac2bfSKalle Valo 	return target->dev->ar->htc_ops->activity_changed(target, endpoint,
78e76ac2bfSKalle Valo 							  active);
79e76ac2bfSKalle Valo }
80e76ac2bfSKalle Valo 
ath6kl_htc_get_rxbuf_num(struct htc_target * target,enum htc_endpoint_id endpoint)81e76ac2bfSKalle Valo static inline int ath6kl_htc_get_rxbuf_num(struct htc_target *target,
82e76ac2bfSKalle Valo 					   enum htc_endpoint_id endpoint)
83e76ac2bfSKalle Valo {
84e76ac2bfSKalle Valo 	return target->dev->ar->htc_ops->get_rxbuf_num(target, endpoint);
85e76ac2bfSKalle Valo }
86e76ac2bfSKalle Valo 
ath6kl_htc_add_rxbuf_multiple(struct htc_target * target,struct list_head * pktq)87e76ac2bfSKalle Valo static inline int ath6kl_htc_add_rxbuf_multiple(struct htc_target *target,
88e76ac2bfSKalle Valo 						struct list_head *pktq)
89e76ac2bfSKalle Valo {
90e76ac2bfSKalle Valo 	return target->dev->ar->htc_ops->add_rxbuf_multiple(target, pktq);
91e76ac2bfSKalle Valo }
92e76ac2bfSKalle Valo 
ath6kl_htc_credit_setup(struct htc_target * target,struct ath6kl_htc_credit_info * info)93e76ac2bfSKalle Valo static inline int ath6kl_htc_credit_setup(struct htc_target *target,
94e76ac2bfSKalle Valo 					  struct ath6kl_htc_credit_info *info)
95e76ac2bfSKalle Valo {
96e76ac2bfSKalle Valo 	return target->dev->ar->htc_ops->credit_setup(target, info);
97e76ac2bfSKalle Valo }
98e76ac2bfSKalle Valo 
ath6kl_htc_tx_complete(struct ath6kl * ar,struct sk_buff * skb)99e76ac2bfSKalle Valo static inline void ath6kl_htc_tx_complete(struct ath6kl *ar,
100e76ac2bfSKalle Valo 					  struct sk_buff *skb)
101e76ac2bfSKalle Valo {
102e76ac2bfSKalle Valo 	ar->htc_ops->tx_complete(ar, skb);
103e76ac2bfSKalle Valo }
104e76ac2bfSKalle Valo 
105e76ac2bfSKalle Valo 
ath6kl_htc_rx_complete(struct ath6kl * ar,struct sk_buff * skb,u8 pipe)106e76ac2bfSKalle Valo static inline void ath6kl_htc_rx_complete(struct ath6kl *ar,
107e76ac2bfSKalle Valo 					  struct sk_buff *skb, u8 pipe)
108e76ac2bfSKalle Valo {
109e76ac2bfSKalle Valo 	ar->htc_ops->rx_complete(ar, skb, pipe);
110e76ac2bfSKalle Valo }
111e76ac2bfSKalle Valo 
112e76ac2bfSKalle Valo 
113e76ac2bfSKalle Valo #endif
114