USB: cdc_acm: Fix memory leak after hangup
[safe/jmp/linux-2.6] / drivers / spi / orion_spi.c
index c4eaacd..3aea50d 100644 (file)
@@ -358,14 +358,10 @@ static int orion_spi_setup(struct spi_device *spi)
 
        orion_spi = spi_master_get_devdata(spi->master);
 
-       if (spi->mode) {
-               dev_err(&spi->dev, "setup: unsupported mode bits %x\n",
-                       spi->mode);
-               return -EINVAL;
-       }
-
-       if (spi->bits_per_word == 0)
-               spi->bits_per_word = 8;
+       /* Fix ac timing if required.   */
+       if (orion_spi->spi_info->enable_clock_fix)
+               orion_spi_setbits(orion_spi, ORION_SPI_IF_CONFIG_REG,
+                                 (1 << 14));
 
        if ((spi->max_speed_hz == 0)
                        || (spi->max_speed_hz > orion_spi->max_speed))
@@ -427,7 +423,7 @@ static int orion_spi_transfer(struct spi_device *spi, struct spi_message *m)
                        goto msg_rejected;
                }
 
-               if (t->speed_hz < orion_spi->min_speed) {
+               if (t->speed_hz && t->speed_hz < orion_spi->min_speed) {
                        dev_err(&spi->dev,
                                "message rejected : "
                                "device min speed (%d Hz) exceeds "
@@ -471,6 +467,9 @@ static int __init orion_spi_probe(struct platform_device *pdev)
        if (pdev->id != -1)
                master->bus_num = pdev->id;
 
+       /* we support only mode 0, and no options */
+       master->mode_bits = 0;
+
        master->setup = orion_spi_setup;
        master->transfer = orion_spi_transfer;
        master->num_chipselect = ORION_NUM_CHIPSELECTS;
@@ -491,7 +490,7 @@ static int __init orion_spi_probe(struct platform_device *pdev)
        }
 
        if (!request_mem_region(r->start, (r->end - r->start) + 1,
-                               pdev->dev.bus_id)) {
+                               dev_name(&pdev->dev))) {
                status = -EBUSY;
                goto out;
        }