
This series adds display drivers for rockchip and enables them on jerry, firefly-rk3288 (HDMI only) and rock2 (HDMI only). It builds on the recent keyboard series.
Driver are provided for video displays (EDP and HDMI) and the VOP (video output processor).
This series also adds several new uclasses: - PWM (Pulse-width modulation) - Panel (used for LCD panels) - Display (renamed from DisplayPort - a generic display with power, etc.) - Backlight (used for LCD backlights)
Since most of this implementation is device-tree-controlled it is fairly easy to enable HDMI on the other RK3288 devices. This series adds this for Firefly-RK3288. It also includes Radxa Rock 2 as a separate board since a device tree file is now available in Linux. HDMI is enabled on that board also.
There remain quite a few things still to do for core rockchip support. Here are a few noticed while preparing this series:
- Clocks / caches are not working correctly. The 'dhry' command shows approximately 60 DMIPS when supposedly running at 1.8GHz. Turning the cache on or off makes no difference. The platform should run at over 2000 DMIPS by my estimate. This problem is common on ARM platforms. For example I found:
beaver (Tegra) 818 DMIPS pit (Exynos) 276 DMIPS snow (Exynos) 521 DMIPS
- HDMI EDID-reading does not work on Jerry, perhaps because the clocks are not running as they should. It seems to work fine on other boards.
This series is available at u-boot-dm/rkd-working
Simon Glass (37): stdio: Correct a build error with driver model gpio: Warn about invalid GPIOs used with the 'gpio' command video: Name consoles by their number video: Add a function to control cache flushing video: bridge: Allow GPIOs to be optional dm: pwm: Add a PWM uclass pwm: rockchip: Add a PWM driver for Rockchip SoCs dm: backlight: Add a backlight uclass dm: backlight: Add a driver for a PWM backlight dm: panel: Add a panel uclass video: panel: Add a simple panel driver dm: video: Repurpose the 'displayport' uclass to 'display' rockchip: Rename the CRU_MODE_CON fields rockchip: clk: Add support for clocks needed by the displays rockchip: video: Add a display driver for rockchip HDMI rockchip: video: Add a display driver for rockchip eDP rockchip: video: Add a video-output driver rockchip: Don't skip low-level init rockchip: Add a simple 'clock' command rockchip: Add a script to parse datasheets rockchip: config: Enable the 'gpio' command rockchip: sdram: Tidy up a few comments rockchip: sdram: Use syscon_get_first_range() where possible rockchip: Tidy up the register-access macros rockchip: spl: Drop MMC support code when not needed rockchip: jerry: Fix the SDRAM timing rockchip: rk3288: clock: Fix various minor errors rockchip: rk3288: pinctrl: Fix HDMI pinctrl rockchip: spl: Support full-speed CPU in SPL rockchip: jerry: Add support for timing SPI flash speed rockchip: jerry: Enable EDP and HDMI video output rockchip: firefly-rk3288: Enable HDMI output rockchip: dts: Sync up SPDIF node with Linux rockchip: rock2: Bring in device tree files from Linux rockchip: rock2: dts: Make changes for U-Boot rockchip: Add support for Raxda Rock 2 rockchip: Update the README
arch/arm/dts/Makefile | 1 + arch/arm/dts/rk3288-jerry.dts | 5 + arch/arm/dts/rk3288-rock2-som.dtsi | 278 ++++++ arch/arm/dts/rk3288-rock2-square.dts | 201 ++++ arch/arm/dts/rk3288-veyron.dtsi | 4 +- arch/arm/dts/rk3288.dtsi | 22 + arch/arm/include/asm/arch-rockchip/clock.h | 5 + arch/arm/include/asm/arch-rockchip/cru_rk3288.h | 70 +- arch/arm/include/asm/arch-rockchip/edp_rk3288.h | 636 +++++++++++++ arch/arm/include/asm/arch-rockchip/hardware.h | 7 +- arch/arm/include/asm/arch-rockchip/hdmi_rk3288.h | 456 +++++++++ arch/arm/include/asm/arch-rockchip/pwm.h | 41 + arch/arm/include/asm/arch-rockchip/vop_rk3288.h | 349 +++++++ arch/arm/mach-rockchip/board.c | 28 + arch/arm/mach-rockchip/rk3288-board-spl.c | 10 +- arch/arm/mach-rockchip/rk3288/Kconfig | 19 + arch/arm/mach-rockchip/rk3288/sdram_rk3288.c | 57 +- board/radxa/rock2/Kconfig | 15 + board/radxa/rock2/MAINTAINERS | 6 + board/radxa/rock2/Makefile | 7 + board/radxa/rock2/rock2.c | 7 + common/cmd_gpio.c | 4 +- common/stdio.c | 3 + configs/chromebook_jerry_defconfig | 7 + configs/firefly-rk3288_defconfig | 7 + configs/nyan-big_defconfig | 2 +- configs/rock2_defconfig | 53 ++ doc/README.rockchip | 53 +- drivers/Kconfig | 2 + drivers/clk/clk_rk3288.c | 290 +++++- drivers/pinctrl/rockchip/pinctrl_rk3288.c | 2 + drivers/pwm/Kconfig | 19 + drivers/pwm/Makefile | 2 + drivers/pwm/pwm-uclass.c | 36 + drivers/pwm/rk_pwm.c | 103 +++ drivers/video/Kconfig | 23 +- drivers/video/Makefile | 8 +- drivers/video/backlight-uclass.c | 25 + drivers/video/bridge/video-bridge-uclass.c | 11 +- drivers/video/display-uclass.c | 52 ++ drivers/video/dp-uclass.c | 34 - drivers/video/panel-uclass.c | 25 + drivers/video/pwm_backlight.c | 134 +++ drivers/video/rockchip/Makefile | 8 + drivers/video/rockchip/rk_edp.c | 1081 ++++++++++++++++++++++ drivers/video/rockchip/rk_hdmi.c | 929 +++++++++++++++++++ drivers/video/rockchip/rk_vop.c | 346 +++++++ drivers/video/simple_panel.c | 99 ++ drivers/video/tegra124/display.c | 18 +- drivers/video/tegra124/dp.c | 9 +- drivers/video/vidconsole-uclass.c | 7 +- drivers/video/video-uclass.c | 7 + include/backlight.h | 31 + include/configs/chromebook_jerry.h | 14 +- include/configs/firefly-rk3288.h | 9 +- include/configs/rk3288_common.h | 2 +- include/configs/rock2.h | 31 + include/configs/sandbox.h | 8 +- include/{displayport.h => display.h} | 33 +- include/dm/uclass-id.h | 5 +- include/edid.h | 1 + include/panel.h | 31 + include/pwm.h | 53 ++ include/video.h | 8 + tools/rkmux.py | 218 +++++ 65 files changed, 5864 insertions(+), 203 deletions(-) create mode 100644 arch/arm/dts/rk3288-rock2-som.dtsi create mode 100644 arch/arm/dts/rk3288-rock2-square.dts create mode 100644 arch/arm/include/asm/arch-rockchip/edp_rk3288.h create mode 100644 arch/arm/include/asm/arch-rockchip/hdmi_rk3288.h create mode 100644 arch/arm/include/asm/arch-rockchip/pwm.h create mode 100644 arch/arm/include/asm/arch-rockchip/vop_rk3288.h create mode 100644 board/radxa/rock2/Kconfig create mode 100644 board/radxa/rock2/MAINTAINERS create mode 100644 board/radxa/rock2/Makefile create mode 100644 board/radxa/rock2/rock2.c create mode 100644 configs/rock2_defconfig create mode 100644 drivers/pwm/Kconfig create mode 100644 drivers/pwm/pwm-uclass.c create mode 100644 drivers/pwm/rk_pwm.c create mode 100644 drivers/video/backlight-uclass.c create mode 100644 drivers/video/display-uclass.c delete mode 100644 drivers/video/dp-uclass.c create mode 100644 drivers/video/panel-uclass.c create mode 100644 drivers/video/pwm_backlight.c create mode 100644 drivers/video/rockchip/Makefile create mode 100644 drivers/video/rockchip/rk_edp.c create mode 100644 drivers/video/rockchip/rk_hdmi.c create mode 100644 drivers/video/rockchip/rk_vop.c create mode 100644 drivers/video/simple_panel.c create mode 100644 include/backlight.h create mode 100644 include/configs/rock2.h rename include/{displayport.h => display.h} (59%) create mode 100644 include/panel.h create mode 100755 tools/rkmux.py