Пример #1
0
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);
}
Пример #2
0
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;
}
Пример #3
0
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;
}
Пример #4
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);
}
Пример #5
0
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);
}
Пример #6
0
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;
}