636 lines
22 KiB
C++
636 lines
22 KiB
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
|
|
namespace holly {
|
|
namespace id {
|
|
constexpr inline uint32_t device_id(uint32_t reg) { return (reg >> 16) & 0xffff; }
|
|
constexpr inline uint32_t vendor_id(uint32_t reg) { return (reg >> 0) & 0xffff; }
|
|
}
|
|
|
|
namespace revision {
|
|
constexpr inline uint32_t chip_revision(uint32_t reg) { return (reg >> 0) & 0xffff; }
|
|
}
|
|
|
|
namespace softreset {
|
|
constexpr uint32_t sdram_if_soft_reset = 1 << 2;
|
|
constexpr uint32_t pipeline_soft_reset = 1 << 1;
|
|
constexpr uint32_t ta_soft_reset = 1 << 0;
|
|
}
|
|
|
|
namespace startrender {
|
|
constexpr uint32_t start_render = 1 << 0;
|
|
}
|
|
|
|
namespace test_select {
|
|
constexpr inline uint32_t diagdb_data(uint32_t reg) { return (reg >> 5) & 0x1f; }
|
|
constexpr inline uint32_t diagda_data(uint32_t reg) { return (reg >> 0) & 0x1f; }
|
|
}
|
|
|
|
namespace param_base {
|
|
constexpr inline uint32_t base_address(uint32_t num) { return (num & 0xf00000) << 0; }
|
|
}
|
|
|
|
namespace region_base {
|
|
constexpr inline uint32_t base_address(uint32_t num) { return (num & 0xfffffc) << 0; }
|
|
}
|
|
|
|
namespace span_sort_cfg {
|
|
constexpr uint32_t cache_bypass = 1 << 16;
|
|
constexpr uint32_t offset_sort_enable = 1 << 8;
|
|
constexpr uint32_t span_sort_enable = 1 << 0;
|
|
}
|
|
|
|
namespace vo_border_col {
|
|
constexpr inline uint32_t chroma(uint32_t num) { return (num & 0x1) << 24; }
|
|
constexpr inline uint32_t red(uint32_t num) { return (num & 0xff) << 16; }
|
|
constexpr inline uint32_t green(uint32_t num) { return (num & 0xff) << 8; }
|
|
constexpr inline uint32_t blue(uint32_t num) { return (num & 0xff) << 0; }
|
|
}
|
|
|
|
namespace fb_r_ctrl {
|
|
namespace vclk_div {
|
|
constexpr uint32_t pclk_vclk_2 = 0 << 23;
|
|
constexpr uint32_t pclk_vclk_1 = 1 << 23;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 23;
|
|
}
|
|
|
|
constexpr uint32_t fb_strip_buf_en = 1 << 22;
|
|
constexpr inline uint32_t fb_stripsize(uint32_t num) { return (num & 0x3e) << 16; }
|
|
constexpr inline uint32_t fb_chroma_threshold(uint32_t num) { return (num & 0xff) << 8; }
|
|
constexpr inline uint32_t fb_concat(uint32_t num) { return (num & 0x3) << 4; }
|
|
|
|
namespace fb_depth {
|
|
constexpr uint32_t xrgb0555 = 0 << 2;
|
|
constexpr uint32_t rgb565 = 1 << 2;
|
|
constexpr uint32_t rgb888 = 2 << 2;
|
|
constexpr uint32_t xrgb0888 = 3 << 2;
|
|
|
|
constexpr uint32_t bit_mask = 0x3 << 2;
|
|
}
|
|
|
|
constexpr uint32_t fb_line_double = 1 << 1;
|
|
constexpr uint32_t fb_enable = 1 << 0;
|
|
}
|
|
|
|
namespace fb_w_ctrl {
|
|
constexpr inline uint32_t fb_alpha_threshold(uint32_t num) { return (num & 0xff) << 16; }
|
|
constexpr inline uint32_t fb_kval(uint32_t num) { return (num & 0xff) << 8; }
|
|
constexpr uint32_t fb_dither = 1 << 3;
|
|
|
|
namespace fb_packmode {
|
|
constexpr uint32_t krgb0555 = 0 << 0;
|
|
constexpr uint32_t rgb565 = 1 << 0;
|
|
constexpr uint32_t argb4444 = 2 << 0;
|
|
constexpr uint32_t argb1555 = 3 << 0;
|
|
constexpr uint32_t rgb888 = 4 << 0;
|
|
constexpr uint32_t krgb0888 = 5 << 0;
|
|
constexpr uint32_t argb8888 = 6 << 0;
|
|
|
|
constexpr uint32_t bit_mask = 0x7 << 0;
|
|
}
|
|
}
|
|
|
|
namespace fb_w_linestride {
|
|
constexpr inline uint32_t fb_line_stride(uint32_t num) { return (num & 0xff) << 0; }
|
|
}
|
|
|
|
namespace fb_r_sof1 {
|
|
constexpr inline uint32_t frame_buffer_read_address_frame_1(uint32_t num) { return (num & 0xfffffc) << 0; }
|
|
}
|
|
|
|
namespace fb_r_sof2 {
|
|
constexpr inline uint32_t frame_buffer_read_address_frame_2(uint32_t num) { return (num & 0xfffffc) << 0; }
|
|
}
|
|
|
|
namespace fb_r_size {
|
|
constexpr inline uint32_t fb_modulus(uint32_t num) { return (num & 0x3ff) << 20; }
|
|
constexpr inline uint32_t fb_y_size(uint32_t num) { return (num & 0x3ff) << 10; }
|
|
constexpr inline uint32_t fb_x_size(uint32_t num) { return (num & 0x3ff) << 0; }
|
|
}
|
|
|
|
namespace fb_w_sof1 {
|
|
constexpr inline uint32_t frame_buffer_write_address_frame_1(uint32_t num) { return (num & 0x1fffffc) << 0; }
|
|
}
|
|
|
|
namespace fb_w_sof2 {
|
|
constexpr inline uint32_t frame_buffer_write_address_frame_2(uint32_t num) { return (num & 0x1fffffc) << 0; }
|
|
}
|
|
|
|
namespace fb_x_clip {
|
|
constexpr inline uint32_t fb_x_clip_max(uint32_t num) { return (num & 0x7ff) << 16; }
|
|
constexpr inline uint32_t fb_x_clip_min(uint32_t num) { return (num & 0x7ff) << 0; }
|
|
}
|
|
|
|
namespace fb_y_clip {
|
|
constexpr inline uint32_t fb_y_clip_max(uint32_t num) { return (num & 0x3ff) << 16; }
|
|
constexpr inline uint32_t fb_y_clip_min(uint32_t num) { return (num & 0x3ff) << 0; }
|
|
}
|
|
|
|
namespace fpu_shad_scale {
|
|
namespace simple_shadow_enable {
|
|
constexpr uint32_t parameter_selection_volume_mode = 0 << 8;
|
|
constexpr uint32_t intensity_volume_mode = 1 << 8;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 8;
|
|
}
|
|
|
|
constexpr inline uint32_t scale_factor_for_shadows(uint32_t num) { return (num & 0xff) << 0; }
|
|
}
|
|
|
|
namespace fpu_cull_val {
|
|
inline float culling_comparison_value(float num) { return num; }
|
|
}
|
|
|
|
namespace fpu_param_cfg {
|
|
namespace region_header_type {
|
|
constexpr uint32_t type_1 = 0 << 21;
|
|
constexpr uint32_t type_2 = 1 << 21;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 21;
|
|
}
|
|
|
|
constexpr inline uint32_t tsp_parameter_burst_threshold(uint32_t num) { return (num & 0x3f) << 14; }
|
|
constexpr inline uint32_t isp_parameter_burst_threshold(uint32_t num) { return (num & 0x3f) << 8; }
|
|
constexpr inline uint32_t pointer_burst_size(uint32_t num) { return (num & 0xf) << 4; }
|
|
constexpr inline uint32_t pointer_first_burst_size(uint32_t num) { return (num & 0xf) << 0; }
|
|
}
|
|
|
|
namespace half_offset {
|
|
namespace tsp_texel_sampling_position {
|
|
constexpr uint32_t top_left = 1 << 2;
|
|
constexpr uint32_t center = 1 << 2;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 2;
|
|
}
|
|
|
|
namespace tsp_pixel_sampling_position {
|
|
constexpr uint32_t top_left = 1 << 1;
|
|
constexpr uint32_t center = 1 << 1;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 1;
|
|
}
|
|
|
|
namespace fpu_pixel_sampling_position {
|
|
constexpr uint32_t top_left = 1 << 0;
|
|
constexpr uint32_t center = 1 << 0;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 0;
|
|
}
|
|
}
|
|
|
|
namespace fpu_perp_val {
|
|
inline float perpendicular_triangle_compare(float num) { return num; }
|
|
}
|
|
|
|
namespace isp_backgnd_d {
|
|
inline float background_plane_depth(float num) { return num; }
|
|
}
|
|
|
|
namespace isp_backgnd_t {
|
|
constexpr uint32_t cache_bypass = 1 << 28;
|
|
constexpr uint32_t shadow = 1 << 27;
|
|
constexpr inline uint32_t skip(uint32_t num) { return (num & 0x7) << 24; }
|
|
constexpr inline uint32_t tag_address(uint32_t num) { return (num & 0x1fffff) << 3; }
|
|
constexpr inline uint32_t tag_offset(uint32_t num) { return (num & 0x7) << 0; }
|
|
}
|
|
|
|
namespace isp_feed_cfg {
|
|
constexpr inline uint32_t cache_size_for_translucency(uint32_t num) { return (num & 0x3ff) << 14; }
|
|
constexpr inline uint32_t punch_through_chunk_size(uint32_t num) { return (num & 0x3ff) << 4; }
|
|
constexpr uint32_t discard_mode = 1 << 3;
|
|
constexpr uint32_t pre_sort_mode = 1 << 0;
|
|
}
|
|
|
|
namespace sdram_refresh {
|
|
constexpr inline uint32_t refresh_counter_value(uint32_t num) { return (num & 0xff) << 0; }
|
|
}
|
|
|
|
namespace sdram_arb_cfg {
|
|
namespace override_value {
|
|
constexpr uint32_t priority_only = 0x0 << 18;
|
|
constexpr uint32_t rendered_data = 0x1 << 18;
|
|
constexpr uint32_t texture_vq_index = 0x2 << 18;
|
|
constexpr uint32_t texture_normal_data_and_vq_codebook = 0x3 << 18;
|
|
constexpr uint32_t tile_accelerator_isp_tsp_data = 0x4 << 18;
|
|
constexpr uint32_t tile_accelerator_pointers = 0x5 << 18;
|
|
constexpr uint32_t sh4 = 0x6 << 18;
|
|
constexpr uint32_t tsp_parameters = 0x7 << 18;
|
|
constexpr uint32_t tsp_region_data = 0x8 << 18;
|
|
constexpr uint32_t isp_pointer_data = 0x9 << 18;
|
|
constexpr uint32_t isp_parameters = 0xa << 18;
|
|
constexpr uint32_t crt_controller = 0xb << 18;
|
|
|
|
constexpr uint32_t bit_mask = 0xf << 18;
|
|
}
|
|
|
|
namespace arbiter_priority_control {
|
|
constexpr uint32_t priority_arbitration_only = 0x0 << 16;
|
|
constexpr uint32_t override_value_field = 0x1 << 16;
|
|
constexpr uint32_t round_robin_counter = 0x2 << 16;
|
|
|
|
constexpr uint32_t bit_mask = 0x3 << 16;
|
|
}
|
|
|
|
constexpr inline uint32_t arbiter_crt_page_break_latency_count_value(uint32_t num) { return (num & 0xff) << 8; }
|
|
constexpr inline uint32_t arbiter_page_break_latency_count_value(uint32_t num) { return (num & 0xff) << 0; }
|
|
}
|
|
|
|
namespace sdram_cfg {
|
|
constexpr inline uint32_t read_command_to_returned_data_delay(uint32_t num) { return (num & 0x7) << 26; }
|
|
constexpr inline uint32_t cas_latency_value(uint32_t num) { return (num & 0x7) << 23; }
|
|
constexpr inline uint32_t activate_to_activate_period(uint32_t num) { return (num & 0x3) << 21; }
|
|
constexpr inline uint32_t read_to_write_period(uint32_t num) { return (num & 0x7) << 18; }
|
|
constexpr inline uint32_t refresh_to_activate_period(uint32_t num) { return (num & 0xf) << 14; }
|
|
constexpr inline uint32_t pre_charge_to_activate_period(uint32_t num) { return (num & 0x3) << 10; }
|
|
constexpr inline uint32_t activate_to_pre_charge_period(uint32_t num) { return (num & 0xf) << 6; }
|
|
constexpr inline uint32_t activate_to_read_write_command_period(uint32_t num) { return (num & 0x3) << 4; }
|
|
constexpr inline uint32_t write_to_pre_charge_period(uint32_t num) { return (num & 0x3) << 2; }
|
|
constexpr inline uint32_t read_to_pre_charge_period(uint32_t num) { return (num & 0x3) << 0; }
|
|
}
|
|
|
|
namespace fog_col_ram {
|
|
constexpr inline uint32_t red(uint32_t num) { return (num & 0xff) << 16; }
|
|
constexpr inline uint32_t green(uint32_t num) { return (num & 0xff) << 8; }
|
|
constexpr inline uint32_t blue(uint32_t num) { return (num & 0xff) << 0; }
|
|
}
|
|
|
|
namespace fog_col_vert {
|
|
constexpr inline uint32_t red(uint32_t num) { return (num & 0xff) << 16; }
|
|
constexpr inline uint32_t green(uint32_t num) { return (num & 0xff) << 8; }
|
|
constexpr inline uint32_t blue(uint32_t num) { return (num & 0xff) << 0; }
|
|
}
|
|
|
|
namespace fog_density {
|
|
constexpr inline uint32_t fog_scale_mantissa(uint32_t num) { return (num & 0xff) << 8; }
|
|
constexpr inline uint32_t fog_scale_exponent(uint32_t num) { return (num & 0xff) << 0; }
|
|
}
|
|
|
|
namespace fog_clamp_max {
|
|
constexpr inline uint32_t alpha(uint32_t num) { return (num & 0xff) << 24; }
|
|
constexpr inline uint32_t red(uint32_t num) { return (num & 0xff) << 16; }
|
|
constexpr inline uint32_t green(uint32_t num) { return (num & 0xff) << 8; }
|
|
constexpr inline uint32_t blue(uint32_t num) { return (num & 0xff) << 0; }
|
|
}
|
|
|
|
namespace fog_clamp_min {
|
|
constexpr inline uint32_t alpha(uint32_t num) { return (num & 0xff) << 24; }
|
|
constexpr inline uint32_t red(uint32_t num) { return (num & 0xff) << 16; }
|
|
constexpr inline uint32_t green(uint32_t num) { return (num & 0xff) << 8; }
|
|
constexpr inline uint32_t blue(uint32_t num) { return (num & 0xff) << 0; }
|
|
}
|
|
|
|
namespace spg_trigger_pos {
|
|
constexpr inline uint32_t trigger_v_count(uint32_t reg) { return (reg >> 16) & 0x3ff; }
|
|
constexpr inline uint32_t trigger_h_count(uint32_t reg) { return (reg >> 0) & 0x3ff; }
|
|
}
|
|
|
|
namespace spg_hblank_int {
|
|
constexpr inline uint32_t hblank_in_interrupt(uint32_t reg) { return (reg >> 16) & 0x3ff; }
|
|
|
|
namespace hblank_int_mode {
|
|
constexpr uint32_t output_equal_line_comp_val = 0x0 << 12;
|
|
constexpr uint32_t output_every_line_comp_val = 0x1 << 12;
|
|
constexpr uint32_t output_every_line = 0x2 << 12;
|
|
|
|
constexpr uint32_t bit_mask = 0x3 << 12;
|
|
}
|
|
|
|
constexpr inline uint32_t line_comp_val(uint32_t num) { return (num & 0x3ff) << 0; }
|
|
}
|
|
|
|
namespace spg_vblank_int {
|
|
constexpr inline uint32_t vblank_out_interrupt_line_number(uint32_t num) { return (num & 0x3ff) << 16; }
|
|
constexpr inline uint32_t vblank_in_interrupt_line_number(uint32_t num) { return (num & 0x3ff) << 0; }
|
|
}
|
|
|
|
namespace spg_control {
|
|
namespace csync_on_h {
|
|
constexpr uint32_t hsync = 0 << 9;
|
|
constexpr uint32_t csync = 1 << 9;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 9;
|
|
}
|
|
|
|
namespace sync_direction {
|
|
constexpr uint32_t input = 0 << 8;
|
|
constexpr uint32_t output = 1 << 8;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 8;
|
|
}
|
|
|
|
constexpr uint32_t pal = 1 << 7;
|
|
constexpr uint32_t ntsc = 1 << 6;
|
|
constexpr uint32_t force_field2 = 1 << 5;
|
|
constexpr uint32_t interlace = 1 << 4;
|
|
constexpr uint32_t spg_lock = 1 << 3;
|
|
|
|
namespace mcsync_pol {
|
|
constexpr uint32_t active_low = 0 << 2;
|
|
constexpr uint32_t active_high = 1 << 2;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 2;
|
|
}
|
|
|
|
namespace mvsync_pol {
|
|
constexpr uint32_t active_low = 0 << 1;
|
|
constexpr uint32_t active_high = 1 << 1;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 1;
|
|
}
|
|
|
|
namespace mhsync_pol {
|
|
constexpr uint32_t active_low = 0 << 0;
|
|
constexpr uint32_t active_high = 1 << 0;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 0;
|
|
}
|
|
}
|
|
|
|
namespace spg_hblank {
|
|
constexpr inline uint32_t hbend(uint32_t num) { return (num & 0x3ff) << 16; }
|
|
constexpr inline uint32_t hbstart(uint32_t num) { return (num & 0x3ff) << 0; }
|
|
}
|
|
|
|
namespace spg_load {
|
|
constexpr inline uint32_t vcount(uint32_t num) { return (num & 0x3ff) << 16; }
|
|
constexpr inline uint32_t hcount(uint32_t num) { return (num & 0x3ff) << 0; }
|
|
}
|
|
|
|
namespace spg_vblank {
|
|
constexpr inline uint32_t vbend(uint32_t num) { return (num & 0x3ff) << 16; }
|
|
constexpr inline uint32_t vbstart(uint32_t num) { return (num & 0x3ff) << 0; }
|
|
}
|
|
|
|
namespace spg_width {
|
|
constexpr inline uint32_t eqwidth(uint32_t num) { return (num & 0x3ff) << 22; }
|
|
constexpr inline uint32_t bpwidth(uint32_t num) { return (num & 0x3ff) << 12; }
|
|
constexpr inline uint32_t vswidth(uint32_t num) { return (num & 0xf) << 8; }
|
|
constexpr inline uint32_t hswidth(uint32_t num) { return (num & 0x7f) << 0; }
|
|
}
|
|
|
|
namespace text_control {
|
|
namespace code_book_endian {
|
|
constexpr uint32_t little_endian = 0 << 17;
|
|
constexpr uint32_t big_endian = 1 << 17;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 17;
|
|
}
|
|
|
|
namespace index_endian {
|
|
constexpr uint32_t little_endian = 0 << 16;
|
|
constexpr uint32_t big_endian = 1 << 16;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 16;
|
|
}
|
|
|
|
constexpr inline uint32_t bank_bit(uint32_t num) { return (num & 0x1f) << 8; }
|
|
constexpr inline uint32_t stride(uint32_t num) { return (num & 0x1f) << 0; }
|
|
}
|
|
|
|
namespace vo_control {
|
|
constexpr uint32_t pclk_delay_reset = 1 << 21;
|
|
constexpr inline uint32_t pclk_delay(uint32_t num) { return (num & 0x1f) << 16; }
|
|
constexpr uint32_t pixel_double = 1 << 8;
|
|
|
|
namespace field_mode {
|
|
constexpr uint32_t use_field_flag_from_spg = 0x0 << 4;
|
|
constexpr uint32_t use_inverse_of_field_flag_from_spg = 0x1 << 4;
|
|
constexpr uint32_t field_1_fixed = 0x2 << 4;
|
|
constexpr uint32_t field_2_fixed = 0x3 << 4;
|
|
constexpr uint32_t field_1_when_the_active_edges_of_hsync_and_vsync_match = 0x4 << 4;
|
|
constexpr uint32_t field_2_when_the_active_edges_of_hsync_and_vsync_match = 0x5 << 4;
|
|
constexpr uint32_t field_1_when_hsync_becomes_active_in_the_middle_of_the_vsync_active_edge = 0x6 << 4;
|
|
constexpr uint32_t field_2_when_hsync_becomes_active_in_the_middle_of_the_vsync_active_edge = 0x7 << 4;
|
|
constexpr uint32_t inverted_at_the_active_edge_of_vsync = 0x8 << 4;
|
|
|
|
constexpr uint32_t bit_mask = 0xf << 4;
|
|
}
|
|
|
|
constexpr uint32_t blank_video = 1 << 3;
|
|
|
|
namespace blank_pol {
|
|
constexpr uint32_t active_low = 0 << 2;
|
|
constexpr uint32_t active_high = 1 << 2;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 2;
|
|
}
|
|
|
|
namespace vsync_pol {
|
|
constexpr uint32_t active_low = 0 << 1;
|
|
constexpr uint32_t active_high = 1 << 1;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 1;
|
|
}
|
|
|
|
namespace hsync_pol {
|
|
constexpr uint32_t active_low = 0 << 0;
|
|
constexpr uint32_t active_high = 1 << 0;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 0;
|
|
}
|
|
}
|
|
|
|
namespace vo_startx {
|
|
constexpr inline uint32_t horizontal_start_position(uint32_t num) { return (num & 0x3ff) << 0; }
|
|
}
|
|
|
|
namespace vo_starty {
|
|
constexpr inline uint32_t vertical_start_position_on_field_2(uint32_t num) { return (num & 0x3ff) << 16; }
|
|
constexpr inline uint32_t vertical_start_position_on_field_1(uint32_t num) { return (num & 0x3ff) << 0; }
|
|
}
|
|
|
|
namespace scaler_ctl {
|
|
namespace field_select {
|
|
constexpr uint32_t field_1 = 0 << 18;
|
|
constexpr uint32_t field_2 = 1 << 18;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 18;
|
|
}
|
|
|
|
constexpr uint32_t interlace = 1 << 17;
|
|
constexpr uint32_t horizontal_scaling_enable = 1 << 16;
|
|
constexpr inline uint32_t vertical_scale_factor(uint32_t num) { return (num & 0xffff) << 0; }
|
|
}
|
|
|
|
namespace pal_ram_ctrl {
|
|
namespace pixel_format {
|
|
constexpr uint32_t argb1555 = 0 << 0;
|
|
constexpr uint32_t rgb565 = 1 << 0;
|
|
constexpr uint32_t argb4444 = 2 << 0;
|
|
constexpr uint32_t argb8888 = 3 << 0;
|
|
|
|
constexpr uint32_t bit_mask = 0x3 << 0;
|
|
}
|
|
}
|
|
|
|
namespace spg_status {
|
|
constexpr inline uint32_t vsync(uint32_t reg) { return (reg >> 13) & 0x1; }
|
|
constexpr inline uint32_t hsync(uint32_t reg) { return (reg >> 12) & 0x1; }
|
|
constexpr inline uint32_t blank(uint32_t reg) { return (reg >> 11) & 0x1; }
|
|
constexpr inline uint32_t fieldnum(uint32_t reg) { return (reg >> 10) & 0x1; }
|
|
constexpr inline uint32_t scanline(uint32_t reg) { return (reg >> 0) & 0x3ff; }
|
|
}
|
|
|
|
namespace fb_burstctrl {
|
|
constexpr inline uint32_t wr_burst(uint32_t num) { return (num & 0xf) << 16; }
|
|
constexpr inline uint32_t vid_lat(uint32_t num) { return (num & 0x7f) << 8; }
|
|
constexpr inline uint32_t vid_burst(uint32_t num) { return (num & 0x3f) << 0; }
|
|
}
|
|
|
|
namespace fb_c_sof {
|
|
constexpr inline uint32_t frame_buffer_current_read_address(uint32_t reg) { return (reg >> 0) & 0xffffff; }
|
|
}
|
|
|
|
namespace y_coeff {
|
|
constexpr inline uint32_t coefficient_1(uint32_t num) { return (num & 0xff) << 8; }
|
|
constexpr inline uint32_t coefficient_0_2(uint32_t num) { return (num & 0xff) << 0; }
|
|
}
|
|
|
|
namespace pt_alpha_ref {
|
|
constexpr inline uint32_t alpha_reference_for_punch_through(uint32_t num) { return (num & 0xff) << 0; }
|
|
}
|
|
|
|
namespace fog_table {
|
|
constexpr inline uint32_t fog_table_data(uint32_t num) { return (num & 0xffff) << 0; }
|
|
}
|
|
|
|
namespace palette_ram {
|
|
constexpr inline uint32_t palette_data(uint32_t num) { return (num & 0xffffffff) << 0; }
|
|
}
|
|
|
|
namespace ta_ol_base {
|
|
constexpr inline uint32_t base_address(uint32_t num) { return (num & 0xffffe0) << 0; }
|
|
}
|
|
|
|
namespace ta_isp_base {
|
|
constexpr inline uint32_t base_address(uint32_t num) { return (num & 0xfffffc) << 0; }
|
|
}
|
|
|
|
namespace ta_ol_limit {
|
|
constexpr inline uint32_t limit_address(uint32_t num) { return (num & 0xffffe0) << 0; }
|
|
}
|
|
|
|
namespace ta_isp_limit {
|
|
constexpr inline uint32_t limit_address(uint32_t num) { return (num & 0xfffffc) << 0; }
|
|
}
|
|
|
|
namespace ta_next_opb {
|
|
constexpr inline uint32_t address(uint32_t num) { return (num & 0xffffe0) << 0; }
|
|
}
|
|
|
|
namespace ta_itp_current {
|
|
constexpr inline uint32_t address(uint32_t reg) { return (reg >> 0) & 0xffffff; }
|
|
}
|
|
|
|
namespace ta_glob_tile_clip {
|
|
constexpr inline uint32_t tile_y_num(uint32_t num) { return (num & 0xf) << 16; }
|
|
constexpr inline uint32_t tile_x_num(uint32_t num) { return (num & 0x3f) << 0; }
|
|
}
|
|
|
|
namespace ta_alloc_ctrl {
|
|
namespace opb_mode {
|
|
constexpr uint32_t increasing_addresses = 0 << 20;
|
|
constexpr uint32_t decreasing_addresses = 1 << 20;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 20;
|
|
}
|
|
|
|
namespace pt_opb {
|
|
constexpr uint32_t no_list = 0 << 16;
|
|
constexpr uint32_t _8x4byte = 1 << 16;
|
|
constexpr uint32_t _16x4byte = 2 << 16;
|
|
constexpr uint32_t _32x4byte = 3 << 16;
|
|
|
|
constexpr uint32_t bit_mask = 0x3 << 16;
|
|
}
|
|
|
|
namespace tm_opb {
|
|
constexpr uint32_t no_list = 0 << 12;
|
|
constexpr uint32_t _8x4byte = 1 << 12;
|
|
constexpr uint32_t _16x4byte = 2 << 12;
|
|
constexpr uint32_t _32x4byte = 3 << 12;
|
|
|
|
constexpr uint32_t bit_mask = 0x3 << 12;
|
|
}
|
|
|
|
namespace t_opb {
|
|
constexpr uint32_t no_list = 0 << 8;
|
|
constexpr uint32_t _8x4byte = 1 << 8;
|
|
constexpr uint32_t _16x4byte = 2 << 8;
|
|
constexpr uint32_t _32x4byte = 3 << 8;
|
|
|
|
constexpr uint32_t bit_mask = 0x3 << 8;
|
|
}
|
|
|
|
namespace om_opb {
|
|
constexpr uint32_t no_list = 0 << 4;
|
|
constexpr uint32_t _8x4byte = 1 << 4;
|
|
constexpr uint32_t _16x4byte = 2 << 4;
|
|
constexpr uint32_t _32x4byte = 3 << 4;
|
|
|
|
constexpr uint32_t bit_mask = 0x3 << 4;
|
|
}
|
|
|
|
namespace o_opb {
|
|
constexpr uint32_t no_list = 0 << 0;
|
|
constexpr uint32_t _8x4byte = 1 << 0;
|
|
constexpr uint32_t _16x4byte = 2 << 0;
|
|
constexpr uint32_t _32x4byte = 3 << 0;
|
|
|
|
constexpr uint32_t bit_mask = 0x3 << 0;
|
|
}
|
|
}
|
|
|
|
namespace ta_list_init {
|
|
constexpr uint32_t list_init = 1 << 31;
|
|
}
|
|
|
|
namespace ta_yuv_tex_base {
|
|
constexpr inline uint32_t base_address(uint32_t num) { return (num & 0xfffff8) << 0; }
|
|
}
|
|
|
|
namespace ta_yuv_tex_ctrl {
|
|
namespace yuv_form {
|
|
constexpr uint32_t yuv420 = 0 << 24;
|
|
constexpr uint32_t yuv422 = 1 << 24;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 24;
|
|
}
|
|
|
|
namespace yuv_tex {
|
|
constexpr uint32_t one_texture = 0 << 16;
|
|
constexpr uint32_t multiple_textures = 1 << 16;
|
|
|
|
constexpr uint32_t bit_mask = 0x1 << 16;
|
|
}
|
|
|
|
constexpr inline uint32_t yuv_v_size(uint32_t num) { return (num & 0x3f) << 8; }
|
|
constexpr inline uint32_t yuv_u_size(uint32_t num) { return (num & 0x3f) << 0; }
|
|
}
|
|
|
|
namespace ta_yuv_tex_cnt {
|
|
constexpr inline uint32_t yuv_num(uint32_t reg) { return (reg >> 0) & 0x1fff; }
|
|
}
|
|
|
|
namespace ta_list_cont {
|
|
constexpr uint32_t list_cont = 1 << 31;
|
|
}
|
|
|
|
namespace ta_next_opb_init {
|
|
constexpr inline uint32_t address(uint32_t num) { return (num & 0xffffe0) << 0; }
|
|
}
|
|
|
|
namespace ta_ol_pointers {
|
|
constexpr inline uint32_t entry(uint32_t reg) { return (reg >> 31) & 0x1; }
|
|
constexpr inline uint32_t sprite(uint32_t reg) { return (reg >> 30) & 0x1; }
|
|
constexpr inline uint32_t triangle(uint32_t reg) { return (reg >> 29) & 0x1; }
|
|
constexpr inline uint32_t number_of_triangles_quads(uint32_t reg) { return (reg >> 25) & 0xf; }
|
|
constexpr inline uint32_t shadow(uint32_t reg) { return (reg >> 24) & 0x1; }
|
|
constexpr inline uint32_t pointer_address(uint32_t reg) { return (reg >> 2) & 0x3fffff; }
|
|
constexpr inline uint32_t skip(uint32_t reg) { return (reg >> 0) & 0x3; }
|
|
}
|
|
|
|
}
|