serial: opencores_yanu: Avoid duplicate oc_serial_setbrg() implementation
authorAxel Lin <axel.lin@ingics.com>
Thu, 16 Jan 2014 07:03:52 +0000 (15:03 +0800)
committerThomas Chou <thomas@wytron.com.tw>
Tue, 11 Feb 2014 07:49:19 +0000 (15:49 +0800)
The implementation of oc_serial_setbrg() for CONFIG_SYS_NIOS_FIXEDBAUD and
!CONFIG_SYS_NIOS_FIXEDBAUD are very similar.
Add a baudrate variable and set it to either CONFIG_BAUDRATE or gd->baudrate.
Then we can unify the code for both cases.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
drivers/serial/opencores_yanu.c

index 80e9ae53bc9f13914fcd8a6e80c0532ad57393fe..d4ed60c303037b09f3f976d6f51f5130ddc5b5dc 100644 (file)
@@ -18,62 +18,34 @@ DECLARE_GLOBAL_DATA_PTR;
 
 static yanu_uart_t *uart = (yanu_uart_t *)CONFIG_SYS_NIOS_CONSOLE;
 
-#if defined(CONFIG_SYS_NIOS_FIXEDBAUD)
-
-/* Everything's already setup for fixed-baud PTF assignment*/
-
 static void oc_serial_setbrg(void)
 {
        int n, k;
        const unsigned max_uns = 0xFFFFFFFF;
        unsigned best_n, best_m, baud;
+       unsigned baudrate;
 
-       /* compute best N and M couple */
-       best_n = YANU_MAX_PRESCALER_N;
-       for (n = YANU_MAX_PRESCALER_N; n >= 0; n--) {
-               if ((unsigned)CONFIG_SYS_CLK_FREQ / (1 << (n + 4)) >=
-                   (unsigned)CONFIG_BAUDRATE) {
-                       best_n = n;
-                       break;
-               }
-       }
-       for (k = 0;; k++) {
-               if ((unsigned)CONFIG_BAUDRATE <= (max_uns >> (15+n-k)))
-                       break;
-       }
-       best_m =
-           ((unsigned)CONFIG_BAUDRATE * (1 << (15 + n - k))) /
-           ((unsigned)CONFIG_SYS_CLK_FREQ >> k);
-
-       baud = best_m + best_n * YANU_BAUDE;
-       writel(baud, &uart->baud);
-
-       return;
-}
-
+#if defined(CONFIG_SYS_NIOS_FIXEDBAUD)
+       /* Everything's already setup for fixed-baud PTF assignment */
+       baudrate = CONFIG_BAUDRATE;
 #else
-
-static void oc_serial_setbrg(void)
-{
-       int n, k;
-       const unsigned max_uns = 0xFFFFFFFF;
-       unsigned best_n, best_m, baud;
-
+       baudrate = gd->baudrate;
+#endif
        /* compute best N and M couple */
        best_n = YANU_MAX_PRESCALER_N;
        for (n = YANU_MAX_PRESCALER_N; n >= 0; n--) {
                if ((unsigned)CONFIG_SYS_CLK_FREQ / (1 << (n + 4)) >=
-                   gd->baudrate) {
+                   baudrate) {
                        best_n = n;
                        break;
                }
        }
        for (k = 0;; k++) {
-               if (gd->baudrate <= (max_uns >> (15+n-k)))
+               if (baudrate <= (max_uns >> (15+n-k)))
                        break;
        }
        best_m =
-           (gd->baudrate * (1 << (15 + n - k))) /
+           (baudrate * (1 << (15 + n - k))) /
            ((unsigned)CONFIG_SYS_CLK_FREQ >> k);
 
        baud = best_m + best_n * YANU_BAUDE;
@@ -82,9 +54,6 @@ static void oc_serial_setbrg(void)
        return;
 }
 
-
-#endif /* CONFIG_SYS_NIOS_FIXEDBAUD */
-
 static int oc_serial_init(void)
 {
        unsigned action,control;