18611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#ifndef __MSM_ROTATOR_H__ 28611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define __MSM_ROTATOR_H__ 38611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 48611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#include <linux/types.h> 58611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#include <linux/msm_mdp.h> 68611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 78611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_ROTATOR_IOCTL_MAGIC 'R' 88611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 98611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_ROTATOR_IOCTL_START \ 108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu _IOWR(MSM_ROTATOR_IOCTL_MAGIC, 1, struct msm_rotator_img_info) 118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_ROTATOR_IOCTL_ROTATE \ 128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu _IOW(MSM_ROTATOR_IOCTL_MAGIC, 2, struct msm_rotator_data_info) 138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define MSM_ROTATOR_IOCTL_FINISH \ 148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu _IOW(MSM_ROTATOR_IOCTL_MAGIC, 3, int) 1576de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed#define MSM_ROTATOR_IOCTL_BUFFER_SYNC \ 1676de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed _IOW(MSM_ROTATOR_IOCTL_MAGIC, 4, struct msm_rotator_buf_sync) 178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define ROTATOR_VERSION_01 0xA5B4C301 198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum rotator_clk_type { 218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu ROTATOR_CORE_CLK, 228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu ROTATOR_PCLK, 238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu ROTATOR_IMEM_CLK 248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2676de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmedstruct msm_rotator_buf_sync { 2776de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed uint32_t session_id; 2876de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed uint32_t flags; 2976de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed int acq_fen_fd; 3076de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed int rel_fen_fd; 3176de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed}; 3276de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed 338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msm_rotator_img_info { 348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned int session_id; 358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_img src; 368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_img dst; 378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct mdp_rect src_rect; 388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned int dst_x; 398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned int dst_y; 408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned char rotations; 418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int enable; 428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned int downscale_ratio; 438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned int secure; 448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msm_rotator_data_info { 478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int session_id; 488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data src; 498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data dst; 508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned int version_key; 518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data src_chroma; 528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msmfb_data dst_chroma; 5376de202d7eae6422d5bcba124734a96b8b6b1b01Naseer Ahmed uint32_t wait_for_finish; 548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msm_rot_clocks { 578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu const char *clk_name; 588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu enum rotator_clk_type clk_type; 598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned int clk_rate; 608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct msm_rotator_platform_data { 638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned int number_of_clocks; 648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned int hardware_version_number; 658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msm_rot_clocks *rotator_clks; 668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#ifdef CONFIG_MSM_BUS_SCALING 678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct msm_bus_scale_pdata *bus_scale_table; 688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#endif 698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu char rot_iommu_split_domain; 708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#endif 728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 73