* [PATCH 0/2] drm/meson: Allow using optional canvas provider @ 2018-11-05 10:45 Maxime Jourdan 2018-11-05 10:45 ` [PATCH 1/2] dt-bindings: display: amlogic, meson-vpu: Add optional canvas provider node Maxime Jourdan ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Maxime Jourdan @ 2018-11-05 10:45 UTC (permalink / raw) To: Neil Armstrong Cc: Kevin Hilman, Jerome Brunet, devicetree, linux-kernel, linux-arm-kernel, linux-amlogic, dri-devel The meson DRM driver currently uses constant, static canvas indexes. This is not optimal and could conflict with other drivers also using canvases. This patch series allows the driver to optionnally use a canvas provider module that is able to dispatch canvases, on demand and free of conflict. In the future, the current way of doing things will be deprecated. Maxime Jourdan (2): dt-bindings: display: amlogic, meson-vpu: Add optional canvas provider node drm/meson: Use optional canvas provider .../bindings/display/amlogic,meson-vpu.txt | 2 + drivers/gpu/drm/meson/Kconfig | 1 + drivers/gpu/drm/meson/meson_crtc.c | 14 ++++-- drivers/gpu/drm/meson/meson_drv.c | 46 ++++++++++++------- drivers/gpu/drm/meson/meson_drv.h | 4 ++ drivers/gpu/drm/meson/meson_plane.c | 8 +++- 6 files changed, 53 insertions(+), 22 deletions(-) -- 2.19.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] dt-bindings: display: amlogic, meson-vpu: Add optional canvas provider node 2018-11-05 10:45 [PATCH 0/2] drm/meson: Allow using optional canvas provider Maxime Jourdan @ 2018-11-05 10:45 ` Maxime Jourdan 2018-11-05 10:45 ` [PATCH 2/2] drm/meson: Use optional canvas provider Maxime Jourdan 2018-11-05 12:51 ` [PATCH 0/2] drm/meson: Allow using " Neil Armstrong 2 siblings, 0 replies; 7+ messages in thread From: Maxime Jourdan @ 2018-11-05 10:45 UTC (permalink / raw) To: Neil Armstrong Cc: Kevin Hilman, Jerome Brunet, devicetree, linux-kernel, linux-arm-kernel, linux-amlogic, dri-devel Allows using the new canvas provider module if present. Signed-off-by: Maxime Jourdan <mjourdan@baylibre.com> --- Documentation/devicetree/bindings/display/amlogic,meson-vpu.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/display/amlogic,meson-vpu.txt b/Documentation/devicetree/bindings/display/amlogic,meson-vpu.txt index 057b81335775..c65fd7a7467c 100644 --- a/Documentation/devicetree/bindings/display/amlogic,meson-vpu.txt +++ b/Documentation/devicetree/bindings/display/amlogic,meson-vpu.txt @@ -67,6 +67,8 @@ Required properties: Optional properties: - power-domains: Optional phandle to associated power domain as described in the file ../power/power_domain.txt +- amlogic,canvas: phandle to canvas provider node as described in the file + ../soc/amlogic/amlogic,canvas.txt Required nodes: -- 2.19.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] drm/meson: Use optional canvas provider 2018-11-05 10:45 [PATCH 0/2] drm/meson: Allow using optional canvas provider Maxime Jourdan 2018-11-05 10:45 ` [PATCH 1/2] dt-bindings: display: amlogic, meson-vpu: Add optional canvas provider node Maxime Jourdan @ 2018-11-05 10:45 ` Maxime Jourdan 2018-11-05 12:53 ` Neil Armstrong 2018-11-05 12:51 ` [PATCH 0/2] drm/meson: Allow using " Neil Armstrong 2 siblings, 1 reply; 7+ messages in thread From: Maxime Jourdan @ 2018-11-05 10:45 UTC (permalink / raw) To: Neil Armstrong Cc: Kevin Hilman, Jerome Brunet, devicetree, linux-kernel, linux-arm-kernel, linux-amlogic, dri-devel This is the first step into converting the meson/drm driver to use the canvas module. If a canvas provider node is detected in DT, use it. Otherwise, fall back to what is currently being done. Signed-off-by: Maxime Jourdan <mjourdan@baylibre.com> --- drivers/gpu/drm/meson/Kconfig | 1 + drivers/gpu/drm/meson/meson_crtc.c | 14 ++++++--- drivers/gpu/drm/meson/meson_drv.c | 46 ++++++++++++++++++----------- drivers/gpu/drm/meson/meson_drv.h | 4 +++ drivers/gpu/drm/meson/meson_plane.c | 8 ++++- 5 files changed, 51 insertions(+), 22 deletions(-) diff --git a/drivers/gpu/drm/meson/Kconfig b/drivers/gpu/drm/meson/Kconfig index 3ce51d8dfe1c..c28b69f48555 100644 --- a/drivers/gpu/drm/meson/Kconfig +++ b/drivers/gpu/drm/meson/Kconfig @@ -7,6 +7,7 @@ config DRM_MESON select DRM_GEM_CMA_HELPER select VIDEOMODE_HELPERS select REGMAP_MMIO + select MESON_CANVAS config DRM_MESON_DW_HDMI tristate "HDMI Synopsys Controller support for Amlogic Meson Display" diff --git a/drivers/gpu/drm/meson/meson_crtc.c b/drivers/gpu/drm/meson/meson_crtc.c index 05520202c967..b3bc0b0ee07f 100644 --- a/drivers/gpu/drm/meson/meson_crtc.c +++ b/drivers/gpu/drm/meson/meson_crtc.c @@ -193,10 +193,16 @@ void meson_crtc_irq(struct meson_drm *priv) } else meson_vpp_disable_interlace_vscaler_osd1(priv); - meson_canvas_setup(priv, MESON_CANVAS_ID_OSD1, - priv->viu.osd1_addr, priv->viu.osd1_stride, - priv->viu.osd1_height, MESON_CANVAS_WRAP_NONE, - MESON_CANVAS_BLKMODE_LINEAR); + if (priv->canvas) + meson_canvas_config(priv->canvas, priv->canvas_id_osd1, + priv->viu.osd1_addr, priv->viu.osd1_stride, + priv->viu.osd1_height, MESON_CANVAS_WRAP_NONE, + MESON_CANVAS_BLKMODE_LINEAR, 0); + else + meson_canvas_setup(priv, MESON_CANVAS_ID_OSD1, + priv->viu.osd1_addr, priv->viu.osd1_stride, + priv->viu.osd1_height, MESON_CANVAS_WRAP_NONE, + MESON_CANVAS_BLKMODE_LINEAR); /* Enable OSD1 */ writel_bits_relaxed(VPP_OSD1_POSTBLEND, VPP_OSD1_POSTBLEND, diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c index d3443125e661..b39c38c2350d 100644 --- a/drivers/gpu/drm/meson/meson_drv.c +++ b/drivers/gpu/drm/meson/meson_drv.c @@ -216,24 +216,33 @@ static int meson_drv_bind_master(struct device *dev, bool has_components) goto free_drm; } - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dmc"); - if (!res) { - ret = -EINVAL; - goto free_drm; - } - /* Simply ioremap since it may be a shared register zone */ - regs = devm_ioremap(dev, res->start, resource_size(res)); - if (!regs) { - ret = -EADDRNOTAVAIL; - goto free_drm; - } + priv->canvas = meson_canvas_get(dev); + if (!IS_ERR(priv->canvas)) { + ret = meson_canvas_alloc(priv->canvas, &priv->canvas_id_osd1); + if (ret) + goto free_drm; + } else { + priv->canvas = NULL; - priv->dmc = devm_regmap_init_mmio(dev, regs, - &meson_regmap_config); - if (IS_ERR(priv->dmc)) { - dev_err(&pdev->dev, "Couldn't create the DMC regmap\n"); - ret = PTR_ERR(priv->dmc); - goto free_drm; + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dmc"); + if (!res) { + ret = -EINVAL; + goto free_drm; + } + /* Simply ioremap since it may be a shared register zone */ + regs = devm_ioremap(dev, res->start, resource_size(res)); + if (!regs) { + ret = -EADDRNOTAVAIL; + goto free_drm; + } + + priv->dmc = devm_regmap_init_mmio(dev, regs, + &meson_regmap_config); + if (IS_ERR(priv->dmc)) { + dev_err(&pdev->dev, "Couldn't create the DMC regmap\n"); + ret = PTR_ERR(priv->dmc); + goto free_drm; + } } priv->vsync_irq = platform_get_irq(pdev, 0); @@ -315,6 +324,9 @@ static void meson_drv_unbind(struct device *dev) struct drm_device *drm = dev_get_drvdata(dev); struct meson_drm *priv = drm->dev_private; + if (priv->canvas) + meson_canvas_free(priv->canvas, priv->canvas_id_osd1); + drm_dev_unregister(drm); drm_kms_helper_poll_fini(drm); drm_fbdev_cma_fini(priv->fbdev); diff --git a/drivers/gpu/drm/meson/meson_drv.h b/drivers/gpu/drm/meson/meson_drv.h index 8450d6ac8c9b..728d0ca33732 100644 --- a/drivers/gpu/drm/meson/meson_drv.h +++ b/drivers/gpu/drm/meson/meson_drv.h @@ -22,6 +22,7 @@ #include <linux/platform_device.h> #include <linux/regmap.h> #include <linux/of.h> +#include <linux/soc/amlogic/meson-canvas.h> #include <drm/drmP.h> struct meson_drm { @@ -31,6 +32,9 @@ struct meson_drm { struct regmap *dmc; int vsync_irq; + struct meson_canvas *canvas; + u8 canvas_id_osd1; + struct drm_device *drm; struct drm_crtc *crtc; struct drm_fbdev_cma *fbdev; diff --git a/drivers/gpu/drm/meson/meson_plane.c b/drivers/gpu/drm/meson/meson_plane.c index 12c80dfcff59..51bec8e98a39 100644 --- a/drivers/gpu/drm/meson/meson_plane.c +++ b/drivers/gpu/drm/meson/meson_plane.c @@ -90,6 +90,7 @@ static void meson_plane_atomic_update(struct drm_plane *plane, .y2 = state->crtc_y + state->crtc_h, }; unsigned long flags; + u8 canvas_id_osd1; /* * Update Coordinates @@ -104,8 +105,13 @@ static void meson_plane_atomic_update(struct drm_plane *plane, (0xFF << OSD_GLOBAL_ALPHA_SHIFT) | OSD_BLK0_ENABLE; + if (priv->canvas) + canvas_id_osd1 = priv->canvas_id_osd1; + else + canvas_id_osd1 = MESON_CANVAS_ID_OSD1; + /* Set up BLK0 to point to the right canvas */ - priv->viu.osd1_blk0_cfg[0] = ((MESON_CANVAS_ID_OSD1 << OSD_CANVAS_SEL) | + priv->viu.osd1_blk0_cfg[0] = ((canvas_id_osd1 << OSD_CANVAS_SEL) | OSD_ENDIANNESS_LE); /* On GXBB, Use the old non-HDR RGB2YUV converter */ -- 2.19.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] drm/meson: Use optional canvas provider 2018-11-05 10:45 ` [PATCH 2/2] drm/meson: Use optional canvas provider Maxime Jourdan @ 2018-11-05 12:53 ` Neil Armstrong 0 siblings, 0 replies; 7+ messages in thread From: Neil Armstrong @ 2018-11-05 12:53 UTC (permalink / raw) To: Maxime Jourdan Cc: Kevin Hilman, Jerome Brunet, devicetree, linux-kernel, linux-arm-kernel, linux-amlogic, dri-devel On 05/11/2018 11:45, Maxime Jourdan wrote: > This is the first step into converting the meson/drm driver to use > the canvas module. > > If a canvas provider node is detected in DT, use it. Otherwise, > fall back to what is currently being done. > > Signed-off-by: Maxime Jourdan <mjourdan@baylibre.com> > --- > drivers/gpu/drm/meson/Kconfig | 1 + > drivers/gpu/drm/meson/meson_crtc.c | 14 ++++++--- > drivers/gpu/drm/meson/meson_drv.c | 46 ++++++++++++++++++----------- > drivers/gpu/drm/meson/meson_drv.h | 4 +++ > drivers/gpu/drm/meson/meson_plane.c | 8 ++++- > 5 files changed, 51 insertions(+), 22 deletions(-) > > diff --git a/drivers/gpu/drm/meson/Kconfig b/drivers/gpu/drm/meson/Kconfig > index 3ce51d8dfe1c..c28b69f48555 100644 > --- a/drivers/gpu/drm/meson/Kconfig > +++ b/drivers/gpu/drm/meson/Kconfig > @@ -7,6 +7,7 @@ config DRM_MESON > select DRM_GEM_CMA_HELPER > select VIDEOMODE_HELPERS > select REGMAP_MMIO > + select MESON_CANVAS > > config DRM_MESON_DW_HDMI > tristate "HDMI Synopsys Controller support for Amlogic Meson Display" > diff --git a/drivers/gpu/drm/meson/meson_crtc.c b/drivers/gpu/drm/meson/meson_crtc.c > index 05520202c967..b3bc0b0ee07f 100644 > --- a/drivers/gpu/drm/meson/meson_crtc.c > +++ b/drivers/gpu/drm/meson/meson_crtc.c > @@ -193,10 +193,16 @@ void meson_crtc_irq(struct meson_drm *priv) > } else > meson_vpp_disable_interlace_vscaler_osd1(priv); > > - meson_canvas_setup(priv, MESON_CANVAS_ID_OSD1, > - priv->viu.osd1_addr, priv->viu.osd1_stride, > - priv->viu.osd1_height, MESON_CANVAS_WRAP_NONE, > - MESON_CANVAS_BLKMODE_LINEAR); > + if (priv->canvas) > + meson_canvas_config(priv->canvas, priv->canvas_id_osd1, > + priv->viu.osd1_addr, priv->viu.osd1_stride, > + priv->viu.osd1_height, MESON_CANVAS_WRAP_NONE, > + MESON_CANVAS_BLKMODE_LINEAR, 0); > + else > + meson_canvas_setup(priv, MESON_CANVAS_ID_OSD1, > + priv->viu.osd1_addr, priv->viu.osd1_stride, > + priv->viu.osd1_height, MESON_CANVAS_WRAP_NONE, > + MESON_CANVAS_BLKMODE_LINEAR); > > /* Enable OSD1 */ > writel_bits_relaxed(VPP_OSD1_POSTBLEND, VPP_OSD1_POSTBLEND, > diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c > index d3443125e661..b39c38c2350d 100644 > --- a/drivers/gpu/drm/meson/meson_drv.c > +++ b/drivers/gpu/drm/meson/meson_drv.c > @@ -216,24 +216,33 @@ static int meson_drv_bind_master(struct device *dev, bool has_components) > goto free_drm; > } > > - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dmc"); > - if (!res) { > - ret = -EINVAL; > - goto free_drm; > - } > - /* Simply ioremap since it may be a shared register zone */ > - regs = devm_ioremap(dev, res->start, resource_size(res)); > - if (!regs) { > - ret = -EADDRNOTAVAIL; > - goto free_drm; > - } > + priv->canvas = meson_canvas_get(dev); > + if (!IS_ERR(priv->canvas)) { > + ret = meson_canvas_alloc(priv->canvas, &priv->canvas_id_osd1); > + if (ret) > + goto free_drm; > + } else { > + priv->canvas = NULL; > > - priv->dmc = devm_regmap_init_mmio(dev, regs, > - &meson_regmap_config); > - if (IS_ERR(priv->dmc)) { > - dev_err(&pdev->dev, "Couldn't create the DMC regmap\n"); > - ret = PTR_ERR(priv->dmc); > - goto free_drm; > + res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dmc"); > + if (!res) { > + ret = -EINVAL; > + goto free_drm; > + } > + /* Simply ioremap since it may be a shared register zone */ > + regs = devm_ioremap(dev, res->start, resource_size(res)); > + if (!regs) { > + ret = -EADDRNOTAVAIL; > + goto free_drm; > + } > + > + priv->dmc = devm_regmap_init_mmio(dev, regs, > + &meson_regmap_config); > + if (IS_ERR(priv->dmc)) { > + dev_err(&pdev->dev, "Couldn't create the DMC regmap\n"); > + ret = PTR_ERR(priv->dmc); > + goto free_drm; > + } > } > > priv->vsync_irq = platform_get_irq(pdev, 0); > @@ -315,6 +324,9 @@ static void meson_drv_unbind(struct device *dev) > struct drm_device *drm = dev_get_drvdata(dev); > struct meson_drm *priv = drm->dev_private; > > + if (priv->canvas) > + meson_canvas_free(priv->canvas, priv->canvas_id_osd1); > + > drm_dev_unregister(drm); > drm_kms_helper_poll_fini(drm); > drm_fbdev_cma_fini(priv->fbdev); > diff --git a/drivers/gpu/drm/meson/meson_drv.h b/drivers/gpu/drm/meson/meson_drv.h > index 8450d6ac8c9b..728d0ca33732 100644 > --- a/drivers/gpu/drm/meson/meson_drv.h > +++ b/drivers/gpu/drm/meson/meson_drv.h > @@ -22,6 +22,7 @@ > #include <linux/platform_device.h> > #include <linux/regmap.h> > #include <linux/of.h> > +#include <linux/soc/amlogic/meson-canvas.h> > #include <drm/drmP.h> > > struct meson_drm { > @@ -31,6 +32,9 @@ struct meson_drm { > struct regmap *dmc; > int vsync_irq; > > + struct meson_canvas *canvas; > + u8 canvas_id_osd1; > + > struct drm_device *drm; > struct drm_crtc *crtc; > struct drm_fbdev_cma *fbdev; > diff --git a/drivers/gpu/drm/meson/meson_plane.c b/drivers/gpu/drm/meson/meson_plane.c > index 12c80dfcff59..51bec8e98a39 100644 > --- a/drivers/gpu/drm/meson/meson_plane.c > +++ b/drivers/gpu/drm/meson/meson_plane.c > @@ -90,6 +90,7 @@ static void meson_plane_atomic_update(struct drm_plane *plane, > .y2 = state->crtc_y + state->crtc_h, > }; > unsigned long flags; > + u8 canvas_id_osd1; > > /* > * Update Coordinates > @@ -104,8 +105,13 @@ static void meson_plane_atomic_update(struct drm_plane *plane, > (0xFF << OSD_GLOBAL_ALPHA_SHIFT) | > OSD_BLK0_ENABLE; > > + if (priv->canvas) > + canvas_id_osd1 = priv->canvas_id_osd1; > + else > + canvas_id_osd1 = MESON_CANVAS_ID_OSD1; > + > /* Set up BLK0 to point to the right canvas */ > - priv->viu.osd1_blk0_cfg[0] = ((MESON_CANVAS_ID_OSD1 << OSD_CANVAS_SEL) | > + priv->viu.osd1_blk0_cfg[0] = ((canvas_id_osd1 << OSD_CANVAS_SEL) | > OSD_ENDIANNESS_LE); > > /* On GXBB, Use the old non-HDR RGB2YUV converter */ > Reviewed-by: Neil Armstrong <narmstrong@baylibre.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] drm/meson: Allow using optional canvas provider 2018-11-05 10:45 [PATCH 0/2] drm/meson: Allow using optional canvas provider Maxime Jourdan 2018-11-05 10:45 ` [PATCH 1/2] dt-bindings: display: amlogic, meson-vpu: Add optional canvas provider node Maxime Jourdan 2018-11-05 10:45 ` [PATCH 2/2] drm/meson: Use optional canvas provider Maxime Jourdan @ 2018-11-05 12:51 ` Neil Armstrong 2018-11-05 14:02 ` Maxime Jourdan 2 siblings, 1 reply; 7+ messages in thread From: Neil Armstrong @ 2018-11-05 12:51 UTC (permalink / raw) To: Maxime Jourdan Cc: Kevin Hilman, Jerome Brunet, devicetree, linux-kernel, linux-arm-kernel, linux-amlogic, dri-devel Hi Maxime, On 05/11/2018 11:45, Maxime Jourdan wrote: > The meson DRM driver currently uses constant, static canvas indexes. > > This is not optimal and could conflict with other drivers also using > canvases. Indeed, it's now time to use the canvas provider merged in 4.20-rc1 ! > > This patch series allows the driver to optionnally use a canvas provider > module that is able to dispatch canvases, on demand and free of conflict. > > In the future, the current way of doing things will be deprecated. Do you confirm you will send a patch to remove the legacy canvas code when everything is merged (including DT changes) ? I'll wait until the bindings are reviewed, then I'll push the serie to drm-misc-next. Thanks, Neil > > Maxime Jourdan (2): > dt-bindings: display: amlogic, meson-vpu: Add optional canvas provider > node > drm/meson: Use optional canvas provider > > .../bindings/display/amlogic,meson-vpu.txt | 2 + > drivers/gpu/drm/meson/Kconfig | 1 + > drivers/gpu/drm/meson/meson_crtc.c | 14 ++++-- > drivers/gpu/drm/meson/meson_drv.c | 46 ++++++++++++------- > drivers/gpu/drm/meson/meson_drv.h | 4 ++ > drivers/gpu/drm/meson/meson_plane.c | 8 +++- > 6 files changed, 53 insertions(+), 22 deletions(-) > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] drm/meson: Allow using optional canvas provider 2018-11-05 12:51 ` [PATCH 0/2] drm/meson: Allow using " Neil Armstrong @ 2018-11-05 14:02 ` Maxime Jourdan 2018-11-13 13:32 ` Neil Armstrong 0 siblings, 1 reply; 7+ messages in thread From: Maxime Jourdan @ 2018-11-05 14:02 UTC (permalink / raw) To: Neil Armstrong Cc: Kevin Hilman, Jerome Brunet, devicetree, linux-kernel, linux-arm-kernel, linux-amlogic, dri-devel Hi Neil, On Mon, Nov 5, 2018 at 1:51 PM Neil Armstrong <narmstrong@baylibre.com> wrote: > > Hi Maxime, > > On 05/11/2018 11:45, Maxime Jourdan wrote: > > The meson DRM driver currently uses constant, static canvas indexes. > > > > This is not optimal and could conflict with other drivers also using > > canvases. > > Indeed, it's now time to use the canvas provider merged in 4.20-rc1 ! > > > > > This patch series allows the driver to optionnally use a canvas provider > > module that is able to dispatch canvases, on demand and free of conflict. > > > > In the future, the current way of doing things will be deprecated. > > Do you confirm you will send a patch to remove the legacy canvas code when > everything is merged (including DT changes) ? > > I'll wait until the bindings are reviewed, then I'll push the serie to drm-misc-next. > Yes, ultimately it will be removed. The plan is: 4.21: allow using both modes, add the "amlogic,canvas" property to the dts files 4.22: remove the old way and change the amlogic,canvas property to mandatory This should allow for a nice transition. Maxime > Thanks, > Neil > > > > > Maxime Jourdan (2): > > dt-bindings: display: amlogic, meson-vpu: Add optional canvas provider > > node > > drm/meson: Use optional canvas provider > > > > .../bindings/display/amlogic,meson-vpu.txt | 2 + > > drivers/gpu/drm/meson/Kconfig | 1 + > > drivers/gpu/drm/meson/meson_crtc.c | 14 ++++-- > > drivers/gpu/drm/meson/meson_drv.c | 46 ++++++++++++------- > > drivers/gpu/drm/meson/meson_drv.h | 4 ++ > > drivers/gpu/drm/meson/meson_plane.c | 8 +++- > > 6 files changed, 53 insertions(+), 22 deletions(-) > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] drm/meson: Allow using optional canvas provider 2018-11-05 14:02 ` Maxime Jourdan @ 2018-11-13 13:32 ` Neil Armstrong 0 siblings, 0 replies; 7+ messages in thread From: Neil Armstrong @ 2018-11-13 13:32 UTC (permalink / raw) To: Maxime Jourdan Cc: Kevin Hilman, Jerome Brunet, devicetree, linux-kernel, linux-arm-kernel, linux-amlogic, dri-devel On 05/11/2018 15:02, Maxime Jourdan wrote: > Hi Neil, > > On Mon, Nov 5, 2018 at 1:51 PM Neil Armstrong <narmstrong@baylibre.com> wrote: >> >> Hi Maxime, >> >> On 05/11/2018 11:45, Maxime Jourdan wrote: >>> The meson DRM driver currently uses constant, static canvas indexes. >>> >>> This is not optimal and could conflict with other drivers also using >>> canvases. >> >> Indeed, it's now time to use the canvas provider merged in 4.20-rc1 ! >> >>> >>> This patch series allows the driver to optionnally use a canvas provider >>> module that is able to dispatch canvases, on demand and free of conflict. >>> >>> In the future, the current way of doing things will be deprecated. >> >> Do you confirm you will send a patch to remove the legacy canvas code when >> everything is merged (including DT changes) ? >> >> I'll wait until the bindings are reviewed, then I'll push the serie to drm-misc-next. >> > > Yes, ultimately it will be removed. > > The plan is: > > 4.21: allow using both modes, add the "amlogic,canvas" property to the dts files > 4.22: remove the old way and change the amlogic,canvas property to mandatory > > This should allow for a nice transition. > > Maxime > >> Thanks, >> Neil >> >>> >>> Maxime Jourdan (2): >>> dt-bindings: display: amlogic, meson-vpu: Add optional canvas provider >>> node >>> drm/meson: Use optional canvas provider >>> >>> .../bindings/display/amlogic,meson-vpu.txt | 2 + >>> drivers/gpu/drm/meson/Kconfig | 1 + >>> drivers/gpu/drm/meson/meson_crtc.c | 14 ++++-- >>> drivers/gpu/drm/meson/meson_drv.c | 46 ++++++++++++------- >>> drivers/gpu/drm/meson/meson_drv.h | 4 ++ >>> drivers/gpu/drm/meson/meson_plane.c | 8 +++- >>> 6 files changed, 53 insertions(+), 22 deletions(-) >>> Applied ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-11-13 13:32 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-11-05 10:45 [PATCH 0/2] drm/meson: Allow using optional canvas provider Maxime Jourdan 2018-11-05 10:45 ` [PATCH 1/2] dt-bindings: display: amlogic, meson-vpu: Add optional canvas provider node Maxime Jourdan 2018-11-05 10:45 ` [PATCH 2/2] drm/meson: Use optional canvas provider Maxime Jourdan 2018-11-05 12:53 ` Neil Armstrong 2018-11-05 12:51 ` [PATCH 0/2] drm/meson: Allow using " Neil Armstrong 2018-11-05 14:02 ` Maxime Jourdan 2018-11-13 13:32 ` Neil Armstrong
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).