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

dpu_hw_vbif.h (3251B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
      3 */
      4
      5#ifndef _DPU_HW_VBIF_H
      6#define _DPU_HW_VBIF_H
      7
      8#include "dpu_hw_catalog.h"
      9#include "dpu_hw_mdss.h"
     10#include "dpu_hw_util.h"
     11
     12struct dpu_hw_vbif;
     13
     14/**
     15 * struct dpu_hw_vbif_ops : Interface to the VBIF hardware driver functions
     16 *  Assumption is these functions will be called after clocks are enabled
     17 */
     18struct dpu_hw_vbif_ops {
     19	/**
     20	 * set_limit_conf - set transaction limit config
     21	 * @vbif: vbif context driver
     22	 * @xin_id: client interface identifier
     23	 * @rd: true for read limit; false for write limit
     24	 * @limit: outstanding transaction limit
     25	 */
     26	void (*set_limit_conf)(struct dpu_hw_vbif *vbif,
     27			u32 xin_id, bool rd, u32 limit);
     28
     29	/**
     30	 * get_limit_conf - get transaction limit config
     31	 * @vbif: vbif context driver
     32	 * @xin_id: client interface identifier
     33	 * @rd: true for read limit; false for write limit
     34	 * @return: outstanding transaction limit
     35	 */
     36	u32 (*get_limit_conf)(struct dpu_hw_vbif *vbif,
     37			u32 xin_id, bool rd);
     38
     39	/**
     40	 * set_halt_ctrl - set halt control
     41	 * @vbif: vbif context driver
     42	 * @xin_id: client interface identifier
     43	 * @enable: halt control enable
     44	 */
     45	void (*set_halt_ctrl)(struct dpu_hw_vbif *vbif,
     46			u32 xin_id, bool enable);
     47
     48	/**
     49	 * get_halt_ctrl - get halt control
     50	 * @vbif: vbif context driver
     51	 * @xin_id: client interface identifier
     52	 * @return: halt control enable
     53	 */
     54	bool (*get_halt_ctrl)(struct dpu_hw_vbif *vbif,
     55			u32 xin_id);
     56
     57	/**
     58	 * set_qos_remap - set QoS priority remap
     59	 * @vbif: vbif context driver
     60	 * @xin_id: client interface identifier
     61	 * @level: priority level
     62	 * @remap_level: remapped level
     63	 */
     64	void (*set_qos_remap)(struct dpu_hw_vbif *vbif,
     65			u32 xin_id, u32 level, u32 remap_level);
     66
     67	/**
     68	 * set_mem_type - set memory type
     69	 * @vbif: vbif context driver
     70	 * @xin_id: client interface identifier
     71	 * @value: memory type value
     72	 */
     73	void (*set_mem_type)(struct dpu_hw_vbif *vbif,
     74			u32 xin_id, u32 value);
     75
     76	/**
     77	 * clear_errors - clear any vbif errors
     78	 *	This function clears any detected pending/source errors
     79	 *	on the VBIF interface, and optionally returns the detected
     80	 *	error mask(s).
     81	 * @vbif: vbif context driver
     82	 * @pnd_errors: pointer to pending error reporting variable
     83	 * @src_errors: pointer to source error reporting variable
     84	 */
     85	void (*clear_errors)(struct dpu_hw_vbif *vbif,
     86		u32 *pnd_errors, u32 *src_errors);
     87
     88	/**
     89	 * set_write_gather_en - set write_gather enable
     90	 * @vbif: vbif context driver
     91	 * @xin_id: client interface identifier
     92	 */
     93	void (*set_write_gather_en)(struct dpu_hw_vbif *vbif, u32 xin_id);
     94};
     95
     96struct dpu_hw_vbif {
     97	/* base */
     98	struct dpu_hw_blk_reg_map hw;
     99
    100	/* vbif */
    101	enum dpu_vbif idx;
    102	const struct dpu_vbif_cfg *cap;
    103
    104	/* ops */
    105	struct dpu_hw_vbif_ops ops;
    106};
    107
    108/**
    109 * dpu_hw_vbif_init - initializes the vbif driver for the passed interface idx
    110 * @idx:  Interface index for which driver object is required
    111 * @addr: Mapped register io address of MDSS
    112 * @m:    Pointer to mdss catalog data
    113 */
    114struct dpu_hw_vbif *dpu_hw_vbif_init(enum dpu_vbif idx,
    115		void __iomem *addr,
    116		const struct dpu_mdss_cfg *m);
    117
    118void dpu_hw_vbif_destroy(struct dpu_hw_vbif *vbif);
    119
    120#endif /*_DPU_HW_VBIF_H */