util/ifdtool: Add Panther Lake platform support under IFDv2
BUG=b:347669091 TEST=Able to build ifdtool. Change-Id: Id261898932f11f4c9066453bce18fd889996e171 Signed-off-by: Subrata Banik <subratabanik@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/83141 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Kapil Porwal <kapilporwal@google.com> Reviewed-by: Eric Lai <ericllai@google.com>
This commit is contained in:
@@ -271,6 +271,8 @@ static enum ich_chipset ifd2_platform_to_chipset(const int pindex)
|
|||||||
return CHIPSET_500_600_SERIES_TIGER_ALDER_POINT;
|
return CHIPSET_500_600_SERIES_TIGER_ALDER_POINT;
|
||||||
case PLATFORM_MTL:
|
case PLATFORM_MTL:
|
||||||
return CHIPSET_800_SERIES_METEOR_LAKE;
|
return CHIPSET_800_SERIES_METEOR_LAKE;
|
||||||
|
case PLATFORM_PTL:
|
||||||
|
return CHIPSET_900_SERIES_PANTHER_LAKE;
|
||||||
case PLATFORM_ICL:
|
case PLATFORM_ICL:
|
||||||
return CHIPSET_400_SERIES_ICE_POINT;
|
return CHIPSET_400_SERIES_ICE_POINT;
|
||||||
case PLATFORM_LBG:
|
case PLATFORM_LBG:
|
||||||
@@ -306,6 +308,7 @@ static int is_platform_ifd_2(void)
|
|||||||
PLATFORM_SKLKBL,
|
PLATFORM_SKLKBL,
|
||||||
PLATFORM_IFD2,
|
PLATFORM_IFD2,
|
||||||
PLATFORM_MTL,
|
PLATFORM_MTL,
|
||||||
|
PLATFORM_PTL,
|
||||||
PLATFORM_WBG,
|
PLATFORM_WBG,
|
||||||
};
|
};
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
@@ -562,6 +565,7 @@ static void decode_spi_frequency(unsigned int freq)
|
|||||||
switch (chipset) {
|
switch (chipset) {
|
||||||
case CHIPSET_500_600_SERIES_TIGER_ALDER_POINT:
|
case CHIPSET_500_600_SERIES_TIGER_ALDER_POINT:
|
||||||
case CHIPSET_800_SERIES_METEOR_LAKE:
|
case CHIPSET_800_SERIES_METEOR_LAKE:
|
||||||
|
case CHIPSET_900_SERIES_PANTHER_LAKE:
|
||||||
_decode_spi_frequency_500_series(freq);
|
_decode_spi_frequency_500_series(freq);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -640,12 +644,17 @@ static void _decode_espi_frequency_800_series(unsigned int freq)
|
|||||||
|
|
||||||
static void decode_espi_frequency(unsigned int freq)
|
static void decode_espi_frequency(unsigned int freq)
|
||||||
{
|
{
|
||||||
if (chipset == CHIPSET_500_600_SERIES_TIGER_ALDER_POINT)
|
switch (chipset) {
|
||||||
|
case CHIPSET_500_600_SERIES_TIGER_ALDER_POINT:
|
||||||
_decode_espi_frequency_500_series(freq);
|
_decode_espi_frequency_500_series(freq);
|
||||||
else if (chipset == CHIPSET_800_SERIES_METEOR_LAKE)
|
break;
|
||||||
|
case CHIPSET_800_SERIES_METEOR_LAKE:
|
||||||
|
case CHIPSET_900_SERIES_PANTHER_LAKE:
|
||||||
_decode_espi_frequency_800_series(freq);
|
_decode_espi_frequency_800_series(freq);
|
||||||
else
|
break;
|
||||||
|
default:
|
||||||
_decode_espi_frequency(freq);
|
_decode_espi_frequency(freq);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void decode_component_density(unsigned int density)
|
static void decode_component_density(unsigned int density)
|
||||||
@@ -695,7 +704,7 @@ static int is_platform_with_pch(void)
|
|||||||
static int is_platform_with_100x_series_pch(void)
|
static int is_platform_with_100x_series_pch(void)
|
||||||
{
|
{
|
||||||
if (chipset >= CHIPSET_100_200_SERIES_SUNRISE_POINT &&
|
if (chipset >= CHIPSET_100_200_SERIES_SUNRISE_POINT &&
|
||||||
chipset <= CHIPSET_800_SERIES_METEOR_LAKE)
|
chipset <= CHIPSET_900_SERIES_PANTHER_LAKE)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -724,6 +733,8 @@ static void dump_fcba(const struct fcba *fcba, const struct fpsba *fpsba)
|
|||||||
freq = (fpsba->pchstrp[22] & 0x38) >> 3;
|
freq = (fpsba->pchstrp[22] & 0x38) >> 3;
|
||||||
else if (chipset == CHIPSET_800_SERIES_METEOR_LAKE)
|
else if (chipset == CHIPSET_800_SERIES_METEOR_LAKE)
|
||||||
freq = (fpsba->pchstrp[65] & 0x38) >> 3;
|
freq = (fpsba->pchstrp[65] & 0x38) >> 3;
|
||||||
|
else if (chipset == CHIPSET_900_SERIES_PANTHER_LAKE)
|
||||||
|
freq = (fpsba->pchstrp[119] & 0x38) >> 3;
|
||||||
else
|
else
|
||||||
freq = (fcba->flcomp >> 17) & 7;
|
freq = (fcba->flcomp >> 17) & 7;
|
||||||
decode_espi_frequency(freq);
|
decode_espi_frequency(freq);
|
||||||
@@ -1021,7 +1032,8 @@ static void dump_fd(char *image, int size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (chipset == CHIPSET_500_600_SERIES_TIGER_ALDER_POINT ||
|
if (chipset == CHIPSET_500_600_SERIES_TIGER_ALDER_POINT ||
|
||||||
chipset == CHIPSET_800_SERIES_METEOR_LAKE) {
|
chipset == CHIPSET_800_SERIES_METEOR_LAKE ||
|
||||||
|
chipset == CHIPSET_900_SERIES_PANTHER_LAKE) {
|
||||||
printf("FLMAP3: 0x%08x\n", fdb->flmap3);
|
printf("FLMAP3: 0x%08x\n", fdb->flmap3);
|
||||||
printf(" Minor Revision ID: 0x%04x\n", (fdb->flmap3 >> 14) & 0x7f);
|
printf(" Minor Revision ID: 0x%04x\n", (fdb->flmap3 >> 14) & 0x7f);
|
||||||
printf(" Major Revision ID: 0x%04x\n", (fdb->flmap3 >> 21) & 0x7ff);
|
printf(" Major Revision ID: 0x%04x\n", (fdb->flmap3 >> 21) & 0x7ff);
|
||||||
@@ -1379,6 +1391,7 @@ static bool platform_has_extended_regions(void)
|
|||||||
case PLATFORM_TGL:
|
case PLATFORM_TGL:
|
||||||
case PLATFORM_ADL:
|
case PLATFORM_ADL:
|
||||||
case PLATFORM_MTL:
|
case PLATFORM_MTL:
|
||||||
|
case PLATFORM_PTL:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@@ -1443,6 +1456,7 @@ static void lock_descriptor(const char *filename, char *image, int size)
|
|||||||
case PLATFORM_ADL:
|
case PLATFORM_ADL:
|
||||||
case PLATFORM_IFD2:
|
case PLATFORM_IFD2:
|
||||||
case PLATFORM_MTL:
|
case PLATFORM_MTL:
|
||||||
|
case PLATFORM_PTL:
|
||||||
/* CPU/BIOS can read descriptor and BIOS. */
|
/* CPU/BIOS can read descriptor and BIOS. */
|
||||||
fmba->flmstr1 |= (1 << REGION_DESC) << rd_shift;
|
fmba->flmstr1 |= (1 << REGION_DESC) << rd_shift;
|
||||||
fmba->flmstr1 |= (1 << REGION_BIOS) << rd_shift;
|
fmba->flmstr1 |= (1 << REGION_BIOS) << rd_shift;
|
||||||
@@ -1596,6 +1610,7 @@ static uint8_t get_cse_data_partition_offset(void)
|
|||||||
case PLATFORM_TGL:
|
case PLATFORM_TGL:
|
||||||
case PLATFORM_ADL:
|
case PLATFORM_ADL:
|
||||||
case PLATFORM_MTL:
|
case PLATFORM_MTL:
|
||||||
|
case PLATFORM_PTL:
|
||||||
data_offset = 0x18;
|
data_offset = 0x18;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -1624,6 +1639,9 @@ static uint32_t get_gpr0_offset(void)
|
|||||||
case PLATFORM_MTL:
|
case PLATFORM_MTL:
|
||||||
gpr0_offset = 0x40;
|
gpr0_offset = 0x40;
|
||||||
break;
|
break;
|
||||||
|
case PLATFORM_PTL:
|
||||||
|
gpr0_offset = 0x76;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2470,6 +2488,8 @@ int main(int argc, char *argv[])
|
|||||||
platform = PLATFORM_IFD2;
|
platform = PLATFORM_IFD2;
|
||||||
} else if (!strcmp(optarg, "mtl")) {
|
} else if (!strcmp(optarg, "mtl")) {
|
||||||
platform = PLATFORM_MTL;
|
platform = PLATFORM_MTL;
|
||||||
|
} else if (!strcmp(optarg, "ptl")) {
|
||||||
|
platform = PLATFORM_PTL;
|
||||||
} else if (!strcmp(optarg, "wbg")) {
|
} else if (!strcmp(optarg, "wbg")) {
|
||||||
platform = PLATFORM_WBG;
|
platform = PLATFORM_WBG;
|
||||||
} else {
|
} else {
|
||||||
|
@@ -39,6 +39,7 @@ enum ich_chipset {
|
|||||||
CHIPSET_500_600_SERIES_TIGER_ALDER_POINT, /* 11th-12th gen Core i/o (LP)
|
CHIPSET_500_600_SERIES_TIGER_ALDER_POINT, /* 11th-12th gen Core i/o (LP)
|
||||||
* variants onwards */
|
* variants onwards */
|
||||||
CHIPSET_800_SERIES_METEOR_LAKE, /* 14th gen Core i/o (LP) variants onwards */
|
CHIPSET_800_SERIES_METEOR_LAKE, /* 14th gen Core i/o (LP) variants onwards */
|
||||||
|
CHIPSET_900_SERIES_PANTHER_LAKE, /* 16th gen Core i/o (LP) variants onwards */
|
||||||
CHIPSET_C620_SERIES_LEWISBURG,
|
CHIPSET_C620_SERIES_LEWISBURG,
|
||||||
CHIPSET_DENVERTON,
|
CHIPSET_DENVERTON,
|
||||||
};
|
};
|
||||||
@@ -57,6 +58,7 @@ enum platform {
|
|||||||
PLATFORM_IFD2,
|
PLATFORM_IFD2,
|
||||||
PLATFORM_DNV,
|
PLATFORM_DNV,
|
||||||
PLATFORM_MTL,
|
PLATFORM_MTL,
|
||||||
|
PLATFORM_PTL,
|
||||||
PLATFORM_WBG
|
PLATFORM_WBG
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user