Thread (19 messages) 19 messages, 6 authors, 2020-02-22

Re: [PATCH v4 5/6] PCI: rcar: Add support for rcar PCIe controller in endpoint mode

From: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
Date: 2020-02-12 07:39:00
Also in: linux-devicetree, linux-pci, linux-renesas-soc, linux-rockchip, lkml

Hi Nathan,

On Wed, Feb 12, 2020 at 3:42 AM Nathan Chancellor
[off-list ref] wrote:
Hi Lad,

On Sat, Feb 08, 2020 at 06:36:40PM +0000, Lad Prabhakar wrote:
quoted
This patch adds support for rcar PCIe controller to work in endpoint mode.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/pci/controller/Kconfig        |   7 +
 drivers/pci/controller/Makefile       |   1 +
 drivers/pci/controller/pcie-rcar-ep.c | 492 ++++++++++++++++++++++++++++++++++
 drivers/pci/controller/pcie-rcar.h    |   6 +
 4 files changed, 506 insertions(+)
 create mode 100644 drivers/pci/controller/pcie-rcar-ep.c
<snip>
quoted
diff --git a/drivers/pci/controller/pcie-rcar-ep.c b/drivers/pci/controller/pcie-rcar-ep.c
new file mode 100644
index 0000000..32a7fca
--- /dev/null
+++ b/drivers/pci/controller/pcie-rcar-ep.c
<snip>
quoted
+static int rcar_pcie_ep_set_bar(struct pci_epc *epc, u8 func_no,
+                             struct pci_epf_bar *epf_bar)
+{
+     struct rcar_pcie *ep = epc_get_drvdata(epc);
+     dma_addr_t cpu_addr = epf_bar->phys_addr;
+     int flags = epf_bar->flags | LAR_ENABLE | LAM_64BIT;
+     enum pci_barno bar = epf_bar->barno;
+     u64 size = 1ULL << fls64(epf_bar->size - 1);
+     u32 mask;
+     int idx;
+     int err;
+
+     idx = find_first_zero_bit(ep->ib_window_map, ep->num_ib_windows);
+     if (idx >= ep->num_ib_windows) {
+             dev_err(ep->dev, "no free inbound window\n");
+             return -EINVAL;
+     }
+
+     if ((flags & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO)
+             flags |= IO_SPACE;
+
+     ep->bar_to_atu[bar] = idx;
+     /* use 64 bit bars */
+     set_bit(idx, ep->ib_window_map);
+     set_bit(idx + 1, ep->ib_window_map);
+
+     if (cpu_addr > 0) {
+             unsigned long nr_zeros = __ffs64(cpu_addr);
+             u64 alignment = 1ULL << nr_zeros;
+
+             size = min(size, alignment);
+     } else {
+             size = size;
+     }
We received a report from the 0day bot that clang warns that this is
unnecessary. Would you mind removing it if you have to spin up a new
version?
Sure ill fix that.

Cheers,
--Prabhakar Lad
You can view the full report here:

https://groups.google.com/d/msg/clang-built-linux/KHUKw5L8yxw/Mb7KRMG7BQAJ

Cheers,
Nathan
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help