[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