mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
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:
parent
e93e809f2f
commit
53af877fd2
2 changed files with 36 additions and 0 deletions
|
@ -9,6 +9,7 @@
|
|||
|
||||
#include <common.h>
|
||||
#include <i2c.h>
|
||||
#include "eeprom.h"
|
||||
|
||||
#ifndef CONFIG_SYS_I2C_EEPROM_ADDR
|
||||
# define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
|
||||
|
@ -25,6 +26,8 @@
|
|||
#define BOARD_REV_OFFSET 0
|
||||
#define BOARD_REV_OFFSET_LEGACY 6
|
||||
#define BOARD_REV_SIZE 2
|
||||
#define PRODUCT_NAME_OFFSET 128
|
||||
#define PRODUCT_NAME_SIZE 16
|
||||
#define MAC_ADDR_OFFSET 4
|
||||
#define MAC_ADDR_OFFSET_LEGACY 0
|
||||
|
||||
|
@ -151,3 +154,30 @@ u32 cl_eeprom_get_board_rev(uint eeprom_bus)
|
|||
|
||||
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_
|
||||
#define _EEPROM_
|
||||
#include <errno.h>
|
||||
|
||||
#ifdef CONFIG_SYS_I2C
|
||||
int cl_eeprom_read_mac_addr(uchar *buf, uint eeprom_bus);
|
||||
u32 cl_eeprom_get_board_rev(uint eeprom_bus);
|
||||
int cl_eeprom_get_product_name(uchar *buf, uint eeprom_bus);
|
||||
#else
|
||||
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;
|
||||
}
|
||||
static inline int cl_eeprom_get_product_name(uchar *buf, uint eeprom_bus)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue