2022-02-16 19:06:34

by Sui Jingfeng

[permalink] [raw]
Subject: [PATCH v8 0/3] drm/lsdc: add drm driver for loongson display controller

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 indroduction of board specific dts.
5) Add documention about the display controller device node.

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

Reported-by: Joe Perches <[email protected]>
Reported-by: Dan Carpenter <[email protected]>
Reported-by: Krzysztof Kozlowski <[email protected]>
Reported-by: Maxime Ripard <[email protected]>
Reported-by: Randy Dunlap <[email protected]>
Reported-by: kernel test robot <[email protected]>
Signed-off-by: suijingfeng <[email protected]>
Signed-off-by: Sui Jingfeng <[email protected]>


suijingfeng (3):
drm/lsdc: add drm driver for loongson display controller
MIPS: Loongson64: dts: update the display controller device node
MAINTAINERS: add maintainers for DRM LSDC driver

.../loongson/loongson,display-controller.yaml | 114 +++
.../display/loongson/loongson-drm.txt | 16 +
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 +++++
23 files changed, 3577 insertions(+), 5 deletions(-)
create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson-drm.txt
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


2022-02-16 19:36:36

by Sui Jingfeng

[permalink] [raw]
Subject: [PATCH v8 3/3] MAINTAINERS: add maintainers for DRM LSDC driver

From: suijingfeng <[email protected]>

Signed-off-by: suijingfeng <[email protected]>
Signed-off-by: Sui Jingfeng <[email protected]>
---
MAINTAINERS | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index ea3e6c914384..3f5e13a6358b 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 <[email protected]>
+L: [email protected]
+S: Maintained
+W: https://www.loongson.cn/
+T: git git://anongit.freedesktop.org/drm/drm-misc
+F: drivers/gpu/drm/lsdc/
+F: Documentation/devicetree/bindings/display/loongson/
+
DRM DRIVERS FOR MEDIATEK
M: Chun-Kuang Hu <[email protected]>
M: Philipp Zabel <[email protected]>
--
2.25.1

2022-02-16 19:55:46

by Sui Jingfeng

[permalink] [raw]
Subject: [PATCH v8 2/3] MIPS: Loongson64: dts: update the display controller device node

From: suijingfeng <[email protected]>

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 lsdc kms driver to know which chip the DC is
contained in, we add different compatible for different chip.

2) Add display controller device node for ls2k1000 SoC

Signed-off-by: suijingfeng <[email protected]>
Signed-off-by: Sui Jingfeng <[email protected]>
---
.../loongson/loongson,display-controller.yaml | 114 ++++++++++++++++++
.../display/loongson/loongson-drm.txt | 16 +++
.../boot/dts/loongson/loongson64-2k1000.dtsi | 8 ++
arch/mips/boot/dts/loongson/ls7a-pch.dtsi | 7 +-
4 files changed, 140 insertions(+), 5 deletions(-)
create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson-drm.txt

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..64d8364b50ab
--- /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/pci0014,7a06.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Loongson LS7A2000/LS7A1000/LS2K1000/LS2K0500 Display Controller Device Tree Bindings
+
+maintainers:
+ - Sui Jingfeng <[email protected]>
+
+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
+
+required:
+ - compatible
+ - reg
+ - interrupts
+
+additionalProperties: false
+
+examples:
+ - |
+ lsdc: dc@6,1 {
+ compatible = "loongson,ls7a1000-dc";
+ reg = <0x3100 0x0 0x0 0x0 0x0>;
+ interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-parent = <&pic>;
+ };
+
+...
+
diff --git a/Documentation/devicetree/bindings/display/loongson/loongson-drm.txt b/Documentation/devicetree/bindings/display/loongson/loongson-drm.txt
new file mode 100644
index 000000000000..46417e0e34ba
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/loongson/loongson-drm.txt
@@ -0,0 +1,16 @@
+Loongson display controller
+===========================
+
+Required properties:
+- compatible: Should be "loongson,display-subsystem" or "loongson,ls-fb"
+- reg: should be register base and length
+- interrupts: Should contain the cores interrupt line
+
+example:
+
+lsdc: dc@0x400c0000 {
+ compatible = "loongson,display-subsystem", "loongson,ls-fb";
+ reg = <0x400c0000 0x00010000>;
+ interrupt-parent = <&icu>;
+ interrupts = <36>;
+};
diff --git a/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi b/arch/mips/boot/dts/loongson/loongson64-2k1000.dtsi
index 768cf2abcea3..47f6ff4c3e8a 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: dc@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..b34426142453 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: dc@6,1 {
+ compatible = "loongson,ls7a1000-dc";

reg = <0x3100 0x0 0x0 0x0 0x0>;
interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
--
2.25.1

2022-02-16 20:34:09

by Sui Jingfeng

[permalink] [raw]
Subject: Re: [PATCH v8 2/3] MIPS: Loongson64: dts: update the display controller device node

Oh,sorry for that. This is what i am write for our downstream 4.19.190 kernel,I write it long time ago. It shouldn’t be included in this patch set. Please ignore that, I will remove it at next version.

I am sorry introduce “bug” again.


发自我的iPhone

> 在 2022年2月17日,上午2:44,Jiaxun Yang <[email protected]> 写道:
>
> 
>
>> 在 2022/2/16 18:17, Sui Jingfeng 写道:
>> From: suijingfeng <[email protected]>
>>
>> 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 lsdc kms driver to know which chip the DC is
>> contained in, we add different compatible for different chip.
>>
>> 2) Add display controller device node for ls2k1000 SoC
>>
>> Signed-off-by: suijingfeng <[email protected]>
>> Signed-off-by: Sui Jingfeng <[email protected]>
>> ---
>> .../loongson/loongson,display-controller.yaml | 114 ++++++++++++++++++
>> .../display/loongson/loongson-drm.txt | 16 +++
> ^ Is loongson-drm.txt intentional?
> It seems irrelevant....
>
> Thanks.
>> .../boot/dts/loongson/loongson64-2k1000.dtsi | 8 ++
>> arch/mips/boot/dts/loongson/ls7a-pch.dtsi | 7 +-
>> 4 files changed, 140 insertions(+), 5 deletions(-)
>> create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
>> create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson-drm.txt
> [...]
> - Jiaxun

2022-02-16 21:06:10

by Jiaxun Yang

[permalink] [raw]
Subject: Re: [PATCH v8 2/3] MIPS: Loongson64: dts: update the display controller device node



在 2022/2/16 18:17, Sui Jingfeng 写道:
> From: suijingfeng <[email protected]>
>
> 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 lsdc kms driver to know which chip the DC is
> contained in, we add different compatible for different chip.
>
> 2) Add display controller device node for ls2k1000 SoC
>
> Signed-off-by: suijingfeng <[email protected]>
> Signed-off-by: Sui Jingfeng <[email protected]>
> ---
> .../loongson/loongson,display-controller.yaml | 114 ++++++++++++++++++
> .../display/loongson/loongson-drm.txt | 16 +++
^ Is loongson-drm.txt intentional?
It seems irrelevant....

Thanks.
> .../boot/dts/loongson/loongson64-2k1000.dtsi | 8 ++
> arch/mips/boot/dts/loongson/ls7a-pch.dtsi | 7 +-
> 4 files changed, 140 insertions(+), 5 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
> create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson-drm.txt
[...]
- Jiaxun

2022-02-17 12:03:17

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v8 2/3] MIPS: Loongson64: dts: update the display controller device node

On 16/02/2022 19:17, Sui Jingfeng wrote:
> From: suijingfeng <[email protected]>
>
> 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 lsdc kms driver to know which chip the DC is
> contained in, we add different compatible for different chip.
>
> 2) Add display controller device node for ls2k1000 SoC
>
> Signed-off-by: suijingfeng <[email protected]>
> Signed-off-by: Sui Jingfeng <[email protected]>
> ---
> .../loongson/loongson,display-controller.yaml | 114 ++++++++++++++++++
> .../display/loongson/loongson-drm.txt | 16 +++

Please split dt-bindings from other changes into a separate patch, which
should be first in the series.

> .../boot/dts/loongson/loongson64-2k1000.dtsi | 8 ++
> arch/mips/boot/dts/loongson/ls7a-pch.dtsi | 7 +-
> 4 files changed, 140 insertions(+), 5 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
> create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson-drm.txt
>
> 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..64d8364b50ab
> --- /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/pci0014,7a06.yaml#

The file name looks different than ID. Does this pass `make
dt_binding_check` validation?

> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Loongson LS7A2000/LS7A1000/LS2K1000/LS2K0500 Display Controller Device Tree Bindings
> +
> +maintainers:
> + - Sui Jingfeng <[email protected]>
> +
> +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

You need also maxItems. If you have only one interrupt, then just
maxItems:1.

> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + lsdc: dc@6,1 {

node name should be generic: "display-controller"

The unit address does not look like matching the reg property. Is this
how it suppose to be?

> + compatible = "loongson,ls7a1000-dc";
> + reg = <0x3100 0x0 0x0 0x0 0x0>;
> + interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-parent = <&pic>;
> + };
> +
> +...


Best regards,
Krzysztof

2022-02-17 16:28:16

by Sui Jingfeng

[permalink] [raw]
Subject: Re: [PATCH v8 2/3] MIPS: Loongson64: dts: update the display controller device node


On 2022/2/17 16:42, Krzysztof Kozlowski wrote:
>> .../boot/dts/loongson/loongson64-2k1000.dtsi | 8 ++
>> arch/mips/boot/dts/loongson/ls7a-pch.dtsi | 7 +-
>> 4 files changed, 140 insertions(+), 5 deletions(-)
>> create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
>> create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson-drm.txt
>>
>> 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..64d8364b50ab
>> --- /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/pci0014,7a06.yaml#
> The file name looks different than ID. Does this pass `make
> dt_binding_check` validation?
>
 I run make dt_binding_check, it say 'dt-doc-validate' not found!

Ensure dtschema python package is installed and in your PATH.
Current PATH is:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
make[1]: *** [Documentation/devicetree/bindings/Makefile:12:
check_dtschema_version] Error 1

make: *** [Makefile:1398: dt_binding_check] Error 2


2022-02-17 23:16:19

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v8 2/3] MIPS: Loongson64: dts: update the display controller device node

On Thu, 17 Feb 2022 02:17:11 +0800, Sui Jingfeng wrote:
> From: suijingfeng <[email protected]>
>
> 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 lsdc kms driver to know which chip the DC is
> contained in, we add different compatible for different chip.
>
> 2) Add display controller device node for ls2k1000 SoC
>
> Signed-off-by: suijingfeng <[email protected]>
> Signed-off-by: Sui Jingfeng <[email protected]>
> ---
> .../loongson/loongson,display-controller.yaml | 114 ++++++++++++++++++
> .../display/loongson/loongson-drm.txt | 16 +++
> .../boot/dts/loongson/loongson64-2k1000.dtsi | 8 ++
> arch/mips/boot/dts/loongson/ls7a-pch.dtsi | 7 +-
> 4 files changed, 140 insertions(+), 5 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
> create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson-drm.txt
>

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:
./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#
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/1593886

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.

2022-02-17 23:41:55

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v8 3/3] MAINTAINERS: add maintainers for DRM LSDC driver

On 16/02/2022 19:17, Sui Jingfeng wrote:
> From: suijingfeng <[email protected]>
>
> Signed-off-by: suijingfeng <[email protected]>
> Signed-off-by: Sui Jingfeng <[email protected]>
> ---
> MAINTAINERS | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index ea3e6c914384..3f5e13a6358b 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 <[email protected]>
> +L: [email protected]
> +S: Maintained
> +W: https://www.loongson.cn/
> +T: git git://anongit.freedesktop.org/drm/drm-misc
> +F: drivers/gpu/drm/lsdc/
> +F: Documentation/devicetree/bindings/display/loongson/
> +

Did you run checkpatch?


Best regards,
Krzysztof

2022-02-21 09:13:04

by Sui Jingfeng

[permalink] [raw]
Subject: Re: [PATCH v8 2/3] MIPS: Loongson64: dts: update the display controller device node


On 2022/2/18 00:39, Rob Herring wrote:
> On Thu, 17 Feb 2022 02:17:11 +0800, Sui Jingfeng wrote:
>> From: suijingfeng <[email protected]>
>>
>> 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 lsdc kms driver to know which chip the DC is
>> contained in, we add different compatible for different chip.
>>
>> 2) Add display controller device node for ls2k1000 SoC
>>
>> Signed-off-by: suijingfeng <[email protected]>
>> Signed-off-by: Sui Jingfeng <[email protected]>
>> ---
>> .../loongson/loongson,display-controller.yaml | 114 ++++++++++++++++++
>> .../display/loongson/loongson-drm.txt | 16 +++
>> .../boot/dts/loongson/loongson64-2k1000.dtsi | 8 ++
>> arch/mips/boot/dts/loongson/ls7a-pch.dtsi | 7 +-
>> 4 files changed, 140 insertions(+), 5 deletions(-)
>> create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson,display-controller.yaml
>> create mode 100644 Documentation/devicetree/bindings/display/loongson/loongson-drm.txt
>>
> 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:
> ./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#
> 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/1593886
>
> 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.
>
Ok, I know that now, thank for you point it to me.