This series adds support for the Tegra2x's display peripheral. This supports the LCD display on Seaboard and we use this to enable console output in U-Boot on the LCD.
Configuration is via the device tree. Proposed bindings are included in this series, taken from pwm bindings that should be in linux-next, a Tegra video binding that might be accepted in devicetree-discuss and a proposed video mode binding posted to dri-devel. While I agree EDID is convenient for machines I would prefer to provide a user-friendly way of selecting LCD settings as well, with EDID more as a fallback and auto-detection when available. To improve performance two optimisations are offered: 1. The LCD frame buffer is cached, with the cache being flushed after each newline sent to putc(), and in a few other situations. This dramatically increases performance (around 10x). This requires a few additions to the ARM cache support. 2. The console supports scrolling in steps of more than 1 line. This speeds up scrolling output considerably, particularly commands like 'printenv' which display a lot of output, and particular when the dcache is off. This requires a new CONFIG and a change to the console_scrollup() function. Changes in v2: - Add new patch to use const in pinmux_config_pingroup/table() - Add nvidia prefix to device tree properties - Align tegra display using new CONFIG_LCD_ALIGNMENT feature - Put the LCD cache flush logic into lcd_putc() instead of lcd_puts() - Update LCD driver to deal with new fdt bindings - Update seaboard LCD definitions for new fdt binding - Use a more generic config CONFIG_LCD_ALIGNMENT for lcd alignment - Use const where possible in funcmux Changes in v3: - Add new commit for pwm binding and node - Add new panel binding to fit with tegra display controller binding - Add probe function to read in fdt parameters in display driver - Add separate call to pwm_init() in board_init() - Adjust LCD driver to use new SOC display driver structures - Bring in proposed tegra display controller binding - Decode fdt node within the pwm driver - Fix tiny bug in mult-line lcd scrolling - Handle a cached frame buffer out of normal U-Boot memory - Introduce concept of a pwm channel, rather than separate peripherals - Move some fdt decode code from LCD driver to SOC display driver - Put the LCD cache flush logic back into lcd_puts() - Remove LPW1 pin which is not needed by display - Remove spurious newline from fdtdec_get_addr() debug output - Rename fdt config structures - Rename pwfm driver to pwm - Separate display driver and LCD driver more in fdt - Tidy up fdtdec_decode_gpios() debug output - Use displaymode binding for fdt - Use new proposed upstream pwm binding - Use new pwm binding from pre-linux-next - Use new upstream proposed LCD definitions Mayuresh Kulkarni (1): tegra: Enable display/lcd support on Seaboard Simon Glass (16): fdt: Tidy debugging, add to fdtdec_get_int/addr() fdt: Add header guard to fdtdec.h tegra: Use const for pinmux_config_pingroup/table() tegra: Add display support to funcmux tegra: fdt: Add pwm binding and node tegra: fdt: Add LCD definitions for Tegra tegra: Add support for PWM tegra: Add LCD driver tegra: Add LCD support to Nvidia boards arm: Add control over cachability of memory regions lcd: Add CONFIG_LCD_ALIGNMENT to select frame buffer alignment lcd: Add support for flushing LCD fb from dcache after update tegra: Align LCD frame buffer to section boundary tegra: Support control of cache settings for LCD tegra: fdt: Add LCD definitions for Seaboard lcd: Add CONSOLE_SCROLL_LINES option to speed console Wei Ni (1): tegra: Add SOC support for display/lcd README | 16 + arch/arm/cpu/armv7/cache_v7.c | 11 + arch/arm/cpu/armv7/tegra2/Makefile | 1 + arch/arm/cpu/armv7/tegra2/display.c | 389 +++++++++++++++++ arch/arm/cpu/armv7/tegra2/funcmux.c | 38 ++ arch/arm/cpu/armv7/tegra2/pinmux.c | 4 +- arch/arm/cpu/armv7/tegra2/pwm.c | 99 +++++ arch/arm/dts/tegra20.dtsi | 96 +++++ arch/arm/include/asm/arch-tegra2/dc.h | 544 ++++++++++++++++++++++++ arch/arm/include/asm/arch-tegra2/display.h | 152 +++++++ arch/arm/include/asm/arch-tegra2/pinmux.h | 4 +- arch/arm/include/asm/arch-tegra2/pwm.h | 75 ++++ arch/arm/include/asm/system.h | 30 ++ arch/arm/lib/cache-cp15.c | 62 +++- board/nvidia/common/board.c | 24 +- board/nvidia/dts/tegra2-seaboard.dts | 32 ++ common/lcd.c | 86 +++- doc/device-tree-bindings/pwm/tegra20-pwm.txt | 18 + doc/device-tree-bindings/video/displaymode.txt | 42 ++ doc/device-tree-bindings/video/tegra20-dc.txt | 89 ++++ drivers/video/Makefile | 1 + drivers/video/tegra.c | 368 ++++++++++++++++ include/configs/seaboard.h | 11 +- include/configs/tegra2-common.h | 3 + include/fdtdec.h | 5 + include/lcd.h | 11 + lib/fdtdec.c | 29 +- 27 files changed, 2199 insertions(+), 41 deletions(-) create mode 100644 arch/arm/cpu/armv7/tegra2/display.c create mode 100644 arch/arm/cpu/armv7/tegra2/pwm.c create mode 100644 arch/arm/include/asm/arch-tegra2/dc.h create mode 100644 arch/arm/include/asm/arch-tegra2/display.h create mode 100644 arch/arm/include/asm/arch-tegra2/pwm.h create mode 100644 doc/device-tree-bindings/pwm/tegra20-pwm.txt create mode 100644 doc/device-tree-bindings/video/displaymode.txt create mode 100644 doc/device-tree-bindings/video/tegra20-dc.txt create mode 100644 drivers/video/tegra.c -- 1.7.7.3 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot