From mboxrd@z Thu Jan 1 00:00:00 1970 From: sjg at google.com Date: Fri, 10 Jan 2020 03:57:48 -0500 Subject: [PATCH 06/19] aspeed: ast2500: Read clock ofdata in the correct method In-Reply-To: References: <20191230041928.74874-1-sjg@chromium.org> <20191229211913.6.I9f208c8708d1b33625601d8034ef08e6305c09d5@changeid> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit To: u-boot@lists.denx.de Hi Cédric, On Tue, 7 Jan 2020 at 21:20, Cédric Le Goater wrote: > > On 12/30/19 5:19 AM, Simon Glass wrote: > > At present the clock driver reads its ofdata in the probe() method. This > > is not correct although it is often harmless. > > > > However in this case it causes a problem, something like this: > > > > - ast_get_scu() is called (from somewhere) to get the SCI address > > - this probes the clock > > - first sets up ofdata (which does nothing at present) > > - DM marks clock device as active > > - DM calls pinctrl > > - pinctrl probes and calls ast_get_scu() in ast2500_pinctrl_probe() > > - ast_get_scu() probes the clock, but sees it already marked as > > probed > > - ast_get_scu() accesses the clock's private data, with scu as NULL > > - DM calls clock probe function ast2500_clk_probe() which reads scu > > > > By putting the read of scu into the correct method, scu is read as part of > > ofdata setup, and everything is OK. > > > > Note: This problem did not matter until now since DM always probed all > > parents before reading a child's ofdata. The fact that pinctrl is a child > > of clock seems to trigger this strange bug. > > Did you find it with QEMU ? Yes that's right. > > > > > Signed-off-by: Simon Glass > > Reviewed-by: Cédric Le Goater > > C. > > > --- > > > > drivers/clk/aspeed/clk_ast2500.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > Applied to u-boot-dm, thanks!