13863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs#ifndef __NOUVEAU_BAR_H__ 23863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs#define __NOUVEAU_BAR_H__ 33863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs 43863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs#include <core/subdev.h> 53863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs#include <core/device.h> 63863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs 752225551ddcae9c4df6c48bc3c78833aac5074f4Ben Skeggsstruct nouveau_mem; 83863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggsstruct nouveau_vma; 93863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs 103863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggsstruct nouveau_bar { 113863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs struct nouveau_subdev base; 123863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs 133863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs int (*alloc)(struct nouveau_bar *, struct nouveau_object *, 143863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs struct nouveau_mem *, struct nouveau_object **); 153863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs 163863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs int (*kmap)(struct nouveau_bar *, struct nouveau_mem *, 173863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs u32 flags, struct nouveau_vma *); 183863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs int (*umap)(struct nouveau_bar *, struct nouveau_mem *, 193863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs u32 flags, struct nouveau_vma *); 203863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs void (*unmap)(struct nouveau_bar *, struct nouveau_vma *); 213863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs void (*flush)(struct nouveau_bar *); 22e2a4e78cdccc4bb2d3729981313da237ad4ad43fAlexandre Courbot 23e2a4e78cdccc4bb2d3729981313da237ad4ad43fAlexandre Courbot /* whether the BAR supports to be ioremapped WC or should be uncached */ 24e2a4e78cdccc4bb2d3729981313da237ad4ad43fAlexandre Courbot bool iomap_uncached; 253863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs}; 263863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs 273863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggsstatic inline struct nouveau_bar * 283863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggsnouveau_bar(void *obj) 293863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs{ 303863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_BAR]; 313863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs} 323863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs 333863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggsextern struct nouveau_oclass nv50_bar_oclass; 343863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggsextern struct nouveau_oclass nvc0_bar_oclass; 35ec1afbf4e1025f74e636ada2e7da3963c8da4c06Alexandre Courbotextern struct nouveau_oclass gk20a_bar_oclass; 363863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs 373863c9bc887e9638a9d905d55f6038641ece78d6Ben Skeggs#endif 38