From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tony Lindgren Subject: Re: [PATCH 2/2] memory: omap-gpmc: Add Kconfig option for debug Date: Tue, 5 Jan 2016 14:49:29 -0800 Message-ID: <20160105224929.GF12777@atomide.com> References: <1432156863-19695-1-git-send-email-tony@atomide.com> <568662FC.9050206@gmail.com> <20160104170206.GC12777@atomide.com> <201601041834.56056@pali> <20160104174001.GD12777@atomide.com> <568AC0F9.2010304@gmail.com> <20160105041356.GE12777@atomide.com> <20160105084947.GG22661@pali> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20160105084947.GG22661@pali> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Pali =?utf-8?B?Um9ow6Fy?= Cc: Nishanth Menon , Paul Walmsley , Ivaylo Dimitrov , Aaro Koskinen , Sebastian Reichel , pavel@ucw.cz, linux-omap@vger.kernel.org, Brian Hutchinson , linux-arm-kernel@lists.infradead.org, Roger Quadros List-Id: linux-omap@vger.kernel.org KiBQYWxpIFJvaMOhciA8cGFsaS5yb2hhckBnbWFpbC5jb20+IFsxNjAxMDUgMDA6NTBdOgo+IE9u IE1vbmRheSAwNCBKYW51YXJ5IDIwMTYgMjA6MTM6NTYgVG9ueSBMaW5kZ3JlbiB3cm90ZToKPiA+ ICogSXZheWxvIERpbWl0cm92IDxpdm8uZy5kaW1pdHJvdi43NUBnbWFpbC5jb20+IFsxNjAxMDQg MTA6NTldOgo+ID4gPiBIaSwKPiA+ID4gCj4gPiA+IE9uICA0LjAxLjIwMTYgMTk6NDAsIFRvbnkg TGluZGdyZW4gd3JvdGU6Cj4gPiA+ID4+T24gTW9uZGF5IDA0IEphbnVhcnkgMjAxNiAxODowMjow NiBUb255IExpbmRncmVuIHdyb3RlOgo+ID4gPiA+Pj4+ID5DYXJlIHRvIGJvb3Qgd2l0aCBDT05G SUdfT01BUF9HUE1DX0RFQlVHPXkgYW5kIHBvc3QgdGhlIGdwbWMgcmVsYXRlZAo+ID4gPiA+Pj4+ ID5kbWVzZyBvdXRwdXQ/Cj4gPiA+IAo+ID4gPiBIZXJlIGl0IGlzLCBpbmNsdWRpbmcgdGhlIHBy ZS1ncG1jIGxvZywga2VlcCBpbiBtaW5kIHRoaXMgaXMgd2l0aCByZXN0b3JlZAo+ID4gPiBIV01P RF9JTklUX05PX1JFU0VUIGZsYWcgc28gcm9vdGZzIGlzIGZ1bmN0aW9uYWwgYW5kIEkgY2FuIGdl dCBkbWVzZyBvdXRwdXQKPiA+ID4gZnJvbSB0aGUgc3lzbG9nLiBEb24ndCBrbm93IGlmIGl0IGlz IGhlbHBmdWwgOikuIEFsc28sIHRoaXMgZGV2aWNlIGhhcwo+ID4gPiBOdW1vbnl4IG9uZW5hbmQg KEhXIHJldi4gMjIwNCksIHVubGlrZSBtb3N0IG9mIHRoZSBvdGhlcnMgd2hpY2ggaGF2ZSBTYW1z dW5nCj4gPiA+IG9uZW5hbmQgKEhXIHJldi4gMjEwMSBldGMpLCBubyBpZGVhIGlmIGl0IGlzIHJl bGV2YW50Lgo+ID4gCj4gPiBUaGFua3MuIEkgZ290IHRoZSBwcm9ibGVtIHJlcHJvZHVjZWQgaGVy ZSB0b28uCj4gPiAKPiA+IFsgICAgMS45MTU1NTddIGdwbWMgY3MwIGFmdGVyIGdwbWNfY3Nfc2V0 X3RpbWluZ3M6Cj4gPiBbICAgIDEuOTIwNDEwXSBjczAgR1BNQ19DU19DT05GSUcxOiAweGZiMDAx MjAxCj4gPiAKPiA+IExvb2tzIGxpa2UgaW4gdGhlIGZhaWxpbmcgY2FzZSB0aGUgY2xvY2sgcmF0 ZXMgYXJlIG5vdCBwcm9wZXJseQo+ID4gY2FsY3VsYXRlZCBpbiBHUE1DIGFuZCBHUE1DRkNMS0RJ VklERVIgaXMgc2V0IHdyb25nIGluCj4gPiBHUE1DX0NTX0NPTkZJRzEuIE5lZWQgdG8gbG9vayBh dCBpdCBtb3JlIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIHRoZQo+ID4gYmVzdCB3YXkgdG8gZml4IHRo aXMuCj4gPiAKPiA+IFJlZ2FyZHMsCj4gPiAKPiA+IFRvbnkKPiAKPiBIbS4uLiBNYXliZSB0aGlz IHByb2JsZW0gaXMgaW4gVS1Cb290IHRvbz8KClllYWggbWF5YmUuIExvb2tzIGxpa2Ugd2UgbmVl ZCBzeW5jIHdyaXRlIGJpdCBzZXQgYWxzbyBmb3IgYXN5bmMKdGltaW5ncyBmb3Igb21hcDJfb25l bmFuZF9zZXRfYXN5bmNfbW9kZSgpIHRvIHdvcmsgdG8gZGV0ZWN0IHRoZQpvbmVuYW5kIHJhdGUg Zm9yIHN5bmMgbW9kZSA6KQoKU3VnZ2VzdGVkIGZpeCBiZWxvdywgcGxlYXNlIHRlc3QgYW5kIHJl cGx5IHdpdGggeW91ciBUZXN0ZWQtYnkncyBpZgppdCBzb2x2ZXMgdGhlIHByb2JsZW0gc28gd2Ug bWF5IHN0aWxsIGJlIGFibGUgdG8gZ2V0IHRoaXMgaW50byB2NC40LgoKUmVnYXJkcywKClRvbnkK Cjg8IC0tLS0tLS0tLS0tLS0tLQpGcm9tOiBUb255IExpbmRncmVuIDx0b255QGF0b21pZGUuY29t PgpEYXRlOiBUdWUsIDUgSmFuIDIwMTYgMTI6MDQ6MjAgLTA4MDAKU3ViamVjdDogW1BBVENIXSBB Uk06IE9NQVAyKzogRml4IG9uZW5hbmQgcmF0ZSBkZXRlY3Rpb24gdG8gYXZvaWQgZmlsZXN5c3Rl bQogY29ycnVwdGlvbgoKQ29tbWl0IDYzYWE5NDViMTAxMyAoIm1lbW9yeTogb21hcC1ncG1jOiBB ZGQgS2NvbmZpZyBvcHRpb24gZm9yIGRlYnVnIikKdW5pZmllZCB0aGUgR1BNQyBkZWJ1ZyBmb3Ig dGhlIFNvQ3Mgd2l0aCBHUE1DLiBUaGUgY29tbWl0IGFsc28gbGVmdApvdXQgdGhlIG9wdGlvbiBm b3IgSFdNT0RfSU5JVF9OT19SRVNFVCBhcyB3ZSBub3cgcmVxdWlyZSBwcm9wZXIgdGltaW5ncwpm b3IgR1BNQyB0byBiZSBhYmxlIHRvIHJlbWFwIEdQTUMgZGV2aWNlcyBvdXQgb2YgYWRkcmVzcyAw LgoKVW5mb3J0dW5hdGVseSBvbiA5MDAsIG9uZW5hbmQgbm93IG9ubHkgcGFydGlhbGx5IHdvcmtz IHdpdGggdGhlIGRldmljZQp0cmVlIHByb3ZpZGVkIHRpbWluZ3MuIEl0IHdvcmtzIGVub3VnaCB0 byBnZXQgZGV0ZWN0ZWQgYnV0IHRoZSBjbG9jawpyYXRlIHN1cHBvcnRlZCBieSB0aGUgb25lbmFu ZCBjaGlwIGdldHMgbWlzZGV0ZWN0ZWQuIFRoaXMgaW4gdHVybiBjYXVzZXMKdGhlIEdQTUMgdGlt aW5ncyB0byBiZSBtaXNjYWxjdWxhdGVkIGFuZCB0aGlzIGxlYWRzIGludG8gZmlsZSBzeXN0ZW0K Y29ycnVwdGlvbiBvbiBuOTAwLgoKTG9va3MgbGlrZSBvbmVuYW5kIG5lZWRzIENTX0NPTkZJRzEg Yml0IDI3IFdSSVRFVFlQRSBzZXQgZm9yIGZvciBzeW5jCndyaXRlLiBUaGlzIGlzIG5lZWRlZCBh bHNvIGZvciBhc3luYyB0aW1pbmdzIHdoZW4gd2Ugd3JpdGUgdG8gb25lbmFuZAp3aXRoIG9tYXAy X29uZW5hbmRfc2V0X2FzeW5jX21vZGUoKS4gV2l0aG91dCBzeW5jIHdyaXRlIGJpdCBzZXQsIHRo ZQphc3luYyByZWFkIGZvciB0aGUgb25lbmFuZCBPTkVOQU5EX1JFR19WRVJTSU9OX0lEIHdpbGwg cmV0dXJuIDB4ZmZmLgoKTGV0J3MgZXhpdCB3aXRoIGFuIGVycm9yIGlmIG9uZW5hbmQgcmF0ZSBp cyBub3QgZGV0ZWN0ZWQuIEFuZCBsZXQncwpyZW1vdmUgdGhlIGV4dHJhIGNhbGwgdG8gb21hcDJf b25lbmFuZF9zZXRfYXN5bmNfbW9kZSgpIGFzIHdlIG9ubHkKbmVlZCB0byBkbyB0aGlzIG9uY2Ug YXQgdGhlIGVuZCBvZiBvbWFwMl9vbmVuYW5kX3NldHVwX2FzeW5jKCkuCgpSZXBvcnRlZC1ieTog SXZheWxvIERpbWl0cm92IDxpdm8uZy5kaW1pdHJvdi43NUBnbWFpbC5jb20+ClNpZ25lZC1vZmYt Ynk6IFRvbnkgTGluZGdyZW4gPHRvbnlAYXRvbWlkZS5jb20+CgotLS0gYS9hcmNoL2FybS9tYWNo LW9tYXAyL2dwbWMtb25lbmFuZC5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvZ3BtYy1vbmVu YW5kLmMKQEAgLTE0OSw4ICsxNDksOCBAQCBzdGF0aWMgaW50IG9tYXAyX29uZW5hbmRfZ2V0X2Zy ZXEoc3RydWN0IG9tYXBfb25lbmFuZF9wbGF0Zm9ybV9kYXRhICpjZmcsCiAJCWZyZXEgPSAxMDQ7 CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWZyZXEgPSA1NDsKLQkJYnJlYWs7CisJCXByX2Vycigi b25lbmFuZCByYXRlIG5vdCBkZXRlY3RlZCwgYmFkIEdQTUMgYXN5bmMgdGltaW5ncz9cbiIpOwor CQlmcmVxID0gMDsKIAl9CiAKIAlyZXR1cm4gZnJlcTsKQEAgLTI3MSw2ICsyNzEsMTEgQEAgc3Rh dGljIGludCBvbWFwMl9vbmVuYW5kX3NldHVwX2FzeW5jKHZvaWQgX19pb21lbSAqb25lbmFuZF9i YXNlKQogCXN0cnVjdCBncG1jX3RpbWluZ3MgdDsKIAlpbnQgcmV0OwogCisJLyoKKwkgKiBOb3Rl IHRoYXQgd2UgbmVlZCB0byBrZWVwIHN5bmNfd3JpdGUgc2V0IGZvciB0aGUgY2FsbCB0bworCSAq IG9tYXAyX29uZW5hbmRfc2V0X2FzeW5jX21vZGUoKSB0byB3b3JrIHRvIGRldGVjdCB0aGUgb25l bmFuZAorCSAqIHN1cHBvcnRlZCBjbG9jayByYXRlIGZvciB0aGUgc3luYyB0aW1pbmdzLgorCSAq LwogCWlmIChncG1jX29uZW5hbmRfZGF0YS0+b2Zfbm9kZSkgewogCQlncG1jX3JlYWRfc2V0dGlu Z3NfZHQoZ3BtY19vbmVuYW5kX2RhdGEtPm9mX25vZGUsCiAJCQkJICAgICAgJm9uZW5hbmRfYXN5 bmMpOwpAQCAtMjgxLDEyICsyODYsOSBAQCBzdGF0aWMgaW50IG9tYXAyX29uZW5hbmRfc2V0dXBf YXN5bmModm9pZCBfX2lvbWVtICpvbmVuYW5kX2Jhc2UpCiAJCQllbHNlCiAJCQkJZ3BtY19vbmVu YW5kX2RhdGEtPmZsYWdzIHw9IE9ORU5BTkRfU1lOQ19SRUFEOwogCQkJb25lbmFuZF9hc3luYy5z eW5jX3JlYWQgPSBmYWxzZTsKLQkJCW9uZW5hbmRfYXN5bmMuc3luY193cml0ZSA9IGZhbHNlOwog CQl9CiAJfQogCi0Jb21hcDJfb25lbmFuZF9zZXRfYXN5bmNfbW9kZShvbmVuYW5kX2Jhc2UpOwot CiAJb21hcDJfb25lbmFuZF9jYWxjX2FzeW5jX3RpbWluZ3MoJnQpOwogCiAJcmV0ID0gZ3BtY19j c19wcm9ncmFtX3NldHRpbmdzKGdwbWNfb25lbmFuZF9kYXRhLT5jcywgJm9uZW5hbmRfYXN5bmMp OwpAQCAtMzEwLDYgKzMxMiw4IEBAIHN0YXRpYyBpbnQgb21hcDJfb25lbmFuZF9zZXR1cF9zeW5j KHZvaWQgX19pb21lbSAqb25lbmFuZF9iYXNlLCBpbnQgKmZyZXFfcHRyKQogCWlmICghZnJlcSkg ewogCQkvKiBWZXJ5IGZpcnN0IGNhbGwgZnJlcSBpcyBub3Qga25vd24gKi8KIAkJZnJlcSA9IG9t YXAyX29uZW5hbmRfZ2V0X2ZyZXEoZ3BtY19vbmVuYW5kX2RhdGEsIG9uZW5hbmRfYmFzZSk7CisJ CWlmICghZnJlcSkKKwkJCXJldHVybiAtRU5PREVWOwogCQlzZXRfb25lbmFuZF9jZmcob25lbmFu ZF9iYXNlKTsKIAl9CiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2xpbnV4LWFybS1rZXJuZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: tony@atomide.com (Tony Lindgren) Date: Tue, 5 Jan 2016 14:49:29 -0800 Subject: [PATCH 2/2] memory: omap-gpmc: Add Kconfig option for debug In-Reply-To: <20160105084947.GG22661@pali> References: <1432156863-19695-1-git-send-email-tony@atomide.com> <568662FC.9050206@gmail.com> <20160104170206.GC12777@atomide.com> <201601041834.56056@pali> <20160104174001.GD12777@atomide.com> <568AC0F9.2010304@gmail.com> <20160105041356.GE12777@atomide.com> <20160105084947.GG22661@pali> Message-ID: <20160105224929.GF12777@atomide.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org * Pali Roh?r [160105 00:50]: > On Monday 04 January 2016 20:13:56 Tony Lindgren wrote: > > * Ivaylo Dimitrov [160104 10:59]: > > > Hi, > > > > > > On 4.01.2016 19:40, Tony Lindgren wrote: > > > >>On Monday 04 January 2016 18:02:06 Tony Lindgren wrote: > > > >>>> >Care to boot with CONFIG_OMAP_GPMC_DEBUG=y and post the gpmc related > > > >>>> >dmesg output? > > > > > > Here it is, including the pre-gpmc log, keep in mind this is with restored > > > HWMOD_INIT_NO_RESET flag so rootfs is functional and I can get dmesg output > > > from the syslog. Don't know if it is helpful :). Also, this device has > > > Numonyx onenand (HW rev. 2204), unlike most of the others which have Samsung > > > onenand (HW rev. 2101 etc), no idea if it is relevant. > > > > Thanks. I got the problem reproduced here too. > > > > [ 1.915557] gpmc cs0 after gpmc_cs_set_timings: > > [ 1.920410] cs0 GPMC_CS_CONFIG1: 0xfb001201 > > > > Looks like in the failing case the clock rates are not properly > > calculated in GPMC and GPMCFCLKDIVIDER is set wrong in > > GPMC_CS_CONFIG1. Need to look at it more to figure out what's the > > best way to fix this. > > > > Regards, > > > > Tony > > Hm... Maybe this problem is in U-Boot too? Yeah maybe. Looks like we need sync write bit set also for async timings for omap2_onenand_set_async_mode() to work to detect the onenand rate for sync mode :) Suggested fix below, please test and reply with your Tested-by's if it solves the problem so we may still be able to get this into v4.4. Regards, Tony 8< --------------- From: Tony Lindgren Date: Tue, 5 Jan 2016 12:04:20 -0800 Subject: [PATCH] ARM: OMAP2+: Fix onenand rate detection to avoid filesystem corruption Commit 63aa945b1013 ("memory: omap-gpmc: Add Kconfig option for debug") unified the GPMC debug for the SoCs with GPMC. The commit also left out the option for HWMOD_INIT_NO_RESET as we now require proper timings for GPMC to be able to remap GPMC devices out of address 0. Unfortunately on 900, onenand now only partially works with the device tree provided timings. It works enough to get detected but the clock rate supported by the onenand chip gets misdetected. This in turn causes the GPMC timings to be miscalculated and this leads into file system corruption on n900. Looks like onenand needs CS_CONFIG1 bit 27 WRITETYPE set for for sync write. This is needed also for async timings when we write to onenand with omap2_onenand_set_async_mode(). Without sync write bit set, the async read for the onenand ONENAND_REG_VERSION_ID will return 0xfff. Let's exit with an error if onenand rate is not detected. And let's remove the extra call to omap2_onenand_set_async_mode() as we only need to do this once at the end of omap2_onenand_setup_async(). Reported-by: Ivaylo Dimitrov Signed-off-by: Tony Lindgren --- a/arch/arm/mach-omap2/gpmc-onenand.c +++ b/arch/arm/mach-omap2/gpmc-onenand.c @@ -149,8 +149,8 @@ static int omap2_onenand_get_freq(struct omap_onenand_platform_data *cfg, freq = 104; break; default: - freq = 54; - break; + pr_err("onenand rate not detected, bad GPMC async timings?\n"); + freq = 0; } return freq; @@ -271,6 +271,11 @@ static int omap2_onenand_setup_async(void __iomem *onenand_base) struct gpmc_timings t; int ret; + /* + * Note that we need to keep sync_write set for the call to + * omap2_onenand_set_async_mode() to work to detect the onenand + * supported clock rate for the sync timings. + */ if (gpmc_onenand_data->of_node) { gpmc_read_settings_dt(gpmc_onenand_data->of_node, &onenand_async); @@ -281,12 +286,9 @@ static int omap2_onenand_setup_async(void __iomem *onenand_base) else gpmc_onenand_data->flags |= ONENAND_SYNC_READ; onenand_async.sync_read = false; - onenand_async.sync_write = false; } } - omap2_onenand_set_async_mode(onenand_base); - omap2_onenand_calc_async_timings(&t); ret = gpmc_cs_program_settings(gpmc_onenand_data->cs, &onenand_async); @@ -310,6 +312,8 @@ static int omap2_onenand_setup_sync(void __iomem *onenand_base, int *freq_ptr) if (!freq) { /* Very first call freq is not known */ freq = omap2_onenand_get_freq(gpmc_onenand_data, onenand_base); + if (!freq) + return -ENODEV; set_onenand_cfg(onenand_base); }