Signed-off-by: Shijith Thotton <shijith.thot...@caviumnetworks.com>
Signed-off-by: Jerin Jacob <jerin.ja...@caviumnetworks.com>
Signed-off-by: Derek Chickles <derek.chick...@caviumnetworks.com>
Signed-off-by: Venkat Koppula <venkat.kopp...@caviumnetworks.com>
Signed-off-by: Srisivasubramanian S <ssriniva...@caviumnetworks.com>
Signed-off-by: Mallesham Jatharakonda <mjatharako...@oneconvergence.com>
---
 drivers/net/liquidio/base/lio_hw_defs.h | 67 +++++++++++++++++++++++++++++++++
 1 file changed, 67 insertions(+)

diff --git a/drivers/net/liquidio/base/lio_hw_defs.h 
b/drivers/net/liquidio/base/lio_hw_defs.h
index db42f3e..9a7a894 100644
--- a/drivers/net/liquidio/base/lio_hw_defs.h
+++ b/drivers/net/liquidio/base/lio_hw_defs.h
@@ -34,6 +34,8 @@
 #ifndef _LIO_HW_DEFS_H_
 #define _LIO_HW_DEFS_H_
 
+#include <rte_io.h>
+
 #ifndef PCI_VENDOR_ID_CAVIUM
 #define PCI_VENDOR_ID_CAVIUM   0x177D
 #endif
@@ -41,4 +43,69 @@
 #define LIO_CN23XX_VF_VID      0x9712
 
 #define LIO_DEVICE_NAME_LEN            32
+
+/* Routines for reading and writing CSRs */
+#ifdef RTE_LIBRTE_LIO_DEBUG_REGS
+#define lio_write_csr(lio_dev, reg_off, value)                         \
+       do {                                                            \
+               typeof(lio_dev) _dev = lio_dev;                         \
+               typeof(reg_off) _reg_off = reg_off;                     \
+               typeof(value) _value = value;                           \
+               PMD_REGS_LOG(_dev,                                      \
+                            "Write32: Reg: 0x%08lx Val: 0x%08lx\n",    \
+                            (unsigned long)_reg_off,                   \
+                            (unsigned long)_value);                    \
+               rte_write32(_value, _dev->hw_addr + _reg_off);          \
+       } while (0)
+
+#define lio_write_csr64(lio_dev, reg_off, val64)                       \
+       do {                                                            \
+               typeof(lio_dev) _dev = lio_dev;                         \
+               typeof(reg_off) _reg_off = reg_off;                     \
+               typeof(val64) _val64 = val64;                           \
+               PMD_REGS_LOG(                                           \
+                   _dev,                                               \
+                   "Write64: Reg: 0x%08lx Val: 0x%016llx\n",           \
+                   (unsigned long)_reg_off,                            \
+                   (unsigned long long)_val64);                        \
+               rte_write64(_val64, _dev->hw_addr + _reg_off);          \
+       } while (0)
+
+#define lio_read_csr(lio_dev, reg_off)                                 \
+       ({                                                              \
+               typeof(lio_dev) _dev = lio_dev;                         \
+               typeof(reg_off) _reg_off = reg_off;                     \
+               uint32_t val = rte_read32(_dev->hw_addr + _reg_off);    \
+               PMD_REGS_LOG(_dev,                                      \
+                            "Read32: Reg: 0x%08lx Val: 0x%08lx\n",     \
+                            (unsigned long)_reg_off,                   \
+                            (unsigned long)val);                       \
+               val;                                                    \
+       })
+
+#define lio_read_csr64(lio_dev, reg_off)                               \
+       ({                                                              \
+               typeof(lio_dev) _dev = lio_dev;                         \
+               typeof(reg_off) _reg_off = reg_off;                     \
+               uint64_t val64 = rte_read64(_dev->hw_addr + _reg_off);  \
+               PMD_REGS_LOG(                                           \
+                   _dev,                                               \
+                   "Read64: Reg: 0x%08lx Val: 0x%016llx\n",            \
+                   (unsigned long)_reg_off,                            \
+                   (unsigned long long)val64);                         \
+               val64;                                                  \
+       })
+#else
+#define lio_write_csr(lio_dev, reg_off, value)                         \
+       rte_write32(value, (lio_dev)->hw_addr + (reg_off))
+
+#define lio_write_csr64(lio_dev, reg_off, val64)                       \
+       rte_write64(val64, (lio_dev)->hw_addr + (reg_off))
+
+#define lio_read_csr(lio_dev, reg_off)                                 \
+       rte_read32((lio_dev)->hw_addr + (reg_off))
+
+#define lio_read_csr64(lio_dev, reg_off)                               \
+       rte_read64((lio_dev)->hw_addr + (reg_off))
+#endif
 #endif /* _LIO_HW_DEFS_H_ */
-- 
1.8.3.1

Reply via email to