]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
board: ge: common: vpd: separate I2C specific code
authorSebastian Reichel <sebastian.reichel@collabora.com>
Wed, 2 Sep 2020 17:31:45 +0000 (19:31 +0200)
committerStefano Babic <sbabic@denx.de>
Sun, 1 Nov 2020 14:58:47 +0000 (15:58 +0100)
This separates the I2C specific code from the generic
GE vital product data code, so that the generic parts
can be used on hardware with VPD stored in SPI flash
memory.

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
board/ge/bx50v3/bx50v3.c
board/ge/common/vpd_reader.c
board/ge/common/vpd_reader.h
board/ge/mx53ppd/mx53ppd.c

index c6b0af8c776abba4841dd2c37396bc922890e3c6..8a38ac5d4e4c7cfe7dff3169107f71f900850a31 100644 (file)
@@ -429,7 +429,7 @@ static void set_confidx(const struct vpd_cache* vpd)
 
 int board_init(void)
 {
-       if (!read_vpd(&vpd, vpd_callback)) {
+       if (!read_i2c_vpd(&vpd, vpd_callback)) {
                int ret, rescan;
 
                vpd.is_read = true;
index d42b00da2fe6c72a08a674f83b08dc921e35556c..421fee592291d16cf4e8c8a2e0b4141855cf01b0 100644 (file)
@@ -110,9 +110,9 @@ static const size_t HEADER_BLOCK_ECC_LEN = 4;
 
 static const u8 ECC_BLOCK_ID = 0xFF;
 
-static int vpd_reader(size_t size, u8 *data, struct vpd_cache *userdata,
-                     int (*fn)(struct vpd_cache *, u8 id, u8 version, u8 type,
-                               size_t size, u8 const *data))
+int vpd_reader(size_t size, u8 *data, struct vpd_cache *userdata,
+              int (*fn)(struct vpd_cache *, u8 id, u8 version, u8 type,
+                        size_t size, u8 const *data))
 {
        if (size < HEADER_BLOCK_LEN || !data || !fn)
                return -EINVAL;
@@ -200,9 +200,9 @@ static int vpd_reader(size_t size, u8 *data, struct vpd_cache *userdata,
        }
 }
 
-int read_vpd(struct vpd_cache *cache,
-            int (*process_block)(struct vpd_cache *, u8 id, u8 version,
-                                 u8 type, size_t size, u8 const *data))
+int read_i2c_vpd(struct vpd_cache *cache,
+                int (*process_block)(struct vpd_cache *, u8 id, u8 version,
+                                     u8 type, size_t size, u8 const *data))
 {
        struct udevice *dev;
        int ret;
index 3045b7e21e22f2c0080fb3c4b0d290de53ca0aed..0c51dc57e90251d802989ca9495386492623deb0 100644 (file)
@@ -16,7 +16,22 @@ struct vpd_cache;
  *
  * Returns Non-zero on error.  Negative numbers encode errno.
  */
-int read_vpd(struct vpd_cache *cache,
-            int (*process_block)(struct vpd_cache *,
-                                 u8 id, u8 version, u8 type,
-                                 size_t size, u8 const *data));
+int read_i2c_vpd(struct vpd_cache *cache,
+                int (*process_block)(struct vpd_cache *, u8 id, u8 version,
+                                     u8 type, size_t size, u8 const *data));
+
+/*
+ * Read VPD from given data, verify content, call callback for each vital
+ * product data block.
+ *
+ * size: size of the raw VPD data in bytes
+ * data: raw VPD data read from device
+ * cache: structure used by process block to store VPD information
+ * process_block: callback called for each VPD data block
+ *
+ * Returns Non-zero on error.  Negative numbers encode errno.
+ */
+
+int vpd_reader(size_t size, u8 *data, struct vpd_cache *cache,
+              int (*process_block)(struct vpd_cache *, u8 id, u8 version, u8 type,
+                                   size_t size, u8 const *data));
index 2e9d389850a2b692f226b2fe48b82ae5ca81496b..ef689733c41d75082e0c10c7692ee8bbad64b5d9 100644 (file)
@@ -225,7 +225,7 @@ int board_late_init(void)
        struct vpd_cache vpd;
 
        memset(&vpd, 0, sizeof(vpd));
-       res = read_vpd(&vpd, vpd_callback);
+       res = read_i2c_vpd(&vpd, vpd_callback);
        if (!res)
                process_vpd(&vpd);
        else