bios_parser_helper.c (2328B)
1/* 2 * Copyright 2012-15 Advanced Micro Devices, Inc. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the "Software"), 6 * to deal in the Software without restriction, including without limitation 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 * and/or sell copies of the Software, and to permit persons to whom the 9 * Software is furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice shall be included in 12 * all copies or substantial portions of the Software. 13 * 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 20 * OTHER DEALINGS IN THE SOFTWARE. 21 * 22 * Authors: AMD 23 * 24 */ 25 26#include "dm_services.h" 27 28#include "atom.h" 29 30#include "include/bios_parser_types.h" 31#include "bios_parser_helper.h" 32#include "command_table_helper.h" 33#include "command_table.h" 34#include "bios_parser_types_internal.h" 35 36uint8_t *bios_get_image(struct dc_bios *bp, 37 uint32_t offset, 38 uint32_t size) 39{ 40 if (bp->bios && offset + size < bp->bios_size) 41 return bp->bios + offset; 42 else 43 return NULL; 44} 45 46#include "reg_helper.h" 47 48#define CTX \ 49 bios->ctx 50#define REG(reg)\ 51 (bios->regs->reg) 52 53#undef FN 54#define FN(reg_name, field_name) \ 55 ATOM_ ## field_name ## _SHIFT, ATOM_ ## field_name 56 57bool bios_is_accelerated_mode( 58 struct dc_bios *bios) 59{ 60 uint32_t acc_mode; 61 REG_GET(BIOS_SCRATCH_6, S6_ACC_MODE, &acc_mode); 62 return (acc_mode == 1); 63} 64 65 66void bios_set_scratch_acc_mode_change( 67 struct dc_bios *bios, 68 uint32_t state) 69{ 70 REG_UPDATE(BIOS_SCRATCH_6, S6_ACC_MODE, state); 71} 72 73 74void bios_set_scratch_critical_state( 75 struct dc_bios *bios, 76 bool state) 77{ 78 uint32_t critial_state = state ? 1 : 0; 79 REG_UPDATE(BIOS_SCRATCH_6, S6_CRITICAL_STATE, critial_state); 80} 81 82uint32_t bios_get_vga_enabled_displays( 83 struct dc_bios *bios) 84{ 85 return REG_READ(BIOS_SCRATCH_3) & 0XFFFF; 86} 87