]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/serial/cpm_uart/cpm_uart_cpm1.c
sata_sil24: prevent hba lockup when pass-through ATA commands are used
[linux-2.6-omap-h63xx.git] / drivers / serial / cpm_uart / cpm_uart_cpm1.c
index bb7afe985c632038e641b17d18428b20e6795f2e..52fb044bb79a917333788d033217016fefce868f 100644 (file)
 
 /**************************************************************/
 
-void cpm_line_cr_cmd(int line, int cmd)
+#ifdef CONFIG_PPC_CPM_NEW_BINDING
+void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd)
+{
+       u16 __iomem *cpcr = &cpmp->cp_cpcr;
+
+       out_be16(cpcr, port->command | (cmd << 8) | CPM_CR_FLG);
+       while (in_be16(cpcr) & CPM_CR_FLG)
+               ;
+}
+#else
+void cpm_line_cr_cmd(struct uart_cpm_port *port, int cmd)
 {
        ushort val;
+       int line = port - cpm_uart_ports;
        volatile cpm8xx_t *cp = cpmp;
 
        switch (line) {
@@ -114,6 +125,7 @@ void scc4_lineif(struct uart_cpm_port *pinfo)
        /* XXX SCC4: insert port configuration here */
        pinfo->brg = 4;
 }
+#endif
 
 /*
  * Allocate DP-Ram and memory buffers. We need to allocate a transmit and
@@ -167,7 +179,7 @@ int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con)
        pinfo->tx_buf = pinfo->rx_buf + L1_CACHE_ALIGN(pinfo->rx_nrfifos
                                                       * pinfo->rx_fifosize);
 
-       pinfo->rx_bd_base = (volatile cbd_t *)dp_mem;
+       pinfo->rx_bd_base = (cbd_t __iomem __force *)dp_mem;
        pinfo->tx_bd_base = pinfo->rx_bd_base + pinfo->rx_nrfifos;
 
        return 0;
@@ -184,8 +196,9 @@ void cpm_uart_freebuf(struct uart_cpm_port *pinfo)
        cpm_dpfree(pinfo->dp_addr);
 }
 
+#ifndef CONFIG_PPC_CPM_NEW_BINDING
 /* Setup any dynamic params in the uart desc */
-int __init cpm_uart_init_portdesc(void)
+int cpm_uart_init_portdesc(void)
 {
        pr_debug("CPM uart[-]:init portdesc\n");
 
@@ -279,3 +292,4 @@ int __init cpm_uart_init_portdesc(void)
 #endif
        return 0;
 }
+#endif