On Wed, Apr 10, 2019 at 06:49:38PM +0200, Ladislav Michl wrote: > On Wed, Apr 10, 2019 at 08:26:40AM +0200, Sascha Hauer wrote: > > On Tue, Apr 09, 2019 at 05:56:53PM +0800, 张忠山 wrote: > > > Maybe this is a bug, I'm not sure > > > > > > -----------------------------------8<----------------------------- > > > From 55509f359abbb1f5c24e9f0c2b9cff167f62ae4d Mon Sep 17 00:00:00 2001 > > > From: =?UTF-8?q?=E5=BC=A0=E5=BF=A0=E5=B1=B1?= <zzs213@xxxxxxx> > > > Date: Mon, 8 Apr 2019 14:34:00 +0800 > > > Subject: [PATCH] bugfix: check ddr mod_ranks > > > MIME-Version: 1.0 > > > Content-Type: text/plain; charset=UTF-8 > > > Content-Transfer-Encoding: 8bit > > > > > > Signed-off-by: 张忠山 <zzs213@xxxxxxx> > > > --- > > > common/ddr_spd.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/common/ddr_spd.c b/common/ddr_spd.c > > > index ec343ef5a..277d418e9 100644 > > > --- a/common/ddr_spd.c > > > +++ b/common/ddr_spd.c > > > @@ -253,7 +253,7 @@ void ddr_spd_print(uint8_t *record) > > > printf("Error module type\n"); > > > > > > printf("%-48s ", "DRAM Package "); > > > - if ((s->mod_ranks & 0x10) == 1) > > > + if ((s->mod_ranks & 0x10) != 0) > > > > For sure this is buggy. Applied, thanks > > I know it is too late already, but isn't > if (s->mod_ranks & 0x10) > a bit more usual fix? Hmm, actually there's some more comparsion worth verifying as shown bellow: diff --git a/common/ddr_spd.c b/common/ddr_spd.c index 0ba5eacea..7c9abeead 100644 --- a/common/ddr_spd.c +++ b/common/ddr_spd.c @@ -256,7 +256,7 @@ void ddr_spd_print(uint8_t *record) ctime = ddr2_sdram_ctime(s->clk_cycle); ddrclk = 2 * (100000 / ctime); tbits = (s->res_7 << 8) + (s->dataw); - if ((s->config & 0x03) == 1) + if (s->config & 0x01) tbits = tbits - 8; pcclk = ddrclk * tbits / 8; @@ -325,7 +325,7 @@ void ddr_spd_print(uint8_t *record) printf("Error module type\n"); printf("%-48s ", "DRAM Package "); - if ((s->mod_ranks & 0x10) == 1) + if (s->mod_ranks & 0x10) printf("Stack\n"); else printf("Planar\n"); @@ -341,7 +341,7 @@ void ddr_spd_print(uint8_t *record) if (parity == 0) printf("No Parity\n"); - if ((parity & 0x03) == 0x01) + if (parity & 0x01) printf("Data Parity\n"); if (parity & 0x02) printf("Data ECC\n"); @@ -349,7 +349,7 @@ void ddr_spd_print(uint8_t *record) if (parity & 0x04) printf("Address/Command Parity\n"); - if ((s->refresh >> 7) == 1) + if (s->refresh & 0x80) ref = "- Self Refresh"; else ref = " "; _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox