2013-06-04 18:22:30 +04:00
/*
* vsp1 . h - - R - Car VSP1 Driver
*
2014-02-06 21:42:31 +04:00
* Copyright ( C ) 2013 - 2014 Renesas Electronics Corporation
2013-06-04 18:22:30 +04:00
*
* 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_H__
# define __VSP1_H__
# include <linux/io.h>
# include <linux/list.h>
# include <linux/mutex.h>
# include <media/media-device.h>
# include <media/v4l2-device.h>
# include <media/v4l2-subdev.h>
# include "vsp1_regs.h"
struct clk ;
struct device ;
struct vsp1_platform_data ;
2013-07-11 01:03:46 +04:00
struct vsp1_bru ;
2013-07-11 00:30:14 +04:00
struct vsp1_hsit ;
2013-06-04 18:22:30 +04:00
struct vsp1_lif ;
2013-07-10 19:03:30 +04:00
struct vsp1_lut ;
2013-06-04 18:22:30 +04:00
struct vsp1_rwpf ;
2013-07-10 19:03:30 +04:00
struct vsp1_sru ;
2013-06-04 18:22:30 +04:00
struct vsp1_uds ;
2014-05-27 19:59:39 +04:00
# define VSP1_MAX_RPF 5
# define VSP1_MAX_UDS 3
# define VSP1_MAX_WPF 4
2013-06-04 18:22:30 +04:00
2014-04-09 15:13:18 +04:00
# define VSP1_HAS_LIF (1 << 0)
# define VSP1_HAS_LUT (1 << 1)
# define VSP1_HAS_SRU (1 << 2)
struct vsp1_platform_data {
unsigned int features ;
unsigned int rpf_count ;
unsigned int uds_count ;
unsigned int wpf_count ;
} ;
2013-06-04 18:22:30 +04:00
struct vsp1_device {
struct device * dev ;
2014-04-09 15:13:18 +04:00
struct vsp1_platform_data pdata ;
2013-06-04 18:22:30 +04:00
void __iomem * mmio ;
struct clk * clock ;
struct mutex lock ;
int ref_count ;
2013-07-11 01:03:46 +04:00
struct vsp1_bru * bru ;
2013-07-11 00:30:14 +04:00
struct vsp1_hsit * hsi ;
struct vsp1_hsit * hst ;
2013-06-04 18:22:30 +04:00
struct vsp1_lif * lif ;
2013-07-10 19:03:30 +04:00
struct vsp1_lut * lut ;
2014-05-27 19:59:39 +04:00
struct vsp1_rwpf * rpf [ VSP1_MAX_RPF ] ;
2013-07-10 19:03:30 +04:00
struct vsp1_sru * sru ;
2014-05-27 19:59:39 +04:00
struct vsp1_uds * uds [ VSP1_MAX_UDS ] ;
struct vsp1_rwpf * wpf [ VSP1_MAX_WPF ] ;
2013-06-04 18:22:30 +04:00
struct list_head entities ;
2015-07-28 21:46:00 +03:00
struct list_head videos ;
2013-06-04 18:22:30 +04:00
struct v4l2_device v4l2_dev ;
struct media_device media_dev ;
} ;
2014-05-31 15:50:32 +04:00
int vsp1_device_get ( struct vsp1_device * vsp1 ) ;
2013-06-04 18:22:30 +04:00
void vsp1_device_put ( struct vsp1_device * vsp1 ) ;
static inline u32 vsp1_read ( struct vsp1_device * vsp1 , u32 reg )
{
return ioread32 ( vsp1 - > mmio + reg ) ;
}
static inline void vsp1_write ( struct vsp1_device * vsp1 , u32 reg , u32 data )
{
iowrite32 ( data , vsp1 - > mmio + reg ) ;
}
# endif /* __VSP1_H__ */