From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Dr. Philipp Tomsich" Subject: Re: [PATCH 3/3] rockchip: fix incorrect detection of ram size Date: Mon, 7 May 2018 00:19:11 +0200 Message-ID: <8A0283FB-A10F-46D1-BC4C-A59B6BCFDD3E@theobroma-systems.com> References: <20180506142513.19911-1-hanetzer@startmail.com> <20180506142513.19911-4-hanetzer@startmail.com> Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180506142513.19911-4-hanetzer@startmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" To: "Marty E. Plummer" Cc: vagrant@debian.org, u-boot@lists.denx.de, linux-rockchip@lists.infradead.org List-Id: linux-rockchip.vger.kernel.org Cj4gT24gNiBNYXkgMjAxOCwgYXQgMTY6MjUsIE1hcnR5IEUuIFBsdW1tZXIgPGhhbmV0emVyQHN0 YXJ0bWFpbC5jb20+IHdyb3RlOgo+IAo+IFRha2VuIGZyb20gY29yZWJvb3QncyBzcmMvc29jL3Jv Y2tjaGlwL3JrMzI4OC9zZHJhbS5jCj4gCj4gV2l0aG91dCB0aGlzIGNoYW5nZSwgbXkgdS1ib290 IGJ1aWxkIGZvciB0aGUgYXN1cyBjMjAxIGNocm9tZWJvb2sgKDRHaUIpCj4gaXMgaW5jb3JyZWN0 bHkgZGV0ZWN0ZWQgYXMgMCBCeXRlcyBvZiByYW0uCgpDb3VsZCB5b3UgZWxhYm9yYXRlIHdoYXQg dGhlIGNoYW5nZSBpcyBhbmQgd2hhdCByb290LWNhdXNlIHRoaXMgYWRkcmVzc2VzICg0R0IKcmVw b3J0aW5nIGFzIDAgc291bmRzIGEgYml0IGxpa2UgYSAzMmJpdCB0eXBlIG92ZXJmbG93aW5nKT8K SXTigJlzIHJlYWxseSBoYXJkIHRvIHRlbGwgZnJvbSB0aGUgcGF0Y2ggYmVsb3cgKHdoaWNoIHNl ZW1zIHRvIGhhdmUgZXZlcnl0aGluZyBzaW1wbHkKcmVmb3JtYXR0ZWQgdG8gYSBkaWZmZXJlbnQg aW5kZW50YXRpb24pLi4uCgo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hcnR5IEUuIFBsdW1tZXIgPGhh bmV0emVyQHN0YXJ0bWFpbC5jb20+Cj4gLS0tCj4gYXJjaC9hcm0vbWFjaC1yb2NrY2hpcC9zZHJh bV9jb21tb24uYyB8IDYyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLQo+IDEgZmlsZSBjaGFu Z2VkLCAzNyBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv YXJjaC9hcm0vbWFjaC1yb2NrY2hpcC9zZHJhbV9jb21tb24uYyBiL2FyY2gvYXJtL21hY2gtcm9j a2NoaXAvc2RyYW1fY29tbW9uLmMKPiBpbmRleCA3NmRiZGM4NzE1Li5hOWM5Zjk3MGE0IDEwMDY0 NAo+IC0tLSBhL2FyY2gvYXJtL21hY2gtcm9ja2NoaXAvc2RyYW1fY29tbW9uLmMKPiArKysgYi9h cmNoL2FybS9tYWNoLXJvY2tjaGlwL3NkcmFtX2NvbW1vbi5jCj4gQEAgLTEwLDYgKzEwLDggQEAK PiAjaW5jbHVkZSA8YXNtL2lvLmg+Cj4gI2luY2x1ZGUgPGFzbS9hcmNoL3NkcmFtX2NvbW1vbi5o Pgo+ICNpbmNsdWRlIDxkbS91Y2xhc3MtaW50ZXJuYWwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2tl cm5lbC5oPgo+ICsjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KPiAKPiBERUNMQVJFX0dMT0JBTF9E QVRBX1BUUjsKPiBzaXplX3Qgcm9ja2NoaXBfc2RyYW1fc2l6ZShwaHlzX2FkZHJfdCByZWcpCj4g QEAgLTE5LDM0ICsyMSw0NCBAQCBzaXplX3Qgcm9ja2NoaXBfc2RyYW1fc2l6ZShwaHlzX2FkZHJf dCByZWcpCj4gCXNpemVfdCBzaXplX21iID0gMDsKPiAJdTMyIGNoOwo+IAo+IC0JdTMyIHN5c19y ZWcgPSByZWFkbChyZWcpOwo+IC0JdTMyIGNoX251bSA9IDEgKyAoKHN5c19yZWcgPj4gU1lTX1JF R19OVU1fQ0hfU0hJRlQpCj4gLQkJICAgICAgICYgU1lTX1JFR19OVU1fQ0hfTUFTSyk7Cj4gKwlp ZiAoIXNpemVfbWIpIHsKCkdpdmVuIHRoYXQgdGhlcmXigJlzIGEg4oCcc2l6ZV9tYiA9IDDigJ0g anVzdCBhYm92ZSBpdCwgdGhpcyB3aWxsIGFsd2F5cyBldmFsdWF0ZQp0byB0cnVl4oCmIAoKPiAK PiAtCWRlYnVnKCIlcyAleCAleFxuIiwgX19mdW5jX18sICh1MzIpcmVnLCBzeXNfcmVnKTsKPiAt CWZvciAoY2ggPSAwOyBjaCA8IGNoX251bTsgY2grKykgewo+IC0JCXJhbmsgPSAxICsgKHN5c19y ZWcgPj4gU1lTX1JFR19SQU5LX1NISUZUKGNoKSAmCj4gLQkJCVNZU19SRUdfUkFOS19NQVNLKTsK PiAtCQljb2wgPSA5ICsgKHN5c19yZWcgPj4gU1lTX1JFR19DT0xfU0hJRlQoY2gpICYgU1lTX1JF R19DT0xfTUFTSyk7Cj4gLQkJYmsgPSAzIC0gKChzeXNfcmVnID4+IFNZU19SRUdfQktfU0hJRlQo Y2gpKSAmIFNZU19SRUdfQktfTUFTSyk7Cj4gLQkJY3MwX3JvdyA9IDEzICsgKHN5c19yZWcgPj4g U1lTX1JFR19DUzBfUk9XX1NISUZUKGNoKSAmCj4gLQkJCQlTWVNfUkVHX0NTMF9ST1dfTUFTSyk7 Cj4gLQkJY3MxX3JvdyA9IDEzICsgKHN5c19yZWcgPj4gU1lTX1JFR19DUzFfUk9XX1NISUZUKGNo KSAmCj4gLQkJCQlTWVNfUkVHX0NTMV9ST1dfTUFTSyk7Cj4gLQkJYncgPSAoMiA+PiAoKHN5c19y ZWcgPj4gU1lTX1JFR19CV19TSElGVChjaCkpICYKPiAtCQkJU1lTX1JFR19CV19NQVNLKSk7Cj4g LQkJcm93XzNfNCA9IHN5c19yZWcgPj4gU1lTX1JFR19ST1dfM180X1NISUZUKGNoKSAmCj4gLQkJ CVNZU19SRUdfUk9XXzNfNF9NQVNLOwo+ICsJCXUzMiBzeXNfcmVnID0gcmVhZGwocmVnKTsKPiAr CQl1MzIgY2hfbnVtID0gMSArICgoc3lzX3JlZyA+PiBTWVNfUkVHX05VTV9DSF9TSElGVCkKPiAr CQkJICAgICAgICYgU1lTX1JFR19OVU1fQ0hfTUFTSyk7Cj4gCj4gLQkJY2hpcHNpemVfbWIgPSAo MSA8PCAoY3MwX3JvdyArIGNvbCArIGJrICsgYncgLSAyMCkpOwo+ICsJCWRlYnVnKCIlcyAleCAl eFxuIiwgX19mdW5jX18sICh1MzIpcmVnLCBzeXNfcmVnKTsKPiArCQlmb3IgKGNoID0gMDsgY2gg PCBjaF9udW07IGNoKyspIHsKPiArCQkJcmFuayA9IDEgKyAoc3lzX3JlZyA+PiBTWVNfUkVHX1JB TktfU0hJRlQoY2gpICYKPiArCQkJCVNZU19SRUdfUkFOS19NQVNLKTsKPiArCQkJY29sID0gOSAr IChzeXNfcmVnID4+IFNZU19SRUdfQ09MX1NISUZUKGNoKSAmIFNZU19SRUdfQ09MX01BU0spOwo+ ICsJCQliayA9IDMgLSAoKHN5c19yZWcgPj4gU1lTX1JFR19CS19TSElGVChjaCkpICYgU1lTX1JF R19CS19NQVNLKTsKPiArCQkJY3MwX3JvdyA9IDEzICsgKHN5c19yZWcgPj4gU1lTX1JFR19DUzBf Uk9XX1NISUZUKGNoKSAmCj4gKwkJCQkJU1lTX1JFR19DUzBfUk9XX01BU0spOwo+ICsJCQljczFf cm93ID0gMTMgKyAoc3lzX3JlZyA+PiBTWVNfUkVHX0NTMV9ST1dfU0hJRlQoY2gpICYKPiArCQkJ CQlTWVNfUkVHX0NTMV9ST1dfTUFTSyk7Cj4gKwkJCWJ3ID0gKDIgPj4gKChzeXNfcmVnID4+IFNZ U19SRUdfQldfU0hJRlQoY2gpKSAmCj4gKwkJCQlTWVNfUkVHX0JXX01BU0spKTsKPiArCQkJcm93 XzNfNCA9IHN5c19yZWcgPj4gU1lTX1JFR19ST1dfM180X1NISUZUKGNoKSAmCj4gKwkJCQlTWVNf UkVHX1JPV18zXzRfTUFTSzsKPiAKPiAtCQlpZiAocmFuayA+IDEpCj4gLQkJCWNoaXBzaXplX21i ICs9IGNoaXBzaXplX21iID4+IChjczBfcm93IC0gY3MxX3Jvdyk7Cj4gLQkJaWYgKHJvd18zXzQp Cj4gLQkJCWNoaXBzaXplX21iID0gY2hpcHNpemVfbWIgKiAzIC8gNDsKPiAtCQlzaXplX21iICs9 IGNoaXBzaXplX21iOwo+IC0JCWRlYnVnKCJyYW5rICVkIGNvbCAlZCBiayAlZCBjczBfcm93ICVk IGJ3ICVkIHJvd18zXzQgJWRcbiIsCj4gLQkJICAgICAgcmFuaywgY29sLCBiaywgY3MwX3Jvdywg YncsIHJvd18zXzQpOwo+ICsJCQljaGlwc2l6ZV9tYiA9ICgxIDw8IChjczBfcm93ICsgY29sICsg YmsgKyBidyAtIDIwKSk7Cj4gKwo+ICsJCQlpZiAocmFuayA+IDEpCj4gKwkJCQljaGlwc2l6ZV9t YiArPSBjaGlwc2l6ZV9tYiA+PiAoY3MwX3JvdyAtIGNzMV9yb3cpOwo+ICsJCQlpZiAocm93XzNf NCkKPiArCQkJCWNoaXBzaXplX21iID0gY2hpcHNpemVfbWIgKiAzIC8gNDsKPiArCQkJc2l6ZV9t YiArPSBjaGlwc2l6ZV9tYjsKPiArCQkJZGVidWcoInJhbmsgJWQgY29sICVkIGJrICVkIGNzMF9y b3cgJWQgYncgJWQgcm93XzNfNCAlZFxuIiwKPiArCQkJICAgICAgcmFuaywgY29sLCBiaywgY3Mw X3JvdywgYncsIHJvd18zXzQpOwo+ICsJCX0KPiArCj4gKwkJLyoKPiArCQkgKiB3ZSB1c2UgdGhl IDB4MDAwMDAwMDB+MHhmZWZmZmZmZiBzcGFjZQo+ICsJCSAqIHNpbmNlIDB4ZmYwMDAwMDB+MHhm ZmZmZmZmZiBpcyBzb2MgcmVnaXN0ZXIgc3BhY2UKPiArCQkgKiBzbyB3ZSByZXNlcnZlIGl0Cj4g KwkJICovCj4gKwkJc2l6ZV9tYiA9IG1pbihzaXplX21iLCAweGZmMDAwMDAwL1NaXzFNKTsKPiAJ fQo+IAo+IAlyZXR1cm4gKHNpemVfdClzaXplX21iIDw8IDIwOwo+IC0tIAo+IDIuMTcuMAo+IAo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gVS1Cb290 IG1haWxpbmcgbGlzdAo+IFUtQm9vdEBsaXN0cy5kZW54LmRlCj4gaHR0cHM6Ly9saXN0cy5kZW54 LmRlL2xpc3RpbmZvL3UtYm9vdAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KVS1Cb290IG1haWxpbmcgbGlzdApVLUJvb3RAbGlzdHMuZGVueC5kZQpodHRw czovL2xpc3RzLmRlbnguZGUvbGlzdGluZm8vdS1ib290Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dr. Philipp Tomsich Date: Mon, 7 May 2018 00:19:11 +0200 Subject: [U-Boot] [PATCH 3/3] rockchip: fix incorrect detection of ram size In-Reply-To: <20180506142513.19911-4-hanetzer@startmail.com> References: <20180506142513.19911-1-hanetzer@startmail.com> <20180506142513.19911-4-hanetzer@startmail.com> Message-ID: <8A0283FB-A10F-46D1-BC4C-A59B6BCFDD3E@theobroma-systems.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit To: u-boot@lists.denx.de > On 6 May 2018, at 16:25, Marty E. Plummer wrote: > > Taken from coreboot's src/soc/rockchip/rk3288/sdram.c > > Without this change, my u-boot build for the asus c201 chromebook (4GiB) > is incorrectly detected as 0 Bytes of ram. Could you elaborate what the change is and what root-cause this addresses (4GB reporting as 0 sounds a bit like a 32bit type overflowing)? It’s really hard to tell from the patch below (which seems to have everything simply reformatted to a different indentation)... > > Signed-off-by: Marty E. Plummer > --- > arch/arm/mach-rockchip/sdram_common.c | 62 ++++++++++++++++----------- > 1 file changed, 37 insertions(+), 25 deletions(-) > > diff --git a/arch/arm/mach-rockchip/sdram_common.c b/arch/arm/mach-rockchip/sdram_common.c > index 76dbdc8715..a9c9f970a4 100644 > --- a/arch/arm/mach-rockchip/sdram_common.c > +++ b/arch/arm/mach-rockchip/sdram_common.c > @@ -10,6 +10,8 @@ > #include > #include > #include > +#include > +#include > > DECLARE_GLOBAL_DATA_PTR; > size_t rockchip_sdram_size(phys_addr_t reg) > @@ -19,34 +21,44 @@ size_t rockchip_sdram_size(phys_addr_t reg) > size_t size_mb = 0; > u32 ch; > > - u32 sys_reg = readl(reg); > - u32 ch_num = 1 + ((sys_reg >> SYS_REG_NUM_CH_SHIFT) > - & SYS_REG_NUM_CH_MASK); > + if (!size_mb) { Given that there’s a “size_mb = 0” just above it, this will always evaluate to true… > > - debug("%s %x %x\n", __func__, (u32)reg, sys_reg); > - for (ch = 0; ch < ch_num; ch++) { > - rank = 1 + (sys_reg >> SYS_REG_RANK_SHIFT(ch) & > - SYS_REG_RANK_MASK); > - col = 9 + (sys_reg >> SYS_REG_COL_SHIFT(ch) & SYS_REG_COL_MASK); > - bk = 3 - ((sys_reg >> SYS_REG_BK_SHIFT(ch)) & SYS_REG_BK_MASK); > - cs0_row = 13 + (sys_reg >> SYS_REG_CS0_ROW_SHIFT(ch) & > - SYS_REG_CS0_ROW_MASK); > - cs1_row = 13 + (sys_reg >> SYS_REG_CS1_ROW_SHIFT(ch) & > - SYS_REG_CS1_ROW_MASK); > - bw = (2 >> ((sys_reg >> SYS_REG_BW_SHIFT(ch)) & > - SYS_REG_BW_MASK)); > - row_3_4 = sys_reg >> SYS_REG_ROW_3_4_SHIFT(ch) & > - SYS_REG_ROW_3_4_MASK; > + u32 sys_reg = readl(reg); > + u32 ch_num = 1 + ((sys_reg >> SYS_REG_NUM_CH_SHIFT) > + & SYS_REG_NUM_CH_MASK); > > - chipsize_mb = (1 << (cs0_row + col + bk + bw - 20)); > + debug("%s %x %x\n", __func__, (u32)reg, sys_reg); > + for (ch = 0; ch < ch_num; ch++) { > + rank = 1 + (sys_reg >> SYS_REG_RANK_SHIFT(ch) & > + SYS_REG_RANK_MASK); > + col = 9 + (sys_reg >> SYS_REG_COL_SHIFT(ch) & SYS_REG_COL_MASK); > + bk = 3 - ((sys_reg >> SYS_REG_BK_SHIFT(ch)) & SYS_REG_BK_MASK); > + cs0_row = 13 + (sys_reg >> SYS_REG_CS0_ROW_SHIFT(ch) & > + SYS_REG_CS0_ROW_MASK); > + cs1_row = 13 + (sys_reg >> SYS_REG_CS1_ROW_SHIFT(ch) & > + SYS_REG_CS1_ROW_MASK); > + bw = (2 >> ((sys_reg >> SYS_REG_BW_SHIFT(ch)) & > + SYS_REG_BW_MASK)); > + row_3_4 = sys_reg >> SYS_REG_ROW_3_4_SHIFT(ch) & > + SYS_REG_ROW_3_4_MASK; > > - if (rank > 1) > - chipsize_mb += chipsize_mb >> (cs0_row - cs1_row); > - if (row_3_4) > - chipsize_mb = chipsize_mb * 3 / 4; > - size_mb += chipsize_mb; > - debug("rank %d col %d bk %d cs0_row %d bw %d row_3_4 %d\n", > - rank, col, bk, cs0_row, bw, row_3_4); > + chipsize_mb = (1 << (cs0_row + col + bk + bw - 20)); > + > + if (rank > 1) > + chipsize_mb += chipsize_mb >> (cs0_row - cs1_row); > + if (row_3_4) > + chipsize_mb = chipsize_mb * 3 / 4; > + size_mb += chipsize_mb; > + debug("rank %d col %d bk %d cs0_row %d bw %d row_3_4 %d\n", > + rank, col, bk, cs0_row, bw, row_3_4); > + } > + > + /* > + * we use the 0x00000000~0xfeffffff space > + * since 0xff000000~0xffffffff is soc register space > + * so we reserve it > + */ > + size_mb = min(size_mb, 0xff000000/SZ_1M); > } > > return (size_t)size_mb << 20; > -- > 2.17.0 > > _______________________________________________ > U-Boot mailing list > U-Boot at lists.denx.de > https://lists.denx.de/listinfo/u-boot