From: Tom Rini <trini@konsulko.com>
To: u-boot@lists.denx.de
Subject: [PATCH v2 06/10] rpi4: add a mapping for the PCIe XHCI controller MMIO registers (ARM 32bit)
Date: Mon, 11 May 2020 15:44:26 -0400 [thread overview]
Message-ID: <20200511194426.GS12564@bill-the-cat> (raw)
In-Reply-To: <71b88bb9-7bfd-cb33-59b8-052c08ed33fa@suse.com>
On Fri, May 08, 2020 at 11:26:36PM +0200, Matthias Brugger wrote:
> Adding Tom as he is the arm maintainer.
>
> On 04/05/2020 14:45, Sylwester Nawrocki wrote:
> > From: Marek Szyprowski <m.szyprowski@samsung.com>
> >
> > Create a non-cacheable mapping for the 0x600000000 physical memory region,
> > where MMIO registers for the PCIe XHCI controller are instantiated by the
> > PCIe bridge. Due to 32bit limit in the CPU virtual address space in ARM
> > 32bit mode, this region is mapped at 0xff800000 CPU virtual address.
> >
> > Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
> > Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
> > ---
> > Changes since v1:
> > - none.
> > ---
> > arch/arm/mach-bcm283x/Kconfig | 1 +
> > arch/arm/mach-bcm283x/include/mach/base.h | 7 +++++
> > arch/arm/mach-bcm283x/init.c | 52 +++++++++++++++++++++++++++++++
> > 3 files changed, 60 insertions(+)
> >
> > diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig
> > index 00419bf..bcb7f1d 100644
> > --- a/arch/arm/mach-bcm283x/Kconfig
> > +++ b/arch/arm/mach-bcm283x/Kconfig
> > @@ -36,6 +36,7 @@ config BCM2711_32B
> > select BCM2711
> > select ARMV7_LPAE
> > select CPU_V7A
> > + select PHYS_64BIT
> >
> > config BCM2711_64B
> > bool "Broadcom BCM2711 SoC 64-bit support"
> > diff --git a/arch/arm/mach-bcm283x/include/mach/base.h b/arch/arm/mach-bcm283x/include/mach/base.h
> > index c4ae398..1d10dc9 100644
> > --- a/arch/arm/mach-bcm283x/include/mach/base.h
> > +++ b/arch/arm/mach-bcm283x/include/mach/base.h
> > @@ -6,6 +6,13 @@
> > #ifndef _BCM283x_BASE_H_
> > #define _BCM283x_BASE_H_
> >
> > +#include <linux/types.h>
> > +
> > extern unsigned long rpi_bcm283x_base;
> >
> > +#ifdef CONFIG_ARMV7_LPAE
> > +extern void *rpi4_phys_to_virt(phys_addr_t paddr);
> > +#define phys_to_virt(x) rpi4_phys_to_virt(x)
> > +#endif
> > +
> > #endif
> > diff --git a/arch/arm/mach-bcm283x/init.c b/arch/arm/mach-bcm283x/init.c
> > index 6a748da..5d0d160 100644
> > --- a/arch/arm/mach-bcm283x/init.c
> > +++ b/arch/arm/mach-bcm283x/init.c
> > @@ -145,6 +145,58 @@ int mach_cpu_init(void)
> > }
> >
> > #ifdef CONFIG_ARMV7_LPAE
> > +
> > +#define BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT 0xff800000UL
> > +
> > +void *rpi4_phys_to_virt(phys_addr_t paddr)
> > +{
> > + if (paddr >= BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS)
> > + paddr = paddr - BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS +
> > + BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT;
> > + return (void *)(unsigned long)paddr;
>
> I think for this cases we have addrmap_phys_to_virt() which up to now is only
> used by powerpc.
>
> > +}
> > +
> > +static void set_section_phys(unsigned int section, phys_addr_t phys,
> > + enum dcache_option option)
> > +{
> > + u64 *page_table = (u64 *)gd->arch.tlb_addr;
> > + /* Need to set the access flag to not fault */
> > + u64 value = TTB_SECT_AP | TTB_SECT_AF;
> > +
> > + /* Add the page offset */
> > + value |= (phys);
> > +
> > + /* Add caching bits */
> > + value |= option;
> > +
> > + /* Set PTE */
> > + page_table[section] = value;
> > +}
> > +
> > +static void rpi4_create_pcie_xhci_mapping(void)
> > +{
> > + unsigned sect = BCM2711_RPI4_PCIE_XHCI_MMIO_VIRT >> MMU_SECTION_SHIFT;
> > + phys_addr_t phys_addr = BCM2711_RPI4_PCIE_XHCI_MMIO_PHYS;
> > + unsigned int size = BCM2711_RPI4_PCIE_XHCI_MMIO_SIZE;
> > +
> > + while (size) {
> > + set_section_phys(sect, phys_addr, DCACHE_OFF);
> > + sect++;
> > + phys_addr += MMU_SECTION_SIZE;
> > + size -= MMU_SECTION_SIZE;
> > + }
> > +}
>
> I wonder if we can't do all this in the pcie driver probe function. Maybe we can
> create a new function like mmu_set_region_dcache_behaviour_phys which allows us
> to update a mapping that's not 1:1.
>
> Tom what do you think?
I think a harder look at how PowerPC handled this situation is in order,
and then following / extending that path is in order.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200511/c2452851/attachment.sig>
next prev parent reply other threads:[~2020-05-11 19:44 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20200504124532eucas1p1603b3576c1e938a0bc0d11c075b289e0@eucas1p1.samsung.com>
2020-05-04 12:45 ` [PATCH v2 00/10] USB host support for Raspberry Pi 4 board Sylwester Nawrocki
2020-05-04 12:45 ` [PATCH v2 01/10] usb: xhci: Add missing cache flush in the scratchpad array initialization Sylwester Nawrocki
2020-05-04 12:45 ` [PATCH v2 02/10] usb: xhci: Use only 32-bit accesses in xhci_writeq/xhci_readq Sylwester Nawrocki
2020-05-04 12:45 ` [PATCH v2 03/10] pci: Move some PCIe register offset definitions to a common header Sylwester Nawrocki
2020-05-04 12:45 ` [PATCH v2 04/10] rpi4: shorten a mapping for the DRAM Sylwester Nawrocki
2020-05-04 12:45 ` [PATCH v2 05/10] rpi4: add a mapping for the PCIe XHCI controller MMIO registers (ARM 64bit) Sylwester Nawrocki
2020-05-05 14:00 ` Matthias Brugger
2020-05-05 14:07 ` Matthias Brugger
2020-05-05 14:10 ` Marek Szyprowski
2020-05-05 14:13 ` Matthias Brugger
2020-05-04 12:45 ` [PATCH v2 06/10] rpi4: add a mapping for the PCIe XHCI controller MMIO registers (ARM 32bit) Sylwester Nawrocki
2020-05-05 14:25 ` Matthias Brugger
2020-05-05 14:43 ` Marek Szyprowski
2020-05-08 21:26 ` Matthias Brugger
2020-05-11 19:44 ` Tom Rini [this message]
2020-05-11 19:47 ` Matthias Brugger
2020-05-12 10:25 ` Sylwester Nawrocki
2020-05-12 12:04 ` Marek Szyprowski
2020-05-12 13:17 ` [RFC PATCH 0/2] ARM: arbitrary virtual-physical mappings for RPi4 XHCI support Marek Szyprowski
2020-05-12 13:17 ` [RFC PATCH 1/2] arm: provide a function for boards init code to modify MMU virtual-physical map Marek Szyprowski
2020-05-12 15:11 ` Sylwester Nawrocki
2020-05-12 13:17 ` [RFC PATCH 2/2] rpi4: add a mapping for the PCIe XHCI controller MMIO registers (ARM 32bit) Marek Szyprowski
2020-05-15 11:20 ` [RFC PATCH v2 0/2] ARM: arbitrary virtual-physical mappings for RPi4 XHCI support Marek Szyprowski
2020-05-15 11:20 ` [RFC PATCH v2 1/2] arm: provide a function for boards init code to modify MMU virtual-physical map Marek Szyprowski
2020-05-15 11:20 ` [RFC PATCH v2 2/2] rpi4: add a mapping for the PCIe XHCI controller MMIO registers (ARM 32bit) Marek Szyprowski
2020-05-04 12:45 ` [PATCH v2 07/10] linux/bitfield.h: Add primitives for manipulating bitfields both in host- and fixed-endian Sylwester Nawrocki
2020-05-05 11:10 ` Bin Meng
2020-05-04 12:45 ` [PATCH v2 08/10] pci: Add some PCI Express capability register offset definitions Sylwester Nawrocki
2020-05-04 12:45 ` [PATCH v2 09/10] pci: Add driver for Broadcom STB PCIe controller Sylwester Nawrocki
2020-05-05 14:13 ` Nicolas Saenz Julienne
2020-05-06 8:36 ` Sylwester Nawrocki
2020-05-05 15:45 ` Nicolas Saenz Julienne
2020-05-06 8:59 ` Sylwester Nawrocki
2020-05-06 14:47 ` Simon Glass
2020-05-08 9:50 ` Nicolas Saenz Julienne
2020-05-08 14:25 ` Jim Quinlan
2020-05-08 14:54 ` Nicolas Saenz Julienne
2020-05-08 18:33 ` Simon Glass
2020-05-12 16:42 ` Sylwester Nawrocki
2020-05-12 16:46 ` Jim Quinlan
2020-05-08 11:46 ` Sylwester Nawrocki
2020-05-08 13:08 ` Simon Glass
2020-05-04 12:45 ` [PATCH v2 10/10] config: Enable support for the XHCI controller on RPI4 board Sylwester Nawrocki
2020-05-05 11:15 ` Bin Meng
2020-05-05 11:18 ` Nicolas Saenz Julienne
2020-05-05 11:19 ` Marek Szyprowski
2020-05-05 14:09 ` [PATCH v2 00/10] USB host support for Raspberry Pi 4 board Nicolas Saenz Julienne
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200511194426.GS12564@bill-the-cat \
--to=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox