/* By Thomas.Lange@Corelatus.com 001025
   $Revision: 1.6 $
   
   Definitions for EEPROM/VOLT METER  DS2438
   Copyright (C) 2000-2001 Corelatus AB */

#ifndef INCeedevh
#define INCeedevh

#define E_DEBUG(fmt,args...) if( Debug ) printk(KERN_DEBUG"EE: " fmt, ##args) 

#define PORT_B_PAR ((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pbpar
#define PORT_B_ODR ((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pbodr
#define PORT_B_DIR ((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pbdir
#define PORT_B_DAT ((volatile immap_t *)CFG_IMMR)->im_cpm.cp_pbdat

#define SET_PORT_B_INPUT(Mask)  PORT_B_DIR &= ~(Mask)
#define SET_PORT_B_OUTPUT(Mask) PORT_B_DIR |= Mask 

#define WRITE_PORT_B(Mask,Value) { \
			if (Value) PORT_B_DAT |= Mask; \
			else PORT_B_DAT &= ~(Mask); \
		}
#define WRITE_PORT(Value) WRITE_PORT_B(PB_EEPROM,Value) 

#define READ_PORT (PORT_B_DAT&PB_EEPROM)

/* 64 bytes chip */
#define EE_CHIP_SIZE 64

/* We use this resistor for measuring the current drain on 3.3V */
#define CURRENT_RESISTOR 0.022

/* microsecs
   Pull line down at least this long for reset pulse */
#define RESET_LOW_TIME    490

/* Read presence pulse after we release reset pulse */
#define PRESENCE_TIMEOUT  100
#define PRESENCE_LOW_TIME 200

#define WRITE_0_LOW 80
#define WRITE_1_LOW 2
#define TOTAL_WRITE_LOW 80

#define READ_LOW        2
#define READ_TIMEOUT   10
#define TOTAL_READ_LOW 80

/*** Rom function commands ***/
#define READ_ROM   0x33
#define MATCH_ROM  0x55
#define SKIP_ROM   0xCC
#define SEARCH_ROM 0xF0


/*** Memory_command_function ***/
#define WRITE_SCRATCHPAD 0x4E
#define READ_SCRATCHPAD  0xBE
#define COPY_SCRATCHPAD  0x48
#define RECALL_MEMORY    0xB8
#define CONVERT_TEMP     0x44
#define CONVERT_VOLTAGE  0xB4

/* Chip is divided in 8 pages, 8 bytes each */

#define EE_PAGE_SIZE 8

/* All chip data we want are in page 0 */

/* Bytes in page 0 */
#define EE_P0_STATUS   0
#define EE_P0_TEMP_LSB 1
#define EE_P0_TEMP_MSB 2
#define EE_P0_VOLT_LSB 3
#define EE_P0_VOLT_MSB 4
#define EE_P0_CURRENT_LSB 5
#define EE_P0_CURRENT_MSB 6


/* 40 byte user data is located at page 3-7 */
#define EE_USER_PAGE_0 3
#define USER_PAGES 5

#endif /* INCeedevh */
