cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

t7xx_hif_dpmaif_rx.h (3681B)


      1/* SPDX-License-Identifier: GPL-2.0-only
      2 *
      3 * Copyright (c) 2021, MediaTek Inc.
      4 * Copyright (c) 2021-2022, Intel Corporation.
      5 *
      6 * Authors:
      7 *  Haijun Liu <haijun.liu@mediatek.com>
      8 *  Eliot Lee <eliot.lee@intel.com>
      9 *  Ricardo Martinez <ricardo.martinez@linux.intel.com>
     10 *
     11 * Contributors:
     12 *  Amir Hanania <amir.hanania@intel.com>
     13 *  Moises Veleta <moises.veleta@intel.com>
     14 *  Sreehari Kancharla <sreehari.kancharla@intel.com>
     15 */
     16
     17#ifndef __T7XX_HIF_DPMA_RX_H__
     18#define __T7XX_HIF_DPMA_RX_H__
     19
     20#include <linux/bits.h>
     21#include <linux/types.h>
     22
     23#include "t7xx_hif_dpmaif.h"
     24
     25#define NETIF_MASK		GENMASK(4, 0)
     26
     27#define PKT_TYPE_IP4		0
     28#define PKT_TYPE_IP6		1
     29
     30/* Structure of DL PIT */
     31struct dpmaif_pit {
     32	__le32 header;
     33	union {
     34		struct {
     35			__le32 data_addr_l;
     36			__le32 data_addr_h;
     37			__le32 footer;
     38		} pd;
     39		struct {
     40			__le32 params_1;
     41			__le32 params_2;
     42			__le32 params_3;
     43		} msg;
     44	};
     45};
     46
     47/* PIT header fields */
     48#define PD_PIT_DATA_LEN		GENMASK(31, 16)
     49#define PD_PIT_BUFFER_ID	GENMASK(15, 3)
     50#define PD_PIT_BUFFER_TYPE	BIT(2)
     51#define PD_PIT_CONT		BIT(1)
     52#define PD_PIT_PACKET_TYPE	BIT(0)
     53/* PIT footer fields */
     54#define PD_PIT_DLQ_DONE		GENMASK(31, 30)
     55#define PD_PIT_ULQ_DONE		GENMASK(29, 24)
     56#define PD_PIT_HEADER_OFFSET	GENMASK(23, 19)
     57#define PD_PIT_BI_F		GENMASK(18, 17)
     58#define PD_PIT_IG		BIT(16)
     59#define PD_PIT_RES		GENMASK(15, 11)
     60#define PD_PIT_H_BID		GENMASK(10, 8)
     61#define PD_PIT_PIT_SEQ		GENMASK(7, 0)
     62
     63#define MSG_PIT_DP		BIT(31)
     64#define MSG_PIT_RES		GENMASK(30, 27)
     65#define MSG_PIT_NETWORK_TYPE	GENMASK(26, 24)
     66#define MSG_PIT_CHANNEL_ID	GENMASK(23, 16)
     67#define MSG_PIT_RES2		GENMASK(15, 12)
     68#define MSG_PIT_HPC_IDX		GENMASK(11, 8)
     69#define MSG_PIT_SRC_QID		GENMASK(7, 5)
     70#define MSG_PIT_ERROR_BIT	BIT(4)
     71#define MSG_PIT_CHECKSUM	GENMASK(3, 2)
     72#define MSG_PIT_CONT		BIT(1)
     73#define MSG_PIT_PACKET_TYPE	BIT(0)
     74
     75#define MSG_PIT_HP_IDX		GENMASK(31, 27)
     76#define MSG_PIT_CMD		GENMASK(26, 24)
     77#define MSG_PIT_RES3		GENMASK(23, 21)
     78#define MSG_PIT_FLOW		GENMASK(20, 16)
     79#define MSG_PIT_COUNT		GENMASK(15, 0)
     80
     81#define MSG_PIT_HASH		GENMASK(31, 24)
     82#define MSG_PIT_RES4		GENMASK(23, 18)
     83#define MSG_PIT_PRO		GENMASK(17, 16)
     84#define MSG_PIT_VBID		GENMASK(15, 3)
     85#define MSG_PIT_RES5		GENMASK(2, 0)
     86
     87#define MSG_PIT_DLQ_DONE	GENMASK(31, 30)
     88#define MSG_PIT_ULQ_DONE	GENMASK(29, 24)
     89#define MSG_PIT_IP		BIT(23)
     90#define MSG_PIT_RES6		BIT(22)
     91#define MSG_PIT_MR		GENMASK(21, 20)
     92#define MSG_PIT_RES7		GENMASK(19, 17)
     93#define MSG_PIT_IG		BIT(16)
     94#define MSG_PIT_RES8		GENMASK(15, 11)
     95#define MSG_PIT_H_BID		GENMASK(10, 8)
     96#define MSG_PIT_PIT_SEQ		GENMASK(7, 0)
     97
     98int t7xx_dpmaif_rxq_init(struct dpmaif_rx_queue *queue);
     99void t7xx_dpmaif_rx_clear(struct dpmaif_ctrl *dpmaif_ctrl);
    100int t7xx_dpmaif_bat_rel_wq_alloc(struct dpmaif_ctrl *dpmaif_ctrl);
    101int t7xx_dpmaif_rx_buf_alloc(struct dpmaif_ctrl *dpmaif_ctrl,
    102			     const struct dpmaif_bat_request *bat_req,
    103			     const unsigned int q_num, const unsigned int buf_cnt,
    104			     const bool initial);
    105int t7xx_dpmaif_rx_frag_alloc(struct dpmaif_ctrl *dpmaif_ctrl, struct dpmaif_bat_request *bat_req,
    106			      const unsigned int buf_cnt, const bool first_time);
    107void t7xx_dpmaif_rx_stop(struct dpmaif_ctrl *dpmaif_ctrl);
    108void t7xx_dpmaif_irq_rx_done(struct dpmaif_ctrl *dpmaif_ctrl, const unsigned int que_mask);
    109void t7xx_dpmaif_rxq_free(struct dpmaif_rx_queue *queue);
    110void t7xx_dpmaif_bat_wq_rel(struct dpmaif_ctrl *dpmaif_ctrl);
    111int t7xx_dpmaif_bat_alloc(const struct dpmaif_ctrl *dpmaif_ctrl, struct dpmaif_bat_request *bat_req,
    112			  const enum bat_type buf_type);
    113void t7xx_dpmaif_bat_free(const struct dpmaif_ctrl *dpmaif_ctrl,
    114			  struct dpmaif_bat_request *bat_req);
    115
    116#endif /* __T7XX_HIF_DPMA_RX_H__ */