]> git.hungrycats.org Git - linux/commitdiff
[PATCH] sh: hd64461 updates
authorAndrew Morton <akpm@osdl.org>
Fri, 13 Feb 2004 07:46:06 +0000 (23:46 -0800)
committerLinus Torvalds <torvalds@home.osdl.org>
Fri, 13 Feb 2004 07:46:06 +0000 (23:46 -0800)
From: Paul Mundt <lethal@linux-sh.org>

This updates a number of the hd64461 cchip definitions (needed by hitfb), and
also adds some additional I/O routines.

arch/sh/cchips/hd6446x/hd64461/io.c
include/asm-sh/hd64461/hd64461.h
include/asm-sh/hd64461/io.h

index 470de9823c7732ba953caea22da6ecf62701a42a..49b3bfbb13f59e0b909688b94f299fd29d0c717b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *     $Id: io.c,v 1.4 2003/08/03 03:05:10 lethal Exp $
+ *     $Id: io.c,v 1.5 2004/02/01 19:46:04 lethal Exp $
  *     Copyright (C) 2000 YAEGASHI Takeshi
  *     Typical I/O routines for HD64461 system.
  */
@@ -99,3 +99,44 @@ void hd64461_outl(unsigned int b, unsigned long port)
         *(volatile unsigned long*)PORT2ADDR(port) = b;
 }
 
+void hd64461_insb(unsigned long port, void *buffer, unsigned long count)
+{
+       volatile unsigned char* addr=(volatile unsigned char*)PORT2ADDR(port);
+       unsigned char *buf=buffer;
+       while(count--) *buf++=*addr;
+}
+
+void hd64461_insw(unsigned long port, void *buffer, unsigned long count)
+{
+       volatile unsigned short* addr=(volatile unsigned short*)PORT2ADDR(port);
+       unsigned short *buf=buffer;
+       while(count--) *buf++=*addr;
+}
+
+void hd64461_insl(unsigned long port, void *buffer, unsigned long count)
+{
+       volatile unsigned long* addr=(volatile unsigned long*)PORT2ADDR(port);
+       unsigned long *buf=buffer;
+       while(count--) *buf++=*addr;
+}
+
+void hd64461_outsb(unsigned long port, const void *buffer, unsigned long count)
+{
+       volatile unsigned char* addr=(volatile unsigned char*)PORT2ADDR(port);
+       const unsigned char *buf=buffer;
+       while(count--) *addr=*buf++;
+}
+
+void hd64461_outsw(unsigned long port, const void *buffer, unsigned long count)
+{
+       volatile unsigned short* addr=(volatile unsigned short*)PORT2ADDR(port);
+       const unsigned short *buf=buffer;
+       while(count--) *addr=*buf++;
+}
+
+void hd64461_outsl(unsigned long port, const void *buffer, unsigned long count)
+{
+       volatile unsigned long* addr=(volatile unsigned long*)PORT2ADDR(port);
+       const unsigned long *buf=buffer;
+       while(count--) *addr=*buf++;
+}
index 4badb6e0c58bcabeed3e28b3aa64501dc00b79b4..306541673860299ccfc634151948a7e5bb5e098d 100644 (file)
@@ -1,20 +1,40 @@
 #ifndef __ASM_SH_HD64461
 #define __ASM_SH_HD64461
 /*
- *     $Id: hd64461.h,v 1.3 2003/05/04 19:30:14 lethal Exp $
+ *     $Id: hd64461.h,v 1.4 2004/02/01 19:46:04 lethal Exp $
  *     Copyright (C) 2000 YAEGASHI Takeshi
  *     Hitachi HD64461 companion chip support
  */
 #include <linux/config.h>
 
 #define HD64461_STBCR  0x10000
+#define HD64461_STBCR_CKIO_STBY                        0x2000
+#define HD64461_STBCR_SAFECKE_IST              0x1000
+#define HD64461_STBCR_SLCKE_IST                        0x0800
+#define HD64461_STBCR_SAFECKE_OST              0x0400
+#define HD64461_STBCR_SLCKE_OST                        0x0200
+#define HD64461_STBCR_SMIAST                   0x0100
+#define HD64461_STBCR_SLCDST                   0x0080
+#define HD64461_STBCR_SPC0ST                   0x0040
+#define HD64461_STBCR_SPC1ST                   0x0020
+#define HD64461_STBCR_SAFEST                   0x0010
+#define HD64461_STBCR_STM0ST                   0x0008
+#define HD64461_STBCR_STM1ST                   0x0004
+#define HD64461_STBCR_SIRST                            0x0002
+#define HD64461_STBCR_SURTSD                   0x0001
+
 #define HD64461_SYSCR  0x10002
 #define HD64461_SCPUCR 0x10004
 
 #define HD64461_LCDCBAR                0x11000
 #define HD64461_LCDCLOR                0x11002
-#define HD64461_LCDCCRR                0x11004
+#define HD64461_LCDCCR         0x11004
+#define HD64461_LCDCCR_MOFF    0x80
+
 #define        HD64461_LDR1            0x11010
+#define        HD64461_LDR1_DON        0x01
+#define        HD64461_LDR1_DINV       0x80
+
 #define        HD64461_LDR2            0x11012
 #define        HD64461_LDHNCR          0x11014
 #define        HD64461_LDHNSR          0x11016
 #define HD64461_CPTRAR         0x11034 
 #define HD64461_CPTRDR         0x11036
 
+#define HD64461_GRDOR          0x11040
+#define HD64461_GRSCR          0x11042
+#define HD64461_GRCFGR         0x11044
+#define HD64461_GRCFGR_ACCSTATUS               0x10
+#define HD64461_GRCFGR_ACCRESET                        0x08
+#define HD64461_GRCFGR_ACCSTART_BITBLT 0x06
+#define HD64461_GRCFGR_ACCSTART_LINE   0x04
+#define HD64461_GRCFGR_COLORDEPTH16            0x01
+
+#define HD64461_LNSARH         0x11046
+#define HD64461_LNSARL         0x11048
+#define HD64461_LNAXLR         0x1104a
+#define HD64461_LNDGR          0x1104c
+#define HD64461_LNAXR          0x1104e
+#define HD64461_LNERTR         0x11050
+#define HD64461_LNMDR          0x11052
+#define HD64461_BBTSSARH       0x11054
+#define HD64461_BBTSSARL       0x11056
+#define HD64461_BBTDSARH       0x11058
+#define HD64461_BBTDSARL       0x1105a
+#define HD64461_BBTDWR         0x1105c
+#define HD64461_BBTDHR         0x1105e
+#define HD64461_BBTPARH                0x11060
+#define HD64461_BBTPARL                0x11062
+#define HD64461_BBTMARH                0x11064
+#define HD64461_BBTMARL                0x11066
+#define HD64461_BBTROPR                0x11068
+#define HD64461_BBTMDR         0x1106a
+
 #define HD64461_PCC0ISR         0x12000
 #define HD64461_PCC0GCR         0x12002
 #define HD64461_PCC0CSCR        0x12004
index 03753b6d458a26088016313a55ef9ff6e68b0b17..a4c22eb98689ad809f660fec4e1c3c025f5cbbe5 100644 (file)
@@ -23,6 +23,15 @@ extern void hd64461_outl(unsigned int value, unsigned long port);
 extern unsigned char hd64461_inb_p(unsigned long port);
 extern void hd64461_outb_p(unsigned char value, unsigned long port);
 
+extern void hd64461_insb(unsigned long port, const void *buffer, unsigned long count);
+extern void hd64461_insw(unsigned long port, const void *buffer, unsigned long count);
+extern void hd64461_insl(unsigned long port, const void *buffer, unsigned long count);
+
+extern void hd64461_outsb(unsigned long port, const void *buffer, unsigned long count);
+extern void hd64461_outsw(unsigned long port, const void *buffer, unsigned long count);
+extern void hd64461_outsl(unsigned long port, const void *buffer, unsigned long count);
+
+
 extern int hd64461_irq_demux(int irq);
 
 #endif /* _ASM_SH_IO_HD64461_H */