1ae06c70bSJeff Kirsher /* SPDX-License-Identifier: GPL-2.0 */
2dee1ad47SJeff Kirsher /*******************************************************************************
3dee1ad47SJeff Kirsher 
4dee1ad47SJeff Kirsher   Intel PRO/1000 Linux driver
5dee1ad47SJeff Kirsher   Copyright(c) 1999 - 2006 Intel Corporation.
6dee1ad47SJeff Kirsher 
7dee1ad47SJeff Kirsher   This program is free software; you can redistribute it and/or modify it
8dee1ad47SJeff Kirsher   under the terms and conditions of the GNU General Public License,
9dee1ad47SJeff Kirsher   version 2, as published by the Free Software Foundation.
10dee1ad47SJeff Kirsher 
11dee1ad47SJeff Kirsher   This program is distributed in the hope it will be useful, but WITHOUT
12dee1ad47SJeff Kirsher   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13dee1ad47SJeff Kirsher   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
14dee1ad47SJeff Kirsher   more details.
15dee1ad47SJeff Kirsher 
16dee1ad47SJeff Kirsher   You should have received a copy of the GNU General Public License along with
17dee1ad47SJeff Kirsher   this program; if not, write to the Free Software Foundation, Inc.,
18dee1ad47SJeff Kirsher   51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
19dee1ad47SJeff Kirsher 
20dee1ad47SJeff Kirsher   The full GNU General Public License is included in this distribution in
21dee1ad47SJeff Kirsher   the file called "COPYING".
22dee1ad47SJeff Kirsher 
23dee1ad47SJeff Kirsher   Contact Information:
24dee1ad47SJeff Kirsher   Linux NICS <linux.nics@intel.com>
25dee1ad47SJeff Kirsher   e1000-devel Mailing List <e1000-devel@lists.sourceforge.net>
26dee1ad47SJeff Kirsher   Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
27dee1ad47SJeff Kirsher 
28dee1ad47SJeff Kirsher *******************************************************************************/
29dee1ad47SJeff Kirsher 
30dee1ad47SJeff Kirsher 
31dee1ad47SJeff Kirsher /* glue for the OS independent part of e1000
32dee1ad47SJeff Kirsher  * includes register access macros
33dee1ad47SJeff Kirsher  */
34dee1ad47SJeff Kirsher 
35dee1ad47SJeff Kirsher #ifndef _E1000_OSDEP_H_
36dee1ad47SJeff Kirsher #define _E1000_OSDEP_H_
37dee1ad47SJeff Kirsher 
38dee1ad47SJeff Kirsher #include <asm/io.h>
39dee1ad47SJeff Kirsher 
40dee1ad47SJeff Kirsher #define CONFIG_RAM_BASE         0x60000
41dee1ad47SJeff Kirsher #define GBE_CONFIG_OFFSET       0x0
42dee1ad47SJeff Kirsher 
43dee1ad47SJeff Kirsher #define GBE_CONFIG_RAM_BASE \
44dee1ad47SJeff Kirsher 	((unsigned int)(CONFIG_RAM_BASE + GBE_CONFIG_OFFSET))
45dee1ad47SJeff Kirsher 
46dee1ad47SJeff Kirsher #define GBE_CONFIG_BASE_VIRT \
47dee1ad47SJeff Kirsher 	((void __iomem *)phys_to_virt(GBE_CONFIG_RAM_BASE))
48dee1ad47SJeff Kirsher 
49dee1ad47SJeff Kirsher #define GBE_CONFIG_FLASH_WRITE(base, offset, count, data) \
50dee1ad47SJeff Kirsher 	(iowrite16_rep(base + offset, data, count))
51dee1ad47SJeff Kirsher 
52dee1ad47SJeff Kirsher #define GBE_CONFIG_FLASH_READ(base, offset, count, data) \
53dee1ad47SJeff Kirsher 	(ioread16_rep(base + (offset << 1), data, count))
54dee1ad47SJeff Kirsher 
55dee1ad47SJeff Kirsher #define er32(reg)							\
56dee1ad47SJeff Kirsher 	(readl(hw->hw_addr + ((hw->mac_type >= e1000_82543)		\
57dee1ad47SJeff Kirsher 			       ? E1000_##reg : E1000_82542_##reg)))
58dee1ad47SJeff Kirsher 
59dee1ad47SJeff Kirsher #define ew32(reg, value)						\
60dee1ad47SJeff Kirsher 	(writel((value), (hw->hw_addr + ((hw->mac_type >= e1000_82543)	\
61dee1ad47SJeff Kirsher 					 ? E1000_##reg : E1000_82542_##reg))))
62dee1ad47SJeff Kirsher 
63dee1ad47SJeff Kirsher #define E1000_WRITE_REG_ARRAY(a, reg, offset, value) ( \
64dee1ad47SJeff Kirsher     writel((value), ((a)->hw_addr + \
65dee1ad47SJeff Kirsher         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
66dee1ad47SJeff Kirsher         ((offset) << 2))))
67dee1ad47SJeff Kirsher 
68dee1ad47SJeff Kirsher #define E1000_READ_REG_ARRAY(a, reg, offset) ( \
69dee1ad47SJeff Kirsher     readl((a)->hw_addr + \
70dee1ad47SJeff Kirsher         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
71dee1ad47SJeff Kirsher         ((offset) << 2)))
72dee1ad47SJeff Kirsher 
73dee1ad47SJeff Kirsher #define E1000_READ_REG_ARRAY_DWORD E1000_READ_REG_ARRAY
74dee1ad47SJeff Kirsher #define E1000_WRITE_REG_ARRAY_DWORD E1000_WRITE_REG_ARRAY
75dee1ad47SJeff Kirsher 
76dee1ad47SJeff Kirsher #define E1000_WRITE_REG_ARRAY_WORD(a, reg, offset, value) ( \
77dee1ad47SJeff Kirsher     writew((value), ((a)->hw_addr + \
78dee1ad47SJeff Kirsher         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
79dee1ad47SJeff Kirsher         ((offset) << 1))))
80dee1ad47SJeff Kirsher 
81dee1ad47SJeff Kirsher #define E1000_READ_REG_ARRAY_WORD(a, reg, offset) ( \
82dee1ad47SJeff Kirsher     readw((a)->hw_addr + \
83dee1ad47SJeff Kirsher         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
84dee1ad47SJeff Kirsher         ((offset) << 1)))
85dee1ad47SJeff Kirsher 
86dee1ad47SJeff Kirsher #define E1000_WRITE_REG_ARRAY_BYTE(a, reg, offset, value) ( \
87dee1ad47SJeff Kirsher     writeb((value), ((a)->hw_addr + \
88dee1ad47SJeff Kirsher         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
89dee1ad47SJeff Kirsher         (offset))))
90dee1ad47SJeff Kirsher 
91dee1ad47SJeff Kirsher #define E1000_READ_REG_ARRAY_BYTE(a, reg, offset) ( \
92dee1ad47SJeff Kirsher     readb((a)->hw_addr + \
93dee1ad47SJeff Kirsher         (((a)->mac_type >= e1000_82543) ? E1000_##reg : E1000_82542_##reg) + \
94dee1ad47SJeff Kirsher         (offset)))
95dee1ad47SJeff Kirsher 
96dee1ad47SJeff Kirsher #define E1000_WRITE_FLUSH() er32(STATUS)
97dee1ad47SJeff Kirsher 
98dee1ad47SJeff Kirsher #define E1000_WRITE_ICH_FLASH_REG(a, reg, value) ( \
99dee1ad47SJeff Kirsher     writel((value), ((a)->flash_address + reg)))
100dee1ad47SJeff Kirsher 
101dee1ad47SJeff Kirsher #define E1000_READ_ICH_FLASH_REG(a, reg) ( \
102dee1ad47SJeff Kirsher     readl((a)->flash_address + reg))
103dee1ad47SJeff Kirsher 
104dee1ad47SJeff Kirsher #define E1000_WRITE_ICH_FLASH_REG16(a, reg, value) ( \
105dee1ad47SJeff Kirsher     writew((value), ((a)->flash_address + reg)))
106dee1ad47SJeff Kirsher 
107dee1ad47SJeff Kirsher #define E1000_READ_ICH_FLASH_REG16(a, reg) ( \
108dee1ad47SJeff Kirsher     readw((a)->flash_address + reg))
109dee1ad47SJeff Kirsher 
110dee1ad47SJeff Kirsher #endif /* _E1000_OSDEP_H_ */
111