Lines Matching +full:64 +full:- +full:bit
3 * Module Name: tbfadt - FADT table utilities
11 * Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.
28 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
104 * re-exports any such software from a foreign destination, Licensee shall
105 * ensure that the distribution and export/re-export of the software is in
108 * any of its subsidiaries will export/re-export any technical data, process,
130 * 3. Neither the names of the above-listed copyright holders nor the names
303 * PARAMETERS: GenericAddress - GAS struct to be initialized
304 * SpaceId - ACPI Space ID for this register
305 * ByteWidth - Width of this register
306 * Address - Address of the register
307 * RegisterName - ASCII name of the ACPI register
330 * Bit width field in the GAS is only one byte long, 255 max. in AcpiTbInitGenericAddress()
344 "%s - 32-bit FADT register is too long (%u bytes, %u bits) " in AcpiTbInitGenericAddress()
345 "to convert to GAS struct - 255 bits max, truncating", in AcpiTbInitGenericAddress()
353 * The 64-bit Address field is non-aligned in the byte packed in AcpiTbInitGenericAddress()
356 ACPI_MOVE_64_TO_64 (&GenericAddress->Address, &Address); in AcpiTbInitGenericAddress()
358 /* All other fields are byte-wide */ in AcpiTbInitGenericAddress()
360 GenericAddress->SpaceId = SpaceId; in AcpiTbInitGenericAddress()
361 GenericAddress->BitWidth = BitWidth; in AcpiTbInitGenericAddress()
362 GenericAddress->BitOffset = 0; in AcpiTbInitGenericAddress()
363 GenericAddress->AccessWidth = 0; /* Access width ANY */ in AcpiTbInitGenericAddress()
371 * PARAMETERS: RegisterName - ASCII name of the ACPI register
372 * Address32 - 32-bit address of the register
373 * Address64 - 64-bit address of the register
375 * RETURN: The resolved 64-bit address
377 * DESCRIPTION: Select between 32-bit and 64-bit versions of addresses within
383 * the 32-bit and 64-bit address fields (FIRMWARE_CTRL/X_FIRMWARE_CTRL and
388 * By default, as per the ACPICA specification, a valid 64-bit address is
389 * used regardless of the value of the 32-bit address. However, this
403 /* 64-bit address is zero, use 32-bit address */ in AcpiTbSelectAddress()
411 /* Address mismatch between 32-bit and 64-bit versions */ in AcpiTbSelectAddress()
414 "32/64X %s address mismatch in FADT: " in AcpiTbSelectAddress()
415 "0x%8.8X/0x%8.8X%8.8X, using %u-bit address", in AcpiTbSelectAddress()
417 AcpiGbl_Use32BitFadtAddresses ? 32 : 64)); in AcpiTbSelectAddress()
419 /* 32-bit address override */ in AcpiTbSelectAddress()
427 /* Default is to use the 64-bit address */ in AcpiTbSelectAddress()
469 Length = FadtDesc->Length; in AcpiTbParseFadt()
513 * PARAMETERS: Table - Pointer to BIOS FADT
514 * Length - Length of the table
541 Table->Revision, ACPI_FADT_CONFORMANCE, Length, in AcpiTbCreateLocalFadt()
576 * PARAMETERS: None - AcpiGbl_FADT is used.
581 * Expand 32-bit addresses to 64-bit as necessary. Also validate
585 * contain a copy of the actual BIOS-provided FADT.
587 * Notes on 64-bit register addresses:
589 * After this FADT conversion, later ACPICA code will only use the 64-bit "X"
592 * The 64-bit X fields are optional extensions to the original 32-bit FADT
595 * 32-bit V1.0 fields to the 64-bit X fields if the 64-bit X field is originally
598 * For ACPI 1.0 FADTs (that contain no 64-bit addresses), all 32-bit address
599 * fields are expanded to the corresponding 64-bit X fields in the internal
602 * For ACPI 2.0+ FADTs, all valid (non-zero) 32-bit address fields are expanded
603 * to the corresponding 64-bit X fields, if the 64-bit field is originally
604 * zero. Adhering to the ACPI specification, we completely ignore the 32-bit
605 * field if the 64-bit field is valid, regardless of whether the host OS is
606 * 32-bit or 64-bit.
655 * Expand the 32-bit DSDT addresses to 64-bit as necessary. in AcpiTbConvertFadt()
656 * Later ACPICA code will always use the X 64-bit field. in AcpiTbConvertFadt()
668 /* Examine all of the 64-bit extended address fields (X fields) */ in AcpiTbConvertFadt()
673 * Get the 32-bit and 64-bit addresses, as well as the register in AcpiTbConvertFadt()
689 * Expand the ACPI 1.0 32-bit addresses to the ACPI 2.0 64-bit "X" in AcpiTbConvertFadt()
691 * the 64-bit address structures. in AcpiTbConvertFadt()
694 * Now always use the 64-bit address if it is valid (non-zero), in in AcpiTbConvertFadt()
695 * accordance with the ACPI specification which states that a 64-bit in AcpiTbConvertFadt()
696 * address supersedes the 32-bit version. This behavior can be in AcpiTbConvertFadt()
699 * During 64-bit address construction and verification, in AcpiTbConvertFadt()
702 * Address32 zero, Address64 [don't care] - Use Address64 in AcpiTbConvertFadt()
705 * Address32 non-zero, Address64 zero - Copy/use Address32 in AcpiTbConvertFadt()
706 * Address32 non-zero == Address64 non-zero - Use Address64 in AcpiTbConvertFadt()
707 * Address32 non-zero != Address64 non-zero - Warning, use Address64 in AcpiTbConvertFadt()
710 * Address32 non-zero, Address64 zero - Copy/use Address32 in AcpiTbConvertFadt()
711 * Address32 non-zero == Address64 non-zero - Copy/use Address32 in AcpiTbConvertFadt()
712 * Address32 non-zero != Address64 non-zero - Warning, copy/use Address32 in AcpiTbConvertFadt()
714 * Note: SpaceId is always I/O for 32-bit legacy address fields in AcpiTbConvertFadt()
718 if (Address64->Address) in AcpiTbConvertFadt()
720 if (Address64->Address != (UINT64) Address32) in AcpiTbConvertFadt()
725 "32/64X address mismatch in FADT/%s: " in AcpiTbConvertFadt()
726 "0x%8.8X/0x%8.8X%8.8X, using %u-bit address", in AcpiTbConvertFadt()
728 ACPI_FORMAT_UINT64 (Address64->Address), in AcpiTbConvertFadt()
729 AcpiGbl_Use32BitFadtAddresses ? 32 : 64)); in AcpiTbConvertFadt()
735 * 64-bit X length field. in AcpiTbConvertFadt()
738 * 64-bit GAS structure can accommodate, 0xFF bits). in AcpiTbConvertFadt()
741 (Address64->BitWidth != ACPI_MUL_8 (Length))) in AcpiTbConvertFadt()
744 "32/64X length mismatch in FADT/%s: %u/%u", in AcpiTbConvertFadt()
745 Name, ACPI_MUL_8 (Length), Address64->BitWidth)); in AcpiTbConvertFadt()
750 * Hardware register access code always uses the 64-bit fields. in AcpiTbConvertFadt()
751 * So if the 64-bit field is zero or is to be overridden, in AcpiTbConvertFadt()
752 * initialize it with the 32-bit fields. in AcpiTbConvertFadt()
753 * Note that when the 32-bit address favor is specified, the in AcpiTbConvertFadt()
754 * 64-bit fields are always re-initialized so that in AcpiTbConvertFadt()
756 * configured to the values to trigger a 32-bit compatible in AcpiTbConvertFadt()
759 if (!Address64->Address || AcpiGbl_Use32BitFadtAddresses) in AcpiTbConvertFadt()
771 * Both the address and length must be non-zero. in AcpiTbConvertFadt()
773 if (!Address64->Address || !Length) in AcpiTbConvertFadt()
778 Name, ACPI_FORMAT_UINT64 (Address64->Address), Length)); in AcpiTbConvertFadt()
788 if ((Address64->Address && !Length) || in AcpiTbConvertFadt()
789 (!Address64->Address && Length)) in AcpiTbConvertFadt()
796 ACPI_FORMAT_UINT64 (Address64->Address), Length)); in AcpiTbConvertFadt()
841 if ((Target64->Address) && in AcpiTbSetupFadtRegisters()
843 (FadtInfoTable[i].DefaultLength != Target64->BitWidth)) in AcpiTbSetupFadtRegisters()
847 FadtInfoTable[i].Name, Target64->BitWidth, in AcpiTbSetupFadtRegisters()
852 Target64->BitWidth = FadtInfoTable[i].DefaultLength; in AcpiTbSetupFadtRegisters()
868 * is useful to pre-calculate them from the PM1 Event Block definitions. in AcpiTbSetupFadtRegisters()
884 if (Source64->Address) in AcpiTbSetupFadtRegisters()
887 Source64->SpaceId, Pm1RegisterByteWidth, in AcpiTbSetupFadtRegisters()
888 Source64->Address + in AcpiTbSetupFadtRegisters()