BNX2X: printk helpers
[akaros.git] / kern / drivers / net / bnx2x / akaros_compat.h
1 /* Copyright (c) 2015 Google Inc.
2  *
3  * Dumping ground for converting between Akaros and other OSs. */
4
5 #ifndef ROS_KERN_AKAROS_COMPAT_H
6 #define ROS_KERN_AKAROS_COMPAT_H
7
8 /* Common headers that most driver files will need */
9
10 #include <assert.h>
11 #include <error.h>
12 #include <ip.h>
13 #include <kmalloc.h>
14 #include <kref.h>
15 #include <pmap.h>
16 #include <slab.h>
17 #include <smp.h>
18 #include <stdio.h>
19 #include <string.h>
20 #include <bitmap.h>
21 #include <mii.h>
22 #include <umem.h>
23 #include <mmio.h>
24 #include <taskqueue.h>
25
26 #define __rcu
27 #define unlikely(x) (x)
28
29 typedef unsigned long dma_addr_t;
30 /* these dma funcs are empty in linux with !CONFIG_NEED_DMA_MAP_STATE */
31 #define DEFINE_DMA_UNMAP_ADDR(ADDR_NAME)
32 #define DEFINE_DMA_UNMAP_LEN(LEN_NAME)
33 #define dma_unmap_addr(PTR, ADDR_NAME)           (0)
34 #define dma_unmap_addr_set(PTR, ADDR_NAME, VAL)  do { } while (0)
35 #define dma_unmap_len(PTR, LEN_NAME)             (0)
36 #define dma_unmap_len_set(PTR, LEN_NAME, VAL)    do { } while (0)
37 typedef int pci_power_t;
38
39 #define DEFINE_SEMAPHORE(name)  \
40     struct semaphore name = SEMAPHORE_INITIALIZER_IRQSAVE(name, 1)
41 #define sema_init(sem, val) sem_init_irqsave(sem, val)
42 #define up(sem) sem_up(sem)
43 #define down(sem) sem_down(sem)
44 #define down_trylock(sem) ({!sem_trydown(sem);})
45 /* In lieu of spatching, I wanted to keep the distinction between down and
46  * down_interruptible/down_timeout.  Akaros doesn't have the latter. */
47 #define down_interruptible(sem) ({sem_down(sem); 0;})
48 #define down_timeout(sem, timeout) ({sem_down(sem); 0;})
49
50 /* Linux printk front ends */
51 #ifndef pr_fmt
52 #define pr_fmt(fmt) fmt
53 #endif
54
55 #define KERN_EMERG
56 #define KERN_ALERT
57 #define KERN_CRIT
58 #define KERN_ERR
59 #define KERN_WARNING
60 #define KERN_NOTICE
61 #define KERN_INFO
62 #define KERN_CONT
63 #define KERN_DEBUG
64
65 /*
66  * These can be used to print at the various log levels.
67  * All of these will print unconditionally, although note that pr_debug()
68  * and other debug macros are compiled out unless either DEBUG is defined
69  * or CONFIG_DYNAMIC_DEBUG is set.
70  */
71 #define pr_emerg(fmt, ...) \
72         printk(KERN_EMERG pr_fmt(fmt), ##__VA_ARGS__)
73 #define pr_alert(fmt, ...) \
74         printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__)
75 #define pr_crit(fmt, ...) \
76         printk(KERN_CRIT pr_fmt(fmt), ##__VA_ARGS__)
77 #define pr_err(fmt, ...) \
78         printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
79 #define pr_warning(fmt, ...) \
80         printk(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
81 #define pr_warn pr_warning
82 #define pr_notice(fmt, ...) \
83         printk(KERN_NOTICE pr_fmt(fmt), ##__VA_ARGS__)
84 #define pr_info(fmt, ...) \
85         printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__)
86 #define pr_cont(fmt, ...) \
87         printk(KERN_CONT fmt, ##__VA_ARGS__)
88
89 /* pr_devel() should produce zero code unless DEBUG is defined */
90 #ifdef DEBUG
91 #define pr_devel(fmt, ...) \
92         printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
93 #else
94 #define pr_devel(fmt, ...) \
95         printd(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
96 #endif
97 #define pr_debug pr_devel
98
99 enum {
100         NETIF_MSG_DRV           = 0x0001,
101         NETIF_MSG_PROBE         = 0x0002,
102         NETIF_MSG_LINK          = 0x0004,
103         NETIF_MSG_TIMER         = 0x0008,
104         NETIF_MSG_IFDOWN        = 0x0010,
105         NETIF_MSG_IFUP          = 0x0020,
106         NETIF_MSG_RX_ERR        = 0x0040,
107         NETIF_MSG_TX_ERR        = 0x0080,
108         NETIF_MSG_TX_QUEUED     = 0x0100,
109         NETIF_MSG_INTR          = 0x0200,
110         NETIF_MSG_TX_DONE       = 0x0400,
111         NETIF_MSG_RX_STATUS     = 0x0800,
112         NETIF_MSG_PKTDATA       = 0x1000,
113         NETIF_MSG_HW            = 0x2000,
114         NETIF_MSG_WOL           = 0x4000,
115 };
116
117 /* I'd like to spatch all of the pci methods, but I don't know how to do the
118  * reads.  Since we're not doing the reads, then no sense doing the writes. */
119 static inline int pci_read_config_byte(struct pci_device *dev, uint32_t off,
120                                        uint8_t *val)
121 {
122         *val = pcidev_read8(dev, off);
123         return 0;
124 }
125                                        
126 static inline int pci_read_config_word(struct pci_device *dev, uint32_t off,
127                                        uint16_t *val)
128 {
129         *val = pcidev_read16(dev, off);
130         return 0;
131 }
132                                        
133 static inline int pci_read_config_dword(struct pci_device *dev, uint32_t off,
134                                         uint32_t *val)
135 {
136         *val = pcidev_read32(dev, off);
137         return 0;
138 }
139                                        
140 static inline int pci_write_config_byte(struct pci_device *dev, uint32_t off,
141                                         uint8_t val)
142 {
143         pcidev_write8(dev, off, val);
144         return 0;
145 }
146
147 static inline int pci_write_config_word(struct pci_device *dev, uint32_t off,
148                                         uint16_t val)
149 {
150         pcidev_write16(dev, off, val);
151         return 0;
152 }
153
154 static inline int pci_write_config_dword(struct pci_device *dev, uint32_t off,
155                                          uint32_t val)
156 {
157         pcidev_write32(dev, off, val);
158         return 0;
159 }
160
161 #endif /* ROS_KERN_AKAROS_COMPAT_H */