forked from Minki/linux
3036bc4536
-----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJbGDjcAAoJEAhfPr2O5OEV1KwP/Am2n5Ehc2W0/DLD3K7LlwgN 8JnMPWNQTCreLRgJD0/KX+HH1M+yBJ05KF/Glm7fcOKpOhWqrUbPgtiQT0GyHHBB uvmQfGJrRvCrP+1S1SeWtNhItsyWvCfDaorzsTWJYEF/F9Wtj/Sj92DC1y/BKQaR Rcs4yeCqlFEp3rjbXExanFhA3/XeMzK2sby8c51cILTZPkWI64qrHcZRWOW7+zZ6 fKEVDNOKxa7sfg8I9yaI73lBGXBpCJxLROloJ3jEtuH5gY3nR6PZdXunBC5K0+pX UH1vUeBcS/3ExQWL0zmCqHz1aYb6kzTSbIPs+NktxyzTTb8FDjT9JhV/9AxhEQfK iIxv81LRBdbEoPxbvx88sj5VVvlRla/NRv03WsXhhVDqx2SZJuNgSXw3XJtGDx3j AuUur0AQH4KMNNmwxmyn6wbhm7N63AaGbmYE2sRmaL7lk6b48BSbsUpOM5AMWzZe ZsESSsoqjRR86zFtVVzI7ZImCk16D6mNRP94Z0DQReWAJ6zS57/EYfKZ+pEQ6mww IyoJalD+pBe160fqsSo59F4k2fqzsqP4p8m29OQWFvyl7+UboMBz7FscWfyT98+R MbJolZ8QJNlOVaOusxPYLfdfjVmkHCt4E0cBZVFYIvliTGd5QiKqHAW+kTYQH0No Y0nHm4bShsUY8I9YCgsk =r/WP -----END PGP SIGNATURE----- Merge tag 'media/v4.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media Pull media updates from Mauro Carvalho Chehab: - remove of atomisp driver from staging, as nobody would have time to dedicate huge efforts to fix all the problems there. Also, we have a feeling that the driver may not even run the way it is. - move Zoran driver to staging, in order to be either fixed to use VB2 and the proper media kAPIs or to be removed - remove videobuf-dvb driver, with is unused for a while - some V4L2 documentation fixes/improvements - new sensor drivers: imx258 and ov7251 - a new driver was added to allow using I2C transparent drivers - several improvements at the ddbridge driver - several improvements at the ISDB pt1 driver, making it more coherent with the DVB framework - added a new platform driver for MIPI CSI-2 RX: cadence - now, all media drivers can be compiled on x86 with COMPILE_TEST - almost all media drivers now build on non-x86 architectures with COMPILE_TEST - lots of other random stuff: cleanups, support for new board models, bug fixes, etc * tag 'media/v4.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (464 commits) media: omap2: fix compile-testing with FB_OMAP2=m media: media/radio/Kconfig: add back RADIO_ISA media: v4l2-ioctl.c: fix missing unlock in __video_do_ioctl() media: pxa_camera: ignore -ENOIOCTLCMD from v4l2_subdev_call for s_power media: arch: sh: migor: Fix TW9910 PDN gpio media: staging: tegra-vde: Reset VDE regardless of memory client resetting failure media: marvel-ccic: mmp: select VIDEOBUF2_VMALLOC/DMA_CONTIG media: marvel-ccic: allow ccic and mmp drivers to coexist media: uvcvideo: Prevent setting unavailable flags media: ddbridge: conditionally enable fast TS for stv0910-equipped bridges media: dvb-frontends/stv0910: make TS speed configurable media: ddbridge/mci: add identifiers to function definition arguments media: ddbridge/mci: protect against out-of-bounds array access in stop() media: rc: ensure input/lirc device can be opened after register media: rc: nuvoton: Keep device enabled during reg init media: rc: nuvoton: Keep track of users on CIR enable/disable media: rc: nuvoton: Tweak the interrupt enabling dance media: uvcvideo: Support realtek's UVC 1.5 device media: uvcvideo: Fix driver reference counting media: gspca_zc3xx: Enable short exposure times for OV7648 ...
108 lines
3.0 KiB
C
108 lines
3.0 KiB
C
/*
|
|
* rcar_du_crtc.h -- R-Car Display Unit CRTCs
|
|
*
|
|
* Copyright (C) 2013-2015 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 __RCAR_DU_CRTC_H__
|
|
#define __RCAR_DU_CRTC_H__
|
|
|
|
#include <linux/mutex.h>
|
|
#include <linux/spinlock.h>
|
|
#include <linux/wait.h>
|
|
|
|
#include <drm/drmP.h>
|
|
#include <drm/drm_crtc.h>
|
|
|
|
#include <media/vsp1.h>
|
|
|
|
struct rcar_du_group;
|
|
struct rcar_du_vsp;
|
|
|
|
/**
|
|
* struct rcar_du_crtc - the CRTC, representing a DU superposition processor
|
|
* @crtc: base DRM CRTC
|
|
* @clock: the CRTC functional clock
|
|
* @extclock: external pixel dot clock (optional)
|
|
* @mmio_offset: offset of the CRTC registers in the DU MMIO block
|
|
* @index: CRTC software and hardware index
|
|
* @initialized: whether the CRTC has been initialized and clocks enabled
|
|
* @vblank_enable: whether vblank events are enabled on this CRTC
|
|
* @event: event to post when the pending page flip completes
|
|
* @flip_wait: wait queue used to signal page flip completion
|
|
* @vblank_lock: protects vblank_wait and vblank_count
|
|
* @vblank_wait: wait queue used to signal vertical blanking
|
|
* @vblank_count: number of vertical blanking interrupts to wait for
|
|
* @outputs: bitmask of the outputs (enum rcar_du_output) driven by this CRTC
|
|
* @group: CRTC group this CRTC belongs to
|
|
* @vsp: VSP feeding video to this CRTC
|
|
* @vsp_pipe: index of the VSP pipeline feeding video to this CRTC
|
|
*/
|
|
struct rcar_du_crtc {
|
|
struct drm_crtc crtc;
|
|
|
|
struct clk *clock;
|
|
struct clk *extclock;
|
|
unsigned int mmio_offset;
|
|
unsigned int index;
|
|
bool initialized;
|
|
|
|
bool vblank_enable;
|
|
struct drm_pending_vblank_event *event;
|
|
wait_queue_head_t flip_wait;
|
|
|
|
spinlock_t vblank_lock;
|
|
wait_queue_head_t vblank_wait;
|
|
unsigned int vblank_count;
|
|
|
|
unsigned int outputs;
|
|
|
|
struct rcar_du_group *group;
|
|
struct rcar_du_vsp *vsp;
|
|
unsigned int vsp_pipe;
|
|
};
|
|
|
|
#define to_rcar_crtc(c) container_of(c, struct rcar_du_crtc, crtc)
|
|
|
|
/**
|
|
* struct rcar_du_crtc_state - Driver-specific CRTC state
|
|
* @state: base DRM CRTC state
|
|
* @crc: CRC computation configuration
|
|
*/
|
|
struct rcar_du_crtc_state {
|
|
struct drm_crtc_state state;
|
|
|
|
struct vsp1_du_crc_config crc;
|
|
};
|
|
|
|
#define to_rcar_crtc_state(s) container_of(s, struct rcar_du_crtc_state, state)
|
|
|
|
enum rcar_du_output {
|
|
RCAR_DU_OUTPUT_DPAD0,
|
|
RCAR_DU_OUTPUT_DPAD1,
|
|
RCAR_DU_OUTPUT_LVDS0,
|
|
RCAR_DU_OUTPUT_LVDS1,
|
|
RCAR_DU_OUTPUT_HDMI0,
|
|
RCAR_DU_OUTPUT_HDMI1,
|
|
RCAR_DU_OUTPUT_TCON,
|
|
RCAR_DU_OUTPUT_MAX,
|
|
};
|
|
|
|
int rcar_du_crtc_create(struct rcar_du_group *rgrp, unsigned int swindex,
|
|
unsigned int hwindex);
|
|
void rcar_du_crtc_suspend(struct rcar_du_crtc *rcrtc);
|
|
void rcar_du_crtc_resume(struct rcar_du_crtc *rcrtc);
|
|
|
|
void rcar_du_crtc_route_output(struct drm_crtc *crtc,
|
|
enum rcar_du_output output);
|
|
void rcar_du_crtc_finish_page_flip(struct rcar_du_crtc *rcrtc);
|
|
|
|
#endif /* __RCAR_DU_CRTC_H__ */
|