Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  s5p_mfc_opr.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * drivers/media/platform/samsung/s5p-mfc/s5p_mfc_opr.h
 *
 * Header file for Samsung MFC (Multi Function Codec - FIMV) driver
 * Contains declarations of hw related functions.
 *
 * Kamil Debski, Copyright (C) 2012 Samsung Electronics Co., Ltd.
 * http://www.samsung.com/
 */


#ifndef S5P_MFC_OPR_H_
#define S5P_MFC_OPR_H_

#include "s5p_mfc_common.h"

struct s5p_mfc_regs {

 /* codec common registers */
 void __iomem *risc_on;
 void __iomem *risc2host_int;
 void __iomem *host2risc_int;
 void __iomem *risc_base_address;
 void __iomem *mfc_reset;
 void __iomem *host2risc_command;
 void __iomem *risc2host_command;
 void __iomem *mfc_bus_reset_ctrl;
 void __iomem *firmware_version;
 void __iomem *instance_id;
 void __iomem *codec_type;
 void __iomem *context_mem_addr;
 void __iomem *context_mem_size;
 void __iomem *pixel_format;
 void __iomem *metadata_enable;
 void __iomem *mfc_version;
 void __iomem *dbg_info_enable;
 void __iomem *dbg_buffer_addr;
 void __iomem *dbg_buffer_size;
 void __iomem *hed_control;
 void __iomem *mfc_timeout_value;
 void __iomem *hed_shared_mem_addr;
 void __iomem *dis_shared_mem_addr;/* only v7 */
 void __iomem *ret_instance_id;
 void __iomem *error_code;
 void __iomem *dbg_buffer_output_size;
 void __iomem *metadata_status;
 void __iomem *metadata_addr_mb_info;
 void __iomem *metadata_size_mb_info;
 void __iomem *dbg_info_stage_counter;

 /* decoder registers */
 void __iomem *d_crc_ctrl;
 void __iomem *d_dec_options;
 void __iomem *d_display_delay;
 void __iomem *d_set_frame_width;
 void __iomem *d_set_frame_height;
 void __iomem *d_sei_enable;
 void __iomem *d_min_num_dpb;
 void __iomem *d_min_first_plane_dpb_size;
 void __iomem *d_min_second_plane_dpb_size;
 void __iomem *d_min_third_plane_dpb_size;/* only v8 */
 void __iomem *d_min_num_mv;
 void __iomem *d_mvc_num_views;
 void __iomem *d_min_num_dis;/* only v7 */
 void __iomem *d_min_first_dis_size;/* only v7 */
 void __iomem *d_min_second_dis_size;/* only v7 */
 void __iomem *d_min_third_dis_size;/* only v7 */
 void __iomem *d_post_filter_luma_dpb0;/*  v7 and v8 */
 void __iomem *d_post_filter_luma_dpb1;/* v7 and v8 */
 void __iomem *d_post_filter_luma_dpb2;/* only v7 */
 void __iomem *d_post_filter_chroma_dpb0;/* v7 and v8 */
 void __iomem *d_post_filter_chroma_dpb1;/* v7 and v8 */
 void __iomem *d_post_filter_chroma_dpb2;/* only v7 */
 void __iomem *d_num_dpb;
 void __iomem *d_num_mv;
 void __iomem *d_init_buffer_options;
 void __iomem *d_first_plane_dpb_stride_size;/* only v8 */
 void __iomem *d_second_plane_dpb_stride_size;/* only v8 */
 void __iomem *d_third_plane_dpb_stride_size;/* only v8 */
 void __iomem *d_first_plane_dpb_size;
 void __iomem *d_second_plane_dpb_size;
 void __iomem *d_third_plane_dpb_size;/* only v8 */
 void __iomem *d_mv_buffer_size;
 void __iomem *d_first_plane_dpb;
 void __iomem *d_second_plane_dpb;
 void __iomem *d_third_plane_dpb;
 void __iomem *d_mv_buffer;
 void __iomem *d_scratch_buffer_addr;
 void __iomem *d_scratch_buffer_size;
 void __iomem *d_metadata_buffer_addr;
 void __iomem *d_metadata_buffer_size;
 void __iomem *d_nal_start_options;/* v7 and v8 */
 void __iomem *d_cpb_buffer_addr;
 void __iomem *d_cpb_buffer_size;
 void __iomem *d_available_dpb_flag_upper;
 void __iomem *d_available_dpb_flag_lower;
 void __iomem *d_cpb_buffer_offset;
 void __iomem *d_slice_if_enable;
 void __iomem *d_picture_tag;
 void __iomem *d_stream_data_size;
 void __iomem *d_dynamic_dpb_flag_upper;/* v7 and v8 */
 void __iomem *d_dynamic_dpb_flag_lower;/* v7 and v8 */
 void __iomem *d_display_frame_width;
 void __iomem *d_display_frame_height;
 void __iomem *d_display_status;
 void __iomem *d_display_first_plane_addr;
 void __iomem *d_display_second_plane_addr;
 void __iomem *d_display_third_plane_addr;/* only v8 */
 void __iomem *d_display_frame_type;
 void __iomem *d_display_crop_info1;
 void __iomem *d_display_crop_info2;
 void __iomem *d_display_picture_profile;
 void __iomem *d_display_luma_crc;/* v7 and v8 */
 void __iomem *d_display_chroma0_crc;/* v7 and v8 */
 void __iomem *d_display_chroma1_crc;/* only v8 */
 void __iomem *d_display_luma_crc_top;/* only v6 */
 void __iomem *d_display_chroma_crc_top;/* only v6 */
 void __iomem *d_display_luma_crc_bot;/* only v6 */
 void __iomem *d_display_chroma_crc_bot;/* only v6 */
 void __iomem *d_display_aspect_ratio;
 void __iomem *d_display_extended_ar;
 void __iomem *d_decoded_frame_width;
 void __iomem *d_decoded_frame_height;
 void __iomem *d_decoded_status;
 void __iomem *d_decoded_first_plane_addr;
 void __iomem *d_decoded_second_plane_addr;
 void __iomem *d_decoded_third_plane_addr;/* only v8 */
 void __iomem *d_decoded_frame_type;
 void __iomem *d_decoded_crop_info1;
 void __iomem *d_decoded_crop_info2;
 void __iomem *d_decoded_picture_profile;
 void __iomem *d_decoded_nal_size;
 void __iomem *d_decoded_luma_crc;
 void __iomem *d_decoded_chroma0_crc;
 void __iomem *d_decoded_chroma1_crc;/* only v8 */
 void __iomem *d_ret_picture_tag_top;
 void __iomem *d_ret_picture_tag_bot;
 void __iomem *d_ret_picture_time_top;
 void __iomem *d_ret_picture_time_bot;
 void __iomem *d_chroma_format;
 void __iomem *d_vc1_info;/* v7 and v8 */
 void __iomem *d_mpeg4_info;
 void __iomem *d_h264_info;
 void __iomem *d_metadata_addr_concealed_mb;
 void __iomem *d_metadata_size_concealed_mb;
 void __iomem *d_metadata_addr_vc1_param;
 void __iomem *d_metadata_size_vc1_param;
 void __iomem *d_metadata_addr_sei_nal;
 void __iomem *d_metadata_size_sei_nal;
 void __iomem *d_metadata_addr_vui;
 void __iomem *d_metadata_size_vui;
 void __iomem *d_metadata_addr_mvcvui;/* v7 and v8 */
 void __iomem *d_metadata_size_mvcvui;/* v7 and v8 */
 void __iomem *d_mvc_view_id;
 void __iomem *d_frame_pack_sei_avail;
 void __iomem *d_frame_pack_arrgment_id;
 void __iomem *d_frame_pack_sei_info;
 void __iomem *d_frame_pack_grid_pos;
 void __iomem *d_display_recovery_sei_info;/* v7 and v8 */
 void __iomem *d_decoded_recovery_sei_info;/* v7 and v8 */
 void __iomem *d_display_first_addr;/* only v7 */
 void __iomem *d_display_second_addr;/* only v7 */
 void __iomem *d_display_third_addr;/* only v7 */
 void __iomem *d_decoded_first_addr;/* only v7 */
 void __iomem *d_decoded_second_addr;/* only v7 */
 void __iomem *d_decoded_third_addr;/* only v7 */
 void __iomem *d_used_dpb_flag_upper;/* v7 and v8 */
 void __iomem *d_used_dpb_flag_lower;/* v7 and v8 */
 void __iomem *d_min_scratch_buffer_size; /* v10 and v12 */
 void __iomem *d_static_buffer_addr; /* v10 and v12 */
 void __iomem *d_static_buffer_size; /* v10 and v12 */

 /* encoder registers */
 void __iomem *e_frame_width;
 void __iomem *e_frame_height;
 void __iomem *e_cropped_frame_width;
 void __iomem *e_cropped_frame_height;
 void __iomem *e_frame_crop_offset;
 void __iomem *e_enc_options;
 void __iomem *e_picture_profile;
 void __iomem *e_vbv_buffer_size;
 void __iomem *e_vbv_init_delay;
 void __iomem *e_fixed_picture_qp;
 void __iomem *e_rc_config;
 void __iomem *e_rc_qp_bound;
 void __iomem *e_rc_qp_bound_pb;/* v7 and v8 */
 void __iomem *e_rc_mode;
 void __iomem *e_mb_rc_config;
 void __iomem *e_padding_ctrl;
 void __iomem *e_air_threshold;
 void __iomem *e_mv_hor_range;
 void __iomem *e_mv_ver_range;
 void __iomem *e_num_dpb;
 void __iomem *e_luma_dpb;
 void __iomem *e_chroma_dpb;
 void __iomem *e_me_buffer;
 void __iomem *e_scratch_buffer_addr;
 void __iomem *e_scratch_buffer_size;
 void __iomem *e_tmv_buffer0;
 void __iomem *e_tmv_buffer1;
 void __iomem *e_ir_buffer_addr;/* v7 and v8 */
 void __iomem *e_source_first_plane_addr;
 void __iomem *e_source_second_plane_addr;
 void __iomem *e_source_third_plane_addr;/* v7 and v8 */
 void __iomem *e_source_first_plane_stride;/* v7 and v8 */
 void __iomem *e_source_second_plane_stride;/* v7 and v8 */
 void __iomem *e_source_third_plane_stride;/* v7 and v8 */
 void __iomem *e_stream_buffer_addr;
 void __iomem *e_stream_buffer_size;
 void __iomem *e_roi_buffer_addr;
 void __iomem *e_param_change;
 void __iomem *e_ir_size;
 void __iomem *e_gop_config;
 void __iomem *e_mslice_mode;
 void __iomem *e_mslice_size_mb;
 void __iomem *e_mslice_size_bits;
 void __iomem *e_frame_insertion;
 void __iomem *e_rc_frame_rate;
 void __iomem *e_rc_bit_rate;
 void __iomem *e_rc_roi_ctrl;
 void __iomem *e_picture_tag;
 void __iomem *e_bit_count_enable;
 void __iomem *e_max_bit_count;
 void __iomem *e_min_bit_count;
 void __iomem *e_metadata_buffer_addr;
 void __iomem *e_metadata_buffer_size;
 void __iomem *e_encoded_source_first_plane_addr;
 void __iomem *e_encoded_source_second_plane_addr;
 void __iomem *e_encoded_source_third_plane_addr;/* v7 and v8 */
 void __iomem *e_stream_size;
 void __iomem *e_slice_type;
 void __iomem *e_picture_count;
 void __iomem *e_ret_picture_tag;
 void __iomem *e_stream_buffer_write_pointer; /*  only v6 */
 void __iomem *e_recon_luma_dpb_addr;
 void __iomem *e_recon_chroma_dpb_addr;
 void __iomem *e_metadata_addr_enc_slice;
 void __iomem *e_metadata_size_enc_slice;
 void __iomem *e_mpeg4_options;
 void __iomem *e_mpeg4_hec_period;
 void __iomem *e_aspect_ratio;
 void __iomem *e_extended_sar;
 void __iomem *e_h264_options;
 void __iomem *e_h264_options_2;/* v7 and v8 */
 void __iomem *e_h264_lf_alpha_offset;
 void __iomem *e_h264_lf_beta_offset;
 void __iomem *e_h264_i_period;
 void __iomem *e_h264_fmo_slice_grp_map_type;
 void __iomem *e_h264_fmo_num_slice_grp_minus1;
 void __iomem *e_h264_fmo_slice_grp_change_dir;
 void __iomem *e_h264_fmo_slice_grp_change_rate_minus1;
 void __iomem *e_h264_fmo_run_length_minus1_0;
 void __iomem *e_h264_aso_slice_order_0;
 void __iomem *e_h264_chroma_qp_offset;
 void __iomem *e_h264_num_t_layer;
 void __iomem *e_h264_hierarchical_qp_layer0;
 void __iomem *e_h264_frame_packing_sei_info;
 void __iomem *e_h264_nal_control;/* v7 and v8 */
 void __iomem *e_mvc_frame_qp_view1;
 void __iomem *e_mvc_rc_bit_rate_view1;
 void __iomem *e_mvc_rc_qbound_view1;
 void __iomem *e_mvc_rc_mode_view1;
 void __iomem *e_mvc_inter_view_prediction_on;
 void __iomem *e_vp8_options;/* v7 and v8 */
 void __iomem *e_vp8_filter_options;/* v7 and v8 */
 void __iomem *e_vp8_golden_frame_option;/* v7 and v8 */
 void __iomem *e_vp8_num_t_layer;/* v7 and v8 */
 void __iomem *e_vp8_hierarchical_qp_layer0;/* v7 and v8 */
 void __iomem *e_vp8_hierarchical_qp_layer1;/* v7 and v8 */
 void __iomem *e_vp8_hierarchical_qp_layer2;/* v7 and v8 */
 void __iomem *e_min_scratch_buffer_size; /* v10 and v12 */
 void __iomem *e_num_t_layer; /* v10 */
 void __iomem *e_hier_qp_layer0; /* v10 */
 void __iomem *e_hier_bit_rate_layer0; /* v10 */
 void __iomem *e_hevc_options; /* v10 */
 void __iomem *e_hevc_refresh_period; /* v10 */
 void __iomem *e_hevc_lf_beta_offset_div2; /* v10 */
 void __iomem *e_hevc_lf_tc_offset_div2; /* v10 */
 void __iomem *e_hevc_nal_control; /* v10 */
};

struct s5p_mfc_hw_ops {
 int (*alloc_dec_temp_buffers)(struct s5p_mfc_ctx *ctx);
 void (*release_dec_desc_buffer)(struct s5p_mfc_ctx *ctx);
 int (*alloc_codec_buffers)(struct s5p_mfc_ctx *ctx);
 void (*release_codec_buffers)(struct s5p_mfc_ctx *ctx);
 int (*alloc_instance_buffer)(struct s5p_mfc_ctx *ctx);
 void (*release_instance_buffer)(struct s5p_mfc_ctx *ctx);
 int (*alloc_dev_context_buffer)(struct s5p_mfc_dev *dev);
 void (*release_dev_context_buffer)(struct s5p_mfc_dev *dev);
 void (*dec_calc_dpb_size)(struct s5p_mfc_ctx *ctx);
 void (*enc_calc_src_size)(struct s5p_mfc_ctx *ctx);
 int (*set_enc_stream_buffer)(struct s5p_mfc_ctx *ctx,
   unsigned long addr, unsigned int size);
 void (*set_enc_frame_buffer)(struct s5p_mfc_ctx *ctx,
   unsigned long y_addr, unsigned long c_addr,
   unsigned long c_1_addr);
 void (*get_enc_frame_buffer)(struct s5p_mfc_ctx *ctx,
   unsigned long *y_addr, unsigned long *c_addr,
   unsigned long *c_1_addr);
 void (*try_run)(struct s5p_mfc_dev *dev);
 void (*clear_int_flags)(struct s5p_mfc_dev *dev);
 int (*get_dspl_y_adr)(struct s5p_mfc_dev *dev);
 int (*get_dec_y_adr)(struct s5p_mfc_dev *dev);
 int (*get_dspl_status)(struct s5p_mfc_dev *dev);
 int (*get_dec_status)(struct s5p_mfc_dev *dev);
 int (*get_dec_frame_type)(struct s5p_mfc_dev *dev);
 int (*get_disp_frame_type)(struct s5p_mfc_ctx *ctx);
 int (*get_consumed_stream)(struct s5p_mfc_dev *dev);
 int (*get_int_reason)(struct s5p_mfc_dev *dev);
 int (*get_int_err)(struct s5p_mfc_dev *dev);
 int (*err_dec)(unsigned int err);
 int (*get_img_width)(struct s5p_mfc_dev *dev);
 int (*get_img_height)(struct s5p_mfc_dev *dev);
 int (*get_dpb_count)(struct s5p_mfc_dev *dev);
 int (*get_mv_count)(struct s5p_mfc_dev *dev);
 int (*get_inst_no)(struct s5p_mfc_dev *dev);
 int (*get_enc_strm_size)(struct s5p_mfc_dev *dev);
 int (*get_enc_slice_type)(struct s5p_mfc_dev *dev);
 int (*get_enc_dpb_count)(struct s5p_mfc_dev *dev);
 unsigned int (*get_pic_type_top)(struct s5p_mfc_ctx *ctx);
 unsigned int (*get_pic_type_bot)(struct s5p_mfc_ctx *ctx);
 unsigned int (*get_crop_info_h)(struct s5p_mfc_ctx *ctx);
 unsigned int (*get_crop_info_v)(struct s5p_mfc_ctx *ctx);
 int (*get_min_scratch_buf_size)(struct s5p_mfc_dev *dev);
 int (*get_e_min_scratch_buf_size)(struct s5p_mfc_dev *dev);
};

void s5p_mfc_init_hw_ops(struct s5p_mfc_dev *dev);
void s5p_mfc_init_regs(struct s5p_mfc_dev *dev);
int s5p_mfc_alloc_priv_buf(struct s5p_mfc_dev *dev, unsigned int mem_ctx,
      struct s5p_mfc_priv_buf *b);
void s5p_mfc_release_priv_buf(struct s5p_mfc_dev *dev,
         struct s5p_mfc_priv_buf *b);
int s5p_mfc_alloc_generic_buf(struct s5p_mfc_dev *dev, unsigned int mem_ctx,
      struct s5p_mfc_priv_buf *b);
void s5p_mfc_release_generic_buf(struct s5p_mfc_dev *dev,
         struct s5p_mfc_priv_buf *b);


#endif /* S5P_MFC_OPR_H_ */

Messung V0.5
C=84 H=100 G=92

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge