89 lines · c
1/* SPDX-License-Identifier: GPL-2.0+ */2/*3 * vsp1_rwpf.h -- R-Car VSP1 Read and Write Pixel Formatters4 *5 * Copyright (C) 2013-2014 Renesas Electronics Corporation6 *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 022#define RWPF_PAD_SOURCE 123 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 82void vsp1_wpf_stop(struct vsp1_rwpf *wpf);83 84int vsp1_rwpf_init_ctrls(struct vsp1_rwpf *rwpf, unsigned int ncontrols);85 86extern const struct v4l2_subdev_ops vsp1_rwpf_subdev_ops;87 88#endif /* __VSP1_RWPF_H__ */89