From: luowei Date: Sat, 4 Sep 2010 13:02:28 +0000 (+0800) Subject: change fpga_gpio interrupt trigger type name X-Git-Tag: firefly_0821_release~11188 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=5793e5ecf010c7fa336aaccece35b643a1fb9d54;p=firefly-linux-kernel-4.4.55.git change fpga_gpio interrupt trigger type name --- diff --git a/drivers/fpga/spi_fpga_init.c b/drivers/fpga/spi_fpga_init.c index 56cb280fc2df..e19a10ea08b5 100755 --- a/drivers/fpga/spi_fpga_init.c +++ b/drivers/fpga/spi_fpga_init.c @@ -71,11 +71,12 @@ static void spi_fpga_trans_work_handler(struct work_struct *work) { struct spi_fpga_port *port = container_of(work, struct spi_fpga_port, fpga_trans_work); - + unsigned long flags; + spin_lock_irqsave(&port->work_lock, flags); while (!list_empty(&port->trans_queue)) { - struct spi_fpga_transfer *t = NULL; - list_for_each_entry(t, &port->trans_queue, queue) + struct spi_fpga_transfer *t = NULL, *tmp; + list_for_each_entry_safe(t, tmp, &port->trans_queue, queue) { if (t->id == 0) @@ -90,11 +91,12 @@ static void spi_fpga_trans_work_handler(struct work_struct *work) break; } - kfree(t); kfree(t->txbuf); + kfree(t); } list_del_init(&port->trans_queue); } + spin_unlock_irqrestore(&port->work_lock, flags); } @@ -468,7 +470,7 @@ static irqreturn_t spi_fpga_irq(int irq, void *dev_id) } -static int spi_open_sysclk(int set) +static int spi_set_sysclk(int set) { int ret; ret = gpio_request(SPI_FPGA_STANDBY_PIN, NULL); @@ -526,7 +528,7 @@ static int __devinit spi_fpga_probe(struct spi_device * spi) mutex_init(&port->spi_lock); spin_lock_init(&port->work_lock); - spi_open_sysclk(GPIO_HIGH); + spi_set_sysclk(GPIO_HIGH); #if SPI_FPGA_TRANS_WORK init_waitqueue_head(&port->wait_wq); @@ -534,7 +536,7 @@ static int __devinit spi_fpga_probe(struct spi_device * spi) port->write_en = TRUE; port->read_en = TRUE; sprintf(b, "fpga_trans_workqueue"); - port->fpga_trans_workqueue = create_freezeable_workqueue(b); + port->fpga_trans_workqueue = create_rt_workqueue(b); if (!port->fpga_trans_workqueue) { printk("cannot create workqueue\n"); return -EBUSY; @@ -545,7 +547,7 @@ static int __devinit spi_fpga_probe(struct spi_device * spi) //spi_fpga_rst(); sprintf(b, "fpga_irq_workqueue"); - port->fpga_irq_workqueue = create_freezeable_workqueue(b); + port->fpga_irq_workqueue = create_rt_workqueue(b); if (!port->fpga_irq_workqueue) { printk("cannot create workqueue\n"); return -EBUSY; diff --git a/drivers/fpga/spi_gpio.c b/drivers/fpga/spi_gpio.c index 3de99afff7ee..c4f03da14244 100755 --- a/drivers/fpga/spi_gpio.c +++ b/drivers/fpga/spi_gpio.c @@ -877,10 +877,10 @@ static int _spi_gpio_irq_set_type(unsigned int irq, unsigned int type) } switch(type) { - case GPIOEdgelFalling: + case IRQF_TRIGGER_FALLING: int_type = SPI_GPIO_EDGE_FALLING; break; - case GPIOEdgelRising: + case IRQF_TRIGGER_RISING: int_type = SPI_GPIO_EDGE_RISING; break; default: diff --git a/drivers/fpga/spi_i2c.c b/drivers/fpga/spi_i2c.c index 3c7b67d701cc..2d753ab5e3a7 100755 --- a/drivers/fpga/spi_i2c.c +++ b/drivers/fpga/spi_i2c.c @@ -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); #if SPI_FPGA_I2C_EVENT - wait_event_timeout(port->i2c.wait_r, port->i2c.interrupt == INT_I2C_READ_ACK, msecs_to_jiffies(30)); + ret = wait_event_timeout(port->i2c.wait_r, port->i2c.interrupt == INT_I2C_READ_ACK, msecs_to_jiffies(60)); + if(ret == 0) + { + printk("%s:60ms time out!\n",__FUNCTION__); + return -1; + } for(i = 0;ibuf[i],SEL_I2C); #if SPI_FPGA_I2C_EVENT - wait_event_timeout(port->i2c.wait_w, port->i2c.interrupt == INT_I2C_WRITE_ACK, msecs_to_jiffies(30)); + ret = wait_event_timeout(port->i2c.wait_w, port->i2c.interrupt == INT_I2C_WRITE_ACK, msecs_to_jiffies(60)); + if(ret == 0) + { + printk("%s:60ms time out!\n",__FUNCTION__); + return -1; + } spin_lock(&port->i2c.i2c_lock); port->i2c.interrupt &= INT_I2C_WRITE_MASK; spin_unlock(&port->i2c.i2c_lock);