|
@@ -12,6 +12,7 @@
|
|
* @spbcap: SPIB capabilities pointer
|
|
* @spbcap: SPIB capabilities pointer
|
|
* @mlcap: MultiLink capabilities pointer
|
|
* @mlcap: MultiLink capabilities pointer
|
|
* @gtscap: gts capabilities pointer
|
|
* @gtscap: gts capabilities pointer
|
|
|
|
+ * @drsmcap: dma resume capabilities pointer
|
|
* @hlink_list: link list of HDA links
|
|
* @hlink_list: link list of HDA links
|
|
*/
|
|
*/
|
|
struct hdac_ext_bus {
|
|
struct hdac_ext_bus {
|
|
@@ -23,6 +24,7 @@ struct hdac_ext_bus {
|
|
void __iomem *spbcap;
|
|
void __iomem *spbcap;
|
|
void __iomem *mlcap;
|
|
void __iomem *mlcap;
|
|
void __iomem *gtscap;
|
|
void __iomem *gtscap;
|
|
|
|
+ void __iomem *drsmcap;
|
|
|
|
|
|
struct list_head hlink_list;
|
|
struct list_head hlink_list;
|
|
};
|
|
};
|
|
@@ -72,6 +74,9 @@ enum hdac_ext_stream_type {
|
|
* @pplc_addr: processing pipe link stream pointer
|
|
* @pplc_addr: processing pipe link stream pointer
|
|
* @spib_addr: software position in buffers stream pointer
|
|
* @spib_addr: software position in buffers stream pointer
|
|
* @fifo_addr: software position Max fifos stream pointer
|
|
* @fifo_addr: software position Max fifos stream pointer
|
|
|
|
+ * @dpibr_addr: DMA position in buffer resume pointer
|
|
|
|
+ * @dpib: DMA position in buffer
|
|
|
|
+ * @lpib: Linear position in buffer
|
|
* @decoupled: stream host and link is decoupled
|
|
* @decoupled: stream host and link is decoupled
|
|
* @link_locked: link is locked
|
|
* @link_locked: link is locked
|
|
* @link_prepared: link is prepared
|
|
* @link_prepared: link is prepared
|
|
@@ -86,6 +91,10 @@ struct hdac_ext_stream {
|
|
void __iomem *spib_addr;
|
|
void __iomem *spib_addr;
|
|
void __iomem *fifo_addr;
|
|
void __iomem *fifo_addr;
|
|
|
|
|
|
|
|
+ void __iomem *dpibr_addr;
|
|
|
|
+
|
|
|
|
+ u32 dpib;
|
|
|
|
+ u32 lpib;
|
|
bool decoupled:1;
|
|
bool decoupled:1;
|
|
bool link_locked:1;
|
|
bool link_locked:1;
|
|
bool link_prepared;
|
|
bool link_prepared;
|
|
@@ -116,6 +125,11 @@ int snd_hdac_ext_stream_set_spib(struct hdac_ext_bus *ebus,
|
|
struct hdac_ext_stream *stream, u32 value);
|
|
struct hdac_ext_stream *stream, u32 value);
|
|
int snd_hdac_ext_stream_get_spbmaxfifo(struct hdac_ext_bus *ebus,
|
|
int snd_hdac_ext_stream_get_spbmaxfifo(struct hdac_ext_bus *ebus,
|
|
struct hdac_ext_stream *stream);
|
|
struct hdac_ext_stream *stream);
|
|
|
|
+void snd_hdac_ext_stream_drsm_enable(struct hdac_ext_bus *ebus,
|
|
|
|
+ bool enable, int index);
|
|
|
|
+int snd_hdac_ext_stream_set_dpibr(struct hdac_ext_bus *ebus,
|
|
|
|
+ struct hdac_ext_stream *stream, u32 value);
|
|
|
|
+int snd_hdac_ext_stream_set_lpib(struct hdac_ext_stream *stream, u32 value);
|
|
|
|
|
|
void snd_hdac_ext_link_stream_start(struct hdac_ext_stream *hstream);
|
|
void snd_hdac_ext_link_stream_start(struct hdac_ext_stream *hstream);
|
|
void snd_hdac_ext_link_stream_clear(struct hdac_ext_stream *hstream);
|
|
void snd_hdac_ext_link_stream_clear(struct hdac_ext_stream *hstream);
|