Merge branch 'spi/merge' of git://git.secretlab.ca/git/linux-2.6
* 'spi/merge' of git://git.secretlab.ca/git/linux-2.6: dt/fsldma: fix build warning caused by of_platform_device changes spi: Fix race condition in stop_queue() gpio/pch_gpio: Fix output value of pch_gpio_direction_output() gpio/ml_ioh_gpio: Fix output value of ioh_gpio_direction_output() gpio/pca953x: fix error handling path in probe() call
This commit is contained in:
commit
6b98cd5aad
|
@ -1448,7 +1448,7 @@ static const struct of_device_id fsldma_of_ids[] = {
|
|||
{}
|
||||
};
|
||||
|
||||
static struct of_platform_driver fsldma_of_driver = {
|
||||
static struct platform_driver fsldma_of_driver = {
|
||||
.driver = {
|
||||
.name = "fsl-elo-dma",
|
||||
.owner = THIS_MODULE,
|
||||
|
|
|
@ -116,6 +116,7 @@ static int ioh_gpio_direction_output(struct gpio_chip *gpio, unsigned nr,
|
|||
reg_val |= (1 << nr);
|
||||
else
|
||||
reg_val &= ~(1 << nr);
|
||||
iowrite32(reg_val, &chip->reg->regs[chip->ch].po);
|
||||
|
||||
mutex_unlock(&chip->lock);
|
||||
|
||||
|
|
|
@ -558,7 +558,7 @@ static int __devinit pca953x_probe(struct i2c_client *client,
|
|||
|
||||
ret = gpiochip_add(&chip->gpio_chip);
|
||||
if (ret)
|
||||
goto out_failed;
|
||||
goto out_failed_irq;
|
||||
|
||||
if (pdata->setup) {
|
||||
ret = pdata->setup(client, chip->gpio_chip.base,
|
||||
|
@ -570,8 +570,9 @@ static int __devinit pca953x_probe(struct i2c_client *client,
|
|||
i2c_set_clientdata(client, chip);
|
||||
return 0;
|
||||
|
||||
out_failed:
|
||||
out_failed_irq:
|
||||
pca953x_irq_teardown(chip);
|
||||
out_failed:
|
||||
kfree(chip->dyn_pdata);
|
||||
kfree(chip);
|
||||
return ret;
|
||||
|
|
|
@ -105,6 +105,7 @@ static int pch_gpio_direction_output(struct gpio_chip *gpio, unsigned nr,
|
|||
reg_val |= (1 << nr);
|
||||
else
|
||||
reg_val &= ~(1 << nr);
|
||||
iowrite32(reg_val, &chip->reg->po);
|
||||
|
||||
mutex_unlock(&chip->lock);
|
||||
|
||||
|
|
|
@ -1555,7 +1555,7 @@ static int stop_queue(struct pl022 *pl022)
|
|||
* A wait_queue on the pl022->busy could be used, but then the common
|
||||
* execution path (pump_messages) would be required to call wake_up or
|
||||
* friends on every SPI message. Do this instead */
|
||||
while (!list_empty(&pl022->queue) && pl022->busy && limit--) {
|
||||
while ((!list_empty(&pl022->queue) || pl022->busy) && limit--) {
|
||||
spin_unlock_irqrestore(&pl022->queue_lock, flags);
|
||||
msleep(10);
|
||||
spin_lock_irqsave(&pl022->queue_lock, flags);
|
||||
|
|
|
@ -821,7 +821,7 @@ static int stop_queue(struct dw_spi *dws)
|
|||
|
||||
spin_lock_irqsave(&dws->lock, flags);
|
||||
dws->run = QUEUE_STOPPED;
|
||||
while (!list_empty(&dws->queue) && dws->busy && limit--) {
|
||||
while ((!list_empty(&dws->queue) || dws->busy) && limit--) {
|
||||
spin_unlock_irqrestore(&dws->lock, flags);
|
||||
msleep(10);
|
||||
spin_lock_irqsave(&dws->lock, flags);
|
||||
|
|
|
@ -1493,7 +1493,7 @@ static int stop_queue(struct driver_data *drv_data)
|
|||
* execution path (pump_messages) would be required to call wake_up or
|
||||
* friends on every SPI message. Do this instead */
|
||||
drv_data->run = QUEUE_STOPPED;
|
||||
while (!list_empty(&drv_data->queue) && drv_data->busy && limit--) {
|
||||
while ((!list_empty(&drv_data->queue) || drv_data->busy) && limit--) {
|
||||
spin_unlock_irqrestore(&drv_data->lock, flags);
|
||||
msleep(10);
|
||||
spin_lock_irqsave(&drv_data->lock, flags);
|
||||
|
|
|
@ -1284,7 +1284,7 @@ static inline int bfin_spi_stop_queue(struct bfin_spi_master_data *drv_data)
|
|||
* friends on every SPI message. Do this instead
|
||||
*/
|
||||
drv_data->running = false;
|
||||
while (!list_empty(&drv_data->queue) && drv_data->busy && limit--) {
|
||||
while ((!list_empty(&drv_data->queue) || drv_data->busy) && limit--) {
|
||||
spin_unlock_irqrestore(&drv_data->lock, flags);
|
||||
msleep(10);
|
||||
spin_lock_irqsave(&drv_data->lock, flags);
|
||||
|
|
Loading…
Reference in New Issue