/* * Copyright (C) 2014-2015 Freescale Semiconductor, Inc. All Rights Reserved. */ /* * The code contained herein is licensed under the GNU General Public * License. You may obtain a copy of the GNU General Public License * Version 2 or later at the following locations: * * http://www.opensource.org/licenses/gpl-license.html * http://www.gnu.org/copyleft/gpl.html */ /*! * @file linux/mxc_dcic.h * * @brief Global header file for the MXC DCIC driver * * @ingroup MXC DCIC */ #ifndef __LINUX_DCIC_H__ #define __LINUX_DCIC_H__ #include #define DCICC_IC_ENABLE 0x1 #define DCICC_IC_DISABLE 0x0 #define DCICC_IC_MASK 0x1 #define DCICC_DE_ACTIVE_HIGH 0 #define DCICC_DE_ACTIVE_LOW (0x1 << 4) #define DCICC_DE_ACTIVE_MASK (0x1 << 4) #define DCICC_HSYNC_POL_ACTIVE_HIGH 0 #define DCICC_HSYNC_POL_ACTIVE_LOW (0x1 << 5) #define DCICC_HSYNC_POL_ACTIVE_MASK (0x1 << 5) #define DCICC_VSYNC_POL_ACTIVE_HIGH 0 #define DCICC_VSYNC_POL_ACTIVE_LOW (0x1 << 6) #define DCICC_VSYNC_POL_ACTIVE_MASK (0x1 << 6) #define DCICC_CLK_POL_NO_INVERTED 0 #define DCICC_CLK_POL_INVERTED (0x1 << 7) #define DCICC_CLK_POL_INVERTED_MASK (0x1 << 7) #define DCICIC_ERROR_INT_DISABLE 1 #define DCICIC_ERROR_INT_ENABLE 0 #define DCICIC_ERROR_INT_MASK_MASK 1 #define DCICIC_FUN_INT_DISABLE (0x1 << 1) #define DCICIC_FUN_INT_ENABLE 0 #define DCICIC_FUN_INT_MASK (0x1 << 1) #define DCICIC_FREEZE_MASK_CHANGED 0 #define DCICIC_FREEZE_MASK_FORZEN (0x1 << 3) #define DCICIC_FREEZE_MASK_MASK (0x1 << 3) #define DCICIC_EXT_SIG_EX_DISABLE 0 #define DCICIC_EXT_SIG_EN_ENABLE (0x1 << 16) #define DCICIC_EXT_SIG_EN_MASK (0x1 << 16) #define DCICS_ROI_MATCH_STAT_MASK 0xFFFF #define DCICS_EI_STAT_PENDING (0x1 << 16) #define DCICS_EI_STAT_NO_PENDING 0 #define DCICS_FI_STAT_PENDING (0x1 << 17) #define DCICS_FI_STAT_NO_PENDING 0 #define DCICRC_ROI_START_OFFSET_X_MASK 0x1FFF #define DCICRC_ROI_START_OFFSET_X_SHIFT 0 #define DCICRC_ROI_START_OFFSET_Y_MASK (0xFFF << 16) #define DCICRC_ROI_START_OFFSET_Y_SHIFT 16 #define DCICRC_ROI_CHANGED 0 #define DCICRC_ROI_FROZEN (0x1 << 30) #define DCICRC_ROI_ENABLE (0x1 << 31) #define DCICRC_ROI_DISABLE 0 #define DCICRS_ROI_END_OFFSET_X_MASK 0x1FFF #define DCICRS_ROI_END_OFFSET_X_SHIFT 0 #define DCICRS_ROI_END_OFFSET_Y_MASK (0xFFF << 16) #define DCICRS_ROI_END_OFFSET_Y_SHIFT 16 struct roi_regs { u32 dcicrc; u32 dcicrs; u32 dcicrrs; u32 dcicrcs; }; struct dcic_regs { u32 dcicc; u32 dcicic; u32 dcics; u32 dcic_reserved; struct roi_regs ROI[16]; }; struct dcic_mux { char dcic[16]; u32 val; }; struct bus_mux { char name[16]; int reg; int shift; int mask; int dcic_mux_num; const struct dcic_mux *dcics; }; struct dcic_info { int bus_mux_num; const struct bus_mux *buses; }; struct dcic_data { struct regmap *regmap; struct device *dev; struct dcic_regs *regs; const struct bus_mux *buses; u32 bus_n; u32 mux_n; struct clk *disp_axi_clk; struct clk *dcic_clk; struct mutex lock; struct completion roi_crc_comp; struct class *class; int major; struct cdev cdev; /* Char device structure */ dev_t devt; unsigned int result; }; #endif