1. 19 Oct, 2020 1 commit
    • Pali Rohár's avatar
      plat: marvell: armada: Fix including plat/marvell/marvell.mk file · 0412b732
      Pali Rohár authored
      
      
      Include file plat/marvell/marvell.mk for platform A3700 was included two
      times. Once from file plat/marvell/armada/a3k/common/a3700_common.mk and
      second time from common file plat/marvell/armada/common/marvell_common.mk.
      
      It caused following warning every time was make called:
      
          plat/marvell/marvell.mk:51: warning: overriding recipe for target 'mrvl_clean'
          plat/marvell/marvell.mk:51: warning: ignoring old recipe for target 'mrvl_clean'
      
      Change in this commit removes inclusion of plat/marvell/marvell.mk file in
      common file plat/marvell/armada/common/marvell_common.mk. As a80x0 platform
      needs this include file, add it also into a80x0 platform specific include
      file lat/marvell/armada/a8k/common/a8k_common.mk.
      
      Also moves inclusion of plat/marvell/marvell.mk file in a3700 platform file
      plat/marvell/armada/a3k/common/a3700_common.mk at correct place. Global
      plat/marvell/marvell.mk expects that variables DOIMAGEPATH and DOIMAGETOOL
      are already defined, but it defines MARVELL_SECURE_BOOT variable which is
      needed by plat/marvell/armada/a3k/common/a3700_common.mk.
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Change-Id: I5cbbd7eb8a3376924419f9850516b2a4924be5aa
      0412b732
  2. 15 Oct, 2020 1 commit
    • Pali Rohár's avatar
      plat: marvell: armada: a3k: When WTP is empty do not define variables and... · c5e1b061
      Pali Rohár authored
      
      plat: marvell: armada: a3k: When WTP is empty do not define variables and targets which depends on it
      
      Some of targets (e.g. mrvl_flash) depends on WTP build option. Other
      targets (e.g. fip) can be build also without WTP build option as they do
      not depend on it.
      
      This change put all A3720 variables and targets which depends on WTP into
      conditional if-endif section, so they are not defined when user has not
      supplied WTP build option.
      
      Target mrvl_flash is defined also when WTP was not specified and in this
      case it just print error message to help user.
      
      Variables which do not depend on WTP are moved to the top of
      a3700_common.mk file.
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Change-Id: Idb3892233586a0afca3e0e6564279641d2e4b960
      c5e1b061
  3. 06 Oct, 2020 1 commit
    • Manish Pandey's avatar
      Merge changes I959d1343,I6992df1a,I687e35cb,Ia5f2ee31,Ifd0bc6aa, ... into integration · eeb77da6
      Manish Pandey authored
      * changes:
        docs: marvell: update mv_ddr branch
        plat: marvell: armada: a3k: rename the UART images archive
        plat: marvell: armada: a3k: allow image load to RAM address 0
        marvell: comphy: cp110: add support for USB comphy polarity invert
        marvell: comphy: cp110: add support for SATA comphy polarity invert
        marvell: comphy: cp110: implement erratum IPCE_COMPHY-1353
        drivers: marvell: mochi: Update AP incoming masters secure level
        plat: marvell: armada: add ccu window for workaround errata-id 3033912
        plat: marvell: ap806: implement workaround for errata-id FE-4265711
      eeb77da6
  4. 05 Oct, 2020 1 commit
  5. 04 Oct, 2020 10 commits
  6. 03 Oct, 2020 3 commits
  7. 02 Oct, 2020 8 commits
  8. 01 Oct, 2020 3 commits
  9. 30 Sep, 2020 2 commits
    • Manish Pandey's avatar
      Merge changes from topic "stm32_exceptions" into integration · 428518c6
      Manish Pandey authored
      * changes:
        stm32mp1: correct crash console GPIO alternate configuration
        stm32mp1: add plat_panic_handler function
        stm32mp1: update plat_report_exception
        Align AARCH32 version of debug.S with AARCH64
      428518c6
    • André Przywara's avatar
      Merge changes from topic "fpga_generic" into integration · 2173b3e0
      André Przywara authored
      * changes:
        arm_fpga: Add platform documentation
        arm_fpga: Add post-build linker script
        arm_fpga: Add ROM trampoline
        arm_fpga: Add devicetree file
        arm_fpga: Remove SPE PMU DT node if SPE is not available
        arm_fpga: Adjust GICR size in DT to match number of cores
        fdt: Add function to adjust GICv3 redistributor size
        drivers: arm: gicv3: Allow detecting number of cores
      2173b3e0
  10. 29 Sep, 2020 10 commits
    • Madhukar Pappireddy's avatar
    • Andre Przywara's avatar
      arm_fpga: Add platform documentation · a6c07e0d
      Andre Przywara authored
      
      
      As the Arm Ltd. FPGA port is now working for all existing images, add
      some documentation file.
      
      Change-Id: I9e2c532ed15bbc121bb54b3dfc1bdfee8f1443a6
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      a6c07e0d
    • Andre Przywara's avatar
      arm_fpga: Add post-build linker script · 01301b11
      Andre Przywara authored
      
      
      For the Arm Ltd. FPGAs to run, we need to load several payloads into the
      FPGA's memory:
      - Some trampoline code at address 0x0, to jump to BL31's entry point.
      - The actual BL31 binary at the beginning of DRAM.
      - The (generic) DTB image to describe the hardware.
      - The actual non-secure payloads (kernel, ramdisks, ...)
      
      The latter is application specific, but the first three blobs are rather
      generic.
      Since the uploader tool supports ELF binaries, it seems helpful to
      combine these three images into one .axf file, as this also simplifies
      the command line.
      
      Add a post-build linker script, that combines those three bits into one
      ELF file, together with their specific load addresses.
      Include a call to "ld" with this linker script in the platform Makefile,
      so it will be build automatically. The result will be called "bl31.axf".
      
      Change-Id: I4a90da16fa1e0e83b51d19e5b1daf61f5a0bbfca
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      01301b11
    • Andre Przywara's avatar
      arm_fpga: Add ROM trampoline · f45c6d86
      Andre Przywara authored
      
      
      The application cores of the FPGAs used in Arm Ltd. start execution at
      address 0x0. This is the location of some (emulated) ROM area (which can
      be written to by the uploading tool).
      Since the arm_fpga port is configured to run from DRAM, we load BL31 to
      the beginning of DRAM (mapped at 2GB). This requires some small
      trampoline code in the "ROM" to jump to the BL31 entry point.
      
      To avoid some extra magic binary, add a tiny assembly file with that
      trivial jump instruction to the tree, so this binary can be created
      alongside BL31.
      
      Change-Id: I9e4439fc0f093fa24dd49a8377c9edb030fbb477
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      f45c6d86
    • Andre Przywara's avatar
      arm_fpga: Add devicetree file · b48883c7
      Andre Przywara authored
      
      
      The FPGA images used in Arm Ltd. focus on CPU cores, so they share a
      common platform, with a minimal set of peripherals (interconnect, GIC,
      UART).
      This allows to support most platforms with a single devicetree file.
      The topology and number of CPU cores differ, but those will added at
      runtime, in BL31. Other adjustments (GICR size, SPE node, command line)
      are also done at this point.
      
      Add the common devicetree file to TF-A's build system, so it can be
      build together with BL31. At runtime, the resulting .dtb file should be
      uploaded to the address given with FPGA_PRELOADED_DTB_BASE at build time.
      
      Change-Id: I3206d6131059502ec96896e95329865452c9d83e
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      b48883c7
    • Andre Przywara's avatar
      arm_fpga: Remove SPE PMU DT node if SPE is not available · 40a0de19
      Andre Przywara authored
      
      
      The Statistical Profiling Extension (SPE) is an architectural feature we
      can safely detect at runtime. However it still relies on one piece of
      platform-specific information: the interrupt line it is connected
      to. This requires SPE to be described in a devicetree node.
      
      Since SPE support varies with the CPU cores found on an FPGA image, we
      should detect the presence of SPE at runtime, and remove a potentially
      existing SPE PMU node from the DT.
      
      This allows to always have the SPE node in a generic devicetree file,
      without risking exposing it on a CPU without this feature.
      
      Change-Id: I73d83ea8509b03fe7bba20b9cce8d1335035fa31
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      40a0de19
    • Andre Przywara's avatar
      arm_fpga: Adjust GICR size in DT to match number of cores · 283e5595
      Andre Przywara authored
      
      
      The size of a GICv3 redistributor region depends on the number of
      cores in the system. For the ARM FPGA port, we detect the topology at
      runtime, and adjust the CPU DT nodes accordingly.
      Now the size of the GICR region must also be adjusted, or Linux will
      fail to initialise the GICv3.
      
      Use the newly introduced function to overwrite the GICR size entry in
      the GICv3 reg property. We count the number of existing cores by
      iterating over the GICR frames until we find the LAST bit set in TYPER.
      
      Change-Id: Ib69565600859de9b1b15ceb8495172cd26d16fce
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      283e5595
    • Andre Przywara's avatar
      fdt: Add function to adjust GICv3 redistributor size · 9f7bab42
      Andre Przywara authored
      
      
      We now have code to detect the CPU topology at runtime, and can also
      populate the CPU nodes in a devicetree accordingly. This is used by the
      ARM FPGA port, for instance.
      But also a GICv3 compatible interrupt controller provides MMIO frames
      per core, so the size of this region needs to be adjusted in the DT,
      to match the number of cores as well.
      
      Provide a generic function to find the GICv3 interrupt controller in
      the DT, then adjust the "reg" entry to match the number of detected
      cores. Since the size of the GICR frame per cores differs between
      GICv4 and GICv3, this size is supplied as a parameter to the function.
      The caller should determine the applicable value by either hardcoding
      it or by observing GICR_TYPER.VLPIS.
      
      Change-Id: Ic2a6445c2c5381a36bf24263f52fcbefad378c05
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      9f7bab42
    • Andre Przywara's avatar
      drivers: arm: gicv3: Allow detecting number of cores · 79d89e3d
      Andre Przywara authored
      
      
      A GICv3 interrupt controller will be instantiated for a certain number
      of cores. This will result in the respective number of GICR frames. The
      last frame will have the "Last" bit set in its GICR_TYPER register.
      
      For platforms with a topology unknown at build time (the Arm FPGAs, for
      instance), we need to learn the number of used cores at runtime, to size
      the GICR region in the devicetree accordingly.
      
      Add a generic function that iterates over all GICR frames until it
      encounters one with the "Last" bit set. It returns the number of cores
      the GICv3 has been configured for.
      
      Change-Id: I79f033c50dfc1c275aba7122725868811abcc4f8
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      79d89e3d
    • Manish Pandey's avatar
      Merge changes I1ecbe5a1,Ib5945c37,Ic6b79648 into integration · 609115a6
      Manish Pandey authored
      * changes:
        plat/arm: Add platform support for Morello
        fdts: add device tree sources for morello platform
        lib/cpus: add support for Morello Rainier CPUs
      609115a6