[PATCH 3/4] board: phytec: phytec_som_detection: fix eeprom_data zero check

Teresa Remmet T.Remmet at phytec.de
Wed Dec 20 09:24:07 CET 2023


Hello Yannic,

Am Mittwoch, dem 20.12.2023 um 09:19 +0100 schrieb Yannic Moog:
> In phytec_eeprom_data_init, after reading eeprom data into buffer, it
> is
> checked whether all bytes are 0x0 by iterating over chunks of the
> buffer. The offset, or index of the chunk, was never changed, leading
> to
> repeated comparison of only the first chunk. Use array notation and
> access chunk via array index to compare all chunks of the buffer.

it seems that you have here accidentally two patches in one.
Please check.

Teresa

> 
> Signed-off-by: Yannic Moog <y.moog at phytec.de>
> ---
>  board/phytec/common/imx8m_som_detection.c  | 32
> ++++++++++++++++++++++
>  board/phytec/common/imx8m_som_detection.h  | 32 --------------------
> --
>  board/phytec/common/phytec_som_detection.c | 43
> ++++++++++++++++++++++++++++--
>  board/phytec/common/phytec_som_detection.h | 38 --------------------
> ------
>  4 files changed, 73 insertions(+), 72 deletions(-)
> 
> diff --git a/board/phytec/common/imx8m_som_detection.c
> b/board/phytec/common/imx8m_som_detection.c
> index a229eae152d..214b75db3b0 100644
> --- a/board/phytec/common/imx8m_som_detection.c
> +++ b/board/phytec/common/imx8m_som_detection.c
> @@ -15,6 +15,8 @@
>  
>  extern struct phytec_eeprom_data eeprom_data;
>  
> +#if IS_ENABLED(CONFIG_PHYTEC_IMX8M_SOM_DETECTION)
> +
>  /* Check if the SoM is actually one of the following products:
>   * - i.MX8MM
>   * - i.MX8MN
> @@ -166,3 +168,33 @@ u8 __maybe_unused phytec_get_imx8mp_rtc(struct
> phytec_eeprom_data *data)
>         debug("%s: rtc: %u\n", __func__, rtc);
>         return rtc;
>  }
> +
> +#else
> +
> +inline int __maybe_unused phytec_imx8m_detect(struct
> phytec_eeprom_data *data)
> +{
> +       return -1;
> +}
> +
> +inline u8 __maybe_unused
> +phytec_get_imx8m_ddr_size(struct phytec_eeprom_data *data)
> +{
> +       return PHYTEC_EEPROM_INVAL;
> +}
> +
> +inline u8 __maybe_unused phytec_get_imx8mp_rtc(struct
> phytec_eeprom_data *data)
> +{
> +       return PHYTEC_EEPROM_INVAL;
> +}
> +
> +inline u8 __maybe_unused phytec_get_imx8m_spi(struct
> phytec_eeprom_data *data)
> +{
> +       return PHYTEC_EEPROM_INVAL;
> +}
> +
> +inline u8 __maybe_unused phytec_get_imx8m_eth(struct
> phytec_eeprom_data *data)
> +{
> +       return PHYTEC_EEPROM_INVAL;
> +}
> +
> +#endif /* IS_ENABLED(CONFIG_PHYTEC_IMX8M_SOM_DETECTION) */
> diff --git a/board/phytec/common/imx8m_som_detection.h
> b/board/phytec/common/imx8m_som_detection.h
> index 442085cfe97..0176347414f 100644
> --- a/board/phytec/common/imx8m_som_detection.h
> +++ b/board/phytec/common/imx8m_som_detection.h
> @@ -13,42 +13,10 @@
>  #define PHYTEC_IMX8MM_SOM       69
>  #define PHYTEC_IMX8MP_SOM       70
>  
> -#if IS_ENABLED(CONFIG_PHYTEC_IMX8M_SOM_DETECTION)
> -
>  int __maybe_unused phytec_imx8m_detect(struct phytec_eeprom_data
> *data);
>  u8 __maybe_unused phytec_get_imx8m_ddr_size(struct
> phytec_eeprom_data *data);
>  u8 __maybe_unused phytec_get_imx8mp_rtc(struct phytec_eeprom_data
> *data);
>  u8 __maybe_unused phytec_get_imx8m_spi(struct phytec_eeprom_data
> *data);
>  u8 __maybe_unused phytec_get_imx8m_eth(struct phytec_eeprom_data
> *data);
>  
> -#else
> -
> -inline int __maybe_unused phytec_imx8m_detect(struct
> phytec_eeprom_data *data)
> -{
> -       return -1;
> -}
> -
> -inline u8 __maybe_unused
> -phytec_get_imx8m_ddr_size(struct phytec_eeprom_data *data)
> -{
> -       return PHYTEC_EEPROM_INVAL;
> -}
> -
> -inline u8 __maybe_unused phytec_get_imx8mp_rtc(struct
> phytec_eeprom_data *data)
> -{
> -       return PHYTEC_EEPROM_INVAL;
> -}
> -
> -inline u8 __maybe_unused phytec_get_imx8m_spi(struct
> phytec_eeprom_data *data)
> -{
> -       return PHYTEC_EEPROM_INVAL;
> -}
> -
> -inline u8 __maybe_unused phytec_get_imx8m_eth(struct
> phytec_eeprom_data *data)
> -{
> -       return PHYTEC_EEPROM_INVAL;
> -}
> -
> -#endif /* IS_ENABLED(CONFIG_PHYTEC_IMX8M_SOM_DETECTION) */
> -
>  #endif /* _PHYTEC_IMX8M_SOM_DETECTION_H */
> diff --git a/board/phytec/common/phytec_som_detection.c
> b/board/phytec/common/phytec_som_detection.c
> index 55562731270..f879702df45 100644
> --- a/board/phytec/common/phytec_som_detection.c
> +++ b/board/phytec/common/phytec_som_detection.c
> @@ -16,6 +16,8 @@
>  
>  struct phytec_eeprom_data eeprom_data;
>  
> +#if IS_ENABLED(CONFIG_PHYTEC_SOM_DETECTION)
> +
>  int phytec_eeprom_data_setup_fallback(struct phytec_eeprom_data
> *data,
>                                       int bus_num, int addr, int
> addr_fallback)
>  {
> @@ -83,8 +85,8 @@ int phytec_eeprom_data_init(struct
> phytec_eeprom_data *data,
>         }
>  
>         ptr = (int *)data;
> -       for (i = 0; i < sizeof(struct phytec_eeprom_data); i +=
> sizeof(ptr))
> -               if (*ptr != 0x0)
> +       for (i = 0; i < sizeof(struct phytec_eeprom_data); i++)
> +               if (ptr[i] != 0x0)
>                         break;
>  
>         if (i == sizeof(struct phytec_eeprom_data)) {
> @@ -201,3 +203,40 @@ u8 __maybe_unused phytec_get_rev(struct
> phytec_eeprom_data *data)
>  
>         return api2->pcb_rev;
>  }
> +
> +#else
> +
> +inline int phytec_eeprom_data_setup(struct phytec_eeprom_data *data,
> +                                   int bus_num, int addr)
> +{
> +       return PHYTEC_EEPROM_INVAL;
> +}
> +
> +inline int phytec_eeprom_data_setup_fallback(struct
> phytec_eeprom_data *data,
> +                                            int bus_num, int addr,
> +                                            int addr_fallback)
> +{
> +       return PHYTEC_EEPROM_INVAL;
> +}
> +
> +inline int phytec_eeprom_data_init(struct phytec_eeprom_data *data,
> +                                  int bus_num, int addr)
> +{
> +       return PHYTEC_EEPROM_INVAL;
> +}
> +
> +inline void __maybe_unused phytec_print_som_info(struct
> phytec_eeprom_data *data)
> +{
> +}
> +
> +inline char *__maybe_unused phytec_get_opt(struct phytec_eeprom_data
> *data)
> +{
> +       return NULL;
> +}
> +
> +u8 __maybe_unused phytec_get_rev(struct phytec_eeprom_data *data)
> +{
> +       return PHYTEC_EEPROM_INVAL;
> +}
> +
> +#endif /* IS_ENABLED(CONFIG_PHYTEC_SOM_DETECTION) */
> diff --git a/board/phytec/common/phytec_som_detection.h
> b/board/phytec/common/phytec_som_detection.h
> index c68e2302cc4..11009240875 100644
> --- a/board/phytec/common/phytec_som_detection.h
> +++ b/board/phytec/common/phytec_som_detection.h
> @@ -56,8 +56,6 @@ struct phytec_eeprom_data {
>         } data;
>  } __packed;
>  
> -#if IS_ENABLED(CONFIG_PHYTEC_SOM_DETECTION)
> -
>  int phytec_eeprom_data_setup_fallback(struct phytec_eeprom_data
> *data,
>                                       int bus_num, int addr,
>                                       int addr_fallback);
> @@ -70,40 +68,4 @@ void __maybe_unused phytec_print_som_info(struct
> phytec_eeprom_data *data);
>  char * __maybe_unused phytec_get_opt(struct phytec_eeprom_data
> *data);
>  u8 __maybe_unused phytec_get_rev(struct phytec_eeprom_data *data);
>  
> -#else
> -
> -inline int phytec_eeprom_data_setup(struct phytec_eeprom_data *data,
> -                                   int bus_num, int addr)
> -{
> -       return PHYTEC_EEPROM_INVAL;
> -}
> -
> -inline int phytec_eeprom_data_setup_fallback(struct
> phytec_eeprom_data *data,
> -                                            int bus_num, int addr,
> -                                            int addr_fallback)
> -{
> -       return PHYTEC_EEPROM_INVAL;
> -}
> -
> -inline int phytec_eeprom_data_init(struct phytec_eeprom_data *data,
> -                                  int bus_num, int addr)
> -{
> -       return PHYTEC_EEPROM_INVAL;
> -}
> -
> -inline void __maybe_unused phytec_print_som_info(struct
> phytec_eeprom_data *data)
> -{
> -}
> -
> -inline char *__maybe_unused phytec_get_opt(struct phytec_eeprom_data
> *data)
> -{
> -       return NULL;
> -}
> -
> -u8 __maybe_unused phytec_get_rev(struct phytec_eeprom_data *data)
> -{
> -       return PHYTEC_EEPROM_INVAL;
> -}
> -#endif /* IS_ENABLED(CONFIG_PHYTEC_SOM_DETECTION) */
> -
>  #endif /* _PHYTEC_SOM_DETECTION_H */
> 

-- 
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. 266500608, DE 149059855


More information about the U-Boot mailing list