Message ID | 1595930879-2478-1-git-send-email-kevin3.tang@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | Add Unisoc's drm kms module | expand |
On 7/28/20 3:07 AM, Kevin Tang wrote: > diff --git a/drivers/gpu/drm/sprd/Kconfig b/drivers/gpu/drm/sprd/Kconfig > new file mode 100644 > index 0000000..b189a54 > --- /dev/null > +++ b/drivers/gpu/drm/sprd/Kconfig > @@ -0,0 +1,12 @@ > +config DRM_SPRD > + tristate "DRM Support for Unisoc SoCs Platform" > + depends on ARCH_SPRD || COMPILE_TEST > + depends on DRM && OF > + select DRM_KMS_HELPER > + select DRM_GEM_CMA_HELPER > + select DRM_KMS_CMA_HELPER > + select DRM_MIPI_DSI > + help > + Choose this option if you have a Unisoc chipsets. chipset. > + If M is selected the module will be called sprd-drm. sprd_drm. > + > diff --git a/drivers/gpu/drm/sprd/Makefile b/drivers/gpu/drm/sprd/Makefile > new file mode 100644 > index 0000000..86d95d9 > --- /dev/null > +++ b/drivers/gpu/drm/sprd/Makefile > @@ -0,0 +1,5 @@ > +# SPDX-License-Identifier: GPL-2.0 > + > +subdir-ccflags-y += -I$(srctree)/$(src) > + > +obj-y := sprd_drm.o
Hi Kevin. Thanks for submitting this set of drivers. To better review the pataches can you please give some kind of high level overview. An ascii block diagram that identifies all the relevant blocks and how they relate would be great. This makes it easier to verify if the right modelling is used. Sam On Tue, Jul 28, 2020 at 06:07:53PM +0800, Kevin Tang wrote: > From: Kevin Tang <kevin.tang@unisoc.com> > > ChangeList: > v1: > 1. only upstream modeset and atomic at first commit. > 2. remove some unused code; > 3. use alpha and blend_mode properties; > 3. add yaml support; > 4. remove auto-adaptive panel driver; > 5. bugfix > > v2: > 1. add sprd crtc and plane module for KMS, preparing for multi crtc&encoder > 2. remove gem drivers, use generic CMA handlers > 3. remove redundant "module_init", all the sub modules loading by KMS > > v3: > 1. multi crtc&encoder design have problem, so rollback to v1 > > v4: > 1. update to gcc-linaro-7.5.0 > 2. update to Linux 5.6-rc3 > 3. remove pm_runtime support > 4. add COMPILE_TEST, remove unused kconfig > 5. "drm_dev_put" on drm_unbind > 6. fix some naming convention issue > 7. remove semaphore lock for crtc flip > 8. remove static variables > > v5: > 1. optimize encoder and connector code implementation > 2. use "platform_get_irq" and "platform_get_resource" > 3. drop useless function return type, drop unless debug log > 4. custom properties should be separate, so drop it > 5. use DRM_XXX replase pr_xxx > 6. drop dsi&dphy hal callback ops > 7. drop unless callback ops checking > 8. add comments for sprd dpu structure > > v6: > 1. Access registers via readl/writel > 2. Checking for unsupported KMS properties (format, rotation, blend_mode, etc) on plane_check ops > 3. Remove always true checks for dpu core ops > > Kevin Tang (6): > dt-bindings: display: add Unisoc's drm master bindings > drm/sprd: add Unisoc's drm kms master > dt-bindings: display: add Unisoc's dpu bindings > drm/sprd: add Unisoc's drm display controller driver > dt-bindings: display: add Unisoc's mipi dsi&dphy bindings > drm/sprd: add Unisoc's drm mipi dsi&dphy driver > > .../devicetree/bindings/display/sprd/dphy.yaml | 75 + > .../devicetree/bindings/display/sprd/dpu.yaml | 82 ++ > .../devicetree/bindings/display/sprd/drm.yaml | 36 + > .../devicetree/bindings/display/sprd/dsi.yaml | 98 ++ > drivers/gpu/drm/Kconfig | 2 + > drivers/gpu/drm/Makefile | 1 + > drivers/gpu/drm/sprd/Kconfig | 12 + > drivers/gpu/drm/sprd/Makefile | 13 + > drivers/gpu/drm/sprd/disp_lib.c | 57 + > drivers/gpu/drm/sprd/disp_lib.h | 16 + > drivers/gpu/drm/sprd/dphy/Makefile | 7 + > drivers/gpu/drm/sprd/dphy/pll/Makefile | 3 + > drivers/gpu/drm/sprd/dphy/pll/megacores_sharkle.c | 473 +++++++ > drivers/gpu/drm/sprd/dphy/sprd_dphy_api.c | 201 +++ > drivers/gpu/drm/sprd/dphy/sprd_dphy_api.h | 22 + > drivers/gpu/drm/sprd/dpu/Makefile | 3 + > drivers/gpu/drm/sprd/dpu/dpu_r2p0.c | 503 +++++++ > drivers/gpu/drm/sprd/dsi/Makefile | 8 + > drivers/gpu/drm/sprd/dsi/core/Makefile | 4 + > drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0.c | 964 +++++++++++++ > drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0.h | 1477 ++++++++++++++++++++ > drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0_ppi.c | 328 +++++ > drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0_ppi.h | 32 + > drivers/gpu/drm/sprd/dsi/sprd_dsi_api.c | 590 ++++++++ > drivers/gpu/drm/sprd/dsi/sprd_dsi_api.h | 26 + > drivers/gpu/drm/sprd/sprd_dphy.c | 209 +++ > drivers/gpu/drm/sprd/sprd_dphy.h | 50 + > drivers/gpu/drm/sprd/sprd_dpu.c | 668 +++++++++ > drivers/gpu/drm/sprd/sprd_dpu.h | 190 +++ > drivers/gpu/drm/sprd/sprd_drm.c | 227 +++ > drivers/gpu/drm/sprd/sprd_drm.h | 18 + > drivers/gpu/drm/sprd/sprd_dsi.c | 571 ++++++++ > drivers/gpu/drm/sprd/sprd_dsi.h | 108 ++ > 33 files changed, 7074 insertions(+) > create mode 100644 Documentation/devicetree/bindings/display/sprd/dphy.yaml > create mode 100644 Documentation/devicetree/bindings/display/sprd/dpu.yaml > create mode 100644 Documentation/devicetree/bindings/display/sprd/drm.yaml > create mode 100644 Documentation/devicetree/bindings/display/sprd/dsi.yaml > create mode 100644 drivers/gpu/drm/sprd/Kconfig > create mode 100644 drivers/gpu/drm/sprd/Makefile > create mode 100644 drivers/gpu/drm/sprd/disp_lib.c > create mode 100644 drivers/gpu/drm/sprd/disp_lib.h > create mode 100644 drivers/gpu/drm/sprd/dphy/Makefile > create mode 100644 drivers/gpu/drm/sprd/dphy/pll/Makefile > create mode 100644 drivers/gpu/drm/sprd/dphy/pll/megacores_sharkle.c > create mode 100644 drivers/gpu/drm/sprd/dphy/sprd_dphy_api.c > create mode 100644 drivers/gpu/drm/sprd/dphy/sprd_dphy_api.h > create mode 100644 drivers/gpu/drm/sprd/dpu/Makefile > create mode 100644 drivers/gpu/drm/sprd/dpu/dpu_r2p0.c > create mode 100644 drivers/gpu/drm/sprd/dsi/Makefile > create mode 100644 drivers/gpu/drm/sprd/dsi/core/Makefile > create mode 100644 drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0.c > create mode 100644 drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0.h > create mode 100644 drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0_ppi.c > create mode 100644 drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0_ppi.h > create mode 100644 drivers/gpu/drm/sprd/dsi/sprd_dsi_api.c > create mode 100644 drivers/gpu/drm/sprd/dsi/sprd_dsi_api.h > create mode 100644 drivers/gpu/drm/sprd/sprd_dphy.c > create mode 100644 drivers/gpu/drm/sprd/sprd_dphy.h > create mode 100644 drivers/gpu/drm/sprd/sprd_dpu.c > create mode 100644 drivers/gpu/drm/sprd/sprd_dpu.h > create mode 100644 drivers/gpu/drm/sprd/sprd_drm.c > create mode 100644 drivers/gpu/drm/sprd/sprd_drm.h > create mode 100644 drivers/gpu/drm/sprd/sprd_dsi.c > create mode 100644 drivers/gpu/drm/sprd/sprd_dsi.h > > -- > 2.7.4 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
On Tue, Jul 28, 2020 at 4:12 AM Daniel Vetter <daniel@ffwll.ch> wrote: > > On Tue, Jul 28, 2020 at 12:08 PM Kevin Tang <kevin3.tang@gmail.com> wrote: > > > > From: Kevin Tang <kevin.tang@unisoc.com> > > Hm still no ack for dt bindings? We need that for merging. If it's not sent to the DT list so it gets into patchwork that's never going to happen. Nor are any semi-automated tests of the schema. > Also what's the maintainer plan here? Imo best would be to put this > into the drm-misc group maintainer model, with commit rights and all: > > https://drm.pages.freedesktop.org/maintainer-tools/drm-misc.html > > MAINTAINERS patch to do that would be good. > -Daniel > > > > > ChangeList: > > v1: > > 1. only upstream modeset and atomic at first commit. > > 2. remove some unused code; > > 3. use alpha and blend_mode properties; > > 3. add yaml support; > > 4. remove auto-adaptive panel driver; > > 5. bugfix > > > > v2: > > 1. add sprd crtc and plane module for KMS, preparing for multi crtc&encoder > > 2. remove gem drivers, use generic CMA handlers > > 3. remove redundant "module_init", all the sub modules loading by KMS > > > > v3: > > 1. multi crtc&encoder design have problem, so rollback to v1 > > > > v4: > > 1. update to gcc-linaro-7.5.0 > > 2. update to Linux 5.6-rc3 > > 3. remove pm_runtime support > > 4. add COMPILE_TEST, remove unused kconfig > > 5. "drm_dev_put" on drm_unbind > > 6. fix some naming convention issue > > 7. remove semaphore lock for crtc flip > > 8. remove static variables > > > > v5: > > 1. optimize encoder and connector code implementation > > 2. use "platform_get_irq" and "platform_get_resource" > > 3. drop useless function return type, drop unless debug log > > 4. custom properties should be separate, so drop it > > 5. use DRM_XXX replase pr_xxx > > 6. drop dsi&dphy hal callback ops > > 7. drop unless callback ops checking > > 8. add comments for sprd dpu structure > > > > v6: > > 1. Access registers via readl/writel > > 2. Checking for unsupported KMS properties (format, rotation, blend_mode, etc) on plane_check ops > > 3. Remove always true checks for dpu core ops > > > > Kevin Tang (6): > > dt-bindings: display: add Unisoc's drm master bindings > > drm/sprd: add Unisoc's drm kms master > > dt-bindings: display: add Unisoc's dpu bindings > > drm/sprd: add Unisoc's drm display controller driver > > dt-bindings: display: add Unisoc's mipi dsi&dphy bindings > > drm/sprd: add Unisoc's drm mipi dsi&dphy driver > > > > .../devicetree/bindings/display/sprd/dphy.yaml | 75 + > > .../devicetree/bindings/display/sprd/dpu.yaml | 82 ++ > > .../devicetree/bindings/display/sprd/drm.yaml | 36 + > > .../devicetree/bindings/display/sprd/dsi.yaml | 98 ++ > > drivers/gpu/drm/Kconfig | 2 + > > drivers/gpu/drm/Makefile | 1 + > > drivers/gpu/drm/sprd/Kconfig | 12 + > > drivers/gpu/drm/sprd/Makefile | 13 + > > drivers/gpu/drm/sprd/disp_lib.c | 57 + > > drivers/gpu/drm/sprd/disp_lib.h | 16 + > > drivers/gpu/drm/sprd/dphy/Makefile | 7 + > > drivers/gpu/drm/sprd/dphy/pll/Makefile | 3 + > > drivers/gpu/drm/sprd/dphy/pll/megacores_sharkle.c | 473 +++++++ > > drivers/gpu/drm/sprd/dphy/sprd_dphy_api.c | 201 +++ > > drivers/gpu/drm/sprd/dphy/sprd_dphy_api.h | 22 + > > drivers/gpu/drm/sprd/dpu/Makefile | 3 + > > drivers/gpu/drm/sprd/dpu/dpu_r2p0.c | 503 +++++++ > > drivers/gpu/drm/sprd/dsi/Makefile | 8 + > > drivers/gpu/drm/sprd/dsi/core/Makefile | 4 + > > drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0.c | 964 +++++++++++++ > > drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0.h | 1477 ++++++++++++++++++++ > > drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0_ppi.c | 328 +++++ > > drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0_ppi.h | 32 + > > drivers/gpu/drm/sprd/dsi/sprd_dsi_api.c | 590 ++++++++ > > drivers/gpu/drm/sprd/dsi/sprd_dsi_api.h | 26 + > > drivers/gpu/drm/sprd/sprd_dphy.c | 209 +++ > > drivers/gpu/drm/sprd/sprd_dphy.h | 50 + > > drivers/gpu/drm/sprd/sprd_dpu.c | 668 +++++++++ > > drivers/gpu/drm/sprd/sprd_dpu.h | 190 +++ > > drivers/gpu/drm/sprd/sprd_drm.c | 227 +++ > > drivers/gpu/drm/sprd/sprd_drm.h | 18 + > > drivers/gpu/drm/sprd/sprd_dsi.c | 571 ++++++++ > > drivers/gpu/drm/sprd/sprd_dsi.h | 108 ++ > > 33 files changed, 7074 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/display/sprd/dphy.yaml > > create mode 100644 Documentation/devicetree/bindings/display/sprd/dpu.yaml > > create mode 100644 Documentation/devicetree/bindings/display/sprd/drm.yaml > > create mode 100644 Documentation/devicetree/bindings/display/sprd/dsi.yaml > > create mode 100644 drivers/gpu/drm/sprd/Kconfig > > create mode 100644 drivers/gpu/drm/sprd/Makefile > > create mode 100644 drivers/gpu/drm/sprd/disp_lib.c > > create mode 100644 drivers/gpu/drm/sprd/disp_lib.h > > create mode 100644 drivers/gpu/drm/sprd/dphy/Makefile > > create mode 100644 drivers/gpu/drm/sprd/dphy/pll/Makefile > > create mode 100644 drivers/gpu/drm/sprd/dphy/pll/megacores_sharkle.c > > create mode 100644 drivers/gpu/drm/sprd/dphy/sprd_dphy_api.c > > create mode 100644 drivers/gpu/drm/sprd/dphy/sprd_dphy_api.h > > create mode 100644 drivers/gpu/drm/sprd/dpu/Makefile > > create mode 100644 drivers/gpu/drm/sprd/dpu/dpu_r2p0.c > > create mode 100644 drivers/gpu/drm/sprd/dsi/Makefile > > create mode 100644 drivers/gpu/drm/sprd/dsi/core/Makefile > > create mode 100644 drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0.c > > create mode 100644 drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0.h > > create mode 100644 drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0_ppi.c > > create mode 100644 drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0_ppi.h > > create mode 100644 drivers/gpu/drm/sprd/dsi/sprd_dsi_api.c > > create mode 100644 drivers/gpu/drm/sprd/dsi/sprd_dsi_api.h > > create mode 100644 drivers/gpu/drm/sprd/sprd_dphy.c > > create mode 100644 drivers/gpu/drm/sprd/sprd_dphy.h > > create mode 100644 drivers/gpu/drm/sprd/sprd_dpu.c > > create mode 100644 drivers/gpu/drm/sprd/sprd_dpu.h > > create mode 100644 drivers/gpu/drm/sprd/sprd_drm.c > > create mode 100644 drivers/gpu/drm/sprd/sprd_drm.h > > create mode 100644 drivers/gpu/drm/sprd/sprd_dsi.c > > create mode 100644 drivers/gpu/drm/sprd/sprd_dsi.h > > > > -- > > 2.7.4 > > > > > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch
From: Kevin Tang <kevin.tang@unisoc.com> ChangeList: v1: 1. only upstream modeset and atomic at first commit. 2. remove some unused code; 3. use alpha and blend_mode properties; 3. add yaml support; 4. remove auto-adaptive panel driver; 5. bugfix v2: 1. add sprd crtc and plane module for KMS, preparing for multi crtc&encoder 2. remove gem drivers, use generic CMA handlers 3. remove redundant "module_init", all the sub modules loading by KMS v3: 1. multi crtc&encoder design have problem, so rollback to v1 v4: 1. update to gcc-linaro-7.5.0 2. update to Linux 5.6-rc3 3. remove pm_runtime support 4. add COMPILE_TEST, remove unused kconfig 5. "drm_dev_put" on drm_unbind 6. fix some naming convention issue 7. remove semaphore lock for crtc flip 8. remove static variables v5: 1. optimize encoder and connector code implementation 2. use "platform_get_irq" and "platform_get_resource" 3. drop useless function return type, drop unless debug log 4. custom properties should be separate, so drop it 5. use DRM_XXX replase pr_xxx 6. drop dsi&dphy hal callback ops 7. drop unless callback ops checking 8. add comments for sprd dpu structure v6: 1. Access registers via readl/writel 2. Checking for unsupported KMS properties (format, rotation, blend_mode, etc) on plane_check ops 3. Remove always true checks for dpu core ops Kevin Tang (6): dt-bindings: display: add Unisoc's drm master bindings drm/sprd: add Unisoc's drm kms master dt-bindings: display: add Unisoc's dpu bindings drm/sprd: add Unisoc's drm display controller driver dt-bindings: display: add Unisoc's mipi dsi&dphy bindings drm/sprd: add Unisoc's drm mipi dsi&dphy driver .../devicetree/bindings/display/sprd/dphy.yaml | 75 + .../devicetree/bindings/display/sprd/dpu.yaml | 82 ++ .../devicetree/bindings/display/sprd/drm.yaml | 36 + .../devicetree/bindings/display/sprd/dsi.yaml | 98 ++ drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/sprd/Kconfig | 12 + drivers/gpu/drm/sprd/Makefile | 13 + drivers/gpu/drm/sprd/disp_lib.c | 57 + drivers/gpu/drm/sprd/disp_lib.h | 16 + drivers/gpu/drm/sprd/dphy/Makefile | 7 + drivers/gpu/drm/sprd/dphy/pll/Makefile | 3 + drivers/gpu/drm/sprd/dphy/pll/megacores_sharkle.c | 473 +++++++ drivers/gpu/drm/sprd/dphy/sprd_dphy_api.c | 201 +++ drivers/gpu/drm/sprd/dphy/sprd_dphy_api.h | 22 + drivers/gpu/drm/sprd/dpu/Makefile | 3 + drivers/gpu/drm/sprd/dpu/dpu_r2p0.c | 503 +++++++ drivers/gpu/drm/sprd/dsi/Makefile | 8 + drivers/gpu/drm/sprd/dsi/core/Makefile | 4 + drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0.c | 964 +++++++++++++ drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0.h | 1477 ++++++++++++++++++++ drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0_ppi.c | 328 +++++ drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0_ppi.h | 32 + drivers/gpu/drm/sprd/dsi/sprd_dsi_api.c | 590 ++++++++ drivers/gpu/drm/sprd/dsi/sprd_dsi_api.h | 26 + drivers/gpu/drm/sprd/sprd_dphy.c | 209 +++ drivers/gpu/drm/sprd/sprd_dphy.h | 50 + drivers/gpu/drm/sprd/sprd_dpu.c | 668 +++++++++ drivers/gpu/drm/sprd/sprd_dpu.h | 190 +++ drivers/gpu/drm/sprd/sprd_drm.c | 227 +++ drivers/gpu/drm/sprd/sprd_drm.h | 18 + drivers/gpu/drm/sprd/sprd_dsi.c | 571 ++++++++ drivers/gpu/drm/sprd/sprd_dsi.h | 108 ++ 33 files changed, 7074 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/sprd/dphy.yaml create mode 100644 Documentation/devicetree/bindings/display/sprd/dpu.yaml create mode 100644 Documentation/devicetree/bindings/display/sprd/drm.yaml create mode 100644 Documentation/devicetree/bindings/display/sprd/dsi.yaml create mode 100644 drivers/gpu/drm/sprd/Kconfig create mode 100644 drivers/gpu/drm/sprd/Makefile create mode 100644 drivers/gpu/drm/sprd/disp_lib.c create mode 100644 drivers/gpu/drm/sprd/disp_lib.h create mode 100644 drivers/gpu/drm/sprd/dphy/Makefile create mode 100644 drivers/gpu/drm/sprd/dphy/pll/Makefile create mode 100644 drivers/gpu/drm/sprd/dphy/pll/megacores_sharkle.c create mode 100644 drivers/gpu/drm/sprd/dphy/sprd_dphy_api.c create mode 100644 drivers/gpu/drm/sprd/dphy/sprd_dphy_api.h create mode 100644 drivers/gpu/drm/sprd/dpu/Makefile create mode 100644 drivers/gpu/drm/sprd/dpu/dpu_r2p0.c create mode 100644 drivers/gpu/drm/sprd/dsi/Makefile create mode 100644 drivers/gpu/drm/sprd/dsi/core/Makefile create mode 100644 drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0.c create mode 100644 drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0.h create mode 100644 drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0_ppi.c create mode 100644 drivers/gpu/drm/sprd/dsi/core/dsi_ctrl_r1p0_ppi.h create mode 100644 drivers/gpu/drm/sprd/dsi/sprd_dsi_api.c create mode 100644 drivers/gpu/drm/sprd/dsi/sprd_dsi_api.h create mode 100644 drivers/gpu/drm/sprd/sprd_dphy.c create mode 100644 drivers/gpu/drm/sprd/sprd_dphy.h create mode 100644 drivers/gpu/drm/sprd/sprd_dpu.c create mode 100644 drivers/gpu/drm/sprd/sprd_dpu.h create mode 100644 drivers/gpu/drm/sprd/sprd_drm.c create mode 100644 drivers/gpu/drm/sprd/sprd_drm.h create mode 100644 drivers/gpu/drm/sprd/sprd_dsi.c create mode 100644 drivers/gpu/drm/sprd/sprd_dsi.h