* [PATCH v9 0/4] drm/lsdc: add drm driver for loongson display controller
@ 2022-02-17 10:55 Sui Jingfeng
2022-02-17 10:55 ` [PATCH v9 2/4] MIPS: Loongson64: dts: update the display controller device node Sui Jingfeng
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Sui Jingfeng @ 2022-02-17 10:55 UTC (permalink / raw)
To: Maxime Ripard, Thomas Zimmermann, Roland Scheidegger, Zack Rusin,
Christian Gmeiner, David Airlie, Daniel Vetter, Rob Herring,
Thomas Bogendoerfer, Dan Carpenter, Krzysztof Kozlowski,
Andrey Zhizhikin, Sam Ravnborg, David S . Miller, Jiaxun Yang,
Lucas Stach, Maarten Lankhorst, Ilia Mirkin, Qing Zhang,
suijingfeng
Cc: linux-mips, linux-kernel, devicetree, dri-devel
There is a display controller in loongson's LS2K1000 SoC and LS7A1000
bridge chip, it is a PCI device in those chips. It has two display
pipes but with only one hardware cursor. Each way has a DVO interface
which provide RGB888 signals, vertical & horizontal synchronisations,
data enable and the pixel clock. Each CRTC is able to scanout from
1920x1080 resolution at 60Hz. The maxmium resolution is 2048x2048
according to the hardware spec. Loongson display controllers are simple
which require scanout buffers to be physically contiguous.
For LS7A1000/LS7A2000 bridge chip, the DC is equipped with a dedicated
video ram which is typically 64MB or more. In this case, VRAM helper
based driver is intend to be used. While LS2K1000 is a SoC, only system
memory is available. Therefore CMA helper based driver is intend to be
used. It is possible to use VRAM helper based solution by carving out
part of system memory as VRAM though.
For LS7A1000, there are 4 dedicated GPIOs whose control register is
located at the DC register space, They are used to emulate two way i2c.
One for DVO0, another for DVO1. LS2K1000 and LS2K0500 SoC don't have such
GPIO hardwared, they grab i2c adapter from other module, either general
purpose GPIO emulated i2c or hardware i2c adapter.
+------+ +-----------------------------------+
| DDR4 | | +-------------------+ |
+------+ | | PCIe Root complex | LS7A1000 |
|| MC0 | +--++---------++----+ |
+----------+ HT 3.0 | || || |
| LS3A4000 |<-------->| +---++---+ +--++--+ +---------+ +------+
| CPU |<-------->| | GC1000 | | LSDC |<-->| DDR3 MC |<->| VRAM |
+----------+ | +--------+ +-+--+-+ +---------+ +------+
|| MC1 +---------------|--|----------------+
+------+ | |
| DDR4 | +-------+ DVO0 | | DVO1 +------+
+------+ VGA <--|ADV7125|<--------+ +-------->|TFP410|--> DVI/HDMI
+-------+ +------+
The above picture give a simple usage of LS7A1000, note that the encoder
is not necessary adv7125 or tfp410, other candicate encoders can be
ch7034b, sil9022 and ite66121 lt8618 etc.
v2: fixup warnings reported by kernel test robot
v3: fix more grammar mistakes in Kconfig reported by Randy Dunlap and give
more details about lsdc.
v4:
1) Add dts required and explain why device tree is required.
2) Give more description about lsdc and vram helper base driver.
3) Fix warnings reported by kernel test robot.
4) Introduce stride_alignment member into struct lsdc_chip_desc, the
stride alignment is 256 bytes for ls7a1000, ls2k1000 and ls2k0500.
But ls7a2000 improve it to 32 bytes, for extend the support for the
device on coming.
v5:
1) using writel and readl replace writeq and readq, to fix kernel test
robot report build error on other archtecture
2) set default fb format to XRGB8888 at crtc reset time.
3) fix typos.
v6:
1) Explain why we are not switch to drm dridge subsystem on ls2k1000.
2) Explain why tiny drm driver is not suitable for us.
3) Give a short description of the trival dirty uppdate implement based
on CMA helper.
4) code clean up
v7:
1) Remove select I2C_GPIO and I2C_LS2X in Kconfig, it is not ready now
2) Licensing issues are fixed suggested by Krzysztof Kozlowski.
3) lsdc_pixpll_print() is removed, part of it move to debugfs.
4) Set prefer_shadow to true if vram based driver is in using.
5) Replace double blank lines with single line in all files
6) Verbose cmd line parameter is replaced with drm_dbg()
7) All warnnings reported by ./scripts/checkpatch.pl --strict are fixed
8) Get edid from dtb support is removed as suggested by Maxime Ripard
9) Fix typos and various improvement
v8:
1) Drop damage update implement and its command line.
2) Drop DRM_LSDC_VRAM_DRIVER config option as suggested by Maxime.
3) Deduce DC's identification from its compatible property.
4) Drop the board specific dts patch.
5) Add documention about the display controller device node.
v9:
1) Fix the warnnings reported by checkpatch script and fix typos
Below is a brief introduction of loongson's CPU, bridge chip and SoC.
LS2K1000 is a double core 1.0Ghz mips64r2 compatible SoC[1]. LS7A1000 is
a bridge chip made by Loongson corporation which act as north and/or south
bridge of loongson's desktop and server level processor. It is equivalent
to AMD RS780E+SB710 or something like that. More details can be read from
its user manual[2].
This bridge chip is typically use with LS3A3000, LS3A4000 and LS3A5000 cpu.
LS3A3000 is 4 core 1.45gHz mips64r2 compatible cpu.
LS3A4000 is 4 core 1.8gHz mips64r5 compatible cpu[3].
LS3A5000 is 4 core 2.5gHz loongarch cpu[4].
Nearly all loongson cpu has the hardware maintain the cache coherency,
except for early version of ls2k1000 or ls3a2000. This is the most distinct
feature from other Mips cpu.
[1] https://wiki.debian.org/InstallingDebianOn/Lemote/Loongson2K1000
[2] https://loongson.github.io/LoongArch-Documentation/Loongson-7A1000-usermanual-EN.html
[3] https://ee-paper.com/loongson-3a4000-3b4000-motherboard-products-are-compatible-with-uos-system/
[4] https://loongson.github.io/LoongArch-Documentation/Loongson-3A5000-usermanual-EN.html
[5] https://github.com/loongson-community/pmon
suijingfeng (4):
drm/lsdc: add drm driver for loongson display controller
MIPS: Loongson64: dts: update the display controller device node
Documentation/dt: Add descriptions for loongson display controller
MAINTAINERS: add maintainers for DRM LSDC driver
.../loongson/loongson,display-controller.yaml | 114 +++
MAINTAINERS | 9 +
.../boot/dts/loongson/loongson64-2k1000.dtsi | 8 +
arch/mips/boot/dts/loongson/ls7a-pch.dtsi | 7 +-
drivers/gpu/drm/Kconfig | 2 +
drivers/gpu/drm/Makefile | 1 +
drivers/gpu/drm/lsdc/Kconfig | 21 +
drivers/gpu/drm/lsdc/Makefile | 13 +
drivers/gpu/drm/lsdc/lsdc_connector.c | 334 +++++++++
drivers/gpu/drm/lsdc/lsdc_connector.h | 38 +
drivers/gpu/drm/lsdc/lsdc_crtc.c | 341 +++++++++
drivers/gpu/drm/lsdc/lsdc_drv.c | 699 ++++++++++++++++++
drivers/gpu/drm/lsdc/lsdc_drv.h | 209 ++++++
drivers/gpu/drm/lsdc/lsdc_encoder.c | 54 ++
drivers/gpu/drm/lsdc/lsdc_i2c.c | 198 +++++
drivers/gpu/drm/lsdc/lsdc_i2c.h | 40 +
drivers/gpu/drm/lsdc/lsdc_irq.c | 60 ++
drivers/gpu/drm/lsdc/lsdc_irq.h | 20 +
drivers/gpu/drm/lsdc/lsdc_plane.c | 526 +++++++++++++
drivers/gpu/drm/lsdc/lsdc_pll.c | 580 +++++++++++++++
drivers/gpu/drm/lsdc/lsdc_pll.h | 90 +++
drivers/gpu/drm/lsdc/lsdc_regs.h | 202 +++++
22 files changed, 3561 insertions(+), 5 deletions(-)
create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
create mode 100644 drivers/gpu/drm/lsdc/Kconfig
create mode 100644 drivers/gpu/drm/lsdc/Makefile
create mode 100644 drivers/gpu/drm/lsdc/lsdc_connector.c
create mode 100644 drivers/gpu/drm/lsdc/lsdc_connector.h
create mode 100644 drivers/gpu/drm/lsdc/lsdc_crtc.c
create mode 100644 drivers/gpu/drm/lsdc/lsdc_drv.c
create mode 100644 drivers/gpu/drm/lsdc/lsdc_drv.h
create mode 100644 drivers/gpu/drm/lsdc/lsdc_encoder.c
create mode 100644 drivers/gpu/drm/lsdc/lsdc_i2c.c
create mode 100644 drivers/gpu/drm/lsdc/lsdc_i2c.h
create mode 100644 drivers/gpu/drm/lsdc/lsdc_irq.c
create mode 100644 drivers/gpu/drm/lsdc/lsdc_irq.h
create mode 100644 drivers/gpu/drm/lsdc/lsdc_plane.c
create mode 100644 drivers/gpu/drm/lsdc/lsdc_pll.c
create mode 100644 drivers/gpu/drm/lsdc/lsdc_pll.h
create mode 100644 drivers/gpu/drm/lsdc/lsdc_regs.h
--
2.25.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v9 2/4] MIPS: Loongson64: dts: update the display controller device node
2022-02-17 10:55 [PATCH v9 0/4] drm/lsdc: add drm driver for loongson display controller Sui Jingfeng
@ 2022-02-17 10:55 ` Sui Jingfeng
2022-02-17 10:55 ` [PATCH v9 3/4] Documentation/dt: Add descriptions for loongson display controller Sui Jingfeng
2022-02-17 10:55 ` [PATCH v9 4/4] MAINTAINERS: add maintainers for DRM LSDC driver Sui Jingfeng
2 siblings, 0 replies; 7+ messages in thread
From: Sui Jingfeng @ 2022-02-17 10:55 UTC (permalink / raw)
To: Maxime Ripard, Thomas Zimmermann, Roland Scheidegger, Zack Rusin,
Christian Gmeiner, David Airlie, Daniel Vetter, Rob Herring,
Thomas Bogendoerfer, Dan Carpenter, Krzysztof Kozlowski,
Andrey Zhizhikin, Sam Ravnborg, David S . Miller, Jiaxun Yang,
Lucas Stach, Maarten Lankhorst, Ilia Mirkin, Qing Zhang,
suijingfeng
Cc: linux-mips, linux-kernel, devicetree, dri-devel
From: suijingfeng <suijingfeng@loongson.cn>
The display controller is a pci device, its PCI vendor id is 0x0014
its PCI device id is 0x7a06.
1) In order to let the driver to know chip which the DC is contained in,
the compatible string is updated according to the chip's name.
2) Add display controller device node for ls2k1000 SoC
Signed-off-by: suijingfeng <suijingfeng@loongson.cn>
Signed-off-by: Sui Jingfeng <15330273260@189.cn>
---
arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi | 8 ++++++++
arch/mips/boot/dts/loongson/ls7a-pch.dtsi | 7 ++-----
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi b/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi
index 768cf2abcea3..af9cda540f9e 100644
--- a/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi
+++ b/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi
@@ -209,6 +209,14 @@ gpu@5,0 {
interrupt-parent = <&liointc0>;
};
+ lsdc: display-controller@6,0 {
+ compatible = "loongson,ls2k1000-dc";
+
+ reg = <0x3000 0x0 0x0 0x0 0x0>;
+ interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
+ interrupt-parent = <&liointc0>;
+ };
+
pci_bridge@9,0 {
compatible = "pci0014,7a19.0",
"pci0014,7a19",
diff --git a/arch/mips/boot/dts/loongson/ls7a-pch.dtsi b/arch/mips/boot/dts/loongson/ls7a-pch.dtsi
index 2f45fce2cdc4..ec35ea9b2fe8 100644
--- a/arch/mips/boot/dts/loongson/ls7a-pch.dtsi
+++ b/arch/mips/boot/dts/loongson/ls7a-pch.dtsi
@@ -160,11 +160,8 @@ gpu@6,0 {
interrupt-parent = <&pic>;
};
- dc@6,1 {
- compatible = "pci0014,7a06.0",
- "pci0014,7a06",
- "pciclass030000",
- "pciclass0300";
+ lsdc: display-controller@6,1 {
+ compatible = "loongson,ls7a1000-dc";
reg = <0x3100 0x0 0x0 0x0 0x0>;
interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v9 3/4] Documentation/dt: Add descriptions for loongson display controller
2022-02-17 10:55 [PATCH v9 0/4] drm/lsdc: add drm driver for loongson display controller Sui Jingfeng
2022-02-17 10:55 ` [PATCH v9 2/4] MIPS: Loongson64: dts: update the display controller device node Sui Jingfeng
@ 2022-02-17 10:55 ` Sui Jingfeng
2022-02-17 10:57 ` Krzysztof Kozlowski
2022-02-17 16:39 ` Rob Herring
2022-02-17 10:55 ` [PATCH v9 4/4] MAINTAINERS: add maintainers for DRM LSDC driver Sui Jingfeng
2 siblings, 2 replies; 7+ messages in thread
From: Sui Jingfeng @ 2022-02-17 10:55 UTC (permalink / raw)
To: Maxime Ripard, Thomas Zimmermann, Roland Scheidegger, Zack Rusin,
Christian Gmeiner, David Airlie, Daniel Vetter, Rob Herring,
Thomas Bogendoerfer, Dan Carpenter, Krzysztof Kozlowski,
Andrey Zhizhikin, Sam Ravnborg, David S . Miller, Jiaxun Yang,
Lucas Stach, Maarten Lankhorst, Ilia Mirkin, Qing Zhang,
suijingfeng
Cc: linux-mips, linux-kernel, devicetree, dri-devel
From: suijingfeng <suijingfeng@loongson.cn>
Add DT documentation for loongson display controller found in
LS2K1000, LS2K0500, LS7A1000 and LS7A2000.
v2: DT binding docs and includes should be a separate patch,
fix a warnning because of that.
Signed-off-by: suijingfeng <suijingfeng@loongson.cn>
Signed-off-by: Sui Jingfeng <15330273260@189.cn>
---
.../loongson/loongson,display-controller.yaml | 114 ++++++++++++++++++
1 file changed, 114 insertions(+)
create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
diff --git a/Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml b/Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
new file mode 100644
index 000000000000..94229519022a
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
@@ -0,0 +1,114 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/loongson,display-controller.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Loongson LS7A2000/LS7A1000/LS2K1000/LS2K0500 Display Controller Device Tree Bindings
+
+maintainers:
+ - Sui Jingfeng <suijingfeng@loongson.cn>
+
+description: |+
+
+ Loongson display controllers are simple which require scanout buffers
+ to be physically contiguous. LS2K1000/LS2K0500 is a SOC, only system
+ memory is available. LS7A1000/LS7A2000 is bridge chip which is equipped
+ with a dedicated video ram which is 64MB or more.
+
+ For LS7A1000, there are 4 dedicated GPIOs whose control register is
+ located at the DC register space. They are used to emulate two way i2c,
+ One for DVO0, another for DVO1.
+
+ LS2K1000 and LS2K0500 SoC grab i2c adapter from other module, either
+ general purpose GPIO emulated i2c or hardware i2c in the SoC.
+
+ LSDC has two display pipes, each way has a DVO interface which provide
+ RGB888 signals, vertical & horizontal synchronisations, data enable and
+ the pixel clock. LSDC has two CRTC, each CRTC is able to scanout from
+ 1920x1080 resolution at 60Hz. Each CRTC has two FB address registers.
+
+ LSDC's display pipeline have several components as below description,
+
+ The display controller in LS7A1000:
+ ___________________ _________
+ | -------| | |
+ | CRTC0 --> | DVO0 ----> Encoder0 ---> Connector0 ---> | Monotor |
+ | _ _ -------| ^ ^ |_________|
+ | | | | | -------| | |
+ | |_| |_| | i2c0 <--------+-------------+
+ | -------|
+ | DC IN LS7A1000 |
+ | _ _ -------|
+ | | | | | | i2c1 <--------+-------------+
+ | |_| |_| -------| | | _________
+ | -------| | | | |
+ | CRTC1 --> | DVO1 ----> Encoder1 ---> Connector1 ---> | Panel |
+ | -------| |_________|
+ |___________________|
+
+ Simple usage of LS7A1000 with LS3A4000 CPU:
+
+ +------+ +-----------------------------------+
+ | DDR4 | | +-------------------+ |
+ +------+ | | PCIe Root complex | LS7A1000 |
+ || MC0 | +--++---------++----+ |
+ +----------+ HT 3.0 | || || |
+ | LS3A4000 |<-------->| +---++---+ +--++--+ +---------+ +------+
+ | CPU |<-------->| | GC1000 | | LSDC |<-->| DDR3 MC |<->| VRAM |
+ +----------+ | +--------+ +-+--+-+ +---------+ +------+
+ || MC1 +---------------|--|----------------+
+ +------+ | |
+ | DDR4 | +-------+ DVO0 | | DVO1 +------+
+ +------+ VGA <--|ADV7125|<--------+ +-------->|TFP410|--> DVI/HDMI
+ +-------+ +------+
+
+ The display controller in LS2K1000/LS2K0500:
+ ___________________ _________
+ | -------| | |
+ | CRTC0 --> | DVO0 ----> Encoder0 ---> Connector0 ---> | Monotor |
+ | _ _ -------| ^ ^ |_________|
+ | | | | | | | |
+ | |_| |_| | +------+ |
+ | <---->| i2c0 |<---------+
+ | DC IN LS2K1000 | +------+
+ | _ _ | +------+
+ | | | | | <---->| i2c1 |----------+
+ | |_| |_| | +------+ | _________
+ | -------| | | | |
+ | CRTC1 --> | DVO1 ----> Encoder1 ---> Connector1 ---> | Panel |
+ | -------| |_________|
+ |___________________|
+
+properties:
+ compatible:
+ enum:
+ - loongson,ls7a2000-dc
+ - loongson,ls7a1000-dc
+ - loongson,ls2k1000-dc
+ - loongson,ls2k0500-dc
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ minItems: 1
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+ - interrupts
+
+additionalProperties: false
+
+examples:
+ - |
+ lsdc: display-controller@6,1 {
+ compatible = "loongson,ls7a1000-dc";
+ reg = <0x3100 0x0 0x0 0x0 0x0>;
+ interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-parent = <&pic>;
+ };
+
+...
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v9 4/4] MAINTAINERS: add maintainers for DRM LSDC driver
2022-02-17 10:55 [PATCH v9 0/4] drm/lsdc: add drm driver for loongson display controller Sui Jingfeng
2022-02-17 10:55 ` [PATCH v9 2/4] MIPS: Loongson64: dts: update the display controller device node Sui Jingfeng
2022-02-17 10:55 ` [PATCH v9 3/4] Documentation/dt: Add descriptions for loongson display controller Sui Jingfeng
@ 2022-02-17 10:55 ` Sui Jingfeng
2 siblings, 0 replies; 7+ messages in thread
From: Sui Jingfeng @ 2022-02-17 10:55 UTC (permalink / raw)
To: Maxime Ripard, Thomas Zimmermann, Roland Scheidegger, Zack Rusin,
Christian Gmeiner, David Airlie, Daniel Vetter, Rob Herring,
Thomas Bogendoerfer, Dan Carpenter, Krzysztof Kozlowski,
Andrey Zhizhikin, Sam Ravnborg, David S . Miller, Jiaxun Yang,
Lucas Stach, Maarten Lankhorst, Ilia Mirkin, Qing Zhang,
suijingfeng
Cc: linux-mips, linux-kernel, devicetree, dri-devel
From: suijingfeng <suijingfeng@loongson.cn>
v2: Fix warnnings reported by checkpatch script
Signed-off-by: suijingfeng <suijingfeng@loongson.cn>
Signed-off-by: Sui Jingfeng <15330273260@189.cn>
---
MAINTAINERS | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index ea3e6c914384..abf7a2d6c94d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -6453,6 +6453,15 @@ T: git git://anongit.freedesktop.org/drm/drm-misc
F: drivers/gpu/drm/lima/
F: include/uapi/drm/lima_drm.h
+DRM DRIVERS FOR LOONGSON
+M: Sui Jingfeng <suijingfeng@loongson.cn>
+L: dri-devel@lists.freedesktop.org
+S: Maintained
+W: https://www.loongson.cn/
+T: git git://anongit.freedesktop.org/drm/drm-misc
+F: Documentation/devicetree/bindings/display/loongson/
+F: drivers/gpu/drm/lsdc/
+
DRM DRIVERS FOR MEDIATEK
M: Chun-Kuang Hu <chunkuang.hu@kernel.org>
M: Philipp Zabel <p.zabel@pengutronix.de>
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v9 3/4] Documentation/dt: Add descriptions for loongson display controller
2022-02-17 10:55 ` [PATCH v9 3/4] Documentation/dt: Add descriptions for loongson display controller Sui Jingfeng
@ 2022-02-17 10:57 ` Krzysztof Kozlowski
2022-02-17 11:21 ` Sui Jingfeng
2022-02-17 16:39 ` Rob Herring
1 sibling, 1 reply; 7+ messages in thread
From: Krzysztof Kozlowski @ 2022-02-17 10:57 UTC (permalink / raw)
To: Sui Jingfeng, Maxime Ripard, Thomas Zimmermann,
Roland Scheidegger, Zack Rusin, Christian Gmeiner, David Airlie,
Daniel Vetter, Rob Herring, Thomas Bogendoerfer, Dan Carpenter,
Andrey Zhizhikin, Sam Ravnborg, David S . Miller, Jiaxun Yang,
Lucas Stach, Maarten Lankhorst, Ilia Mirkin, Qing Zhang,
suijingfeng
Cc: linux-mips, linux-kernel, devicetree, dri-devel
On 17/02/2022 11:55, Sui Jingfeng wrote:
> From: suijingfeng <suijingfeng@loongson.cn>
>
> Add DT documentation for loongson display controller found in
> LS2K1000, LS2K0500, LS7A1000 and LS7A2000.
>
> v2: DT binding docs and includes should be a separate patch,
> fix a warnning because of that.
>
> Signed-off-by: suijingfeng <suijingfeng@loongson.cn>
> Signed-off-by: Sui Jingfeng <15330273260@189.cn>
> ---
> .../loongson/loongson,display-controller.yaml | 114 ++++++++++++++++++
> 1 file changed, 114 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
>
> diff --git a/Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml b/Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
> new file mode 100644
> index 000000000000..94229519022a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
> @@ -0,0 +1,114 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/display/loongson,display-controller.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Loongson LS7A2000/LS7A1000/LS2K1000/LS2K0500 Display Controller Device Tree Bindings
> +
> +maintainers:
> + - Sui Jingfeng <suijingfeng@loongson.cn>
> +
> +description: |+
> +
> + Loongson display controllers are simple which require scanout buffers
> + to be physically contiguous. LS2K1000/LS2K0500 is a SOC, only system
> + memory is available. LS7A1000/LS7A2000 is bridge chip which is equipped
> + with a dedicated video ram which is 64MB or more.
> +
> + For LS7A1000, there are 4 dedicated GPIOs whose control register is
> + located at the DC register space. They are used to emulate two way i2c,
> + One for DVO0, another for DVO1.
> +
> + LS2K1000 and LS2K0500 SoC grab i2c adapter from other module, either
> + general purpose GPIO emulated i2c or hardware i2c in the SoC.
> +
> + LSDC has two display pipes, each way has a DVO interface which provide
> + RGB888 signals, vertical & horizontal synchronisations, data enable and
> + the pixel clock. LSDC has two CRTC, each CRTC is able to scanout from
> + 1920x1080 resolution at 60Hz. Each CRTC has two FB address registers.
> +
> + LSDC's display pipeline have several components as below description,
> +
> + The display controller in LS7A1000:
> + ___________________ _________
> + | -------| | |
> + | CRTC0 --> | DVO0 ----> Encoder0 ---> Connector0 ---> | Monotor |
> + | _ _ -------| ^ ^ |_________|
> + | | | | | -------| | |
> + | |_| |_| | i2c0 <--------+-------------+
> + | -------|
> + | DC IN LS7A1000 |
> + | _ _ -------|
> + | | | | | | i2c1 <--------+-------------+
> + | |_| |_| -------| | | _________
> + | -------| | | | |
> + | CRTC1 --> | DVO1 ----> Encoder1 ---> Connector1 ---> | Panel |
> + | -------| |_________|
> + |___________________|
> +
> + Simple usage of LS7A1000 with LS3A4000 CPU:
> +
> + +------+ +-----------------------------------+
> + | DDR4 | | +-------------------+ |
> + +------+ | | PCIe Root complex | LS7A1000 |
> + || MC0 | +--++---------++----+ |
> + +----------+ HT 3.0 | || || |
> + | LS3A4000 |<-------->| +---++---+ +--++--+ +---------+ +------+
> + | CPU |<-------->| | GC1000 | | LSDC |<-->| DDR3 MC |<->| VRAM |
> + +----------+ | +--------+ +-+--+-+ +---------+ +------+
> + || MC1 +---------------|--|----------------+
> + +------+ | |
> + | DDR4 | +-------+ DVO0 | | DVO1 +------+
> + +------+ VGA <--|ADV7125|<--------+ +-------->|TFP410|--> DVI/HDMI
> + +-------+ +------+
> +
> + The display controller in LS2K1000/LS2K0500:
> + ___________________ _________
> + | -------| | |
> + | CRTC0 --> | DVO0 ----> Encoder0 ---> Connector0 ---> | Monotor |
> + | _ _ -------| ^ ^ |_________|
> + | | | | | | | |
> + | |_| |_| | +------+ |
> + | <---->| i2c0 |<---------+
> + | DC IN LS2K1000 | +------+
> + | _ _ | +------+
> + | | | | | <---->| i2c1 |----------+
> + | |_| |_| | +------+ | _________
> + | -------| | | | |
> + | CRTC1 --> | DVO1 ----> Encoder1 ---> Connector1 ---> | Panel |
> + | -------| |_________|
> + |___________________|
> +
> +properties:
> + compatible:
> + enum:
> + - loongson,ls7a2000-dc
> + - loongson,ls7a1000-dc
> + - loongson,ls2k1000-dc
> + - loongson,ls2k0500-dc
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + minItems: 1
No need for minItems, if you have maxItems:1.
> + maxItems: 1
> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + lsdc: display-controller@6,1 {
> + compatible = "loongson,ls7a1000-dc";
> + reg = <0x3100 0x0 0x0 0x0 0x0>;
> + interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-parent = <&pic>;
> + };
I still do not think you actually tested it with dt_bindings_check...
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v9 3/4] Documentation/dt: Add descriptions for loongson display controller
2022-02-17 10:57 ` Krzysztof Kozlowski
@ 2022-02-17 11:21 ` Sui Jingfeng
0 siblings, 0 replies; 7+ messages in thread
From: Sui Jingfeng @ 2022-02-17 11:21 UTC (permalink / raw)
To: Krzysztof Kozlowski, Maxime Ripard, Thomas Zimmermann,
Roland Scheidegger, Zack Rusin, Christian Gmeiner, David Airlie,
Daniel Vetter, Rob Herring, Thomas Bogendoerfer, Dan Carpenter,
Andrey Zhizhikin, Sam Ravnborg, David S . Miller, Jiaxun Yang,
Lucas Stach, Maarten Lankhorst, Ilia Mirkin, Qing Zhang,
suijingfeng
Cc: linux-mips, linux-kernel, devicetree, dri-devel
On 2022/2/17 18:57, Krzysztof Kozlowski wrote:
> On 17/02/2022 11:55, Sui Jingfeng wrote:
>> From: suijingfeng <suijingfeng@loongson.cn>
>>
>> Add DT documentation for loongson display controller found in
>> LS2K1000, LS2K0500, LS7A1000 and LS7A2000.
>>
>> v2: DT binding docs and includes should be a separate patch,
>> fix a warnning because of that.
>>
>> Signed-off-by: suijingfeng <suijingfeng@loongson.cn>
>> Signed-off-by: Sui Jingfeng <15330273260@189.cn>
>> ---
>> .../loongson/loongson,display-controller.yaml | 114 ++++++++++++++++++
>> 1 file changed, 114 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml b/Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
>> new file mode 100644
>> index 000000000000..94229519022a
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
>> @@ -0,0 +1,114 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/display/loongson,display-controller.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Loongson LS7A2000/LS7A1000/LS2K1000/LS2K0500 Display Controller Device Tree Bindings
>> +
>> +maintainers:
>> + - Sui Jingfeng <suijingfeng@loongson.cn>
>> +
>> +description: |+
>> +
>> + Loongson display controllers are simple which require scanout buffers
>> + to be physically contiguous. LS2K1000/LS2K0500 is a SOC, only system
>> + memory is available. LS7A1000/LS7A2000 is bridge chip which is equipped
>> + with a dedicated video ram which is 64MB or more.
>> +
>> + For LS7A1000, there are 4 dedicated GPIOs whose control register is
>> + located at the DC register space. They are used to emulate two way i2c,
>> + One for DVO0, another for DVO1.
>> +
>> + LS2K1000 and LS2K0500 SoC grab i2c adapter from other module, either
>> + general purpose GPIO emulated i2c or hardware i2c in the SoC.
>> +
>> + LSDC has two display pipes, each way has a DVO interface which provide
>> + RGB888 signals, vertical & horizontal synchronisations, data enable and
>> + the pixel clock. LSDC has two CRTC, each CRTC is able to scanout from
>> + 1920x1080 resolution at 60Hz. Each CRTC has two FB address registers.
>> +
>> + LSDC's display pipeline have several components as below description,
>> +
>> + The display controller in LS7A1000:
>> + ___________________ _________
>> + | -------| | |
>> + | CRTC0 --> | DVO0 ----> Encoder0 ---> Connector0 ---> | Monotor |
>> + | _ _ -------| ^ ^ |_________|
>> + | | | | | -------| | |
>> + | |_| |_| | i2c0 <--------+-------------+
>> + | -------|
>> + | DC IN LS7A1000 |
>> + | _ _ -------|
>> + | | | | | | i2c1 <--------+-------------+
>> + | |_| |_| -------| | | _________
>> + | -------| | | | |
>> + | CRTC1 --> | DVO1 ----> Encoder1 ---> Connector1 ---> | Panel |
>> + | -------| |_________|
>> + |___________________|
>> +
>> + Simple usage of LS7A1000 with LS3A4000 CPU:
>> +
>> + +------+ +-----------------------------------+
>> + | DDR4 | | +-------------------+ |
>> + +------+ | | PCIe Root complex | LS7A1000 |
>> + || MC0 | +--++---------++----+ |
>> + +----------+ HT 3.0 | || || |
>> + | LS3A4000 |<-------->| +---++---+ +--++--+ +---------+ +------+
>> + | CPU |<-------->| | GC1000 | | LSDC |<-->| DDR3 MC |<->| VRAM |
>> + +----------+ | +--------+ +-+--+-+ +---------+ +------+
>> + || MC1 +---------------|--|----------------+
>> + +------+ | |
>> + | DDR4 | +-------+ DVO0 | | DVO1 +------+
>> + +------+ VGA <--|ADV7125|<--------+ +-------->|TFP410|--> DVI/HDMI
>> + +-------+ +------+
>> +
>> + The display controller in LS2K1000/LS2K0500:
>> + ___________________ _________
>> + | -------| | |
>> + | CRTC0 --> | DVO0 ----> Encoder0 ---> Connector0 ---> | Monotor |
>> + | _ _ -------| ^ ^ |_________|
>> + | | | | | | | |
>> + | |_| |_| | +------+ |
>> + | <---->| i2c0 |<---------+
>> + | DC IN LS2K1000 | +------+
>> + | _ _ | +------+
>> + | | | | | <---->| i2c1 |----------+
>> + | |_| |_| | +------+ | _________
>> + | -------| | | | |
>> + | CRTC1 --> | DVO1 ----> Encoder1 ---> Connector1 ---> | Panel |
>> + | -------| |_________|
>> + |___________________|
>> +
>> +properties:
>> + compatible:
>> + enum:
>> + - loongson,ls7a2000-dc
>> + - loongson,ls7a1000-dc
>> + - loongson,ls2k1000-dc
>> + - loongson,ls2k0500-dc
>> +
>> + reg:
>> + maxItems: 1
>> +
>> + interrupts:
>> + minItems: 1
> No need for minItems, if you have maxItems:1.
>
>> + maxItems: 1
>> +
>> +required:
>> + - compatible
>> + - reg
>> + - interrupts
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> + - |
>> + lsdc: display-controller@6,1 {
>> + compatible = "loongson,ls7a1000-dc";
>> + reg = <0x3100 0x0 0x0 0x0 0x0>;
>> + interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
>> + interrupt-parent = <&pic>;
>> + };
> I still do not think you actually tested it with dt_bindings_check...
>
>
> Best regards,
> Krzysztof
I'm hurry to fix a few error in the v8 of this patch set, to avoid
reviewers get angry about those mistake in my patch.
I come cross a few problems when running make dt_bindings_check,
i am confusing about that, writing DT discpription of PCI display
controller is not as easy as platform one. I will fix it at next version,
thanks you.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v9 3/4] Documentation/dt: Add descriptions for loongson display controller
2022-02-17 10:55 ` [PATCH v9 3/4] Documentation/dt: Add descriptions for loongson display controller Sui Jingfeng
2022-02-17 10:57 ` Krzysztof Kozlowski
@ 2022-02-17 16:39 ` Rob Herring
1 sibling, 0 replies; 7+ messages in thread
From: Rob Herring @ 2022-02-17 16:39 UTC (permalink / raw)
To: Sui Jingfeng
Cc: Dan Carpenter, linux-mips, dri-devel, Lucas Stach,
Christian Gmeiner, Zack Rusin, Thomas Bogendoerfer,
Roland Scheidegger, Krzysztof Kozlowski, Maxime Ripard,
David Airlie, Jiaxun Yang, Qing Zhang, Ilia Mirkin,
David S . Miller, devicetree, Daniel Vetter, Thomas Zimmermann,
Andrey Zhizhikin, Maarten Lankhorst, Rob Herring, linux-kernel,
Sam Ravnborg, suijingfeng
On Thu, 17 Feb 2022 18:55:22 +0800, Sui Jingfeng wrote:
> From: suijingfeng <suijingfeng@loongson.cn>
>
> Add DT documentation for loongson display controller found in
> LS2K1000, LS2K0500, LS7A1000 and LS7A2000.
>
> v2: DT binding docs and includes should be a separate patch,
> fix a warnning because of that.
>
> Signed-off-by: suijingfeng <suijingfeng@loongson.cn>
> Signed-off-by: Sui Jingfeng <15330273260@189.cn>
> ---
> .../loongson/loongson,display-controller.yaml | 114 ++++++++++++++++++
> 1 file changed, 114 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
>
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:
dtschema/dtc warnings/errors:
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml: properties:interrupts: 'anyOf' conditional failed, one must be fixed:
'minItems' is not one of ['maxItems', 'description', 'deprecated']
hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values.
'minItems' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref']
'maxItems' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref']
1 is less than the minimum of 2
hint: Arrays must be described with a combination of minItems/maxItems/items
hint: cell array properties must define how many entries and what the entries are when there is more than one entry.
from schema $id: http://devicetree.org/meta-schemas/interrupts.yaml#
./Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml: $id: relative path/filename doesn't match actual path or filename
expected: http://devicetree.org/schemas/display/loongson/loongson,display-controller.yaml#
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml: ignoring, error in schema: properties: interrupts
Error: Documentation/devicetree/bindings/display/loongson/loongson,display-controller.example.dts:22.30-31 syntax error
FATAL ERROR: Unable to parse input tree
make[1]: *** [scripts/Makefile.lib:378: Documentation/devicetree/bindings/display/loongson/loongson,display-controller.example.dt.yaml] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:1398: dt_binding_check] Error 2
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/patch/1594138
This check can fail if there are any dependencies. The base for a patch
series is generally the most recent rc1.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-02-17 16:40 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-17 10:55 [PATCH v9 0/4] drm/lsdc: add drm driver for loongson display controller Sui Jingfeng
2022-02-17 10:55 ` [PATCH v9 2/4] MIPS: Loongson64: dts: update the display controller device node Sui Jingfeng
2022-02-17 10:55 ` [PATCH v9 3/4] Documentation/dt: Add descriptions for loongson display controller Sui Jingfeng
2022-02-17 10:57 ` Krzysztof Kozlowski
2022-02-17 11:21 ` Sui Jingfeng
2022-02-17 16:39 ` Rob Herring
2022-02-17 10:55 ` [PATCH v9 4/4] MAINTAINERS: add maintainers for DRM LSDC driver Sui Jingfeng
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).