/**
  Copyright (c) 2015 Quantenna Communications Inc
  All Rights Reserved

  This program is free software; you can redistribute it and/or
  modify it under the terms of the GNU General Public License
  as published by the Free Software Foundation; either version 2
  of the License, or (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

 **/

#ifndef _QDRV_FW_H
#define _QDRV_FW_H

unsigned long
qdrv_fw_auc_to_host_addr(unsigned long auc_addr);

void qdrv_fw_auc_memzero(void *dst, unsigned long size, unsigned long dst_phys_addr);

int qdrv_fw_load_muc(struct device *dev,
		char *firmware,
		uint32_t *start_addr);

int qdrv_fw_load_auc(struct device *dev,
		char *firmware,
		uint32_t *start_addr);

int qdrv_fw_load_dsp(struct device *dev,
		char *firmware,
		uint32_t *start_addr);

#endif
