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