1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2560424e9SKalle Valo /*
3560424e9SKalle Valo  * Common hwbus abstraction layer interface for cw1200 wireless driver
4560424e9SKalle Valo  *
5560424e9SKalle Valo  * Copyright (c) 2010, ST-Ericsson
6560424e9SKalle Valo  * Author: Dmitry Tarnyagin <dmitry.tarnyagin@lockless.no>
7560424e9SKalle Valo  */
8560424e9SKalle Valo 
9560424e9SKalle Valo #ifndef CW1200_HWBUS_H
10560424e9SKalle Valo #define CW1200_HWBUS_H
11560424e9SKalle Valo 
12560424e9SKalle Valo struct hwbus_priv;
13560424e9SKalle Valo 
14560424e9SKalle Valo void cw1200_irq_handler(struct cw1200_common *priv);
15560424e9SKalle Valo 
16560424e9SKalle Valo /* This MUST be wrapped with hwbus_ops->lock/unlock! */
17560424e9SKalle Valo int __cw1200_irq_enable(struct cw1200_common *priv, int enable);
18560424e9SKalle Valo 
19560424e9SKalle Valo struct hwbus_ops {
20560424e9SKalle Valo 	int (*hwbus_memcpy_fromio)(struct hwbus_priv *self, unsigned int addr,
21560424e9SKalle Valo 					void *dst, int count);
22560424e9SKalle Valo 	int (*hwbus_memcpy_toio)(struct hwbus_priv *self, unsigned int addr,
23560424e9SKalle Valo 					const void *src, int count);
24560424e9SKalle Valo 	void (*lock)(struct hwbus_priv *self);
25560424e9SKalle Valo 	void (*unlock)(struct hwbus_priv *self);
26560424e9SKalle Valo 	size_t (*align_size)(struct hwbus_priv *self, size_t size);
27560424e9SKalle Valo 	int (*power_mgmt)(struct hwbus_priv *self, bool suspend);
28560424e9SKalle Valo };
29560424e9SKalle Valo 
30560424e9SKalle Valo #endif /* CW1200_HWBUS_H */
31