1 /* 2 * Copyright 2002 Momentum Computer Inc. 3 * Author: Matthew Dharm <mdharm@momenco.com> 4 * 5 * include/asm-mips/mv64340-dep.h 6 * Board-dependent definitions for MV-64340 chip. 7 * 8 * This program is free software; you can redistribute it and/or modify it 9 * under the terms of the GNU General Public License as published by the 10 * Free Software Foundation; either version 2 of the License, or (at your 11 * option) any later version. 12 */ 13 14 #ifndef __MV64340_DEP_H__ 15 #define __MV64340_DEP_H__ 16 17 #include <asm/addrspace.h> /* for KSEG1ADDR() */ 18 #include <asm/byteorder.h> /* for cpu_to_le32() */ 19 20 extern unsigned long mv64340_base; 21 22 #define MV64340_BASE (mv64340_base) 23 24 /* 25 * Because of an error/peculiarity in the Galileo chip, we need to swap the 26 * bytes when running bigendian. 27 */ 28 29 #define MV_WRITE(ofs, data) \ 30 *(volatile u32 *)(MV64340_BASE+(ofs)) = cpu_to_le32(data) 31 #define MV_READ(ofs, data) \ 32 *(data) = le32_to_cpu(*(volatile u32 *)(MV64340_BASE+(ofs))) 33 #define MV_READ_DATA(ofs) \ 34 le32_to_cpu(*(volatile u32 *)(MV64340_BASE+(ofs))) 35 36 #define MV_WRITE_16(ofs, data) \ 37 *(volatile u16 *)(MV64340_BASE+(ofs)) = cpu_to_le16(data) 38 #define MV_READ_16(ofs, data) \ 39 *(data) = le16_to_cpu(*(volatile u16 *)(MV64340_BASE+(ofs))) 40 41 #define MV_WRITE_8(ofs, data) \ 42 *(volatile u8 *)(MV64340_BASE+(ofs)) = data 43 #define MV_READ_8(ofs, data) \ 44 *(data) = *(volatile u8 *)(MV64340_BASE+(ofs)) 45 46 #define MV_SET_REG_BITS(ofs,bits) \ 47 (*((volatile u32 *)(MV64340_BASE+(ofs)))) |= ((u32)cpu_to_le32(bits)) 48 #define MV_RESET_REG_BITS(ofs,bits) \ 49 (*((volatile u32 *)(MV64340_BASE+(ofs)))) &= ~((u32)cpu_to_le32(bits)) 50 51 #endif 52