public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v4 00/33] dm: Introduce Rockchip RK3288 support
@ 2015-08-24 15:12 Simon Glass
  2015-08-24 15:12 ` [U-Boot] [PATCH v4 01/33] pinctrl: Correct build errors in the pinctrl_simple Simon Glass
                   ` (35 more replies)
  0 siblings, 36 replies; 58+ messages in thread
From: Simon Glass @ 2015-08-24 15:12 UTC (permalink / raw)
  To: u-boot


The Rockchip RK3288 is based on a quad-core Cortex-A17 CPU and has a good
set of peripherals. Various full-featured U-Boot ports are available and
this is an attempt to bring those features into mainline. With this series
the Firefly RK3288 can boot to a prompt from an SD card.

Since much of the code is generic, this also supports the Radxa Rock 2.
Since there is no device tree available for that yet, it uses the same
config and device tree as the Firefly. This works because not all
peripherals are supported, so the differences don't matter.

Support for booting from USB OTG is also provided, using the on-chip boot
ROM and the rkflashtool utility. This can boot as far as SPL, but there is
no support for reading U-Boot proper from USB as yet. This requires
implementing a suitable protocol (perhaps DFU or Rockchip's proprietary
one) in SPL.

Support is also provided for the Hisense Chromebook, which is based on the
same SoC. In this case it boots from SPI rather than an SD card.

This seriea makes use of driver model including a number of recently added
uclasses:

- Clocks - setting and getting PLL and peripheral clocks
- Pinctrl - adjusting pin multiplexing settings
- Reset - reseting the board or SoC
- RAM - setting up RAM controllers and detecting the available RAM
- MMC - MMC controllers (using the existing block device framework)
- LEDs - turning LEDs on and off, with only a GPIO driver so far

This series avoids hard-coding RK3288-specific code into the build. There
is a CONFIG_ROCKCHIP_RK3288 but it only *adds* support for RK3288. In
principle another CONFIG could add support for a different Rockchip SoC
with only the device tree selecting which one U-Boot works on.

Support is provided in mkimage to build these image types:

- rkimage - suitable for packaging up SPL to be sent to the boot ROM over
            USB OTG
- rksd    - suitable for writing to an SD card

Much of the source and ideas for this series came from downstream Rockchip
U-Boot trees. SDRAM init came from Coreboot. In most cases it has been
pretty heavily cleaned up / rewritten to meet U-Boot style and remove
hard-coding of things.

Drivers are provided for:

- Clocks
- Pinctrl
- SoC reset
- DDR3 SDRAM
- I2C
- SPI
- GPIOs
- LEDs using GPIOS
- MMC
- Firefly main PMIC (ACT8846) and included regulators

These are lightly tested and doubtless some problems exist with some,
particularly I2C.

One problem with device tree is that U-Boot has no way of dropping features
it does not need or use. For SPL this problem needs to be solved and this
series uses a new 'fdtgrep' tool for this. The 45KB Firefly device tree
reduces to a 6KB bytes when unused material is removed. SDRAM timings are
also in the device tree.

There is a large amount of additional work to bring other Rockchip drivers
and features into mainline U-Boot, so this is only a start.

Note: This series sits on top of Masahiro's RFC pinctrl series. I wanted to
get a new version out while we wait for this to make it to mainline. You can
find this series at u-boot-dm/rockchip-working.

Changes in v4:
- Add a set_state_simple() method
- Adjust the defconfig file to suit mainline
- Rename pinctrl.h to dm/pinctrl.h
- Tweak the cover letter a little, drop mention of patches already applied
- Use CONFIG_SPL_LED instead of CONFIG_SPL_LED_SUPPORT

Changes in v3:
- Add device tree bindings for CRU and DMC
- Add various new patches to get RK3288 booting to a prompt
- Make use of additional features since version 2
- Update README to mention available drivers
- Update clock rate to always be 24MHz

Changes in v2:
- Drop use of CONFIG_USE_PRIVATE_LIBGCC=y
- Tidy up license headers and remove SPL #ifdefs

Masahiro Yamada (1):
  dm: do not return pointer if NULL is given to devp of device_bind()

Simon Glass (32):
  pinctrl: Correct build errors in the pinctrl_simple
  pinctrl: Add help text to Kconfig
  pinctrl: Add the concept of peripheral IDs
  mmc: Support bypass mode with the get_mmc_clk() method
  dm: Improve handling of a missing uclass
  dm: Provide better debugging when a device fails to bind
  arm: reset: Avoid a build error when the reset uclass is enabled
  rockchip: Add serial support
  rockchip: Bring in RK3288 device tree file includes and bindings
  rockchip: rk3288: dts: Make core devices available early
  mkimage: Allow padding to any length
  mkimage: Allow the original file size to be recorded
  rockchip: Add the rkimage format to mkimage
  rockchip: Add support for the SD image
  rockchip: Add support for the SPI image
  rockchip: gpio: Add rockchip GPIO driver
  rockchip: Add basic peripheral and clock definitions
  power: Add support for ACT8846 PMIC
  power: regulator: Add a driver for ACT8846 regulators
  rockchip: rk3288: Add clock driver
  rockchip: rk3288: Add header files for PMU and GRF
  rockchip: rk3288: Add SoC reset driver
  rockchip: rk3288: Add a simple syscon driver
  rockchip: rk3288: Add pinctrl driver
  rockchip: rk3288: Add SDRAM init
  rockchip: Add an MMC driver
  rockchip: Add core SoC start-up code
  rockchip: Add I2C driver
  rockchip: Add SPI driver
  rockchip: Add basic support for firefly-rk3288
  rockchip: Add basic support for jerry
  rockchip: Add a simple README

 arch/arm/Kconfig                                   |   10 +
 arch/arm/Makefile                                  |    1 +
 arch/arm/dts/Makefile                              |    3 +
 arch/arm/dts/cros-ec-sbs.dtsi                      |   16 +
 arch/arm/dts/rk3288-firefly.dts                    |   75 +
 arch/arm/dts/rk3288-firefly.dtsi                   |  457 ++++++
 arch/arm/dts/rk3288-jerry.dts                      |  203 +++
 arch/arm/dts/rk3288-thermal.dtsi                   |   88 ++
 arch/arm/dts/rk3288-veyron-chromebook.dtsi         |  200 +++
 arch/arm/dts/rk3288-veyron.dtsi                    |  844 +++++++++++
 arch/arm/dts/rk3288.dtsi                           | 1473 ++++++++++++++++++++
 arch/arm/include/asm/arch-rockchip/clock.h         |   45 +
 arch/arm/include/asm/arch-rockchip/cru_rk3288.h    |  185 +++
 arch/arm/include/asm/arch-rockchip/ddr_rk3288.h    |  484 +++++++
 arch/arm/include/asm/arch-rockchip/gpio.h          |   28 +
 arch/arm/include/asm/arch-rockchip/grf_rk3288.h    |  768 ++++++++++
 arch/arm/include/asm/arch-rockchip/hardware.h      |   20 +
 arch/arm/include/asm/arch-rockchip/i2c.h           |   70 +
 arch/arm/include/asm/arch-rockchip/periph.h        |   54 +
 arch/arm/include/asm/arch-rockchip/pmu_rk3288.h    |   89 ++
 arch/arm/include/asm/arch-rockchip/sdram.h         |   92 ++
 arch/arm/lib/Makefile                              |    2 +
 arch/arm/mach-rockchip/Kconfig                     |   41 +
 arch/arm/mach-rockchip/Makefile                    |   13 +
 arch/arm/mach-rockchip/board-spl.c                 |  290 ++++
 arch/arm/mach-rockchip/board.c                     |   46 +
 arch/arm/mach-rockchip/common.c                    |   28 +
 arch/arm/mach-rockchip/rk3288/Kconfig              |   26 +
 arch/arm/mach-rockchip/rk3288/Makefile             |    9 +
 arch/arm/mach-rockchip/rk3288/reset_rk3288.c       |   47 +
 arch/arm/mach-rockchip/rk3288/sdram_rk3288.c       |  878 ++++++++++++
 arch/arm/mach-rockchip/rk3288/syscon_rk3288.c      |   25 +
 board/firefly/firefly-rk3288/Kconfig               |   15 +
 board/firefly/firefly-rk3288/MAINTAINERS           |    6 +
 board/firefly/firefly-rk3288/Makefile              |    7 +
 board/firefly/firefly-rk3288/firefly-rk3288.c      |    7 +
 board/google/chromebook_jerry/Kconfig              |   15 +
 board/google/chromebook_jerry/MAINTAINERS          |    6 +
 board/google/chromebook_jerry/Makefile             |    7 +
 board/google/chromebook_jerry/jerry.c              |    7 +
 board/google/common/Makefile                       |    2 +-
 common/image.c                                     |    3 +
 configs/chromebook_jerry_defconfig                 |   43 +
 configs/firefly-rk3288_defconfig                   |   43 +
 doc/README.rockchip                                |  246 ++++
 .../clock/rockchip,rk3188-cru.txt                  |   61 +
 .../clock/rockchip,rk3288-cru.txt                  |   61 +
 .../clock/rockchip,rk3288-dmc.txt                  |  155 ++
 doc/device-tree-bindings/clock/rockchip.txt        |   77 +
 .../pinctrl/rockchip,pinctrl.txt                   |  157 +++
 .../thermal/rockchip-thermal.txt                   |   68 +
 drivers/clk/Makefile                               |    1 +
 drivers/clk/clk_rk3288.c                           |  618 ++++++++
 drivers/core/device.c                              |   10 +-
 drivers/core/root.c                                |    5 +-
 drivers/core/uclass.c                              |    7 +-
 drivers/gpio/Kconfig                               |    9 +
 drivers/gpio/Makefile                              |    1 +
 drivers/gpio/rk_gpio.c                             |  123 ++
 drivers/i2c/Kconfig                                |    9 +
 drivers/i2c/Makefile                               |    1 +
 drivers/i2c/rk_i2c.c                               |  391 ++++++
 drivers/mmc/Kconfig                                |    9 +
 drivers/mmc/Makefile                               |    1 +
 drivers/mmc/dw_mmc.c                               |    2 +-
 drivers/mmc/exynos_dw_mmc.c                        |    2 +-
 drivers/mmc/rockchip_mmc.c                         |   98 ++
 drivers/pinctrl/Kconfig                            |   22 +
 drivers/pinctrl/Makefile                           |    1 +
 drivers/pinctrl/pinctrl-uclass.c                   |   41 +-
 drivers/pinctrl/rockchip/Makefile                  |    8 +
 drivers/pinctrl/rockchip/pinctrl_rk3288.c          |  441 ++++++
 drivers/power/pmic/Kconfig                         |    9 +
 drivers/power/pmic/Makefile                        |    1 +
 drivers/power/pmic/act8846.c                       |   90 ++
 drivers/power/regulator/Kconfig                    |    9 +
 drivers/power/regulator/Makefile                   |    1 +
 drivers/power/regulator/act8846.c                  |  155 ++
 drivers/serial/Kconfig                             |    9 +
 drivers/serial/Makefile                            |    1 +
 drivers/serial/serial_rockchip.c                   |   43 +
 drivers/spi/Kconfig                                |    9 +
 drivers/spi/Makefile                               |    1 +
 drivers/spi/rk_spi.c                               |  375 +++++
 drivers/spi/rk_spi.h                               |  121 ++
 include/configs/chromebook_jerry.h                 |   16 +
 include/configs/firefly-rk3288.h                   |   15 +
 include/configs/rk3288_common.h                    |   98 ++
 include/dm/pinctrl.h                               |   61 +
 include/dt-bindings/clock/rk3288-cru.h             |  370 +++++
 include/dt-bindings/clock/rockchip,rk808.h         |   11 +
 include/dt-bindings/pinctrl/rockchip.h             |   26 +
 include/dt-bindings/power-domain/rk3288.h          |   11 +
 include/dwmmc.h                                    |   16 +-
 include/image.h                                    |    5 +-
 include/power/act8846_pmic.h                       |   37 +
 tools/Makefile                                     |    3 +
 tools/imagetool.h                                  |    1 +
 tools/mkimage.c                                    |   23 +-
 tools/rkcommon.c                                   |   72 +
 tools/rkcommon.h                                   |   28 +
 tools/rkimage.c                                    |   65 +
 tools/rksd.c                                       |  102 ++
 tools/rkspi.c                                      |  119 ++
 104 files changed, 11274 insertions(+), 25 deletions(-)
 create mode 100644 arch/arm/dts/cros-ec-sbs.dtsi
 create mode 100644 arch/arm/dts/rk3288-firefly.dts
 create mode 100644 arch/arm/dts/rk3288-firefly.dtsi
 create mode 100644 arch/arm/dts/rk3288-jerry.dts
 create mode 100644 arch/arm/dts/rk3288-thermal.dtsi
 create mode 100644 arch/arm/dts/rk3288-veyron-chromebook.dtsi
 create mode 100644 arch/arm/dts/rk3288-veyron.dtsi
 create mode 100644 arch/arm/dts/rk3288.dtsi
 create mode 100644 arch/arm/include/asm/arch-rockchip/clock.h
 create mode 100644 arch/arm/include/asm/arch-rockchip/cru_rk3288.h
 create mode 100644 arch/arm/include/asm/arch-rockchip/ddr_rk3288.h
 create mode 100644 arch/arm/include/asm/arch-rockchip/gpio.h
 create mode 100644 arch/arm/include/asm/arch-rockchip/grf_rk3288.h
 create mode 100644 arch/arm/include/asm/arch-rockchip/hardware.h
 create mode 100644 arch/arm/include/asm/arch-rockchip/i2c.h
 create mode 100644 arch/arm/include/asm/arch-rockchip/periph.h
 create mode 100644 arch/arm/include/asm/arch-rockchip/pmu_rk3288.h
 create mode 100644 arch/arm/include/asm/arch-rockchip/sdram.h
 create mode 100644 arch/arm/mach-rockchip/Kconfig
 create mode 100644 arch/arm/mach-rockchip/Makefile
 create mode 100644 arch/arm/mach-rockchip/board-spl.c
 create mode 100644 arch/arm/mach-rockchip/board.c
 create mode 100644 arch/arm/mach-rockchip/common.c
 create mode 100644 arch/arm/mach-rockchip/rk3288/Kconfig
 create mode 100644 arch/arm/mach-rockchip/rk3288/Makefile
 create mode 100644 arch/arm/mach-rockchip/rk3288/reset_rk3288.c
 create mode 100644 arch/arm/mach-rockchip/rk3288/sdram_rk3288.c
 create mode 100644 arch/arm/mach-rockchip/rk3288/syscon_rk3288.c
 create mode 100644 board/firefly/firefly-rk3288/Kconfig
 create mode 100644 board/firefly/firefly-rk3288/MAINTAINERS
 create mode 100644 board/firefly/firefly-rk3288/Makefile
 create mode 100644 board/firefly/firefly-rk3288/firefly-rk3288.c
 create mode 100644 board/google/chromebook_jerry/Kconfig
 create mode 100644 board/google/chromebook_jerry/MAINTAINERS
 create mode 100644 board/google/chromebook_jerry/Makefile
 create mode 100644 board/google/chromebook_jerry/jerry.c
 create mode 100644 configs/chromebook_jerry_defconfig
 create mode 100644 configs/firefly-rk3288_defconfig
 create mode 100644 doc/README.rockchip
 create mode 100644 doc/device-tree-bindings/clock/rockchip,rk3188-cru.txt
 create mode 100644 doc/device-tree-bindings/clock/rockchip,rk3288-cru.txt
 create mode 100644 doc/device-tree-bindings/clock/rockchip,rk3288-dmc.txt
 create mode 100644 doc/device-tree-bindings/clock/rockchip.txt
 create mode 100644 doc/device-tree-bindings/pinctrl/rockchip,pinctrl.txt
 create mode 100644 doc/device-tree-bindings/thermal/rockchip-thermal.txt
 create mode 100644 drivers/clk/clk_rk3288.c
 create mode 100644 drivers/gpio/rk_gpio.c
 create mode 100644 drivers/i2c/rk_i2c.c
 create mode 100644 drivers/mmc/rockchip_mmc.c
 create mode 100644 drivers/pinctrl/rockchip/Makefile
 create mode 100644 drivers/pinctrl/rockchip/pinctrl_rk3288.c
 create mode 100644 drivers/power/pmic/act8846.c
 create mode 100644 drivers/power/regulator/act8846.c
 create mode 100644 drivers/serial/serial_rockchip.c
 create mode 100644 drivers/spi/rk_spi.c
 create mode 100644 drivers/spi/rk_spi.h
 create mode 100644 include/configs/chromebook_jerry.h
 create mode 100644 include/configs/firefly-rk3288.h
 create mode 100644 include/configs/rk3288_common.h
 create mode 100644 include/dt-bindings/clock/rk3288-cru.h
 create mode 100644 include/dt-bindings/clock/rockchip,rk808.h
 create mode 100644 include/dt-bindings/pinctrl/rockchip.h
 create mode 100644 include/dt-bindings/power-domain/rk3288.h
 create mode 100644 include/power/act8846_pmic.h
 create mode 100644 tools/rkcommon.c
 create mode 100644 tools/rkcommon.h
 create mode 100644 tools/rkimage.c
 create mode 100644 tools/rksd.c
 create mode 100644 tools/rkspi.c

-- 
2.5.0.457.gab17608

^ permalink raw reply	[flat|nested] 58+ messages in thread

end of thread, other threads:[~2015-11-10 19:25 UTC | newest]

Thread overview: 58+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-24 15:12 [U-Boot] [PATCH v4 00/33] dm: Introduce Rockchip RK3288 support Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 01/33] pinctrl: Correct build errors in the pinctrl_simple Simon Glass
2015-08-24 15:31   ` Simon Glass
2015-08-26  4:16     ` Masahiro Yamada
2015-08-24 15:12 ` [U-Boot] [PATCH v4 02/33] pinctrl: Add help text to Kconfig Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 03/33] pinctrl: Add the concept of peripheral IDs Simon Glass
2015-08-26  4:30   ` Masahiro Yamada
2015-08-26  4:38     ` Simon Glass
2015-08-26  4:51       ` Masahiro Yamada
2015-08-26 13:20         ` Simon Glass
2015-08-27  4:39           ` Masahiro Yamada
2015-08-30 22:45             ` Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 04/33] mmc: Support bypass mode with the get_mmc_clk() method Simon Glass
2015-08-25  2:18   ` Jaehoon Chung
2015-08-24 15:12 ` [U-Boot] [PATCH v4 05/33] dm: do not return pointer if NULL is given to devp of device_bind() Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 06/33] dm: Improve handling of a missing uclass Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 07/33] dm: Provide better debugging when a device fails to bind Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 08/33] arm: reset: Avoid a build error when the reset uclass is enabled Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 09/33] rockchip: Add serial support Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 10/33] rockchip: Bring in RK3288 device tree file includes and bindings Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 11/33] rockchip: rk3288: dts: Make core devices available early Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 12/33] mkimage: Allow padding to any length Simon Glass
2015-08-25 18:11   ` Joe Hershberger
2015-08-24 15:12 ` [U-Boot] [PATCH v4 13/33] mkimage: Allow the original file size to be recorded Simon Glass
2015-08-25 18:12   ` Joe Hershberger
2015-08-24 15:12 ` [U-Boot] [PATCH v4 14/33] rockchip: Add the rkimage format to mkimage Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 15/33] rockchip: Add support for the SD image Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 16/33] rockchip: Add support for the SPI image Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 17/33] rockchip: gpio: Add rockchip GPIO driver Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 18/33] rockchip: Add basic peripheral and clock definitions Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 19/33] power: Add support for ACT8846 PMIC Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 20/33] power: regulator: Add a driver for ACT8846 regulators Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 21/33] rockchip: rk3288: Add clock driver Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 22/33] rockchip: rk3288: Add header files for PMU and GRF Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 23/33] rockchip: rk3288: Add SoC reset driver Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 24/33] rockchip: rk3288: Add a simple syscon driver Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 25/33] rockchip: rk3288: Add pinctrl driver Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 26/33] rockchip: rk3288: Add SDRAM init Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 27/33] rockchip: Add an MMC driver Simon Glass
2015-08-25  2:31   ` Jaehoon Chung
2015-08-30 22:45     ` Simon Glass
2015-08-25 18:26   ` Andre Przywara
2015-08-30 22:45     ` Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 28/33] rockchip: Add core SoC start-up code Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 29/33] rockchip: Add I2C driver Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 30/33] rockchip: Add SPI driver Simon Glass
2015-08-28  4:42   ` Jagan Teki
2015-08-30 22:45     ` Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 31/33] rockchip: Add basic support for firefly-rk3288 Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 32/33] rockchip: Add basic support for jerry Simon Glass
2015-08-24 15:12 ` [U-Boot] [PATCH v4 33/33] rockchip: Add a simple README Simon Glass
2015-08-24 15:32 ` [U-Boot] [PATCH v4 00/33] dm: Introduce Rockchip RK3288 support Simon Glass
2015-08-30 17:40 ` Sjoerd Simons
2015-08-30 22:45   ` Simon Glass
2015-11-09  8:41 ` cwz at rock-chips.com
2015-11-09 20:24   ` Simon Glass
2015-11-10  2:34     ` cwz at rock-chips.com
2015-11-10 19:25       ` Simon Glass

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox