0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef RT2X00MMIO_H
0014 #define RT2X00MMIO_H
0015
0016 #include <linux/io.h>
0017
0018
0019
0020
0021 static inline u32 rt2x00mmio_register_read(struct rt2x00_dev *rt2x00dev,
0022 const unsigned int offset)
0023 {
0024 return readl(rt2x00dev->csr.base + offset);
0025 }
0026
0027 static inline void rt2x00mmio_register_multiread(struct rt2x00_dev *rt2x00dev,
0028 const unsigned int offset,
0029 void *value, const u32 length)
0030 {
0031 memcpy_fromio(value, rt2x00dev->csr.base + offset, length);
0032 }
0033
0034 static inline void rt2x00mmio_register_write(struct rt2x00_dev *rt2x00dev,
0035 const unsigned int offset,
0036 u32 value)
0037 {
0038 writel(value, rt2x00dev->csr.base + offset);
0039 }
0040
0041 static inline void rt2x00mmio_register_multiwrite(struct rt2x00_dev *rt2x00dev,
0042 const unsigned int offset,
0043 const void *value,
0044 const u32 length)
0045 {
0046 __iowrite32_copy(rt2x00dev->csr.base + offset, value, length >> 2);
0047 }
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062 int rt2x00mmio_regbusy_read(struct rt2x00_dev *rt2x00dev,
0063 const unsigned int offset,
0064 const struct rt2x00_field32 field,
0065 u32 *reg);
0066
0067
0068
0069
0070
0071
0072
0073 struct queue_entry_priv_mmio {
0074 __le32 *desc;
0075 dma_addr_t desc_dma;
0076 };
0077
0078
0079
0080
0081
0082
0083
0084
0085 bool rt2x00mmio_rxdone(struct rt2x00_dev *rt2x00dev);
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095 void rt2x00mmio_flush_queue(struct data_queue *queue, bool drop);
0096
0097
0098
0099
0100 int rt2x00mmio_initialize(struct rt2x00_dev *rt2x00dev);
0101 void rt2x00mmio_uninitialize(struct rt2x00_dev *rt2x00dev);
0102
0103 #endif