diff options
| author | Ben Hutchings <ben@decadent.org.uk> | 2009-08-23 13:34:25 -0400 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2009-08-26 20:46:54 -0400 |
| commit | ece2be7993cc5e269cbf0cad6442b401a2c31915 (patch) | |
| tree | fff6ae1334506dd41a4f84b95e3830b269f70d59 | |
| parent | c9c97b8c75019814d8c007059bc827bb475be917 (diff) | |
drm/mga: Use request_firmware() to load microcode
Image format is IHEX, one record for each pipe in order (record
addresses are ignored).
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Dave Airlie <airlied@redhat.com>
| -rw-r--r-- | drivers/gpu/drm/Kconfig | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/mga/mga_dma.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/mga/mga_drv.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/mga/mga_ucode.h | 11645 | ||||
| -rw-r--r-- | drivers/gpu/drm/mga/mga_warp.c | 180 | ||||
| -rw-r--r-- | firmware/Makefile | 1 | ||||
| -rw-r--r-- | firmware/WHENCE | 32 | ||||
| -rw-r--r-- | firmware/matrox/g200_warp.H16 | 28 | ||||
| -rw-r--r-- | firmware/matrox/g400_warp.H16 | 44 |
9 files changed, 186 insertions, 11750 deletions
diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index 39b393d38bb3..10edc9b0022f 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig | |||
| @@ -116,6 +116,7 @@ endchoice | |||
| 116 | config DRM_MGA | 116 | config DRM_MGA |
| 117 | tristate "Matrox g200/g400" | 117 | tristate "Matrox g200/g400" |
| 118 | depends on DRM | 118 | depends on DRM |
| 119 | select FW_LOADER | ||
| 119 | help | 120 | help |
| 120 | Choose this option if you have a Matrox G200, G400 or G450 graphics | 121 | Choose this option if you have a Matrox G200, G400 or G450 graphics |
| 121 | card. If M is selected, the module will be called mga. AGP | 122 | card. If M is selected, the module will be called mga. AGP |
diff --git a/drivers/gpu/drm/mga/mga_dma.c b/drivers/gpu/drm/mga/mga_dma.c index 6c67a02910c8..3c917fb3a60b 100644 --- a/drivers/gpu/drm/mga/mga_dma.c +++ b/drivers/gpu/drm/mga/mga_dma.c | |||
| @@ -444,7 +444,7 @@ static int mga_do_agp_dma_bootstrap(struct drm_device * dev, | |||
| 444 | { | 444 | { |
| 445 | drm_mga_private_t *const dev_priv = | 445 | drm_mga_private_t *const dev_priv = |
| 446 | (drm_mga_private_t *) dev->dev_private; | 446 | (drm_mga_private_t *) dev->dev_private; |
| 447 | unsigned int warp_size = mga_warp_microcode_size(dev_priv); | 447 | unsigned int warp_size = MGA_WARP_UCODE_SIZE; |
| 448 | int err; | 448 | int err; |
| 449 | unsigned offset; | 449 | unsigned offset; |
| 450 | const unsigned secondary_size = dma_bs->secondary_bin_count | 450 | const unsigned secondary_size = dma_bs->secondary_bin_count |
| @@ -619,7 +619,7 @@ static int mga_do_pci_dma_bootstrap(struct drm_device * dev, | |||
| 619 | { | 619 | { |
| 620 | drm_mga_private_t *const dev_priv = | 620 | drm_mga_private_t *const dev_priv = |
| 621 | (drm_mga_private_t *) dev->dev_private; | 621 | (drm_mga_private_t *) dev->dev_private; |
| 622 | unsigned int warp_size = mga_warp_microcode_size(dev_priv); | 622 | unsigned int warp_size = MGA_WARP_UCODE_SIZE; |
| 623 | unsigned int primary_size; | 623 | unsigned int primary_size; |
| 624 | unsigned int bin_count; | 624 | unsigned int bin_count; |
| 625 | int err; | 625 | int err; |
diff --git a/drivers/gpu/drm/mga/mga_drv.h b/drivers/gpu/drm/mga/mga_drv.h index 3d264f288237..be6c6b9b0e89 100644 --- a/drivers/gpu/drm/mga/mga_drv.h +++ b/drivers/gpu/drm/mga/mga_drv.h | |||
| @@ -177,7 +177,6 @@ extern void mga_do_dma_wrap_end(drm_mga_private_t * dev_priv); | |||
| 177 | extern int mga_freelist_put(struct drm_device * dev, struct drm_buf * buf); | 177 | extern int mga_freelist_put(struct drm_device * dev, struct drm_buf * buf); |
| 178 | 178 | ||
| 179 | /* mga_warp.c */ | 179 | /* mga_warp.c */ |
| 180 | extern unsigned int mga_warp_microcode_size(const drm_mga_private_t * dev_priv); | ||
| 181 | extern int mga_warp_install_microcode(drm_mga_private_t * dev_priv); | 180 | extern int mga_warp_install_microcode(drm_mga_private_t * dev_priv); |
| 182 | extern int mga_warp_init(drm_mga_private_t * dev_priv); | 181 | extern int mga_warp_init(drm_mga_private_t * dev_priv); |
| 183 | 182 | ||
diff --git a/drivers/gpu/drm/mga/mga_ucode.h b/drivers/gpu/drm/mga/mga_ucode.h deleted file mode 100644 index b611e27470e1..000000000000 --- a/drivers/gpu/drm/mga/mga_ucode.h +++ /dev/null | |||
| @@ -1,11645 +0,0 @@ | |||
| 1 | /* mga_ucode.h -- Matrox G200/G400 WARP engine microcode -*- linux-c -*- | ||
| 2 | * Created: Thu Jan 11 21:20:43 2001 by gareth@valinux.com | ||
| 3 | * | ||
| 4 | * Copyright 1999 Matrox Graphics Inc. | ||
| 5 | * All Rights Reserved. | ||
| 6 | * | ||
| 7 | * Permission is hereby granted, free of charge, to any person obtaining a | ||
| 8 | * copy of this software and associated documentation files (the "Software"), | ||
| 9 | * to deal in the Software without restriction, including without limitation | ||
| 10 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
| 11 | * and/or sell copies of the Software, and to permit persons to whom the | ||
| 12 | * Software is furnished to do so, subject to the following conditions: | ||
| 13 | * | ||
| 14 | * The above copyright notice and this permission notice shall be included | ||
| 15 | * in all copies or substantial portions of the Software. | ||
| 16 | * | ||
| 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
| 18 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
| 20 | * MATROX GRAPHICS INC., OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM, | ||
| 21 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | ||
| 22 | * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE | ||
| 23 | * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
| 24 | * | ||
| 25 | * Kernel-based WARP engine management: | ||
| 26 | * Gareth Hughes <gareth@valinux.com> | ||
| 27 | */ | ||
| 28 | |||
| 29 | /* | ||
| 30 | * WARP pipes are named according to the functions they perform, where: | ||
| 31 | * | ||
| 32 | * - T stands for computation of texture stage 0 | ||
| 33 | * - T2 stands for computation of both texture stage 0 and texture stage 1 | ||
| 34 | * - G stands for computation of triangle intensity (Gouraud interpolation) | ||
| 35 | * - Z stands for computation of Z buffer interpolation | ||
| 36 | * - S stands for computation of specular highlight | ||
| 37 | * - A stands for computation of the alpha channel | ||
| 38 | * - F stands for computation of vertex fog interpolation | ||
| 39 | */ | ||
| 40 | |||
| 41 | static unsigned char warp_g200_tgz[] = { | ||
| 42 | |||
| 43 | 0x00, 0x80, 0x00, 0xE8, | ||
| 44 | 0x00, 0x80, 0x00, 0xE8, | ||
| 45 | |||
| 46 | 0x00, 0x80, 0x00, 0xE8, | ||
| 47 | 0x00, 0x80, 0x00, 0xE8, | ||
| 48 | |||
| 49 | 0x00, 0x80, 0x00, 0xE8, | ||
| 50 | 0x00, 0x80, 0x00, 0xE8, | ||
| 51 | |||
| 52 | 0x00, 0x80, 0x00, 0xE8, | ||
| 53 | 0x00, 0x80, 0x00, 0xE8, | ||
| 54 | |||
| 55 | 0x00, 0x80, 0x00, 0xE8, | ||
| 56 | 0x00, 0x80, 0x00, 0xE8, | ||
| 57 | |||
| 58 | 0x00, 0x98, 0xA0, 0xE9, | ||
| 59 | 0x40, 0x40, 0xD8, 0xEC, | ||
| 60 | |||
| 61 | 0xFF, 0x80, 0xC0, 0xE9, | ||
| 62 | 0x00, 0x80, 0x00, 0xE8, | ||
| 63 | |||
| 64 | 0x1F, 0xD7, 0x18, 0xBD, | ||
| 65 | 0x3F, 0xD7, 0x22, 0xBD, | ||
| 66 | |||
| 67 | 0x81, 0x04, | ||
| 68 | 0x89, 0x04, | ||
| 69 | 0x01, 0x04, | ||
| 70 | 0x09, 0x04, | ||
| 71 | |||
| 72 | 0xC9, 0x41, 0xC0, 0xEC, | ||
| 73 | 0x11, 0x04, | ||
| 74 | 0x00, 0xE0, | ||
| 75 | |||
| 76 | 0x41, 0xCC, 0x41, 0xCD, | ||
| 77 | 0x49, 0xCC, 0x49, 0xCD, | ||
| 78 | |||
| 79 | 0xD1, 0x41, 0xC0, 0xEC, | ||
| 80 | 0x51, 0xCC, 0x51, 0xCD, | ||
| 81 | |||
| 82 | 0x80, 0x04, | ||
| 83 | 0x10, 0x04, | ||
| 84 | 0x08, 0x04, | ||
| 85 | 0x00, 0xE0, | ||
| 86 | |||
| 87 | 0x00, 0xCC, 0xC0, 0xCD, | ||
| 88 | 0xD1, 0x49, 0xC0, 0xEC, | ||
| 89 | |||
| 90 | 0x8A, 0x1F, 0x20, 0xE9, | ||
| 91 | 0x8B, 0x3F, 0x20, 0xE9, | ||
| 92 | |||
| 93 | 0x41, 0x3C, 0x41, 0xAD, | ||
| 94 | 0x49, 0x3C, 0x49, 0xAD, | ||
| 95 | |||
| 96 | 0x10, 0xCC, 0x10, 0xCD, | ||
| 97 | 0x08, 0xCC, 0x08, 0xCD, | ||
| 98 | |||
| 99 | 0xB9, 0x41, 0x49, 0xBB, | ||
| 100 | 0x1F, 0xF0, 0x41, 0xCD, | ||
| 101 | |||
| 102 | 0x51, 0x3C, 0x51, 0xAD, | ||
| 103 | 0x00, 0x98, 0x80, 0xE9, | ||
| 104 | |||
| 105 | 0x72, 0x80, 0x07, 0xEA, | ||
| 106 | 0x24, 0x1F, 0x20, 0xE9, | ||
| 107 | |||
| 108 | 0x15, 0x41, 0x49, 0xBD, | ||
| 109 | 0x1D, 0x41, 0x51, 0xBD, | ||
| 110 | |||
| 111 | 0x2E, 0x41, 0x2A, 0xB8, | ||
| 112 | 0x34, 0x53, 0xA0, 0xE8, | ||
| 113 | |||
| 114 | 0x15, 0x30, | ||
| 115 | 0x1D, 0x30, | ||
| 116 | 0x58, 0xE3, | ||
| 117 | 0x00, 0xE0, | ||
| 118 | |||
| 119 | 0xB5, 0x40, 0x48, 0xBD, | ||
| 120 | 0x3D, 0x40, 0x50, 0xBD, | ||
| 121 | |||
| 122 | 0x24, 0x43, 0xA0, 0xE8, | ||
| 123 | 0x2C, 0x4B, 0xA0, 0xE8, | ||
| 124 | |||
| 125 | 0x15, 0x72, | ||
| 126 | 0x09, 0xE3, | ||
| 127 | 0x00, 0xE0, | ||
| 128 | 0x1D, 0x72, | ||
| 129 | |||
| 130 | 0x35, 0x30, | ||
| 131 | 0xB5, 0x30, | ||
