[U-Boot] [PATCH] fsl/pcie: Change 'no link' to 'undetermined' for pcie endpoint

Even u-boot boots up, the pcie link may not setup correctly when Freescale SOC acts as endpoint. So change the link status from 'no link' to 'undetermined' to reduce the confusion. The link status can check from host side eventually.
Signed-off-by: Roy Zang tie-fei.zang@freescale.com --- drivers/pci/fsl_pci_init.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/fsl_pci_init.c b/drivers/pci/fsl_pci_init.c index 3a41b0e..231b075 100644 --- a/drivers/pci/fsl_pci_init.c +++ b/drivers/pci/fsl_pci_init.c @@ -504,8 +504,14 @@ void fsl_pci_init(struct pci_controller *hose, struct fsl_pci_info *pci_info) } #endif if (!enabled) { - /* Let the user know there's no PCIe link */ - printf("no link, regs @ 0x%lx\n", pci_info->regs); + /* Let the user know there's no PCIe link for root + * complex. for endpoint, the link may not setup, so + * print undetermined. + */ + if (fsl_is_pci_agent(hose)) + printf("undetermined, regs @ 0x%lx\n", pci_info->regs); + else + printf("no link, regs @ 0x%lx\n", pci_info->regs); hose->last_busno = hose->first_busno; return; }

Dear Roy Zang,
In message 1402602563-26705-1-git-send-email-tie-fei.zang@freescale.com you wrote:
Even u-boot boots up, the pcie link may not setup correctly when Freescale SOC acts as endpoint. So change the link status from 'no link' to 'undetermined' to reduce the confusion. The link status can check from host side eventually.
Sorry, but can you please explain what exactly you are doing here? I'm sorry, but I don't understand above text.
Best regards,
Wolfgang Denk

On 06/12/2014 03:56 PM, Wolfgang Denk wrote:
Dear Roy Zang,
In message 1402602563-26705-1-git-send-email-tie-fei.zang@freescale.com you wrote:
Even u-boot boots up, the pcie link may not setup correctly when Freescale SOC acts as endpoint. So change the link status from 'no link' to 'undetermined' to reduce the confusion. The link status can check from host side eventually.
Sorry, but can you please explain what exactly you are doing here? I'm sorry, but I don't understand above text.
Freescale card acted as PCIe endpoint plugs into a X86 host via PCIe slot. We do see some case that the u-boot prints "no link" when boot up, however in X86 Linux, the pcie link sets up correctly. Host Linux boots up slow than u-boot. So if u-boot can capture the link up status, it will print the endpoint link up status, or it will print "undetermined" to reduce confusion. User can still confirm the link up status from host. Thank. Roy

Hi Roy,
On 6/13/2014 1:19 AM, Roy Zang wrote:
Even u-boot boots up, the pcie link may not setup correctly when Freescale SOC acts as endpoint. So change the link status from 'no link' to 'undetermined' to reduce the confusion. The link status can check from host side eventually.
Signed-off-by: Roy Zang tie-fei.zang@freescale.com
drivers/pci/fsl_pci_init.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/fsl_pci_init.c b/drivers/pci/fsl_pci_init.c index 3a41b0e..231b075 100644 --- a/drivers/pci/fsl_pci_init.c +++ b/drivers/pci/fsl_pci_init.c @@ -504,8 +504,14 @@ void fsl_pci_init(struct pci_controller *hose, struct fsl_pci_info *pci_info) } #endif if (!enabled) {
/* Let the user know there's no PCIe link */
printf("no link, regs @ 0x%lx\n", pci_info->regs);
/* Let the user know there's no PCIe link for root
* complex. for endpoint, the link may not setup, so
* print undetermined.
*/
if (fsl_is_pci_agent(hose))
printf("undetermined, regs @ 0x%lx\n", pci_info->regs);
As description of commit message saying "The link status can check from host side eventually " It will be good, if we can also print link status at this point to let user know about status of end point.
-prabhakar

On 06/12/2014 10:22 PM, Prabhakar Kushwaha wrote:
Hi Roy,
On 6/13/2014 1:19 AM, Roy Zang wrote:
Even u-boot boots up, the pcie link may not setup correctly when Freescale SOC acts as endpoint. So change the link status from 'no link' to 'undetermined' to reduce the confusion. The link status can check from host side eventually.
Signed-off-by: Roy Zang tie-fei.zang@freescale.com
drivers/pci/fsl_pci_init.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/fsl_pci_init.c b/drivers/pci/fsl_pci_init.c index 3a41b0e..231b075 100644 --- a/drivers/pci/fsl_pci_init.c +++ b/drivers/pci/fsl_pci_init.c @@ -504,8 +504,14 @@ void fsl_pci_init(struct pci_controller *hose, struct fsl_pci_info *pci_info) } #endif if (!enabled) {
/* Let the user know there's no PCIe link */
printf("no link, regs @ 0x%lx\n", pci_info->regs);
/* Let the user know there's no PCIe link for root
* complex. for endpoint, the link may not setup, so
* print undetermined.
*/
if (fsl_is_pci_agent(hose))
printf("undetermined, regs @ 0x%lx\n", pci_info->regs);
As description of commit message saying "The link status can check from host side eventually " It will be good, if we can also print link status at this point to let user know about status of end point.
however, the *no link* status prints by u-boot may not reflect the final link up status. It will cause confusion. Roy
participants (3)
-
Prabhakar Kushwaha
-
Roy Zang
-
Wolfgang Denk