1. 06 4月, 2018 1 次提交
  2. 05 4月, 2018 1 次提交
  3. 29 1月, 2018 2 次提交
    • A
      rpi: Remove runtime disabling support for serial · 55b8a2dd
      Alexander Graf 提交于
      We are switching to a model where our board file can directly fail probing
      of serial devices when they're not usable, so remove the current runtime
      hack we have.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      55b8a2dd
    • A
      bcm283x: Add pinctrl driver · caf2233b
      Alexander Graf 提交于
      The bcm283x family of SoCs have a GPIO controller that also acts as
      pinctrl controller.
      
      This patch introduces a new pinctrl driver that can actually properly mux
      devices into their device tree defined pin states and is now the primary
      owner of the gpio device. The previous GPIO driver gets moved into a
      subdevice of the pinctrl driver, bound to the same OF node.
      
      That way whenever a device asks for pinctrl support, it gets it
      automatically from the pinctrl driver and GPIO support is still available
      in the normal command line phase.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      caf2233b
  4. 04 12月, 2017 1 次提交
  5. 16 8月, 2017 4 次提交
  6. 10 5月, 2017 6 次提交
  7. 24 1月, 2017 1 次提交
  8. 29 11月, 2016 3 次提交
  9. 22 11月, 2016 1 次提交
    • C
      rpi: passthrough of the firmware provided FDT blob · ade243a2
      Cédric Schieli 提交于
      Raspberry firmware used to pass a FDT blob at a fixed address (0x100),
      but this is not true anymore. The address now depends on both the
      memory size and the blob size [1].
      
      If one wants to passthrough this FDT blob to the kernel, the most
      reliable way is to save its address from the r2/x0 register in the
      U-Boot entry point and expose it in a environment variable for
      further processing.
      
      This patch just does this:
      - save the provided address in the global variable fw_dtb_pointer
      - expose it in ${fdt_addr} if it points to a a valid FDT blob
      
      There are many different ways to use it. One can, for example, use
      the following script which will extract from the tree the command
      line built by the firmware, then hand over the blob to a previously
      loaded kernel:
      
      fdt addr ${fdt_addr}
      fdt get value bootargs /chosen bootargs
      bootz ${kernel_addr_r} - ${fdt_addr}
      
      Alternatively, users relying on sysboot/pxe can simply omit any FDT
      statement in their extlinux.conf file, U-Boot will automagically pick
      ${fdt_addr} and pass it to the kernel.
      
      [1] https://www.raspberrypi.org/forums//viewtopic.php?f=107&t=134018Signed-off-by: NCédric Schieli <cschieli@gmail.com>
      Acked-by: NStephen Warren <swarren@nvidia.com>
      ade243a2
  10. 07 9月, 2016 1 次提交
    • A
      serial: bcm283x_mu: Detect disabled serial device · 601147b0
      Alexander Graf 提交于
      On the raspberry pi, you can disable the serial port to gain dynamic frequency
      scaling which can get handy at times.
      
      However, in such a configuration the serial controller gets its rx queue filled
      up with zero bytes which then happily get transmitted on to whoever calls
      getc() today.
      
      This patch adds detection logic for that case by checking whether the RX pin is
      mapped to GPIO15 and disables the mini uart if it is not mapped properly.
      
      That way we can leave the driver enabled in the tree and can determine during
      runtime whether serial is usable or not, having a single binary that allows for
      uart and non-uart operation.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      Acked-by: NStephen Warren <swarren@wwwdotorg.org>
      Reviewed-by: NSimon Glass <sjg@chromium.org>
      601147b0
  11. 16 7月, 2016 1 次提交
  12. 12 4月, 2016 1 次提交
    • S
      ARM: add Raspberry Pi 3 64-bit config · d22a7657
      Stephen Warren 提交于
      On all Pis so far, the VC FW provides a short stub to set up the ARM CPU
      before entering the kernel (a/k/a U-Boot for us). This feature is not
      currently supported by the VC FW when booting in 64-bit mode. However,
      this feature will likely appear in the near future, and this U-Boot port
      assumes that such a feature is in place. Without that feature, or a
      temporary workaround described below, U-Boot will not boot.
      
      Once the VC FW does provide the ARM stub, u-boot.bin built for rpi_3 can
      be used drectly as kernel7.img, in the same way as any other RPi port. The
      following config.txt is required:
      
          # Fix mini UART input frequency, and setup/enable up the UART.
          # Without this option, U-Boot will not boot, even if you don't care
          # about the serial console. This option will always be required for
          # all RPi3 use-cases, unless the PL011 UART is used, which is not
          # yet supported by rpi_3* builds of U-Boot.
          enable_uart=1
          # Boot in AArch64 (64-bit) mode.
          # It is possible that a future VC FW will remove the need for this
          # option, instead auto-setting 32-/64-bit mode based on the "kernel"
          # filename present on the SD card.
          arm_control=0x200
      
      Prior to the VC FW providing the ARM boot stub, you can use the following
      steps to build an equivalent stub into the U-Boot binary:
      
      git clone https://github.com/swarren/rpi-3-aarch64-demo.git \
          ../rpi-3-aarch64-demo
      (cd ../rpi-3-aarch64-demo && ./build.sh)
      Build U-Boot for rpi_3 in the usual way
      cat ../rpi-3-aarch64-demo/armstub64.bin u-boot.bin > u-boot.bin.stubbed
      Use u-boot.bin.stubbed as kernel7.img on the Pi SD card.
      
      In this case, the following additional entries are required in config.txt:
      
          # Tell the FW to load the kernel image at address 0, the reset vector.
          kernel_old=1
      Signed-off-by: NStephen Warren <swarren@wwwdotorg.org>
      Reviewed-by: NTom Rini <trini@konsulko.com>
      d22a7657
  13. 02 4月, 2016 3 次提交
    • S
      rpi: BCM2837 and Raspberry Pi 3 32-bit support · f031f501
      Stephen Warren 提交于
      The Raspberry Pi 3 contains a BCM2837 SoC. The BCM2837 is a BCM2836 with
      the CPU complex swapped out for a quad-core ARMv8. This can operate in 32-
      or 64-bit mode. 32-bit mode is the current default selected by the
      VideoCore firmware on the Raspberry Pi 3. This patch adds a 32-bit port of
      U-Boot for the Raspberry Pi 3.
      
      >From U-Boot's perspective, the only delta between the RPi 2 and RPi 3 is a
      change in usage of the SoC UARTs. On all previous Pis, the PL011 was the
      only UART in use. The Raspberry Pi 3 adds a Bluetooth module which uses a
      UART to connect to the SoC. By default, the PL011 is used for this purpose
      since it has larger FIFOs than the other "mini" UART. However, this can
      be configured via the VideoCore firmware's config.txt file. This patch
      hard-codes use of the mini UART in the RPi 3 port. If your system uses the
      PL011 UART for the console even on the RPi 3, please use the RPi 2 U-Boot
      port instead. A future change might determine which UART to use at
      run-time, thus allowing the RPi 2 and RPi 3 (32-bit) ports to be squashed
      together.
      
      The mini UART has some limitations. One externally visible issue in the
      BCM2837 integration is that the UART divides the SoC's "core clock" to
      generate the baud rate. The core clock is typically variable, and under
      control of the VideoCore firmware for thermal management reasons. If the
      VC FW does modify the core clock rate, UART communication will be
      corrupted since the baud rate will vary from the expected value. This was
      not an issue for the PL011 UART, since it is fed by a fixed 3MHz clock. To
      work around this, the VideoCore firmware can be told not to modify the SoC
      core clock. However, the only way this can happen and be thermally safe is
      to limit the core clock to a low/minimum frequency. This leaves
      performance on the table for use-cases that don't care about a UART
      console. Consequently, use of the mini UART console must be explicitly
      requested by entering the following line into config.txt:
      
          enable_uart=1
      
      A recent version of the VC firmware is required to ensure that the mini
      UART is fully and correctly initialized by the VC FW; at least
      firmware.git 046effa13ebc "firmware: arm_loader: emmc clock depends on
      core clock See: https://github.com/raspberrypi/firmware/issues/572".
      Signed-off-by: NStephen Warren <swarren@wwwdotorg.org>
      Reviewed-by: NTom Rini <trini@konsulko.com>
      f031f501
    • S
      rpi: add Raspberry Pi 3 board ID · 7233fb31
      Stephen Warren 提交于
      This allows U-Boot to known the name of the board.
      
      The existing rpi_2_defconfig can operate correctly on the Raspberry Pi 3
      in 32-bit mode /if/ you have configured the firmware to use the PL011 UART
      as the console UART (the default is the mini UART). This requires two
      things:
      a) config.txt should contain dtoverlay=pi3-miniuart-bt
      b) You should run the following to tell the VC FW to process DT when
      booting, and copy u-boot.bin.img (rather than u-boot.bin) to the SD card
      as the kernel image:
      
         path/to/kernel/scripts/mkknlimg --dtok u-boot.bin u-boot.bin.img
      
      This works as of firmware.git commit 046effa13ebc "firmware: arm_loader:
      emmc clock depends on core clock See:
      https://github.com/raspberrypi/firmware/issues/572".
      Signed-off-by: NStephen Warren <swarren@wwwdotorg.org>
      Reviewed-by: NTom Rini <trini@konsulko.com>
      7233fb31
    • S
      rpi: use constant "unknown board" DT filename · 29937caa
      Stephen Warren 提交于
      To simplify support for new SoCs, just use a constant filename
      for the unknown case. In practice this case shouldn't be hit anyway, so
      the filename isn't relevant, and certainly doesn't need to differentiate
      between SoCs. If a user has an as-yet-unknown board, they can override
      this value in the environment anyway.
      Signed-off-by: NStephen Warren <swarren@wwwdotorg.org>
      Reviewed-by: NTom Rini <trini@konsulko.com>
      29937caa
  14. 27 3月, 2016 1 次提交
  15. 23 3月, 2016 1 次提交
  16. 25 2月, 2016 1 次提交
  17. 08 2月, 2016 3 次提交
  18. 06 12月, 2015 3 次提交
    • S
      rpi: add support for Raspberry Pi Zero · af7c03ea
      Stephen Warren 提交于
      For U-Boot's purposes, at present all we care about is ensuring there's
      a model table entry.
      Signed-off-by: NStephen Warren <swarren@wwwdotorg.org>
      af7c03ea
    • S
      rpi: fix revision scheme parsing · c4ea1edb
      Stephen Warren 提交于
      The RPi has two different schemes for encoding board revision values.
      When adding RPi 2 support, I thought that the conflicting type field
      values were to be interpreted based on bcm2835-vs-bcm2836. In fact, the
      scheme bit determines the encoding. The RPi Zero uses the bcm2835 yet
      uses the new encoding scheme. Fix the code to cater for this correctly.
      Signed-off-by: NStephen Warren <swarren@wwwdotorg.org>
      c4ea1edb
    • S
      rpi: get rid of BCM2835_BOARD_REV_* macros · dbe6f1eb
      Stephen Warren 提交于
      There are two numbering schemes for the RPi revision values; old and new
      scheme. The values within each scheme overlap. Hence, it doesn't make
      sense to have absolute/global names for the revision IDs. Get rid of the
      names and just use the raw revision/type values to set up the array of
      per-revision data.
      
      This change makes most sense when coupled with the next change. However,
      it's split out so that the mechanical cut/paste is separate from the
      logic changes for easier review and problem bisection.
      Signed-off-by: NStephen Warren <swarren@wwwdotorg.org>
      dbe6f1eb
  19. 25 10月, 2015 1 次提交
  20. 19 10月, 2015 1 次提交
  21. 12 9月, 2015 1 次提交
  22. 13 8月, 2015 1 次提交
  23. 13 4月, 2015 1 次提交