Skip to content

Commit

Permalink
nva: Add support for non-GPU device types.
Browse files Browse the repository at this point in the history
  • Loading branch information
mwkmwkmwk committed Feb 16, 2014
1 parent 3095201 commit d434606
Show file tree
Hide file tree
Showing 21 changed files with 149 additions and 134 deletions.
6 changes: 3 additions & 3 deletions hwtest/hwtest.c
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -79,9 +79,9 @@ int main(int argc, char **argv) {
fprintf (stderr, "No cards found.\n"); fprintf (stderr, "No cards found.\n");
return 1; return 1;
} }
ctx->chipset = nva_cards[ctx->cnum].chipset.chipset; ctx->chipset = nva_cards[ctx->cnum]->chipset.chipset;
ctx->card_type = nva_cards[ctx->cnum].chipset.card_type; ctx->card_type = nva_cards[ctx->cnum]->chipset.card_type;
if (pci_device_has_kernel_driver(nva_cards[ctx->cnum].pci)) { if (pci_device_has_kernel_driver(nva_cards[ctx->cnum]->pci)) {
if (force) { if (force) {
fprintf(stderr, "WARNING: Kernel driver in use.\n"); fprintf(stderr, "WARNING: Kernel driver in use.\n");
} else { } else {
Expand Down
12 changes: 6 additions & 6 deletions hwtest/nv10_tile.c
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -351,24 +351,24 @@ static int test_comp_size(struct hwtest_ctx *ctx) {
} }


static uint32_t comp_seek(int cnum, int part, int addr) { static uint32_t comp_seek(int cnum, int part, int addr) {
if (nva_cards[cnum].chipset.chipset == 0x20) { if (nva_cards[cnum]->chipset.chipset == 0x20) {
nva_wr32(cnum, 0x1000f0, 0x1300000 | nva_wr32(cnum, 0x1000f0, 0x1300000 |
(part << 16) | (addr & 0x1fc0)); (part << 16) | (addr & 0x1fc0));
return 0x100100 + (addr & 0x3c); return 0x100100 + (addr & 0x3c);
} else if (nva_cards[cnum].chipset.chipset < 0x30) { } else if (nva_cards[cnum]->chipset.chipset < 0x30) {
nva_wr32(cnum, 0x1000f0, 0x2380000 | nva_wr32(cnum, 0x1000f0, 0x2380000 |
((addr << 6) & 0x40000) | ((addr << 6) & 0x40000) |
(part << 16) | (addr & 0xfc0)); (part << 16) | (addr & 0xfc0));
return 0x100100 + (addr & 0x3c); return 0x100100 + (addr & 0x3c);
} else if (nva_cards[cnum].chipset.chipset < 0x35) { } else if (nva_cards[cnum]->chipset.chipset < 0x35) {
nva_wr32(cnum, 0x1000f0, 0x2380000 | nva_wr32(cnum, 0x1000f0, 0x2380000 |
(part << 16) | (addr & 0x7fc0)); (part << 16) | (addr & 0x7fc0));
return 0x100100 + (addr & 0x3c); return 0x100100 + (addr & 0x3c);
} else if (nva_cards[cnum].chipset.chipset < 0x36) { } else if (nva_cards[cnum]->chipset.chipset < 0x36) {
nva_wr32(cnum, 0x1000f0, 0x2380000 | (addr & 4) << 16 | nva_wr32(cnum, 0x1000f0, 0x2380000 | (addr & 4) << 16 |
(part << 16) | (addr >> 1 & 0x7fc0)); (part << 16) | (addr >> 1 & 0x7fc0));
return 0x100100 + (addr >> 1 & 0x3c); return 0x100100 + (addr >> 1 & 0x3c);
} else if (nva_cards[cnum].chipset.chipset < 0x40) { } else if (nva_cards[cnum]->chipset.chipset < 0x40) {
nva_wr32(cnum, 0x1000f0, 0x2380000 | (addr & 0xc) << 15 | nva_wr32(cnum, 0x1000f0, 0x2380000 | (addr & 0xc) << 15 |
(part << 16) | (addr >> 2 & 0x7fc0)); (part << 16) | (addr >> 2 & 0x7fc0));
return 0x100100 + (addr >> 2 & 0x3c); return 0x100100 + (addr >> 2 & 0x3c);
Expand Down Expand Up @@ -396,7 +396,7 @@ void comp_wr32(int cnum, int part, int addr, uint32_t v) {
void clear_comp(int cnum) { void clear_comp(int cnum) {
uint32_t size = (nva_rd32(cnum, 0x100320) + 1) / 8; uint32_t size = (nva_rd32(cnum, 0x100320) + 1) / 8;
int i, j; int i, j;
for (i = 0; i < get_maxparts(nva_cards[cnum].chipset.chipset); i++) { for (i = 0; i < get_maxparts(nva_cards[cnum]->chipset.chipset); i++) {
for (j = 0; j < size; j += 0x4) for (j = 0; j < size; j += 0x4)
comp_wr32(cnum, i, j, 0); comp_wr32(cnum, i, j, 0);
} }
Expand Down
16 changes: 8 additions & 8 deletions hwtest/vram.c
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@
#include "nva.h" #include "nva.h"


uint32_t vram_rd32(int card, uint64_t addr) { uint32_t vram_rd32(int card, uint64_t addr) {
if (nva_cards[card].chipset.card_type < 3) { if (nva_cards[card]->chipset.card_type < 3) {
return nva_rd32(card, 0x1000000 + addr); return nva_rd32(card, 0x1000000 + addr);
} else if (nva_cards[card].chipset.card_type < 0x30) { } else if (nva_cards[card]->chipset.card_type < 0x30) {
return nva_grd32(nva_cards[card].bar1, addr); return nva_grd32(nva_cards[card]->bar1, addr);
} else if (nva_cards[card].chipset.card_type < 0x50) { } else if (nva_cards[card]->chipset.card_type < 0x50) {
nva_wr32(card, 0x1570, addr); nva_wr32(card, 0x1570, addr);
return nva_rd32(card, 0x1574); return nva_rd32(card, 0x1574);
} else { } else {
Expand All @@ -43,11 +43,11 @@ uint32_t vram_rd32(int card, uint64_t addr) {
} }


void vram_wr32(int card, uint64_t addr, uint32_t val) { void vram_wr32(int card, uint64_t addr, uint32_t val) {
if (nva_cards[card].chipset.card_type < 3) { if (nva_cards[card]->chipset.card_type < 3) {
nva_wr32(card, 0x1000000 + addr, val); nva_wr32(card, 0x1000000 + addr, val);
} else if (nva_cards[card].chipset.card_type < 0x30) { } else if (nva_cards[card]->chipset.card_type < 0x30) {
nva_gwr32(nva_cards[card].bar1, addr, val); nva_gwr32(nva_cards[card]->bar1, addr, val);
} else if (nva_cards[card].chipset.card_type < 0x50) { } else if (nva_cards[card]->chipset.card_type < 0x50) {
nva_wr32(card, 0x1570, addr); nva_wr32(card, 0x1570, addr);
nva_wr32(card, 0x1574, val); nva_wr32(card, 0x1574, val);
} else { } else {
Expand Down
13 changes: 8 additions & 5 deletions include/nva.h
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@
#include "nvhw.h" #include "nvhw.h"


struct nva_card { struct nva_card {
enum {
NVA_DEVICE_GPU,
} type;
struct pci_device *pci; struct pci_device *pci;
struct chipset_info chipset; struct chipset_info chipset;
void *bar0; void *bar0;
Expand All @@ -46,7 +49,7 @@ struct nva_card {
}; };


int nva_init(); int nva_init();
extern struct nva_card *nva_cards; extern struct nva_card **nva_cards;
extern int nva_cardsnum; extern int nva_cardsnum;


static inline uint32_t nva_grd32(void *base, uint32_t addr) { static inline uint32_t nva_grd32(void *base, uint32_t addr) {
Expand All @@ -66,19 +69,19 @@ static inline void nva_gwr8(void *base, uint32_t addr, uint32_t val) {
} }


static inline uint32_t nva_rd32(int card, uint32_t addr) { static inline uint32_t nva_rd32(int card, uint32_t addr) {
return nva_grd32(nva_cards[card].bar0, addr); return nva_grd32(nva_cards[card]->bar0, addr);
} }


static inline void nva_wr32(int card, uint32_t addr, uint32_t val) { static inline void nva_wr32(int card, uint32_t addr, uint32_t val) {
nva_gwr32(nva_cards[card].bar0, addr, val); nva_gwr32(nva_cards[card]->bar0, addr, val);
} }


static inline uint32_t nva_rd8(int card, uint32_t addr) { static inline uint32_t nva_rd8(int card, uint32_t addr) {
return nva_grd8(nva_cards[card].bar0, addr); return nva_grd8(nva_cards[card]->bar0, addr);
} }


static inline void nva_wr8(int card, uint32_t addr, uint32_t val) { static inline void nva_wr8(int card, uint32_t addr, uint32_t val) {
nva_gwr8(nva_cards[card].bar0, addr, val); nva_gwr8(nva_cards[card]->bar0, addr, val);
} }


static inline uint32_t nva_mask(int cnum, uint32_t reg, uint32_t mask, uint32_t val) static inline uint32_t nva_mask(int cnum, uint32_t reg, uint32_t mask, uint32_t val)
Expand Down
6 changes: 3 additions & 3 deletions nva/evotiming.c
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -45,16 +45,16 @@ int evosend (int cnum, int c, int m, int d)
{ {
uint32_t ctrl; uint32_t ctrl;


if (nva_cards[cnum].chipset.chipset >= 0xd0) { if (nva_cards[cnum]->chipset.chipset >= 0xd0) {
ctrl = nva_rd32(cnum, 0x610700 + (c * 8)); ctrl = nva_rd32(cnum, 0x610700 + (c * 8));
nva_wr32(cnum, 0x610700 + (c * 8), ctrl | 1); nva_wr32(cnum, 0x610700 + (c * 8), ctrl | 1);
nva_wr32(cnum, 0x610704 + (c * 8), d); nva_wr32(cnum, 0x610704 + (c * 8), d);
nva_wr32(cnum, 0x610700 + (c * 8), 0x80000001 | m); nva_wr32(cnum, 0x610700 + (c * 8), 0x80000001 | m);
while (nva_rd32(cnum, 0x610700 + (c * 8)) & 0x80000000); while (nva_rd32(cnum, 0x610700 + (c * 8)) & 0x80000000);
nva_wr32(cnum, 0x610700 + (c * 8), ctrl); nva_wr32(cnum, 0x610700 + (c * 8), ctrl);
} else } else
if (nva_cards[cnum].chipset.chipset == 0x50 || if (nva_cards[cnum]->chipset.chipset == 0x50 ||
nva_cards[cnum].chipset.chipset >= 0x84) { nva_cards[cnum]->chipset.chipset >= 0x84) {
ctrl = nva_rd32(cnum, 0x610300 + (c * 8)); ctrl = nva_rd32(cnum, 0x610300 + (c * 8));
nva_wr32(cnum, 0x610300 + (c * 8), ctrl | 1); nva_wr32(cnum, 0x610300 + (c * 8), ctrl | 1);
nva_wr32(cnum, 0x610304 + (c * 8), d); nva_wr32(cnum, 0x610304 + (c * 8), d);
Expand Down
117 changes: 58 additions & 59 deletions nva/nva.c
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -29,18 +29,71 @@
#include "nva.h" #include "nva.h"
#include "util.h" #include "util.h"


struct nva_card *nva_cards = 0; struct nva_card **nva_cards = 0;
int nva_cardsnum = 0; int nva_cardsnum = 0;
int nva_cardsmax = 0; int nva_cardsmax = 0;
int nva_vgaarberr = 0; int nva_vgaarberr = 0;


struct pci_id_match nv_match[4] = { struct pci_id_match nv_match[] = {
{0x104a, 0x0009, PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0}, {0x104a, 0x0009, PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0},
{0x12d2, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, 0x30000, 0xffff0000}, {0x12d2, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, 0x30000, 0xffff0000},
{0x10de, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, 0x30000, 0xffff0000}, {0x10de, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, 0x30000, 0xffff0000},
{0x10de, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, 0x48000, 0xffffff00}, {0x10de, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, 0x48000, 0xffffff00},
}; };


struct nva_card *nva_init_gpu(struct pci_device *dev) {
struct nva_card *card = calloc(sizeof *card, 1);
if (!card)
return 0;
card->type = NVA_DEVICE_GPU;
card->pci = dev;
int ret = pci_device_map_range(dev, dev->regions[0].base_addr, dev->regions[0].size, PCI_DEV_MAP_FLAG_WRITABLE, &card->bar0);
if (ret) {
fprintf (stderr, "WARN: Can't probe %04x:%02x:%02x.%x\n", dev->domain, dev->bus, dev->dev, dev->func);
free(card);
return 0;
}
card->bar0len = dev->regions[0].size;
if (dev->regions[1].size) {
card->hasbar1 = 1;
card->bar1len = dev->regions[1].size;
ret = pci_device_map_range(dev, dev->regions[1].base_addr, dev->regions[1].size, PCI_DEV_MAP_FLAG_WRITABLE, &card->bar1);
if (ret) {
card->bar1 = 0;
}
}
if (dev->regions[2].size && !dev->regions[2].is_IO) {
card->hasbar2 = 1;
card->bar2len = dev->regions[2].size;
ret = pci_device_map_range(dev, dev->regions[2].base_addr, dev->regions[2].size, PCI_DEV_MAP_FLAG_WRITABLE, &card->bar2);
if (ret) {
card->bar2 = 0;
}
} else if (dev->regions[3].size) {
card->hasbar2 = 1;
card->bar2len = dev->regions[3].size;
ret = pci_device_map_range(dev, dev->regions[3].base_addr, dev->regions[3].size, PCI_DEV_MAP_FLAG_WRITABLE, &card->bar2);
if (ret) {
card->bar2 = 0;
}
}
/* ignore errors */
pci_device_map_legacy(dev, 0, 0x100000, PCI_DEV_MAP_FLAG_WRITABLE, &card->rawmem);
card->rawio = pci_legacy_open_io(dev, 0, 0x10000);
int iobar = -1;
if (dev->regions[2].size && dev->regions[2].is_IO)
iobar = 2;
if (dev->regions[5].size && dev->regions[5].is_IO)
iobar = 5;
if (iobar != -1) {
card->iobar = pci_device_open_io(dev, dev->regions[iobar].base_addr, dev->regions[iobar].size);
card->iobarlen = dev->regions[iobar].size;
}
uint32_t pmc_id = nva_grd32(card->bar0, 0);
parse_pmc_id(pmc_id, &card->chipset);
return card;
}

int nva_init() { int nva_init() {
int ret; int ret;
ret = pci_system_init(); ret = pci_system_init();
Expand All @@ -58,71 +111,17 @@ int nva_init() {


struct pci_device *dev; struct pci_device *dev;
while ((dev = pci_device_next(it))) { while ((dev = pci_device_next(it))) {
struct nva_card c = { 0 };
ret = pci_device_probe(dev); ret = pci_device_probe(dev);
if (ret) { if (ret) {
fprintf (stderr, "WARN: Can't probe %04x:%02x:%02x.%x\n", dev->domain, dev->bus, dev->dev, dev->func); fprintf (stderr, "WARN: Can't probe %04x:%02x:%02x.%x\n", dev->domain, dev->bus, dev->dev, dev->func);
continue; continue;
} }
pci_device_enable(dev); pci_device_enable(dev);
c.pci = dev; struct nva_card *card = nva_init_gpu(dev);
ADDARRAY(nva_cards, c); if (card)
ADDARRAY(nva_cards, card);
} }
pci_iterator_destroy(it); pci_iterator_destroy(it);
} }

for (i = 0; i < nva_cardsnum; i++) {
struct pci_device *dev;
dev = nva_cards[i].pci;
ret = pci_device_map_range(dev, dev->regions[0].base_addr, dev->regions[0].size, PCI_DEV_MAP_FLAG_WRITABLE, &nva_cards[i].bar0);
if (ret) {
fprintf (stderr, "WARN: Can't probe %04x:%02x:%02x.%x\n", dev->domain, dev->bus, dev->dev, dev->func);
int j;
for (j = i + 1; j < nva_cardsnum; j++) {
nva_cards[j-1] = nva_cards[j];
}
nva_cardsnum--;
i--;
continue;
}
nva_cards[i].bar0len = dev->regions[0].size;
if (dev->regions[1].size) {
nva_cards[i].hasbar1 = 1;
nva_cards[i].bar1len = dev->regions[1].size;
ret = pci_device_map_range(dev, dev->regions[1].base_addr, dev->regions[1].size, PCI_DEV_MAP_FLAG_WRITABLE, &nva_cards[i].bar1);
if (ret) {
nva_cards[i].bar1 = 0;
}
}
if (dev->regions[2].size && !dev->regions[2].is_IO) {
nva_cards[i].hasbar2 = 1;
nva_cards[i].bar2len = dev->regions[2].size;
ret = pci_device_map_range(dev, dev->regions[2].base_addr, dev->regions[2].size, PCI_DEV_MAP_FLAG_WRITABLE, &nva_cards[i].bar2);
if (ret) {
nva_cards[i].bar2 = 0;
}
} else if (dev->regions[3].size) {
nva_cards[i].hasbar2 = 1;
nva_cards[i].bar2len = dev->regions[3].size;
ret = pci_device_map_range(dev, dev->regions[3].base_addr, dev->regions[3].size, PCI_DEV_MAP_FLAG_WRITABLE, &nva_cards[i].bar2);
if (ret) {
nva_cards[i].bar2 = 0;
}
}
/* ignore errors */
pci_device_map_legacy(dev, 0, 0x100000, PCI_DEV_MAP_FLAG_WRITABLE, &nva_cards[i].rawmem);
nva_cards[i].rawio = pci_legacy_open_io(dev, 0, 0x10000);
int iobar = -1;
if (dev->regions[2].size && dev->regions[2].is_IO)
iobar = 2;
if (dev->regions[5].size && dev->regions[5].is_IO)
iobar = 5;
if (iobar != -1) {
nva_cards[i].iobar = pci_device_open_io(dev, dev->regions[iobar].base_addr, dev->regions[iobar].size);
nva_cards[i].iobarlen = dev->regions[iobar].size;
}
uint32_t pmc_id = nva_rd32(i, 0);
parse_pmc_id(pmc_id, &nva_cards[i].chipset);
}
return (nva_cardsnum == 0); return (nva_cardsnum == 0);
} }
10 changes: 5 additions & 5 deletions nva/nvacounter.c
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -385,7 +385,7 @@ void find_host_mem_read_write(int cnum)
{ {
uint32_t signals_real[0x100 * 8] = { 0 }; uint32_t signals_real[0x100 * 8] = { 0 };
uint32_t signals_real_cycles[0x100 * 8] = { 0 }; uint32_t signals_real_cycles[0x100 * 8] = { 0 };
struct pci_device *dev = nva_cards[cnum].pci; struct pci_device *dev = nva_cards[cnum]->pci;
volatile uint8_t *bar1, val; volatile uint8_t *bar1, val;
int ret, i, e; int ret, i, e;


Expand Down Expand Up @@ -566,18 +566,18 @@ int main(int argc, char **argv)
return 1; return 1;
} }


if (nva_cards[cnum].chipset.chipset < 0x10 || if (nva_cards[cnum]->chipset.chipset < 0x10 ||
nva_cards[cnum].chipset.chipset >= 0xc0) nva_cards[cnum]->chipset.chipset >= 0xc0)
{ {
fprintf(stderr, "The chipset nv%x isn't currently supported\n", fprintf(stderr, "The chipset nv%x isn't currently supported\n",
nva_cards[cnum].chipset.chipset); nva_cards[cnum]->chipset.chipset);
return 1; return 1;
} }


/* Init */ /* Init */
nva_wr32(cnum, 0x200, 0xffffffff); nva_wr32(cnum, 0x200, 0xffffffff);


printf("Chipset nv%x:\n\n", nva_cards[cnum].chipset.chipset); printf("Chipset nv%x:\n\n", nva_cards[cnum]->chipset.chipset);


poll_signals(cnum, signals_ref); poll_signals(cnum, signals_ref);
find_counter_noise(cnum); find_counter_noise(cnum);
Expand Down
6 changes: 3 additions & 3 deletions nva/nvaevo.c
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -58,16 +58,16 @@ int main(int argc, char **argv) {
sscanf (argv[optind + 1], "%x", &m); sscanf (argv[optind + 1], "%x", &m);
sscanf (argv[optind + 2], "%x", &d); sscanf (argv[optind + 2], "%x", &d);


if (nva_cards[cnum].chipset.chipset >= 0xd0) { if (nva_cards[cnum]->chipset.chipset >= 0xd0) {
ctrl = nva_rd32(cnum, 0x610700 + (c * 8)); ctrl = nva_rd32(cnum, 0x610700 + (c * 8));
nva_wr32(cnum, 0x610700 + (c * 8), ctrl | 1); nva_wr32(cnum, 0x610700 + (c * 8), ctrl | 1);
nva_wr32(cnum, 0x610704 + (c * 8), d); nva_wr32(cnum, 0x610704 + (c * 8), d);
nva_wr32(cnum, 0x610700 + (c * 8), 0x80000001 | m); nva_wr32(cnum, 0x610700 + (c * 8), 0x80000001 | m);
while (nva_rd32(cnum, 0x610700 + (c * 8)) & 0x80000000); while (nva_rd32(cnum, 0x610700 + (c * 8)) & 0x80000000);
nva_wr32(cnum, 0x610700 + (c * 8), ctrl); nva_wr32(cnum, 0x610700 + (c * 8), ctrl);
} else } else
if (nva_cards[cnum].chipset.chipset == 0x50 || if (nva_cards[cnum]->chipset.chipset == 0x50 ||
nva_cards[cnum].chipset.chipset >= 0x84) { nva_cards[cnum]->chipset.chipset >= 0x84) {
ctrl = nva_rd32(cnum, 0x610300 + (c * 8)); ctrl = nva_rd32(cnum, 0x610300 + (c * 8));
nva_wr32(cnum, 0x610300 + (c * 8), ctrl | 1); nva_wr32(cnum, 0x610300 + (c * 8), ctrl | 1);
nva_wr32(cnum, 0x610304 + (c * 8), d); nva_wr32(cnum, 0x610304 + (c * 8), d);
Expand Down
8 changes: 4 additions & 4 deletions nva/nvafakebios.c
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -66,17 +66,17 @@ int vbios_upload_pramin(int cnum, uint8_t *vbios, int length)
uint32_t ret = EUNK; uint32_t ret = EUNK;
int i = 0; int i = 0;


if (nva_cards[cnum].chipset.chipset < 0x04) { if (nva_cards[cnum]->chipset.chipset < 0x04) {
return ECARD; return ECARD;
} }


/* Update the checksum */ /* Update the checksum */
chksum(vbios, length); chksum(vbios, length);


fprintf(stderr, "Attempt to upload the vbios to card %i (nv%02x) using PRAMIN\n", fprintf(stderr, "Attempt to upload the vbios to card %i (nv%02x) using PRAMIN\n",
cnum, nva_cards[cnum].chipset.chipset); cnum, nva_cards[cnum]->chipset.chipset);


if (nva_cards[cnum].chipset.card_type >= 0x50) { if (nva_cards[cnum]->chipset.card_type >= 0x50) {
uint64_t vbios_vram = (uint64_t)(nva_rd32(cnum, 0x619f04) & ~0xff) << 8; uint64_t vbios_vram = (uint64_t)(nva_rd32(cnum, 0x619f04) & ~0xff) << 8;


if (!vbios_vram) if (!vbios_vram)
Expand All @@ -93,7 +93,7 @@ int vbios_upload_pramin(int cnum, uint8_t *vbios, int length)


ret = EOK; ret = EOK;


if (nva_cards[cnum].chipset.card_type >= 0x50) if (nva_cards[cnum]->chipset.card_type >= 0x50)
nva_wr32(cnum, 0x1700, old_bar0_pramin); nva_wr32(cnum, 0x1700, old_bar0_pramin);


return ret; return ret;
Expand Down
Loading

0 comments on commit d434606

Please sign in to comment.