cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

vsp1_rwpf.h (1961B)


      1/* SPDX-License-Identifier: GPL-2.0+ */
      2/*
      3 * vsp1_rwpf.h  --  R-Car VSP1 Read and Write Pixel Formatters
      4 *
      5 * Copyright (C) 2013-2014 Renesas Electronics Corporation
      6 *
      7 * Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com)
      8 */
      9#ifndef __VSP1_RWPF_H__
     10#define __VSP1_RWPF_H__
     11
     12#include <linux/spinlock.h>
     13
     14#include <media/media-entity.h>
     15#include <media/v4l2-ctrls.h>
     16#include <media/v4l2-subdev.h>
     17
     18#include "vsp1.h"
     19#include "vsp1_entity.h"
     20
     21#define RWPF_PAD_SINK				0
     22#define RWPF_PAD_SOURCE				1
     23
     24struct v4l2_ctrl;
     25struct vsp1_dl_manager;
     26struct vsp1_rwpf;
     27struct vsp1_video;
     28
     29struct vsp1_rwpf_memory {
     30	dma_addr_t addr[3];
     31};
     32
     33struct vsp1_rwpf {
     34	struct vsp1_entity entity;
     35	struct v4l2_ctrl_handler ctrls;
     36
     37	struct vsp1_video *video;
     38
     39	unsigned int max_width;
     40	unsigned int max_height;
     41
     42	struct v4l2_pix_format_mplane format;
     43	const struct vsp1_format_info *fmtinfo;
     44	unsigned int brx_input;
     45
     46	unsigned int alpha;
     47
     48	u32 mult_alpha;
     49	u32 outfmt;
     50
     51	struct {
     52		spinlock_t lock;
     53		struct {
     54			struct v4l2_ctrl *vflip;
     55			struct v4l2_ctrl *hflip;
     56			struct v4l2_ctrl *rotate;
     57		} ctrls;
     58		unsigned int pending;
     59		unsigned int active;
     60		bool rotate;
     61	} flip;
     62
     63	struct vsp1_rwpf_memory mem;
     64	bool writeback;
     65
     66	struct vsp1_dl_manager *dlm;
     67};
     68
     69static inline struct vsp1_rwpf *to_rwpf(struct v4l2_subdev *subdev)
     70{
     71	return container_of(subdev, struct vsp1_rwpf, entity.subdev);
     72}
     73
     74static inline struct vsp1_rwpf *entity_to_rwpf(struct vsp1_entity *entity)
     75{
     76	return container_of(entity, struct vsp1_rwpf, entity);
     77}
     78
     79struct vsp1_rwpf *vsp1_rpf_create(struct vsp1_device *vsp1, unsigned int index);
     80struct vsp1_rwpf *vsp1_wpf_create(struct vsp1_device *vsp1, unsigned int index);
     81
     82int vsp1_rwpf_init_ctrls(struct vsp1_rwpf *rwpf, unsigned int ncontrols);
     83
     84extern const struct v4l2_subdev_pad_ops vsp1_rwpf_pad_ops;
     85
     86struct v4l2_rect *vsp1_rwpf_get_crop(struct vsp1_rwpf *rwpf,
     87				     struct v4l2_subdev_state *sd_state);
     88
     89#endif /* __VSP1_RWPF_H__ */