Merge patch series "board: phytec: phytec_som_detection: Add missing assignment"
This series from Daniel Schultz <d.schultz@phytec.de> lays the groundwork for the phyFLEX SOMs from phytec. Link: https://lore.kernel.org/r/20251124082506.3376876-1-d.schultz@phytec.de
This commit is contained in:
@@ -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,18 +352,39 @@ 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;
|
||||
}
|
||||
if (api2->som_type <= 3) {
|
||||
snprintf(part, PHYTEC_PART_NUMBER_MAX_LEN + 1, "%s.%s",
|
||||
product_name, api2->bom_rev);
|
||||
len = snprintf(part, PHYTEC_PART_NUMBER_MAX_LEN + 1, "%s.%s",
|
||||
product_name, api2->bom_rev);
|
||||
if (len != PHYTEC_PART_NUMBER_KSP_LEN)
|
||||
return -EINVAL;
|
||||
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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user