blob: ec679498c9ae529bd3811cca09025e0b59beff50 [file] [log] [blame]
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef AUDIO_DSP_MODULES_H
#define AUDIO_DSP_MODULES_H
#include <linux/device.h>
#include <linux/timer.h>
#include <linux/dma-mapping.h>
struct audiodsp_priv {
struct class *class;
struct device *dev;
struct device *micro_dev;
struct timer_list dsp_mointer;
struct list_head mcode_list;
int mcode_id;
/* mcode lock */
spinlock_t mcode_lock;
int code_mem_size;
struct mail_msg *mailbox_reg;
struct mail_msg *mailbox_reg2;
struct dsp_working_info *dsp_work_details;
unsigned long dsp_code_start;
unsigned long dsp_code_size;
void *dsp_stack_start;
unsigned long dsp_stack_size;
void *dsp_gstack_start;
unsigned long dsp_gstack_size;
unsigned long dsp_heap_start;
unsigned long dsp_heap_size;
/* dsp mutex */
struct mutex dsp_mutex;
char dsp_codename[32];
unsigned long dsp_start_time; /* system jiffies */
unsigned long dsp_end_time; /* system jiffies */
int stream_fmt;
int last_stream_fmt;
unsigned int last_valid_pts;
int out_len_after_last_valid_pts;
int decode_error_count;
int decode_fatal_err;
int dsp_is_started;
void *stream_buffer_mem;
int stream_buffer_mem_size;
int decoded_nb_frames;
int first_lookup_over;
int format_wait_count;
unsigned long stream_buffer_start;
unsigned long stream_buffer_end;
unsigned long stream_buffer_size;
/* stream buffer _mutex */
struct mutex stream_buffer_mutex;
struct completion decode_completion;
void __iomem *p;
/* for power management */
unsigned int dsp_abnormal_count;
unsigned int last_ablevel;
unsigned int last_pcmlevel;
};
struct audiodsp_priv *audiodsp_privdata(void);
#define DSP_PRNT(fmt, args...) pr_info("[dsp]" fmt, ##args)
void tsync_pcr_recover(void);
void tsync_pcr_recover(void);
unsigned int IEC958_mode_raw;
unsigned int IEC958_mode_codec;
/*extern int decopt; */
struct audio_info *get_audio_info(void);
void aml_alsa_hw_reprepare(void);
void dsp_get_debug_interface(int flag);
/* extern void audiodsp_moniter(unsigned long); */
#endif