Lines Matching refs:sst
16 #include "sst-dsp.h"
17 #include "sst-dsp-priv.h"
20 #include <trace/events/intel-sst.h>
48 void sst_dsp_shim_write(struct sst_dsp *sst, u32 offset, u32 value)
52 spin_lock_irqsave(&sst->spinlock, flags);
53 sst->ops->write(sst->addr.shim, offset, value);
54 spin_unlock_irqrestore(&sst->spinlock, flags);
58 u32 sst_dsp_shim_read(struct sst_dsp *sst, u32 offset)
63 spin_lock_irqsave(&sst->spinlock, flags);
64 val = sst->ops->read(sst->addr.shim, offset);
65 spin_unlock_irqrestore(&sst->spinlock, flags);
71 void sst_dsp_shim_write_unlocked(struct sst_dsp *sst, u32 offset, u32 value)
73 sst->ops->write(sst->addr.shim, offset, value);
77 u32 sst_dsp_shim_read_unlocked(struct sst_dsp *sst, u32 offset)
79 return sst->ops->read(sst->addr.shim, offset);
83 int sst_dsp_shim_update_bits_unlocked(struct sst_dsp *sst, u32 offset,
90 ret = sst_dsp_shim_read_unlocked(sst, offset);
97 sst_dsp_shim_write_unlocked(sst, offset, new);
104 void sst_dsp_shim_update_bits_forced_unlocked(struct sst_dsp *sst, u32 offset,
110 ret = sst_dsp_shim_read_unlocked(sst, offset);
115 sst_dsp_shim_write_unlocked(sst, offset, new);
119 int sst_dsp_shim_update_bits(struct sst_dsp *sst, u32 offset,
125 spin_lock_irqsave(&sst->spinlock, flags);
126 change = sst_dsp_shim_update_bits_unlocked(sst, offset, mask, value);
127 spin_unlock_irqrestore(&sst->spinlock, flags);
133 void sst_dsp_shim_update_bits_forced(struct sst_dsp *sst, u32 offset,
138 spin_lock_irqsave(&sst->spinlock, flags);
139 sst_dsp_shim_update_bits_forced_unlocked(sst, offset, mask, value);
140 spin_unlock_irqrestore(&sst->spinlock, flags);
184 int sst_dsp_mailbox_init(struct sst_dsp *sst, u32 inbox_offset, size_t inbox_size,
187 sst->mailbox.in_base = sst->addr.lpe + inbox_offset;
188 sst->mailbox.out_base = sst->addr.lpe + outbox_offset;
189 sst->mailbox.in_size = inbox_size;
190 sst->mailbox.out_size = outbox_size;
195 void sst_dsp_outbox_write(struct sst_dsp *sst, void *message, size_t bytes)
201 memcpy_toio(sst->mailbox.out_base, message, bytes);
208 void sst_dsp_outbox_read(struct sst_dsp *sst, void *message, size_t bytes)
214 memcpy_fromio(message, sst->mailbox.out_base, bytes);
221 void sst_dsp_inbox_write(struct sst_dsp *sst, void *message, size_t bytes)
227 memcpy_toio(sst->mailbox.in_base, message, bytes);
234 void sst_dsp_inbox_read(struct sst_dsp *sst, void *message, size_t bytes)
240 memcpy_fromio(message, sst->mailbox.in_base, bytes);