This source file includes following definitions.
- sof_io_write
- sof_io_read
- sof_io_write64
- sof_io_read64
- sof_mailbox_write
- sof_mailbox_read
- sof_block_write
- sof_block_read
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 #include <linux/io-64-nonatomic-lo-hi.h>
  12 #include <linux/platform_device.h>
  13 #include <sound/soc.h>
  14 #include <sound/sof.h>
  15 #include "sof-priv.h"
  16 
  17 
  18 
  19 
  20 
  21 
  22 
  23 
  24 void sof_io_write(struct snd_sof_dev *sdev, void __iomem *addr, u32 value)
  25 {
  26         writel(value, addr);
  27 }
  28 EXPORT_SYMBOL(sof_io_write);
  29 
  30 u32 sof_io_read(struct snd_sof_dev *sdev, void __iomem *addr)
  31 {
  32         return readl(addr);
  33 }
  34 EXPORT_SYMBOL(sof_io_read);
  35 
  36 void sof_io_write64(struct snd_sof_dev *sdev, void __iomem *addr, u64 value)
  37 {
  38         writeq(value, addr);
  39 }
  40 EXPORT_SYMBOL(sof_io_write64);
  41 
  42 u64 sof_io_read64(struct snd_sof_dev *sdev, void __iomem *addr)
  43 {
  44         return readq(addr);
  45 }
  46 EXPORT_SYMBOL(sof_io_read64);
  47 
  48 
  49 
  50 
  51 
  52 void sof_mailbox_write(struct snd_sof_dev *sdev, u32 offset,
  53                        void *message, size_t bytes)
  54 {
  55         void __iomem *dest = sdev->bar[sdev->mailbox_bar] + offset;
  56 
  57         memcpy_toio(dest, message, bytes);
  58 }
  59 EXPORT_SYMBOL(sof_mailbox_write);
  60 
  61 void sof_mailbox_read(struct snd_sof_dev *sdev, u32 offset,
  62                       void *message, size_t bytes)
  63 {
  64         void __iomem *src = sdev->bar[sdev->mailbox_bar] + offset;
  65 
  66         memcpy_fromio(message, src, bytes);
  67 }
  68 EXPORT_SYMBOL(sof_mailbox_read);
  69 
  70 
  71 
  72 
  73 
  74 void sof_block_write(struct snd_sof_dev *sdev, u32 bar, u32 offset, void *src,
  75                      size_t size)
  76 {
  77         void __iomem *dest = sdev->bar[bar] + offset;
  78         const u8 *src_byte = src;
  79         u32 affected_mask;
  80         u32 tmp;
  81         int m, n;
  82 
  83         m = size / 4;
  84         n = size % 4;
  85 
  86         
  87         __iowrite32_copy(dest, src, m);
  88 
  89         if (n) {
  90                 affected_mask = (1 << (8 * n)) - 1;
  91 
  92                 
  93 
  94 
  95 
  96                 tmp = ioread32(dest + m * 4);
  97                 tmp &= ~affected_mask;
  98 
  99                 tmp |= *(u32 *)(src_byte + m * 4) & affected_mask;
 100                 iowrite32(tmp, dest + m * 4);
 101         }
 102 }
 103 EXPORT_SYMBOL(sof_block_write);
 104 
 105 void sof_block_read(struct snd_sof_dev *sdev, u32 bar, u32 offset, void *dest,
 106                     size_t size)
 107 {
 108         void __iomem *src = sdev->bar[bar] + offset;
 109 
 110         memcpy_fromio(dest, src, size);
 111 }
 112 EXPORT_SYMBOL(sof_block_read);