char *Name; UINT8 Address64; UINT8 Address32; UINT8 Length; UINT8 DefaultLength; UINT8 Type; } ACPI_FADT_INFO; #define ACPI_FADT_REQUIRED 1 #define ACPI_FADT_SEPARATE_LENGTH 2 static ACPI_FADT_INFO FadtInfoTable[] = { { "Pm1aEventBlock", ACPI_FADT_OFFSET (XPm1aEventBlock), ACPI_FADT_OFFSET (Pm1aEventBlock), ACPI_FADT_OFFSET (Pm1EventLength), ACPI_PM1_REGISTER_WIDTH * 2, /* Enable + Status register */ ACPI_FADT_REQUIRED }, { "Pm1bEventBlock", ACPI_FADT_OFFSET (XPm1bEventBlock), ACPI_FADT_OFFSET (Pm1bEventBlock), ACPI_FADT_OFFSET (Pm1EventLength), ACPI_PM1_REGISTER_WIDTH * 2, /* Enable + Status register */ 0 }, { "Pm1aControlBlock",
typedef struct acpi_fadt_info { char *name; u8 address64; u8 address32; u8 length; u8 default_length; u8 type; } acpi_fadt_info; #define ACPI_FADT_REQUIRED 1 #define ACPI_FADT_SEPARATE_LENGTH 2 static struct acpi_fadt_info fadt_info_table[] = { {"Pm1aEventBlock", ACPI_FADT_OFFSET(xpm1a_event_block), ACPI_FADT_OFFSET(pm1a_event_block), ACPI_FADT_OFFSET(pm1_event_length), ACPI_PM1_REGISTER_WIDTH * 2, ACPI_FADT_REQUIRED}, {"Pm1bEventBlock", ACPI_FADT_OFFSET(xpm1b_event_block), ACPI_FADT_OFFSET(pm1b_event_block), ACPI_FADT_OFFSET(pm1_event_length), ACPI_PM1_REGISTER_WIDTH * 2, 0}, {"Pm1aControlBlock", ACPI_FADT_OFFSET(xpm1a_control_block), ACPI_FADT_OFFSET(pm1a_control_block),
ACPI_STATUS AcpiUtValidateFadt ( void) { /* * Verify Fixed ACPI Description Table fields, * but don't abort on any problems, just display error */ if (AcpiGbl_FADT->Pm1EvtLen < 4) { AcpiUtFadtRegisterError ("PM1_EVT_LEN", (UINT32) AcpiGbl_FADT->Pm1EvtLen, ACPI_FADT_OFFSET (Pm1EvtLen)); } if (!AcpiGbl_FADT->Pm1CntLen) { AcpiUtFadtRegisterError ("PM1_CNT_LEN", 0, ACPI_FADT_OFFSET (Pm1CntLen)); } if (!ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm1aEvtBlk.Address)) { AcpiUtFadtRegisterError ("X_PM1a_EVT_BLK", 0, ACPI_FADT_OFFSET (XPm1aEvtBlk.Address)); } if (!ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm1aCntBlk.Address)) { AcpiUtFadtRegisterError ("X_PM1a_CNT_BLK", 0, ACPI_FADT_OFFSET (XPm1aCntBlk.Address)); } if (!ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPmTmrBlk.Address)) { AcpiUtFadtRegisterError ("X_PM_TMR_BLK", 0, ACPI_FADT_OFFSET (XPmTmrBlk.Address)); } if ((ACPI_VALID_ADDRESS (AcpiGbl_FADT->XPm2CntBlk.Address) && !AcpiGbl_FADT->Pm2CntLen)) { AcpiUtFadtRegisterError ("PM2_CNT_LEN", (UINT32) AcpiGbl_FADT->Pm2CntLen, ACPI_FADT_OFFSET (Pm2CntLen)); } if (AcpiGbl_FADT->PmTmLen < 4) { AcpiUtFadtRegisterError ("PM_TM_LEN", (UINT32) AcpiGbl_FADT->PmTmLen, ACPI_FADT_OFFSET (PmTmLen)); } /* Length of GPE blocks must be a multiple of 2 */ if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XGpe0Blk.Address) && (AcpiGbl_FADT->Gpe0BlkLen & 1)) { AcpiUtFadtRegisterError ("(x)GPE0_BLK_LEN", (UINT32) AcpiGbl_FADT->Gpe0BlkLen, ACPI_FADT_OFFSET (Gpe0BlkLen)); } if (ACPI_VALID_ADDRESS (AcpiGbl_FADT->XGpe1Blk.Address) && (AcpiGbl_FADT->Gpe1BlkLen & 1)) { AcpiUtFadtRegisterError ("(x)GPE1_BLK_LEN", (UINT32) AcpiGbl_FADT->Gpe1BlkLen, ACPI_FADT_OFFSET (Gpe1BlkLen)); } return (AE_OK); }
acpi_status acpi_ut_validate_fadt ( void) { /* * Verify Fixed ACPI Description Table fields, * but don't abort on any problems, just display error */ if (acpi_gbl_FADT->pm1_evt_len < 4) { acpi_ut_fadt_register_error ("PM1_EVT_LEN", (u32) acpi_gbl_FADT->pm1_evt_len, ACPI_FADT_OFFSET (pm1_evt_len)); } if (!acpi_gbl_FADT->pm1_cnt_len) { acpi_ut_fadt_register_error ("PM1_CNT_LEN", 0, ACPI_FADT_OFFSET (pm1_cnt_len)); } if (!acpi_gbl_FADT->xpm1a_evt_blk.address) { acpi_ut_fadt_register_error ("X_PM1a_EVT_BLK", 0, ACPI_FADT_OFFSET (xpm1a_evt_blk.address)); } if (!acpi_gbl_FADT->xpm1a_cnt_blk.address) { acpi_ut_fadt_register_error ("X_PM1a_CNT_BLK", 0, ACPI_FADT_OFFSET (xpm1a_cnt_blk.address)); } if (!acpi_gbl_FADT->xpm_tmr_blk.address) { acpi_ut_fadt_register_error ("X_PM_TMR_BLK", 0, ACPI_FADT_OFFSET (xpm_tmr_blk.address)); } if ((acpi_gbl_FADT->xpm2_cnt_blk.address && !acpi_gbl_FADT->pm2_cnt_len)) { acpi_ut_fadt_register_error ("PM2_CNT_LEN", (u32) acpi_gbl_FADT->pm2_cnt_len, ACPI_FADT_OFFSET (pm2_cnt_len)); } if (acpi_gbl_FADT->pm_tm_len < 4) { acpi_ut_fadt_register_error ("PM_TM_LEN", (u32) acpi_gbl_FADT->pm_tm_len, ACPI_FADT_OFFSET (pm_tm_len)); } /* Length of GPE blocks must be a multiple of 2 */ if (acpi_gbl_FADT->xgpe0_blk.address && (acpi_gbl_FADT->gpe0_blk_len & 1)) { acpi_ut_fadt_register_error ("(x)GPE0_BLK_LEN", (u32) acpi_gbl_FADT->gpe0_blk_len, ACPI_FADT_OFFSET (gpe0_blk_len)); } if (acpi_gbl_FADT->xgpe1_blk.address && (acpi_gbl_FADT->gpe1_blk_len & 1)) { acpi_ut_fadt_register_error ("(x)GPE1_BLK_LEN", (u32) acpi_gbl_FADT->gpe1_blk_len, ACPI_FADT_OFFSET (gpe1_blk_len)); } return (AE_OK); }
typedef struct acpi_fadt_info { char *Name; UINT8 Target; UINT8 Source; UINT8 Length; UINT8 Type; } ACPI_FADT_INFO; #define ACPI_FADT_REQUIRED 1 #define ACPI_FADT_SEPARATE_LENGTH 2 static ACPI_FADT_INFO FadtInfoTable[] = { {"Pm1aEventBlock", ACPI_FADT_OFFSET (XPm1aEventBlock), ACPI_FADT_OFFSET (Pm1aEventBlock), ACPI_FADT_OFFSET (Pm1EventLength), ACPI_FADT_REQUIRED}, {"Pm1bEventBlock", ACPI_FADT_OFFSET (XPm1bEventBlock), ACPI_FADT_OFFSET (Pm1bEventBlock), ACPI_FADT_OFFSET (Pm1EventLength), 0}, {"Pm1aControlBlock", ACPI_FADT_OFFSET (XPm1aControlBlock), ACPI_FADT_OFFSET (Pm1aControlBlock), ACPI_FADT_OFFSET (Pm1ControlLength), ACPI_FADT_REQUIRED}, {"Pm1bControlBlock", ACPI_FADT_OFFSET (XPm1bControlBlock), ACPI_FADT_OFFSET (Pm1bControlBlock), ACPI_FADT_OFFSET (Pm1ControlLength), 0},
typedef struct acpi_fadt_info { char *name; u16 target; u16 source; u16 length; u8 type; } acpi_fadt_info; #define ACPI_FADT_OPTIONAL 0 #define ACPI_FADT_REQUIRED 1 #define ACPI_FADT_SEPARATE_LENGTH 2 static struct acpi_fadt_info __initdata fadt_info_table[] = { {"Pm1aEventBlock", ACPI_FADT_OFFSET(xpm1a_event_block), ACPI_FADT_OFFSET(pm1a_event_block), ACPI_FADT_OFFSET(pm1_event_length), ACPI_FADT_REQUIRED}, {"Pm1bEventBlock", ACPI_FADT_OFFSET(xpm1b_event_block), ACPI_FADT_OFFSET(pm1b_event_block), ACPI_FADT_OFFSET(pm1_event_length), ACPI_FADT_OPTIONAL}, {"Pm1aControlBlock", ACPI_FADT_OFFSET(xpm1a_control_block), ACPI_FADT_OFFSET(pm1a_control_block), ACPI_FADT_OFFSET(pm1_control_length), ACPI_FADT_REQUIRED}, {"Pm1bControlBlock", ACPI_FADT_OFFSET(xpm1b_control_block), ACPI_FADT_OFFSET(pm1b_control_block), ACPI_FADT_OFFSET(pm1_control_length), ACPI_FADT_OPTIONAL},