
On 5/2/19 5:46 AM, Ley Foon Tan wrote:
On Tue, Apr 30, 2019 at 5:56 PM Marek Vasut marex@denx.de wrote:
On 4/30/19 9:40 AM, Ley Foon Tan wrote: [...]
> +static int altera_sdram_probe(struct udevice *dev) > +{ > + int ret; > + struct reset_ctl_bulk resets; > + > + ret = reset_get_bulk(dev, &resets); > + if (ret) { > + dev_err(dev, "Can't get reset: %d\n", ret); > + return -ENODEV; > + } > + reset_deassert_bulk(&resets); > + > + if (sdram_mmr_init_full(dev) != 0) { > + puts("SDRAM init failed.\n"); > + goto failed; > + } > + > + return 0; > + > +failed: > + reset_release_bulk(&resets); > + return -ENODEV; > } Are you missing altera_sdram_remove() , which would assert reset here ?
Will add it.
But won't that prevent the DRAM controller from working ?
Added assert reset in _remove, SDRAM controller still can work after boot to Uboot. Seem _remove is not called when boot to Uboot.
Look at DM_FLAG_OS_PREPARE
Tested add DM_FLAG_OS_PREPARE flag, but still didn't see it call to _remove().
BTW, I think we shouldn't assert SDRAM controller. Otherwise, SDRAM is not working in next boot stage.
Hence my question above -- "But won't that prevent the DRAM controller from working ?"
I think you're right.