summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Schultz <d.schultz@phytec.de>2024-05-21 23:18:24 -0700
committerTom Rini <trini@konsulko.com>2024-06-07 14:01:53 -0600
commit2c3afb76d74f4218edcbc25b4f851d45ee0964c7 (patch)
tree33eae752e346c1e222a98c3acc195f0bf19218cc
parent38b96407f69469702b60a22aa847bf7675a1f9b7 (diff)
board: phytec: common: Move API v2 init to new function
Move the entire initialization code for API v2 into a dedicated function. This rework will allow to easily integrate the API v3 as next step during init. Signed-off-by: Daniel Schultz <d.schultz@phytec.de> Tested-by: Wadim Egorov <w.egorov@phytec.de>
-rw-r--r--board/phytec/common/phytec_som_detection.c38
1 files changed, 23 insertions, 15 deletions
diff --git a/board/phytec/common/phytec_som_detection.c b/board/phytec/common/phytec_som_detection.c
index f0e35d8d2ec..ab2d5a7b726 100644
--- a/board/phytec/common/phytec_som_detection.c
+++ b/board/phytec/common/phytec_som_detection.c
@@ -72,11 +72,29 @@ int phytec_eeprom_read(u8 *data, int bus_num, int addr, int size, int offset)
return ret;
}
+int phytec_eeprom_data_init_v2(struct phytec_eeprom_data *data)
+{
+ unsigned int crc;
+
+ if (!data)
+ return -1;
+
+ crc = crc8(0, (const unsigned char *)&data->payload, PHYTEC_API2_DATA_LEN);
+ debug("%s: crc: %x\n", __func__, crc);
+
+ if (crc) {
+ pr_err("%s: CRC mismatch. EEPROM data is not usable.\n",
+ __func__);
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
int phytec_eeprom_data_init(struct phytec_eeprom_data *data,
int bus_num, int addr)
{
int ret, i;
- unsigned int crc;
u8 *ptr;
if (!data)
@@ -104,20 +122,10 @@ int phytec_eeprom_data_init(struct phytec_eeprom_data *data,
goto err;
}
- /* We are done here for early revisions */
- if (data->payload.api_rev <= PHYTEC_API_REV1) {
- data->valid = true;
- return 0;
- }
-
- crc = crc8(0, (const unsigned char *)&data->payload, PHYTEC_API2_DATA_LEN);
- debug("%s: crc: %x\n", __func__, crc);
-
- if (crc) {
- pr_err("%s: CRC mismatch. EEPROM data is not usable.\n",
- __func__);
- ret = -EINVAL;
- goto err;
+ if (data->payload.api_rev >= PHYTEC_API_REV2) {
+ ret = phytec_eeprom_data_init_v2(data);
+ if (ret)
+ goto err;
}
data->valid = true;