[PATCH] i2c/smbus_eeprom: Add minimum write recovery time for DDR2

BALATON Zoltan posted 1 patch 1 month, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20251008122502.9DA8956F301@zero.eik.bme.hu
Maintainers: Corey Minyard <cminyard@mvista.com>
hw/i2c/smbus_eeprom.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] i2c/smbus_eeprom: Add minimum write recovery time for DDR2
Posted by BALATON Zoltan 1 month, 1 week ago
This is needed for newer u-boot-sam460ex versions to pass the DRAM
setup.

Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
---
 hw/i2c/smbus_eeprom.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/hw/i2c/smbus_eeprom.c b/hw/i2c/smbus_eeprom.c
index 0a1088fbb0..26e211b31a 100644
--- a/hw/i2c/smbus_eeprom.c
+++ b/hw/i2c/smbus_eeprom.c
@@ -288,6 +288,7 @@ uint8_t *spd_data_generate(enum sdram_type type, ram_addr_t ram_size)
     spd[33] = 8;    /* addr/cmd hold time */
     spd[34] = 20;   /* data input setup time */
     spd[35] = 8;    /* data input hold time */
+    spd[36] = (type == DDR2 ? 13 << 2 : 0); /* min. write recovery time */
 
     /* checksum */
     for (i = 0; i < 63; i++) {
-- 
2.41.3
Re: [PATCH] i2c/smbus_eeprom: Add minimum write recovery time for DDR2
Posted by Philippe Mathieu-Daudé 3 weeks, 4 days ago
On 8/10/25 14:25, BALATON Zoltan wrote:
> This is needed for newer u-boot-sam460ex versions to pass the DRAM
> setup.
> 
> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> ---
>   hw/i2c/smbus_eeprom.c | 1 +
>   1 file changed, 1 insertion(+)

Patch queued, thanks.
Re: [PATCH] i2c/smbus_eeprom: Add minimum write recovery time for DDR2
Posted by Philippe Mathieu-Daudé 3 weeks, 4 days ago
On 8/10/25 14:25, BALATON Zoltan wrote:
> This is needed for newer u-boot-sam460ex versions to pass the DRAM
> setup.
> 
> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> ---
>   hw/i2c/smbus_eeprom.c | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/hw/i2c/smbus_eeprom.c b/hw/i2c/smbus_eeprom.c
> index 0a1088fbb0..26e211b31a 100644
> --- a/hw/i2c/smbus_eeprom.c
> +++ b/hw/i2c/smbus_eeprom.c
> @@ -288,6 +288,7 @@ uint8_t *spd_data_generate(enum sdram_type type, ram_addr_t ram_size)
>       spd[33] = 8;    /* addr/cmd hold time */
>       spd[34] = 20;   /* data input setup time */
>       spd[35] = 8;    /* data input hold time */
> +    spd[36] = (type == DDR2 ? 13 << 2 : 0); /* min. write recovery time */

We are adapting DDR2 values on a method written for SDR/DDR[1].
Better would be to split and correctly document each format,
using proper values.

Anyhow, for this patch:
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>


Re: [PATCH] i2c/smbus_eeprom: Add minimum write recovery time for DDR2
Posted by BALATON Zoltan 3 weeks, 4 days ago
On Mon, 20 Oct 2025, Philippe Mathieu-Daudé wrote:
> On 8/10/25 14:25, BALATON Zoltan wrote:
>> This is needed for newer u-boot-sam460ex versions to pass the DRAM
>> setup.
>> 
>> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
>> ---
>>   hw/i2c/smbus_eeprom.c | 1 +
>>   1 file changed, 1 insertion(+)
>> 
>> diff --git a/hw/i2c/smbus_eeprom.c b/hw/i2c/smbus_eeprom.c
>> index 0a1088fbb0..26e211b31a 100644
>> --- a/hw/i2c/smbus_eeprom.c
>> +++ b/hw/i2c/smbus_eeprom.c
>> @@ -288,6 +288,7 @@ uint8_t *spd_data_generate(enum sdram_type type, 
>> ram_addr_t ram_size)
>>       spd[33] = 8;    /* addr/cmd hold time */
>>       spd[34] = 20;   /* data input setup time */
>>       spd[35] = 8;    /* data input hold time */
>> +    spd[36] = (type == DDR2 ? 13 << 2 : 0); /* min. write recovery time */
>
> We are adapting DDR2 values on a method written for SDR/DDR[1].
> Better would be to split and correctly document each format,
> using proper values.

I plan to add separate function for DDR3 which is different from these 
(Bernhard had a patch for that which we can adopt but I haven't got to 
that yet). Maybe a split could be considered then but these formats up to 
DDR2 are quite similar with a lot of common values and only a few 
differences to have them in a single function. As a documentation better 
consult something else, e.g. wikipedia has a good summary.

> Anyhow, for this patch:
> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>

Thank you,
BALATON Zoltan
Re: [PATCH] i2c/smbus_eeprom: Add minimum write recovery time for DDR2
Posted by BALATON Zoltan 3 weeks, 6 days ago
On Wed, 8 Oct 2025, BALATON Zoltan wrote:
> This is needed for newer u-boot-sam460ex versions to pass the DRAM
> setup.
>
> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>

Ping? Will somebody review and merge this?

Regards,
BALATON Zoltan

> ---
> hw/i2c/smbus_eeprom.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/hw/i2c/smbus_eeprom.c b/hw/i2c/smbus_eeprom.c
> index 0a1088fbb0..26e211b31a 100644
> --- a/hw/i2c/smbus_eeprom.c
> +++ b/hw/i2c/smbus_eeprom.c
> @@ -288,6 +288,7 @@ uint8_t *spd_data_generate(enum sdram_type type, ram_addr_t ram_size)
>     spd[33] = 8;    /* addr/cmd hold time */
>     spd[34] = 20;   /* data input setup time */
>     spd[35] = 8;    /* data input hold time */
> +    spd[36] = (type == DDR2 ? 13 << 2 : 0); /* min. write recovery time */
>
>     /* checksum */
>     for (i = 0; i < 63; i++) {
>