Thread (17 messages) 17 messages, 3 authors, 2026-03-08

Re: [PATCH v2 3/3] drm/nuvoton: add MA35D1 display controller driver

From: Icenowy Zheng <hidden>
Date: 2026-02-10 12:03:25
Also in: dri-devel, linux-devicetree, lkml

在 2026-02-09星期一的 16:45 +0800,Joey Lu写道:
On 2/6/2026 11:09 PM, Icenowy Zheng wrote:
quoted
在 2026-01-29星期四的 12:05 +0800,Joey Lu写道:
quoted
========== 8< ============
+#endif
diff --git a/drivers/gpu/drm/nuvoton/ma35_regs.h
b/drivers/gpu/drm/nuvoton/ma35_regs.h
new file mode 100644
index 000000000000..0f4a7a13e7d8
--- /dev/null
+++ b/drivers/gpu/drm/nuvoton/ma35_regs.h
@@ -0,0 +1,88 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Nuvoton DRM driver
+ *
+ * Copyright (C) 2026 Nuvoton Technology Corp.
+ *
+ * Author: Joey Lu <a0987203069@gmail.com>
+ */
+
+#ifndef _MA35_REGS_H_
+#define _MA35_REGS_H_
+
+#define MA35_FRAMEBUFFER_CONFIG                   0x1518
Please check my Verisilicon DC8200 driver, which is already part of
drm-misc-next now.

The display controller here seems to be a earlier one from
Verisilicon.it looks like a DC8000, or maybe a more earlier one?
The DCU is a Vivante DCUltra IP rather than a DC8000 series.

It's an earlier generation display controller and was customized for 
Nuvoton, so it doesn't have a public model ID.

Because of that lineage, parts of the register layout and
functionality 
remain similar to older DC IPs.
The kernel seems to dislike different drivers for similar IPs.
Please refer to MA35D1 datasheet for more details.
I checked it, and the register definitions looks compatible with DC8000
registers at [1]. However no identification information is shown in the
manual.

I may get a MA35D1 board after the Lunar New Year (although it looks a
little expensive), is it easy to bring up mainline kernal on arbitary
MA35D1 boards?

[1]
https://github.com/milkv-megrez/rockos-u-boot/blob/c9221cf2fa77d39c0b241ab4b030c708e7ebe279/drivers/video/eswin/eswin_dc_reg.h
quoted
quoted
+#define MA35_FRAMEBUFFER_ADDRESS                  0x1400
+#define MA35_FRAMEBUFFER_STRIDE                   0x1408
+#define MA35_HDISPLAY                             0x1430
+#define MA35_HSYNC                                0x1438
+#define MA35_VDISPLAY                             0x1440
+#define MA35_VSYNC                                0x1448
+#define MA35_PANEL_CONFIG                         0x1418
+#define MA35_DPI_CONFIG                           0x14B8
+#define MA35_CURSOR_ADDRESS                       0x146C
+#define MA35_CURSOR_CONFIG                        0x1468
+#define MA35_CURSOR_LOCATION                      0x1470
+#define MA35_CURSOR_BACKGROUND                    0x1474
+#define MA35_CURSOR_FOREGROUND                    0x1478
+#define MA35_FRAMEBUFFER_UPLANAR_ADDRESS          0x1530
+#define MA35_FRAMEBUFFER_VPLANAR_ADDRESS          0x1538
+#define MA35_FRAMEBUFFER_USTRIDE                  0x1800
+#define MA35_FRAMEBUFFER_VSTRIDE                  0x1808
+#define MA35_INDEXCOLOR_TABLEINDEX                0x1818
+#define MA35_INDEXCOLOR_TABLEDATA                 0x1820
+#define MA35_FRAMEBUFFER_SIZE                     0x1810
+#define MA35_FRAMEBUFFER_SCALEFACTORX             0x1828
+#define MA35_FRAMEBUFFER_SCALEFACTORY             0x1830
+#define MA35_FRAMEBUFFER_SCALEFCONFIG             0x1520
+#define MA35_HORIFILTER_KERNELINDEX               0x1838
+#define MA35_HORIFILTER_KERNEL                    0x1A00
+#define MA35_VERTIFILTER_KERNELINDEX              0x1A08
+#define MA35_VERTIFILTER_KERNEL                   0x1A10
+#define MA35_FRAMEBUFFER_INITIALOFFSET            0x1A20
+#define MA35_FRAMEBUFFER_COLORKEY                 0x1508
+#define MA35_FRAMEBUFFER_COLORHIGHKEY             0x1510
+#define MA35_FRAMEBUFFER_BGCOLOR                  0x1528
+#define MA35_FRAMEBUFFER_CLEARVALUE               0x1A18
+#define MA35_DISPLAY_INTRENABLE                   0x1480
+#define MA35_INT_STATE                            0x147C
+#define MA35_PANEL_DEST_ADDRESS                   0x14F0
+#define MA35_MEM_DEST_ADDRESS                     0x14E8
+#define MA35_DEST_CONFIG                          0x14F8
+#define MA35_DEST_STRIDE                          0x1500
+#define MA35_DBI_CONFIG                           0x1488
+#define MA35_AQHICLOCKCONTROL                     0x0000
+#define MA35_OVERLAY_CONFIG                       0x1540
+#define MA35_OVERLAY_STRIDE                       0x1600
+#define MA35_OVERLAY_USTRIDE                      0x18C0
+#define MA35_OVERLAY_VSTRIDE                      0x1900
+#define MA35_OVERLAY_TL                           0x1640
+#define MA35_OVERLAY_BR                           0x1680
+#define MA35_OVERLAY_ALPHA_BLEND_CONFIG           0x1580
+#define MA35_OVERLAY_SRC_GLOBAL_COLOR             0x16C0
+#define MA35_OVERLAY_DST_GLOBAL_COLOR             0x1700
+#define MA35_OVERLAY_CLEAR_VALUE                  0x1940
+#define MA35_OVERLAY_SIZE                         0x17C0
+#define MA35_OVERLAY_COLOR_KEY                    0x1740
+#define MA35_OVERLAY_COLOR_KEY_HIGH               0x1780
+#define MA35_OVERLAY_ADDRESS                      0x15C0
+#define MA35_OVERLAY_UPLANAR_ADDRESS              0x1840
+#define MA35_OVERLAY_VPLANAR_ADDRESS              0x1880
+#define MA35_OVERLAY_SCALE_CONFIG                 0x1C00
+#define MA35_OVERLAY_SCALE_FACTOR_X               0x1A40
+#define MA35_OVERLAY_SCALE_FACTOR_Y               0x1A80
+#define MA35_OVERLAY_HORI_FILTER_KERNEL_INDEX     0x1AC0
+#define MA35_OVERLAY_HORI_FILTER_KERNEL           0x1B00
+#define MA35_OVERLAY_VERTI_FILTER_KERNEL_INDEX    0x1B40
+#define MA35_OVERLAY_VERTI_FILTER_KERNEL          0x1B80
+#define MA35_OVERLAY_INITIAL_OFFSET               0x1BC0
+#define MA35_GAMMA_EX_INDEX                       0x1CF0
+#define MA35_GAMMA_EX_DATA                        0x1CF8
+#define MA35_GAMMA_EX_ONE_DATA                    0x1D80
+#define MA35_GAMMA_INDEX                          0x1458
+#define MA35_GAMMA_DATA                           0x1460
+#define MA35_DISPLAY_DITHER_TABLE_LOW             0x1420
+#define MA35_DISPLAY_DITHER_TABLE_HIGH            0x1428
+#define MA35_DISPLAY_DITHER_CONFIG                0x1410
+#define MA35_DISPLAY_CURRENT_LOCATION             0x1450
+
+#endif
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help