173bbca04867d2f75443cc7dadcf115258f06b25eBob Moore/****************************************************************************** 273bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 373bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * Module Name: uthex -- Hex/ASCII support functions 473bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 573bbca04867d2f75443cc7dadcf115258f06b25eBob Moore *****************************************************************************/ 673bbca04867d2f75443cc7dadcf115258f06b25eBob Moore 773bbca04867d2f75443cc7dadcf115258f06b25eBob Moore/* 873bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * Copyright (C) 2000 - 2014, Intel Corp. 973bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * All rights reserved. 1073bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 1173bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * Redistribution and use in source and binary forms, with or without 1273bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * modification, are permitted provided that the following conditions 1373bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * are met: 1473bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 1. Redistributions of source code must retain the above copyright 1573bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * notice, this list of conditions, and the following disclaimer, 1673bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * without modification. 1773bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 2. Redistributions in binary form must reproduce at minimum a disclaimer 1873bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * substantially similar to the "NO WARRANTY" disclaimer below 1973bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * ("Disclaimer") and any redistribution must be conditioned upon 2073bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * including a substantially similar Disclaimer requirement for further 2173bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * binary redistribution. 2273bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 3. Neither the names of the above-listed copyright holders nor the names 2373bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * of any contributors may be used to endorse or promote products derived 2473bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * from this software without specific prior written permission. 2573bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 2673bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * Alternatively, this software may be distributed under the terms of the 2773bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * GNU General Public License ("GPL") version 2 as published by the Free 2873bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * Software Foundation. 2973bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 3073bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * NO WARRANTY 3173bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 3273bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 3373bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 3473bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 3573bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 3673bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 3773bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3873bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 3973bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 4073bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 4173bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * POSSIBILITY OF SUCH DAMAGES. 4273bbca04867d2f75443cc7dadcf115258f06b25eBob Moore */ 4373bbca04867d2f75443cc7dadcf115258f06b25eBob Moore 4473bbca04867d2f75443cc7dadcf115258f06b25eBob Moore#include <acpi/acpi.h> 4573bbca04867d2f75443cc7dadcf115258f06b25eBob Moore#include "accommon.h" 4673bbca04867d2f75443cc7dadcf115258f06b25eBob Moore 4773bbca04867d2f75443cc7dadcf115258f06b25eBob Moore#define _COMPONENT ACPI_COMPILER 4873bbca04867d2f75443cc7dadcf115258f06b25eBob MooreACPI_MODULE_NAME("uthex") 4973bbca04867d2f75443cc7dadcf115258f06b25eBob Moore 5073bbca04867d2f75443cc7dadcf115258f06b25eBob Moore/* Hex to ASCII conversion table */ 5173bbca04867d2f75443cc7dadcf115258f06b25eBob Moorestatic char acpi_gbl_hex_to_ascii[] = { 5273bbca04867d2f75443cc7dadcf115258f06b25eBob Moore '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 5373bbca04867d2f75443cc7dadcf115258f06b25eBob Moore 'E', 'F' 5473bbca04867d2f75443cc7dadcf115258f06b25eBob Moore}; 5573bbca04867d2f75443cc7dadcf115258f06b25eBob Moore 5673bbca04867d2f75443cc7dadcf115258f06b25eBob Moore/******************************************************************************* 5773bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 5873bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * FUNCTION: acpi_ut_hex_to_ascii_char 5973bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 6073bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * PARAMETERS: integer - Contains the hex digit 6173bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * position - bit position of the digit within the 6273bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * integer (multiple of 4) 6373bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 6473bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * RETURN: The converted Ascii character 6573bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 6673bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * DESCRIPTION: Convert a hex digit to an Ascii character 6773bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 6873bbca04867d2f75443cc7dadcf115258f06b25eBob Moore ******************************************************************************/ 6973bbca04867d2f75443cc7dadcf115258f06b25eBob Moore 7073bbca04867d2f75443cc7dadcf115258f06b25eBob Moorechar acpi_ut_hex_to_ascii_char(u64 integer, u32 position) 7173bbca04867d2f75443cc7dadcf115258f06b25eBob Moore{ 7273bbca04867d2f75443cc7dadcf115258f06b25eBob Moore 7373bbca04867d2f75443cc7dadcf115258f06b25eBob Moore return (acpi_gbl_hex_to_ascii[(integer >> position) & 0xF]); 7473bbca04867d2f75443cc7dadcf115258f06b25eBob Moore} 7573bbca04867d2f75443cc7dadcf115258f06b25eBob Moore 7673bbca04867d2f75443cc7dadcf115258f06b25eBob Moore/******************************************************************************* 7773bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 7873bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * FUNCTION: acpi_ut_hex_char_to_value 7973bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 8073bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * PARAMETERS: ascii_char - Hex character in Ascii 8173bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 8273bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * RETURN: The binary value of the ascii/hex character 8373bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 8473bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * DESCRIPTION: Perform ascii-to-hex translation 8573bbca04867d2f75443cc7dadcf115258f06b25eBob Moore * 8673bbca04867d2f75443cc7dadcf115258f06b25eBob Moore ******************************************************************************/ 8773bbca04867d2f75443cc7dadcf115258f06b25eBob Moore 8873bbca04867d2f75443cc7dadcf115258f06b25eBob Mooreu8 acpi_ut_ascii_char_to_hex(int hex_char) 8973bbca04867d2f75443cc7dadcf115258f06b25eBob Moore{ 9073bbca04867d2f75443cc7dadcf115258f06b25eBob Moore 9173bbca04867d2f75443cc7dadcf115258f06b25eBob Moore if (hex_char <= 0x39) { 9273bbca04867d2f75443cc7dadcf115258f06b25eBob Moore return ((u8)(hex_char - 0x30)); 9373bbca04867d2f75443cc7dadcf115258f06b25eBob Moore } 9473bbca04867d2f75443cc7dadcf115258f06b25eBob Moore 9573bbca04867d2f75443cc7dadcf115258f06b25eBob Moore if (hex_char <= 0x46) { 9673bbca04867d2f75443cc7dadcf115258f06b25eBob Moore return ((u8)(hex_char - 0x37)); 9773bbca04867d2f75443cc7dadcf115258f06b25eBob Moore } 9873bbca04867d2f75443cc7dadcf115258f06b25eBob Moore 9973bbca04867d2f75443cc7dadcf115258f06b25eBob Moore return ((u8)(hex_char - 0x57)); 10073bbca04867d2f75443cc7dadcf115258f06b25eBob Moore} 101