Re: [PATCH v2 1/2] m68k: m68328: move platform code to separate files

2020-11-01 Thread Greg Ungerer



On 31/10/20 12:26 am, Arnd Bergmann wrote:

From: Arnd Bergmann 

The dragen2 and ucsimm/ucdimm files require a bit of
custom code compared to the other dragonball platforms,
move them into separate files as a preparation for a
build fix.

Signed-off-by: Arnd Bergmann 
---
Just a small cleanup after I ran into some issue during build
testing my timer patches, the second patch contains the
actual bugfix but relies on this preparation patch.


Thanks Arnd,
Pushed into the for-next branch of the m68knommu git tree.

Regards
Greg



---
  arch/m68k/68000/Makefile   |   4 ++
  arch/m68k/68000/dragen2.c  | 100 +++
  arch/m68k/68000/m68328.c   |   3 +-
  arch/m68k/68000/m68328.h   |   5 ++
  arch/m68k/68000/m68EZ328.c |  23 +--
  arch/m68k/68000/m68VZ328.c | 136 ++---
  arch/m68k/68000/ucsimm.c   |  38 +++
  7 files changed, 158 insertions(+), 151 deletions(-)
  create mode 100644 arch/m68k/68000/dragen2.c
  create mode 100644 arch/m68k/68000/m68328.h
  create mode 100644 arch/m68k/68000/ucsimm.c

diff --git a/arch/m68k/68000/Makefile b/arch/m68k/68000/Makefile
index 4f7d4b45a46f..ce0b26d6580d 100644
--- a/arch/m68k/68000/Makefile
+++ b/arch/m68k/68000/Makefile
@@ -16,4 +16,8 @@ obj-$(CONFIG_M68EZ328)+= m68EZ328.o
  obj-$(CONFIG_M68VZ328)+= m68VZ328.o
  obj-$(CONFIG_ROM) += romvec.o
  
+obj-$(CONFIG_DRAGEN2)	+= dragen2.o

+obj-$(CONFIG_UCSIMM)   += ucsimm.o
+obj-$(CONFIG_UCDIMM)   += ucsimm.o
+
  extra-y   := head.o
diff --git a/arch/m68k/68000/dragen2.c b/arch/m68k/68000/dragen2.c
new file mode 100644
index ..584893c57c37
--- /dev/null
+++ b/arch/m68k/68000/dragen2.c
@@ -0,0 +1,100 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ *  Copyright (C) 1993 Hamish Macdonald
+ *  Copyright (C) 1999 D. Jeff Dionne
+ *  Copyright (C) 2001 Georges Menie, Ken Desmet
+ *
+ * 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.
+ */
+#include 
+#include 
+#include 
+
+/***/
+/*Init Drangon Engine hardware */
+/***/
+
+static void dragen2_reset(void)
+{
+   local_irq_disable();
+
+#ifdef CONFIG_INIT_LCD
+   PBDATA |= 0x20; /* disable CCFL light */
+   PKDATA |= 0x4;  /* disable LCD controller */
+   LCKCON = 0;
+#endif
+
+   __asm__ __volatile__(
+   "reset\n\t"
+   "moveal #0x0400, %a0\n\t"
+   "moveal 0(%a0), %sp\n\t"
+   "moveal 4(%a0), %a0\n\t"
+   "jmp (%a0)"
+   );
+}
+
+void __init init_dragen2(char *command, int size)
+{
+   mach_reset = dragen2_reset;
+
+#ifdef CONFIG_DIRECT_IO_ACCESS
+   SCR = 0x10; /* allow user access to 
internal registers */
+#endif
+
+   /* CSGB Init */
+   CSGBB = 0x4000;
+   CSB = 0x1a1;
+
+   /* CS8900 init */
+   /* PK3: hardware sleep function pin, active low */
+   PKSEL |= PK(3); /* select pin as I/O */
+   PKDIR |= PK(3); /* select pin as output */
+   PKDATA |= PK(3);/* set pin high */
+
+   /* PF5: hardware reset function pin, active high */
+   PFSEL |= PF(5); /* select pin as I/O */
+   PFDIR |= PF(5); /* select pin as output */
+   PFDATA &= ~PF(5);   /* set pin low */
+
+   /* cs8900 hardware reset */
+   PFDATA |= PF(5);
+   { int i; for (i = 0; i < 32000; ++i); }
+   PFDATA &= ~PF(5);
+
+   /* INT1 enable (cs8900 IRQ) */
+   PDPOL &= ~PD(1);/* active high signal */
+   PDIQEG &= ~PD(1);
+   PDIRQEN |= PD(1);   /* IRQ enabled */
+
+#ifdef CONFIG_INIT_LCD
+   /* initialize LCD controller */
+   LSSA = (long) screen_bits;
+   LVPW = 0x14;
+   LXMAX = 0x140;
+   LYMAX = 0xef;
+   LRRA = 0;
+   LPXCD = 3;
+   LPICF = 0x08;
+   LPOLCF = 0;
+   LCKCON = 0x80;
+   PCPDEN = 0xff;
+   PCSEL = 0;
+
+   /* Enable LCD controller */
+   PKDIR |= 0x4;
+   PKSEL |= 0x4;
+   PKDATA &= ~0x4;
+
+   /* Enable CCFL backlighting circuit */
+   PBDIR |= 0x20;
+   PBSEL |= 0x20;
+   PBDATA &= ~0x20;
+
+   /* contrast control register */
+   PFDIR |= 0x1;
+   PFSEL &= ~0x1;
+   PWMR = 0x037F;
+#endif
+}
diff --git a/arch/m68k/68000/m68328.c b/arch/m68k/68000/m68328.c
index 419751b15ec8..6a5cfc977150 100644
--- a/arch/m68k/68000/m68328.c
+++ b/arch/m68k/68000/m68328.c
@@ -25,9 +25,10 @@
  #include "bootlogo.h"
  #endif
  
+#include "m68328.h"

+
  

[PATCH v2 1/2] m68k: m68328: move platform code to separate files

2020-10-30 Thread Arnd Bergmann
From: Arnd Bergmann 

The dragen2 and ucsimm/ucdimm files require a bit of
custom code compared to the other dragonball platforms,
move them into separate files as a preparation for a
build fix.

Signed-off-by: Arnd Bergmann 
---
Just a small cleanup after I ran into some issue during build
testing my timer patches, the second patch contains the
actual bugfix but relies on this preparation patch.
---
 arch/m68k/68000/Makefile   |   4 ++
 arch/m68k/68000/dragen2.c  | 100 +++
 arch/m68k/68000/m68328.c   |   3 +-
 arch/m68k/68000/m68328.h   |   5 ++
 arch/m68k/68000/m68EZ328.c |  23 +--
 arch/m68k/68000/m68VZ328.c | 136 ++---
 arch/m68k/68000/ucsimm.c   |  38 +++
 7 files changed, 158 insertions(+), 151 deletions(-)
 create mode 100644 arch/m68k/68000/dragen2.c
 create mode 100644 arch/m68k/68000/m68328.h
 create mode 100644 arch/m68k/68000/ucsimm.c

diff --git a/arch/m68k/68000/Makefile b/arch/m68k/68000/Makefile
index 4f7d4b45a46f..ce0b26d6580d 100644
--- a/arch/m68k/68000/Makefile
+++ b/arch/m68k/68000/Makefile
@@ -16,4 +16,8 @@ obj-$(CONFIG_M68EZ328)+= m68EZ328.o
 obj-$(CONFIG_M68VZ328) += m68VZ328.o
 obj-$(CONFIG_ROM)  += romvec.o
 
+obj-$(CONFIG_DRAGEN2)  += dragen2.o
+obj-$(CONFIG_UCSIMM)   += ucsimm.o
+obj-$(CONFIG_UCDIMM)   += ucsimm.o
+
 extra-y:= head.o
diff --git a/arch/m68k/68000/dragen2.c b/arch/m68k/68000/dragen2.c
new file mode 100644
index ..584893c57c37
--- /dev/null
+++ b/arch/m68k/68000/dragen2.c
@@ -0,0 +1,100 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ *  Copyright (C) 1993 Hamish Macdonald
+ *  Copyright (C) 1999 D. Jeff Dionne
+ *  Copyright (C) 2001 Georges Menie, Ken Desmet
+ *
+ * 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.
+ */
+#include 
+#include 
+#include 
+
+/***/
+/*Init Drangon Engine hardware */
+/***/
+
+static void dragen2_reset(void)
+{
+   local_irq_disable();
+
+#ifdef CONFIG_INIT_LCD
+   PBDATA |= 0x20; /* disable CCFL light */
+   PKDATA |= 0x4;  /* disable LCD controller */
+   LCKCON = 0;
+#endif
+
+   __asm__ __volatile__(
+   "reset\n\t"
+   "moveal #0x0400, %a0\n\t"
+   "moveal 0(%a0), %sp\n\t"
+   "moveal 4(%a0), %a0\n\t"
+   "jmp (%a0)"
+   );
+}
+
+void __init init_dragen2(char *command, int size)
+{
+   mach_reset = dragen2_reset;
+
+#ifdef CONFIG_DIRECT_IO_ACCESS
+   SCR = 0x10; /* allow user access to 
internal registers */
+#endif
+
+   /* CSGB Init */
+   CSGBB = 0x4000;
+   CSB = 0x1a1;
+
+   /* CS8900 init */
+   /* PK3: hardware sleep function pin, active low */
+   PKSEL |= PK(3); /* select pin as I/O */
+   PKDIR |= PK(3); /* select pin as output */
+   PKDATA |= PK(3);/* set pin high */
+
+   /* PF5: hardware reset function pin, active high */
+   PFSEL |= PF(5); /* select pin as I/O */
+   PFDIR |= PF(5); /* select pin as output */
+   PFDATA &= ~PF(5);   /* set pin low */
+
+   /* cs8900 hardware reset */
+   PFDATA |= PF(5);
+   { int i; for (i = 0; i < 32000; ++i); }
+   PFDATA &= ~PF(5);
+
+   /* INT1 enable (cs8900 IRQ) */
+   PDPOL &= ~PD(1);/* active high signal */
+   PDIQEG &= ~PD(1);
+   PDIRQEN |= PD(1);   /* IRQ enabled */
+
+#ifdef CONFIG_INIT_LCD
+   /* initialize LCD controller */
+   LSSA = (long) screen_bits;
+   LVPW = 0x14;
+   LXMAX = 0x140;
+   LYMAX = 0xef;
+   LRRA = 0;
+   LPXCD = 3;
+   LPICF = 0x08;
+   LPOLCF = 0;
+   LCKCON = 0x80;
+   PCPDEN = 0xff;
+   PCSEL = 0;
+
+   /* Enable LCD controller */
+   PKDIR |= 0x4;
+   PKSEL |= 0x4;
+   PKDATA &= ~0x4;
+
+   /* Enable CCFL backlighting circuit */
+   PBDIR |= 0x20;
+   PBSEL |= 0x20;
+   PBDATA &= ~0x20;
+
+   /* contrast control register */
+   PFDIR |= 0x1;
+   PFSEL &= ~0x1;
+   PWMR = 0x037F;
+#endif
+}
diff --git a/arch/m68k/68000/m68328.c b/arch/m68k/68000/m68328.c
index 419751b15ec8..6a5cfc977150 100644
--- a/arch/m68k/68000/m68328.c
+++ b/arch/m68k/68000/m68328.c
@@ -25,9 +25,10 @@
 #include "bootlogo.h"
 #endif
 
+#include "m68328.h"
+
 /***/
 
-int m68328_hwclk(int set, struct rtc_time *t);