patch-2.4.0-test12 linux/arch/m68k/q40/config.c

Next file: linux/arch/m68k/q40/q40ints.c
Previous file: linux/arch/m68k/q40/README
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test11/linux/arch/m68k/q40/config.c linux/arch/m68k/q40/config.c
@@ -13,6 +13,7 @@
  */
 
 #include <linux/config.h>
+#include <stdarg.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/mm.h>
@@ -22,6 +23,7 @@
 #include <linux/linkage.h>
 #include <linux/init.h>
 #include <linux/major.h>
+#include <linux/serial_reg.h>
 
 #include <asm/rtc.h>
 #include <asm/bootinfo.h>
@@ -34,8 +36,8 @@
 #include <asm/q40_master.h>
 #include <asm/keyboard.h>
 
-extern void fd_floppy_eject(void);
-extern void fd_floppy_setup(char *str, int *ints);
+extern void floppy_eject(void);
+extern void floppy_setup(char *str, int *ints);
 
 extern void q40_process_int (int level, struct pt_regs *regs);
 extern void (*q40_sys_default_handler[]) (int, void *, struct pt_regs *);  /* added just for debugging */
@@ -65,9 +67,12 @@
 extern char m68k_debug_device[];
 static void q40_mem_console_write(struct console *co, const char *b,
 				    unsigned int count);
+#if 0
+extern int ql_ticks=0;
+extern int sound_ticks=0;
+#endif
 
-static int ql_ticks=0;
-static int sound_ticks=0;
+extern int ql_ticks;
 
 static unsigned char bcd2bin (unsigned char b);
 static unsigned char bin2bcd (unsigned char b);
@@ -81,16 +86,16 @@
 };
 
 
-/* Save tick handler routine pointer, will point to do_timer() in
- * kernel/sched.c */
-
-/* static void (*tick_handler)(int, void *, struct pt_regs *); */
-
-
 /* early debugging function:*/
 extern char *q40_mem_cptr; /*=(char *)0xff020000;*/
 static int _cpleft;
 
+int q40_kbd_translate(unsigned char keycode, unsigned char *keycodep, char raw_mode)
+{
+        *keycodep = keycode;
+        return 1;
+}
+
 static void q40_mem_console_write(struct console *co, const char *s,
 				  unsigned int count)
 {
@@ -140,6 +145,41 @@
     sprintf(model, "Q40");
 }
 
+/* pasted code to make parport_pc happy */
+extern __inline__ int __get_order(unsigned long size)
+{
+	int order;
+
+	size = (size-1) >> (PAGE_SHIFT-1);
+	order = -1;
+	do {
+		size >>= 1;
+		order++;
+	} while (size);
+	return order;
+}
+void *pci_alloc_consistent(void *hwdev, size_t size,
+			   dma_addr_t *dma_handle)
+{
+	void *ret;
+	int gfp = GFP_ATOMIC;
+
+	ret = (void *)__get_free_pages(gfp, __get_order(size));
+
+	if (ret != NULL) {
+		memset(ret, 0, size);
+		*dma_handle = virt_to_bus(ret);
+	}
+	return ret;
+}
+
+void pci_free_consistent(void *hwdev, size_t size,
+			 void *vaddr, dma_addr_t dma_handle)
+{
+	free_pages((unsigned long)vaddr, __get_order(size));
+}
+/* end pasted code */
+
 
 /* No hardware options on Q40? */
 
@@ -149,12 +189,23 @@
     return 0;
 }
 
+static unsigned int serports[]={0x3f8,0x2f8,0x3e8,0x2e8,0};
+void q40_disable_irqs(void)
+{
+  unsigned i,j;
+  
+  j=0;
+  while((i=serports[j++])) outb(0,i+UART_IER);
+  master_outb(0,EXT_ENABLE_REG);
+  master_outb(0,KEY_IRQ_ENABLE_REG);
+}
 
 void __init config_q40(void)
 {
     mach_sched_init      = q40_sched_init;           /* ok */
     /*mach_kbdrate         = q40_kbdrate;*/          /* unneeded ?*/
     mach_keyb_init       = q40_keyb_init;            /* OK */
+    mach_kbd_translate   = q40_kbd_translate;
     mach_init_IRQ        = q40_init_IRQ;   
     mach_gettimeoffset   = q40_gettimeoffset; 
     mach_gettod  	 = q40_gettod;
@@ -177,13 +228,14 @@
     mach_sysrq_key       = 0x54;
 #endif
     conswitchp = &dummy_con;
-#ifdef CONFIG_BLK_DEV_FD
-    mach_floppy_setup    = fd_floppy_setup;
-    mach_floppy_eject    = fd_floppy_eject;
+#if 0 /*def CONFIG_BLK_DEV_FD*/
+    mach_floppy_setup    = floppy_setup;
+    mach_floppy_eject    = floppy_eject;
     /**/
 #endif
 
-    mach_max_dma_address = 0;   /* no DMA at all */
+    q40_disable_irqs();
+    mach_max_dma_address = 32*1024*1024;   /* no DMA at all, but ide-scsi requires it.. */
 
 
 /* userfull for early debuging stages writes kernel messages into SRAM */
@@ -203,6 +255,7 @@
   return 1;  /* unknown */
 }
 
+#if 0
 #define DAC_LEFT  ((unsigned char *)0xff008000)
 #define DAC_RIGHT ((unsigned char *)0xff008004)
 void q40_mksound(unsigned int hz, unsigned int ticks)
@@ -258,7 +311,11 @@
 #endif
     q40_timer_routine(irq, dev_id, fp);
 }
+#endif
 
+#if 0
+extern void (*q40_timer_routine)(int, void *, struct pt_regs *);
+extern void q40_timer_int();
 
 void q40_sched_init (void (*timer_routine)(int, void *, struct pt_regs *))
 {
@@ -289,7 +346,7 @@
 #endif
 #endif
 }
-
+#endif
 
 unsigned long q40_gettimeoffset (void)
 {

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)