[Skiboot] [PATCH v2 1/2] xscom: Move p9 ec level parsing to a function
Nicholas Piggin
npiggin at gmail.com
Fri May 20 10:08:52 AEST 2022
Excerpts from Joel Stanley's message of May 17, 2022 6:46 pm:
> In preparation for adding p10 logic. No functional change.
>
Reviewed-by: Nicholas Piggin <npiggin at gmail.com>
> Reviewed-by: Dan Horák <dan at danny.cz>
> Signed-off-by: Joel Stanley <joel at jms.id.au>
> ---
> hw/xscom.c | 74 ++++++++++++++++++++++++++++++++----------------------
> 1 file changed, 44 insertions(+), 30 deletions(-)
>
> diff --git a/hw/xscom.c b/hw/xscom.c
> index 530ac955b667..862bd36ab75d 100644
> --- a/hw/xscom.c
> +++ b/hw/xscom.c
> @@ -841,6 +841,48 @@ int64_t xscom_read_cfam_chipid(uint32_t partid, uint32_t *chip_id)
> return rc;
> }
>
> +static uint8_t xscom_get_ec_rev(struct proc_chip *chip)
> +{
> + uint64_t ecid2 = 0;
> + uint8_t rev;
> +
> + if (chip_quirk(QUIRK_MAMBO_CALLOUTS))
> + return 0;
> +
> + switch (proc_gen) {
> + case proc_gen_p9:
> + break;
> + default:
> + return 0;
> + }
> +
> + xscom_read(chip->id, 0x18002, &ecid2);
> + switch((ecid2 >> 45) & 7) {
> + case 0:
> + rev = 0;
> + break;
> + case 1:
> + rev = 1;
> + break;
> + case 3:
> + rev = 2;
> + break;
> + case 7:
> + rev = 3;
> + break;
> + default:
> + rev = 0;
> + }
> +
> + prlog(PR_INFO,"P%d DD%i.%i%d detected\n",
> + 9,
> + 0xf & (chip->ec_level >> 4),
> + chip->ec_level & 0xf,
> + rev);
> +
> + return rev;
> +}
> +
> static void xscom_init_chip_info(struct proc_chip *chip)
> {
> uint32_t val;
> @@ -892,36 +934,8 @@ static void xscom_init_chip_info(struct proc_chip *chip)
> chip->ec_level = ((val >> 16) & 0xf) << 4;
> chip->ec_level |= (val >> 8) & 0xf;
>
> - /*
> - * On P9, grab the ECID bits to differenciate
> - * DD1.01, 1.02, 2.00, etc...
> - */
> - if (chip_quirk(QUIRK_MAMBO_CALLOUTS)) {
> - chip->ec_rev = 0;
> - } else if (proc_gen == proc_gen_p9) {
> - uint64_t ecid2 = 0;
> - uint8_t rev;
> - xscom_read(chip->id, 0x18002, &ecid2);
> - switch((ecid2 >> 45) & 7) {
> - case 0:
> - rev = 0;
> - break;
> - case 1:
> - rev = 1;
> - break;
> - case 3:
> - rev = 2;
> - break;
> - case 7:
> - rev = 3;
> - break;
> - default:
> - rev = 0;
> - }
> - prlog(PR_INFO,"P9 DD%i.%i%d detected\n", 0xf & (chip->ec_level >> 4),
> - chip->ec_level & 0xf, rev);
> - chip->ec_rev = rev;
> - } /* XXX P10 */
> + /* Grab the ECID bits to differentiate DD1.01, 1.02, 2.00, etc... */
> + chip->ec_rev = xscom_get_ec_rev(chip);
> }
>
> /*
> --
> 2.35.1
>
> _______________________________________________
> Skiboot mailing list
> Skiboot at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/skiboot
>
More information about the Skiboot
mailing list