text: /*
   * Copyright (C) 2016 Felix Fietkau <nbd@nbd.name>
   *
   * Permission to use, copy, modify, and/or distribute this software for any
   * purpose with or without fee is hereby granted, provided that the above
   * copyright notice and this permission notice appear in all copies.
   *
   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   */
  #ifndef __MT76_DMA_H
  #define __MT76_DMA_H
  
  #define MT_RING_SIZE			0x10
  
  #define MT_DMA_CTL_SD_LEN1		GENMASK(13, 0)
  #define MT_DMA_CTL_LAST_SEC1		BIT(14)
  #define MT_DMA_CTL_BURST		BIT(15)
  #define MT_DMA_CTL_SD_LEN0		GENMASK(29, 16)
  #define MT_DMA_CTL_LAST_SEC0		BIT(30)
  #define MT_DMA_CTL_DMA_DONE		BIT(31)
  
  #define MT_DMA_HDR_LEN			4
  #define MT_RX_INFO_LEN			4
  #define MT_FCE_INFO_LEN			4
  #define MT_RX_RXWI_LEN			32
  
  struct mt76_desc {
  	__le32 buf0;
  	__le32 ctrl;
  	__le32 buf1;
  	__le32 info;
  } __packed __aligned(4);
  
  enum mt76_qsel {
  	MT_QSEL_MGMT,
  	MT_QSEL_HCCA,
  	MT_QSEL_EDCA,
  	MT_QSEL_EDCA_2,
  };
  
  enum mt76_mcu_evt_type {
  	EVT_CMD_DONE,
  	EVT_CMD_ERROR,
  	EVT_CMD_RETRY,
  	EVT_EVENT_PWR_RSP,
  	EVT_EVENT_WOW_RSP,
  	EVT_EVENT_CARRIER_DETECT_RSP,
  	EVT_EVENT_DFS_DETECT_RSP,
  };
  
  int mt76_dma_attach(struct mt76_dev *dev);
  void mt76_dma_cleanup(struct mt76_dev *dev);
  
  #endif
  