diff options
Diffstat (limited to 'drivers/net/sfc/falcon_io.h')
| -rw-r--r-- | drivers/net/sfc/falcon_io.h | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/drivers/net/sfc/falcon_io.h b/drivers/net/sfc/falcon_io.h index ea08184ddfa9..6670cdfc41ab 100644 --- a/drivers/net/sfc/falcon_io.h +++ b/drivers/net/sfc/falcon_io.h | |||
| @@ -56,14 +56,27 @@ | |||
| 56 | #define FALCON_USE_QWORD_IO 1 | 56 | #define FALCON_USE_QWORD_IO 1 |
| 57 | #endif | 57 | #endif |
| 58 | 58 | ||
| 59 | #define _falcon_writeq(efx, value, reg) \ | 59 | #ifdef FALCON_USE_QWORD_IO |
| 60 | __raw_writeq((__force u64) (value), (efx)->membase + (reg)) | 60 | static inline void _falcon_writeq(struct efx_nic *efx, __le64 value, |
| 61 | #define _falcon_writel(efx, value, reg) \ | 61 | unsigned int reg) |
| 62 | __raw_writel((__force u32) (value), (efx)->membase + (reg)) | 62 | { |
| 63 | #define _falcon_readq(efx, reg) \ | 63 | __raw_writeq((__force u64)value, efx->membase + reg); |
| 64 | ((__force __le64) __raw_readq((efx)->membase + (reg))) | 64 | } |
| 65 | #define _falcon_readl(efx, reg) \ | 65 | static inline __le64 _falcon_readq(struct efx_nic *efx, unsigned int reg) |
| 66 | ((__force __le32) __raw_readl((efx)->membase + (reg))) | 66 | { |
| 67 | return (__force __le64)__raw_readq(efx->membase + reg); | ||
| 68 | } | ||
| 69 | #endif | ||
| 70 | |||
| 71 | static inline void _falcon_writel(struct efx_nic *efx, __le32 value, | ||
| 72 | unsigned int reg) | ||
| 73 | { | ||
| 74 | __raw_writel((__force u32)value, efx->membase + reg); | ||
| 75 | } | ||
| 76 | static inline __le32 _falcon_readl(struct efx_nic *efx, unsigned int reg) | ||
| 77 | { | ||
| 78 | return (__force __le32)__raw_readl(efx->membase + reg); | ||
| 79 | } | ||
| 67 | 80 | ||
| 68 | /* Writes to a normal 16-byte Falcon register, locking as appropriate. */ | 81 | /* Writes to a normal 16-byte Falcon register, locking as appropriate. */ |
| 69 | static inline void falcon_write(struct efx_nic *efx, efx_oword_t *value, | 82 | static inline void falcon_write(struct efx_nic *efx, efx_oword_t *value, |
