Merge tag 'spi-v3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
[cascardo/linux.git] / drivers / spi / spi.c
index 22aa41c..e0531ba 100644 (file)
@@ -350,14 +350,12 @@ static DEFINE_MUTEX(board_lock);
 struct spi_device *spi_alloc_device(struct spi_master *master)
 {
        struct spi_device       *spi;
-       struct device           *dev = master->dev.parent;
 
        if (!spi_master_get(master))
                return NULL;
 
        spi = kzalloc(sizeof(*spi), GFP_KERNEL);
        if (!spi) {
-               dev_err(dev, "cannot alloc spi_device\n");
                spi_master_put(master);
                return NULL;
        }
@@ -624,6 +622,8 @@ static int spi_map_buf(struct spi_master *master, struct device *dev,
        }
 
        ret = dma_map_sg(dev, sgt->sgl, sgt->nents, dir);
+       if (!ret)
+               ret = -ENOMEM;
        if (ret < 0) {
                sg_free_table(sgt);
                return ret;
@@ -652,8 +652,8 @@ static int __spi_map_msg(struct spi_master *master, struct spi_message *msg)
        if (!master->can_dma)
                return 0;
 
-       tx_dev = &master->dma_tx->dev->device;
-       rx_dev = &master->dma_rx->dev->device;
+       tx_dev = master->dma_tx->device->dev;
+       rx_dev = master->dma_rx->device->dev;
 
        list_for_each_entry(xfer, &msg->transfers, transfer_list) {
                if (!master->can_dma(master, msg->spi, xfer))
@@ -692,8 +692,8 @@ static int spi_unmap_msg(struct spi_master *master, struct spi_message *msg)
        if (!master->cur_msg_mapped || !master->can_dma)
                return 0;
 
-       tx_dev = &master->dma_tx->dev->device;
-       rx_dev = &master->dma_rx->dev->device;
+       tx_dev = master->dma_tx->device->dev;
+       rx_dev = master->dma_rx->device->dev;
 
        list_for_each_entry(xfer, &msg->transfers, transfer_list) {
                if (!master->can_dma(master, msg->spi, xfer))