Deleted Added
full compact
r600_cp.c (190595) r600_cp.c (190674)
1/*-
2 * Copyright 2008-2009 Advanced Micro Devices, Inc.
3 * Copyright 2008 Red Hat Inc.
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,

--- 13 unchanged lines hidden (view full) ---

22 * DEALINGS IN THE SOFTWARE.
23 *
24 * Authors:
25 * Dave Airlie <airlied@redhat.com>
26 * Alex Deucher <alexander.deucher@amd.com>
27 */
28
29#include <sys/cdefs.h>
1/*-
2 * Copyright 2008-2009 Advanced Micro Devices, Inc.
3 * Copyright 2008 Red Hat Inc.
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,

--- 13 unchanged lines hidden (view full) ---

22 * DEALINGS IN THE SOFTWARE.
23 *
24 * Authors:
25 * Dave Airlie <airlied@redhat.com>
26 * Alex Deucher <alexander.deucher@amd.com>
27 */
28
29#include <sys/cdefs.h>
30__FBSDID("$FreeBSD: head/sys/dev/drm/r600_cp.c 190595 2009-03-31 17:52:05Z rnoland $");
30__FBSDID("$FreeBSD: head/sys/dev/drm/r600_cp.c 190674 2009-04-03 19:21:39Z rnoland $");
31
32#include "dev/drm/drmP.h"
33#include "dev/drm/drm.h"
34#include "dev/drm/radeon_drm.h"
35#include "dev/drm/radeon_drv.h"
36
37#include "dev/drm/r600_microcode.h"
38

--- 242 unchanged lines hidden (view full) ---

281
282/* load r600 microcode */
283static void r600_cp_load_microcode(drm_radeon_private_t *dev_priv)
284{
285 const u32 (*cp)[3];
286 const u32 *pfp;
287 int i;
288
31
32#include "dev/drm/drmP.h"
33#include "dev/drm/drm.h"
34#include "dev/drm/radeon_drm.h"
35#include "dev/drm/radeon_drv.h"
36
37#include "dev/drm/r600_microcode.h"
38

--- 242 unchanged lines hidden (view full) ---

281
282/* load r600 microcode */
283static void r600_cp_load_microcode(drm_radeon_private_t *dev_priv)
284{
285 const u32 (*cp)[3];
286 const u32 *pfp;
287 int i;
288
289 r600_do_cp_stop(dev_priv);
290
291 RADEON_WRITE(R600_CP_RB_CNTL,
292 R600_RB_NO_UPDATE |
293 R600_RB_BLKSZ(15) |
294 R600_RB_BUFSZ(3));
295
296 RADEON_WRITE(R600_GRBM_SOFT_RESET, R600_SOFT_RESET_CP);
297 RADEON_READ(R600_GRBM_SOFT_RESET);
298 DRM_UDELAY(15000);
299 RADEON_WRITE(R600_GRBM_SOFT_RESET, 0);
300
301 RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
302
303 switch (dev_priv->flags & RADEON_FAMILY_MASK) {
304 case CHIP_R600:
305 DRM_INFO("Loading R600 Microcode\n");
306 cp = R600_cp_microcode;
307 pfp = R600_pfp_microcode;
308 break;
309 case CHIP_RV610:
310 DRM_INFO("Loading RV610 Microcode\n");

--- 21 unchanged lines hidden (view full) ---

332 pfp = RV670_pfp_microcode;
333 break;
334 case CHIP_RS780:
335 DRM_INFO("Loading RS780 Microcode\n");
336 cp = RS780_cp_microcode;
337 pfp = RS780_pfp_microcode;
338 break;
339 default:
289 switch (dev_priv->flags & RADEON_FAMILY_MASK) {
290 case CHIP_R600:
291 DRM_INFO("Loading R600 Microcode\n");
292 cp = R600_cp_microcode;
293 pfp = R600_pfp_microcode;
294 break;
295 case CHIP_RV610:
296 DRM_INFO("Loading RV610 Microcode\n");

--- 21 unchanged lines hidden (view full) ---

318 pfp = RV670_pfp_microcode;
319 break;
320 case CHIP_RS780:
321 DRM_INFO("Loading RS780 Microcode\n");
322 cp = RS780_cp_microcode;
323 pfp = RS780_pfp_microcode;
324 break;
325 default:
340 goto no_microcode;
326 return;
341 }
342
327 }
328
343 for (i = 0; i != PM4_UCODE_SIZE; i++) {
329 r600_do_cp_stop(dev_priv);
330
331 RADEON_WRITE(R600_CP_RB_CNTL,
332 R600_RB_NO_UPDATE |
333 R600_RB_BLKSZ(15) |
334 R600_RB_BUFSZ(3));
335
336 RADEON_WRITE(R600_GRBM_SOFT_RESET, R600_SOFT_RESET_CP);
337 RADEON_READ(R600_GRBM_SOFT_RESET);
338 DRM_UDELAY(15000);
339 RADEON_WRITE(R600_GRBM_SOFT_RESET, 0);
340
341 RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
342
343 for (i = 0; i < PM4_UCODE_SIZE; i++) {
344 RADEON_WRITE(R600_CP_ME_RAM_DATA, cp[i][0]);
345 RADEON_WRITE(R600_CP_ME_RAM_DATA, cp[i][1]);
346 RADEON_WRITE(R600_CP_ME_RAM_DATA, cp[i][2]);
347 }
348
349 RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
344 RADEON_WRITE(R600_CP_ME_RAM_DATA, cp[i][0]);
345 RADEON_WRITE(R600_CP_ME_RAM_DATA, cp[i][1]);
346 RADEON_WRITE(R600_CP_ME_RAM_DATA, cp[i][2]);
347 }
348
349 RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
350 for (i = 0; i != PFP_UCODE_SIZE; i++)
350 for (i = 0; i < PFP_UCODE_SIZE; i++)
351 RADEON_WRITE(R600_CP_PFP_UCODE_DATA, pfp[i]);
351 RADEON_WRITE(R600_CP_PFP_UCODE_DATA, pfp[i]);
352no_microcode:;
353
354 RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
355 RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
356 RADEON_WRITE(R600_CP_ME_RAM_RADDR, 0);
357}
358
359static void r700_vm_init(struct drm_device *dev)
360{

--- 49 unchanged lines hidden (view full) ---

410
411/* load r600 microcode */
412static void r700_cp_load_microcode(drm_radeon_private_t *dev_priv)
413{
414 const u32 *pfp;
415 const u32 *cp;
416 int i;
417
352
353 RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
354 RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
355 RADEON_WRITE(R600_CP_ME_RAM_RADDR, 0);
356}
357
358static void r700_vm_init(struct drm_device *dev)
359{

--- 49 unchanged lines hidden (view full) ---

409
410/* load r600 microcode */
411static void r700_cp_load_microcode(drm_radeon_private_t *dev_priv)
412{
413 const u32 *pfp;
414 const u32 *cp;
415 int i;
416
418 r600_do_cp_stop(dev_priv);
419
420 RADEON_WRITE(R600_CP_RB_CNTL,
421 R600_RB_NO_UPDATE |
422 (15 << 8) |
423 (3 << 0));
424
425 RADEON_WRITE(R600_GRBM_SOFT_RESET, R600_SOFT_RESET_CP);
426 RADEON_READ(R600_GRBM_SOFT_RESET);
427 DRM_UDELAY(15000);
428 RADEON_WRITE(R600_GRBM_SOFT_RESET, 0);
429
430 switch (dev_priv->flags & RADEON_FAMILY_MASK) {
431 case CHIP_RV770:
417 switch (dev_priv->flags & RADEON_FAMILY_MASK) {
418 case CHIP_RV770:
432 DRM_INFO("Loading RV770 Microcode\n");
419 DRM_INFO("Loading RV770/RV790 Microcode\n");
433 pfp = RV770_pfp_microcode;
434 cp = RV770_cp_microcode;
435 break;
436 case CHIP_RV730:
437 DRM_INFO("Loading RV730 Microcode\n");
438 pfp = RV730_pfp_microcode;
439 cp = RV730_cp_microcode;
440 break;
441 case CHIP_RV710:
442 DRM_INFO("Loading RV710 Microcode\n");
443 pfp = RV710_pfp_microcode;
444 cp = RV710_cp_microcode;
445 break;
446 default:
420 pfp = RV770_pfp_microcode;
421 cp = RV770_cp_microcode;
422 break;
423 case CHIP_RV730:
424 DRM_INFO("Loading RV730 Microcode\n");
425 pfp = RV730_pfp_microcode;
426 cp = RV730_cp_microcode;
427 break;
428 case CHIP_RV710:
429 DRM_INFO("Loading RV710 Microcode\n");
430 pfp = RV710_pfp_microcode;
431 cp = RV710_cp_microcode;
432 break;
433 default:
447 goto no_microcode;
434 return;
448 }
449
435 }
436
437 r600_do_cp_stop(dev_priv);
438
439 RADEON_WRITE(R600_CP_RB_CNTL,
440 R600_RB_NO_UPDATE |
441 (15 << 8) |
442 (3 << 0));
443
444 RADEON_WRITE(R600_GRBM_SOFT_RESET, R600_SOFT_RESET_CP);
445 RADEON_READ(R600_GRBM_SOFT_RESET);
446 DRM_UDELAY(15000);
447 RADEON_WRITE(R600_GRBM_SOFT_RESET, 0);
448
450 RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
449 RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
451 for (i = 0; i != R700_PFP_UCODE_SIZE; i++)
450 for (i = 0; i < R700_PFP_UCODE_SIZE; i++)
452 RADEON_WRITE(R600_CP_PFP_UCODE_DATA, pfp[i]);
453 RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
454
455 RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
451 RADEON_WRITE(R600_CP_PFP_UCODE_DATA, pfp[i]);
452 RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
453
454 RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
456 for (i = 0; i != R700_PM4_UCODE_SIZE; i++)
455 for (i = 0; i < R700_PM4_UCODE_SIZE; i++)
457 RADEON_WRITE(R600_CP_ME_RAM_DATA, cp[i]);
458 RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
456 RADEON_WRITE(R600_CP_ME_RAM_DATA, cp[i]);
457 RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
459no_microcode:;
460
461 RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
462 RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
463 RADEON_WRITE(R600_CP_ME_RAM_RADDR, 0);
464}
465
466static void r600_test_writeback(drm_radeon_private_t *dev_priv)
467{

--- 1728 unchanged lines hidden ---
458
459 RADEON_WRITE(R600_CP_PFP_UCODE_ADDR, 0);
460 RADEON_WRITE(R600_CP_ME_RAM_WADDR, 0);
461 RADEON_WRITE(R600_CP_ME_RAM_RADDR, 0);
462}
463
464static void r600_test_writeback(drm_radeon_private_t *dev_priv)
465{

--- 1728 unchanged lines hidden ---