1ae06c70bSJeff Kirsher /* SPDX-License-Identifier: GPL-2.0 */
251dce24bSJeff Kirsher /* Copyright(c) 1999 - 2006 Intel Corporation. */
3dee1ad47SJeff Kirsher 
4dee1ad47SJeff Kirsher /* glue for the OS independent part of e1000
5dee1ad47SJeff Kirsher  * includes register access macros
6dee1ad47SJeff Kirsher  */
7dee1ad47SJeff Kirsher 
8dee1ad47SJeff Kirsher #ifndef _E1000_OSDEP_H_
9dee1ad47SJeff Kirsher #define _E1000_OSDEP_H_
10dee1ad47SJeff Kirsher 
11dee1ad47SJeff Kirsher #include <asm/io.h>
12dee1ad47SJeff Kirsher 
13dee1ad47SJeff Kirsher #define CONFIG_RAM_BASE         0x60000
14dee1ad47SJeff Kirsher #define GBE_CONFIG_OFFSET       0x0
15dee1ad47SJeff Kirsher 
16dee1ad47SJeff Kirsher #define GBE_CONFIG_RAM_BASE \
17dee1ad47SJeff Kirsher 	((unsigned int)(CONFIG_RAM_BASE + GBE_CONFIG_OFFSET))
18dee1ad47SJeff Kirsher 
19dee1ad47SJeff Kirsher #define GBE_CONFIG_BASE_VIRT \
20dee1ad47SJeff Kirsher 	((void __iomem *)phys_to_virt(GBE_CONFIG_RAM_BASE))
21dee1ad47SJeff Kirsher 
22dee1ad47SJeff Kirsher #define GBE_CONFIG_FLASH_WRITE(base, offset, count, data) \
23dee1ad47SJeff Kirsher 	(iowrite16_rep(base + offset, data, count))
24dee1ad47SJeff Kirsher 
25dee1ad47SJeff Kirsher #define GBE_CONFIG_FLASH_READ(base, offset, count, data) \
26dee1ad47SJeff Kirsher 	(ioread16_rep(base + (offset << 1), data, count))
27dee1ad47SJeff Kirsher 
28dee1ad47SJeff Kirsher #define er32(reg)							\
29dee1ad47SJeff Kirsher 	(readl(hw->hw_addr + ((hw->mac_type >= e1000_82543)		\
30dee1ad47SJeff Kirsher 			       ? E1000_##reg : E1000_82542_##reg)))
31dee1ad47SJeff Kirsher 
32dee1ad47SJeff Kirsher #define ew32(reg, value)						\
33dee1ad47SJeff Kirsher 	(writel((value), (hw->hw_addr + ((hw->mac_type >= e1000_82543)	\
34dee1ad47SJeff Kirsher 					 ? E1000_##reg : E1000_82542_##reg))))
35dee1ad47SJeff Kirsher 
36dee1ad47SJeff Kirsher #define E1000_WRITE_REG_ARRAY(a, reg, offset, value) ( \
37dee1ad47SJeff Kirsher     writel((value), ((a)->hw_addr + \
38dee1ad47SJeff Kirsher         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
39dee1ad47SJeff Kirsher         ((offset) << 2))))
40dee1ad47SJeff Kirsher 
41dee1ad47SJeff Kirsher #define E1000_READ_REG_ARRAY(a, reg, offset) ( \
42dee1ad47SJeff Kirsher     readl((a)->hw_addr + \
43dee1ad47SJeff Kirsher         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
44dee1ad47SJeff Kirsher         ((offset) << 2)))
45dee1ad47SJeff Kirsher 
46dee1ad47SJeff Kirsher #define E1000_READ_REG_ARRAY_DWORD E1000_READ_REG_ARRAY
47dee1ad47SJeff Kirsher #define E1000_WRITE_REG_ARRAY_DWORD E1000_WRITE_REG_ARRAY
48dee1ad47SJeff Kirsher 
49dee1ad47SJeff Kirsher #define E1000_WRITE_REG_ARRAY_WORD(a, reg, offset, value) ( \
50dee1ad47SJeff Kirsher     writew((value), ((a)->hw_addr + \
51dee1ad47SJeff Kirsher         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
52dee1ad47SJeff Kirsher         ((offset) << 1))))
53dee1ad47SJeff Kirsher 
54dee1ad47SJeff Kirsher #define E1000_READ_REG_ARRAY_WORD(a, reg, offset) ( \
55dee1ad47SJeff Kirsher     readw((a)->hw_addr + \
56dee1ad47SJeff Kirsher         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
57dee1ad47SJeff Kirsher         ((offset) << 1)))
58dee1ad47SJeff Kirsher 
59dee1ad47SJeff Kirsher #define E1000_WRITE_REG_ARRAY_BYTE(a, reg, offset, value) ( \
60dee1ad47SJeff Kirsher     writeb((value), ((a)->hw_addr + \
61dee1ad47SJeff Kirsher         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
62dee1ad47SJeff Kirsher         (offset))))
63dee1ad47SJeff Kirsher 
64dee1ad47SJeff Kirsher #define E1000_READ_REG_ARRAY_BYTE(a, reg, offset) ( \
65dee1ad47SJeff Kirsher     readb((a)->hw_addr + \
66dee1ad47SJeff Kirsher         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
67dee1ad47SJeff Kirsher         (offset)))
68dee1ad47SJeff Kirsher 
69dee1ad47SJeff Kirsher #define E1000_WRITE_FLUSH() er32(STATUS)
70dee1ad47SJeff Kirsher 
71dee1ad47SJeff Kirsher #define E1000_WRITE_ICH_FLASH_REG(a, reg, value) ( \
72dee1ad47SJeff Kirsher     writel((value), ((a)->flash_address + reg)))
73dee1ad47SJeff Kirsher 
74dee1ad47SJeff Kirsher #define E1000_READ_ICH_FLASH_REG(a, reg) ( \
75dee1ad47SJeff Kirsher     readl((a)->flash_address + reg))
76dee1ad47SJeff Kirsher 
77dee1ad47SJeff Kirsher #define E1000_WRITE_ICH_FLASH_REG16(a, reg, value) ( \
78dee1ad47SJeff Kirsher     writew((value), ((a)->flash_address + reg)))
79dee1ad47SJeff Kirsher 
80dee1ad47SJeff Kirsher #define E1000_READ_ICH_FLASH_REG16(a, reg) ( \
81dee1ad47SJeff Kirsher     readw((a)->flash_address + reg))
82dee1ad47SJeff Kirsher 
83dee1ad47SJeff Kirsher #endif /* _E1000_OSDEP_H_ */
84