Thread (39 messages) 39 messages, 8 authors, 2017-12-15

Re: [PATCH 5/5] PCI: cadence: add EndPoint Controller driver for Cadence PCIe controller

From: Cyrille Pitchen <hidden>
Date: 2017-12-15 11:50:09
Also in: linux-pci, lkml

Hi Kishon,

Le 15/12/2017 à 06:49, Kishon Vijay Abraham I a écrit :
Hi Cyrille,

On Thursday 14 December 2017 10:33 PM, Cyrille Pitchen wrote:
quoted
Le 13/12/2017 à 17:50, Cyrille Pitchen a écrit :
quoted
Hi Kishon,

Le 05/12/2017 à 10:19, Kishon Vijay Abraham I a écrit :
quoted
Hi,

On Friday 01 December 2017 05:50 PM, Lorenzo Pieralisi wrote:
quoted
On Thu, Nov 23, 2017 at 04:01:50PM +0100, Cyrille Pitchen wrote:
quoted
This patch adds support to the Cadence PCIe controller in endpoint mode.
Please add a brief description to the log to describe the most salient
features.
quoted
Signed-off-by: Cyrille Pitchen <cyrille.pitchen-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
---
 drivers/pci/cadence/Kconfig           |   9 +
 drivers/pci/cadence/Makefile          |   1 +
 drivers/pci/cadence/pcie-cadence-ep.c | 553 ++++++++++++++++++++++++++++++++++
 3 files changed, 563 insertions(+)
 create mode 100644 drivers/pci/cadence/pcie-cadence-ep.c
[...]
quoted
quoted
quoted
quoted
+static int cdns_pcie_ep_write_header(struct pci_epc *epc,
+				     struct pci_epf_header *hdr)
+{
+	struct cdns_pcie_ep *ep = epc_get_drvdata(epc);
+	struct cdns_pcie *pcie = &ep->pcie;
+	u8 fn = 0;
+
+	if (fn == 0) {
I think there is some code to retrieve fn missing here.
hmm.. the endpoint core has to send the function number which right now it's
not doing though it has the function number info in pci_epf.
Would it be OK if I add a new patch in the next series adding a
'struct pcie_epf *epf' as a 2nd argument to all handlers in the
'struct pcie_epc_ops'? This way I could have access to epf->func_no as needed.
I prefer we just pass the func_no as the second argument. Do you see a problem
with that?
quoted
quoted
Except for pci_epc_start() and pci_epc_stop(), both only called from
pci_epc_start_store(), I don't have trouble getting the epf value to be passed
as a 2nd argument to all other handlers in 'struct pcie_epc_ops'.
pci_epc_start()/pci_epc_stop() is used to start/stop the end point controller
as a whole and shouldn't need epf.
quoted
Now my next question is: is it better to keep the 'struct pci_epc *epc' as
the 1st argument of all those handlers or do you prefer me to remove it as
the value can always be retrieved from epf->epc, since now we provide epf as
a new argument ?
Do we really need to pass epf when func_no is all we need?
No, func_no alone is currently all I need so it's perfectly fine for me.
I've just wanted to ask before to be sure I implement the expected solution
before submitting :)

Thanks!

Cyrille

 
Thanks
Kishon

-- 
Cyrille Pitchen, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help