msm_rotator.h revision 5bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404
164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#ifndef __MSM_ROTATOR_H__
264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#define __MSM_ROTATOR_H__
364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#include <linux/types.h>
564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#include <linux/msm_mdp.h>
664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#define MSM_ROTATOR_IOCTL_MAGIC 'R'
864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#define MSM_ROTATOR_IOCTL_START   \
1064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		_IOWR(MSM_ROTATOR_IOCTL_MAGIC, 1, struct msm_rotator_img_info)
1164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#define MSM_ROTATOR_IOCTL_ROTATE   \
1264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		_IOW(MSM_ROTATOR_IOCTL_MAGIC, 2, struct msm_rotator_data_info)
1364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#define MSM_ROTATOR_IOCTL_FINISH   \
1464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci		_IOW(MSM_ROTATOR_IOCTL_MAGIC, 3, int)
1564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
1664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#define ROTATOR_VERSION_01	0xA5B4C301
1764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
1864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcienum rotator_clk_type {
1964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	ROTATOR_CORE_CLK,
2064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	ROTATOR_PCLK,
2164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	ROTATOR_IMEM_CLK
2264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci};
2364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
2464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistruct msm_rotator_img_info {
2564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	unsigned int session_id;
2664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	struct msmfb_img  src;
2764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	struct msmfb_img  dst;
2864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	struct mdp_rect src_rect;
2964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	unsigned int    dst_x;
3064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	unsigned int    dst_y;
3164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	unsigned char   rotations;
3264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	int enable;
3364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	unsigned int	downscale_ratio;
3464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	unsigned int secure;
3564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci};
3664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
3764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistruct msm_rotator_data_info {
3864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	int session_id;
3964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	struct msmfb_data src;
4064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	struct msmfb_data dst;
4164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	unsigned int version_key;
42382ddccb550e1c822ef26a0e65988998f7446624Max Cai	struct msmfb_data src_chroma;
4364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	struct msmfb_data dst_chroma;
4464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci};
4564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
4664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistruct msm_rot_clocks {
4764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	const char *clk_name;
4864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	enum rotator_clk_type clk_type;
4964d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	unsigned int clk_rate;
5064d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci};
5164d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci
5264d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazcistruct msm_rotator_platform_data {
5364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	unsigned int number_of_clocks;
5464d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	unsigned int hardware_version_number;
5564d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	struct msm_rot_clocks *rotator_clks;
5664d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#ifdef CONFIG_MSM_BUS_SCALING
5764d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci	struct msm_bus_scale_pdata *bus_scale_table;
5864d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci#endif
59f4e01452f159ae6b53f5edd25fa647ca2919ae10Tom Chao	char rot_iommu_split_domain;
60f4e01452f159ae6b53f5edd25fa647ca2919ae10Tom Chao};
61f4e01452f159ae6b53f5edd25fa647ca2919ae10Tom Chao#endif
62f4e01452f159ae6b53f5edd25fa647ca2919ae10Tom Chao
6364d8d8f89050c5ada85341f967af391f4716a7cbUlas Kirazci