if (!DATA_TABLES(ASIC_InternalSS_Info))
                return BP_RESULT_UNSUPPORTED;
 
-       ss_table_header_include = GET_IMAGE(ATOM_ASIC_INTERNAL_SS_INFO_V3,
-               DATA_TABLES(ASIC_InternalSS_Info));
+       ss_table_header_include = ((ATOM_ASIC_INTERNAL_SS_INFO_V3 *) bios_get_image(&bp->base,
+                               DATA_TABLES(ASIC_InternalSS_Info),
+                               struct_size(ss_table_header_include, asSpreadSpectrum, 1)));
        table_size =
                (le16_to_cpu(ss_table_header_include->sHeader.usStructureSize)
                                - sizeof(ATOM_COMMON_TABLE_HEADER))
        if (!DATA_TABLES(ASIC_InternalSS_Info))
                return result;
 
-       header = GET_IMAGE(ATOM_ASIC_INTERNAL_SS_INFO_V2,
-               DATA_TABLES(ASIC_InternalSS_Info));
+       header = ((ATOM_ASIC_INTERNAL_SS_INFO_V2 *) bios_get_image(
+                               &bp->base,
+                               DATA_TABLES(ASIC_InternalSS_Info),
+                               struct_size(header, asSpreadSpectrum, 1)));
 
        memset(info, 0, sizeof(struct spread_spectrum_info));
 
        if (!DATA_TABLES(ASIC_InternalSS_Info))
                return 0;
 
-       header_include = GET_IMAGE(ATOM_ASIC_INTERNAL_SS_INFO_V2,
-                       DATA_TABLES(ASIC_InternalSS_Info));
+       header_include = ((ATOM_ASIC_INTERNAL_SS_INFO_V2 *) bios_get_image(
+                               &bp->base,
+                               DATA_TABLES(ASIC_InternalSS_Info),
+                               struct_size(header_include, asSpreadSpectrum, 1)));
 
        size = (le16_to_cpu(header_include->sHeader.usStructureSize)
                        - sizeof(ATOM_COMMON_TABLE_HEADER))
        if (!DATA_TABLES(ASIC_InternalSS_Info))
                return number;
 
-       header_include = GET_IMAGE(ATOM_ASIC_INTERNAL_SS_INFO_V3,
-                       DATA_TABLES(ASIC_InternalSS_Info));
+       header_include = ((ATOM_ASIC_INTERNAL_SS_INFO_V3 *) bios_get_image(&bp->base,
+                               DATA_TABLES(ASIC_InternalSS_Info),
+                               struct_size(header_include, asSpreadSpectrum, 1)));
        size = (le16_to_cpu(header_include->sHeader.usStructureSize) -
                        sizeof(ATOM_COMMON_TABLE_HEADER)) /
                                        sizeof(ATOM_ASIC_SS_ASSIGNMENT_V3);
 
    UCHAR  ucVoltageControlOffset;
    UCHAR  ucVoltageControlFlag;              // Bit0: 0 - One byte data; 1 - Two byte data
    UCHAR  ulReserved[3];
-   VOLTAGE_LUT_ENTRY asVolI2cLut[1];         // end with 0xff
+   VOLTAGE_LUT_ENTRY asVolI2cLut[];         // end with 0xff
 }ATOM_I2C_VOLTAGE_OBJECT_V3;
 
 // ATOM_I2C_VOLTAGE_OBJECT_V3.ucVoltageControlFlag
 typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V2
 {
   ATOM_COMMON_TABLE_HEADER         sHeader;
-  ATOM_ASIC_SS_ASSIGNMENT_V2        asSpreadSpectrum[1];      //this is point only.
+  ATOM_ASIC_SS_ASSIGNMENT_V2        asSpreadSpectrum[];      //this is point only.
 }ATOM_ASIC_INTERNAL_SS_INFO_V2;
 
 typedef struct _ATOM_ASIC_SS_ASSIGNMENT_V3
 typedef struct _ATOM_ASIC_INTERNAL_SS_INFO_V3
 {
   ATOM_COMMON_TABLE_HEADER         sHeader;
-  ATOM_ASIC_SS_ASSIGNMENT_V3        asSpreadSpectrum[1];      //this is pointer only.
+  ATOM_ASIC_SS_ASSIGNMENT_V3        asSpreadSpectrum[];      //this is pointer only.
 }ATOM_ASIC_INTERNAL_SS_INFO_V3;