/* * Copyright (C) 2010-2016 Freescale Semiconductor, Inc. * Copyright 2017 NXP * * 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. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ #ifndef _REG_BITFIELDS_H #define _REG_BITFIELDS_H struct mux_config { uint32_t mux0_sel : 2; uint32_t mux1_sel : 2; uint32_t mux2_sel : 2; uint32_t mux3_sel : 2; uint32_t mux4_sel : 2; uint32_t mux5_sel : 2; uint32_t mux6_sel : 2; uint32_t mux7_sel : 2; uint32_t mux8_sel : 2; uint32_t mux9_sel : 2; uint32_t mux10_sel : 2; uint32_t mux11_sel : 2; uint32_t mux12_sel : 2; uint32_t mux13_sel : 2; uint32_t mux14_sel : 2; uint32_t mux15_sel : 2; }; /* legacy engine registers */ struct ps_ctrl { uint32_t format : 6; uint32_t wb_swap : 1; uint32_t rsvd0 : 1; uint32_t decy : 2; uint32_t decx : 2; uint32_t rsvd1 : 20; }; struct ps_scale { uint32_t xscale : 15; uint32_t rsvd1 : 1; uint32_t yscale : 15; uint32_t rsvd2 : 1; }; struct ps_offset { uint32_t xoffset : 12; uint32_t rsvd1 : 4; uint32_t yoffset : 12; uint32_t rsvd2 : 4; }; struct as_ctrl { uint32_t rsvd0 : 1; uint32_t alpha_ctrl : 2; uint32_t enable_colorkey : 1; uint32_t format : 4; uint32_t alpha : 8; uint32_t rop : 4; uint32_t alpha0_invert : 1; uint32_t alpha1_invert : 1; uint32_t rsvd1 : 10; }; struct out_ctrl { uint32_t format : 5; uint32_t rsvd0 : 3; uint32_t interlaced_output : 2; uint32_t rsvd1 : 13; uint32_t alpha_output : 1; uint32_t alpha : 8; }; struct coordinate { uint32_t y : 14; uint32_t rsvd0 : 2; uint32_t x : 14; uint32_t rsvd1 : 2; }; struct pxp_alpha_ctrl { uint32_t poter_duff_enable : 1; uint32_t s0_s1_factor_mode : 2; uint32_t s0_global_alpha_mode : 2; uint32_t s0_alpha_mode : 1; uint32_t s0_color_mode : 1; uint32_t rsvd1 : 1; uint32_t s1_s0_factor_mode : 2; uint32_t s1_global_alpha_mode : 2; uint32_t s1_alpha_mode : 1; uint32_t s1_color_mode : 1; uint32_t rsvd0 : 2; uint32_t s0_global_alpha : 8; uint32_t s1_global_alpha : 8; }; /* store engine registers */ struct store_ctrl { uint32_t ch_en : 1; uint32_t block_en : 1; uint32_t block_16 : 1; uint32_t handshake_en : 1; uint32_t array_en : 1; uint32_t array_line_num : 2; uint32_t rsvd3 : 1; uint32_t store_bypass_en : 1; uint32_t store_memory_en : 1; uint32_t pack_in_sel : 1; uint32_t fill_data_en : 1; uint32_t rsvd2 : 4; uint32_t wr_num_bytes : 2; uint32_t rsvd1 : 6; uint32_t combine_2channel : 1; uint32_t rsvd0 : 6; uint32_t arbit_en : 1; }; struct store_size { uint32_t out_width : 16; uint32_t out_height : 16; }; struct store_pitch { uint32_t ch0_out_pitch : 16; uint32_t ch1_out_pitch : 16; }; struct store_shift_ctrl { uint32_t rsvd2 : 2; uint32_t output_active_bpp : 2; uint32_t out_yuv422_1p_en : 1; uint32_t out_yuv422_2p_en : 1; uint32_t rsvd1 : 1; uint32_t shift_bypass : 1; uint32_t rsvd0 : 24; }; struct store_d_shift { uint64_t d_shift_width0 : 6; uint64_t rsvd3 : 1; uint64_t d_shift_flag0 : 1; uint64_t d_shift_width1 : 6; uint64_t rsvd2 : 1; uint64_t d_shift_flag1 : 1; uint64_t d_shift_width2 : 6; uint64_t rsvd1 : 1; uint64_t d_shift_flag2 : 1; uint64_t d_shift_width3 : 6; uint64_t rsvd0 : 1; uint64_t d_shift_flag3 : 1; uint64_t d_shift_width4 : 6; uint64_t rsvd7 : 1; uint64_t d_shift_flag4 : 1; uint64_t d_shift_width5 : 6; uint64_t rsvd6 : 1; uint64_t d_shift_flag5 : 1; uint64_t d_shift_width6 : 6; uint64_t rsvd5 : 1; uint64_t d_shift_flag6 : 1; uint64_t d_shift_width7 : 6; uint64_t rsvd4 : 1; uint64_t d_shift_flag7 : 1; }; struct store_f_shift { uint64_t f_shift_width0 : 6; uint64_t rsvd3 : 1; uint64_t f_shift_flag0 : 1; uint64_t f_shift_width1 : 6; uint64_t rsvd2 : 1; uint64_t f_shift_flag1 : 1; uint64_t f_shift_width2 : 6; uint64_t rsvd1 : 1; uint64_t f_shift_flag2 : 1; uint64_t f_shift_width3 : 6; uint64_t rsvd0 : 1; uint64_t f_shift_flag3 : 1; uint64_t f_shift_width4 : 6; uint64_t rsvd7 : 1; uint64_t f_shift_flag4 : 1; uint64_t f_shift_width5 : 6; uint64_t rsvd6 : 1; uint64_t f_shift_flag5 : 1; uint64_t f_shift_width6 : 6; uint64_t rsvd5 : 1; uint64_t f_shift_flag6 : 1; uint64_t f_shift_width7 : 6; uint64_t rsvd4 : 1; uint64_t f_shift_flag7 : 1; }; struct store_d_mask { uint64_t d_mask_l : 32; uint64_t d_mask_h : 32; }; /* fetch engine registers */ struct fetch_ctrl { uint32_t ch_en : 1; uint32_t block_en : 1; uint32_t block_16 : 1; uint32_t handshake_en : 1; uint32_t bypass_pixel_en : 1; uint32_t high_byte : 1; uint32_t rsvd4 : 3; uint32_t hflip : 1; uint32_t vflip : 1; uint32_t rsvd3 : 1; uint32_t rotation_angle : 2; uint32_t rsvd2 : 2; uint32_t rd_num_bytes : 2; uint32_t rsvd1 : 6; uint32_t handshake_scan_line_num : 2; uint32_t rsvd0 : 5; uint32_t arbit_en : 1; }; struct fetch_active_size_ulc { uint32_t active_size_ulc_x : 16; uint32_t active_size_ulc_y : 16; }; struct fetch_active_size_lrc { uint32_t active_size_lrc_x : 16; uint32_t active_size_lrc_y : 16; }; struct fetch_size { uint32_t input_total_width : 16; uint32_t input_total_height : 16; }; struct fetch_pitch { uint32_t ch0_input_pitch : 16; uint32_t ch1_input_pitch : 16; }; struct fetch_shift_ctrl { uint32_t input_active_bpp : 2; uint32_t rsvd1 : 6; uint32_t expand_format : 3; uint32_t expand_en : 1; uint32_t shift_bypass : 1; uint32_t rsvd0 : 19; }; struct fetch_shift_offset { uint32_t offset0 : 5; uint32_t rsvd3 : 3; uint32_t offset1 : 5; uint32_t rsvd2 : 3; uint32_t offset2 : 5; uint32_t rsvd1 : 3; uint32_t offset3 : 5; uint32_t rsvd0 : 3; }; struct fetch_shift_width { uint32_t width0 : 4; uint32_t width1 : 4; uint32_t width2 : 4; uint32_t width3 : 4; uint32_t rsvd0 : 16; }; #endif