[U-Boot-Users] [PATCH] New Dummy I2C Driver

This driver provides access to a false i2c eeprom. This false eeprom could be very useful in boards with ddr2 memories and no i2c interfaces. Using this driver the user can simulate the spd interface of the ddr2 memory and use the ddr2 auto config
Signed-off-by: Ricardo Ribalda Delgado ricardo.ribalda@uam.es --- drivers/i2c/Makefile | 1 + drivers/i2c/dummy_i2c.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 0 deletions(-) create mode 100644 drivers/i2c/dummy_i2c.c
diff --git a/drivers/i2c/Makefile b/drivers/i2c/Makefile index 534c015..94a0791 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_DUMMY_I2C) += dummy_i2c.o
COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c) diff --git a/drivers/i2c/dummy_i2c.c b/drivers/i2c/dummy_i2c.c new file mode 100644 index 0000000..ce859c3 --- /dev/null +++ b/drivers/i2c/dummy_i2c.c @@ -0,0 +1,65 @@ +/* + (C) Copyright 2008 + Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es + This work has been supported by: Q-Technology 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> + +#define DUMMY_I2C_LEN 256 + +u8 i2c_dummy_buffer[DUMMY_I2C_LEN]= CONFIG_DUMMY_I2C_DATA; + +void i2c_init(int speed, int slaveaddr){ + return ; +} + +int i2c_read(uchar chip, uint addr, int alen, uchar * buffer, int len) +{ + int i; + if (alen!=1) + return -1; + + if (addr+len>DUMMY_I2C_LEN) + return -1; + + for(i=0;i<len;i++){ + buffer[i]=i2c_dummy_buffer[i+addr]; + } + + return 0; +} +int i2c_write(uchar chip, uint addr, int alen, uchar * buffer, int len) +{ + int i; + if (alen!=1) + return -1; + if (addr+len>DUMMY_I2C_LEN) + return -1; + + for(i=0;i<len;i++){ + i2c_dummy_buffer[i+addr]=buffer[i]; + } + + return 0; +} + +int i2c_probe(uchar chip) +{ + return 0; +} +

Version cleaned
On Fri, Jul 11, 2008 at 12:26 PM, Ricardo Ribalda Delgado ricardo.ribalda@uam.es wrote:
This driver provides access to a false i2c eeprom. This false eeprom could be very useful in boards with ddr2 memories and no i2c interfaces. Using this driver the user can simulate the spd interface of the ddr2 memory and use the ddr2 auto config
Signed-off-by: Ricardo Ribalda Delgado ricardo.ribalda@uam.es
drivers/i2c/Makefile | 1 + drivers/i2c/dummy_i2c.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 0 deletions(-) create mode 100644 drivers/i2c/dummy_i2c.c
diff --git a/drivers/i2c/Makefile b/drivers/i2c/Makefile index 534c015..94a0791 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_DUMMY_I2C) += dummy_i2c.o
COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c) diff --git a/drivers/i2c/dummy_i2c.c b/drivers/i2c/dummy_i2c.c new file mode 100644 index 0000000..ce859c3 --- /dev/null +++ b/drivers/i2c/dummy_i2c.c @@ -0,0 +1,65 @@ +/*
- (C) Copyright 2008
- Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es
- This work has been supported by: Q-Technology 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>
+#define DUMMY_I2C_LEN 256
+u8 i2c_dummy_buffer[DUMMY_I2C_LEN]= CONFIG_DUMMY_I2C_DATA;
+void i2c_init(int speed, int slaveaddr){
return ;
+}
+int i2c_read(uchar chip, uint addr, int alen, uchar * buffer, int len) +{
int i;
if (alen!=1)
return -1;
if (addr+len>DUMMY_I2C_LEN)
return -1;
for(i=0;i<len;i++){
buffer[i]=i2c_dummy_buffer[i+addr];
}
return 0;
+} +int i2c_write(uchar chip, uint addr, int alen, uchar * buffer, int len) +{
int i;
if (alen!=1)
return -1;
if (addr+len>DUMMY_I2C_LEN)
return -1;
for(i=0;i<len;i++){
i2c_dummy_buffer[i+addr]=buffer[i];
}
return 0;
+}
+int i2c_probe(uchar chip) +{
return 0;
+}
-- 1.5.6.2

Ricardo Ribalda Delgado wrote:
This driver provides access to a false i2c eeprom. This false eeprom could be very useful in boards with ddr2 memories and no i2c interfaces. Using this driver the user can simulate the spd interface of the ddr2 memory and use the ddr2 auto config
Hi Ricardo:
Nitpicking - "fake" would be a better word than "false" in this context. I wouldn't reroll the patch for this, but if you reroll it for some other reason...
Thanks, gvb

This driver provides access to a false i2c eeprom. This false eeprom could be very useful in boards with ddr2 memories and no i2c interfaces. Using this driver the user can simulate the spd interface of the ddr2 memory and use the ddr2 auto config
Hi Ricardo:
Nitpicking - "fake" would be a better word than "false" in this context. I wouldn't reroll the patch for this, but if you reroll it for some other reason...
Thanks, gvb
:-) M

In message 1215771981-26784-1-git-send-email-ricardo.ribalda@uam.es you wrote:
This driver provides access to a false i2c eeprom. This false eeprom could be very useful in boards with ddr2 memories and no i2c interfaces. Using this driver the user can simulate the spd interface of the ddr2 memory and use the ddr2 auto config
As discussed before, please substitue "false" by "fake" or similar.
I also agree with previous comments tthat "dummy" is not a good name, as your driver actually does something useful. Actually, it simulates an EEPROM device, so maybe "eeprom_simul.c" might be a more descriptive name?
--- /dev/null +++ b/drivers/i2c/dummy_i2c.c @@ -0,0 +1,65 @@
...
- (C) Copyright 2008
- Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es
- This work has been supported by: Q-Technology 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>
+#define DUMMY_I2C_LEN 256
+u8 i2c_dummy_buffer[DUMMY_I2C_LEN]= CONFIG_DUMMY_I2C_DATA;
I think it would also be useful in some cases to be able to use this silulator without initialized content, so maybe you could change this into
u8 i2c_dummy_buffer[DUMMY_I2C_LEN] #ifdef CONFIG_DUMMY_I2C_DATA = CONFIG_DUMMY_I2C_DATA #endif ;
or similar. And please also change the variable names as discussed above for the driver name.
Thanks in advance.
Best regards,
Wolfgang Denk

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
Signed-off-by: Ricardo Ribalda Delgado ricardo.ribalda@uam.es --- drivers/i2c/Makefile | 1 + drivers/i2c/eeprom_simul.c | 68 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 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..aecd0e5 --- /dev/null +++ b/drivers/i2c/eeprom_simul.c @@ -0,0 +1,68 @@ +/* + (C) Copyright 2008 + Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es + This work has been supported by: Q-Technology 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; +} +

Minor Changes to previous patch
Signed-off-by: Ricardo Ribalda Delgado ricardo.ribalda@uam.es --- 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
drivers/i2c/Makefile | 1 + drivers/i2c/eeprom_simul.c | 68 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 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..d8dbb3b --- /dev/null +++ b/drivers/i2c/eeprom_simul.c @@ -0,0 +1,68 @@ +/* + (C) Copyright 2008 + Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@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; +} +

Minor Changes to previous patch
Signed-off-by: Ricardo Ribalda Delgado ricardo.ribalda@uam.es
--- Added to GNATS database as unassigned-patches/9
Responsible: patch-coord Message-Id: 1216170409-13269-1-git-send-email-ricardo.ribalda@uam.es In-Reply-To: 1216033318-29449-1-git-send-email-ricardo.ribalda@uam.es References: 1216033318-29449-1-git-send-email-ricardo.ribalda@uam.es Patch-Date: Wed Jul 16 03:06:49 +0200 2008
--- 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
drivers/i2c/Makefile | 1 + drivers/i2c/eeprom_simul.c | 68 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 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..d8dbb3b --- /dev/null +++ b/drivers/i2c/eeprom_simul.c @@ -0,0 +1,68 @@ +/* + (C) Copyright 2008 + Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@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; +} +
participants (5)
-
Jerry Van Baren
-
Michal Simek
-
Ricardo Ribalda Delgado
-
u-boot@bugs.denx.de
-
Wolfgang Denk