[U-Boot-Users] [PATCH] I2C EEPROM simulator (Resubmit) (Lindent)

Grant Likely grant.likely at secretlab.ca
Mon Jul 28 18:55:01 CEST 2008


On Mon, Jul 28, 2008 at 12:06:21PM +0200, Ricardo Ribalda Delgado wrote:
> This driver provides access to a simulated i2c eeprom.
> This simulated eeprom could be very useful in boards with
> ddr2 memories and no i2c interfaces.
> 
> Using this driver the user can simulate a spd eeprom
> of a ddr2 memory and use the ddr2 auto config.
> 
> User can use the macros CONFIG_EEPROM_SIMUL_LEN
> and CONFIG_EEPROM_SIMUL_DATA to define the content
> of the simulated eeprom

I know I'm coming in quite late to this discussion, but I really don't
like this approach.  I don't like that non-human readable, pre-encoded
data is getting linked into the u-boot build so that the ddr2 driver can
be used for static DDR configuration without change the ddr2 driver.

I'd much rather see the ddr2 driver refactored to separate the i2c
reading and decoding from the configuration of the DDR controller (which
may already be the case, I don't know).  Then I'd like to see the DDR
controller export an API to allow it to be configured from code or from
a static structure.  I think that would be a far cleaner way to
accomplish what you are trying to do.

g.


> 
> Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda at uam.es>
> ---
> -Lident run over the source to solve coding style issues remarked by Michal Simek
> 
>  drivers/i2c/Makefile       |    1 +
>  drivers/i2c/eeprom_simul.c |   69 ++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 70 insertions(+), 0 deletions(-)
>  create mode 100644 drivers/i2c/eeprom_simul.c
> 
> diff --git a/drivers/i2c/Makefile b/drivers/i2c/Makefile
> index 534c015..2aeabe5 100644
> --- a/drivers/i2c/Makefile
> +++ b/drivers/i2c/Makefile
> @@ -30,6 +30,7 @@ COBJS-y += omap1510_i2c.o
>  COBJS-y += omap24xx_i2c.o
>  COBJS-y += tsi108_i2c.o
>  COBJS-y += mxc_i2c.o
> +COBJS-$(CONFIG_EEPROM_SIMUL) += eeprom_simul.o
>  
>  COBJS	:= $(COBJS-y)
>  SRCS	:= $(COBJS:.o=.c)
> diff --git a/drivers/i2c/eeprom_simul.c b/drivers/i2c/eeprom_simul.c
> new file mode 100644
> index 0000000..51794fa
> --- /dev/null
> +++ b/drivers/i2c/eeprom_simul.c
> @@ -0,0 +1,69 @@
> +/*
> +    (C) Copyright 2008
> +    Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda at uam.es
> +    This work has been supported by: QTechnology  http://qtec.com/
> +
> +    This program is free software: you can redistribute it and/or modify
> +    it under the terms of the GNU General Public License as published by
> +    the Free Software Foundation, either version 2 of the License, or
> +    (at your option) any later version.
> +
> +    This program is distributed in the hope that it will be useful,
> +    but WITHOUT ANY WARRANTY; without even the implied warranty of
> +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +    GNU General Public License for more details.
> +
> +    You should have received a copy of the GNU General Public License
> +    along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +*/
> +
> +#include <common.h>
> +#include <i2c.h>
> +
> +#ifndef CONFIG_EEPROM_SIMUL_LEN
> +#define CONFIG_EEPROM_SIMUL_LEN 256
> +#endif
> +
> +u8 eeprom_simul_buffer[CONFIG_EEPROM_SIMUL_LEN]
> +#ifdef CONFIG_EEPROM_SIMUL_DATA
> +    = CONFIG_EEPROM_SIMUL_DATA
> +#endif
> +    ;
> +
> +void i2c_init(int speed, int slaveaddr)
> +{
> +	return;
> +}
> +
> +int i2c_read(uchar chip, uint addr, int alen, uchar * buffer, int len)
> +{
> +	int i;
> +
> +	if (addr + len > CONFIG_EEPROM_SIMUL_LEN)
> +		return -1;
> +
> +	for (i = 0; i < len; i++) {
> +		buffer[i] = eeprom_simul_buffer[i + addr];
> +	}
> +
> +	return 0;
> +}
> +
> +int i2c_write(uchar chip, uint addr, int alen, uchar * buffer, int len)
> +{
> +	int i;
> +
> +	if (addr + len > CONFIG_EEPROM_SIMUL_LEN)
> +		return -1;
> +
> +	for (i = 0; i < len; i++) {
> +		eeprom_simul_buffer[i + addr] = buffer[i];
> +	}
> +
> +	return 0;
> +}
> +
> +int i2c_probe(uchar chip)
> +{
> +	return 0;
> +}
> -- 
> 1.5.6.3
> 
> 
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> U-Boot-Users mailing list
> U-Boot-Users at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/u-boot-users




More information about the U-Boot mailing list