mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-06-19 21:21:25 +00:00
cmd: eeprom: Add StarFive VisionFive 2 board support
Rename CONFIG_SYS_DEF_EEPROM_ADDR to CONFIG_SYS_I2C_EEPROM_ADDR based on current usage. Convert CONFIG_SYS_I2C_EEPROM_BUS, CONFIG_SYS_I2C_EEPROM_ADDR_LEN, CONFIG_SYS_EEPROM_SIZE, CONFIG_SYS_EEPROM_PAGE_WRITE_BITS and CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS to Kconfig. Signed-off-by: Jianlong Huang <jianlong.huang@starfivetech.com> Signed-off-by: Hal Feng <hal.feng@starfivetech.com>
This commit is contained in:
parent
295685561e
commit
77a08d507b
3 changed files with 44 additions and 28 deletions
31
cmd/Kconfig
31
cmd/Kconfig
|
@ -614,6 +614,37 @@ config EEPROM_LAYOUT_HELP_STRING
|
||||||
Help printed with the LAYOUT VERSIONS part of the 'eeprom'
|
Help printed with the LAYOUT VERSIONS part of the 'eeprom'
|
||||||
command's help.
|
command's help.
|
||||||
|
|
||||||
|
config SYS_I2C_EEPROM_BUS
|
||||||
|
int "I2C bus of the EEPROM device."
|
||||||
|
depends on CMD_EEPROM
|
||||||
|
default 0
|
||||||
|
|
||||||
|
config SYS_I2C_EEPROM_ADDR_LEN
|
||||||
|
int "Length in bytes of the EEPROM memory array address"
|
||||||
|
depends on CMD_EEPROM || ID_EEPROM
|
||||||
|
default 1
|
||||||
|
range 1 2
|
||||||
|
help
|
||||||
|
Note: This is NOT the chip address length!
|
||||||
|
|
||||||
|
config SYS_EEPROM_SIZE
|
||||||
|
depends on CMD_EEPROM
|
||||||
|
int "Size in bytes of the EEPROM device"
|
||||||
|
default 256
|
||||||
|
|
||||||
|
config SYS_EEPROM_PAGE_WRITE_BITS
|
||||||
|
int "Number of bits used to address bytes in a single page"
|
||||||
|
depends on CMD_EEPROM
|
||||||
|
default 8
|
||||||
|
help
|
||||||
|
The EEPROM page size is 2^SYS_EEPROM_PAGE_WRITE_BITS.
|
||||||
|
A 64 byte page, for example would require six bits.
|
||||||
|
|
||||||
|
config SYS_EEPROM_PAGE_WRITE_DELAY_MS
|
||||||
|
int "Number of milliseconds to delay between page writes"
|
||||||
|
depends on CMD_EEPROM || CMD_I2C
|
||||||
|
default 0
|
||||||
|
|
||||||
config LOOPW
|
config LOOPW
|
||||||
bool "loopw"
|
bool "loopw"
|
||||||
help
|
help
|
||||||
|
|
39
cmd/eeprom.c
39
cmd/eeprom.c
|
@ -15,7 +15,7 @@
|
||||||
* degradation (typical for EEPROM) is incured for FRAM memory:
|
* degradation (typical for EEPROM) is incured for FRAM memory:
|
||||||
*
|
*
|
||||||
* #define CONFIG_SYS_I2C_FRAM
|
* #define CONFIG_SYS_I2C_FRAM
|
||||||
* #undef CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS
|
* Set CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS to 0
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -31,14 +31,6 @@
|
||||||
#define CONFIG_SYS_I2C_SPEED 50000
|
#define CONFIG_SYS_I2C_SPEED 50000
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS
|
|
||||||
#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef CONFIG_SYS_EEPROM_PAGE_WRITE_BITS
|
|
||||||
#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 8
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef I2C_RXTX_LEN
|
#ifndef I2C_RXTX_LEN
|
||||||
#define I2C_RXTX_LEN 128
|
#define I2C_RXTX_LEN 128
|
||||||
#endif
|
#endif
|
||||||
|
@ -46,21 +38,6 @@
|
||||||
#define EEPROM_PAGE_SIZE (1 << CONFIG_SYS_EEPROM_PAGE_WRITE_BITS)
|
#define EEPROM_PAGE_SIZE (1 << CONFIG_SYS_EEPROM_PAGE_WRITE_BITS)
|
||||||
#define EEPROM_PAGE_OFFSET(x) ((x) & (EEPROM_PAGE_SIZE - 1))
|
#define EEPROM_PAGE_OFFSET(x) ((x) & (EEPROM_PAGE_SIZE - 1))
|
||||||
|
|
||||||
/*
|
|
||||||
* for CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 2 (16-bit EEPROM address) offset is
|
|
||||||
* 0x000nxxxx for EEPROM address selectors at n, offset xxxx in EEPROM.
|
|
||||||
*
|
|
||||||
* for CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 1 (8-bit EEPROM page address) offset is
|
|
||||||
* 0x00000nxx for EEPROM address selectors and page number at n.
|
|
||||||
*/
|
|
||||||
#if !defined(CONFIG_SPI) || defined(CONFIG_ENV_EEPROM_IS_ON_I2C)
|
|
||||||
#if !defined(CONFIG_SYS_I2C_EEPROM_ADDR_LEN) || \
|
|
||||||
(CONFIG_SYS_I2C_EEPROM_ADDR_LEN < 1) || \
|
|
||||||
(CONFIG_SYS_I2C_EEPROM_ADDR_LEN > 2)
|
|
||||||
#error CONFIG_SYS_I2C_EEPROM_ADDR_LEN must be 1 or 2
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if CONFIG_IS_ENABLED(DM_I2C)
|
#if CONFIG_IS_ENABLED(DM_I2C)
|
||||||
static int eeprom_i2c_bus;
|
static int eeprom_i2c_bus;
|
||||||
#endif
|
#endif
|
||||||
|
@ -82,6 +59,13 @@ void eeprom_init(int bus)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* for CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 2 (16-bit EEPROM address) offset is
|
||||||
|
* 0x000nxxxx for EEPROM address selectors at n, offset xxxx in EEPROM.
|
||||||
|
*
|
||||||
|
* for CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 1 (8-bit EEPROM page address) offset is
|
||||||
|
* 0x00000nxx for EEPROM address selectors and page number at n.
|
||||||
|
*/
|
||||||
static int eeprom_addr(unsigned dev_addr, unsigned offset, uchar *addr)
|
static int eeprom_addr(unsigned dev_addr, unsigned offset, uchar *addr)
|
||||||
{
|
{
|
||||||
unsigned blk_off;
|
unsigned blk_off;
|
||||||
|
@ -183,10 +167,11 @@ static int eeprom_rw(unsigned dev_addr, unsigned offset, uchar *buffer,
|
||||||
buffer += len;
|
buffer += len;
|
||||||
offset += len;
|
offset += len;
|
||||||
|
|
||||||
|
#if CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS > 0
|
||||||
if (!read)
|
if (!read)
|
||||||
udelay(CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS * 1000);
|
udelay(CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS * 1000);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return rcode;
|
return rcode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -243,10 +228,10 @@ static int parse_i2c_bus_addr(int *i2c_bus, ulong *i2c_addr, int argc,
|
||||||
int argc_no_bus = argc_no_bus_addr + 1;
|
int argc_no_bus = argc_no_bus_addr + 1;
|
||||||
int argc_bus_addr = argc_no_bus_addr + 2;
|
int argc_bus_addr = argc_no_bus_addr + 2;
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_DEF_EEPROM_ADDR
|
#ifdef CONFIG_SYS_I2C_EEPROM_ADDR
|
||||||
if (argc == argc_no_bus_addr) {
|
if (argc == argc_no_bus_addr) {
|
||||||
*i2c_bus = -1;
|
*i2c_bus = -1;
|
||||||
*i2c_addr = CONFIG_SYS_DEF_EEPROM_ADDR;
|
*i2c_addr = CONFIG_SYS_I2C_EEPROM_ADDR;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -922,7 +922,7 @@ static int mod_i2c_mem(struct cmd_tbl *cmdtp, int incrflag, int flag, int argc,
|
||||||
if (ret)
|
if (ret)
|
||||||
return i2c_report_err(ret,
|
return i2c_report_err(ret,
|
||||||
I2C_ERR_WRITE);
|
I2C_ERR_WRITE);
|
||||||
#ifdef CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS
|
#if CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS > 0
|
||||||
udelay(CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS * 1000);
|
udelay(CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS * 1000);
|
||||||
#endif
|
#endif
|
||||||
if (incrflag)
|
if (incrflag)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue