From: Dmitry Osipenko <digetx@gmail.com>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: devel@driverdev.osuosl.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jonathan Hunter <jonathanh@nvidia.com>,
linux-tegra@vger.kernel.org,
Mauro Carvalho Chehab <mchehab@kernel.org>,
linux-media@vger.kernel.org
Subject: Re: [PATCH 03/14] staging: media: tegra-vde: Prepare for interlacing support
Date: Sat, 18 Aug 2018 15:48:03 +0300 [thread overview]
Message-ID: <3904829.12OiKbgMWx@dimapc> (raw)
In-Reply-To: <20180813145027.16346-4-thierry.reding@gmail.com>
On Monday, 13 August 2018 17:50:16 MSK Thierry Reding wrote:
> From: Thierry Reding <treding@nvidia.com>
>
> The number of frames doubles when decoding interlaced content and the
> structures describing the frames double in size. Take that into account
> to prepare for interlacing support.
>
> Signed-off-by: Thierry Reding <treding@nvidia.com>
> ---
> drivers/staging/media/tegra-vde/tegra-vde.c | 73 ++++++++++++++++-----
> 1 file changed, 58 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/staging/media/tegra-vde/tegra-vde.c
> b/drivers/staging/media/tegra-vde/tegra-vde.c index
> 3027b11b11ae..1a40f6dff7c8 100644
> --- a/drivers/staging/media/tegra-vde/tegra-vde.c
> +++ b/drivers/staging/media/tegra-vde/tegra-vde.c
> @@ -61,7 +61,9 @@ struct video_frame {
> };
>
> struct tegra_vde_soc {
> + unsigned int num_ref_pics;
> bool supports_ref_pic_marking;
> + bool supports_interlacing;
> };
>
> struct tegra_vde {
> @@ -205,8 +207,12 @@ static void tegra_vde_setup_frameid(struct tegra_vde
> *vde, u32 cr_addr = frame ? frame->cr_addr : 0x6CDEAD00;
> u32 value1 = frame ? ((mbs_width << 16) | mbs_height) : 0;
> u32 value2 = frame ? ((((mbs_width + 1) >> 1) << 6) | 1) : 0;
> + u32 value = y_addr >> 8;
Let's name it value0 for consistency.
>
> - VDE_WR(y_addr >> 8, vde->frameid + 0x000 + frameid * 4);
> + if (vde->soc->supports_interlacing)
> + value |= BIT(31);
> +
> + VDE_WR(value, vde->frameid + 0x000 + frameid * 4);
> VDE_WR(cb_addr >> 8, vde->frameid + 0x100 + frameid * 4);
> VDE_WR(cr_addr >> 8, vde->frameid + 0x180 + frameid * 4);
> VDE_WR(value1, vde->frameid + 0x080 + frameid * 4);
> @@ -229,20 +235,23 @@ static void tegra_setup_frameidx(struct tegra_vde
> *vde, }
>
> static void tegra_vde_setup_iram_entry(struct tegra_vde *vde,
> + unsigned int num_ref_pics,
> unsigned int table,
> unsigned int row,
> u32 value1, u32 value2)
> {
> + unsigned int entries = num_ref_pics * 2;
> u32 *iram_tables = vde->iram;
>
> dev_dbg(vde->miscdev.parent, "IRAM table %u: row %u: 0x%08X 0x%08X\n",
> table, row, value1, value2);
>
> - iram_tables[0x20 * table + row * 2] = value1;
> - iram_tables[0x20 * table + row * 2 + 1] = value2;
> + iram_tables[entries * table + row * 2] = value1;
> + iram_tables[entries * table + row * 2 + 1] = value2;
> }
>
> static void tegra_vde_setup_iram_tables(struct tegra_vde *vde,
> + unsigned int num_ref_pics,
> struct video_frame *dpb_frames,
> unsigned int ref_frames_nb,
> unsigned int with_earlier_poc_nb)
> @@ -251,13 +260,17 @@ static void tegra_vde_setup_iram_tables(struct
> tegra_vde *vde, u32 value, aux_addr;
> int with_later_poc_nb;
> unsigned int i, k;
> + size_t size;
> +
> + size = num_ref_pics * 4 * 8;
> + memset(vde->iram, 0, size);
Is this memset() really needed or it is just because you're feeling
uncomfortable that something is kept uninitialized?
>
> dev_dbg(vde->miscdev.parent, "DPB: Frame 0: frame_num = %d\n",
> dpb_frames[0].frame_num);
>
> dev_dbg(vde->miscdev.parent, "REF L0:\n");
>
> - for (i = 0; i < 16; i++) {
> + for (i = 0; i < num_ref_pics; i++) {
> if (i < ref_frames_nb) {
> frame = &dpb_frames[i + 1];
>
> @@ -277,10 +290,14 @@ static void tegra_vde_setup_iram_tables(struct
> tegra_vde *vde, value = 0;
> }
>
> - tegra_vde_setup_iram_entry(vde, 0, i, value, aux_addr);
> - tegra_vde_setup_iram_entry(vde, 1, i, value, aux_addr);
> - tegra_vde_setup_iram_entry(vde, 2, i, value, aux_addr);
> - tegra_vde_setup_iram_entry(vde, 3, i, value, aux_addr);
> + tegra_vde_setup_iram_entry(vde, num_ref_pics, 0, i, value,
> + aux_addr);
> + tegra_vde_setup_iram_entry(vde, num_ref_pics, 1, i, value,
> + aux_addr);
> + tegra_vde_setup_iram_entry(vde, num_ref_pics, 2, i, value,
> + aux_addr);
> + tegra_vde_setup_iram_entry(vde, num_ref_pics, 3, i, value,
> + aux_addr);
> }
>
> if (!(dpb_frames[0].flags & FLAG_B_FRAME))
> @@ -309,7 +326,8 @@ static void tegra_vde_setup_iram_tables(struct tegra_vde
> *vde, "\tFrame %d: frame_num = %d\n",
> k + 1, frame->frame_num);
>
> - tegra_vde_setup_iram_entry(vde, 2, i, value, aux_addr);
> + tegra_vde_setup_iram_entry(vde, num_ref_pics, 2, i, value,
> + aux_addr);
> }
>
> for (k = 0; i < ref_frames_nb; i++, k++) {
> @@ -326,7 +344,8 @@ static void tegra_vde_setup_iram_tables(struct tegra_vde
> *vde, "\tFrame %d: frame_num = %d\n",
> k + 1, frame->frame_num);
>
> - tegra_vde_setup_iram_entry(vde, 2, i, value, aux_addr);
> + tegra_vde_setup_iram_entry(vde, num_ref_pics, 2, i, value,
> + aux_addr);
> }
> }
>
> @@ -339,9 +358,20 @@ static int tegra_vde_setup_hw_context(struct tegra_vde
> *vde, unsigned int macroblocks_nb)
> {
> struct device *dev = vde->miscdev.parent;
> + unsigned int num_ref_pics = 16;
> + /* XXX extend ABI to provide this */
> + bool interlaced = false;
> + size_t size;
> u32 value;
> int err;
>
> + if (vde->soc->supports_interlacing) {
> + if (interlaced)
> + num_ref_pics = vde->soc->num_ref_pics;
> + else
> + num_ref_pics = 16;
> + }
> +
> tegra_vde_set_bits(vde, 0x000A, vde->sxe + 0xF0);
> tegra_vde_set_bits(vde, 0x000B, vde->bsev + CMDQUE_CONTROL);
> tegra_vde_set_bits(vde, 0x8002, vde->mbe + 0x50);
> @@ -369,12 +399,12 @@ static int tegra_vde_setup_hw_context(struct tegra_vde
> *vde, VDE_WR(0x00000000, vde->bsev + 0x98);
> VDE_WR(0x00000060, vde->bsev + 0x9C);
>
> - memset(vde->iram + 128, 0, macroblocks_nb / 2);
> + memset(vde->iram + 1024, 0, macroblocks_nb / 2);
This is wrong and breaks everything because type of vde->iram is (*u32), hence
+1024 is equal to offset 4096 and below in the code that offset is set to
vde>iram_lists_addr + 1024. So that should be:
memset(vde->iram + 256, 0, macroblocks_nb / 2);
Probably we should put that hardcoded offset into a slice_group_map_offset
variable for clarity, like this:
unsigned int slice_group_map_offset = 1024;
..
memset(vde->iram + slice_group_map_offset / sizeof(u32), 0,
macroblocks_nb / 2);
..
/*
* Reference pictures list lays at the beginning of IRAM allocation,
* slice group mapping is put afterwards of the list.
*/
value |= ((vde->iram_lists_addr + slice_group_map_offset) >> 2) & 0xffff;
>
> tegra_setup_frameidx(vde, dpb_frames, ctx->dpb_frames_nb,
> ctx->pic_width_in_mbs, ctx->pic_height_in_mbs);
>
> - tegra_vde_setup_iram_tables(vde, dpb_frames,
> + tegra_vde_setup_iram_tables(vde, num_ref_pics, dpb_frames,
> ctx->dpb_frames_nb - 1,
> ctx->dpb_ref_frames_with_earlier_poc_nb);
>
> @@ -396,22 +426,27 @@ static int tegra_vde_setup_hw_context(struct tegra_vde
> *vde, if (err)
> return err;
>
> - err = tegra_vde_push_to_bsev_icmdqueue(vde, 0x800003FC, false);
> + value = (0x20 << 26) | (0 << 25) | ((4096 >> 2) & 0x1fff);
> + err = tegra_vde_push_to_bsev_icmdqueue(vde, value, false);
> if (err)
> return err;
>
> value = 0x01500000;
> - value |= ((vde->iram_lists_addr + 512) >> 2) & 0xFFFF;
> + value |= ((vde->iram_lists_addr + 1024) >> 2) & 0xffff;
>
> err = tegra_vde_push_to_bsev_icmdqueue(vde, value, true);
> if (err)
> return err;
>
> + value = (0x21 << 26) | ((240 & 0x1fff) << 12) | (0x54c & 0xfff);
> err = tegra_vde_push_to_bsev_icmdqueue(vde, 0x840F054C, false);
err = tegra_vde_push_to_bsev_icmdqueue(vde, value, false);
> if (err)
> return err;
>
> - err = tegra_vde_push_to_bsev_icmdqueue(vde, 0x80000080, false);
> + size = num_ref_pics * 4 * 8;
> +
> + value = (0x20 << 26) | (0x0 << 25) | ((size >> 2) & 0x1fff);
> + err = tegra_vde_push_to_bsev_icmdqueue(vde, value, false);
> if (err)
> return err;
>
> @@ -1290,19 +1325,27 @@ static const struct dev_pm_ops tegra_vde_pm_ops = {
> };
>
> static const struct tegra_vde_soc tegra20_vde_soc = {
> + .num_ref_pics = 16,
> .supports_ref_pic_marking = false,
> + .supports_interlacing = false,
> };
>
> static const struct tegra_vde_soc tegra30_vde_soc = {
> + .num_ref_pics = 32,
> .supports_ref_pic_marking = false,
> + .supports_interlacing = false,
> };
>
> static const struct tegra_vde_soc tegra114_vde_soc = {
> + .num_ref_pics = 32,
> .supports_ref_pic_marking = true,
> + .supports_interlacing = false,
> };
>
> static const struct tegra_vde_soc tegra124_vde_soc = {
> + .num_ref_pics = 32,
> .supports_ref_pic_marking = true,
> + .supports_interlacing = true,
> };
>
> static const struct of_device_id tegra_vde_of_match[] = {
WARNING: multiple messages have this Message-ID (diff)
From: Dmitry Osipenko <digetx@gmail.com>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jonathan Hunter <jonathanh@nvidia.com>,
linux-media@vger.kernel.org, linux-tegra@vger.kernel.org,
devel@driverdev.osuosl.org
Subject: Re: [PATCH 03/14] staging: media: tegra-vde: Prepare for interlacing support
Date: Sat, 18 Aug 2018 15:48:03 +0300 [thread overview]
Message-ID: <3904829.12OiKbgMWx@dimapc> (raw)
In-Reply-To: <20180813145027.16346-4-thierry.reding@gmail.com>
On Monday, 13 August 2018 17:50:16 MSK Thierry Reding wrote:
> From: Thierry Reding <treding@nvidia.com>
>
> The number of frames doubles when decoding interlaced content and the
> structures describing the frames double in size. Take that into account
> to prepare for interlacing support.
>
> Signed-off-by: Thierry Reding <treding@nvidia.com>
> ---
> drivers/staging/media/tegra-vde/tegra-vde.c | 73 ++++++++++++++++-----
> 1 file changed, 58 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/staging/media/tegra-vde/tegra-vde.c
> b/drivers/staging/media/tegra-vde/tegra-vde.c index
> 3027b11b11ae..1a40f6dff7c8 100644
> --- a/drivers/staging/media/tegra-vde/tegra-vde.c
> +++ b/drivers/staging/media/tegra-vde/tegra-vde.c
> @@ -61,7 +61,9 @@ struct video_frame {
> };
>
> struct tegra_vde_soc {
> + unsigned int num_ref_pics;
> bool supports_ref_pic_marking;
> + bool supports_interlacing;
> };
>
> struct tegra_vde {
> @@ -205,8 +207,12 @@ static void tegra_vde_setup_frameid(struct tegra_vde
> *vde, u32 cr_addr = frame ? frame->cr_addr : 0x6CDEAD00;
> u32 value1 = frame ? ((mbs_width << 16) | mbs_height) : 0;
> u32 value2 = frame ? ((((mbs_width + 1) >> 1) << 6) | 1) : 0;
> + u32 value = y_addr >> 8;
Let's name it value0 for consistency.
>
> - VDE_WR(y_addr >> 8, vde->frameid + 0x000 + frameid * 4);
> + if (vde->soc->supports_interlacing)
> + value |= BIT(31);
> +
> + VDE_WR(value, vde->frameid + 0x000 + frameid * 4);
> VDE_WR(cb_addr >> 8, vde->frameid + 0x100 + frameid * 4);
> VDE_WR(cr_addr >> 8, vde->frameid + 0x180 + frameid * 4);
> VDE_WR(value1, vde->frameid + 0x080 + frameid * 4);
> @@ -229,20 +235,23 @@ static void tegra_setup_frameidx(struct tegra_vde
> *vde, }
>
> static void tegra_vde_setup_iram_entry(struct tegra_vde *vde,
> + unsigned int num_ref_pics,
> unsigned int table,
> unsigned int row,
> u32 value1, u32 value2)
> {
> + unsigned int entries = num_ref_pics * 2;
> u32 *iram_tables = vde->iram;
>
> dev_dbg(vde->miscdev.parent, "IRAM table %u: row %u: 0x%08X 0x%08X\n",
> table, row, value1, value2);
>
> - iram_tables[0x20 * table + row * 2] = value1;
> - iram_tables[0x20 * table + row * 2 + 1] = value2;
> + iram_tables[entries * table + row * 2] = value1;
> + iram_tables[entries * table + row * 2 + 1] = value2;
> }
>
> static void tegra_vde_setup_iram_tables(struct tegra_vde *vde,
> + unsigned int num_ref_pics,
> struct video_frame *dpb_frames,
> unsigned int ref_frames_nb,
> unsigned int with_earlier_poc_nb)
> @@ -251,13 +260,17 @@ static void tegra_vde_setup_iram_tables(struct
> tegra_vde *vde, u32 value, aux_addr;
> int with_later_poc_nb;
> unsigned int i, k;
> + size_t size;
> +
> + size = num_ref_pics * 4 * 8;
> + memset(vde->iram, 0, size);
Is this memset() really needed or it is just because you're feeling
uncomfortable that something is kept uninitialized?
>
> dev_dbg(vde->miscdev.parent, "DPB: Frame 0: frame_num = %d\n",
> dpb_frames[0].frame_num);
>
> dev_dbg(vde->miscdev.parent, "REF L0:\n");
>
> - for (i = 0; i < 16; i++) {
> + for (i = 0; i < num_ref_pics; i++) {
> if (i < ref_frames_nb) {
> frame = &dpb_frames[i + 1];
>
> @@ -277,10 +290,14 @@ static void tegra_vde_setup_iram_tables(struct
> tegra_vde *vde, value = 0;
> }
>
> - tegra_vde_setup_iram_entry(vde, 0, i, value, aux_addr);
> - tegra_vde_setup_iram_entry(vde, 1, i, value, aux_addr);
> - tegra_vde_setup_iram_entry(vde, 2, i, value, aux_addr);
> - tegra_vde_setup_iram_entry(vde, 3, i, value, aux_addr);
> + tegra_vde_setup_iram_entry(vde, num_ref_pics, 0, i, value,
> + aux_addr);
> + tegra_vde_setup_iram_entry(vde, num_ref_pics, 1, i, value,
> + aux_addr);
> + tegra_vde_setup_iram_entry(vde, num_ref_pics, 2, i, value,
> + aux_addr);
> + tegra_vde_setup_iram_entry(vde, num_ref_pics, 3, i, value,
> + aux_addr);
> }
>
> if (!(dpb_frames[0].flags & FLAG_B_FRAME))
> @@ -309,7 +326,8 @@ static void tegra_vde_setup_iram_tables(struct tegra_vde
> *vde, "\tFrame %d: frame_num = %d\n",
> k + 1, frame->frame_num);
>
> - tegra_vde_setup_iram_entry(vde, 2, i, value, aux_addr);
> + tegra_vde_setup_iram_entry(vde, num_ref_pics, 2, i, value,
> + aux_addr);
> }
>
> for (k = 0; i < ref_frames_nb; i++, k++) {
> @@ -326,7 +344,8 @@ static void tegra_vde_setup_iram_tables(struct tegra_vde
> *vde, "\tFrame %d: frame_num = %d\n",
> k + 1, frame->frame_num);
>
> - tegra_vde_setup_iram_entry(vde, 2, i, value, aux_addr);
> + tegra_vde_setup_iram_entry(vde, num_ref_pics, 2, i, value,
> + aux_addr);
> }
> }
>
> @@ -339,9 +358,20 @@ static int tegra_vde_setup_hw_context(struct tegra_vde
> *vde, unsigned int macroblocks_nb)
> {
> struct device *dev = vde->miscdev.parent;
> + unsigned int num_ref_pics = 16;
> + /* XXX extend ABI to provide this */
> + bool interlaced = false;
> + size_t size;
> u32 value;
> int err;
>
> + if (vde->soc->supports_interlacing) {
> + if (interlaced)
> + num_ref_pics = vde->soc->num_ref_pics;
> + else
> + num_ref_pics = 16;
> + }
> +
> tegra_vde_set_bits(vde, 0x000A, vde->sxe + 0xF0);
> tegra_vde_set_bits(vde, 0x000B, vde->bsev + CMDQUE_CONTROL);
> tegra_vde_set_bits(vde, 0x8002, vde->mbe + 0x50);
> @@ -369,12 +399,12 @@ static int tegra_vde_setup_hw_context(struct tegra_vde
> *vde, VDE_WR(0x00000000, vde->bsev + 0x98);
> VDE_WR(0x00000060, vde->bsev + 0x9C);
>
> - memset(vde->iram + 128, 0, macroblocks_nb / 2);
> + memset(vde->iram + 1024, 0, macroblocks_nb / 2);
This is wrong and breaks everything because type of vde->iram is (*u32), hence
+1024 is equal to offset 4096 and below in the code that offset is set to
vde>iram_lists_addr + 1024. So that should be:
memset(vde->iram + 256, 0, macroblocks_nb / 2);
Probably we should put that hardcoded offset into a slice_group_map_offset
variable for clarity, like this:
unsigned int slice_group_map_offset = 1024;
..
memset(vde->iram + slice_group_map_offset / sizeof(u32), 0,
macroblocks_nb / 2);
..
/*
* Reference pictures list lays at the beginning of IRAM allocation,
* slice group mapping is put afterwards of the list.
*/
value |= ((vde->iram_lists_addr + slice_group_map_offset) >> 2) & 0xffff;
>
> tegra_setup_frameidx(vde, dpb_frames, ctx->dpb_frames_nb,
> ctx->pic_width_in_mbs, ctx->pic_height_in_mbs);
>
> - tegra_vde_setup_iram_tables(vde, dpb_frames,
> + tegra_vde_setup_iram_tables(vde, num_ref_pics, dpb_frames,
> ctx->dpb_frames_nb - 1,
> ctx->dpb_ref_frames_with_earlier_poc_nb);
>
> @@ -396,22 +426,27 @@ static int tegra_vde_setup_hw_context(struct tegra_vde
> *vde, if (err)
> return err;
>
> - err = tegra_vde_push_to_bsev_icmdqueue(vde, 0x800003FC, false);
> + value = (0x20 << 26) | (0 << 25) | ((4096 >> 2) & 0x1fff);
> + err = tegra_vde_push_to_bsev_icmdqueue(vde, value, false);
> if (err)
> return err;
>
> value = 0x01500000;
> - value |= ((vde->iram_lists_addr + 512) >> 2) & 0xFFFF;
> + value |= ((vde->iram_lists_addr + 1024) >> 2) & 0xffff;
>
> err = tegra_vde_push_to_bsev_icmdqueue(vde, value, true);
> if (err)
> return err;
>
> + value = (0x21 << 26) | ((240 & 0x1fff) << 12) | (0x54c & 0xfff);
> err = tegra_vde_push_to_bsev_icmdqueue(vde, 0x840F054C, false);
err = tegra_vde_push_to_bsev_icmdqueue(vde, value, false);
> if (err)
> return err;
>
> - err = tegra_vde_push_to_bsev_icmdqueue(vde, 0x80000080, false);
> + size = num_ref_pics * 4 * 8;
> +
> + value = (0x20 << 26) | (0x0 << 25) | ((size >> 2) & 0x1fff);
> + err = tegra_vde_push_to_bsev_icmdqueue(vde, value, false);
> if (err)
> return err;
>
> @@ -1290,19 +1325,27 @@ static const struct dev_pm_ops tegra_vde_pm_ops = {
> };
>
> static const struct tegra_vde_soc tegra20_vde_soc = {
> + .num_ref_pics = 16,
> .supports_ref_pic_marking = false,
> + .supports_interlacing = false,
> };
>
> static const struct tegra_vde_soc tegra30_vde_soc = {
> + .num_ref_pics = 32,
> .supports_ref_pic_marking = false,
> + .supports_interlacing = false,
> };
>
> static const struct tegra_vde_soc tegra114_vde_soc = {
> + .num_ref_pics = 32,
> .supports_ref_pic_marking = true,
> + .supports_interlacing = false,
> };
>
> static const struct tegra_vde_soc tegra124_vde_soc = {
> + .num_ref_pics = 32,
> .supports_ref_pic_marking = true,
> + .supports_interlacing = true,
> };
>
> static const struct of_device_id tegra_vde_of_match[] = {
next prev parent reply other threads:[~2018-08-18 12:48 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-13 14:50 [PATCH 00/14] staging: media: tegra-vdea: Add Tegra124 support Thierry Reding
2018-08-13 14:50 ` Thierry Reding
2018-08-13 14:50 ` [PATCH 01/14] staging: media: tegra-vde: Support BSEV clock and reset Thierry Reding
2018-08-13 14:50 ` Thierry Reding
2018-08-13 15:09 ` Dmitry Osipenko
2018-08-13 15:09 ` Dmitry Osipenko
2018-08-14 14:21 ` Thierry Reding
2018-08-14 14:21 ` Thierry Reding
2018-08-14 15:05 ` Dmitry Osipenko
2018-08-14 15:05 ` Dmitry Osipenko
2018-08-14 15:16 ` Dmitry Osipenko
2018-08-14 15:16 ` Dmitry Osipenko
2018-08-13 14:50 ` [PATCH 02/14] staging: media: tegra-vde: Support reference picture marking Thierry Reding
2018-08-13 14:50 ` Thierry Reding
2018-08-18 12:48 ` Dmitry Osipenko
2018-08-18 12:48 ` Dmitry Osipenko
2018-08-13 14:50 ` [PATCH 03/14] staging: media: tegra-vde: Prepare for interlacing support Thierry Reding
2018-08-13 14:50 ` Thierry Reding
2018-08-18 12:48 ` Dmitry Osipenko [this message]
2018-08-18 12:48 ` Dmitry Osipenko
2018-08-30 8:56 ` Dan Carpenter
2018-08-30 8:56 ` Dan Carpenter
2018-08-13 14:50 ` [PATCH 04/14] staging: media: tegra-vde: Use DRM/KMS framebuffer modifiers Thierry Reding
2018-08-13 14:50 ` Thierry Reding
2018-08-18 12:53 ` Dmitry Osipenko
2018-08-18 12:53 ` Dmitry Osipenko
2018-08-13 14:50 ` [PATCH 05/14] staging: media: tegra-vde: Properly mark invalid entries Thierry Reding
2018-08-13 14:50 ` Thierry Reding
2018-08-18 12:45 ` Dmitry Osipenko
2018-08-18 12:45 ` Dmitry Osipenko
2018-08-13 14:50 ` [PATCH 06/14] staging: media: tegra-vde: Print out invalid FD Thierry Reding
2018-08-13 14:50 ` Thierry Reding
2018-08-18 12:45 ` Dmitry Osipenko
2018-08-18 12:45 ` Dmitry Osipenko
2018-08-13 14:50 ` [PATCH 07/14] staging: media: tegra-vde: Add some clarifying comments Thierry Reding
2018-08-13 14:50 ` Thierry Reding
2018-08-18 12:50 ` Dmitry Osipenko
2018-08-18 12:50 ` Dmitry Osipenko
2018-08-13 14:50 ` [PATCH 08/14] staging: media: tegra-vde: Track struct device * Thierry Reding
2018-08-13 14:50 ` Thierry Reding
2018-08-18 12:49 ` Dmitry Osipenko
2018-08-18 12:49 ` Dmitry Osipenko
2018-08-18 15:39 ` Dmitry Osipenko
2018-08-18 15:39 ` Dmitry Osipenko
2018-08-13 14:50 ` [PATCH 09/14] staging: media: tegra-vde: Add IOMMU support Thierry Reding
2018-08-13 14:50 ` Thierry Reding
2018-08-18 12:50 ` Dmitry Osipenko
2018-08-18 12:50 ` Dmitry Osipenko
2018-08-18 13:07 ` Dmitry Osipenko
2018-08-18 13:07 ` Dmitry Osipenko
2018-08-18 13:29 ` Dmitry Osipenko
2018-08-18 13:29 ` Dmitry Osipenko
2018-08-13 14:50 ` [PATCH 10/14] staging: media: tegra-vde: Keep VDE in reset when unused Thierry Reding
2018-08-13 14:50 ` Thierry Reding
2018-08-18 12:50 ` Dmitry Osipenko
2018-08-18 12:50 ` Dmitry Osipenko
2018-08-13 14:50 ` [PATCH 11/14] ARM: tegra: Enable VDE on Tegra124 Thierry Reding
2018-08-13 14:50 ` Thierry Reding
2018-08-18 12:45 ` Dmitry Osipenko
2018-08-18 12:45 ` Dmitry Osipenko
2018-08-13 14:50 ` [PATCH 12/14] ARM: tegra: Add BSEV clock and reset for VDE on Tegra20 Thierry Reding
2018-08-13 14:50 ` Thierry Reding
2018-08-13 14:50 ` [PATCH 13/14] ARM: tegra: Add BSEV clock and reset for VDE on Tegra30 Thierry Reding
2018-08-13 14:50 ` Thierry Reding
2018-08-13 14:50 ` [PATCH 14/14] ARM: tegra: Enable SMMU for VDE on Tegra124 Thierry Reding
2018-08-13 14:50 ` Thierry Reding
2018-08-18 12:45 ` Dmitry Osipenko
2018-08-18 12:45 ` Dmitry Osipenko
2018-09-03 12:18 ` [PATCH 00/14] staging: media: tegra-vdea: Add Tegra124 support Hans Verkuil
2018-09-03 12:18 ` Hans Verkuil
2018-09-03 13:12 ` Thierry Reding
2018-09-03 13:12 ` Thierry Reding
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3904829.12OiKbgMWx@dimapc \
--to=digetx@gmail.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=jonathanh@nvidia.com \
--cc=linux-media@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=thierry.reding@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.