From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH v4 3/4] mtd: nand: mediatek: add support for different MTK NAND FLASH Controller IP Date: Wed, 31 May 2017 08:12:54 +0200 Message-ID: <20170531081241.2137fe38@bbrezillon> References: <1496201877-34373-1-git-send-email-xiaolei.li@mediatek.com> <1496201877-34373-4-git-send-email-xiaolei.li@mediatek.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1496201877-34373-4-git-send-email-xiaolei.li@mediatek.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+gldm-linux-mtd-36=gmane.org@lists.infradead.org To: Xiaolei Li Cc: srv_heupstream@mediatek.com, yt.shen@mediatek.com, robh+dt@kernel.org, linux-mtd@lists.infradead.org, matthias.bgg@gmail.com, linux-mediatek@lists.infradead.org, computersforpeace@gmail.com, dwmw2@infradead.org, rogercc.lin@mediatek.com List-Id: linux-mediatek@lists.infradead.org TGUgV2VkLCAzMSBNYXkgMjAxNyAxMTozNzo1NiArMDgwMCwKWGlhb2xlaSBMaSA8eGlhb2xlaS5s aUBtZWRpYXRlay5jb20+IGEgw6ljcml0IDoKCj4gIAo+IC1zdGF0aWMgdm9pZCBtdGtfbmZjX3Nl dF9zcGFyZV9wZXJfc2VjdG9yKHUzMiAqc3BzLCBzdHJ1Y3QgbXRkX2luZm8gKm10ZCkKPiArc3Rh dGljIGludCBtdGtfbmZjX3NldF9zcGFyZV9wZXJfc2VjdG9yKHUzMiAqc3BzLCBzdHJ1Y3QgbXRk X2luZm8gKm10ZCkKCldoeSBkbyB5b3UgY2hhbmdlIHRoZSBwcm90b3R5cGUgaGVyZT8gWW91IHNl ZW0gdG8gYWx3YXlzIHJldHVybiAwCmFueXdheS4KCj4gIHsKPiAgCXN0cnVjdCBuYW5kX2NoaXAg Km5hbmQgPSBtdGRfdG9fbmFuZChtdGQpOwo+IC0JdTMyIHNwYXJlW10gPSB7MTYsIDI2LCAyNywg MjgsIDMyLCAzNiwgNDAsIDQ0LAo+IC0JCQk0OCwgNDksIDUwLCA1MSwgNTIsIDYyLCA2MywgNjR9 Owo+IC0JdTMyIGVjY3N0ZXBzLCBpOwo+ICsJc3RydWN0IG10a19uZmMgKm5mYyA9IG5hbmRfZ2V0 X2NvbnRyb2xsZXJfZGF0YShuYW5kKTsKPiArCWNvbnN0IHU4ICpzcGFyZSA9IG5mYy0+Y2Fwcy0+ c3BhcmVfc2l6ZTsKPiArCXUzMiBlY2NzdGVwcywgaSwgaiA9IDA7CgpDYW4gd2UgcmVuYW1lICdq JyBpbnRvICdjbG9zZXN0X3NwYXJlJz8KCj4gIAo+ICAJZWNjc3RlcHMgPSBtdGQtPndyaXRlc2l6 ZSAvIG5hbmQtPmVjYy5zaXplOwo+ICAJKnNwcyA9IG10ZC0+b29ic2l6ZSAvIGVjY3N0ZXBzOwo+ IEBAIC0xMTQ0LDI4ICsxMTAyLDI4IEBAIHN0YXRpYyB2b2lkIG10a19uZmNfc2V0X3NwYXJlX3Bl cl9zZWN0b3IodTMyICpzcHMsIHN0cnVjdCBtdGRfaW5mbyAqbXRkKQo+ICAJaWYgKG5hbmQtPmVj Yy5zaXplID09IDEwMjQpCj4gIAkJKnNwcyA+Pj0gMTsKPiAgCj4gLQlmb3IgKGkgPSAwOyBpIDwg QVJSQVlfU0laRShzcGFyZSk7IGkrKykgewo+IC0JCWlmICgqc3BzIDw9IHNwYXJlW2ldKSB7Cj4g LQkJCWlmICghaSkKPiAtCQkJCSpzcHMgPSBzcGFyZVtpXTsKPiAtCQkJZWxzZSBpZiAoKnNwcyAh PSBzcGFyZVtpXSkKPiAtCQkJCSpzcHMgPSBzcGFyZVtpIC0gMV07Cj4gLQkJCWJyZWFrOwo+ICsJ Zm9yIChpID0gMDsgaSA8IG5mYy0+Y2Fwcy0+bnVtX3NwYXJlX3NpemU7IGkrKykgewo+ICsJCWlm ICgoKnNwcyA+PSBzcGFyZVtpXSkgJiYgKHNwYXJlW2ldID49IHNwYXJlW2pdKSkgewoKUGFyZW50 aGVzaXMgYXJvdW5kIHRoZSAnYSA+PSBiJyB0ZXN0cyBhcmUgdW5uZWVkZWQ6CgoJCWlmICgqc3Bz ID49IHNwYXJlW2ldICYmIHNwYXJlW2ldID49IHNwYXJlW2pdKSB7Cgo+ICsJCQlqID0gaTsKPiAr CQkJaWYgKCpzcHMgPT0gc3BhcmVbaV0pCj4gKwkJCQlicmVhazsKPiAgCQl9Cj4gIAl9Cj4gIAo+ IC0JaWYgKGkgPj0gQVJSQVlfU0laRShzcGFyZSkpCj4gLQkJKnNwcyA9IHNwYXJlW0FSUkFZX1NJ WkUoc3BhcmUpIC0gMV07CgpNYXliZSB5b3UgY291bGQgcmV0dXJuIGFuIGVycm9yIGlmIHlvdSBk aWRuJ3QgZmluZCBhbnkgZW50cnkgdGhhdCBpcwpsZXNzIHRoYXQgKnNwcyBpbiB0aGUgdGFibGUs IGJ1dCBJJ20gbm90IHN1cmUgdGhpcyBjYW4gcmVhbGx5IGhhcHBlbiwKYW5kIHRoZSBtaW5pbXVt IHNwYXJlIHNpemUgc2VlbXMgdG8gYmUgdGhlIHNhbWUgZm9yIGFsbCBJUHMsIHRoaXMgaXMKc29t ZXRoaW5nIHlvdSBjYW4gY2hlY2sgYmVmb3JlIGl0ZXJhdGluZyBvdmVyIHRoZSBhcnJheToKCglp ZiAoKnNwcyA8IE1US19ORkNfTUlOX1NQQVJFKQoJCXJldHVybiAtRUlOVkFMOwoKPiArCSpzcHMg PSBzcGFyZVtqXTsKPiAgCj4gIAlpZiAobmFuZC0+ZWNjLnNpemUgPT0gMTAyNCkKPiAgCQkqc3Bz IDw8PSAxOwo+ICsKPiArCXJldHVybiAwOwo+ICB9CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXggTVREIGRpc2N1c3Npb24gbWFpbGlu ZyBsaXN0Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt bXRkLwo= From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Wed, 31 May 2017 08:12:54 +0200 From: Boris Brezillon To: Xiaolei Li Cc: , , , , , , , , Subject: Re: [PATCH v4 3/4] mtd: nand: mediatek: add support for different MTK NAND FLASH Controller IP Message-ID: <20170531081241.2137fe38@bbrezillon> In-Reply-To: <1496201877-34373-4-git-send-email-xiaolei.li@mediatek.com> References: <1496201877-34373-1-git-send-email-xiaolei.li@mediatek.com> <1496201877-34373-4-git-send-email-xiaolei.li@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Le Wed, 31 May 2017 11:37:56 +0800, Xiaolei Li a =C3=A9crit : > =20 > -static void mtk_nfc_set_spare_per_sector(u32 *sps, struct mtd_info *mtd) > +static int mtk_nfc_set_spare_per_sector(u32 *sps, struct mtd_info *mtd) Why do you change the prototype here? You seem to always return 0 anyway. > { > struct nand_chip *nand =3D mtd_to_nand(mtd); > - u32 spare[] =3D {16, 26, 27, 28, 32, 36, 40, 44, > - 48, 49, 50, 51, 52, 62, 63, 64}; > - u32 eccsteps, i; > + struct mtk_nfc *nfc =3D nand_get_controller_data(nand); > + const u8 *spare =3D nfc->caps->spare_size; > + u32 eccsteps, i, j =3D 0; Can we rename 'j' into 'closest_spare'? > =20 > eccsteps =3D mtd->writesize / nand->ecc.size; > *sps =3D mtd->oobsize / eccsteps; > @@ -1144,28 +1102,28 @@ static void mtk_nfc_set_spare_per_sector(u32 *sps= , struct mtd_info *mtd) > if (nand->ecc.size =3D=3D 1024) > *sps >>=3D 1; > =20 > - for (i =3D 0; i < ARRAY_SIZE(spare); i++) { > - if (*sps <=3D spare[i]) { > - if (!i) > - *sps =3D spare[i]; > - else if (*sps !=3D spare[i]) > - *sps =3D spare[i - 1]; > - break; > + for (i =3D 0; i < nfc->caps->num_spare_size; i++) { > + if ((*sps >=3D spare[i]) && (spare[i] >=3D spare[j])) { Parenthesis around the 'a >=3D b' tests are unneeded: if (*sps >=3D spare[i] && spare[i] >=3D spare[j]) { > + j =3D i; > + if (*sps =3D=3D spare[i]) > + break; > } > } > =20 > - if (i >=3D ARRAY_SIZE(spare)) > - *sps =3D spare[ARRAY_SIZE(spare) - 1]; Maybe you could return an error if you didn't find any entry that is less that *sps in the table, but I'm not sure this can really happen, and the minimum spare size seems to be the same for all IPs, this is something you can check before iterating over the array: if (*sps < MTK_NFC_MIN_SPARE) return -EINVAL; > + *sps =3D spare[j]; > =20 > if (nand->ecc.size =3D=3D 1024) > *sps <<=3D 1; > + > + return 0; > }