1. 17 Jul, 2019 1 commit
    • Jun Nie's avatar
      plat: imx7: refactor code for reuse · c5937f2d
      Jun Nie authored
      
      
      For the iMX7 SOCs, part of the code for platform
      setup implementation can be reused and made
      common for all these SoCs. This patch extracts
      the common part for reuse.
      Signed-off-by: default avatarJun Nie <jun.nie@linaro.org>
      Change-Id: I42fd4167e6903416df96a0159a046abf3896e878
      c5937f2d
  2. 08 Nov, 2018 1 commit
    • Antonio Nino Diaz's avatar
      Standardise header guards across codebase · c3cf06f1
      Antonio Nino Diaz authored
      
      
      All identifiers, regardless of use, that start with two underscores are
      reserved. This means they can't be used in header guards.
      
      The style that this project is now to use the full name of the file in
      capital letters followed by 'H'. For example, for a file called
      "uart_example.h", the header guard is UART_EXAMPLE_H.
      
      The exceptions are files that are imported from other projects:
      
      - CryptoCell driver
      - dt-bindings folders
      - zlib headers
      
      Change-Id: I50561bf6c88b491ec440d0c8385c74650f3c106e
      Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
      c3cf06f1
  3. 04 Sep, 2018 5 commits
    • Bryan O'Donoghue's avatar
      imx: imx_clock: usb: Add USB clock API · 6176a4e5
      Bryan O'Donoghue authored
      
      
      This set of patches adds a very minimal layer of USB enabling patches to
      clock.c. Unlike the watchdog or UART blocks the USB clocks pertain to PHYs,
      the main USB clock etc, not to different instances of the same IP block.
      
      As a result this patch-set takes the clock CCGR clock identifier directly
      rather than as an index of an instance of blocks of the same type.
      Signed-off-by: default avatarBryan O'Donoghue <bryan.odonoghue@linaro.org>
      6176a4e5
    • Bryan O'Donoghue's avatar
      imx: imx_clock: wdog: Add watchdog clock API · bbdcdd04
      Bryan O'Donoghue authored
      
      
      This patch adds a set of functions to enable the clock for each of the
      watchdog IP blocks.
      
      Unlike the MMC and UART blocks, the watchdog blocks operate off of the one
      root clock, only the clock-gates are enable/disabled individually.
      
      As a consequence the function clock_set_wdog_clk_root_bits() is used to set
      the root-slice just once for all of the watchdog blocks.
      
      Future implementations may need to change this model but for now on the one
      supported processor and similar NXP SoCs this model should work fine.
      Signed-off-by: default avatarBryan O'Donoghue <bryan.odonoghue@linaro.org>
      bbdcdd04
    • Jun Nie's avatar
      imx: imx_clock: mmc: Add USDHC clock API · 14cf32aa
      Jun Nie authored
      
      
      This patch adds an API to configure up the base USDHC clocks, taking a
      bit-mask of silicon specific bits as an input from a higher layer in order
      to direct the necessary clock source.
      Signed-off-by: default avatarJun Nie <jun.nie@linaro.org>
      Signed-off-by: default avatarBryan O'Donoghue <bryan.odonoghue@linaro.org>
      14cf32aa
    • Bryan O'Donoghue's avatar
      imx: imx_clock: uart: Add UART clock API · dcd54e9b
      Bryan O'Donoghue authored
      
      
      This patch adds an API to configure up the base UART clocks, taking a
      bit-mask of silicon specific bits as an input from a higher layer in order
      to direct the necessary clock source.
      Signed-off-by: default avatarBryan O'Donoghue <bryan.odonoghue@linaro.org>
      dcd54e9b
    • Bryan O'Donoghue's avatar
      imx: imx_clock: Add driver and associated clock register definitions · 82e35083
      Bryan O'Donoghue authored
      
      
      This commit:
      
      - Defines a clock stub with a conjoined header defining the clock
        memory map.
      
      - Defines the CCM Clock Gating Register which comes in a quadrumvirate
        register set to read, set, clear and toggle individual clock gates into
        one of four states based bitmask.
      
        00: Domain clocks not needed
        01: Domain clocks needed when in RUN
        10: Domain clocks needed when in RUN and WAIT
        11: Domain clocks needed all the time
      
      - Defines clock control register bits
      
        There are various quadrumvirate register blocks target-root, misc-root,
        post-root, pre-root in the CCM.
      
        The number of registers is huge but the four registers in each
        quadrumvirate block contain the same bits, so the number of bit
        definitions is actually quite low.
      
      - Defines clock identifiers
      
        An array of clock gates is provided in the CCM block. In order to index
        that array and thus enable/disable clock gates for the right components,
        we need to provide meaningful names to the indices.
      
        Section 5.2.5 of the i.MX7 Solo Application Processor Reference Manual
        Rev 0.1 provides the relevant details.
      
      - Defines target mux select bits
        This is a comprehensive definition of the target clock mux select bits.
        These bits are required to correctly select the clock source. Defining
        all of the bits up-front even for unused blocks in ATF means we can
        switch on any block we want at a later date without having to write new
        code in the clock-mux layer.
      
      - Defines identifier indices into root-slice array
        The root-slice array of control registers has a specific set of indices,
        which differ from the clock-gate indices.
      
      - Provides a clock gate enable/disable routine
        Provides a clock-gate enable/disable routine via the set/clr
        registers in a given clock-gate control register block.
      
        This index passed should be one of the enums associated with CCM and
        depending on enable/disable being passed either set or clr will be
        written to.
      
        The Domain0 bits are currently the only bits targeted by this write, more
        work may need to be done on the domain bits in subsequent patches as a
        result.
      
      - imx: Adds set/clr routines to clock layer
      
        Adds a set and clr routine to the clock layer. These routines allow us to
        access the set and clear registers of the "target" block registers. These
        are the registers where we select the clock source from the available list.
      Signed-off-by: default avatarBryan O'Donoghue <bryan.odonoghue@linaro.org>
      82e35083