]> Pileus Git - ~andy/linux/blobdiff - drivers/tty/serial/xilinx_uartps.c
Merge tag 'pci-v3.13-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaa...
[~andy/linux] / drivers / tty / serial / xilinx_uartps.c
index c7c96c2f149cb76e613fcc144b06feae18b4b2d6..e46e9f3f19b90d34476b60a2e21aa656fc3c8fae 100644 (file)
@@ -389,7 +389,7 @@ static unsigned int xuartps_set_baud_rate(struct uart_port *port,
                unsigned int baud)
 {
        unsigned int calc_baud;
-       u32 cd, bdiv;
+       u32 cd = 0, bdiv = 0;
        u32 mreg;
        int div8;
        struct xuartps *xuartps = port->private_data;
@@ -411,6 +411,7 @@ static unsigned int xuartps_set_baud_rate(struct uart_port *port,
        return calc_baud;
 }
 
+#ifdef CONFIG_COMMON_CLK
 /**
  * xuartps_clk_notitifer_cb - Clock notifier callback
  * @nb:                Notifier block
@@ -504,6 +505,7 @@ static int xuartps_clk_notifier_cb(struct notifier_block *nb,
                return NOTIFY_DONE;
        }
 }
+#endif
 
 /*----------------------Uart Operations---------------------------*/
 
@@ -1198,6 +1200,20 @@ console_initcall(xuartps_console_init);
 
 #endif /* CONFIG_SERIAL_XILINX_PS_UART_CONSOLE */
 
+/** Structure Definitions
+ */
+static struct uart_driver xuartps_uart_driver = {
+       .owner          = THIS_MODULE,          /* Owner */
+       .driver_name    = XUARTPS_NAME,         /* Driver name */
+       .dev_name       = XUARTPS_TTY_NAME,     /* Node name */
+       .major          = XUARTPS_MAJOR,        /* Major number */
+       .minor          = XUARTPS_MINOR,        /* Minor number */
+       .nr             = XUARTPS_NR_PORTS,     /* Number of UART ports */
+#ifdef CONFIG_SERIAL_XILINX_PS_UART_CONSOLE
+       .cons           = &xuartps_console,     /* Console */
+#endif
+};
+
 #ifdef CONFIG_PM_SLEEP
 /**
  * xuartps_suspend - suspend event
@@ -1311,20 +1327,6 @@ static int xuartps_resume(struct device *device)
 
 static SIMPLE_DEV_PM_OPS(xuartps_dev_pm_ops, xuartps_suspend, xuartps_resume);
 
-/** Structure Definitions
- */
-static struct uart_driver xuartps_uart_driver = {
-       .owner          = THIS_MODULE,          /* Owner */
-       .driver_name    = XUARTPS_NAME,         /* Driver name */
-       .dev_name       = XUARTPS_TTY_NAME,     /* Node name */
-       .major          = XUARTPS_MAJOR,        /* Major number */
-       .minor          = XUARTPS_MINOR,        /* Minor number */
-       .nr             = XUARTPS_NR_PORTS,     /* Number of UART ports */
-#ifdef CONFIG_SERIAL_XILINX_PS_UART_CONSOLE
-       .cons           = &xuartps_console,     /* Console */
-#endif
-};
-
 /* ---------------------------------------------------------------------
  * Platform bus binding
  */
@@ -1380,11 +1382,13 @@ static int xuartps_probe(struct platform_device *pdev)
                goto err_out_clk_disable;
        }
 
+#ifdef CONFIG_COMMON_CLK
        xuartps_data->clk_rate_change_nb.notifier_call =
                        xuartps_clk_notifier_cb;
        if (clk_notifier_register(xuartps_data->refclk,
                                &xuartps_data->clk_rate_change_nb))
                dev_warn(&pdev->dev, "Unable to register clock notifier.\n");
+#endif
 
        /* Initialize the port structure */
        port = xuartps_get_port();
@@ -1415,8 +1419,10 @@ static int xuartps_probe(struct platform_device *pdev)
        }
 
 err_out_notif_unreg:
+#ifdef CONFIG_COMMON_CLK
        clk_notifier_unregister(xuartps_data->refclk,
                        &xuartps_data->clk_rate_change_nb);
+#endif
 err_out_clk_disable:
        clk_disable_unprepare(xuartps_data->refclk);
 err_out_clk_dis_aper:
@@ -1438,8 +1444,10 @@ static int xuartps_remove(struct platform_device *pdev)
        int rc;
 
        /* Remove the xuartps port from the serial core */
+#ifdef CONFIG_COMMON_CLK
        clk_notifier_unregister(xuartps_data->refclk,
                        &xuartps_data->clk_rate_change_nb);
+#endif
        rc = uart_remove_one_port(&xuartps_uart_driver, port);
        port->mapbase = 0;
        clk_disable_unprepare(xuartps_data->refclk);