Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  * Module Name: utbuffer - Buffer dump routines
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  * Copyright (C) 2000 - 2020, Intel Corp.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  *****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #include <acpi/acpi.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) #include "accommon.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #define _COMPONENT          ACPI_UTILITIES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) ACPI_MODULE_NAME("utbuffer")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18)  * FUNCTION:    acpi_ut_dump_buffer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20)  * PARAMETERS:  buffer              - Buffer to dump
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21)  *              count               - Amount to dump, in bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22)  *              display             - BYTE, WORD, DWORD, or QWORD display:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23)  *                                      DB_BYTE_DISPLAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24)  *                                      DB_WORD_DISPLAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25)  *                                      DB_DWORD_DISPLAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26)  *                                      DB_QWORD_DISPLAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27)  *              base_offset         - Beginning buffer offset (display only)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29)  * RETURN:      None
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31)  * DESCRIPTION: Generic dump buffer in both hex and ascii.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) void acpi_ut_dump_buffer(u8 *buffer, u32 count, u32 display, u32 base_offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 	u32 i = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	u32 j;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	u32 temp32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	u8 buf_char;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	u32 display_data_only = display & DB_DISPLAY_DATA_ONLY;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	display &= ~DB_DISPLAY_DATA_ONLY;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	if (!buffer) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 		acpi_os_printf("Null Buffer Pointer in DumpBuffer!\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 		return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	if ((count < 4) || (count & 0x01)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 		display = DB_BYTE_DISPLAY;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	/* Nasty little dump buffer routine! */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	while (i < count) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 		/* Print current offset */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 		if (!display_data_only) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 			acpi_os_printf("%8.4X: ", (base_offset + i));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 		/* Print 16 hex chars */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 		for (j = 0; j < 16;) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 			if (i + j >= count) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 				/* Dump fill spaces */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 				acpi_os_printf("%*s", ((display * 2) + 1), " ");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 				j += display;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 				continue;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 			}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 			switch (display) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 			case DB_BYTE_DISPLAY:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 			default:	/* Default is BYTE display */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 				acpi_os_printf("%02X ",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 					       buffer[(acpi_size)i + j]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 				break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 			case DB_WORD_DISPLAY:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 				ACPI_MOVE_16_TO_32(&temp32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 						   &buffer[(acpi_size)i + j]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 				acpi_os_printf("%04X ", temp32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 				break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 			case DB_DWORD_DISPLAY:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 				ACPI_MOVE_32_TO_32(&temp32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 						   &buffer[(acpi_size)i + j]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 				acpi_os_printf("%08X ", temp32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 				break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 			case DB_QWORD_DISPLAY:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 				ACPI_MOVE_32_TO_32(&temp32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 						   &buffer[(acpi_size)i + j]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 				acpi_os_printf("%08X", temp32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 				ACPI_MOVE_32_TO_32(&temp32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 						   &buffer[(acpi_size)i + j +
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 							   4]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 				acpi_os_printf("%08X ", temp32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 				break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 			}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 			j += display;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 		/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 		 * Print the ASCII equivalent characters but watch out for the bad
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 		 * unprintable ones (printable chars are 0x20 through 0x7E)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 		 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 		if (!display_data_only) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 			acpi_os_printf(" ");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 			for (j = 0; j < 16; j++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 				if (i + j >= count) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 					acpi_os_printf("\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 					return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 				}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 				/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 				 * Add comment characters so rest of line is ignored when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 				 * compiled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 				 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 				if (j == 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 					acpi_os_printf("// ");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 				}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 				buf_char = buffer[(acpi_size)i + j];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 				if (isprint(buf_char)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 					acpi_os_printf("%c", buf_char);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 				} else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 					acpi_os_printf(".");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 				}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 			}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 			/* Done with that line. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 			acpi_os_printf("\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 		i += 16;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 	return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152)  * FUNCTION:    acpi_ut_debug_dump_buffer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154)  * PARAMETERS:  buffer              - Buffer to dump
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155)  *              count               - Amount to dump, in bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)  *              display             - BYTE, WORD, DWORD, or QWORD display:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157)  *                                      DB_BYTE_DISPLAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158)  *                                      DB_WORD_DISPLAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159)  *                                      DB_DWORD_DISPLAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160)  *                                      DB_QWORD_DISPLAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)  *              component_ID        - Caller's component ID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163)  * RETURN:      None
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)  * DESCRIPTION: Generic dump buffer in both hex and ascii.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) acpi_ut_debug_dump_buffer(u8 *buffer, u32 count, u32 display, u32 component_id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 	/* Only dump the buffer if tracing is enabled */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 	if (!((ACPI_LV_TABLES & acpi_dbg_level) &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 	      (component_id & acpi_dbg_layer))) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 		return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 	acpi_ut_dump_buffer(buffer, count, display, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) #ifdef ACPI_APPLICATION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186)  * FUNCTION:    acpi_ut_dump_buffer_to_file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188)  * PARAMETERS:  file                - File descriptor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189)  *              buffer              - Buffer to dump
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)  *              count               - Amount to dump, in bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191)  *              display             - BYTE, WORD, DWORD, or QWORD display:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192)  *                                      DB_BYTE_DISPLAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193)  *                                      DB_WORD_DISPLAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194)  *                                      DB_DWORD_DISPLAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195)  *                                      DB_QWORD_DISPLAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196)  *              base_offset         - Beginning buffer offset (display only)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198)  * RETURN:      None
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200)  * DESCRIPTION: Generic dump buffer in both hex and ascii to a file.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)  ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) acpi_ut_dump_buffer_to_file(ACPI_FILE file,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 			    u8 *buffer, u32 count, u32 display, u32 base_offset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 	u32 i = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 	u32 j;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 	u32 temp32;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 	u8 buf_char;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 	if (!buffer) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 		fprintf(file, "Null Buffer Pointer in DumpBuffer!\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 		return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 	if ((count < 4) || (count & 0x01)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 		display = DB_BYTE_DISPLAY;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 	/* Nasty little dump buffer routine! */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) 	while (i < count) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 		/* Print current offset */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 		fprintf(file, "%8.4X: ", (base_offset + i));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) 		/* Print 16 hex chars */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) 		for (j = 0; j < 16;) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) 			if (i + j >= count) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) 				/* Dump fill spaces */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) 				fprintf(file, "%*s", ((display * 2) + 1), " ");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) 				j += display;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) 				continue;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) 			}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) 			switch (display) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) 			case DB_BYTE_DISPLAY:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) 			default:	/* Default is BYTE display */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) 				fprintf(file, "%02X ",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) 					buffer[(acpi_size)i + j]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) 				break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) 			case DB_WORD_DISPLAY:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) 				ACPI_MOVE_16_TO_32(&temp32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) 						   &buffer[(acpi_size)i + j]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) 				fprintf(file, "%04X ", temp32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) 				break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) 			case DB_DWORD_DISPLAY:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) 				ACPI_MOVE_32_TO_32(&temp32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) 						   &buffer[(acpi_size)i + j]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) 				fprintf(file, "%08X ", temp32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) 				break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) 			case DB_QWORD_DISPLAY:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) 				ACPI_MOVE_32_TO_32(&temp32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) 						   &buffer[(acpi_size)i + j]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) 				fprintf(file, "%08X", temp32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) 				ACPI_MOVE_32_TO_32(&temp32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) 						   &buffer[(acpi_size)i + j +
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) 							   4]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) 				fprintf(file, "%08X ", temp32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) 				break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) 			}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) 			j += display;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) 		/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) 		 * Print the ASCII equivalent characters but watch out for the bad
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) 		 * unprintable ones (printable chars are 0x20 through 0x7E)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) 		 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) 		fprintf(file, " ");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) 		for (j = 0; j < 16; j++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) 			if (i + j >= count) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) 				fprintf(file, "\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) 				return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) 			}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) 			buf_char = buffer[(acpi_size)i + j];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) 			if (isprint(buf_char)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) 				fprintf(file, "%c", buf_char);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) 			} else {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) 				fprintf(file, ".");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) 			}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 		/* Done with that line. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 		fprintf(file, "\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) 		i += 16;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) 	return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) #endif