1 1.1 alc /* 2 1.1 alc * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting 3 1.1 alc * Copyright (c) 2002-2008 Atheros Communications, Inc. 4 1.1 alc * 5 1.1 alc * Permission to use, copy, modify, and/or distribute this software for any 6 1.1 alc * purpose with or without fee is hereby granted, provided that the above 7 1.1 alc * copyright notice and this permission notice appear in all copies. 8 1.1 alc * 9 1.1 alc * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 1.1 alc * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 1.1 alc * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 1.1 alc * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 1.1 alc * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 1.1 alc * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 1.1 alc * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 1.1 alc * 17 1.1 alc * $Id: ar5212_eeprom.c,v 1.1.1.1 2008/12/11 04:46:40 alc Exp $ 18 1.1 alc */ 19 1.1 alc #include "opt_ah.h" 20 1.1 alc 21 1.1 alc #include "ah.h" 22 1.1 alc #include "ah_internal.h" 23 1.1 alc #include "ah_devid.h" 24 1.1 alc #ifdef AH_DEBUG 25 1.1 alc #include "ah_desc.h" /* NB: for HAL_PHYERR* */ 26 1.1 alc #endif 27 1.1 alc 28 1.1 alc #include "ar5212/ar5212.h" 29 1.1 alc #include "ar5212/ar5212reg.h" 30 1.1 alc #include "ar5212/ar5212phy.h" 31 1.1 alc 32 1.1 alc /* 33 1.1 alc * Read 16 bits of data from offset into *data 34 1.1 alc */ 35 1.1 alc HAL_BOOL 36 1.1 alc ar5212EepromRead(struct ath_hal *ah, u_int off, uint16_t *data) 37 1.1 alc { 38 1.1 alc OS_REG_WRITE(ah, AR_EEPROM_ADDR, off); 39 1.1 alc OS_REG_WRITE(ah, AR_EEPROM_CMD, AR_EEPROM_CMD_READ); 40 1.1 alc 41 1.1 alc if (!ath_hal_wait(ah, AR_EEPROM_STS, 42 1.1 alc AR_EEPROM_STS_READ_COMPLETE | AR_EEPROM_STS_READ_ERROR, 43 1.1 alc AR_EEPROM_STS_READ_COMPLETE)) { 44 1.1 alc HALDEBUG(ah, HAL_DEBUG_ANY, "%s: read failed for entry 0x%x\n", 45 1.1 alc __func__, off); 46 1.1 alc return AH_FALSE; 47 1.1 alc } 48 1.1 alc *data = OS_REG_READ(ah, AR_EEPROM_DATA) & 0xffff; 49 1.1 alc return AH_TRUE; 50 1.1 alc } 51