* [PATCH v6 0/4] Add initial i.MX8MQ support @ 2020-03-20 13:12 Philipp Zabel 2020-03-20 13:12 ` [PATCH v6 1/4] media: dt-bindings: Document i.MX8MQ VPU bindings Philipp Zabel ` (4 more replies) 0 siblings, 5 replies; 11+ messages in thread From: Philipp Zabel @ 2020-03-20 13:12 UTC (permalink / raw) To: linux-media Cc: Ezequiel Garcia, Mauro Carvalho Chehab, Hans Verkuil, Rob Herring, Shawn Guo, kernel, devicetree With the i.MX8MQ decoders in active use and the i.MX8MM power domain support still up in the air, I think it makes sense to merge i.MX8MQ Hantro support now and accept that i.MX8MM may or may not require different bindings. Patch 4 depends on [2] for the MAINTAINERS change. Changes since v5 [1]: - Drop merged patches - Drop i.MX8MM bindings - Change example node name to video-codec - Convert i.MX8MQ bindings to YAML - Drop i.MX8MM support - Rebase onto media/master - Enable h.264 and VP8 decoding - Enable post-processing [1] https://lore.kernel.org/linux-media/20190612093915.18973-1-p.zabel@pengutronix.de [2] https://lore.kernel.org/linux-media/20200318132108.21873-9-ezequiel@collabora.com regards Philipp Philipp Zabel (4): media: dt-bindings: Document i.MX8MQ VPU bindings media: hantro: add initial i.MX8MQ support arm64: dts: imx8mq: enable Hantro G1/G2 VPU media: MAINTAINERS: add myself to co-maintain Hantro G1/G2 for i.MX8MQ .../bindings/media/nxp,imx8mq-vpu.yaml | 77 ++++++ MAINTAINERS | 2 + arch/arm64/boot/dts/freescale/imx8mq.dtsi | 27 +++ drivers/staging/media/hantro/Kconfig | 16 +- drivers/staging/media/hantro/Makefile | 3 + drivers/staging/media/hantro/hantro_drv.c | 3 + drivers/staging/media/hantro/hantro_hw.h | 1 + drivers/staging/media/hantro/imx8m_vpu_hw.c | 220 ++++++++++++++++++ 8 files changed, 345 insertions(+), 4 deletions(-) create mode 100644 Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml create mode 100644 drivers/staging/media/hantro/imx8m_vpu_hw.c -- 2.20.1 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v6 1/4] media: dt-bindings: Document i.MX8MQ VPU bindings 2020-03-20 13:12 [PATCH v6 0/4] Add initial i.MX8MQ support Philipp Zabel @ 2020-03-20 13:12 ` Philipp Zabel 2020-03-20 17:25 ` Rob Herring 2020-03-20 13:12 ` [PATCH v6 2/4] media: hantro: add initial i.MX8MQ support Philipp Zabel ` (3 subsequent siblings) 4 siblings, 1 reply; 11+ messages in thread From: Philipp Zabel @ 2020-03-20 13:12 UTC (permalink / raw) To: linux-media Cc: Ezequiel Garcia, Mauro Carvalho Chehab, Hans Verkuil, Rob Herring, Shawn Guo, kernel, devicetree Add devicetree binding documentation for the Hantro G1/G2 VPU on i.MX8MQ. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> --- Changes since v5: - Drop i.MX8MM bindings - Change example node name to video-codec - Convert to YAML --- .../bindings/media/nxp,imx8mq-vpu.yaml | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml diff --git a/Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml b/Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml new file mode 100644 index 000000000000..a2d1cd77c1e2 --- /dev/null +++ b/Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml @@ -0,0 +1,77 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) + +%YAML 1.2 +--- +$id: "http://devicetree.org/schemas/media/nxp,imx8mq-vpu.yaml#" +$schema: "http://devicetree.org/meta-schemas/core.yaml#" + +title: Hantro G1/G2 VPU codecs implemented on i.MX8MQ SoCs + +maintainers: + - Philipp Zabel <p.zabel@pengutronix.de> + +description: + Hantro G1/G2 video decode accelerators present on i.MX8MQ SoCs. + +properties: + compatible: + const: nxp,imx8mq-vpu + + reg: + maxItems: 3 + + reg-names: + items: + - const: g1 + - const: g2 + - const: ctrl + + interrupts: + maxItems: 2 + + interrupt-names: + items: + - const: g1 + - const: g2 + + clocks: + maxItems: 3 + + clock-names: + items: + - const: g1 + - const: g2 + - const: bus + + power-domains: + maxItems: 1 + +required: + - compatible + - reg + - reg-names + - interrupts + - interrupt-names + - clocks + - clock-names + +examples: + - | + #include <dt-bindings/clock/imx8mq-clock.h> + #include <dt-bindings/interrupt-controller/arm-gic.h> + + vpu: video-codec@38300000 { + compatible = "nxp,imx8mq-vpu"; + reg = <0x38300000 0x10000>, + <0x38310000 0x10000>, + <0x38320000 0x10000>; + reg-names = "g1", "g2", "ctrl"; + interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "g1", "g2"; + clocks = <&clk IMX8MQ_CLK_VPU_G1_ROOT>, + <&clk IMX8MQ_CLK_VPU_G2_ROOT>, + <&clk IMX8MQ_CLK_VPU_DEC_ROOT>; + clock-names = "g1", "g2", "bus"; + power-domains = <&pgc_vpu>; + }; -- 2.20.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v6 1/4] media: dt-bindings: Document i.MX8MQ VPU bindings 2020-03-20 13:12 ` [PATCH v6 1/4] media: dt-bindings: Document i.MX8MQ VPU bindings Philipp Zabel @ 2020-03-20 17:25 ` Rob Herring 0 siblings, 0 replies; 11+ messages in thread From: Rob Herring @ 2020-03-20 17:25 UTC (permalink / raw) To: Philipp Zabel Cc: linux-media, Ezequiel Garcia, Mauro Carvalho Chehab, Hans Verkuil, kernel, devicetree On Fri, 20 Mar 2020 14:12:53 +0100, Philipp Zabel wrote: > Add devicetree binding documentation for the Hantro G1/G2 VPU on i.MX8MQ. > > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> > --- > Changes since v5: > - Drop i.MX8MM bindings > - Change example node name to video-codec > - Convert to YAML > --- > .../bindings/media/nxp,imx8mq-vpu.yaml | 77 +++++++++++++++++++ > 1 file changed, 77 insertions(+) > create mode 100644 Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml > Reviewed-by: Rob Herring <robh@kernel.org> ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v6 2/4] media: hantro: add initial i.MX8MQ support 2020-03-20 13:12 [PATCH v6 0/4] Add initial i.MX8MQ support Philipp Zabel 2020-03-20 13:12 ` [PATCH v6 1/4] media: dt-bindings: Document i.MX8MQ VPU bindings Philipp Zabel @ 2020-03-20 13:12 ` Philipp Zabel 2020-03-20 13:12 ` [PATCH v6 3/4] arm64: dts: imx8mq: enable Hantro G1/G2 VPU Philipp Zabel ` (2 subsequent siblings) 4 siblings, 0 replies; 11+ messages in thread From: Philipp Zabel @ 2020-03-20 13:12 UTC (permalink / raw) To: linux-media Cc: Ezequiel Garcia, Mauro Carvalho Chehab, Hans Verkuil, Rob Herring, Shawn Guo, kernel, devicetree This enables h.264, MPEG-2, and VP8 decoding on the Hantro G1 on i.MX8MQ, with post-processing support. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> --- Changes since v5: - Rebase onto media/master - Enable h.264 and VP8 decoding - Enable post-processing --- drivers/staging/media/hantro/Kconfig | 16 +- drivers/staging/media/hantro/Makefile | 3 + drivers/staging/media/hantro/hantro_drv.c | 3 + drivers/staging/media/hantro/hantro_hw.h | 1 + drivers/staging/media/hantro/imx8m_vpu_hw.c | 220 ++++++++++++++++++++ 5 files changed, 239 insertions(+), 4 deletions(-) create mode 100644 drivers/staging/media/hantro/imx8m_vpu_hw.c diff --git a/drivers/staging/media/hantro/Kconfig b/drivers/staging/media/hantro/Kconfig index de77fe6554e7..99aed9a5b0b9 100644 --- a/drivers/staging/media/hantro/Kconfig +++ b/drivers/staging/media/hantro/Kconfig @@ -1,19 +1,27 @@ # SPDX-License-Identifier: GPL-2.0 config VIDEO_HANTRO tristate "Hantro VPU driver" - depends on ARCH_ROCKCHIP || COMPILE_TEST + depends on ARCH_MXC || ARCH_ROCKCHIP || COMPILE_TEST depends on VIDEO_DEV && VIDEO_V4L2 && MEDIA_CONTROLLER depends on MEDIA_CONTROLLER_REQUEST_API select VIDEOBUF2_DMA_CONTIG select VIDEOBUF2_VMALLOC select V4L2_MEM2MEM_DEV help - Support for the Hantro IP based Video Processing Unit present on - Rockchip SoC, which accelerates video and image encoding and - decoding. + Support for the Hantro IP based Video Processing Units present on + Rockchip and NXP i.MX8M SoCs, which accelerate video and image + encoding and decoding. To compile this driver as a module, choose M here: the module will be called hantro-vpu. +config VIDEO_HANTRO_IMX8M + bool "Hantro VPU i.MX8M support" + depends on VIDEO_HANTRO + depends on ARCH_MXC || COMPILE_TEST + default y + help + Enable support for i.MX8M SoCs. + config VIDEO_HANTRO_ROCKCHIP bool "Hantro VPU Rockchip support" depends on VIDEO_HANTRO diff --git a/drivers/staging/media/hantro/Makefile b/drivers/staging/media/hantro/Makefile index 496b30c3c396..68c29a9c4946 100644 --- a/drivers/staging/media/hantro/Makefile +++ b/drivers/staging/media/hantro/Makefile @@ -16,6 +16,9 @@ hantro-vpu-y += \ hantro_mpeg2.o \ hantro_vp8.o +hantro-vpu-$(CONFIG_VIDEO_HANTRO_IMX8M) += \ + imx8m_vpu_hw.o + hantro-vpu-$(CONFIG_VIDEO_HANTRO_ROCKCHIP) += \ rk3288_vpu_hw.o \ rk3399_vpu_hw.o diff --git a/drivers/staging/media/hantro/hantro_drv.c b/drivers/staging/media/hantro/hantro_drv.c index bd204da6c669..c990accc0777 100644 --- a/drivers/staging/media/hantro/hantro_drv.c +++ b/drivers/staging/media/hantro/hantro_drv.c @@ -479,6 +479,9 @@ static const struct of_device_id of_hantro_match[] = { { .compatible = "rockchip,rk3399-vpu", .data = &rk3399_vpu_variant, }, { .compatible = "rockchip,rk3328-vpu", .data = &rk3328_vpu_variant, }, { .compatible = "rockchip,rk3288-vpu", .data = &rk3288_vpu_variant, }, +#endif +#ifdef CONFIG_VIDEO_HANTRO_IMX8M + { .compatible = "nxp,imx8mq-vpu", .data = &imx8mq_vpu_variant, }, #endif { /* sentinel */ } }; diff --git a/drivers/staging/media/hantro/hantro_hw.h b/drivers/staging/media/hantro/hantro_hw.h index 435f30ae89fd..4053d8710e04 100644 --- a/drivers/staging/media/hantro/hantro_hw.h +++ b/drivers/staging/media/hantro/hantro_hw.h @@ -155,6 +155,7 @@ enum hantro_enc_fmt { extern const struct hantro_variant rk3399_vpu_variant; extern const struct hantro_variant rk3328_vpu_variant; extern const struct hantro_variant rk3288_vpu_variant; +extern const struct hantro_variant imx8mq_vpu_variant; extern const struct hantro_postproc_regs hantro_g1_postproc_regs; diff --git a/drivers/staging/media/hantro/imx8m_vpu_hw.c b/drivers/staging/media/hantro/imx8m_vpu_hw.c new file mode 100644 index 000000000000..cb2420c5526e --- /dev/null +++ b/drivers/staging/media/hantro/imx8m_vpu_hw.c @@ -0,0 +1,220 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Hantro VPU codec driver + * + * Copyright (C) 2019 Pengutronix, Philipp Zabel <kernel@pengutronix.de> + */ + +#include <linux/clk.h> +#include <linux/delay.h> + +#include "hantro.h" +#include "hantro_jpeg.h" +#include "hantro_g1_regs.h" + +#define CTRL_SOFT_RESET 0x00 +#define RESET_G1 BIT(1) +#define RESET_G2 BIT(0) + +#define CTRL_CLOCK_ENABLE 0x04 +#define CLOCK_G1 BIT(1) +#define CLOCK_G2 BIT(0) + +#define CTRL_G1_DEC_FUSE 0x08 +#define CTRL_G1_PP_FUSE 0x0c +#define CTRL_G2_DEC_FUSE 0x10 + +static void imx8m_soft_reset(struct hantro_dev *vpu, u32 reset_bits) +{ + u32 val; + + /* Assert */ + val = readl(vpu->ctrl_base + CTRL_SOFT_RESET); + val &= ~reset_bits; + writel(val, vpu->ctrl_base + CTRL_SOFT_RESET); + + udelay(2); + + /* Release */ + val = readl(vpu->ctrl_base + CTRL_SOFT_RESET); + val |= reset_bits; + writel(val, vpu->ctrl_base + CTRL_SOFT_RESET); +} + +static void imx8m_clk_enable(struct hantro_dev *vpu, u32 clock_bits) +{ + u32 val; + + val = readl(vpu->ctrl_base + CTRL_CLOCK_ENABLE); + val |= clock_bits; + writel(val, vpu->ctrl_base + CTRL_CLOCK_ENABLE); +} + +static int imx8mq_runtime_resume(struct hantro_dev *vpu) +{ + int ret; + + ret = clk_bulk_prepare_enable(vpu->variant->num_clocks, vpu->clocks); + if (ret) { + dev_err(vpu->dev, "Failed to enable clocks\n"); + return ret; + } + + imx8m_soft_reset(vpu, RESET_G1 | RESET_G2); + imx8m_clk_enable(vpu, CLOCK_G1 | CLOCK_G2); + + /* Set values of the fuse registers */ + writel(0xffffffff, vpu->ctrl_base + CTRL_G1_DEC_FUSE); + writel(0xffffffff, vpu->ctrl_base + CTRL_G1_PP_FUSE); + writel(0xffffffff, vpu->ctrl_base + CTRL_G2_DEC_FUSE); + + clk_bulk_disable_unprepare(vpu->variant->num_clocks, vpu->clocks); + + return 0; +} + +/* + * Supported formats. + */ + +static const struct hantro_fmt imx8m_vpu_postproc_fmts[] = { + { + .fourcc = V4L2_PIX_FMT_YUYV, + .codec_mode = HANTRO_MODE_NONE, + }, +}; + +static const struct hantro_fmt imx8m_vpu_dec_fmts[] = { + { + .fourcc = V4L2_PIX_FMT_NV12, + .codec_mode = HANTRO_MODE_NONE, + }, + { + .fourcc = V4L2_PIX_FMT_MPEG2_SLICE, + .codec_mode = HANTRO_MODE_MPEG2_DEC, + .max_depth = 2, + .frmsize = { + .min_width = 48, + .max_width = 1920, + .step_width = MB_DIM, + .min_height = 48, + .max_height = 1088, + .step_height = MB_DIM, + }, + }, + { + .fourcc = V4L2_PIX_FMT_VP8_FRAME, + .codec_mode = HANTRO_MODE_VP8_DEC, + .max_depth = 2, + .frmsize = { + .min_width = 48, + .max_width = 3840, + .step_width = 16, + .min_height = 48, + .max_height = 2160, + .step_height = 16, + }, + }, + { + .fourcc = V4L2_PIX_FMT_H264_SLICE, + .codec_mode = HANTRO_MODE_H264_DEC, + .max_depth = 2, + .frmsize = { + .min_width = 48, + .max_width = 3840, + .step_width = MB_DIM, + .min_height = 48, + .max_height = 2160, + .step_height = MB_DIM, + }, + }, +}; + +static irqreturn_t imx8m_vpu_g1_irq(int irq, void *dev_id) +{ + struct hantro_dev *vpu = dev_id; + enum vb2_buffer_state state; + u32 status; + + status = vdpu_read(vpu, G1_REG_INTERRUPT); + state = (status & G1_REG_INTERRUPT_DEC_RDY_INT) ? + VB2_BUF_STATE_DONE : VB2_BUF_STATE_ERROR; + + vdpu_write(vpu, 0, G1_REG_INTERRUPT); + vdpu_write(vpu, G1_REG_CONFIG_DEC_CLK_GATE_E, G1_REG_CONFIG); + + hantro_irq_done(vpu, 0, state); + + return IRQ_HANDLED; +} + +static int imx8mq_vpu_hw_init(struct hantro_dev *vpu) +{ + vpu->dec_base = vpu->reg_bases[0]; + vpu->ctrl_base = vpu->reg_bases[vpu->variant->num_regs - 1]; + + return 0; +} + +static void imx8m_vpu_g1_reset(struct hantro_ctx *ctx) +{ + struct hantro_dev *vpu = ctx->dev; + + imx8m_soft_reset(vpu, RESET_G1); +} + +/* + * Supported codec ops. + */ + +static const struct hantro_codec_ops imx8mq_vpu_codec_ops[] = { + [HANTRO_MODE_MPEG2_DEC] = { + .run = hantro_g1_mpeg2_dec_run, + .reset = imx8m_vpu_g1_reset, + .init = hantro_mpeg2_dec_init, + .exit = hantro_mpeg2_dec_exit, + }, + [HANTRO_MODE_VP8_DEC] = { + .run = hantro_g1_vp8_dec_run, + .reset = imx8m_vpu_g1_reset, + .init = hantro_vp8_dec_init, + .exit = hantro_vp8_dec_exit, + }, + [HANTRO_MODE_H264_DEC] = { + .run = hantro_g1_h264_dec_run, + .reset = imx8m_vpu_g1_reset, + .init = hantro_h264_dec_init, + .exit = hantro_h264_dec_exit, + }, +}; + +/* + * VPU variants. + */ + +static const struct hantro_irq imx8mq_irqs[] = { + { "g1", imx8m_vpu_g1_irq }, + { "g2", NULL /* TODO: imx8m_vpu_g2_irq */ }, +}; + +static const char * const imx8mq_clk_names[] = { "g1", "g2", "bus" }; +static const char * const imx8mq_reg_names[] = { "g1", "g2", "ctrl" }; + +const struct hantro_variant imx8mq_vpu_variant = { + .dec_fmts = imx8m_vpu_dec_fmts, + .num_dec_fmts = ARRAY_SIZE(imx8m_vpu_dec_fmts), + .postproc_fmts = imx8m_vpu_postproc_fmts, + .num_postproc_fmts = ARRAY_SIZE(imx8m_vpu_postproc_fmts), + .postproc_regs = &hantro_g1_postproc_regs, + .codec = HANTRO_MPEG2_DECODER | HANTRO_VP8_DECODER | + HANTRO_H264_DECODER, + .codec_ops = imx8mq_vpu_codec_ops, + .init = imx8mq_vpu_hw_init, + .runtime_resume = imx8mq_runtime_resume, + .irqs = imx8mq_irqs, + .num_irqs = ARRAY_SIZE(imx8mq_irqs), + .clk_names = imx8mq_clk_names, + .num_clocks = ARRAY_SIZE(imx8mq_clk_names), + .reg_names = imx8mq_reg_names, + .num_regs = ARRAY_SIZE(imx8mq_reg_names) +}; -- 2.20.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH v6 3/4] arm64: dts: imx8mq: enable Hantro G1/G2 VPU 2020-03-20 13:12 [PATCH v6 0/4] Add initial i.MX8MQ support Philipp Zabel 2020-03-20 13:12 ` [PATCH v6 1/4] media: dt-bindings: Document i.MX8MQ VPU bindings Philipp Zabel 2020-03-20 13:12 ` [PATCH v6 2/4] media: hantro: add initial i.MX8MQ support Philipp Zabel @ 2020-03-20 13:12 ` Philipp Zabel 2020-05-27 16:19 ` Philipp Zabel 2020-06-16 14:07 ` Shawn Guo 2020-03-20 13:12 ` [PATCH v6 4/4] media: MAINTAINERS: add myself to co-maintain Hantro G1/G2 for i.MX8MQ Philipp Zabel 2020-03-23 22:41 ` [PATCH v6 0/4] Add initial i.MX8MQ support Ezequiel Garcia 4 siblings, 2 replies; 11+ messages in thread From: Philipp Zabel @ 2020-03-20 13:12 UTC (permalink / raw) To: linux-media Cc: Ezequiel Garcia, Mauro Carvalho Chehab, Hans Verkuil, Rob Herring, Shawn Guo, kernel, devicetree Add the i.MX8MQ VPU module which comprises Hantro G1 and G2 video decoder cores and a reset/control block. Hook up the bus clock to the VPU power domain to enable handshakes, and configure the core clocks to 600 MHz and the bus clock to 800 MHz by default. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> --- New in v6. --- arch/arm64/boot/dts/freescale/imx8mq.dtsi | 27 +++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/imx8mq.dtsi b/arch/arm64/boot/dts/freescale/imx8mq.dtsi index 6a1e83922c71..98e464ecb68a 100644 --- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi @@ -666,6 +666,7 @@ pgc_vpu: power-domain@6 { #power-domain-cells = <0>; reg = <IMX8M_POWER_DOMAIN_VPU>; + clocks = <&clk IMX8MQ_CLK_VPU_DEC_ROOT>; }; pgc_disp: power-domain@7 { @@ -1130,6 +1131,32 @@ status = "disabled"; }; + vpu: video-codec@38300000 { + compatible = "nxp,imx8mq-vpu"; + reg = <0x38300000 0x10000>, + <0x38310000 0x10000>, + <0x38320000 0x10000>; + reg-names = "g1", "g2", "ctrl"; + interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "g1", "g2"; + clocks = <&clk IMX8MQ_CLK_VPU_G1_ROOT>, + <&clk IMX8MQ_CLK_VPU_G2_ROOT>, + <&clk IMX8MQ_CLK_VPU_DEC_ROOT>; + clock-names = "g1", "g2", "bus"; + assigned-clocks = <&clk IMX8MQ_CLK_VPU_G1>, + <&clk IMX8MQ_CLK_VPU_G2>, + <&clk IMX8MQ_CLK_VPU_BUS>, + <&clk IMX8MQ_VPU_PLL_BYPASS>; + assigned-clock-parents = <&clk IMX8MQ_VPU_PLL_OUT>, + <&clk IMX8MQ_VPU_PLL_OUT>, + <&clk IMX8MQ_SYS1_PLL_800M>, + <&clk IMX8MQ_VPU_PLL>; + assigned-clock-rates = <600000000>, <600000000>, + <800000000>, <0>; + power-domains = <&pgc_vpu>; + }; + pcie0: pcie@33800000 { compatible = "fsl,imx8mq-pcie"; reg = <0x33800000 0x400000>, -- 2.20.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v6 3/4] arm64: dts: imx8mq: enable Hantro G1/G2 VPU 2020-03-20 13:12 ` [PATCH v6 3/4] arm64: dts: imx8mq: enable Hantro G1/G2 VPU Philipp Zabel @ 2020-05-27 16:19 ` Philipp Zabel 2020-05-28 1:02 ` Ezequiel Garcia 2020-06-16 14:07 ` Shawn Guo 1 sibling, 1 reply; 11+ messages in thread From: Philipp Zabel @ 2020-05-27 16:19 UTC (permalink / raw) To: Shawn Guo, linux-media Cc: Ezequiel Garcia, Mauro Carvalho Chehab, Hans Verkuil, Rob Herring, kernel, devicetree Hi Shawn, On Fri, 2020-03-20 at 14:12 +0100, Philipp Zabel wrote: > Add the i.MX8MQ VPU module which comprises Hantro G1 and G2 video > decoder cores and a reset/control block. > > Hook up the bus clock to the VPU power domain to enable handshakes, and > configure the core clocks to 600 MHz and the bus clock to 800 MHz by > default. > > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> could you pick up this patch? The driver and binding parts have been merged in media/master. regards Philipp > --- > New in v6. > --- > arch/arm64/boot/dts/freescale/imx8mq.dtsi | 27 +++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/arch/arm64/boot/dts/freescale/imx8mq.dtsi b/arch/arm64/boot/dts/freescale/imx8mq.dtsi > index 6a1e83922c71..98e464ecb68a 100644 > --- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi > +++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi > @@ -666,6 +666,7 @@ > pgc_vpu: power-domain@6 { > #power-domain-cells = <0>; > reg = <IMX8M_POWER_DOMAIN_VPU>; > + clocks = <&clk IMX8MQ_CLK_VPU_DEC_ROOT>; > }; > > pgc_disp: power-domain@7 { > @@ -1130,6 +1131,32 @@ > status = "disabled"; > }; > > + vpu: video-codec@38300000 { > + compatible = "nxp,imx8mq-vpu"; > + reg = <0x38300000 0x10000>, > + <0x38310000 0x10000>, > + <0x38320000 0x10000>; > + reg-names = "g1", "g2", "ctrl"; > + interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-names = "g1", "g2"; > + clocks = <&clk IMX8MQ_CLK_VPU_G1_ROOT>, > + <&clk IMX8MQ_CLK_VPU_G2_ROOT>, > + <&clk IMX8MQ_CLK_VPU_DEC_ROOT>; > + clock-names = "g1", "g2", "bus"; > + assigned-clocks = <&clk IMX8MQ_CLK_VPU_G1>, > + <&clk IMX8MQ_CLK_VPU_G2>, > + <&clk IMX8MQ_CLK_VPU_BUS>, > + <&clk IMX8MQ_VPU_PLL_BYPASS>; > + assigned-clock-parents = <&clk IMX8MQ_VPU_PLL_OUT>, > + <&clk IMX8MQ_VPU_PLL_OUT>, > + <&clk IMX8MQ_SYS1_PLL_800M>, > + <&clk IMX8MQ_VPU_PLL>; > + assigned-clock-rates = <600000000>, <600000000>, > + <800000000>, <0>; > + power-domains = <&pgc_vpu>; > + }; > + > pcie0: pcie@33800000 { > compatible = "fsl,imx8mq-pcie"; > reg = <0x33800000 0x400000>, ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v6 3/4] arm64: dts: imx8mq: enable Hantro G1/G2 VPU 2020-05-27 16:19 ` Philipp Zabel @ 2020-05-28 1:02 ` Ezequiel Garcia 2020-06-10 0:19 ` Ezequiel Garcia 0 siblings, 1 reply; 11+ messages in thread From: Ezequiel Garcia @ 2020-05-28 1:02 UTC (permalink / raw) To: Philipp Zabel, Shawn Guo, linux-media Cc: Mauro Carvalho Chehab, Hans Verkuil, Rob Herring, kernel, devicetree On Wed, 2020-05-27 at 18:19 +0200, Philipp Zabel wrote: > Hi Shawn, > > On Fri, 2020-03-20 at 14:12 +0100, Philipp Zabel wrote: > > Add the i.MX8MQ VPU module which comprises Hantro G1 and G2 video > > decoder cores and a reset/control block. > > > > Hook up the bus clock to the VPU power domain to enable handshakes, and > > configure the core clocks to 600 MHz and the bus clock to 800 MHz by > > default. > > > > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> > > could you pick up this patch? The driver and binding parts have been > merged in media/master. > Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com> Tested-by: Ezequiel Garcia <ezequiel@collabora.com> It looks good and it matches the downstream device tree. Thanks, Ezequiel > regards > Philipp > > > --- > > New in v6. > > --- > > arch/arm64/boot/dts/freescale/imx8mq.dtsi | 27 +++++++++++++++++++++++ > > 1 file changed, 27 insertions(+) > > > > diff --git a/arch/arm64/boot/dts/freescale/imx8mq.dtsi b/arch/arm64/boot/dts/freescale/imx8mq.dtsi > > index 6a1e83922c71..98e464ecb68a 100644 > > --- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi > > +++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi > > @@ -666,6 +666,7 @@ > > pgc_vpu: power-domain@6 { > > #power-domain-cells = <0>; > > reg = <IMX8M_POWER_DOMAIN_VPU>; > > + clocks = <&clk IMX8MQ_CLK_VPU_DEC_ROOT>; > > }; > > > > pgc_disp: power-domain@7 { > > @@ -1130,6 +1131,32 @@ > > status = "disabled"; > > }; > > > > + vpu: video-codec@38300000 { > > + compatible = "nxp,imx8mq-vpu"; > > + reg = <0x38300000 0x10000>, > > + <0x38310000 0x10000>, > > + <0x38320000 0x10000>; > > + reg-names = "g1", "g2", "ctrl"; > > + interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, > > + <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; > > + interrupt-names = "g1", "g2"; > > + clocks = <&clk IMX8MQ_CLK_VPU_G1_ROOT>, > > + <&clk IMX8MQ_CLK_VPU_G2_ROOT>, > > + <&clk IMX8MQ_CLK_VPU_DEC_ROOT>; > > + clock-names = "g1", "g2", "bus"; > > + assigned-clocks = <&clk IMX8MQ_CLK_VPU_G1>, > > + <&clk IMX8MQ_CLK_VPU_G2>, > > + <&clk IMX8MQ_CLK_VPU_BUS>, > > + <&clk IMX8MQ_VPU_PLL_BYPASS>; > > + assigned-clock-parents = <&clk IMX8MQ_VPU_PLL_OUT>, > > + <&clk IMX8MQ_VPU_PLL_OUT>, > > + <&clk IMX8MQ_SYS1_PLL_800M>, > > + <&clk IMX8MQ_VPU_PLL>; > > + assigned-clock-rates = <600000000>, <600000000>, > > + <800000000>, <0>; > > + power-domains = <&pgc_vpu>; > > + }; > > + > > pcie0: pcie@33800000 { > > compatible = "fsl,imx8mq-pcie"; > > reg = <0x33800000 0x400000>, ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v6 3/4] arm64: dts: imx8mq: enable Hantro G1/G2 VPU 2020-05-28 1:02 ` Ezequiel Garcia @ 2020-06-10 0:19 ` Ezequiel Garcia 0 siblings, 0 replies; 11+ messages in thread From: Ezequiel Garcia @ 2020-06-10 0:19 UTC (permalink / raw) To: Ezequiel Garcia Cc: Philipp Zabel, Shawn Guo, linux-media, Mauro Carvalho Chehab, Hans Verkuil, Rob Herring, Pengutronix Kernel Team, devicetree Hello Shawn, Gentle ping. Thanks a lot! Ezequiel On Wed, 27 May 2020 at 22:02, Ezequiel Garcia <ezequiel@collabora.com> wrote: > > On Wed, 2020-05-27 at 18:19 +0200, Philipp Zabel wrote: > > Hi Shawn, > > > > On Fri, 2020-03-20 at 14:12 +0100, Philipp Zabel wrote: > > > Add the i.MX8MQ VPU module which comprises Hantro G1 and G2 video > > > decoder cores and a reset/control block. > > > > > > Hook up the bus clock to the VPU power domain to enable handshakes, and > > > configure the core clocks to 600 MHz and the bus clock to 800 MHz by > > > default. > > > > > > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> > > > > could you pick up this patch? The driver and binding parts have been > > merged in media/master. > > > > Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com> > Tested-by: Ezequiel Garcia <ezequiel@collabora.com> > > It looks good and it matches the downstream device tree. > > Thanks, > Ezequiel > > > regards > > Philipp > > > > > --- > > > New in v6. > > > --- > > > arch/arm64/boot/dts/freescale/imx8mq.dtsi | 27 +++++++++++++++++++++++ > > > 1 file changed, 27 insertions(+) > > > > > > diff --git a/arch/arm64/boot/dts/freescale/imx8mq.dtsi b/arch/arm64/boot/dts/freescale/imx8mq.dtsi > > > index 6a1e83922c71..98e464ecb68a 100644 > > > --- a/arch/arm64/boot/dts/freescale/imx8mq.dtsi > > > +++ b/arch/arm64/boot/dts/freescale/imx8mq.dtsi > > > @@ -666,6 +666,7 @@ > > > pgc_vpu: power-domain@6 { > > > #power-domain-cells = <0>; > > > reg = <IMX8M_POWER_DOMAIN_VPU>; > > > + clocks = <&clk IMX8MQ_CLK_VPU_DEC_ROOT>; > > > }; > > > > > > pgc_disp: power-domain@7 { > > > @@ -1130,6 +1131,32 @@ > > > status = "disabled"; > > > }; > > > > > > + vpu: video-codec@38300000 { > > > + compatible = "nxp,imx8mq-vpu"; > > > + reg = <0x38300000 0x10000>, > > > + <0x38310000 0x10000>, > > > + <0x38320000 0x10000>; > > > + reg-names = "g1", "g2", "ctrl"; > > > + interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, > > > + <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; > > > + interrupt-names = "g1", "g2"; > > > + clocks = <&clk IMX8MQ_CLK_VPU_G1_ROOT>, > > > + <&clk IMX8MQ_CLK_VPU_G2_ROOT>, > > > + <&clk IMX8MQ_CLK_VPU_DEC_ROOT>; > > > + clock-names = "g1", "g2", "bus"; > > > + assigned-clocks = <&clk IMX8MQ_CLK_VPU_G1>, > > > + <&clk IMX8MQ_CLK_VPU_G2>, > > > + <&clk IMX8MQ_CLK_VPU_BUS>, > > > + <&clk IMX8MQ_VPU_PLL_BYPASS>; > > > + assigned-clock-parents = <&clk IMX8MQ_VPU_PLL_OUT>, > > > + <&clk IMX8MQ_VPU_PLL_OUT>, > > > + <&clk IMX8MQ_SYS1_PLL_800M>, > > > + <&clk IMX8MQ_VPU_PLL>; > > > + assigned-clock-rates = <600000000>, <600000000>, > > > + <800000000>, <0>; > > > + power-domains = <&pgc_vpu>; > > > + }; > > > + > > > pcie0: pcie@33800000 { > > > compatible = "fsl,imx8mq-pcie"; > > > reg = <0x33800000 0x400000>, > > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v6 3/4] arm64: dts: imx8mq: enable Hantro G1/G2 VPU 2020-03-20 13:12 ` [PATCH v6 3/4] arm64: dts: imx8mq: enable Hantro G1/G2 VPU Philipp Zabel 2020-05-27 16:19 ` Philipp Zabel @ 2020-06-16 14:07 ` Shawn Guo 1 sibling, 0 replies; 11+ messages in thread From: Shawn Guo @ 2020-06-16 14:07 UTC (permalink / raw) To: Philipp Zabel Cc: linux-media, Ezequiel Garcia, Mauro Carvalho Chehab, Hans Verkuil, Rob Herring, kernel, devicetree On Fri, Mar 20, 2020 at 02:12:55PM +0100, Philipp Zabel wrote: > Add the i.MX8MQ VPU module which comprises Hantro G1 and G2 video > decoder cores and a reset/control block. > > Hook up the bus clock to the VPU power domain to enable handshakes, and > configure the core clocks to 600 MHz and the bus clock to 800 MHz by > default. > > Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Applied, thanks. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v6 4/4] media: MAINTAINERS: add myself to co-maintain Hantro G1/G2 for i.MX8MQ 2020-03-20 13:12 [PATCH v6 0/4] Add initial i.MX8MQ support Philipp Zabel ` (2 preceding siblings ...) 2020-03-20 13:12 ` [PATCH v6 3/4] arm64: dts: imx8mq: enable Hantro G1/G2 VPU Philipp Zabel @ 2020-03-20 13:12 ` Philipp Zabel 2020-03-23 22:41 ` [PATCH v6 0/4] Add initial i.MX8MQ support Ezequiel Garcia 4 siblings, 0 replies; 11+ messages in thread From: Philipp Zabel @ 2020-03-20 13:12 UTC (permalink / raw) To: linux-media Cc: Ezequiel Garcia, Mauro Carvalho Chehab, Hans Verkuil, Rob Herring, Shawn Guo, kernel, devicetree Add path and co-maintainer entry for i.MX8MQ device tree bindings. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> --- New in v6. --- MAINTAINERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 46c95dc8ab5f..2b8b3e7f3df3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14314,10 +14314,12 @@ F: Documentation/devicetree/bindings/media/rockchip-rga.txt HANTRO VPU CODEC DRIVER M: Ezequiel Garcia <ezequiel@collabora.com> +M: Philipp Zabel <p.zabel@pengutronix.de> L: linux-media@vger.kernel.org L: linux-rockchip@lists.infradead.org S: Maintained F: drivers/staging/media/hantro/ +F: Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml F: Documentation/devicetree/bindings/media/rockchip-vpu.yaml ROCKER DRIVER -- 2.20.1 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH v6 0/4] Add initial i.MX8MQ support 2020-03-20 13:12 [PATCH v6 0/4] Add initial i.MX8MQ support Philipp Zabel ` (3 preceding siblings ...) 2020-03-20 13:12 ` [PATCH v6 4/4] media: MAINTAINERS: add myself to co-maintain Hantro G1/G2 for i.MX8MQ Philipp Zabel @ 2020-03-23 22:41 ` Ezequiel Garcia 4 siblings, 0 replies; 11+ messages in thread From: Ezequiel Garcia @ 2020-03-23 22:41 UTC (permalink / raw) To: Philipp Zabel, linux-media Cc: Mauro Carvalho Chehab, Hans Verkuil, Rob Herring, Shawn Guo, kernel, devicetree Hi Philipp, Tested on the EVK, looks great. On Fri, 2020-03-20 at 14:12 +0100, Philipp Zabel wrote: > With the i.MX8MQ decoders in active use and the i.MX8MM power domain > support still up in the air, I think it makes sense to merge i.MX8MQ > Hantro support now and accept that i.MX8MM may or may not require > different bindings. > > Patch 4 depends on [2] for the MAINTAINERS change. > Thanks a lot for stepping up and helping to maintain the driver! For all patches: Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com> > Changes since v5 [1]: > - Drop merged patches > - Drop i.MX8MM bindings > - Change example node name to video-codec > - Convert i.MX8MQ bindings to YAML > - Drop i.MX8MM support > - Rebase onto media/master > - Enable h.264 and VP8 decoding > - Enable post-processing > > [1] https://lore.kernel.org/linux-media/20190612093915.18973-1-p.zabel@pengutronix.de > [2] https://lore.kernel.org/linux-media/20200318132108.21873-9-ezequiel@collabora.com > > regards > Philipp > > Philipp Zabel (4): > media: dt-bindings: Document i.MX8MQ VPU bindings > media: hantro: add initial i.MX8MQ support > arm64: dts: imx8mq: enable Hantro G1/G2 VPU > media: MAINTAINERS: add myself to co-maintain Hantro G1/G2 for i.MX8MQ > > .../bindings/media/nxp,imx8mq-vpu.yaml | 77 ++++++ > MAINTAINERS | 2 + > arch/arm64/boot/dts/freescale/imx8mq.dtsi | 27 +++ > drivers/staging/media/hantro/Kconfig | 16 +- > drivers/staging/media/hantro/Makefile | 3 + > drivers/staging/media/hantro/hantro_drv.c | 3 + > drivers/staging/media/hantro/hantro_hw.h | 1 + > drivers/staging/media/hantro/imx8m_vpu_hw.c | 220 ++++++++++++++++++ > 8 files changed, 345 insertions(+), 4 deletions(-) > create mode 100644 Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml > create mode 100644 drivers/staging/media/hantro/imx8m_vpu_hw.c > ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2020-06-16 14:08 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-03-20 13:12 [PATCH v6 0/4] Add initial i.MX8MQ support Philipp Zabel 2020-03-20 13:12 ` [PATCH v6 1/4] media: dt-bindings: Document i.MX8MQ VPU bindings Philipp Zabel 2020-03-20 17:25 ` Rob Herring 2020-03-20 13:12 ` [PATCH v6 2/4] media: hantro: add initial i.MX8MQ support Philipp Zabel 2020-03-20 13:12 ` [PATCH v6 3/4] arm64: dts: imx8mq: enable Hantro G1/G2 VPU Philipp Zabel 2020-05-27 16:19 ` Philipp Zabel 2020-05-28 1:02 ` Ezequiel Garcia 2020-06-10 0:19 ` Ezequiel Garcia 2020-06-16 14:07 ` Shawn Guo 2020-03-20 13:12 ` [PATCH v6 4/4] media: MAINTAINERS: add myself to co-maintain Hantro G1/G2 for i.MX8MQ Philipp Zabel 2020-03-23 22:41 ` [PATCH v6 0/4] Add initial i.MX8MQ support Ezequiel Garcia
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.