[U-Boot] pci: Add comment to mention difference in DEVFN usage in U-Boot vs Linux

Message ID 20190211074325.7499-1-sr@denx.de
State Accepted
Commit 2253d648f11e844d2dcf572b3bb961e1a7a2b00b
Delegated to: Tom Rini
Headers show
Series
  • [U-Boot] pci: Add comment to mention difference in DEVFN usage in U-Boot vs Linux
Related show

Commit Message

Stefan Roese Feb. 11, 2019, 7:43 a.m.
This patch adds a comment to the header with the PCI_foo macros related
to DEVFN to explain the difference in U-Boot vs Linux.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Simon Glass <sjg@chromium.org>
Cc: Bin Meng <bmeng.cn@gmail.com>
---
 include/pci.h | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Simon Glass Feb. 21, 2019, 2:47 a.m. | #1
On Mon, 11 Feb 2019 at 00:43, Stefan Roese <sr@denx.de> wrote:
>
> This patch adds a comment to the header with the PCI_foo macros related
> to DEVFN to explain the difference in U-Boot vs Linux.
>
> Signed-off-by: Stefan Roese <sr@denx.de>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Bin Meng <bmeng.cn@gmail.com>
> ---
>  include/pci.h | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>

Reviewed-by: Simon Glass <sjg@chromium.org>
Tom Rini March 22, 2019, 11:16 p.m. | #2
On Mon, Feb 11, 2019 at 08:43:25AM +0100, Stefan Roese wrote:

> This patch adds a comment to the header with the PCI_foo macros related
> to DEVFN to explain the difference in U-Boot vs Linux.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>
> Cc: Simon Glass <sjg@chromium.org>
> Cc: Bin Meng <bmeng.cn@gmail.com>
> Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

Patch

diff --git a/include/pci.h b/include/pci.h
index 041f8e3747..93fdd8fe6a 100644
--- a/include/pci.h
+++ b/include/pci.h
@@ -499,9 +499,20 @@  static inline void pci_set_region(struct pci_region *reg,
 typedef int pci_dev_t;
 
 #define PCI_BUS(d)		(((d) >> 16) & 0xff)
+
+/*
+ * Please note the difference in DEVFN usage in U-Boot vs Linux. U-Boot
+ * uses DEVFN in bits 15-8 but Linux instead expects DEVFN in bits 7-0.
+ * Please see the Linux header include/uapi/linux/pci.h for more details.
+ * This is relevant for the following macros:
+ * PCI_DEV, PCI_FUNC, PCI_DEVFN
+ * The U-Boot macro PCI_DEV is equivalent to the Linux PCI_SLOT version with
+ * the remark from above (input d in bits 15-8 instead of 7-0.
+ */
 #define PCI_DEV(d)		(((d) >> 11) & 0x1f)
 #define PCI_FUNC(d)		(((d) >> 8) & 0x7)
 #define PCI_DEVFN(d, f)		((d) << 11 | (f) << 8)
+
 #define PCI_MASK_BUS(bdf)	((bdf) & 0xffff)
 #define PCI_ADD_BUS(bus, devfn)	(((bus) << 16) | (devfn))
 #define PCI_BDF(b, d, f)	((b) << 16 | PCI_DEVFN(d, f))