[Upstream] [PATCH 2/2] board: phytec: phytec_som_detection: Add support for phyFLEX

Teresa Remmet t.remmet at phytec.de
Tue Nov 11 10:56:31 CET 2025


Hello Daniel,

Am Montag, dem 10.11.2025 um 05:52 -0800 schrieb Daniel Schultz:
> phyFLEX are SoMs based on the FPSC standard.
> 
> Add addition "SOM types" for the phyFLEX modules base on the
> FPSC Gamma specifiction. These modules come in four differnt

here are typos in the commit message
s/specifiction/specification and s/differnt/different

besides that it looks good.

Reviewed-by: Teresa Remmet <t.remmet at phytec.de>


> variants; prototypes (PT), standard product (SP), KSP (KP) and
> KSM (KM).
> 
> Signed-off-by: Daniel Schultz <d.schultz at phytec.de>
> ---
>  board/phytec/common/phytec_som_detection.c | 38
> ++++++++++++++++++++--
>  board/phytec/common/phytec_som_detection.h |  8 +++--
>  2 files changed, 41 insertions(+), 5 deletions(-)
> 
> diff --git a/board/phytec/common/phytec_som_detection.c
> b/board/phytec/common/phytec_som_detection.c
> index ff1711c24b4..0e30ed9b1bb 100644
> --- a/board/phytec/common/phytec_som_detection.c
> +++ b/board/phytec/common/phytec_som_detection.c
> @@ -308,14 +308,24 @@ static int phytec_get_product_name(struct
> phytec_eeprom_data *data,
>         case 7:
>                 som_type = 1;
>                 break;
> +       case 8:
> +       case 9:
> +       case 10:
> +       case 11:
> +               som_type = SOM_TYPE_PFL_G;
> +               break;
>         default:
>                 pr_err("%s: Invalid SOM type: %i\n", __func__, api2-
> >som_type);
>                 return -EINVAL;
>         };
>  
> -       len = snprintf(product, PHYTEC_PRODUCT_NAME_MAX_LEN + 1, "%s-
> %03u",
> +       const char *fmt = (som_type == SOM_TYPE_PFL_G) ? "%s-%02u" :
> "%s-%03u";
> +
> +       len = snprintf(product, PHYTEC_PRODUCT_NAME_MAX_LEN + 1, fmt,
>                        phytec_som_type_str[som_type], api2->som_no);
> -       if (len != PHYTEC_PRODUCT_NAME_STD_LEN)
> +       if (som_type != SOM_TYPE_PFL_G && len !=
> PHYTEC_PRODUCT_NAME_PCX_LEN)
> +               return -EINVAL;
> +       if (som_type == SOM_TYPE_PFL_G && len !=
> PHYTEC_PRODUCT_NAME_PFL_LEN)
>                 return -EINVAL;
>         return 0;
>  }
> @@ -327,6 +337,7 @@ static int phytec_get_part_number(struct
> phytec_eeprom_data *data,
>         struct phytec_api2_data *api2;
>         unsigned int ksp_type;
>         int res, len;
> +       char *variant = "SP";
>  
>         if (!data->valid || data->payload.api_rev < PHYTEC_API_REV2)
>                 return -EINVAL;
> @@ -341,7 +352,7 @@ static int phytec_get_part_number(struct
> phytec_eeprom_data *data,
>                 len = snprintf(part, PHYTEC_PART_NUMBER_MAX_LEN + 1,
>                                "%s-%s.%s", product_name, api2->opt,
>                                api2->bom_rev);
> -               if (len < PHYTEC_PART_NUMBER_STD_LEN)
> +               if (len < PHYTEC_PART_NUMBER_PCX_LEN)
>                         return -EINVAL;
>                 return 0;
>         }
> @@ -353,6 +364,27 @@ static int phytec_get_part_number(struct
> phytec_eeprom_data *data,
>                 return 0;
>         }
>  
> +       if (api2->som_type >= 8 && api2->som_type <= 11) {
> +               switch (api2->som_type) {
> +               case 8:
> +                       variant = "PT";
> +                       break;
> +               case 10:
> +                       variant = "KP";
> +                       break;
> +               case 11:
> +                       variant = "KM";
> +                       break;
> +               }
> +
> +               len = snprintf(part, PHYTEC_PART_NUMBER_MAX_LEN + 1,
> +                              "%s-%s%03u.%s", product_name, variant,
> +                              api2->ksp_no, api2->bom_rev);
> +               if (len != PHYTEC_PART_NUMBER_PFL_LEN)
> +                       return -EINVAL;
> +               return 0;
> +       }
> +
>         switch (api2->som_type) {
>         case 4:
>                 ksp_type = 3;
> diff --git a/board/phytec/common/phytec_som_detection.h
> b/board/phytec/common/phytec_som_detection.h
> index 187424a2b44..fdfd3c969ff 100644
> --- a/board/phytec/common/phytec_som_detection.h
> +++ b/board/phytec/common/phytec_som_detection.h
> @@ -18,10 +18,12 @@
>  #define PHYTEC_GET_OPTION(option) \
>         (((option) > '9') ? (option) - 'A' + 10 : (option) - '0')
>  
> -#define PHYTEC_PRODUCT_NAME_STD_LEN    7       // PCx-000
> +#define PHYTEC_PRODUCT_NAME_PCX_LEN    7       // PCx-000
> +#define PHYTEC_PRODUCT_NAME_PFL_LEN    8       // PFL-x-00
>  #define PHYTEC_PRODUCT_NAME_KSP_LEN    8       // KSP-0000
>  #define PHYTEC_PRODUCT_NAME_MAX_LEN    PHYTEC_PRODUCT_NAME_KSP_LEN
> -#define PHYTEC_PART_NUMBER_STD_LEN     11      // PCx-000-
> \w{1,17}.Ax
> +#define PHYTEC_PART_NUMBER_PCX_LEN     11      // PCx-000-
> \w{1,17}.Ax
> +#define PHYTEC_PART_NUMBER_PFL_LEN     17      // PFL-x-00-xx000.Ax
>  #define PHYTEC_PART_NUMBER_KSP_LEN     11      // KSP-0000.Ax
>  #define PHYTEC_PART_NUMBER_STD_KSP_LEN 16      // PCx-000-KSx00.Ax
>  #define PHYTEC_PART_NUMBER_MAX_LEN     PHYTEC_PRODUCT_NAME_MAX_LEN +
> 21
> @@ -38,6 +40,7 @@ enum phytec_som_type_str {
>         SOM_TYPE_PCL,
>         SOM_TYPE_KSM,
>         SOM_TYPE_KSP,
> +       SOM_TYPE_PFL_G,
>  };
>  
>  static const char * const phytec_som_type_str[] = {
> @@ -45,6 +48,7 @@ static const char * const phytec_som_type_str[] = {
>         "PCL",
>         "KSM",
>         "KSP",
> +       "PFL-G",
>  };
>  
>  struct phytec_api0_data {

-- 
PHYTEC Messtechnik GmbH | Barcelona-Allee 1 | 55129 Mainz, Germany

Geschäftsführer: Dipl.-Ing. Michael Mitezki, Dipl.-Ing. Bodo Huber,
Dipl.-Ing. (FH) Markus Lickes | Handelsregister Mainz HRB 4656 |
Finanzamt Mainz | St.Nr. 26/665/00608, DE 149059855


More information about the U-Boot mailing list