mirror of https://gitee.com/openkylin/linux.git
drm/nouveau/mc: allow for local definition of reset bits
With the addition of PTOP-specified reset bits, it makes more sense to move the definitions here rather than in individual subdev implementations. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
6defde5ab3
commit
70b01f07db
|
@ -81,8 +81,21 @@ static void
|
|||
nvkm_mc_reset_(struct nvkm_mc *mc, enum nvkm_devidx devidx)
|
||||
{
|
||||
struct nvkm_device *device = mc->subdev.device;
|
||||
struct nvkm_subdev *subdev = nvkm_device_subdev(device, devidx);
|
||||
u64 pmc_enable = subdev->pmc_enable;
|
||||
const struct nvkm_mc_map *map;
|
||||
u64 pmc_enable = 0;
|
||||
|
||||
for (map = mc->func->reset; map && map->stat; map++) {
|
||||
if (map->unit == devidx) {
|
||||
pmc_enable = map->stat;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!pmc_enable) {
|
||||
struct nvkm_subdev *subdev = nvkm_device_subdev(device, devidx);
|
||||
pmc_enable = subdev->pmc_enable;
|
||||
}
|
||||
|
||||
if (pmc_enable) {
|
||||
nvkm_mask(device, 0x000200, pmc_enable, 0x00000000);
|
||||
nvkm_mask(device, 0x000200, pmc_enable, pmc_enable);
|
||||
|
|
|
@ -20,6 +20,7 @@ struct nvkm_mc_func {
|
|||
void (*intr_rearm)(struct nvkm_mc *);
|
||||
/* retrieve pending interrupt mask (NV_PMC_INTR) */
|
||||
u32 (*intr_mask)(struct nvkm_mc *);
|
||||
const struct nvkm_mc_map *reset;
|
||||
void (*unk260)(struct nvkm_mc *, u32);
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue