/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Device probe and register.
 *
 * Copyright (c) 2017-2020, Silicon Laboratories, Inc.
 * Copyright (c) 2010, ST-Ericsson
 * Copyright (c) 2006, Michael Wu <flamingice@sourmilk.net>
 * Copyright 2004-2006 Jean-Baptiste Note <jbnote@gmail.com>, et al.
 */
#ifndef WFX_MAIN_H
#define WFX_MAIN_H

#include <linux/gpio/consumer.h>

struct wfx_dev;
struct hwbus_ops;

struct wfx_platform_data {
	/* Keyset and ".sec" extension will be appended to this string */
	const char *file_fw;
	const char *file_pds;
	struct gpio_desc *gpio_wakeup;
	/*
	 * if true HIF D_out is sampled on the rising edge of the clock
	 * (intended to be used in 50Mhz SDIO)
	 */
	bool use_rising_clk;
};

struct wfx_dev *wfx_init_common(struct device *dev,
				const struct wfx_platform_data *pdata,
				const struct hwbus_ops *hwbus_ops,
				void *hwbus_priv);

int wfx_probe(struct wfx_dev *wdev);
void wfx_release(struct wfx_dev *wdev);

bool wfx_api_older_than(struct wfx_dev *wdev, int major, int minor);
int wfx_send_pds(struct wfx_dev *wdev, u8 *buf, size_t len);

#endif
