Linux Kernel
3.7.1
|
#include <linux/delay.h>
#include <linux/pci.h>
#include <linux/vmalloc.h>
#include "ipath_kernel.h"
Go to the source code of this file.
Data Structures | |
struct | i2c_chain_desc |
Macros | |
#define | IPATH_EEPROM_DEV_V1 0xA0 |
#define | IPATH_EEPROM_DEV_V2 0xA2 |
#define | IPATH_TEMP_DEV 0x98 |
#define | IPATH_BAD_DEV (IPATH_EEPROM_DEV_V2+2) |
#define | IPATH_NO_DEV (0xFF) |
#define | READ_CMD 1 |
#define | WRITE_CMD 0 |
#define | VALID_TS_RD_REG_MASK 0xBF |
#define | VALID_TS_WR_REG_MASK ((1 << 9) | (1 << 0xB) | (1 << 0xD)) |
Enumerations | |
enum | i2c_type { i2c_line_scl = 0, i2c_line_sda } |
enum | i2c_state { i2c_line_low = 0, i2c_line_high } |
Functions | |
int | ipath_eeprom_read (struct ipath_devdata *dd, u8 eeprom_offset, void *buff, int len) |
int | ipath_eeprom_write (struct ipath_devdata *dd, u8 eeprom_offset, const void *buff, int len) |
void | ipath_get_eeprom_info (struct ipath_devdata *dd) |
int | ipath_update_eeprom_log (struct ipath_devdata *dd) |
void | ipath_inc_eeprom_err (struct ipath_devdata *dd, u32 eidx, u32 incr) |
int | ipath_tempsense_read (struct ipath_devdata *dd, u8 regnum) |
int | ipath_tempsense_write (struct ipath_devdata *dd, u8 regnum, u8 data) |
#define IPATH_BAD_DEV (IPATH_EEPROM_DEV_V2+2) |
Definition at line 69 of file ipath_eeprom.c.
#define IPATH_EEPROM_DEV_V1 0xA0 |
Definition at line 66 of file ipath_eeprom.c.
#define IPATH_EEPROM_DEV_V2 0xA2 |
Definition at line 67 of file ipath_eeprom.c.
#define IPATH_NO_DEV (0xFF) |
Definition at line 70 of file ipath_eeprom.c.
#define IPATH_TEMP_DEV 0x98 |
Definition at line 68 of file ipath_eeprom.c.
#define READ_CMD 1 |
Definition at line 102 of file ipath_eeprom.c.
#define VALID_TS_RD_REG_MASK 0xBF |
Definition at line 1076 of file ipath_eeprom.c.
#define VALID_TS_WR_REG_MASK ((1 << 9) | (1 << 0xB) | (1 << 0xD)) |
Definition at line 1153 of file ipath_eeprom.c.
#define WRITE_CMD 0 |
Definition at line 103 of file ipath_eeprom.c.
enum i2c_state |
Definition at line 97 of file ipath_eeprom.c.
enum i2c_type |
Definition at line 92 of file ipath_eeprom.c.
ipath_eeprom_read - receives bytes from the eeprom via I2C : the infinipath device : address to read from : where to store result : number of bytes to receive
Definition at line 641 of file ipath_eeprom.c.
ipath_eeprom_write - writes data to the eeprom via I2C : the infinipath device : where to place data : data to write : number of bytes to write
Definition at line 662 of file ipath_eeprom.c.
void ipath_get_eeprom_info | ( | struct ipath_devdata * | dd | ) |
void ipath_inc_eeprom_err | ( | struct ipath_devdata * | dd, |
u32 | eidx, | ||
u32 | incr | ||
) |
ipath_inc_eeprom_err - increment one of the four error counters that are logged to EEPROM. : the infinipath device : 0..3, the counter to increment : how much to add
Each counter is 8-bits, and saturates at 255 (0xFF). They are copied to the EEPROM (aka flash) whenever ipath_update_eeprom_log() is called, but it can only be called in a context that allows sleep. This function can be called even at interrupt level.
Definition at line 1015 of file ipath_eeprom.c.
int ipath_tempsense_read | ( | struct ipath_devdata * | dd, |
u8 | regnum | ||
) |
ipath_tempsense_read - read register of temp sensor via I2C : the infinipath device : register to read from
returns reg contents (0..255) or < 0 for error
Definition at line 1085 of file ipath_eeprom.c.
int ipath_tempsense_write | ( | struct ipath_devdata * | dd, |
u8 | regnum, | ||
u8 | data | ||
) |
ipath_tempsense_write - write register of temp sensor via I2C : the infinipath device : register to write : data to write
returns 0 for success or < 0 for error
Definition at line 1163 of file ipath_eeprom.c.
int ipath_update_eeprom_log | ( | struct ipath_devdata * | dd | ) |
ipath_update_eeprom_log - copy active-time and error counters to eeprom : the infinipath device
Although the time is kept as seconds in the ipath_devdata struct, it is rounded to hours for re-write, as we have only 16 bits in EEPROM. First-cut code reads whole (expected) struct ipath_flash, modifies, re-writes. Future direction: read/write only what we need, assuming that the EEPROM had to have been "good enough" for driver init, and if not, we aren't making it worse.
Definition at line 865 of file ipath_eeprom.c.