compulab: eeprom: add support for obtaining product name
Introduce cl_eeprom_get_product_name() for obtaining product name from the eeprom. Cc: Stefano Babic <sbabic@denx.de> Cc: Igor Grinberg <grinberg@compulab.co.il> Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
This commit is contained in:
committed by
Stefano Babic
parent
e93e809f2f
commit
53af877fd2
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <i2c.h>
|
#include <i2c.h>
|
||||||
|
#include "eeprom.h"
|
||||||
|
|
||||||
#ifndef CONFIG_SYS_I2C_EEPROM_ADDR
|
#ifndef CONFIG_SYS_I2C_EEPROM_ADDR
|
||||||
# define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
|
# define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
|
||||||
@@ -25,6 +26,8 @@
|
|||||||
#define BOARD_REV_OFFSET 0
|
#define BOARD_REV_OFFSET 0
|
||||||
#define BOARD_REV_OFFSET_LEGACY 6
|
#define BOARD_REV_OFFSET_LEGACY 6
|
||||||
#define BOARD_REV_SIZE 2
|
#define BOARD_REV_SIZE 2
|
||||||
|
#define PRODUCT_NAME_OFFSET 128
|
||||||
|
#define PRODUCT_NAME_SIZE 16
|
||||||
#define MAC_ADDR_OFFSET 4
|
#define MAC_ADDR_OFFSET 4
|
||||||
#define MAC_ADDR_OFFSET_LEGACY 0
|
#define MAC_ADDR_OFFSET_LEGACY 0
|
||||||
|
|
||||||
@@ -151,3 +154,30 @@ u32 cl_eeprom_get_board_rev(uint eeprom_bus)
|
|||||||
|
|
||||||
return board_rev;
|
return board_rev;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Routine: cl_eeprom_get_board_rev
|
||||||
|
* Description: read system revision from eeprom
|
||||||
|
*
|
||||||
|
* @buf: buffer to store the product name
|
||||||
|
* @eeprom_bus: i2c bus num of the eeprom
|
||||||
|
*
|
||||||
|
* @return: 0 on success, < 0 on failure
|
||||||
|
*/
|
||||||
|
int cl_eeprom_get_product_name(uchar *buf, uint eeprom_bus)
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
|
if (buf == NULL)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
err = cl_eeprom_setup(eeprom_bus);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
|
err = cl_eeprom_read(PRODUCT_NAME_OFFSET, buf, PRODUCT_NAME_SIZE);
|
||||||
|
if (!err) /* Protect ourselves from invalid data (unterminated str) */
|
||||||
|
buf[PRODUCT_NAME_SIZE - 1] = '\0';
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|||||||
@@ -9,10 +9,12 @@
|
|||||||
|
|
||||||
#ifndef _EEPROM_
|
#ifndef _EEPROM_
|
||||||
#define _EEPROM_
|
#define _EEPROM_
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_I2C
|
#ifdef CONFIG_SYS_I2C
|
||||||
int cl_eeprom_read_mac_addr(uchar *buf, uint eeprom_bus);
|
int cl_eeprom_read_mac_addr(uchar *buf, uint eeprom_bus);
|
||||||
u32 cl_eeprom_get_board_rev(uint eeprom_bus);
|
u32 cl_eeprom_get_board_rev(uint eeprom_bus);
|
||||||
|
int cl_eeprom_get_product_name(uchar *buf, uint eeprom_bus);
|
||||||
#else
|
#else
|
||||||
static inline int cl_eeprom_read_mac_addr(uchar *buf, uint eeprom_bus)
|
static inline int cl_eeprom_read_mac_addr(uchar *buf, uint eeprom_bus)
|
||||||
{
|
{
|
||||||
@@ -22,6 +24,10 @@ static inline u32 cl_eeprom_get_board_rev(uint eeprom_bus)
|
|||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
static inline int cl_eeprom_get_product_name(uchar *buf, uint eeprom_bus)
|
||||||
|
{
|
||||||
|
return -ENOSYS;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user