#include <linux/of.h>\r
#include <linux/of_gpio.h>\r
#include <linux/miscdevice.h>\r
+#include <linux/hrtimer.h>\r
#include <linux/platform_data/spi-rockchip.h>\r
#include <asm/uaccess.h>\r
\r
int i = 0;\r
struct spi_device *spi = NULL;\r
char txbuf[256],rxbuf[256];\r
+ ktime_t k1,k2;\r
\r
printk("%s:0:bus=0,cs=0; 1:bus=0,cs=1; 2:bus=1,cs=0; 3:bus=1,cs=1; 4:bus=2,cs=0; 5:bus=2,cs=1\n",__func__);\r
\r
}\r
\r
spi = g_spi_test_data[nr]->spi;\r
-\r
- for(i=0; i<100; i++)\r
+ k1 = ktime_get();\r
+ for(i=0; i<5000; i++)\r
{\r
ret = spi_write(spi, txbuf, 256);\r
- ret = spi_read(spi, rxbuf, 256);\r
- ret = spi_write_then_read(spi,txbuf,256,rxbuf,256); \r
- ret = spi_write_and_read(spi,txbuf,rxbuf,256);\r
+ ret = spi_read(spi, rxbuf, 255);\r
+ ret = spi_write_then_read(spi,txbuf,254,rxbuf,253);\r
+ ret = spi_write_and_read(spi,txbuf,rxbuf,252);\r
+ ret = spi_write_and_read(spi,txbuf,rxbuf,251);\r
+ if(i%500==0)\r
printk("%s:test %d times\n\n",__func__,i+1);\r
}\r
- \r
+ k2 = ktime_get();\r
+ k2 = ktime_sub(k2, k1);\r
if(!ret)\r
- printk("%s:bus_num=%d,chip_select=%d,ok\n",__func__,spi->master->bus_num, spi->chip_select);\r
+ printk("%s:bus_num=%d,chip_select=%d,ok cost:%lldus data rate:%d Kbits/s\n",__func__,spi->master->bus_num, spi->chip_select, ktime_to_us(k2), 1536*5000*8/(s32)ktime_to_ms(k2));\r
else\r
printk("%s:bus_num=%d,chip_select=%d,error\n",__func__,spi->master->bus_num, spi->chip_select);\r
\r
{ \r
int ret;\r
int id = 0;\r
- static struct dw_spi_chip *spi_chip_data;\r
- struct spi_test_data *spi_test_data;\r
+ struct dw_spi_chip *spi_chip_data = NULL;\r
+ struct spi_test_data *spi_test_data = NULL;\r
\r
if(!spi) \r
return -ENOMEM;\r
spi_test_data = (struct spi_test_data *)kzalloc(sizeof(struct spi_test_data), GFP_KERNEL);\r
if(!spi_test_data){\r
dev_err(&spi->dev, "ERR: no memory for spi_test_data\n");\r
- return -ENOMEM;
+ return -ENOMEM;\r
}\r
\r
spi->bits_per_word = 8; \r