Loading drivers/gpu/drm/nouveau/include/nvkm/subdev/mc.h +1 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ void nvkm_mc_reset(struct nvkm_device *, enum nvkm_devidx); void nvkm_mc_intr(struct nvkm_device *, bool *handled); void nvkm_mc_intr_unarm(struct nvkm_device *); void nvkm_mc_intr_rearm(struct nvkm_device *); void nvkm_mc_intr_mask(struct nvkm_device *, enum nvkm_devidx, bool enable); void nvkm_mc_unk260(struct nvkm_device *, u32 data); int nv04_mc_new(struct nvkm_device *, int, struct nvkm_mc **); Loading drivers/gpu/drm/nouveau/nvkm/subdev/mc/base.c +15 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,21 @@ nvkm_mc_unk260(struct nvkm_device *device, u32 data) mc->func->unk260(mc, data); } void nvkm_mc_intr_mask(struct nvkm_device *device, enum nvkm_devidx devidx, bool en) { struct nvkm_mc *mc = device->mc; const struct nvkm_mc_map *map; if (likely(mc) && mc->func->intr_mask) { u32 mask = nvkm_top_intr_mask(device, devidx); for (map = mc->func->intr; !mask && map->stat; map++) { if (map->unit == devidx) mask = map->stat; } mc->func->intr_mask(mc, mask, en ? mask : 0); } } void nvkm_mc_intr_unarm(struct nvkm_device *device) { Loading drivers/gpu/drm/nouveau/nvkm/subdev/mc/priv.h +2 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ struct nvkm_mc_func { void (*intr_unarm)(struct nvkm_mc *); /* enable reporting of interrupts to host */ void (*intr_rearm)(struct nvkm_mc *); /* (un)mask delivery of specific interrupts */ void (*intr_mask)(struct nvkm_mc *, u32 mask, u32 stat); /* retrieve pending interrupt mask (NV_PMC_INTR) */ u32 (*intr_stat)(struct nvkm_mc *); const struct nvkm_mc_map *reset; Loading Loading
drivers/gpu/drm/nouveau/include/nvkm/subdev/mc.h +1 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ void nvkm_mc_reset(struct nvkm_device *, enum nvkm_devidx); void nvkm_mc_intr(struct nvkm_device *, bool *handled); void nvkm_mc_intr_unarm(struct nvkm_device *); void nvkm_mc_intr_rearm(struct nvkm_device *); void nvkm_mc_intr_mask(struct nvkm_device *, enum nvkm_devidx, bool enable); void nvkm_mc_unk260(struct nvkm_device *, u32 data); int nv04_mc_new(struct nvkm_device *, int, struct nvkm_mc **); Loading
drivers/gpu/drm/nouveau/nvkm/subdev/mc/base.c +15 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,21 @@ nvkm_mc_unk260(struct nvkm_device *device, u32 data) mc->func->unk260(mc, data); } void nvkm_mc_intr_mask(struct nvkm_device *device, enum nvkm_devidx devidx, bool en) { struct nvkm_mc *mc = device->mc; const struct nvkm_mc_map *map; if (likely(mc) && mc->func->intr_mask) { u32 mask = nvkm_top_intr_mask(device, devidx); for (map = mc->func->intr; !mask && map->stat; map++) { if (map->unit == devidx) mask = map->stat; } mc->func->intr_mask(mc, mask, en ? mask : 0); } } void nvkm_mc_intr_unarm(struct nvkm_device *device) { Loading
drivers/gpu/drm/nouveau/nvkm/subdev/mc/priv.h +2 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ struct nvkm_mc_func { void (*intr_unarm)(struct nvkm_mc *); /* enable reporting of interrupts to host */ void (*intr_rearm)(struct nvkm_mc *); /* (un)mask delivery of specific interrupts */ void (*intr_mask)(struct nvkm_mc *, u32 mask, u32 stat); /* retrieve pending interrupt mask (NV_PMC_INTR) */ u32 (*intr_stat)(struct nvkm_mc *); const struct nvkm_mc_map *reset; Loading