![Kieran Bingham](/assets/img/avatar_default.png)
Adapt the dl->body0 object to use an object from the body pool. This greatly reduces the pressure on the TLB for IPMMU use cases, as all of the lists use a single allocation for the main body. The CLU and LUT objects pre-allocate a pool containing three bodies, allowing a userspace update before the hardware has committed a previous set of tables. Bodies are no longer 'freed' in interrupt context, but instead released back to their respective pools. This allows us to remove the garbage collector in the DLM. Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
43 lines
861 B
C
43 lines
861 B
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* vsp1_lut.h -- R-Car VSP1 Look-Up Table
|
|
*
|
|
* Copyright (C) 2013 Renesas Corporation
|
|
*
|
|
* Contact: Laurent Pinchart (laurent.pinchart@ideasonboard.com)
|
|
*/
|
|
#ifndef __VSP1_LUT_H__
|
|
#define __VSP1_LUT_H__
|
|
|
|
#include <linux/spinlock.h>
|
|
|
|
#include <media/media-entity.h>
|
|
#include <media/v4l2-ctrls.h>
|
|
#include <media/v4l2-subdev.h>
|
|
|
|
#include "vsp1_entity.h"
|
|
|
|
struct vsp1_device;
|
|
|
|
#define LUT_PAD_SINK 0
|
|
#define LUT_PAD_SOURCE 1
|
|
|
|
struct vsp1_lut {
|
|
struct vsp1_entity entity;
|
|
|
|
struct v4l2_ctrl_handler ctrls;
|
|
|
|
spinlock_t lock;
|
|
struct vsp1_dl_body *lut;
|
|
struct vsp1_dl_body_pool *pool;
|
|
};
|
|
|
|
static inline struct vsp1_lut *to_lut(struct v4l2_subdev *subdev)
|
|
{
|
|
return container_of(subdev, struct vsp1_lut, entity.subdev);
|
|
}
|
|
|
|
struct vsp1_lut *vsp1_lut_create(struct vsp1_device *vsp1);
|
|
|
|
#endif /* __VSP1_LUT_H__ */
|