1 
   2 
   3 
   4 
   5 
   6 
   7 #ifndef __SST_BYT_IPC_H
   8 #define __SST_BYT_IPC_H
   9 
  10 #include <linux/types.h>
  11 
  12 struct sst_byt;
  13 struct sst_byt_stream;
  14 struct sst_pdata;
  15 extern struct sst_ops sst_byt_ops;
  16 
  17 
  18 #define SST_BYT_MAILBOX_OFFSET          0x144000
  19 #define SST_BYT_TIMESTAMP_OFFSET        (SST_BYT_MAILBOX_OFFSET + 0x800)
  20 
  21 
  22 
  23 
  24 
  25 #define SST_BYT_IPC_MAX_PAYLOAD_SIZE    200
  26 
  27 
  28 struct sst_byt_stream *sst_byt_stream_new(struct sst_byt *byt, int id,
  29         uint32_t (*get_write_position)(struct sst_byt_stream *stream,
  30                                        void *data),
  31         void *data);
  32 
  33 
  34 int sst_byt_stream_set_bits(struct sst_byt *byt, struct sst_byt_stream *stream,
  35                             int bits);
  36 int sst_byt_stream_set_channels(struct sst_byt *byt,
  37                                 struct sst_byt_stream *stream, u8 channels);
  38 int sst_byt_stream_set_rate(struct sst_byt *byt, struct sst_byt_stream *stream,
  39                             unsigned int rate);
  40 int sst_byt_stream_type(struct sst_byt *byt, struct sst_byt_stream *stream,
  41                         int codec_type, int stream_type, int operation);
  42 int sst_byt_stream_buffer(struct sst_byt *byt, struct sst_byt_stream *stream,
  43                           uint32_t buffer_addr, uint32_t buffer_size);
  44 int sst_byt_stream_commit(struct sst_byt *byt, struct sst_byt_stream *stream);
  45 int sst_byt_stream_free(struct sst_byt *byt, struct sst_byt_stream *stream);
  46 
  47 
  48 int sst_byt_stream_start(struct sst_byt *byt, struct sst_byt_stream *stream,
  49                          u32 start_offset);
  50 int sst_byt_stream_stop(struct sst_byt *byt, struct sst_byt_stream *stream);
  51 int sst_byt_stream_pause(struct sst_byt *byt, struct sst_byt_stream *stream);
  52 int sst_byt_stream_resume(struct sst_byt *byt, struct sst_byt_stream *stream);
  53 
  54 int sst_byt_get_dsp_position(struct sst_byt *byt,
  55                              struct sst_byt_stream *stream, int buffer_size);
  56 
  57 
  58 int sst_byt_dsp_init(struct device *dev, struct sst_pdata *pdata);
  59 void sst_byt_dsp_free(struct device *dev, struct sst_pdata *pdata);
  60 struct sst_dsp *sst_byt_get_dsp(struct sst_byt *byt);
  61 int sst_byt_dsp_suspend_late(struct device *dev, struct sst_pdata *pdata);
  62 int sst_byt_dsp_boot(struct device *dev, struct sst_pdata *pdata);
  63 int sst_byt_dsp_wait_for_ready(struct device *dev, struct sst_pdata *pdata);
  64 
  65 #endif