static BOOLEAN si_dvTAS5707RegsRead(void) { U8* pu8Buf; U8 cSubAddr[1]; cSubAddr[0] = sm_sRegImage.ucAddr; pu8Buf = sm_sRegImage.sDatas; return MApi_SWI2C_ReadBytes(TAS5707_BUSID, 1, cSubAddr, sm_sRegImage.ucNumber, pu8Buf); }
JNIEXPORT jint JNICALL Java_com_utsmta_mstar_MstarNative_scan_1touch_1pad_1key(JNIEnv *env, jclass jcls) { //printf("====Java_com_utsmta_mstar_MtaJNI_scan_1key====\n"); int key = -1; if(mdrv_gpio_get_level(KEY_FLAG_SAR_PORT)){ printf("mta mdrv_gpio_get_level true\n"); MS_U8 iicBuffer[5] = {0, 0, 0, 0, 0}; if(MApi_SWI2C_ReadBytes(KEYPAD_IIC_SLADE_ID, 0, NULL, 5, iicBuffer) && iicBuffer[3] == 0xaa){ key = iicBuffer[0] ; //printf("mta key before convert is:%d\n",key); key = convert2keycode(key); //printf("mta key after convert is:%d\n",key); } } return key; }
int eeprom_PageRead(MS_U16 offset, MS_U8 *pBuf, MS_U16 u16BufLen) { ST_EEPROM_PARA stEtype; MS_U16 u16writeSize=0; if(pBuf==NULL) { UBOOT_ERROR("input parameter 'pBuf' is a null pointer\n"); return -1; } while(u16BufLen>0) { stEtype = getEepeomParameter(stEepromArray[EepromID],offset); UBOOT_DEBUG(fmt, stEtype.u16SlaveIDAddr, stEtype.u8AddrCnt,"read", pBuf,stEtype.pu8Offset, u16BufLen); if(u16BufLen >= stEtype.u8PageSize) { u16writeSize = stEtype.u8PageSize; u16BufLen = u16BufLen - stEtype.u8PageSize; } else { u16writeSize = u16BufLen; u16BufLen = 0; } if(MApi_SWI2C_ReadBytes(stEtype.u16SlaveIDAddr, stEtype.u8AddrCnt,stEtype.pu8Offset,u16writeSize, (MS_U8*)(pBuf)) != TRUE) { UBOOT_ERROR("MApi_SWI2C_ReadBytes FAIL!!\n"); return -1; } pBuf+=u16writeSize; offset+=u16writeSize; } return 0; }
MS_BOOL MDrv_Panel_INX_NOVA_VB1_SWI2C_ReadBytes(MS_U16 u16BusNumSlaveID, MS_U8 u8addrnum, MS_U8* pu8addr, MS_U16 u16size, MS_U8* pu8data) { return MApi_SWI2C_ReadBytes(u16BusNumSlaveID, u8addrnum, pu8addr, u16size, pu8data); }
MS_BOOL MDrv_Ursa_7_SWI2C_ReadBytes(MS_U16 u16BusNumSlaveID, MS_U8 u8addrnum, MS_U8* pu8addr, MS_U16 u16size, MS_U8* pu8data) { return MApi_SWI2C_ReadBytes(u16BusNumSlaveID, u8addrnum, pu8addr, u16size, pu8data); }
int do_eeprom ( cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) { const char *const fmt = "\nEEPROM @0x%lX %s: addr %08lx off %04lx count %ld ... "; #if defined(CONFIG_SYS_I2C_MULTI_EEPROMS) if (argc == 6) { ulong dev_addr = simple_strtoul (argv[2], NULL, 16); ulong addr = simple_strtoul (argv[3], NULL, 16); ulong off = simple_strtoul (argv[4], NULL, 16); ulong cnt = simple_strtoul (argv[5], NULL, 16); #else if (argc == 5) { ulong dev_addr = CONFIG_SYS_DEF_EEPROM_ADDR; ulong addr = simple_strtoul (argv[2], NULL, 16); ulong off = simple_strtoul (argv[3], NULL, 16); ulong cnt = simple_strtoul (argv[4], NULL, 16); #endif /* CONFIG_SYS_I2C_MULTI_EEPROMS */ # if !defined(CONFIG_SPI) || defined(CONFIG_ENV_EEPROM_IS_ON_I2C) eeprom_init (); # endif /* !CONFIG_SPI */ if (strncmp (argv[1], "read", 4) == 0) { int rcode=0; printf (fmt, dev_addr, argv[1], addr, off, cnt); MS_U8 pu8addr[2]; pu8addr[0] = HIBYTE(off); pu8addr[1] = LOBYTE(off); #if(CONFIG_MSTARI2C == 1) rcode = MApi_SWI2C_ReadBytes((MS_U16)dev_addr, 2, (MS_U8*)pu8addr,(MS_U16)cnt, (MS_U8*)addr); #else rcode = eeprom_read (dev_addr, off, (uchar *) addr, cnt); #endif puts ("done\n"); return rcode; } else if (strncmp (argv[1], "write", 5) == 0) { int rcode=0; printf (fmt, dev_addr, argv[1], addr, off, cnt); #if(CONFIG_MSTARI2C == 1) rcode = MApi_SWI2C_WriteBytes((MS_U16)dev_addr,1, (MS_U8*)off,(MS_U16)cnt, (MS_U8*)addr); #else rcode = eeprom_write (dev_addr, off, (uchar *) addr, cnt); #endif puts ("done\n"); return rcode; } } return cmd_usage(cmdtp); } #endif /*----------------------------------------------------------------------- * * for CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 2 (16-bit EEPROM address) offset is * 0x000nxxxx for EEPROM address selectors at n, offset xxxx in EEPROM. * * for CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 1 (8-bit EEPROM page address) offset is * 0x00000nxx for EEPROM address selectors and page number at n. */ #if !defined(CONFIG_SPI) || defined(CONFIG_ENV_EEPROM_IS_ON_I2C) #if !defined(CONFIG_SYS_I2C_EEPROM_ADDR_LEN) || CONFIG_SYS_I2C_EEPROM_ADDR_LEN < 1 || CONFIG_SYS_I2C_EEPROM_ADDR_LEN > 2 #error CONFIG_SYS_I2C_EEPROM_ADDR_LEN must be 1 or 2 #endif #endif int eeprom_read (unsigned dev_addr, unsigned offset, uchar *buffer, unsigned cnt) { unsigned end = offset + cnt; unsigned blk_off; int rcode = 0; /* Read data until done or would cross a page boundary. * We must write the address again when changing pages * because the next page may be in a different device. */ while (offset < end) { unsigned alen, len; #if !defined(CONFIG_SYS_I2C_FRAM) unsigned maxlen; #endif #if CONFIG_SYS_I2C_EEPROM_ADDR_LEN == 1 && !defined(CONFIG_SPI_X) uchar addr[2]; blk_off = offset & 0xFF; /* block offset */ addr[0] = offset >> 8; /* block number */ addr[1] = blk_off; /* block offset */ alen = 2; #else uchar addr[3]; blk_off = offset & 0xFF; /* block offset */ addr[0] = offset >> 16; /* block number */ addr[1] = offset >> 8; /* upper address octet */ addr[2] = blk_off; /* lower address octet */ alen = 3; #endif /* CONFIG_SYS_I2C_EEPROM_ADDR_LEN, CONFIG_SPI_X */ addr[0] |= dev_addr; /* insert device address */ len = end - offset; /* * For a FRAM device there is no limit on the number of the * bytes that can be ccessed with the single read or write * operation. */ #if !defined(CONFIG_SYS_I2C_FRAM) maxlen = 0x100 - blk_off; if (maxlen > I2C_RXTX_LEN) maxlen = I2C_RXTX_LEN; if (len > maxlen) len = maxlen; #endif #if defined(CONFIG_SPI) && !defined(CONFIG_ENV_EEPROM_IS_ON_I2C) spi_read (addr, alen, buffer, len); #else if (i2c_read (addr[0], offset, alen-1, buffer, len) != 0) rcode = 1; #endif buffer += len; offset += len; } return rcode; }