Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/nouveau/bios: pass drm_device to ROMPTR, rather than nvbios

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>

+28 -27
+5 -5
drivers/gpu/drm/nouveau/nouveau_bios.c
··· 4541 4541 NV_DEBUG_KMS(dev, "Searching for output entry for %d %d %d\n", 4542 4542 dcbent->type, dcbent->location, dcbent->or); 4543 4543 for (i = 0; i < table[3]; i++) { 4544 - otable = ROMPTR(bios, table[table[1] + (i * table[2])]); 4544 + otable = ROMPTR(dev, table[table[1] + (i * table[2])]); 4545 4545 if (otable && bios_encoder_match(dcbent, ROM32(otable[0]))) 4546 4546 break; 4547 4547 } ··· 5493 5493 bit->version = entry[1]; 5494 5494 bit->length = ROM16(entry[2]); 5495 5495 bit->offset = ROM16(entry[4]); 5496 - bit->data = ROMPTR(bios, entry[4]); 5496 + bit->data = ROMPTR(dev, entry[4]); 5497 5497 return 0; 5498 5498 } 5499 5499 ··· 5807 5807 u8 *dcb, *gpio = NULL, *entry; 5808 5808 int i; 5809 5809 5810 - dcb = ROMPTR(bios, bios->data[0x36]); 5810 + dcb = ROMPTR(dev, bios->data[0x36]); 5811 5811 if (dcb[0] >= 0x30) { 5812 - gpio = ROMPTR(bios, dcb[10]); 5812 + gpio = ROMPTR(dev, dcb[10]); 5813 5813 if (!gpio) 5814 5814 goto no_table; 5815 5815 ··· 5818 5818 recordlen = gpio[3]; 5819 5819 } else 5820 5820 if (dcb[0] >= 0x22 && dcb[-1] >= 0x13) { 5821 - gpio = ROMPTR(bios, dcb[-15]); 5821 + gpio = ROMPTR(dev, dcb[-15]); 5822 5822 if (!gpio) 5823 5823 goto no_table; 5824 5824
+8 -3
drivers/gpu/drm/nouveau/nouveau_bios.h
··· 34 34 35 35 #define DCB_LOC_ON_CHIP 0 36 36 37 - #define ROM16(x) le16_to_cpu(*(uint16_t *)&(x)) 38 - #define ROM32(x) le32_to_cpu(*(uint32_t *)&(x)) 39 - #define ROMPTR(bios, x) (ROM16(x) ? &(bios)->data[ROM16(x)] : NULL) 37 + #define ROM16(x) le16_to_cpu(*(u16 *)&(x)) 38 + #define ROM32(x) le32_to_cpu(*(u32 *)&(x)) 39 + #define ROM48(x) ({ u8 *p = &(x); (u64)ROM16(p[4]) << 32 | ROM32(p[0]); }) 40 + #define ROM64(x) le64_to_cpu(*(u64 *)&(x)) 41 + #define ROMPTR(d,x) ({ \ 42 + struct drm_nouveau_private *dev_priv = (d)->dev_private; \ 43 + ROM16(x) ? &dev_priv->vbios.data[ROM16(x)] : NULL; \ 44 + }) 40 45 41 46 struct bit_entry { 42 47 uint8_t id;
+3 -6
drivers/gpu/drm/nouveau/nouveau_dp.c
··· 273 273 u8 * 274 274 nouveau_dp_bios_data(struct drm_device *dev, struct dcb_entry *dcb, u8 **entry) 275 275 { 276 - struct drm_nouveau_private *dev_priv = dev->dev_private; 277 - struct nvbios *bios = &dev_priv->vbios; 278 276 struct bit_entry d; 279 277 u8 *table; 280 278 int i; ··· 287 289 return NULL; 288 290 } 289 291 290 - table = ROMPTR(bios, d.data[0]); 292 + table = ROMPTR(dev, d.data[0]); 291 293 if (!table) { 292 294 NV_ERROR(dev, "displayport table pointer invalid\n"); 293 295 return NULL; ··· 304 306 } 305 307 306 308 for (i = 0; i < table[3]; i++) { 307 - *entry = ROMPTR(bios, table[table[1] + (i * table[2])]); 309 + *entry = ROMPTR(dev, table[table[1] + (i * table[2])]); 308 310 if (*entry && bios_encoder_match(dcb, ROM32((*entry)[0]))) 309 311 return table; 310 312 } ··· 334 336 static void 335 337 dp_set_link_config(struct drm_device *dev, struct dp_state *dp) 336 338 { 337 - struct drm_nouveau_private *dev_priv = dev->dev_private; 338 339 int or = dp->or, link = dp->link; 339 340 u8 *entry, sink[2]; 340 341 u32 dp_ctrl; ··· 357 360 * table, that has (among other things) pointers to more scripts that 358 361 * need to be executed, this time depending on link speed. 359 362 */ 360 - entry = ROMPTR(&dev_priv->vbios, dp->entry[10]); 363 + entry = ROMPTR(dev, dp->entry[10]); 361 364 if (entry) { 362 365 if (dp->table[0] < 0x30) { 363 366 while (dp->link_bw < (ROM16(entry[0]) * 10))
+2 -2
drivers/gpu/drm/nouveau/nouveau_mem.c
··· 644 644 return; 645 645 646 646 if (P.version == 1) 647 - hdr = (struct nouveau_pm_tbl_header *) ROMPTR(bios, P.data[4]); 647 + hdr = (struct nouveau_pm_tbl_header *) ROMPTR(dev, P.data[4]); 648 648 else 649 649 if (P.version == 2) 650 - hdr = (struct nouveau_pm_tbl_header *) ROMPTR(bios, P.data[8]); 650 + hdr = (struct nouveau_pm_tbl_header *) ROMPTR(dev, P.data[8]); 651 651 else { 652 652 NV_WARN(dev, "unknown mem for BIT P %d\n", P.version); 653 653 }
+5 -6
drivers/gpu/drm/nouveau/nouveau_perf.c
··· 41 41 return; 42 42 } 43 43 44 - perf = ROMPTR(bios, bmp[0x73]); 44 + perf = ROMPTR(dev, bmp[0x73]); 45 45 if (!perf) { 46 46 NV_DEBUG(dev, "No memclock table pointer found.\n"); 47 47 return; ··· 87 87 * ramcfg to select the correct subentry 88 88 */ 89 89 if (P->version == 2) { 90 - u8 *tmap = ROMPTR(bios, P->data[4]); 90 + u8 *tmap = ROMPTR(dev, P->data[4]); 91 91 if (!tmap) { 92 92 NV_DEBUG(dev, "no timing map pointer\n"); 93 93 return NULL; ··· 140 140 struct nouveau_pm_level *perflvl) 141 141 { 142 142 struct drm_nouveau_private *dev_priv = dev->dev_private; 143 - struct nvbios *bios = &dev_priv->vbios; 144 143 u8 *vmap; 145 144 int id; 146 145 ··· 164 165 return; 165 166 } 166 167 167 - vmap = ROMPTR(bios, P->data[32]); 168 + vmap = ROMPTR(dev, P->data[32]); 168 169 if (!vmap) { 169 170 NV_DEBUG(dev, "volt map table pointer invalid\n"); 170 171 return; ··· 199 200 return; 200 201 } 201 202 202 - perf = ROMPTR(bios, P.data[0]); 203 + perf = ROMPTR(dev, P.data[0]); 203 204 version = perf[0]; 204 205 headerlen = perf[1]; 205 206 if (version < 0x40) { ··· 217 218 return; 218 219 } 219 220 220 - perf = ROMPTR(bios, bios->data[bios->offset + 0x94]); 221 + perf = ROMPTR(dev, bios->data[bios->offset + 0x94]); 221 222 if (!perf) { 222 223 NV_DEBUG(dev, "perf table pointer invalid\n"); 223 224 return;
+2 -2
drivers/gpu/drm/nouveau/nouveau_temp.c
··· 316 316 return; 317 317 318 318 if (P.version == 1) 319 - temp = ROMPTR(bios, P.data[12]); 319 + temp = ROMPTR(dev, P.data[12]); 320 320 else if (P.version == 2) 321 - temp = ROMPTR(bios, P.data[16]); 321 + temp = ROMPTR(dev, P.data[16]); 322 322 else 323 323 NV_WARN(dev, "unknown temp for BIT P %d\n", P.version); 324 324
+3 -3
drivers/gpu/drm/nouveau/nouveau_volt.c
··· 117 117 return; 118 118 119 119 if (P.version == 1) 120 - volt = ROMPTR(bios, P.data[16]); 120 + volt = ROMPTR(dev, P.data[16]); 121 121 else 122 122 if (P.version == 2) 123 - volt = ROMPTR(bios, P.data[12]); 123 + volt = ROMPTR(dev, P.data[12]); 124 124 else { 125 125 NV_WARN(dev, "unknown volt for BIT P %d\n", P.version); 126 126 } ··· 130 130 return; 131 131 } 132 132 133 - volt = ROMPTR(bios, bios->data[bios->offset + 0x98]); 133 + volt = ROMPTR(dev, bios->data[bios->offset + 0x98]); 134 134 } 135 135 136 136 if (!volt) {