MIPS: SEAD3: Use img-ascii-lcd driver
authorPaul Burton <paul.burton@imgtec.com>
Fri, 26 Aug 2016 14:17:50 +0000 (15:17 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Thu, 6 Oct 2016 15:04:34 +0000 (17:04 +0200)
Probe the img-ascii-lcd driver using device tree in order to display a
message on the SEAD3 board's LCD display, and remove the platform code
that was formerly performing this function. This removes more platform
code and moves SEAD3 further towards being entirely DT-based.

Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: Jacek Anaszewski <j.anaszewski@samsung.com>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: linux-mips@linux-mips.org
Cc: devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/14063/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/boot/dts/mti/sead3.dts
arch/mips/mti-sead3/Makefile
arch/mips/mti-sead3/sead3-display.c [deleted file]
arch/mips/mti-sead3/sead3-time.c

index 32a5ab988b65bb323983c270b14f3d59a2374097..2579ca51c0b612b4545e412a25693e395306ed19 100644 (file)
                        mask = <0x80>;
                        label = "fled7";
                };
+
+               lcd@200 {
+                       compatible = "mti,sead3-lcd";
+                       offset = <0x200>;
+               };
        };
 
        /* UART connected to FTDI & miniUSB socket */
index cb6d620a685cf8c363c1d3860aaacfc1878e649f..1674b9cf7527950cac202604e58e18ba12351d7d 100644 (file)
@@ -8,8 +8,7 @@
 # Copyright (C) 2012 MIPS Technoligies, Inc.  All rights reserved.
 # Steven J. Hill <sjhill@mips.com>
 #
-obj-y := sead3-display.o
-obj-y += sead3-dtshim.o
+obj-y := sead3-dtshim.o
 obj-y += sead3-init.o
 obj-y += sead3-int.o
 obj-y += sead3-setup.o
diff --git a/arch/mips/mti-sead3/sead3-display.c b/arch/mips/mti-sead3/sead3-display.c
deleted file mode 100644 (file)
index 9487599..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * This file is subject to the terms and conditions of the GNU General Public
- * License.  See the file "COPYING" in the main directory of this archive
- * for more details.
- *
- * Copyright (C) 2012 MIPS Technologies, Inc.  All rights reserved.
- */
-#include <linux/timer.h>
-#include <linux/io.h>
-#include <asm/mips-boards/generic.h>
-
-static unsigned int display_count;
-static unsigned int max_display_count;
-
-#define LCD_DISPLAY_POS_BASE           0x1f000400
-#define DISPLAY_LCDINSTRUCTION         (0*2)
-#define DISPLAY_LCDDATA                        (1*2)
-#define DISPLAY_CPLDSTATUS             (2*2)
-#define DISPLAY_CPLDDATA               (3*2)
-#define LCD_SETDDRAM                   0x80
-#define LCD_IR_BF                      0x80
-
-const char display_string[] = "                      LINUX ON SEAD3               ";
-
-static void scroll_display_message(unsigned long data);
-static DEFINE_TIMER(mips_scroll_timer, scroll_display_message, HZ, 0);
-
-static void lcd_wait(unsigned int __iomem *display)
-{
-       /* Wait for CPLD state machine to become idle. */
-       do { } while (__raw_readl(display + DISPLAY_CPLDSTATUS) & 1);
-
-       do {
-               __raw_readl(display + DISPLAY_LCDINSTRUCTION);
-
-               /* Wait for CPLD state machine to become idle. */
-               do { } while (__raw_readl(display + DISPLAY_CPLDSTATUS) & 1);
-       } while (__raw_readl(display + DISPLAY_CPLDDATA) & LCD_IR_BF);
-}
-
-void mips_display_message(const char *str)
-{
-       static unsigned int __iomem *display;
-       char ch;
-       int i;
-
-       if (unlikely(display == NULL))
-               display = ioremap_nocache(LCD_DISPLAY_POS_BASE,
-                       (8 * sizeof(int)));
-
-       for (i = 0; i < 16; i++) {
-               if (*str)
-                       ch = *str++;
-               else
-                       ch = ' ';
-               lcd_wait(display);
-               __raw_writel((LCD_SETDDRAM | i),
-                       (display + DISPLAY_LCDINSTRUCTION));
-               lcd_wait(display);
-               __raw_writel(ch, display + DISPLAY_LCDDATA);
-       }
-}
-
-static void scroll_display_message(unsigned long data)
-{
-       mips_display_message(&display_string[display_count++]);
-       if (display_count == max_display_count)
-               display_count = 0;
-       mod_timer(&mips_scroll_timer, jiffies + HZ);
-}
-
-void mips_scroll_message(void)
-{
-       del_timer_sync(&mips_scroll_timer);
-       max_display_count = strlen(display_string) + 1 - 16;
-       mod_timer(&mips_scroll_timer, jiffies + 1);
-}
index a120b7a5a8fe4e9af03ccb40fc9e7e123f88d633..10b0bf338027a6e6b182d008db9bb29a92d525de 100644 (file)
@@ -94,6 +94,4 @@ void __init plat_time_init(void)
 
        pr_debug("CPU frequency %d.%02d MHz\n", (est_freq / 1000000),
                (est_freq % 1000000) * 100 / 1000000);
-
-       mips_scroll_message();
 }