1. 23 Mar, 2020 4 commits
  2. 22 Mar, 2020 13 commits
    • Anthony Zhou's avatar
      Tegra194: move cluster and CPU counter to header file. · 9aaa8882
      Anthony Zhou authored
      
      
      MISRA rules request that the cluster and CPU counter be unsigned
      values and have a suffix 'U'. If the define located in the makefile,
      this cannot be done.
      
      This patch moves the PLATFORM_CLUSTER_COUNT and PLATFORM_MAX_CPUS_PER_CLUSTER
      macros to tegra_def.h as a result.
      
      Change-Id: I9ef0beb29485729de204b4ffbb5241b039690e5a
      Signed-off-by: default avatarAnthony Zhou <anzhou@nvidia.com>
      9aaa8882
    • Varun Wadekar's avatar
      Tegra: gicv2: initialize target masks · 7644e2aa
      Varun Wadekar authored
      
      
      This patch initializes the target masks in the GICv2 driver
      data, for all PEs. This will allow platforms to set the PE
      target for SPIs.
      
      Change-Id: I7bf2ad79c04c2555ab310acba17823fb157327a3
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      7644e2aa
    • sumitg's avatar
      Tegra210: trigger CPU0 hotplug power on using FC · a45c3e9d
      sumitg authored
      
      
      Hotplug poweron is not working for boot CPU as it's being
      triggerred using PMC and not with Flow Controller. This is
      happening because "cpu_powergate_mask" is only getting set
      for non-boot CPU's as the boot CPU's first bootup follows
      different code path. The patch is marking a CPU as ON within
      "cpu_powergate_mask" when turning its power domain on
      during power on. This will ensure only first bootup on all
      CPU's is using PMC and subsequent hotplug poweron will be
      using Flow Controller.
      
      Change-Id: Ie9e86e6f9a777d41508a93d2ce286f31307932c2
      Signed-off-by: default avatarsumitg <sumitg@nvidia.com>
      a45c3e9d
    • Pritesh Raithatha's avatar
      Tegra: memctrl: cleanup streamid override registers · 36e26375
      Pritesh Raithatha authored
      
      
      Streamid override registers are passed to memctrl to program bypass
      streamid for all the registers. There is no reason to bypass SMMU
      for any of the client so need to remove register list and do not
      set streamid_override_cfg.
      
      Some Tegra186 platforms don't boot due to SDMMC failure so keep SDMMC
      bypass as of now. Will revisit once these issues are fixed.
      
      Change-Id: I3f67e2a0e1b53160e2218f3acace7da45532f934
      Signed-off-by: default avatarPritesh Raithatha <praithatha@nvidia.com>
      36e26375
    • Varun Wadekar's avatar
      Tegra: memctrl_v2: remove support to secure TZSRAM · 71376951
      Varun Wadekar authored
      
      
      This patch removes support to secure the on-chip TZSRAM memory for
      Tegra186 and Tegra194 platforms as the previous bootloader does that
      for them.
      
      Change-Id: I50c7b7f9694285fe31135ada09baed1cfedaaf07
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      71376951
    • Varun Wadekar's avatar
      Tegra: include platform headers from individual makefiles · eeb1b5e3
      Varun Wadekar authored
      
      
      This patch modifies PLAT_INCLUDES to include individual Tegra SoC
      headers from the platform's makefile.
      
      Change-Id: If5248667f4e58ac18727d37a18fbba8e53f2d7b5
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      eeb1b5e3
    • Varun Wadekar's avatar
      Tegra210: rename ENABLE_WDT_LEGACY_FIQ_HANDLING macro · ebe076da
      Varun Wadekar authored
      
      
      This patch renames 'ENABLE_WDT_LEGACY_FIQ_HANDLING' macro to
      'ENABLE_TEGRA_WDT_LEGACY_FIQ_HANDLING', to indicate that this
      is a Tegra feature.
      
      Change-Id: I5c4431e662223ee80efbfd5ec2513f8b1cadfc50
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      ebe076da
    • Varun Wadekar's avatar
      Tegra194: SiP function ID to read SMMU_PER registers · 8f0e22d5
      Varun Wadekar authored
      
      
      This patch introduces SiP function ID, 0xC200FF00, to read SMMU_PER
      error records from all supported SMMU blocks.
      
      The register values are passed over to the client via CPU registers
      X1 - X3, where
      
      X1 = SMMU_PER[instance #1] | SMMU_PER[instance #0]
      X2 = SMMU_PER[instance #3] | SMMU_PER[instance #2]
      X3 = SMMU_PER[instance #5] | SMMU_PER[instance #4]
      
      Change-Id: Id56263f558838ad05f6021f8432e618e99e190fc
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      8f0e22d5
    • Ken Chang's avatar
      Tegra: memctrl: map video memory as uncached · 9b51aa87
      Ken Chang authored
      
      
      Memmap video memory as uncached normal memory by adding flag
      'MT_NON_CACHEABLE' in mmap_add_dynamic_region().
      This improves the time taken for clearing the non-overlapping video
      memory:
      
      test conditions: 32MB memory size, EMC running at 1866MHz, t186
      1) without MT_NON_CACHEABLE: 30ms ~ 40ms
      <3>[  133.852885]  vpr-heap: update vpr base to 0x00000000c6000000, size=e000000
      <3>[  133.860471] _tegra_set_vpr_params[120]: begin
      <3>[  133.896481] _tegra_set_vpr_params[123]: end
      <3>[  133.908944]  vpr-heap: update vpr base to 0x00000000c6000000, size=c000000
      <3>[  133.916397] _tegra_set_vpr_params[120]: begin
      <3>[  133.956369] _tegra_set_vpr_params[123]: end
      <3>[  133.970394]  vpr-heap: update vpr base to 0x00000000c6000000, size=a000000
      <3>[  133.977934] _tegra_set_vpr_params[120]: begin
      <3>[  134.013874] _tegra_set_vpr_params[123]: end
      <3>[  134.025666]  vpr-heap: update vpr base to 0x00000000c6000000, size=8000000
      <3>[  134.033512] _tegra_set_vpr_params[120]: begin
      <3>[  134.065996] _tegra_set_vpr_params[123]: end
      <3>[  134.075465]  vpr-heap: update vpr base to 0x00000000c6000000, size=6000000
      <3>[  134.082923] _tegra_set_vpr_params[120]: begin
      <3>[  134.113119] _tegra_set_vpr_params[123]: end
      <3>[  134.123448]  vpr-heap: update vpr base to 0x00000000c6000000, size=4000000
      <3>[  134.130790] _tegra_set_vpr_params[120]: begin
      <3>[  134.162523] _tegra_set_vpr_params[123]: end
      <3>[  134.172413]  vpr-heap: update vpr base to 0x00000000c6000000, size=2000000
      <3>[  134.179772] _tegra_set_vpr_params[120]: begin
      <3>[  134.209142] _tegra_set_vpr_params[123]: end
      
      2) with MT_NON_CACHEABLE: 10ms ~ 18ms
      <3>[  102.108702]  vpr-heap: update vpr base to 0x00000000c6000000, size=e000000
      <3>[  102.116296] _tegra_set_vpr_params[120]: begin
      <3>[  102.134272] _tegra_set_vpr_params[123]: end
      <3>[  102.145839]  vpr-heap: update vpr base to 0x00000000c6000000, size=c000000
      <3>[  102.153226] _tegra_set_vpr_params[120]: begin
      <3>[  102.164201] _tegra_set_vpr_params[123]: end
      <3>[  102.172275]  vpr-heap: update vpr base to 0x00000000c6000000, size=a000000
      <3>[  102.179638] _tegra_set_vpr_params[120]: begin
      <3>[  102.190342] _tegra_set_vpr_params[123]: end
      <3>[  102.197524]  vpr-heap: update vpr base to 0x00000000c6000000, size=8000000
      <3>[  102.205085] _tegra_set_vpr_params[120]: begin
      <3>[  102.216112] _tegra_set_vpr_params[123]: end
      <3>[  102.224080]  vpr-heap: update vpr base to 0x00000000c6000000, size=6000000
      <3>[  102.231387] _tegra_set_vpr_params[120]: begin
      <3>[  102.241775] _tegra_set_vpr_params[123]: end
      <3>[  102.248825]  vpr-heap: update vpr base to 0x00000000c6000000, size=4000000
      <3>[  102.256069] _tegra_set_vpr_params[120]: begin
      <3>[  102.266368] _tegra_set_vpr_params[123]: end
      <3>[  102.273400]  vpr-heap: update vpr base to 0x00000000c6000000, size=2000000
      <3>[  102.280672] _tegra_set_vpr_params[120]: begin
      <3>[  102.290929] _tegra_set_vpr_params[123]: end
      
      Change-Id: I5f604064ce7b8b73ea9ad5860156ae5e2c6cc42a
      Signed-off-by: default avatarKen Chang <kenc@nvidia.com>
      9b51aa87
    • Kalyani Chidambaram's avatar
      Tegra: remove support for USE_COHERENT_MEM · aba5dddc
      Kalyani Chidambaram authored
      
      
      This patch removes the support for 'USE_COHERENT_MEM' as
      Tegra platforms no longer support the feature.
      
      Change-Id: If1c80fc4e5974412572b3bc1fdf9e70b1ee5d4ec
      Signed-off-by: default avatarKalyani Chidambaram <kalyanic@nvidia.com>
      aba5dddc
    • Varun Wadekar's avatar
      Tegra: remove circular dependency with common_def.h · 42080d48
      Varun Wadekar authored
      
      
      This patch stops including common_def.h from platform_def.h to
      fix a circular depoendency between them.
      
      This means platform_def.h now has to define the linker macros:
      * PLATFORM_LINKER_FORMAT
      * PLATFORM_LINKER_ARCH
      
      Change-Id: Icd540b1bd32fb37e0e455e9146c8b7f4b314e012
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      42080d48
    • Varun Wadekar's avatar
      Tegra: include missing stdbool.h · a5bfcad8
      Varun Wadekar authored
      
      
      This patch includes the missing stdbool.h header from flowctrl.h
      and bpmp_ivc.c files.
      
      Change-Id: If60d19142b1cb8ae663fbdbdf1ffe45cbbdbc1b2
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      a5bfcad8
    • Kalyani Chidambaram's avatar
      Tegra: remove support for SEPARATE_CODE_AND_RODATA=0 · 2bf1085d
      Kalyani Chidambaram authored
      
      
      Tegra platforms will not be supporting SEPARATE_CODE_AND_RODATA=0.
      
      This patch uses the common macros provided by bl_common.h as a result
      and adds a check to assert if SEPARATE_CODE_AND_RODATA set is not set
      to '1'.
      
      Change-Id: I376ea60c00ad69cb855d89418bdb80623f14800e
      Signed-off-by: default avatarKalyani Chidambaram <kalyanic@nvidia.com>
      2bf1085d
  3. 19 Mar, 2020 11 commits
  4. 17 Mar, 2020 7 commits
    • Madhukar Pappireddy's avatar
      FVP: In BL31/SP_MIN, map only the needed DRAM region statically · 493545b3
      Madhukar Pappireddy authored
      
      
      Rather than creating entry in plat_arm_mmap array to map the
      entire DRAM region in BL31/SP_MIN, only map a smaller region holding
      HW_CONFIG DTB. Consequently, an increase in number of sub-translation
      tables(level-2 and level-3) i.e., MAX_XLAT_TABLES is necessary to map
      the new region in memory.
      
      In order to accommodate the increased code size in BL31 i.e.,
      PROGBITS, the max size of BL31 image is increased by 0x1000(4K).
      
      Change-Id: I540b8ee550588e22a3a9fb218183d2ab8061c851
      Signed-off-by: default avatarMadhukar Pappireddy <madhukar.pappireddy@arm.com>
      493545b3
    • Andre Przywara's avatar
      rpi: console: Autodetect Mini-UART vs. PL011 configuration · 9cc3fa1b
      Andre Przywara authored
      
      
      The Raspberry Pi has two different UART devices pin-muxed to GPIO 14&15:
      One ARM PL011 one and the 8250 compatible "Mini-UART".
      A dtoverlay parameter in config.txt will tell the firmware to switch
      between the two: it will setup the right clocks and will configure the
      pinmuxes accordingly.
      
      To autodetect the user's choice, we read the pinmux register and check
      its setting: ALT5 (0x2) means the Mini-UART is used, ALT0 (0x4) points
      to the PL011.
      Based on that we select the UART driver to initialise.
      
      This will allow console output in any case.
      
      Change-Id: I620d3ce68de6c6576599f2a405636020e1fd1376
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      9cc3fa1b
    • Andre Przywara's avatar
      rpi3: build: Include GPIO driver in all BL stages · 29e8c460
      Andre Przywara authored
      
      
      So far the Raspberry Pi 3 build needs the GPIO driver just for BL2.
      Upcoming changes will require some GPIO code in BL1 and BL31 also, so
      move those driver files into the common source section.
      
      This does not affect BL31 code size at all, and bl1.bin just increases
      by 144 bytes, but doesn't affect the padded binary size at all.
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      Change-Id: I7639746dc241c1e69099d85d2671c65fa0108555
      29e8c460
    • Andre Przywara's avatar
      rpi: Allow using PL011 UART for RPi3/RPi4 · 5e6d821c
      Andre Przywara authored
      
      
      The Broadcom 283x SoCs feature multiple UARTs: the mostly used
      "Mini-UART", which is an 8250 compatible IP, and at least one PL011.
      While the 8250 is usually used for serial console purposes, it suffers
      from a design flaw, where its clock depends on the VPU clock, which can
      change at runtime. This will reliably mess up the baud rate.
      To avoid this problem, people might choose to use the PL011 UART for
      the serial console, which is pin-mux'ed to the very same GPIO pins.
      This can be done by adding "miniuart-bt" to the "dtoverlay=" line in
      config.txt.
      
      To prepare for this situation, use the newly gained freedom of sharing
      one console_t pointer across different UART drivers, to introduce the
      option of choosing the PL011 for the console.
      
      This is for now hard-coded to choose the Mini-UART by default.
      A follow-up patch will introduce automatic detection.
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      Change-Id: I8cf2522151e09ff4ff94a6d396aec6fc4b091a05
      5e6d821c
    • Andre Przywara's avatar
      rpi3: console: Use same "clock-less" setup scheme as RPi4 · 795aefe5
      Andre Przywara authored
      
      
      In the wake of the upcoming unification of the console setup code
      between RPi3 and RPi4, extend the "clock-less" setup scheme to the
      RPi3. This avoid programming any clocks or baud rate registers,
      which makes the port more robust against GPU firmware changes.
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      Change-Id: Ida83a963bb18a878997e9cbd55f8ceac6a2e1c1f
      795aefe5
    • Andre Przywara's avatar
      rpi3: gpio: Simplify GPIO setup · 0d92745e
      Andre Przywara authored
      
      
      There is really no reason to use and pass around a struct when its only
      member is the (fixed) base address.
      
      Remove the struct and just use the base address on its own inside the
      GPIO driver. Then set the base address automatically.
      
      This simplifies GPIO setup for users, which now don't need to deal with
      zeroing a struct and setting the base address anymore.
      
      Change-Id: I3060f7859e3f8ef9a24cc8fb38307b5da943f127
      Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
      0d92745e
    • Manish V Badarkhe's avatar
      Implement SMCCC_ARCH_SOC_ID SMC call · 0e753437
      Manish V Badarkhe authored
      Implemented SMCCC_ARCH_SOC_ID call in order to get below
      SOC information:
      
      1. SOC revision
      2. SOC version
      
      Implementation done using below SMCCC specification document:
      https://developer.arm.com/docs/den0028/c
      
      Signed-off-by: default avatarManish V Badarkhe <Manish.Badarkhe@arm.com>
      Change-Id: Ie0595f1c345a6429a6fb4a7f05534a0ca9c9a48b
      0e753437
  5. 16 Mar, 2020 4 commits
    • Igor Opaniuk's avatar
      plat: imx: imx8qm: apply clk/pinmux configuration for DEBUG_CONSOLE · 98a69dfd
      Igor Opaniuk authored
      
      
      Having DEBUG_CONSOLE enabled without enabling DEBUG_CONSOLE_A53
      doesn't make sense (since UART pinmux/clock configuration is applied
      for UART only when DEBUG_CONSOLE_A53 is enabled).
      
      Enable DEBUG_CONSOLE_A53 if DEBUG_CONSOLE is enabled.
      Signed-off-by: default avatarIgor Opaniuk <igor.opaniuk@gmail.com>
      Change-Id: I8ca411d5544658b9bcc39e5340ec042c51088b96
      98a69dfd
    • Igor Opaniuk's avatar
      plat: imx: imx8qm: provide debug uart num as build param · fc1596b3
      Igor Opaniuk authored
      
      
      This removes hardcoded iomux/clk/addr configuration for debug uart,
      provides possibility (as a workaround, till that information isn't
      provided via DT) to set this configuration during compile time via
      IMX_DEBUG_UART build flag.
      
      Usage:
      $ make PLAT=imx8qm IMX_DEBUG_UART=1 bl31
      Signed-off-by: default avatarIgor Opaniuk <igor.opaniuk@gmail.com>
      Change-Id: Ib5f5dd81ba0c8ad2b2dc5647ec75629072f511c5
      fc1596b3
    • Igor Opaniuk's avatar
      plat: imx: imx8_iomux: fix shift-overflow errors · 965c0781
      Igor Opaniuk authored
      
      
      This fixes shift overflow errors, when compiled with CONSOLE_DEBUG
      support:
      
      plat/imx/common/include/imx8_iomux.h:11:35: error: result of ‘1 << 31’
      requires 33 bits to represent, but ‘int’ only has 32 bits
      [-Werror=shift-overflow=]
      Signed-off-by: default avatarIgor Opaniuk <igor.opaniuk@gmail.com>
      Change-Id: I0488e22c30314ba27caabc5c767164baa1e8004c
      965c0781
    • Louis Mayencourt's avatar
      fconf: Clean Arm IO · a6de824f
      Louis Mayencourt authored
      
      
      Merge the previously introduced arm_fconf_io_storage into arm_io_storage. This
      removes the duplicate io_policies and functions definition.
      
      This patch:
      - replace arm_io_storage.c with the content of arm_fconf_io_storage.c
      - rename the USE_FCONF_BASED_IO option into ARM_IO_IN_DTB.
      - use the ARM_IO_IN_DTB option to compile out io_policies moved in dtb.
      - propagate DEFINES when parsing dts.
      - use ARM_IO_IN_DTB to include or not uuid nodes in fw_config dtb.
      - set the ARM_IO_IN_DTB to 0 by default for fvp. This ensure that the behavior
        of fvp stays the same as it was before the introduction of fconf.
      
      Change-Id: Ia774a96d1d3a2bccad29f7ce2e2b4c21b26c080e
      Signed-off-by: default avatarLouis Mayencourt <louis.mayencourt@arm.com>
      a6de824f
  6. 13 Mar, 2020 1 commit