diff options
author | Roy Spliet <rspliet@eclipso.eu> | 2015-09-30 00:23:46 +0100 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2015-10-22 09:11:28 +1000 |
commit | 83c9dcec79df0a9cb585161e8d111aeb9648d30c (patch) | |
tree | 40a1f9992efdb307a8a39baf3fde74bc42efcbcf /drm/nouveau/nvkm/subdev/fb/ramgt215.c | |
parent | a2c9c8823dfc766d74c7d96e6f983461de1d22d6 (diff) | |
download | nouveau-83c9dcec79df0a9cb585161e8d111aeb9648d30c.tar.gz |
fb/ramgt215: Change FBVDD/Q when BIOS asks for it
Signed-off-by: Roy Spliet <rspliet@eclipso.eu>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drm/nouveau/nvkm/subdev/fb/ramgt215.c')
-rw-r--r-- | drm/nouveau/nvkm/subdev/fb/ramgt215.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drm/nouveau/nvkm/subdev/fb/ramgt215.c b/drm/nouveau/nvkm/subdev/fb/ramgt215.c index 0c28f38cb..8d81bf1e9 100644 --- a/drm/nouveau/nvkm/subdev/fb/ramgt215.c +++ b/drm/nouveau/nvkm/subdev/fb/ramgt215.c @@ -498,6 +498,7 @@ gt215_ram_calc(struct nvkm_ram *base, u32 freq) struct nvkm_device *device = subdev->device; struct nvkm_bios *bios = device->bios; struct gt215_clk_info mclk; + struct nvkm_gpio *gpio = device->gpio; struct nvkm_ram_data *next; u8 ver, hdr, cnt, len, strap; u32 data; @@ -656,6 +657,23 @@ gt215_ram_calc(struct nvkm_ram *base, u32 freq) if (device->chipset == 0xa3 && freq <= 500000) ram_mask(fuc, 0x100700, 0x00000006, 0x00000006); + /* Alter FBVDD/Q, apparently must be done with PLL disabled, thus + * set it to bypass */ + if (nvkm_gpio_get(gpio, 0, 0x18, DCB_GPIO_UNUSED) == + next->bios.ramcfg_FBVDDQ) { + data = ram_rd32(fuc, 0x004000) & 0x9; + + if (data == 0x1) + ram_mask(fuc, 0x004000, 0x8, 0x8); + if (data & 0x1) + ram_mask(fuc, 0x004000, 0x1, 0x0); + + gt215_ram_gpio(fuc, 0x18, !next->bios.ramcfg_FBVDDQ); + + if (data & 0x1) + ram_mask(fuc, 0x004000, 0x1, 0x1); + } + /* Fiddle with clocks */ /* There's 4 scenario's * pll->pll: first switch to a 324MHz clock, set up new PLL, switch |