{\r
printk("%s:start to load FPGA HEX.........\n",__FUNCTION__);\r
\r
- rk2818_mux_api_set(GPIOE0_VIPDATA0_SEL_NAME,0);\r
- gpio_request(RK2818_PIN_PE0, NULL);\r
- gpio_direction_output(RK2818_PIN_PE0,1);\r
- udelay(2);\r
- gpio_direction_output(RK2818_PIN_PE0,0);\r
+ //rk2818_mux_api_set(GPIOE0_VIPDATA0_SEL_NAME,0);\r
+ //gpio_request(RK2818_PIN_PE0, NULL);\r
+ //gpio_direction_output(RK2818_PIN_PE0,1);\r
+ //udelay(2);\r
+ //gpio_direction_output(RK2818_PIN_PE0,0);\r
\r
spi_fpga_dlfw(spibyte, CONFIGURATION_SIZE);\r
\r
- gpio_direction_output(RK2818_PIN_PE0,1);\r
- udelay(2);\r
- gpio_direction_output(RK2818_PIN_PE0,0);\r
+ //gpio_direction_output(RK2818_PIN_PE0,1);\r
+ //udelay(2);\r
+ //gpio_direction_output(RK2818_PIN_PE0,0);\r
\r
return 0;\r
}\r
DBG("Enter::%s,LINE=%d ret = [%d]\n",__FUNCTION__,__LINE__,ret);\r
if(INT_I2C_READ_ACK == (ret & 0x07))\r
{\r
-\r
port->i2c.interrupt = INT_I2C_READ_ACK; \r
- #if SPI_FPGA_I2C_EVENT\r
wake_up(&port->i2c.wait_r);\r
- #endif\r
}\r
else if(INT_I2C_READ_NACK ==(ret & 0x07))\r
{\r
- #if SPI_FPGA_I2C_EVENT\r
+ port->i2c.interrupt = INT_I2C_READ_NACK;\r
wake_up(&port->i2c.wait_r);\r
- #endif\r
- printk("Error::read no ack!!check the I2C slave device ret=%d \n",ret);\r
+ printk("err:read no ack!ch=%d\n",channel);\r
}\r
else if(INT_I2C_WRITE_ACK == (ret & 0x07))\r
{\r
port->i2c.interrupt = INT_I2C_WRITE_ACK;\r
- #if SPI_FPGA_I2C_EVENT\r
wake_up(&port->i2c.wait_w);\r
- #endif\r
}\r
else if(INT_I2C_WRITE_NACK == (ret & 0x07))\r
{\r
- #if SPI_FPGA_I2C_EVENT\r
+ port->i2c.interrupt = INT_I2C_WRITE_NACK;\r
wake_up(&port->i2c.wait_w);\r
- #endif\r
- printk("Error::write no ack!!check the I2C slave device ret=%d \n",ret);\r
+ printk("err:write no ack!ch=%d\n",channel);\r
}\r
else\r
- printk("Error:ack value error!!check the I2C slave device ret=%d \n",ret);\r
+ printk("err:fpga's ack value error!\n");\r
return port->i2c.interrupt;\r
}\r
\r
reg = channel |ICE_SEL_I2C_FIFO |ICE_SEL_I2C_STOP;\r
spi_out(port,reg,len,SEL_I2C);\r
\r
-#if SPI_FPGA_I2C_EVENT\r
ret = wait_event_timeout(port->i2c.wait_r, ((port->i2c.interrupt == INT_I2C_READ_ACK) || (port->i2c.interrupt == INT_I2C_READ_NACK)), msecs_to_jiffies(60)); \r
if(ret == 0)\r
{\r
result = spi_in(port,channel,SEL_I2C);\r
pmsg->buf[i] = 0;\r
pmsg->buf[i] = result & 0xff ;\r
+ DBG("r_buf[%d]=0x%x\n",i,pmsg->buf[i]);\r
}\r
spin_lock(&port->i2c.i2c_lock);\r
port->i2c.interrupt &= INT_I2C_READ_MASK;\r
spin_unlock(&port->i2c.i2c_lock);\r
ret = pmsg->len;\r
-#else\r
- j = I2C_COUNT;\r
- while(j--)\r
-\r
- {\r
- if(port->i2c.interrupt == INT_I2C_READ_ACK)\r
- { \r
- //printk("%s:line=%d\n",__FUNCTION__,__LINE__);\r
- for(i = 0;i<len;i++)\r
- {\r
- result = spi_in(port,channel,SEL_I2C);\r
- pmsg->buf[i] = 0;\r
- pmsg->buf[i] = result & 0xff ;\r
- }\r
- spin_lock(&port->i2c.i2c_lock);\r
- port->i2c.interrupt &= INT_I2C_READ_MASK;\r
- spin_unlock(&port->i2c.i2c_lock);\r
- ret = pmsg->len;\r
- break;\r
- }\r
- else\r
- msleep(2);\r
- }\r
- \r
-#endif\r
//for(i = 0;i<len;i++)\r
- //printk("pmsg->buf[%d] = 0x%x \n",i,pmsg->buf[i]); \r
+ //printk("pmsg->buf[%d] = 0x%x \n",i,pmsg->buf[i]); \r
return ret>0 ? ret:-1;\r
\r
}\r
spi_out(port,reg,len,SEL_I2C);\r
reg = channel |ICE_SEL_I2C_TRANS;\r
//data;\r
- for(i = 0 ;i < len;i++){\r
+ for(i = 0 ;i < len;i++)\r
+ {\r
+ DBG("w_buf[%d]=0x%x\n",i,pmsg->buf[i]);\r
if(i==len-1 && pmsg->read_type == I2C_NORMAL)\r
{\r
reg = channel|ICE_SEL_I2C_STOP;\r
spi_out(port,reg,pmsg->buf[i],SEL_I2C);\r
- #if SPI_FPGA_I2C_EVENT\r
ret = wait_event_timeout(port->i2c.wait_w, ((port->i2c.interrupt == INT_I2C_WRITE_ACK) || (port->i2c.interrupt == INT_I2C_WRITE_NACK)), msecs_to_jiffies(60));\r
if(ret == 0)\r
{\r
port->i2c.interrupt &= INT_I2C_WRITE_MASK;\r
spin_unlock(&port->i2c.i2c_lock);\r
ret = pmsg->len;\r
- #else\r
- j = I2C_COUNT; \r
- while(j--)\r
- { \r
- if(port->i2c.interrupt == INT_I2C_WRITE_ACK)\r
- { \r
- //printk("wait num= %d,port->i2c.interrupt = 0x%x\n",i,port->i2c.interrupt);\r
- spin_lock(&port->i2c.i2c_lock);\r
- port->i2c.interrupt &= INT_I2C_WRITE_MASK;\r
- spin_unlock(&port->i2c.i2c_lock);\r
- ret = pmsg->len;\r
- break;\r
- }\r
- else\r
- msleep(2);\r
- }\r
- #endif\r
}\r
else if(i==len-1 && pmsg->read_type == I2C_NO_STOP)\r
{ \r
\r
#endif\r
\r
-#if SPI_FPGA_I2C_EVENT\r
init_waitqueue_head(&port->i2c.wait_w);\r
init_waitqueue_head(&port->i2c.wait_r);\r
-#endif\r
-\r
+ \r
return 0; \r
\r
}\r