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

drm/amdgpu: move atom scratch setup into amdgpu_atombios.c

There will be a slightly different version for atomfirmware.

Acked-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Ken Wang <Qingqing.Wang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

+32 -28
+28
drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c
··· 1748 1748 memcpy(dst, src, num_bytes); 1749 1749 #endif 1750 1750 } 1751 + 1752 + int amdgpu_atombios_allocate_fb_scratch(struct amdgpu_device *adev) 1753 + { 1754 + struct atom_context *ctx = adev->mode_info.atom_context; 1755 + int index = GetIndexIntoMasterTable(DATA, VRAM_UsageByFirmware); 1756 + uint16_t data_offset; 1757 + int usage_bytes = 0; 1758 + struct _ATOM_VRAM_USAGE_BY_FIRMWARE *firmware_usage; 1759 + 1760 + if (amdgpu_atom_parse_data_header(ctx, index, NULL, NULL, NULL, &data_offset)) { 1761 + firmware_usage = (struct _ATOM_VRAM_USAGE_BY_FIRMWARE *)(ctx->bios + data_offset); 1762 + 1763 + DRM_DEBUG("atom firmware requested %08x %dkb\n", 1764 + le32_to_cpu(firmware_usage->asFirmwareVramReserveInfo[0].ulStartAddrUsedByFirmware), 1765 + le16_to_cpu(firmware_usage->asFirmwareVramReserveInfo[0].usFirmwareUseInKb)); 1766 + 1767 + usage_bytes = le16_to_cpu(firmware_usage->asFirmwareVramReserveInfo[0].usFirmwareUseInKb) * 1024; 1768 + } 1769 + ctx->scratch_size_bytes = 0; 1770 + if (usage_bytes == 0) 1771 + usage_bytes = 20 * 1024; 1772 + /* allocate some scratch memory */ 1773 + ctx->scratch = kzalloc(usage_bytes, GFP_KERNEL); 1774 + if (!ctx->scratch) 1775 + return -ENOMEM; 1776 + ctx->scratch_size_bytes = usage_bytes; 1777 + return 0; 1778 + }
+3
drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.h
··· 215 215 int amdgpu_atombios_get_svi2_info(struct amdgpu_device *adev, 216 216 u8 voltage_type, 217 217 u8 *svd_gpio_id, u8 *svc_gpio_id); 218 + 219 + int amdgpu_atombios_allocate_fb_scratch(struct amdgpu_device *adev); 220 + 218 221 #endif
+1 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
··· 994 994 995 995 mutex_init(&adev->mode_info.atom_context->mutex); 996 996 amdgpu_atombios_scratch_regs_init(adev); 997 - amdgpu_atom_allocate_fb_scratch(adev->mode_info.atom_context); 997 + amdgpu_atombios_allocate_fb_scratch(adev); 998 998 return 0; 999 999 } 1000 1000
-26
drivers/gpu/drm/amd/amdgpu/atom.c
··· 1417 1417 return true; 1418 1418 } 1419 1419 1420 - int amdgpu_atom_allocate_fb_scratch(struct atom_context *ctx) 1421 - { 1422 - int index = GetIndexIntoMasterTable(DATA, VRAM_UsageByFirmware); 1423 - uint16_t data_offset; 1424 - int usage_bytes = 0; 1425 - struct _ATOM_VRAM_USAGE_BY_FIRMWARE *firmware_usage; 1426 - 1427 - if (amdgpu_atom_parse_data_header(ctx, index, NULL, NULL, NULL, &data_offset)) { 1428 - firmware_usage = (struct _ATOM_VRAM_USAGE_BY_FIRMWARE *)(ctx->bios + data_offset); 1429 - 1430 - DRM_DEBUG("atom firmware requested %08x %dkb\n", 1431 - le32_to_cpu(firmware_usage->asFirmwareVramReserveInfo[0].ulStartAddrUsedByFirmware), 1432 - le16_to_cpu(firmware_usage->asFirmwareVramReserveInfo[0].usFirmwareUseInKb)); 1433 - 1434 - usage_bytes = le16_to_cpu(firmware_usage->asFirmwareVramReserveInfo[0].usFirmwareUseInKb) * 1024; 1435 - } 1436 - ctx->scratch_size_bytes = 0; 1437 - if (usage_bytes == 0) 1438 - usage_bytes = 20 * 1024; 1439 - /* allocate some scratch memory */ 1440 - ctx->scratch = kzalloc(usage_bytes, GFP_KERNEL); 1441 - if (!ctx->scratch) 1442 - return -ENOMEM; 1443 - ctx->scratch_size_bytes = usage_bytes; 1444 - return 0; 1445 - }
-1
drivers/gpu/drm/amd/amdgpu/atom.h
··· 152 152 uint8_t *frev, uint8_t *crev, uint16_t *data_start); 153 153 bool amdgpu_atom_parse_cmd_header(struct atom_context *ctx, int index, 154 154 uint8_t *frev, uint8_t *crev); 155 - int amdgpu_atom_allocate_fb_scratch(struct atom_context *ctx); 156 155 #include "atom-types.h" 157 156 #include "atombios.h" 158 157 #include "ObjectID.h"