source: PlatformSupport/CustomPeripherals/pcores/w3_iic_eeprom_axi_v1_01_a/src/w3_iic_eeprom.h

Last change on this file was 1927, checked in by murphpo, 11 years ago

AXI versions of WARP v3 support cores

File size: 2.6 KB
Line 
1/*****************************************************************
2* File: w3_iic_eeprom.h
3* Copyright (c) 2012 Mango Communications, all rights reseved
4* Released under the WARP License
5* See http://warp.rice.edu/license for details
6*****************************************************************/
7
8/// @cond EXCLUDE_FROM_DOCS
9//User code never uses the #define's from this header, so exclude them from the API docs
10
11#ifndef W3_iic_eeprom_H
12#define W3_iic_eeprom_H
13
14#include "xil_io.h"
15
16// Address offset for each slave register; exclude from docs, as users never use these directly
17#define W3_IIC_EEPROM_USER_SLV_SPACE_OFFSET (0x00000000)
18#define W3_IIC_EEPROM_SLV_REG0_OFFSET (W3_IIC_EEPROM_USER_SLV_SPACE_OFFSET + 0x00000000)
19#define W3_IIC_EEPROM_SLV_REG1_OFFSET (W3_IIC_EEPROM_USER_SLV_SPACE_OFFSET + 0x00000004)
20#define W3_IIC_EEPROM_SLV_REG2_OFFSET (W3_IIC_EEPROM_USER_SLV_SPACE_OFFSET + 0x00000008)
21#define W3_IIC_EEPROM_SLV_REG3_OFFSET (W3_IIC_EEPROM_USER_SLV_SPACE_OFFSET + 0x0000000C)
22#define W3_IIC_EEPROM_SLV_REG4_OFFSET (W3_IIC_EEPROM_USER_SLV_SPACE_OFFSET + 0x00000010)
23#define W3_IIC_EEPROM_SLV_REG5_OFFSET (W3_IIC_EEPROM_USER_SLV_SPACE_OFFSET + 0x00000014)
24#define W3_IIC_EEPROM_SLV_REG6_OFFSET (W3_IIC_EEPROM_USER_SLV_SPACE_OFFSET + 0x00000018)
25#define W3_IIC_EEPROM_SLV_REG7_OFFSET (W3_IIC_EEPROM_USER_SLV_SPACE_OFFSET + 0x0000001C)
26
27#define IIC_EEPROM_REG_CONFIG_STATUS    W3_IIC_EEPROM_SLV_REG0_OFFSET
28#define IIC_EEPROM_REG_CMD              W3_IIC_EEPROM_SLV_REG1_OFFSET
29#define IIC_EEPROM_REG_TX               W3_IIC_EEPROM_SLV_REG2_OFFSET
30#define IIC_EEPROM_REG_RX               W3_IIC_EEPROM_SLV_REG3_OFFSET
31
32//Masks for config/status register
33#define IIC_EEPROM_REGMASK_CLKDIV   0x000000FF
34#define IIC_EEPROM_REGMASK_COREEN   0x00000100
35#define IIC_EEPROM_REGMASK_RXACK    0x00010000
36#define IIC_EEPROM_REGMASK_BUSY     0x00020000
37#define IIC_EEPROM_REGMASK_AL       0x00040000
38#define IIC_EEPROM_REGMASK_TIP      0x00080000
39
40//Masks for command register
41#define IIC_EEPROM_REGMASK_START    0x00000001
42#define IIC_EEPROM_REGMASK_STOP     0x00000002
43#define IIC_EEPROM_REGMASK_READ     0x00000004
44#define IIC_EEPROM_REGMASK_WRITE    0x00000008
45#define IIC_EEPROM_REGMASK_ACK      0x00000010
46
47#define IIC_EEPROM_CONTROL_WORD_RD  0xA1
48#define IIC_EEPROM_CONTROL_WORD_WR  0xA0
49
50void iic_eeprom_init(u32 ba, u8 clkDiv);
51inline int iic_eeprom_waitForRxACK(u32 ba);
52int iic_eeprom_writeByte(u32 ba, u16 addrToWrite, u8 byteToWrite);
53int iic_eeprom_readByte(u32 ba, u16 addrToRead);
54u32 w3_eeprom_readSerialNum(u32 ba);
55u32 w3_eeprom_read_fpga_dna(u32 ba, int lo_hi);
56void w3_eeprom_readEthAddr(u32 ba, u8 addrSel, u8* addrBuf);
57
58#endif /** W3_iic_eeprom_H */
59/// @endcond
Note: See TracBrowser for help on using the repository browser.