2013-06-04 11:22:30 -03:00
/*
* vsp1 . h - - R - Car VSP1 Driver
*
2014-02-06 14:42:31 -03:00
* Copyright ( C ) 2013 - 2014 Renesas Electronics Corporation
2013-06-04 11:22:30 -03: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 <linux/platform_data/vsp1.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-10 18:03:46 -03:00
struct vsp1_bru ;
2013-07-10 17:30:14 -03:00
struct vsp1_hsit ;
2013-06-04 11:22:30 -03:00
struct vsp1_lif ;
2013-07-10 12:03:30 -03:00
struct vsp1_lut ;
2013-06-04 11:22:30 -03:00
struct vsp1_rwpf ;
2013-07-10 12:03:30 -03:00
struct vsp1_sru ;
2013-06-04 11:22:30 -03:00
struct vsp1_uds ;
2014-05-27 12:59:39 -03:00
# define VSP1_MAX_RPF 5
# define VSP1_MAX_UDS 3
# define VSP1_MAX_WPF 4
2013-06-04 11:22:30 -03:00
struct vsp1_device {
struct device * dev ;
struct vsp1_platform_data * pdata ;
void __iomem * mmio ;
struct clk * clock ;
struct mutex lock ;
int ref_count ;
2013-07-10 18:03:46 -03:00
struct vsp1_bru * bru ;
2013-07-10 17:30:14 -03:00
struct vsp1_hsit * hsi ;
struct vsp1_hsit * hst ;
2013-06-04 11:22:30 -03:00
struct vsp1_lif * lif ;
2013-07-10 12:03:30 -03:00
struct vsp1_lut * lut ;
2014-05-27 12:59:39 -03:00
struct vsp1_rwpf * rpf [ VSP1_MAX_RPF ] ;
2013-07-10 12:03:30 -03:00
struct vsp1_sru * sru ;
2014-05-27 12:59:39 -03:00
struct vsp1_uds * uds [ VSP1_MAX_UDS ] ;
struct vsp1_rwpf * wpf [ VSP1_MAX_WPF ] ;
2013-06-04 11:22:30 -03:00
struct list_head entities ;
struct v4l2_device v4l2_dev ;
struct media_device media_dev ;
} ;
2014-05-31 08:50:32 -03:00
int vsp1_device_get ( struct vsp1_device * vsp1 ) ;
2013-06-04 11:22:30 -03: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__ */