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

Signed-off-by: Ricardo Ribalda Delgado ricardo.ribalda@uam.es --- drivers/i2c/Makefile | 1 + drivers/i2c/dummy_i2c.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 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..92493e9 --- /dev/null +++ b/drivers/i2c/dummy_i2c.c @@ -0,0 +1,74 @@ +/* + (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> +u8 i2c_dummy_buffer[256]={0x80,0x8,0x8,0x0D,0x0A,0x60,0x40,0x0,0x5,\ + 0x3D,0x50,0x0,0x82,0x10,0x0,0x0,0x0C,0x4,0x18,0x1,0x4,0x0,\ + 0x1,0x50,0x50,0x0,0x0,0x3C,0x28,0x3C,0x2D,0x40,0x25,0x37,\ + 0x10,0x22,0x3C,0x1E,0x1E,0x0,0x0,0x3C,0x69,0x80,0x1E,0x28,\ + 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,\ + 0x0,0x12,0xC9,0x2C,'0','0','0','0','0','0','0',0x0,'4','H',\ + 'T','F','3','2','6','4','H','Y','-','5','3','E','D','3',\ + 0x3,0x0,0x0,0x0,0x0}; + +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>0xff) + 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>0xff) + return -1; + + for(i=0;i<len;i++){ + i2c_dummy_buffer[i+addr]=buffer[i]; + } + + return 0; +} + + +int i2c_probe(uchar chip) +{ + return 0; +} +

I didn't add this to the description sorry:
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 configuration
On Fri, Jul 11, 2008 at 10:38 AM, Ricardo Ribalda Delgado ricardo.ribalda@uam.es wrote:
Signed-off-by: Ricardo Ribalda Delgado ricardo.ribalda@uam.es
drivers/i2c/Makefile | 1 + drivers/i2c/dummy_i2c.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 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..92493e9 --- /dev/null +++ b/drivers/i2c/dummy_i2c.c @@ -0,0 +1,74 @@ +/*
- (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> +u8 i2c_dummy_buffer[256]={0x80,0x8,0x8,0x0D,0x0A,0x60,0x40,0x0,0x5,\
0x3D,0x50,0x0,0x82,0x10,0x0,0x0,0x0C,0x4,0x18,0x1,0x4,0x0,\
0x1,0x50,0x50,0x0,0x0,0x3C,0x28,0x3C,0x2D,0x40,0x25,0x37,\
0x10,0x22,0x3C,0x1E,0x1E,0x0,0x0,0x3C,0x69,0x80,0x1E,0x28,\
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,\
0x0,0x12,0xC9,0x2C,'0','0','0','0','0','0','0',0x0,'4','H',\
'T','F','3','2','6','4','H','Y','-','5','3','E','D','3',\
0x3,0x0,0x0,0x0,0x0};
+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>0xff)
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>0xff)
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

On Friday 11 July 2008, Ricardo Ribalda Delgado wrote:
I didn't add this to the description sorry:
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 configuration
Problem is, that those SPD values in this driver are board specific. Other boards with other DIMM(s) would need other EEPROM values. So it doesn't make sense to add this in such a common file for me. And I really don't like the name "dummy_i2c.c".
Which SDRAM controller is used on your 440/Virtex SoC? Is it an IBM compatible one? Or an IP core from Xilinx? I suggest you take a look at the similar implementation selectable via CFG_SIMULATE_SPD_EEPROM (used on bamboo).
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================

Hi Stefan and Ricardo,
I didn't add this to the description sorry:
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 configuration
Problem is, that those SPD values in this driver are board specific. Other boards with other DIMM(s) would need other EEPROM values. So it doesn't make sense to add this in such a common file for me. And I really don't like the name "dummy_i2c.c".
The dummy driver could be useful but without board specific values as Stefan wrote. The name is awful. If is board specific setting you have to move it to board specific path. (board/xilinx/ml507)
M
Which SDRAM controller is used on your 440/Virtex SoC? Is it an IBM compatible one? Or an IP core from Xilinx? I suggest you take a look at the similar implementation selectable via CFG_SIMULATE_SPD_EEPROM (used on bamboo).
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================
------------------------------------------------------------------------- Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! Studies have shown that voting for your favorite open source project, along with a healthy diet, reduces your potential for chronic lameness and boredom. Vote Now at http://www.sourceforge.net/community/cca08 _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users
participants (3)
-
Michal Simek
-
Ricardo Ribalda Delgado
-
Stefan Roese