mbox series

[v6,0/9] Qualcomm video decoder/encoder driver

Message ID 1486473024-21705-1-git-send-email-stanimir.varbanov@linaro.org
Headers show
Series Qualcomm video decoder/encoder driver | expand

Message

Stanimir Varbanov Feb. 7, 2017, 1:10 p.m. UTC
Hi all,

Here is sixth version of the patchset - no functional changes in
v4l2 APIs.

The changes since v5 are mainly related to support Venus IP on
msm8996 SoCs.
  * changes in DT binding document - added three DT subnodes
    video-decoder, video-encoder and video-firmware see 2/9.
  * splitting up the driver on three platform drivers called
    venus-core, venus-enc and venus-dec to satisfy requirement for
    Venus core on msm8996 SoCs where core, decoder and encoder have
    separate power-domains and clocks. 
  * moved part of the firmware loader in the venus-core driver
    (removed previous remoteproc API).
  * fixed various issues.

Build dependencies:
  - qcom_scm_set_remote_state is in linux-next
  - qcom mdt_loader will be soon in linux-next

regards,
Stan
  
Stanimir Varbanov (9):
  media: v4l2-mem2mem: extend m2m APIs for more accurate buffer
    management
  doc: DT: venus: binding document for Qualcomm video driver
  MAINTAINERS: Add Qualcomm Venus video accelerator driver
  media: venus: adding core part and helper functions
  media: venus: vdec: add video decoder files
  media: venus: venc: add video encoder files
  media: venus: hfi: add Host Firmware Interface (HFI)
  media: venus: hfi: add Venus HFI files
  media: venus: enable building of Venus video driver

 .../devicetree/bindings/media/qcom,venus.txt       |  112 ++
 MAINTAINERS                                        |    8 +
 drivers/media/platform/Kconfig                     |   14 +
 drivers/media/platform/Makefile                    |    2 +
 drivers/media/platform/qcom/venus/Makefile         |   11 +
 drivers/media/platform/qcom/venus/core.c           |  368 +++++
 drivers/media/platform/qcom/venus/core.h           |  303 ++++
 drivers/media/platform/qcom/venus/firmware.c       |  151 ++
 drivers/media/platform/qcom/venus/firmware.h       |   22 +
 drivers/media/platform/qcom/venus/helpers.c        |  640 ++++++++
 drivers/media/platform/qcom/venus/helpers.h        |   41 +
 drivers/media/platform/qcom/venus/hfi.c            |  506 +++++++
 drivers/media/platform/qcom/venus/hfi.h            |  174 +++
 drivers/media/platform/qcom/venus/hfi_cmds.c       | 1256 ++++++++++++++++
 drivers/media/platform/qcom/venus/hfi_cmds.h       |  304 ++++
 drivers/media/platform/qcom/venus/hfi_helper.h     | 1045 +++++++++++++
 drivers/media/platform/qcom/venus/hfi_msgs.c       | 1057 +++++++++++++
 drivers/media/platform/qcom/venus/hfi_msgs.h       |  283 ++++
 drivers/media/platform/qcom/venus/hfi_venus.c      | 1574 ++++++++++++++++++++
 drivers/media/platform/qcom/venus/hfi_venus.h      |   23 +
 drivers/media/platform/qcom/venus/hfi_venus_io.h   |  113 ++
 drivers/media/platform/qcom/venus/vdec.c           | 1083 ++++++++++++++
 drivers/media/platform/qcom/venus/vdec.h           |   23 +
 drivers/media/platform/qcom/venus/vdec_ctrls.c     |  149 ++
 drivers/media/platform/qcom/venus/venc.c           | 1231 +++++++++++++++
 drivers/media/platform/qcom/venus/venc.h           |   23 +
 drivers/media/platform/qcom/venus/venc_ctrls.c     |  258 ++++
 drivers/media/v4l2-core/v4l2-mem2mem.c             |   37 +
 include/media/v4l2-mem2mem.h                       |   92 ++
 29 files changed, 10903 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/media/qcom,venus.txt
 create mode 100644 drivers/media/platform/qcom/venus/Makefile
 create mode 100644 drivers/media/platform/qcom/venus/core.c
 create mode 100644 drivers/media/platform/qcom/venus/core.h
 create mode 100644 drivers/media/platform/qcom/venus/firmware.c
 create mode 100644 drivers/media/platform/qcom/venus/firmware.h
 create mode 100644 drivers/media/platform/qcom/venus/helpers.c
 create mode 100644 drivers/media/platform/qcom/venus/helpers.h
 create mode 100644 drivers/media/platform/qcom/venus/hfi.c
 create mode 100644 drivers/media/platform/qcom/venus/hfi.h
 create mode 100644 drivers/media/platform/qcom/venus/hfi_cmds.c
 create mode 100644 drivers/media/platform/qcom/venus/hfi_cmds.h
 create mode 100644 drivers/media/platform/qcom/venus/hfi_helper.h
 create mode 100644 drivers/media/platform/qcom/venus/hfi_msgs.c
 create mode 100644 drivers/media/platform/qcom/venus/hfi_msgs.h
 create mode 100644 drivers/media/platform/qcom/venus/hfi_venus.c
 create mode 100644 drivers/media/platform/qcom/venus/hfi_venus.h
 create mode 100644 drivers/media/platform/qcom/venus/hfi_venus_io.h
 create mode 100644 drivers/media/platform/qcom/venus/vdec.c
 create mode 100644 drivers/media/platform/qcom/venus/vdec.h
 create mode 100644 drivers/media/platform/qcom/venus/vdec_ctrls.c
 create mode 100644 drivers/media/platform/qcom/venus/venc.c
 create mode 100644 drivers/media/platform/qcom/venus/venc.h
 create mode 100644 drivers/media/platform/qcom/venus/venc_ctrls.c

-- 
2.7.4

Comments

Stanimir Varbanov Feb. 8, 2017, 3:01 p.m. UTC | #1
Bjorn, thanks for the comments!

On 02/08/2017 01:32 AM, Bjorn Andersson wrote:
> On Tue 07 Feb 05:10 PST 2017, Stanimir Varbanov wrote:

> 

>>  * firmware loader

>>

> 

> I like the way this turns out, just some style comments below.

> 

> [..]

>> diff --git a/drivers/media/platform/qcom/venus/firmware.c b/drivers/media/platform/qcom/venus/firmware.c

>> new file mode 100644

>> index 000000000000..4057696abaf5

>> --- /dev/null

>> +++ b/drivers/media/platform/qcom/venus/firmware.c

>> @@ -0,0 +1,151 @@

>> +/*

>> + * Copyright (C) 2017 Linaro Ltd.

>> + *

>> + * This program is free software; you can redistribute it and/or modify

>> + * it under the terms of the GNU General Public License version 2 and

>> + * only version 2 as published by the Free Software Foundation.

>> + *

>> + * This program is distributed in the hope that it will be useful,

>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of

>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

>> + * GNU General Public License for more details.

>> + *

>> + */

>> +

>> +#include <linux/dma-mapping.h>

>> +#include <linux/firmware.h>

>> +#include <linux/kernel.h>

>> +#include <linux/of.h>

>> +#include <linux/of_reserved_mem.h>

>> +#include <linux/slab.h>

>> +#include <linux/qcom_scm.h>

>> +#include <linux/soc/qcom/mdt_loader.h>

>> +

>> +#define VENUS_FIRMWARE_NAME		"venus.mdt"

>> +#define VENUS_PAS_ID			9

>> +#define VENUS_FW_MEM_SIZE		SZ_8M

>> +

>> +struct firmware_mem {

>> +	struct device dev;

>> +	void *mem_va;

>> +	phys_addr_t mem_phys;

>> +	size_t mem_size;

>> +};

>> +

>> +static struct firmware_mem fw;

> 

> Rather than operating on a global variable I think you should either

> return your firmware_mem pointer or the device pointer to the caller of

> venus_boot() and have the core pass that back into venus_shutdown().


I will take your comments and will pass struct device *fw_dev as an
argument of venus_boot. Also I will move memory allocation in venus_boot
and by that way I don't need to keep memory attributes from above structure.

-- 
regards,
Stan