static void gsl_reset_core(void) { u8 buf[4] = {0x00}; buf[0] = 0x88; gsl_write_interface(0xe0,buf,4); delay_ms(5); buf[0] = 0x04; gsl_write_interface(0xe4,buf,4); delay_ms(5); buf[0] = 0; gsl_write_interface(0xbc,buf,4); delay_ms(5); }
static void gsl_clear_reg(void) { u8 buf[4]={0}; //clear reg buf[0]=0x88; gsl_write_interface(0xe0,buf,4); delay_ms(5); buf[0]=0x1; gsl_write_interface(0x80,buf,4); delay_ms(5); buf[0]=0x4; gsl_write_interface(0xe4,buf,4); delay_ms(5); buf[0]=0x0; gsl_write_interface(0xe0,buf,4); delay_ms(5); //clear reg }
static int gsl_ts_write(struct i2c_client *client, u8 addr, u8 *pdata, u32 datalen) { int ret = 0; if (datalen > 125) { printk("%s too big datalen = %d!\n", __func__, datalen); return -1; } ret = gsl_write_interface(client,addr,pdata,datalen); return ret; }
static void gsl_load_fw(struct i2c_client *client,const struct fw_data *GSL_DOWNLOAD_DATA,int data_len) { u8 buf[DMA_TRANS_LEN*4] = {0}; u8 send_flag = 1; u8 addr=0; u32 source_line = 0; u32 source_len = data_len;//ARRAY_SIZE(GSL_DOWNLOAD_DATA); //print_info("=============gsl_load_fw start==============\n"); for (source_line = 0; source_line < source_len; source_line++) { /* init page trans, set the page val */ if (0xf0 == GSL_DOWNLOAD_DATA[source_line].offset) { memcpy(buf,&GSL_DOWNLOAD_DATA[source_line].val,4); gsl_write_interface(client, 0xf0, buf, 4); send_flag = 1; } else { if (1 == send_flag % (DMA_TRANS_LEN < 0x20 ? DMA_TRANS_LEN : 0x20)) addr = (u8)GSL_DOWNLOAD_DATA[source_line].offset; memcpy((buf+send_flag*4 -4),&GSL_DOWNLOAD_DATA[source_line].val,4); if (0 == send_flag % (DMA_TRANS_LEN < 0x20 ? DMA_TRANS_LEN : 0x20)) { gsl_write_interface(client, addr, buf, DMA_TRANS_LEN * 4); send_flag = 0; } send_flag++; } } //print_info("=============gsl_load_fw end==============\n"); }
static void gsl_load_fw(fw_data *GSL_FW_DATA,u32 len) { u8 buf[4] = {0}; u8 addr; u32 source_line = 0; u32 source_len = data_len;//ARRAY_SIZE(GSL_DOWNLOAD_DATA); for (source_line = 0; source_line < source_len; source_line++) { addr = GSL_FW_DATA[source_line].addr; memcpy(buf,&GSL_DOWNLOAD_DATA[source_line].val,4); gsl_write_interface(addr,buf,4); } }
static int gsl_read_MorePage(struct i2c_client *client,u32 addr,u8 *buf,u32 num) { u8 tmp_buf[4]; int i; int err; u32 temp1=addr; for(i=0;i<num/128;i++){ temp1 = addr+i*0x80; tmp_buf[3]=(u8)((temp1/0x80)>>24); tmp_buf[2]=(u8)((temp1/0x80)>>16); tmp_buf[1]=(u8)((temp1/0x80)>>8); tmp_buf[0]=(u8)((temp1/0x80)); gsl_write_interface(client,0xf0,tmp_buf,4); err = gsl_read_interface(client,temp1%0x80,&buf[i*128],128); } if(i*128 < num){ temp1=addr+i*0x80; tmp_buf[3]=(u8)((temp1/0x80)>>24); tmp_buf[2]=(u8)((temp1/0x80)>>16); tmp_buf[1]=(u8)((temp1/0x80)>>8); tmp_buf[0]=(u8)((temp1/0x80)); gsl_write_interface(client,0xf0,tmp_buf,4); err=gsl_read_interface(client,temp1%0x80,&buf[i*128],(num-i*0x80)); }
static void gsl_load_fw(struct i2c_client *client,const struct fw_data *GSL_DOWNLOAD_DATA,int data_len) { u8 buf[4] = {0}; //u8 send_flag = 1; u8 addr=0; u32 source_line = 0; u32 source_len = data_len;//ARRAY_SIZE(GSL_DOWNLOAD_DATA); //print_info("=============gsl_load_fw start==============\n"); for (source_line = 0; source_line < source_len; source_line++) { /* init page trans, set the page val */ addr = (u8)GSL_DOWNLOAD_DATA[source_line].offset; memcpy(buf,&GSL_DOWNLOAD_DATA[source_line].val,4); gsl_write_interface(client, addr, buf, 4); } //print_info("=============gsl_load_fw end==============\n"); }
static void gsl_start_core(void) { u8 buf[4] = {0}; gsl_write_interface(0xe0,buf,4); }