[U-Boot] [RFC] drivers: pci: imx: add imx_pcie_remove function

Soeren Moch smoch at web.de
Fri May 12 19:27:20 UTC 2017


> Date: Thu, 11 May 2017 07:02:52 -0700
> From: Tim Harvey <tharvey at gateworks.com>
> To: Stefano Babic <sbabic at denx.de>
> Cc: Marek Vasut <marex at denx.de>, U-Boot-Denx <u-boot at lists.denx.de>,
>     Peter Senna Tschudin <peter.senna at collabora.com>, Lucas Stach
>     <l.stach at pengutronix.de>
> Subject: Re: [U-Boot] [RFC] drivers: pci: imx: add imx_pcie_remove
>     function
> Message-ID:
>     <CAJ+vNU2MOp_1bsh5MusGauJPdASB7+KDPQGdg+YU4gfbtBSBhQ at mail.gmail.com>
> Content-Type: text/plain; charset="UTF-8"
>
> On Thu, May 11, 2017 at 6:18 AM, Stefano Babic <sbabic at denx.de> wrote:
> > Hi Fabio,
> >
> > On 11/05/2017 13:06, Fabio Estevam wrote:
> >> On Thu, May 11, 2017 at 6:01 AM, Peter Senna Tschudin
> >> <peter.senna at collabora.com> wrote:
> >>
> >>> Thank you for working on this! Your patch worked for me, but I
needed to
> >>> add an "extern void imx_pcie_remove(void);" before calling the
function,
> >>> which probably means I'm missing something.
> >> The extern should be added into a header file.
> >>
> >>> After applying this patch to u-boot, u-boot can initialize PCI and
> >>> 4.11.0-next-20170510 will boot. Without your patch
4.11.0-next-20170510
> >>> do not boot if u-boot initialize the PCI bus.
> >>>
> >>> Thanks a lot!
> >>>
> >>> Here is the patch I'm using for our board:
> >> Stefano,
> >>
> >> The patches that Tim/Peter posted solve a kernel hang with kernel 4.11
> >> on mx6q when U-Boot has PCI support.
> >>
> >> Could you please take a look and let us know if there is a more
> >> generic way to fix this issue, like fixing it for all mx6qdl boards
> >> that have PCI support?
> >>
> >> I understand that ideally the imx6 pci driver should be converted to
> >> driver model and then we add the .remove hook, like Lucas did for
> >> Barebox:
> >>
https://git.pengutronix.de/cgit/barebox/commit/?id=f1da98da2760c21487bbba8f7fb957c843a22896
> >>
> >> While the imx pci driver is not converted to device model, would you
> >> be willing to accept such per board patches for the time being?
> >>
> >> Please advise.
> >
> > Ok - let wait for Tim's answer, if he has enough time to work on this to
> > move to DM. If not, it will be ok for now to fix it in this way, hoping
> > to move soon to DM.
> >
> > Regards,
> > Stefano
> Stefano,
>
> I don't have enough time to work on the DM conversion currently but it
> sounds like this would be a welcomed 'fix' that we should get in
> sooner than later.
>
> I know the include is missing from a header but I didn't bother as I
> though there would be a better arch-specific place to put the call to
> the remove. I don't think putting it in ft_board_setup made sense. Do
> you have any suggestions where it should go?
>
> Tim

Tim,

this patch in addition to your original drivers/pci/pcie_imx.c changes
works for me on a tbs2910 board.
Since I did not touch board-specific code, this should also work for
all affected boards.

Regards,
Soeren


diff --git a/arch/arm/imx-common/cpu.c b/arch/arm/imx-common/cpu.c
index 40fe813..7ed9ca0 100644
--- a/arch/arm/imx-common/cpu.c
+++ b/arch/arm/imx-common/cpu.c
@@ -273,8 +273,13 @@ u32 get_ahb_clk(void)
 }
 #endif
 
+extern void imx_pcie_remove(void);
+
 void arch_preboot_os(void)
 {
+#if defined(CONFIG_PCIE_IMX)
+       imx_pcie_remove();
+#endif
 #if defined(CONFIG_CMD_SATA)
        sata_stop();
 #if defined(CONFIG_MX6)




More information about the U-Boot mailing list