[U-Boot] [PATCH v6 0/26] tegra: Add eDP support for nyan-big

Simon Glass
2015-04-28T03:03:21Z

Hi Tom, Jimmy,

On 14 April 2015 at 21:03, Simon Glass <sjg@chromium.org> wrote:
> This series adds eDP support for nyan-big so that the display works.
>
> Nyan-big is based on tegra124.
>
> Some support is added for new clocks to make this work. The drm_dp_helper.h
> file is brought in from Linux since many of the DisplayPort constants are
> generic. A very simple uclass is added for DisplayPort, and the Tegra
> driver makes use of that. The U-Boot EDID support is enhanced to read some
> additional information (detailed timings).
>
> There is existing video support for Tegra20, but I don't think it works for
> Tegra30/114 (is this correct?). This series relies on detecting the display
> at run-time as I cannot find a good device tree binding for things like
> display depth. But if we could resolve that then it might be possible to
> move Tegra20 over to use the same driver, etc. There is clearly a lot in
> common with the display controllers - I have exploited this with the header
> file but not with the C file.
>
> HDMI is not supported at present. If this is easy and there is an existing
> driver to follow along with then I might be able to incorporate it later.
>
> This series is available at u-boot-dm/nyan-working

Any comments on this new version please?

>
> Changes in v6:
> - Add a comment about tegra_dc_dp_check_sink()
> - Add more debug() statements
> - Add new patch to sort the uclasses
> - Fix incorrect use of DP_MAIN_LINK_CHANNEL_CODING_SET register
> - Improve retry logic in tegra_dc_dp_check_sink()
> - Report failure when we cannot init the eDP display
>
> Changes in v4:
> - Rebase on u-boot-dm/next since this series is still pending
>
> Changes in v3:
> - Add full link training support
> - Change parameters of update_display_mode()
> - Fix 64-bit maths error
> - Fix trainging typo
> - Reorder parameters to tegra_dc_sor_attach()
> - Set scramble_ena to 1 on start-up so that link training succeeds
> - Simplify timouts to remove repeated multiplication by 1000
> - Use real error return values in tegra_dc_dpaux_write_chunk() and others
> - Use sor pointer in struct tegra_dp_priv
>
> Changes in v2:
> - Rebase on top of u-boot-dm
> - Remove definition of BIT()
>
> Simon Glass (26):
> dm: core: Sort the uclasses
> dm: gpio: Add error handling and a function to claim vector GPIOs
> fdt: Add binding decode function for display-timings
> tegra: Move the pwm into tegra-common
> tegra: pwm: Allow the clock rate to be left as is
> tegra: Move checkboard() into the board code
> tegra: Add a board ID function
> power: Export register access functions from as3722
> tegra: Provide a function to allow LCD PMIC setup
> tegra: Add support for setting up a as3722 PMIC
> tegra: nyan-big: Add LCD PMIC init and board ID
> tegra124: dts: Add host1x node to provide display information
> tegra: config: Use CONFIG_LCD to detect LCD presence
> tegra: clock: Add checking for invalid clock IDs
> tegra: clock: Split the clock source code into a separate function
> tegra124: clock: Add display clocks and functions
> tegra: Move display controller header into common
> video: Add drm_dp_helper.h
> edid: Add a function to read detailed monitor timings
> dm: video: Add a uclass for display port
> tegra: dts: nyan-big: Add definitions for eDP display
> tegra: video: Support serial output resource (SOR) on tegra124
> tegra: video: Add Embedded DisplayPort driver
> tegra: video: support eDP displays on Tegra124 devices
> tegra: config: nyan-big: Enable LCD
> tegra124: video: Add full link training for eDP
>
> arch/arm/dts/tegra124-nyan-big.dts | 47 +
> arch/arm/dts/tegra124.dtsi | 84 +
> arch/arm/include/asm/arch-tegra/clk_rst.h | 15 +-
> arch/arm/include/asm/arch-tegra/clock.h | 14 +
> .../include/asm/{arch-tegra20 => arch-tegra}/dc.h | 67 +-
> arch/arm/include/asm/arch-tegra/pwm.h | 60 +
> arch/arm/include/asm/arch-tegra/sys_proto.h | 19 +-
> arch/arm/include/asm/arch-tegra124/clock-tables.h | 3 +-
> arch/arm/include/asm/arch-tegra124/clock.h | 21 +
> arch/arm/include/asm/arch-tegra124/display.h | 58 +
> arch/arm/include/asm/arch-tegra124/pwm.h | 14 +
> arch/arm/include/asm/arch-tegra20/display.h | 2 +-
> arch/arm/include/asm/arch-tegra20/pwm.h | 54 +-
> arch/arm/mach-tegra/Makefile | 1 +
> arch/arm/mach-tegra/board.c | 8 -
> arch/arm/mach-tegra/clock.c | 83 +-
> arch/arm/mach-tegra/{tegra20 => }/pwm.c | 7 +-
> arch/arm/mach-tegra/tegra124/clock.c | 141 +-
> arch/arm/mach-tegra/tegra20/Makefile | 1 -
> arch/arm/mach-tegra/tegra20/display.c | 2 +-
> board/nvidia/common/board.c | 40 +-
> board/nvidia/nyan-big/nyan-big.c | 34 +-
> common/edid.c | 105 ++
> configs/nyan-big_defconfig | 2 +
> .../gpu/nvidia,tegra20-host1x.txt | 372 +++++
> doc/device-tree-bindings/video/display-timing.txt | 110 ++
> drivers/gpio/gpio-uclass.c | 38 +-
> drivers/power/as3722.c | 16 +-
> drivers/video/Kconfig | 15 +
> drivers/video/Makefile | 6 +
> drivers/video/dp-uclass.c | 34 +
> drivers/video/tegra124/Makefile | 10 +
> drivers/video/tegra124/display.c | 472 ++++++
> drivers/video/tegra124/displayport.h | 412 +++++
> drivers/video/tegra124/dp.c | 1607 ++++++++++++++++++++
> drivers/video/tegra124/sor.c | 1024 +++++++++++++
> drivers/video/tegra124/sor.h | 922 +++++++++++
> drivers/video/tegra124/tegra124-lcd.c | 97 ++
> include/asm-generic/gpio.h | 15 +-
> include/configs/nyan-big.h | 14 +
> include/configs/tegra-common-post.h | 2 +-
> include/displayport.h | 60 +
> include/dm/uclass-id.h | 29 +-
> include/edid.h | 19 +
> include/fdtdec.h | 81 +
> include/linux/drm_dp_helper.h | 406 +++++
> include/power/as3722.h | 3 +
> lib/fdtdec.c | 95 ++
> 48 files changed, 6599 insertions(+), 142 deletions(-)
> rename arch/arm/include/asm/{arch-tegra20 => arch-tegra}/dc.h (89%)
> create mode 100644 arch/arm/include/asm/arch-tegra/pwm.h
> create mode 100644 arch/arm/include/asm/arch-tegra124/display.h
> create mode 100644 arch/arm/include/asm/arch-tegra124/pwm.h
> rename arch/arm/mach-tegra/{tegra20 => }/pwm.c (93%)
> create mode 100644 doc/device-tree-bindings/gpu/nvidia,tegra20-host1x.txt
> create mode 100644 doc/device-tree-bindings/video/display-timing.txt
> create mode 100644 drivers/video/dp-uclass.c
> create mode 100644 drivers/video/tegra124/Makefile
> create mode 100644 drivers/video/tegra124/display.c
> create mode 100644 drivers/video/tegra124/displayport.h
> create mode 100644 drivers/video/tegra124/dp.c
> create mode 100644 drivers/video/tegra124/sor.c
> create mode 100644 drivers/video/tegra124/sor.h
> create mode 100644 drivers/video/tegra124/tegra124-lcd.c
> create mode 100644 include/displayport.h
> create mode 100644 include/linux/drm_dp_helper.h
>
> --
> 2.2.0.rc0.207.ga3a616c
>

Regards,
Simon