public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
From: Sui Jingfeng <15330273260@189.cn>
To: Thomas Zimmermann <tzimmermann@suse.de>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
	suijingfeng <15330273260@189.cn>,
	Sumit Semwal <sumit.semwal@linaro.org>,
	Christian Koenig <christian.koenig@amd.com>,
	Emil Velikov <emil.l.velikov@gmail.com>
Cc: Nathan Chancellor <nathan@kernel.org>,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org,
	loongson-kernel@lists.loongnix.cn
Subject: Re: [PATCH v13 0/2] drm: add kms driver for loongson display controller
Date: Sat, 20 May 2023 19:56:39 +0800	[thread overview]
Message-ID: <1cf596b1-74a6-979c-ca76-e77472b6ed02@189.cn> (raw)
In-Reply-To: <7b77020f-d543-13bf-e178-bc416bcc728d@suse.de>

Hi,

On 2023/5/18 21:38, Thomas Zimmermann wrote:
> Hi,
>
> I don't know the status here, but if it works, you should probably 
> merge it. 

This driver do works on LoonArch and mips platform,  Here[1] are a few 
short videos which can prove that.


[1] https://github.com/loongson-gfx/loongson_boards/tree/main/videos/v13


> I think you first need to get commit access to drm-misc. That will 
> also allow you to merge the other fixes you sent recently.
>
> See
>
>
> https://drm.pages.freedesktop.org/maintainer-tools/commit-access.html#drm-misc 
>
>
> for the overall process.
>
> Best regards
> Thomas
>
> Am 15.05.23 um 17:57 schrieb Sui Jingfeng:
>> Loongson display controller IP has been integrated in both Loongson 
>> north
>> bridge chipset(ls7a1000/ls7a2000) and Loongson 
>> SoCs(ls2k1000/ls2k2000), it
>> has been even included in Loongson self-made BMC products.
>>
>> This display controller is a PCI device. It has two display pipes and 
>> each
>> display pipe support a primary plane and a cursor plane. For the DC 
>> in the
>> ls7a1000 and ls2k1000, each display pipe has a DVO output interface 
>> which
>> provide RGB888 signals, vertical & horizontal synchronisations and pixel
>> clock. Each CRTC is able to support 1920x1080@60Hz, the maximum 
>> resolution
>> of each display pipe is 2048x2048 according to the hardware spec.
>>
>> For the DC in LS7A2000, each display pipe is equipped with a built-in 
>> HDMI
>> encoder which is compliant with the HDMI 1.4 specification, thus it 
>> support
>> 3840x2160@30Hz. The first display pipe is also equipped with a 
>> transparent
>> vga encoder which is parallel with the HDMI encoder. The DC in 
>> LS7A2000 is
>> more complete compare with the one in old chips, besides above 
>> feature, it
>> has two hardware cursors, two hardware vblank counter and two scanout
>> position recorders unit. It also support tiled framebuffer format which
>> can be scanout the tiled framebuffer rendered by the LoongGPU directly.
>>
>> v1 -> v2:
>>   1) Use hpd status reg when polling for ls7a2000
>>   2) Fix all warnings emerged when compile with W=1
>>
>> v2 -> v3:
>>   1) Add COMPILE_TEST in Kconfig and make the driver off by default
>>   2) Alphabetical sorting headers (Thomas)
>>   3) Untangle register access functions as much as possible (Thomas)
>>   4) Switch to TTM based memory manager and prefer cached mapping
>>      for Loongson SoC (Thomas)
>>   5) Add chip id detection method, now all models are distinguishable.
>>   6) Revise builtin HDMI phy driver, nearly all main stream mode
>>      below 4K@30Hz is tested, this driver supported these mode very
>>      well including clone display mode and extend display mode.
>>
>> v3 -> v4:
>>   1) Quickly fix a small mistake.
>>
>> v4 -> v5:
>>   1) Drop potential support for Loongson 2K series SoC temporary,
>>      this part should be resend with the DT binding patch in the future.
>>   2) Add per display pipe debugfs support to the builtin HDMI encoder.
>>   3) Rewrite atomic_update() for hardware cursors plane(Thomas)
>>   4) Rewrite encoder and connector initialization part, untangle it
>>      according to the chip(Thomas).
>>
>> v5 -> v6:
>>   1) Remove stray code which didn't get used, say 
>> lsdc_of_get_reserved_ram
>>   2) Fix all typos I could found, make sentences and code more readable
>>   3) Untangle lsdc_hdmi*_connector_detect() function according to the 
>> pipe
>>   4) After a serious consideration, we rename this driver as loongson.
>>      Because we also have drivers toward the LoongGPU IP in LS7A2000 and
>>      LS2K2000. Besides, there are also drivers about the external 
>> encoder,
>>      HDMI audio driver and vbios support etc. This patch only provide DC
>>      driver part, my teammate Li Yi believe that loongson will be more
>>      suitable for loongson graphics than lsdc in the long run.
>>
>>      loongson.ko = LSDC + LoongGPU + encoders driver + vbios/DT ...
>>
>> v6 -> v7:
>>   1) Add prime support, self-sharing is works. sharing buffer with 
>> etnaviv
>>      is also tested, and its works with limitation.
>>   2) Implement buffer objects tracking with list_head.
>>   3) S3(sleep to RAM) is tested on ls3a5000+ls7a2000 evb and it works.
>>   4) Rewrite lsdc_bo_move, since ttm core stop allocating resources
>>      during BO creation. Patch V1 ~ V6 of this series no longer works
>>      on latest kernel. Thus, we send V7 to revival them.
>>
>> v7 -> v8:
>>   1) Zero a compile warnnings on 32-bit platform, compile with W=1
>>   2) Revise lsdc_bo_gpu_offset() and minor cleanup
>>   3) Pageflip tested on the virtual terminal with following commands
>>
>>      modetest -M loongson -s 32:1920x1080 -v
>>      modetest -M loongson -s 34:1920x1080 -v -F tiles
>>
>>     It works like a charm, when running pageflip test with dual screnn
>>     configuration, another two additional bo created by the modetest
>>     emerged, VRAM usage up to 40+MB, well we have at least 64MB, still
>>     enough.
>>
>>     # cat bos
>>
>>         bo[0000]: size:     8112kB VRAM
>>         bo[0001]: size:       16kB VRAM
>>         bo[0002]: size:       16kB VRAM
>>         bo[0003]: size:    16208kB VRAM
>>         bo[0004]: size:     8112kB VRAM
>>         bo[0005]: size:     8112kB VRAM
>>
>> v8 -> v9:
>>   1) Select I2C and I2C_ALGOBIT in Kconfig and should depend on MMU.
>>   2) Using pci_get_domain_bus_and_slot to get the GPU device.
>>   3) Other minor improvements.
>>
>>   Those patches are tested on ls3a5000 + ls7a1000 CRB, ls3a5000 + 
>> ls7a2000
>>   evb, and lemote a1901 board(ls3a4000 + ls7a1000). On loongson mips 
>> CPU,
>>   the write combine support should be enabled, to get a decent 
>> performance
>>   for writing framebuffer data to the VRAM.
>>
>> v9 -> v10:
>>   1) Revise lsdc_drm_freeze() to implement S3 completely and correctly.
>>      I suddenly realized that pinned buffer can not move and VRAM lost
>>      power when sleep to RAM. Thus, the data in the buffer who is pinned
>>      in VRAM will get lost when resume. Yet it's not big problem because
>>      we are software rendering solution which relay on the CPU update 
>> the
>>      front framebuffer. We can see the garbage data when resume from S3,
>>      but the screen will show correct image as I move the cursor. 
>> This is
>>      due to the cpu repaint. v10 of this patch make S3 perfect by unpin
>>      all of BOs in VRAM, evict them all to system RAM.
>>
>> v10 -> v11:
>>   1) On double screen case, the single giant framebuffer is 
>> referenced by
>>      two GEM object, hence, it will be pinned by prepare_fb() at 
>> lease two
>>      times. This cause its pin count > 1. V10 of this patch only 
>> unpin VRAM
>>      BOs once when suspend, which is not correct on double screen 
>> case. V11
>>      of this patch unpin BOs until its pin count reach to zero when 
>> suspend.
>>      Then, we make the S3 support complete finally. With v11, I can't 
>> see
>>      any garbage data after resume. Tested on both ls7a1000 and ls7a2000
>>      platform, with single screen and double screen configuration.
>>   2) Fix vblank wait timeout when disable CRTC.
>>   3) Test against IGT, at least fbdev test and kms_flip test passed.
>>   4) Rewrite pixel PLL update function, magic numbers eliminated (Emil)
>>   5) Drop a few common hardware features description in lsdc_desc (Emil)
>>   6) Drop lsdc_mode_config_mode_valid(), instead add restrictions in 
>> dumb
>>      create function. (Emil)
>>   7) Untangle the ls7a1000 case and ls7a2000 case completely (Thomas)
>>
>> v11 -> v12:
>>   none
>>
>> v12 -> v13:
>>   1) Add benchmark to figure out the bandwidth of the hardware platform.
>>      Usage:
>>      # cd /sys/kernel/debug/dri/0/
>>      # cat benchmark
>>
>>   2) VRAM is filled with garbage data if uninitialized, add a buffer
>>      clearing procedure, clear it on the BO creation time.
>>   3) Update copyrights and adjust coding style (Huacai)
>>
>> Sui Jingfeng (2):
>>    drm: add kms driver for loongson display controller
>>    MAINTAINERS: add maintainers for DRM LOONGSON driver
>>
>>   MAINTAINERS                                 |    8 +
>>   drivers/gpu/drm/Kconfig                     |    2 +
>>   drivers/gpu/drm/Makefile                    |    1 +
>>   drivers/gpu/drm/loongson/Kconfig            |   17 +
>>   drivers/gpu/drm/loongson/Makefile           |   21 +
>>   drivers/gpu/drm/loongson/ls7a1000_outputs.c |  161 +++
>>   drivers/gpu/drm/loongson/ls7a2000_outputs.c |  531 +++++++++
>>   drivers/gpu/drm/loongson/lsdc_benchmark.c   |  132 +++
>>   drivers/gpu/drm/loongson/lsdc_benchmark.h   |   13 +
>>   drivers/gpu/drm/loongson/lsdc_crtc.c        | 1068 +++++++++++++++++++
>>   drivers/gpu/drm/loongson/lsdc_debugfs.c     |   91 ++
>>   drivers/gpu/drm/loongson/lsdc_device.c      |  104 ++
>>   drivers/gpu/drm/loongson/lsdc_drv.c         |  484 +++++++++
>>   drivers/gpu/drm/loongson/lsdc_drv.h         |  452 ++++++++
>>   drivers/gpu/drm/loongson/lsdc_gem.c         |  324 ++++++
>>   drivers/gpu/drm/loongson/lsdc_gem.h         |   37 +
>>   drivers/gpu/drm/loongson/lsdc_gfxpll.c      |  199 ++++
>>   drivers/gpu/drm/loongson/lsdc_gfxpll.h      |   52 +
>>   drivers/gpu/drm/loongson/lsdc_i2c.c         |  179 ++++
>>   drivers/gpu/drm/loongson/lsdc_i2c.h         |   29 +
>>   drivers/gpu/drm/loongson/lsdc_irq.c         |   81 ++
>>   drivers/gpu/drm/loongson/lsdc_irq.h         |   16 +
>>   drivers/gpu/drm/loongson/lsdc_output.h      |   21 +
>>   drivers/gpu/drm/loongson/lsdc_pixpll.c      |  481 +++++++++
>>   drivers/gpu/drm/loongson/lsdc_pixpll.h      |   86 ++
>>   drivers/gpu/drm/loongson/lsdc_plane.c       |  639 +++++++++++
>>   drivers/gpu/drm/loongson/lsdc_probe.c       |   56 +
>>   drivers/gpu/drm/loongson/lsdc_probe.h       |   12 +
>>   drivers/gpu/drm/loongson/lsdc_regs.h        |  400 +++++++
>>   drivers/gpu/drm/loongson/lsdc_ttm.c         |  610 +++++++++++
>>   drivers/gpu/drm/loongson/lsdc_ttm.h         |   99 ++
>>   31 files changed, 6406 insertions(+)
>>   create mode 100644 drivers/gpu/drm/loongson/Kconfig
>>   create mode 100644 drivers/gpu/drm/loongson/Makefile
>>   create mode 100644 drivers/gpu/drm/loongson/ls7a1000_outputs.c
>>   create mode 100644 drivers/gpu/drm/loongson/ls7a2000_outputs.c
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_benchmark.c
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_benchmark.h
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_crtc.c
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_debugfs.c
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_device.c
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_drv.c
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_drv.h
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_gem.c
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_gem.h
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_gfxpll.c
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_gfxpll.h
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_i2c.c
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_i2c.h
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_irq.c
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_irq.h
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_output.h
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_pixpll.c
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_pixpll.h
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_plane.c
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_probe.c
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_probe.h
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_regs.h
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_ttm.c
>>   create mode 100644 drivers/gpu/drm/loongson/lsdc_ttm.h
>>
>

      parent reply	other threads:[~2023-05-20 11:56 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-15 15:57 [PATCH v13 0/2] drm: add kms driver for loongson display controller Sui Jingfeng
2023-05-15 15:57 ` [PATCH v13 1/2] " Sui Jingfeng
2023-05-19 10:04   ` [v13,1/2] " Liu Peibao
2023-05-20 11:57     ` Sui Jingfeng
2023-05-15 15:57 ` [PATCH v13 2/2] MAINTAINERS: add maintainers for DRM LOONGSON driver Sui Jingfeng
2023-05-18 13:38 ` [PATCH v13 0/2] drm: add kms driver for loongson display controller Thomas Zimmermann
2023-05-18 16:05   ` Sui Jingfeng
2023-05-20 11:56   ` Sui Jingfeng [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1cf596b1-74a6-979c-ca76-e77472b6ed02@189.cn \
    --to=15330273260@189.cn \
    --cc=airlied@gmail.com \
    --cc=christian.koenig@amd.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=emil.l.velikov@gmail.com \
    --cc=linaro-mm-sig@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=loongson-kernel@lists.loongnix.cn \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=nathan@kernel.org \
    --cc=sumit.semwal@linaro.org \
    --cc=tzimmermann@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox