1. 23 Jan, 2019 4 commits
    • Varun Wadekar's avatar
      Tegra: bpmp_ipc: IPC driver to communicate with BPMP firmware · 26e2b93a
      Varun Wadekar authored
      
      
      This patch adds the driver to communicate with the BPMP firmware on Tegra
      SoCs, starting Tegra186. BPMP firmware is responsible for clock enable/
      disable requests, module resets among other things.
      
      MRQ is short for Message ReQuest. This is the general purpose, multi channel
      messaging protocol that is widely used to communicate with BPMP. This is further
      divided into a common high level protocol and a peer-specific low level protocol.
      The higher level protocol specifies the peer identification, channel definition
      and allocation, message structure, message semantics and message dispatch process
      whereas the lower level protocol defines actual message transfer implementation
      details. Currently, BPMP supports two lower level protocols - Token Mail Operations
      (TMO), IVC Mail Operations (IMO).
      
      This driver implements the IMO protocol. IMO is implemented using the IVC (Inter-VM
      Communication) protocol which is a lockless, shared memory messaging queue management
      protocol.
      
      The IVC peer is expected to perform the following as part of establishing a connection
      with BPMP.
      
      1. Initialize the channels with tegra_ivc_init() or its equivalent.
      2. Reset the channel with tegra_ivc_channel_reset. The peer should also ensure that
         BPMP is notified via the doorbell.
      3. Poll until the channel connection is established [tegra_ivc_channel_notified() return
         0]. Interrupt BPMP with doorbell each time after tegra_ivc_channel_notified() return
         non zero.
      
      The IPC driver currently supports reseting the GPCDMAand XUSB_PADCTL hardware blocks. In
      future, more hardware blocks would be supported.
      
      Change-Id: I52a4bd3a853de6c4fa410904b6614ff1c63df364
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      26e2b93a
    • Steven Kao's avatar
      Tegra: memctrl_v2: allow CPU accesses to TZRAM · d6306d14
      Steven Kao authored
      
      
      This patch enables CPU access configuration register to allow
      accesses to the TZRAM aperture on chips after Tegra186.
      
      Change-Id: I0898582f8bd6fd35360ecf8ca5cee21fe35f7aab
      Signed-off-by: default avatarSteven Kao <skao@nvidia.com>
      d6306d14
    • Harvey Hsieh's avatar
      Tegra: memctrl_v2: pack TZDRAM base to RSVD55_SCRATCH · b886c7c5
      Harvey Hsieh authored
      
      
      This patch saves the TZDRAM_BASE value to secure RSVD55
      scratch register. The warmboot code uses this register to
      restore the settings on exiting System Suspend.
      
      Change-Id: Id76175c2a7d931227589468511365599e2908411
      Signed-off-by: default avatarHarvey Hsieh <hhsieh@nvidia.com>
      b886c7c5
    • Puneet Saxena's avatar
      Tegra: memctrl_v2: platform handlers to program MSS · ab2eb455
      Puneet Saxena authored
      
      
      Introduce platform handlers to program the MSS settings.
      This allows the current driver to scale to future chips.
      
      Change-Id: I40a27648a1a3c73b1ce38dafddc1babb6f0b0d9b
      Signed-off-by: default avatarPuneet Saxena <puneets@nvidia.com>
      Signed-off-by: default avatarKrishna Reddy <vdumpa@nvidia.com>
      ab2eb455
  2. 18 Jan, 2019 9 commits
    • Harvey Hsieh's avatar
      Tegra: memctrl: clean MC INT status before exit to bootloader · 650d9c52
      Harvey Hsieh authored
      
      
      This patch cleans the Memory controller's interrupt status
      register, before exiting to the non-secure world during
      cold boot. This is required as we observed that the MC's
      arbitration bit is set before exiting the secure world.
      
      Change-Id: Iacd01994d03b3b9cbd7b8a57fe7ab5b04e607a9f
      Signed-off-by: default avatarHarvey Hsieh <hhsieh@nvidia.com>
      650d9c52
    • Harvey Hsieh's avatar
      Tegra: memctrl_v2: pack TZDRAM base into SCRATCH54_LO · 70da35b0
      Harvey Hsieh authored
      
      
      This patch moves the TZDRAM base address to SCRATCH55_LO due
      to security concerns. The HI and LO address bits are packed
      into SCRATCH55_LO for the warmboot firmware to restore.
      SCRATCH54_HI is still being used for backward compatibility,
      but would be removed eventually.
      
      The scratch registers are populated as:
      * RSV55_0 = CFG1[12:0] | CFG0[31:20]
      * RSV55_1 = CFG3[1:0]
      * RSV54_1 = CFG1[12:0]
      
      Change-Id: Idc20d165d8117488010fcc8dfd946f7ad475da58
      Signed-off-by: default avatarHarvey Hsieh <hhsieh@nvidia.com>
      70da35b0
    • Peter De Schrijver's avatar
      Tegra: bpmp: Increase timeout to 2ms · c09c63ee
      Peter De Schrijver authored
      
      
      To deal with upcoming EMC periodic compensation, increase the BPMP timeout
      to 2ms.
      
      Change-Id: I8572c031168defd15504d905c4d625f44dd7fa3d
      Signed-off-by: default avatarPeter De Schrijver <pdeschrijver@nvidia.com>
      c09c63ee
    • Varun Wadekar's avatar
      Tegra: memctrl: assert if dynamic memmap fails · 7a6e0537
      Varun Wadekar authored
      
      
      This patch adds an assert in case the dynamic memmap routine fails.
      
      Change-Id: Idd20debbb8944340f5928c6f2cfea973a63a7b1c
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      7a6e0537
    • Anthony Zhou's avatar
      Tegra: fix defects flagged by MISRA Rule 10.3 · aa64c5fb
      Anthony Zhou authored
      
      
      MISRA Rule 10.3, the value of an expression shall not be assigned to
      an object with a narrower essential type or of a different essential
      type category.
      
      The essential type of a enum member is anonymous enum, the enum member
      should be casted to the right type when using it.
      
      Both UL and ULL suffix equal to uint64_t constant in compiler
      aarch64-linux-gnu-gcc, to avoid confusing, only keep U and ULL suffix
      in platform code. So in some case, cast a constant to uint32_t is
      necessary.
      
      Change-Id: I1aae8cba81ef47481736e7f95f53570de7013187
      Signed-off-by: default avatarAnthony Zhou <anzhou@nvidia.com>
      aa64c5fb
    • Steven Kao's avatar
      Tegra: smmu: add a hook to get number of devices · bc5a86f7
      Steven Kao authored
      
      
      This patch adds a hook to get the number of smmu devices and
      removes the NUM_SMMU_DEVICES macro.
      
      Change-Id: Ia8dba7e9304224976b5da688b9e4b5438f11cc41
      Signed-off-by: default avatarSteven Kao <skao@nvidia.com>
      bc5a86f7
    • Anthony Zhou's avatar
      Tegra: common: fix defects flagged by MISRA scan · 4c994002
      Anthony Zhou authored
      
      
      Macro assert(e) request 'e' is a bool type, if useing other
      type, MISRA report a "The Essential Type Model" violation,
      Add a judgement to fix the defects, if 'e' is not bool type.
      
      Remove unused code [Rule 2.5]
      Fix the essential type model violation [Rule 10.6, 10.7]
      Use local parameter to raplace function parameter [Rule 17.8]
      
      Change-Id: Ifce932addbb0a4b063ef6b38349d886c051d81c0
      Signed-off-by: default avatarAnthony Zhou <anzhou@nvidia.com>
      4c994002
    • Anthony Zhou's avatar
      Tegra: common: drivers: fix MISRA defects · 61beb3e0
      Anthony Zhou authored
      
      
      Main fixes:
      
      Add suffix U for constant [Rule 10.1]
      
      Match the operands type [Rule 10.4]
      
      Use UL replace U for that constant define that need do "~"
      operation [Rule 12.4]
      
      Voided non c-library functions whose return types are not used
       [Rule 17.7]
      
      Change-Id: Ia1e814ca3890eab7904be9c79030502408f30936
      Signed-off-by: default avatarAnthony Zhou <anzhou@nvidia.com>
      61beb3e0
    • Varun Wadekar's avatar
      Tegra: gpcdma: driver for general purpose DMA · 647d4a03
      Varun Wadekar authored
      
      
      This patch adds the driver for the general purpose DMA hardware
      block on newer Tegra SoCs. The GPCDMA is a special purpose DMA
      used to speed up memory copy operations to/from DRAM and TZSRAM.
      
      This patch introduces a macro 'USE_GPC_DMA' to allow platforms
      to override CPU based memory operations.
      
      Change-Id: I3170d409c83b77e785437b1002a8d70188fabbeb
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      647d4a03
  3. 16 Jan, 2019 3 commits
  4. 04 Jan, 2019 1 commit
    • Antonio Nino Diaz's avatar
      Sanitise includes across codebase · 09d40e0e
      Antonio Nino Diaz authored
      Enforce full include path for includes. Deprecate old paths.
      
      The following folders inside include/lib have been left unchanged:
      
      - include/lib/cpus/${ARCH}
      - include/lib/el3_runtime/${ARCH}
      
      The reason for this change is that having a global namespace for
      includes isn't a good idea. It defeats one of the advantages of having
      folders and it introduces problems that are sometimes subtle (because
      you may not know the header you are actually including if there are two
      of them).
      
      For example, this patch had to be created because two headers were
      called the same way: e0ea0928 ("Fix gpio includes of mt8173 platform
      to avoid collision."). More recently, this patch has had similar
      problems: 46f9b2c3 ("drivers: add tzc380 support").
      
      This problem was introduced in commit 4ecca339
      
       ("Move include and
      source files to logical locations"). At that time, there weren't too
      many headers so it wasn't a real issue. However, time has shown that
      this creates problems.
      
      Platforms that want to preserve the way they include headers may add the
      removed paths to PLAT_INCLUDES, but this is discouraged.
      
      Change-Id: I39dc53ed98f9e297a5966e723d1936d6ccf2fc8f
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      09d40e0e
  5. 22 Aug, 2018 1 commit
  6. 14 Jul, 2017 1 commit
  7. 15 Jun, 2017 3 commits
  8. 03 May, 2017 1 commit
  9. 01 May, 2017 1 commit
    • Varun Wadekar's avatar
      Tegra: memctrl_v2: zero out NS Video memory carveout region · 9d42d23a
      Varun Wadekar authored
      
      
      The video memory carveout has to be re-sized depending on the Video
      content. This requires the NS world to send us new base/size values.
      Before setting up the new region, we must zero out the previous memory
      region, so that the video frames are not leaked to the outside world.
      
      This patch adds the logic to zero out the previous memory carveout
      region.
      
      Change-Id: I471167ef7747154440df5c1a5e015fbeb69d9043
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      9d42d23a
  10. 26 Apr, 2017 1 commit
  11. 21 Apr, 2017 1 commit
  12. 19 Apr, 2017 1 commit
  13. 13 Apr, 2017 5 commits
  14. 10 Apr, 2017 1 commit
    • Varun Wadekar's avatar
      Tegra: memctrl_v1: enable 'xlat_table_v2' library · c05a2197
      Varun Wadekar authored
      
      
      This patch enables the 'xlat_table_v2' library for the Tegra Memory
      Controller driver. This library allows us to dynamically map/unmap
      memory regions, with MMU enabled.
      
      The Memory Controller driver maps/unmaps non-overlapping Video Memory
      region, to clean it of any secure contents, before it resizes the
      region.
      Signed-off-by: default avatarVarun Wadekar <vwadekar@nvidia.com>
      c05a2197
  15. 07 Apr, 2017 5 commits
  16. 05 Apr, 2017 2 commits