15bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#ifndef __MSM_ROTATOR_H__ 25bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define __MSM_ROTATOR_H__ 35bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson 45bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#include <linux/types.h> 55bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#include <linux/msm_mdp.h> 65bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson 75bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSM_ROTATOR_IOCTL_MAGIC 'R' 85bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson 95bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSM_ROTATOR_IOCTL_START \ 105bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson _IOWR(MSM_ROTATOR_IOCTL_MAGIC, 1, struct msm_rotator_img_info) 115bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSM_ROTATOR_IOCTL_ROTATE \ 125bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson _IOW(MSM_ROTATOR_IOCTL_MAGIC, 2, struct msm_rotator_data_info) 135bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define MSM_ROTATOR_IOCTL_FINISH \ 145bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson _IOW(MSM_ROTATOR_IOCTL_MAGIC, 3, int) 155bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson 165bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#define ROTATOR_VERSION_01 0xA5B4C301 175bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson 185bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonenum rotator_clk_type { 195bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson ROTATOR_CORE_CLK, 205bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson ROTATOR_PCLK, 215bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson ROTATOR_IMEM_CLK 225bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson}; 235bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson 245bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct msm_rotator_img_info { 255bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson unsigned int session_id; 265bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson struct msmfb_img src; 275bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson struct msmfb_img dst; 285bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson struct mdp_rect src_rect; 295bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson unsigned int dst_x; 305bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson unsigned int dst_y; 315bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson unsigned char rotations; 325bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson int enable; 335bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson unsigned int downscale_ratio; 345bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson unsigned int secure; 355bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson}; 365bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson 375bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct msm_rotator_data_info { 385bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson int session_id; 395bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson struct msmfb_data src; 405bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson struct msmfb_data dst; 415bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson unsigned int version_key; 425bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson struct msmfb_data src_chroma; 435bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson struct msmfb_data dst_chroma; 445bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson}; 455bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson 465bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct msm_rot_clocks { 475bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson const char *clk_name; 485bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson enum rotator_clk_type clk_type; 495bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson unsigned int clk_rate; 505bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson}; 515bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson 525bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilsonstruct msm_rotator_platform_data { 535bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson unsigned int number_of_clocks; 545bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson unsigned int hardware_version_number; 555bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson struct msm_rot_clocks *rotator_clks; 565bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#ifdef CONFIG_MSM_BUS_SCALING 575bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson struct msm_bus_scale_pdata *bus_scale_table; 585bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#endif 595bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson char rot_iommu_split_domain; 605bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson}; 615bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson#endif 625bccd2d0d6de8ffd0c244c1b66ef5a9ac9409404Simon Wilson 63