change fpga_gpio interrupt trigger type name
authorluowei <lw@rock-chips.com>
Sat, 4 Sep 2010 13:02:28 +0000 (21:02 +0800)
committerluowei <lw@rock-chips.com>
Sat, 4 Sep 2010 13:04:53 +0000 (21:04 +0800)
drivers/fpga/spi_fpga_init.c
drivers/fpga/spi_gpio.c
drivers/fpga/spi_i2c.c

index 56cb280fc2df75bf09edf31cd7ee0d90d5a69fab..e19a10ea08b514e76fa1624c8926a0a619a6208d 100755 (executable)
@@ -71,11 +71,12 @@ static void spi_fpga_trans_work_handler(struct work_struct *work)
 {\r
        struct spi_fpga_port *port =\r
                container_of(work, struct spi_fpga_port, fpga_trans_work);\r
-\r
+       unsigned long flags;\r
+       spin_lock_irqsave(&port->work_lock, flags);\r
        while (!list_empty(&port->trans_queue)) \r
        {\r
-               struct spi_fpga_transfer        *t = NULL;\r
-               list_for_each_entry(t, &port->trans_queue, queue)\r
+               struct spi_fpga_transfer        *t = NULL, *tmp;\r
+               list_for_each_entry_safe(t, tmp, &port->trans_queue, queue)\r
                {\r
 \r
                        if (t->id == 0) \r
@@ -90,11 +91,12 @@ static void spi_fpga_trans_work_handler(struct work_struct *work)
                                        break;\r
                                        \r
                        }\r
-                       kfree(t);\r
                        kfree(t->txbuf);\r
+                       kfree(t);\r
                }\r
                list_del_init(&port->trans_queue);\r
        }\r
+       spin_unlock_irqrestore(&port->work_lock, flags);\r
 \r
 }\r
 \r
@@ -468,7 +470,7 @@ static irqreturn_t spi_fpga_irq(int irq, void *dev_id)
 }\r
 \r
 \r
-static int spi_open_sysclk(int set)\r
+static int spi_set_sysclk(int set)\r
 {\r
        int ret;\r
        ret = gpio_request(SPI_FPGA_STANDBY_PIN, NULL);\r
@@ -526,7 +528,7 @@ static int __devinit spi_fpga_probe(struct spi_device * spi)
        mutex_init(&port->spi_lock);\r
        spin_lock_init(&port->work_lock);\r
        \r
-       spi_open_sysclk(GPIO_HIGH);\r
+       spi_set_sysclk(GPIO_HIGH);\r
 \r
 #if SPI_FPGA_TRANS_WORK\r
        init_waitqueue_head(&port->wait_wq);\r
@@ -534,7 +536,7 @@ static int __devinit spi_fpga_probe(struct spi_device * spi)
        port->write_en = TRUE;\r
        port->read_en = TRUE;\r
        sprintf(b, "fpga_trans_workqueue");\r
-       port->fpga_trans_workqueue = create_freezeable_workqueue(b);\r
+       port->fpga_trans_workqueue = create_rt_workqueue(b);\r
        if (!port->fpga_trans_workqueue) {\r
                printk("cannot create workqueue\n");\r
                return -EBUSY;\r
@@ -545,7 +547,7 @@ static int __devinit spi_fpga_probe(struct spi_device * spi)
 \r
        //spi_fpga_rst();\r
        sprintf(b, "fpga_irq_workqueue");\r
-       port->fpga_irq_workqueue = create_freezeable_workqueue(b);\r
+       port->fpga_irq_workqueue = create_rt_workqueue(b);\r
        if (!port->fpga_irq_workqueue) {\r
                printk("cannot create workqueue\n");\r
                return -EBUSY;\r
index 3de99afff7ee2c7f93cb2b2a890f5e242afd3ff9..c4f03da142448b6311aa6a0dc24d8d409005cc53 100755 (executable)
@@ -877,10 +877,10 @@ static int _spi_gpio_irq_set_type(unsigned int irq, unsigned int type)
        }\r
        switch(type)\r
        {\r
-               case GPIOEdgelFalling:\r
+               case IRQF_TRIGGER_FALLING:\r
                        int_type = SPI_GPIO_EDGE_FALLING;\r
                        break;\r
-               case GPIOEdgelRising:\r
+               case IRQF_TRIGGER_RISING:\r
                        int_type = SPI_GPIO_EDGE_RISING;\r
                        break;\r
                default:\r
index 3c7b67d701ccc19fbe1839b03500326c49292bdd..2d753ab5e3a7cf512c6466cf0849b24183eaf4f0 100755 (executable)
@@ -153,7 +153,12 @@ int spi_i2c_readbuf(struct spi_fpga_port *port ,struct i2c_msg *pmsg,int ch)
        spi_out(port,reg,len,SEL_I2C);\r
 \r
 #if SPI_FPGA_I2C_EVENT\r
-       wait_event_timeout(port->i2c.wait_r, port->i2c.interrupt == INT_I2C_READ_ACK, msecs_to_jiffies(30));    \r
+       ret = wait_event_timeout(port->i2c.wait_r, port->i2c.interrupt == INT_I2C_READ_ACK, msecs_to_jiffies(60));      \r
+       if(ret == 0)\r
+       {\r
+               printk("%s:60ms time out!\n",__FUNCTION__);\r
+               return -1;\r
+       }\r
        for(i = 0;i<len;i++)\r
        {\r
                result = spi_in(port,channel,SEL_I2C);\r
@@ -238,7 +243,12 @@ int spi_i2c_writebuf(struct spi_fpga_port *port ,struct i2c_msg *pmsg,int ch)
                reg = channel|ICE_SEL_I2C_STOP;\r
                spi_out(port,reg,pmsg->buf[i],SEL_I2C);\r
        #if SPI_FPGA_I2C_EVENT\r
-               wait_event_timeout(port->i2c.wait_w, port->i2c.interrupt == INT_I2C_WRITE_ACK, msecs_to_jiffies(30));\r
+               ret = wait_event_timeout(port->i2c.wait_w, port->i2c.interrupt == INT_I2C_WRITE_ACK, msecs_to_jiffies(60));\r
+               if(ret == 0)\r
+               {\r
+                       printk("%s:60ms time out!\n",__FUNCTION__);\r
+                       return -1;\r
+               }\r
                spin_lock(&port->i2c.i2c_lock);\r
                port->i2c.interrupt &= INT_I2C_WRITE_MASK;\r
                spin_unlock(&port->i2c.i2c_lock);\r