diff options
-rw-r--r-- | hdata/memory.c | 41 | ||||
-rw-r--r-- | hdata/test/p8-840-spira.dts | 4 | ||||
-rw-r--r-- | hdata/test/p81-811.spira.dts | 8 |
3 files changed, 17 insertions, 36 deletions
diff --git a/hdata/memory.c b/hdata/memory.c index a838989..f94446f 100644 --- a/hdata/memory.c +++ b/hdata/memory.c @@ -234,32 +234,19 @@ static void add_bus_freq_to_ram_area(struct dt_node *ram_node, u32 chip_id) } static void add_size_to_ram_area(struct dt_node *ram_node, - const struct HDIF_common_hdr *hdr, - int indx_vpd) + const struct HDIF_common_hdr *ramarea) { - const void *fruvpd; - unsigned int fruvpd_sz; - const void *kw; - char *str; - uint8_t kwsz; - - fruvpd = HDIF_get_idata(hdr, indx_vpd, &fruvpd_sz); - if (!CHECK_SPPTR(fruvpd)) - return; + char str[16]; + const struct HDIF_ram_area_size *ram_area_sz; - /* DIMM Size */ - kw = vpd_find(fruvpd, fruvpd_sz, "VINI", "SZ", &kwsz); - if (!kw) + /* DIMM size */ + ram_area_sz = HDIF_get_idata(ramarea, 3, NULL); + if (!CHECK_SPPTR(ram_area_sz)) return; - str = zalloc(kwsz + 1); - if (!str){ - prerror("Allocation failed\n"); - return; - } - memcpy(str, kw, kwsz); + memset(str, 0, 16); + snprintf(str, 16, "%d", be32_to_cpu(ram_area_sz->mb)); dt_add_property_string(ram_node, "size", str); - free(str); } static void vpd_add_ram_area(const struct HDIF_common_hdr *msarea) @@ -301,21 +288,15 @@ static void vpd_add_ram_area(const struct HDIF_common_hdr *msarea) vpd_blob = HDIF_get_idata(ramarea, 1, &ram_sz); + /* DIMM size */ + add_size_to_ram_area(ram_node, ramarea); /* * For direct-attached memory we have a DDR "Serial * Presence Detection" blob rather than an IBM keyword * blob. */ - if (vpd_valid(vpd_blob, ram_sz)) { - /* the ibm,vpd blob was added in dt_add_vpd_node() */ - add_size_to_ram_area(ram_node, ramarea, 1); - } else { - /* - * FIXME: There's probably a way to calculate the - * size of the DIMM from the SPD info. - */ + if (!vpd_valid(vpd_blob, ram_sz)) dt_add_property(ram_node, "spd", vpd_blob, ram_sz); - } } } diff --git a/hdata/test/p8-840-spira.dts b/hdata/test/p8-840-spira.dts index 62a2f52..e73c691 100644 --- a/hdata/test/p8-840-spira.dts +++ b/hdata/test/p8-840-spira.dts @@ -746,7 +746,7 @@ description = "16GB CDIMM"; ibm,chip-id = <0x0>; ibm,memory-bus-frequency = <0x0 0x0>; - size = "0016384"; + size = "16384"; }; ms-dimm@d002 { @@ -768,7 +768,7 @@ description = "16GB CDIMM"; ibm,chip-id = <0x0>; ibm,memory-bus-frequency = <0x0 0x0>; - size = "0016384"; + size = "16384"; }; processor@1000 { diff --git a/hdata/test/p81-811.spira.dts b/hdata/test/p81-811.spira.dts index ba9b355..2ca361e 100644 --- a/hdata/test/p81-811.spira.dts +++ b/hdata/test/p81-811.spira.dts @@ -1899,7 +1899,7 @@ description = "32GB CDIMM"; ibm,chip-id = <0x0>; ibm,memory-bus-frequency = <0x0 0x0>; - size = "0032768"; + size = "32768"; }; ms-dimm@d002 { @@ -1921,7 +1921,7 @@ description = "32GB CDIMM"; ibm,chip-id = <0x0>; ibm,memory-bus-frequency = <0x0 0x0>; - size = "0032768"; + size = "32768"; }; ms-dimm@d008 { @@ -1943,7 +1943,7 @@ description = "32GB CDIMM"; ibm,chip-id = <0x10>; ibm,memory-bus-frequency = <0x0 0x0>; - size = "0032768"; + size = "32768"; }; ms-dimm@d00a { @@ -1965,7 +1965,7 @@ description = "32GB CDIMM"; ibm,chip-id = <0x10>; ibm,memory-bus-frequency = <0x0 0x0>; - size = "0032768"; + size = "32768"; }; processor@1000 { |