driver core: add devname module aliases to allow module on-demand auto-loading
[pandora-kernel.git] / drivers / serial / sh-sci.c
index 8d993c4..5f90fcd 100644 (file)
@@ -151,7 +151,11 @@ static int sci_poll_get_char(struct uart_port *port)
                        handle_error(port);
                        continue;
                }
-       } while (!(status & SCxSR_RDxF(port)));
+               break;
+       } while (1);
+
+       if (!(status & SCxSR_RDxF(port)))
+               return NO_POLL_CHAR;
 
        c = sci_in(port, SCxRDR);
 
@@ -1000,8 +1004,9 @@ static void sci_rx_dma_release(struct sci_port *s, bool enable_pio)
        s->chan_rx = NULL;
        s->cookie_rx[0] = s->cookie_rx[1] = -EINVAL;
        dma_release_channel(chan);
-       dma_free_coherent(port->dev, s->buf_len_rx * 2,
-                         sg_virt(&s->sg_rx[0]), sg_dma_address(&s->sg_rx[0]));
+       if (sg_dma_address(&s->sg_rx[0]))
+               dma_free_coherent(port->dev, s->buf_len_rx * 2,
+                                 sg_virt(&s->sg_rx[0]), sg_dma_address(&s->sg_rx[0]));
        if (enable_pio)
                sci_start_rx(port);
 }
@@ -1087,7 +1092,7 @@ static void work_fn_rx(struct work_struct *work)
                unsigned long flags;
                int count;
 
-               chan->device->device_terminate_all(chan);
+               chan->device->device_control(chan, DMA_TERMINATE_ALL, 0);
                dev_dbg(port->dev, "Read %u bytes with cookie %d\n",
                        sh_desc->partial, sh_desc->cookie);