forked from Minki/linux
c0da4fa0d1
-----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJZsSBoAAoJEAhfPr2O5OEVDc4QAJZSuVYmyLgvtmPxhyqgCvkz I0DmWM4ZtK2VT/xJ/AA23z8IiLKi2+pDC0Xx6/aIiA665cyl3oPUdkKIaHW9Z6+A fV8gSFkmGkluQb9mP/KdHYI2oSeEv2ivCa1kfaApYcoBa904z8uU++z15Iu5p/+m fjpc2vnc9rax0Vuwmgv7p1CL4j4e/ja0siCSCGbu2ad50KqP4ytnBooNPQOQt89D L+Av5MeGml/CTUUnAFjWfSmQ72Ht8GhoBBKc6wGoq9x3GTckDDTqy8BAqGt4UQnu fR0mb71zuSVmTjxRe7tc/74m3ReaeSHzQeHJhjdQslvNmV3RVQgk/6CCsmqNEegr rbC3glQCM+gp5YywCjRL6DCPsoqvjexLtPQjMZIGYxgSYQUyXGOxilgmj9+73761 6aOl0nqdgN+vlWzaSeDF9EQxRsc+cCq/Po8/xuPE/Pzs6zTQwU+6b+ADLf9jCyDP LTC49wOj24SoWiTlG1FTct2ogZ3h5wNPWlurBtmyiFJn+43RpsH5IW9wLilCjeiE 6JeCWEIBglCCq/TVCzETKNSaixDL6/lMQ9uRdCpIO4VLyoS6S9pZASNPBmQ1h7h/ oTjYDeWirIthNOccstbBoJQYSX62CqAIW3wq5ME6PAgM+ioiLXLYk0fV3yBKoBNW Z0SBeTcuPxWmfzuxMtik =fNM2 -----END PGP SIGNATURE----- Merge tag 'media/v4.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media Pull media updates from Mauro Carvalho Chehab: "Brazil's Independence Day pull request :-) This is one of the biggest media pull requests, with 625 patches affecting almost all parts of media (RC, DVB, V4L2, CEC, docs). This contains: - A lot of new drivers: * DVB frontends: mxl5xx, stv0910, stv6111; * camera flash: as3645a led driver; * HDMI receiver: adv748X; * camera sensor: Omnivision 6650 5M driver (ov6650); * HDMI CEC: ao-cec meson driver; * V4L2: Qualcom camss driver; * Remote controller: gpio-ir-tx, pwm-ir-tx and zx-irdec drivers. - The DDbridge DVB driver got a massive update, with makes it in sync with modern hardware from that vendor; - There's an important milestone on this series: the DVB documentation was written in 2003, but only started to be updated in 2007. It also used to contain several gaps from the time it was kept out of tree, mentioning error codes and device nodes that never existed upstream. On this series, it received a massive update: all non-deprecated digital TV APIs are now in sync with the current implementation; - Some DVB APIs that aren't used by any upstream driver got removed; - Other parts of the media documentation algo got updated, fixing some bugs on its PDF output and making it compatible with Sphinx version 1.6. As the number of hacks required to build PDF output reduced, I hope we'll have less troubles as newer versions of our documentation toolchain are released (famous last words); - As usual, lots of driver cleanups and improvements" * tag 'media/v4.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (624 commits) media: leds: as3645a: add V4L2_FLASH_LED_CLASS dependency media: get rid of removed DMX_GET_CAPS and DMX_SET_SOURCE leftovers media: Revert "[media] v4l: async: make v4l2 coexist with devicetree nodes in a dt overlay" media: staging: atomisp: sh_css_calloc shall return a pointer to the allocated space media: Revert "[media] lirc_dev: remove superfluous get/put_device() calls" media: add qcom_camss.rst to v4l-drivers rst file media: dvb headers: make checkpatch happier media: dvb uapi: move frontend legacy API to another part of the book media: pixfmt-srggb12p.rst: better format the table for PDF output media: docs-rst: media: Don't use \small for V4L2_PIX_FMT_SRGGB10 documentation media: index.rst: don't write "Contents:" on PDF output media: pixfmt*.rst: replace a two dots by a comma media: vidioc-g-fmt.rst: adjust table format media: vivid.rst: add a blank line to correct ReST format media: v4l2 uapi book: get rid of driver programming's chapter media: format.rst: use the right markup for important notes media: docs-rst: cardlists: change their format to flat-tables media: em28xx-cardlist.rst: update to reflect last changes media: v4l2-event.rst: adjust table to fit on PDF output media: docs: don't show ToC for each part on PDF output ...
176 lines
5.5 KiB
C
176 lines
5.5 KiB
C
/*
|
|
* vsp1_entity.h -- R-Car VSP1 Base Entity
|
|
*
|
|
* Copyright (C) 2013-2014 Renesas Electronics Corporation
|
|
*
|
|
* Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com)
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*/
|
|
#ifndef __VSP1_ENTITY_H__
|
|
#define __VSP1_ENTITY_H__
|
|
|
|
#include <linux/list.h>
|
|
#include <linux/mutex.h>
|
|
|
|
#include <media/v4l2-subdev.h>
|
|
|
|
struct vsp1_device;
|
|
struct vsp1_dl_list;
|
|
struct vsp1_pipeline;
|
|
struct vsp1_partition;
|
|
struct vsp1_partition_window;
|
|
|
|
enum vsp1_entity_type {
|
|
VSP1_ENTITY_BRS,
|
|
VSP1_ENTITY_BRU,
|
|
VSP1_ENTITY_CLU,
|
|
VSP1_ENTITY_HGO,
|
|
VSP1_ENTITY_HGT,
|
|
VSP1_ENTITY_HSI,
|
|
VSP1_ENTITY_HST,
|
|
VSP1_ENTITY_LIF,
|
|
VSP1_ENTITY_LUT,
|
|
VSP1_ENTITY_RPF,
|
|
VSP1_ENTITY_SRU,
|
|
VSP1_ENTITY_UDS,
|
|
VSP1_ENTITY_WPF,
|
|
};
|
|
|
|
/**
|
|
* enum vsp1_entity_params - Entity configuration parameters class
|
|
* @VSP1_ENTITY_PARAMS_INIT - Initial parameters
|
|
* @VSP1_ENTITY_PARAMS_PARTITION - Per-image partition parameters
|
|
* @VSP1_ENTITY_PARAMS_RUNTIME - Runtime-configurable parameters
|
|
*/
|
|
enum vsp1_entity_params {
|
|
VSP1_ENTITY_PARAMS_INIT,
|
|
VSP1_ENTITY_PARAMS_PARTITION,
|
|
VSP1_ENTITY_PARAMS_RUNTIME,
|
|
};
|
|
|
|
#define VSP1_ENTITY_MAX_INPUTS 5 /* For the BRU */
|
|
|
|
/*
|
|
* struct vsp1_route - Entity routing configuration
|
|
* @type: Entity type this routing entry is associated with
|
|
* @index: Entity index this routing entry is associated with
|
|
* @reg: Output routing configuration register
|
|
* @inputs: Target node value for each input
|
|
* @output: Target node value for entity output
|
|
*
|
|
* Each $vsp1_route entry describes routing configuration for the entity
|
|
* specified by the entry's @type and @index. @reg indicates the register that
|
|
* holds output routing configuration for the entity, and the @inputs array
|
|
* store the target node value for each input of the entity. The @output field
|
|
* stores the target node value of the entity output when used as a source for
|
|
* histogram generation.
|
|
*/
|
|
struct vsp1_route {
|
|
enum vsp1_entity_type type;
|
|
unsigned int index;
|
|
unsigned int reg;
|
|
unsigned int inputs[VSP1_ENTITY_MAX_INPUTS];
|
|
unsigned int output;
|
|
};
|
|
|
|
/**
|
|
* struct vsp1_entity_operations - Entity operations
|
|
* @destroy: Destroy the entity.
|
|
* @configure: Setup the hardware based on the entity state (pipeline, formats,
|
|
* selection rectangles, ...)
|
|
* @max_width: Return the max supported width of data that the entity can
|
|
* process in a single operation.
|
|
* @partition: Process the partition construction based on this entity's
|
|
* configuration.
|
|
*/
|
|
struct vsp1_entity_operations {
|
|
void (*destroy)(struct vsp1_entity *);
|
|
void (*configure)(struct vsp1_entity *, struct vsp1_pipeline *,
|
|
struct vsp1_dl_list *, enum vsp1_entity_params);
|
|
unsigned int (*max_width)(struct vsp1_entity *, struct vsp1_pipeline *);
|
|
void (*partition)(struct vsp1_entity *, struct vsp1_pipeline *,
|
|
struct vsp1_partition *, unsigned int,
|
|
struct vsp1_partition_window *);
|
|
};
|
|
|
|
struct vsp1_entity {
|
|
struct vsp1_device *vsp1;
|
|
|
|
const struct vsp1_entity_operations *ops;
|
|
|
|
enum vsp1_entity_type type;
|
|
unsigned int index;
|
|
const struct vsp1_route *route;
|
|
|
|
struct list_head list_dev;
|
|
struct list_head list_pipe;
|
|
|
|
struct media_pad *pads;
|
|
unsigned int source_pad;
|
|
|
|
struct vsp1_entity **sources;
|
|
struct vsp1_entity *sink;
|
|
unsigned int sink_pad;
|
|
|
|
struct v4l2_subdev subdev;
|
|
struct v4l2_subdev_pad_config *config;
|
|
|
|
struct mutex lock; /* Protects the pad config */
|
|
};
|
|
|
|
static inline struct vsp1_entity *to_vsp1_entity(struct v4l2_subdev *subdev)
|
|
{
|
|
return container_of(subdev, struct vsp1_entity, subdev);
|
|
}
|
|
|
|
int vsp1_entity_init(struct vsp1_device *vsp1, struct vsp1_entity *entity,
|
|
const char *name, unsigned int num_pads,
|
|
const struct v4l2_subdev_ops *ops, u32 function);
|
|
void vsp1_entity_destroy(struct vsp1_entity *entity);
|
|
|
|
extern const struct v4l2_subdev_internal_ops vsp1_subdev_internal_ops;
|
|
|
|
int vsp1_entity_link_setup(struct media_entity *entity,
|
|
const struct media_pad *local,
|
|
const struct media_pad *remote, u32 flags);
|
|
|
|
struct v4l2_subdev_pad_config *
|
|
vsp1_entity_get_pad_config(struct vsp1_entity *entity,
|
|
struct v4l2_subdev_pad_config *cfg,
|
|
enum v4l2_subdev_format_whence which);
|
|
struct v4l2_mbus_framefmt *
|
|
vsp1_entity_get_pad_format(struct vsp1_entity *entity,
|
|
struct v4l2_subdev_pad_config *cfg,
|
|
unsigned int pad);
|
|
struct v4l2_rect *
|
|
vsp1_entity_get_pad_selection(struct vsp1_entity *entity,
|
|
struct v4l2_subdev_pad_config *cfg,
|
|
unsigned int pad, unsigned int target);
|
|
int vsp1_entity_init_cfg(struct v4l2_subdev *subdev,
|
|
struct v4l2_subdev_pad_config *cfg);
|
|
|
|
void vsp1_entity_route_setup(struct vsp1_entity *entity,
|
|
struct vsp1_pipeline *pipe,
|
|
struct vsp1_dl_list *dl);
|
|
|
|
struct media_pad *vsp1_entity_remote_pad(struct media_pad *pad);
|
|
|
|
int vsp1_subdev_get_pad_format(struct v4l2_subdev *subdev,
|
|
struct v4l2_subdev_pad_config *cfg,
|
|
struct v4l2_subdev_format *fmt);
|
|
int vsp1_subdev_enum_mbus_code(struct v4l2_subdev *subdev,
|
|
struct v4l2_subdev_pad_config *cfg,
|
|
struct v4l2_subdev_mbus_code_enum *code,
|
|
const unsigned int *codes, unsigned int ncodes);
|
|
int vsp1_subdev_enum_frame_size(struct v4l2_subdev *subdev,
|
|
struct v4l2_subdev_pad_config *cfg,
|
|
struct v4l2_subdev_frame_size_enum *fse,
|
|
unsigned int min_w, unsigned int min_h,
|
|
unsigned int max_w, unsigned int max_h);
|
|
|
|
#endif /* __VSP1_ENTITY_H__ */
|