linux/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.h
<<
>>
Prefs
   1#ifndef __NVKM_GRCTX_NVC0_H__
   2#define __NVKM_GRCTX_NVC0_H__
   3#include "gf100.h"
   4
   5struct gf100_grctx {
   6        struct gf100_gr *gr;
   7        struct gf100_gr_data *data;
   8        struct gf100_gr_mmio *mmio;
   9        int buffer_nr;
  10        u64 buffer[4];
  11        u64 addr;
  12};
  13
  14int  gf100_grctx_mmio_data(struct gf100_grctx *, u32 size, u32 align, u32 access);
  15void gf100_grctx_mmio_item(struct gf100_grctx *, u32 addr, u32 data, int s, int);
  16
  17#define mmio_vram(a,b,c,d) gf100_grctx_mmio_data((a), (b), (c), (d))
  18#define mmio_refn(a,b,c,d,e) gf100_grctx_mmio_item((a), (b), (c), (d), (e))
  19#define mmio_skip(a,b,c) mmio_refn((a), (b), (c), -1, -1)
  20#define mmio_wr32(a,b,c) mmio_refn((a), (b), (c),  0, -1)
  21
  22struct gf100_grctx_func {
  23        /* main context generation function */
  24        void  (*main)(struct gf100_gr *, struct gf100_grctx *);
  25        /* context-specific modify-on-first-load list generation function */
  26        void  (*unkn)(struct gf100_gr *);
  27        /* mmio context data */
  28        const struct gf100_gr_pack *hub;
  29        const struct gf100_gr_pack *gpc;
  30        const struct gf100_gr_pack *zcull;
  31        const struct gf100_gr_pack *tpc;
  32        const struct gf100_gr_pack *ppc;
  33        /* indirect context data, generated with icmds/mthds */
  34        const struct gf100_gr_pack *icmd;
  35        const struct gf100_gr_pack *mthd;
  36        /* bundle circular buffer */
  37        void (*bundle)(struct gf100_grctx *);
  38        u32 bundle_size;
  39        u32 bundle_min_gpm_fifo_depth;
  40        u32 bundle_token_limit;
  41        /* pagepool */
  42        void (*pagepool)(struct gf100_grctx *);
  43        u32 pagepool_size;
  44        /* attribute(/alpha) circular buffer */
  45        void (*attrib)(struct gf100_grctx *);
  46        u32 attrib_nr_max;
  47        u32 attrib_nr;
  48        u32 alpha_nr_max;
  49        u32 alpha_nr;
  50};
  51
  52extern const struct gf100_grctx_func gf100_grctx;
  53int  gf100_grctx_generate(struct gf100_gr *);
  54void gf100_grctx_generate_main(struct gf100_gr *, struct gf100_grctx *);
  55void gf100_grctx_generate_bundle(struct gf100_grctx *);
  56void gf100_grctx_generate_pagepool(struct gf100_grctx *);
  57void gf100_grctx_generate_attrib(struct gf100_grctx *);
  58void gf100_grctx_generate_unkn(struct gf100_gr *);
  59void gf100_grctx_generate_tpcid(struct gf100_gr *);
  60void gf100_grctx_generate_r406028(struct gf100_gr *);
  61void gf100_grctx_generate_r4060a8(struct gf100_gr *);
  62void gf100_grctx_generate_r418bb8(struct gf100_gr *);
  63void gf100_grctx_generate_r406800(struct gf100_gr *);
  64
  65extern const struct gf100_grctx_func gf108_grctx;
  66void gf108_grctx_generate_attrib(struct gf100_grctx *);
  67void gf108_grctx_generate_unkn(struct gf100_gr *);
  68
  69extern const struct gf100_grctx_func gf104_grctx;
  70extern const struct gf100_grctx_func gf110_grctx;
  71
  72extern const struct gf100_grctx_func gf117_grctx;
  73void gf117_grctx_generate_attrib(struct gf100_grctx *);
  74
  75extern const struct gf100_grctx_func gf119_grctx;
  76
  77extern const struct gf100_grctx_func gk104_grctx;
  78extern const struct gf100_grctx_func gk20a_grctx;
  79void gk104_grctx_generate_main(struct gf100_gr *, struct gf100_grctx *);
  80void gk104_grctx_generate_bundle(struct gf100_grctx *);
  81void gk104_grctx_generate_pagepool(struct gf100_grctx *);
  82void gk104_grctx_generate_unkn(struct gf100_gr *);
  83void gk104_grctx_generate_r418bb8(struct gf100_gr *);
  84
  85void gm107_grctx_generate_bundle(struct gf100_grctx *);
  86void gm107_grctx_generate_pagepool(struct gf100_grctx *);
  87void gm107_grctx_generate_attrib(struct gf100_grctx *);
  88
  89extern const struct gf100_grctx_func gk110_grctx;
  90extern const struct gf100_grctx_func gk110b_grctx;
  91extern const struct gf100_grctx_func gk208_grctx;
  92
  93extern const struct gf100_grctx_func gm107_grctx;
  94void gm107_grctx_generate_bundle(struct gf100_grctx *);
  95void gm107_grctx_generate_pagepool(struct gf100_grctx *);
  96void gm107_grctx_generate_attrib(struct gf100_grctx *);
  97
  98extern const struct gf100_grctx_func gm200_grctx;
  99void gm200_grctx_generate_tpcid(struct gf100_gr *);
 100void gm200_grctx_generate_405b60(struct gf100_gr *);
 101
 102extern const struct gf100_grctx_func gm20b_grctx;
 103
 104extern const struct gf100_grctx_func gp100_grctx;
 105void gp100_grctx_generate_main(struct gf100_gr *, struct gf100_grctx *);
 106void gp100_grctx_generate_pagepool(struct gf100_grctx *);
 107
 108extern const struct gf100_grctx_func gp102_grctx;
 109void gp102_grctx_generate_attrib(struct gf100_grctx *);
 110
 111extern const struct gf100_grctx_func gp107_grctx;
 112
 113/* context init value lists */
 114
 115extern const struct gf100_gr_pack gf100_grctx_pack_icmd[];
 116
 117extern const struct gf100_gr_pack gf100_grctx_pack_mthd[];
 118extern const struct gf100_gr_init gf100_grctx_init_902d_0[];
 119extern const struct gf100_gr_init gf100_grctx_init_9039_0[];
 120extern const struct gf100_gr_init gf100_grctx_init_90c0_0[];
 121
 122extern const struct gf100_gr_pack gf100_grctx_pack_hub[];
 123extern const struct gf100_gr_init gf100_grctx_init_main_0[];
 124extern const struct gf100_gr_init gf100_grctx_init_fe_0[];
 125extern const struct gf100_gr_init gf100_grctx_init_pri_0[];
 126extern const struct gf100_gr_init gf100_grctx_init_memfmt_0[];
 127extern const struct gf100_gr_init gf100_grctx_init_rstr2d_0[];
 128extern const struct gf100_gr_init gf100_grctx_init_scc_0[];
 129
 130extern const struct gf100_gr_pack gf100_grctx_pack_gpc[];
 131extern const struct gf100_gr_init gf100_grctx_init_gpc_unk_0[];
 132extern const struct gf100_gr_init gf100_grctx_init_prop_0[];
 133extern const struct gf100_gr_init gf100_grctx_init_gpc_unk_1[];
 134extern const struct gf100_gr_init gf100_grctx_init_zcull_0[];
 135extern const struct gf100_gr_init gf100_grctx_init_crstr_0[];
 136extern const struct gf100_gr_init gf100_grctx_init_gpm_0[];
 137extern const struct gf100_gr_init gf100_grctx_init_gcc_0[];
 138
 139extern const struct gf100_gr_pack gf100_grctx_pack_zcull[];
 140
 141extern const struct gf100_gr_pack gf100_grctx_pack_tpc[];
 142extern const struct gf100_gr_init gf100_grctx_init_pe_0[];
 143extern const struct gf100_gr_init gf100_grctx_init_wwdx_0[];
 144extern const struct gf100_gr_init gf100_grctx_init_mpc_0[];
 145extern const struct gf100_gr_init gf100_grctx_init_tpccs_0[];
 146
 147extern const struct gf100_gr_init gf104_grctx_init_tex_0[];
 148extern const struct gf100_gr_init gf104_grctx_init_l1c_0[];
 149extern const struct gf100_gr_init gf104_grctx_init_sm_0[];
 150
 151extern const struct gf100_gr_init gf108_grctx_init_9097_0[];
 152
 153extern const struct gf100_gr_init gf108_grctx_init_gpm_0[];
 154
 155extern const struct gf100_gr_init gf108_grctx_init_pe_0[];
 156extern const struct gf100_gr_init gf108_grctx_init_wwdx_0[];
 157extern const struct gf100_gr_init gf108_grctx_init_tpccs_0[];
 158
 159extern const struct gf100_gr_init gf110_grctx_init_9197_0[];
 160extern const struct gf100_gr_init gf110_grctx_init_9297_0[];
 161
 162extern const struct gf100_gr_pack gf119_grctx_pack_icmd[];
 163
 164extern const struct gf100_gr_pack gf119_grctx_pack_mthd[];
 165
 166extern const struct gf100_gr_init gf119_grctx_init_fe_0[];
 167extern const struct gf100_gr_init gf119_grctx_init_be_0[];
 168
 169extern const struct gf100_gr_init gf119_grctx_init_prop_0[];
 170extern const struct gf100_gr_init gf119_grctx_init_gpc_unk_1[];
 171extern const struct gf100_gr_init gf119_grctx_init_crstr_0[];
 172
 173extern const struct gf100_gr_init gf119_grctx_init_sm_0[];
 174
 175extern const struct gf100_gr_init gf117_grctx_init_pe_0[];
 176
 177extern const struct gf100_gr_init gf117_grctx_init_wwdx_0[];
 178
 179extern const struct gf100_gr_init gk104_grctx_init_memfmt_0[];
 180extern const struct gf100_gr_init gk104_grctx_init_ds_0[];
 181extern const struct gf100_gr_init gk104_grctx_init_scc_0[];
 182
 183extern const struct gf100_gr_init gk104_grctx_init_gpm_0[];
 184
 185extern const struct gf100_gr_init gk104_grctx_init_pes_0[];
 186
 187extern const struct gf100_gr_pack gk104_grctx_pack_hub[];
 188extern const struct gf100_gr_pack gk104_grctx_pack_gpc[];
 189extern const struct gf100_gr_pack gk104_grctx_pack_tpc[];
 190extern const struct gf100_gr_pack gk104_grctx_pack_ppc[];
 191extern const struct gf100_gr_pack gk104_grctx_pack_icmd[];
 192extern const struct gf100_gr_init gk104_grctx_init_a097_0[];
 193
 194extern const struct gf100_gr_pack gk110_grctx_pack_icmd[];
 195
 196extern const struct gf100_gr_pack gk110_grctx_pack_mthd[];
 197
 198extern const struct gf100_gr_pack gk110_grctx_pack_hub[];
 199extern const struct gf100_gr_init gk110_grctx_init_pri_0[];
 200extern const struct gf100_gr_init gk110_grctx_init_cwd_0[];
 201
 202extern const struct gf100_gr_pack gk110_grctx_pack_gpc[];
 203extern const struct gf100_gr_init gk110_grctx_init_gpc_unk_2[];
 204
 205extern const struct gf100_gr_init gk110_grctx_init_tex_0[];
 206extern const struct gf100_gr_init gk110_grctx_init_mpc_0[];
 207extern const struct gf100_gr_init gk110_grctx_init_l1c_0[];
 208
 209extern const struct gf100_gr_pack gk110_grctx_pack_ppc[];
 210
 211extern const struct gf100_gr_init gk208_grctx_init_rstr2d_0[];
 212
 213extern const struct gf100_gr_init gk208_grctx_init_prop_0[];
 214extern const struct gf100_gr_init gk208_grctx_init_crstr_0[];
 215
 216extern const struct gf100_gr_init gm107_grctx_init_gpc_unk_0[];
 217extern const struct gf100_gr_init gm107_grctx_init_wwdx_0[];
 218#endif
 219