çå: [PATCH 1/2] PCI: dwc: kirin: add PCIe Driver for HiSilicon Kirin SoC

From: songxiaowei
Date: Thu May 18 2017 - 03:38:31 EST




-----éäåä-----
åää: arndbergmann@xxxxxxxxx [mailto:arndbergmann@xxxxxxxxx] äè Arnd Bergmann
åéæé: 2017å5æ18æ 4:29
æää: songxiaowei
æé: Bjorn Helgaas; Kishon; Jingoo Han; Tomasz Nowicki; Keith Busch; niklas.cassel@xxxxxxxx; Duc Dang; liudongdong (C); Chenfeng (puck); Guodong Xu; Wangbinghui; Suzhuangluan; Linux Kernel Mailing List; linux-pci
äé: Re: [PATCH 1/2] PCI: dwc: kirin: add PCIe Driver for HiSilicon Kirin SoC

On Fri, May 12, 2017 at 3:51 AM, Song Xiaowei <songxiaowei@xxxxxxxxxxxxx> wrote:
> From: songxiaowei <songxiaowei@xxxxxxxxxxxxx>

Looks good overall, just a few details:

Please fix your ~/.gitconfig to contain the same real name ("Song Xiaowei"
instead of "songxiaowei") that you use for sending the emails.

> +
> +static int kirin_pcie_phy_init(struct kirin_pcie *kirin_pcie) {
...
> + reg_val = kirin_apb_phy_readl(kirin_pcie, 0x400);
> + while (reg_val & pipe_clk_stable) {
> + udelay(100);
> + if (time == 0) {
> + dev_err(kirin_pcie->pci->dev, "PIPE clk is not stable\n");
> + return -EINVAL;
> + }
> + time--;
> + reg_val = kirin_apb_phy_readl(kirin_pcie, 0x400);
> + }

If this is not called with interrupts disabled, please use a sleeping function (e.g. msleep(1)) as the delay and compare against ktime_before() to see how much total time has expired when waiting for a timeout, instead of using a counter.

Since the time of pipe clk stable is from 450us to 520us, I think function usleep_range is better.
The patches is going to be updated.
-Xiaowei.

> diff --git a/drivers/pci/dwc/pcie-kirin.h
> b/drivers/pci/dwc/pcie-kirin.h new file mode 100644 index
> 000000000000..ad9a3b427298
> --- /dev/null
> +++ b/drivers/pci/dwc/pcie-kirin.h
> @@ -0,0 +1,79 @@
> +/*
> + * PCIe host controller driver for Kirin 960 SoCs
> + *
> + * Copyright (C) 2015 Huawei Electronics Co., Ltd.
> + * http://www.huawei.com
> + *
> + * Author: Xiaowei Song <songxiaowei@xxxxxxxxxx>

The header is only used in one .c file, so just remove it and add the contents to that file.

Arnd