| /* |
| * linux/arch/sh/boards/cat68701/setup.c |
| * |
| * Copyright (C) 2000 Niibe Yutaka |
| * 2001 Yutaro Ebihara |
| * |
| * Setup routines for A-ONE Corp CAT-68701 SH7708 Board |
| * |
| * 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 <asm/io.h> |
| #include <asm/machvec.h> |
| #include <asm/mach/io.h> |
| #include <linux/module.h> |
| #include <linux/init.h> |
| #include <linux/sched.h> |
| |
| const char *get_system_type(void) |
| { |
| return "CAT-68701"; |
| } |
| |
| #ifdef CONFIG_HEARTBEAT |
| void heartbeat_cat68701() |
| { |
| static unsigned int cnt = 0, period = 0 , bit = 0; |
| cnt += 1; |
| if (cnt < period) { |
| return; |
| } |
| cnt = 0; |
| |
| /* Go through the points (roughly!): |
| * f(0)=10, f(1)=16, f(2)=20, f(5)=35,f(inf)->110 |
| */ |
| period = 110 - ( (300<<FSHIFT)/ |
| ((avenrun[0]/5) + (3<<FSHIFT)) ); |
| |
| if(bit){ bit=0; }else{ bit=1; } |
| outw(bit<<15,0x3fe); |
| } |
| #endif /* CONFIG_HEARTBEAT */ |
| |
| unsigned long cat68701_isa_port2addr(unsigned long offset) |
| { |
| /* CompactFlash (IDE) */ |
| if (((offset >= 0x1f0) && (offset <= 0x1f7)) || (offset==0x3f6)) |
| return 0xba000000 + offset; |
| |
| /* INPUT PORT */ |
| if ((offset >= 0x3fc) && (offset <= 0x3fd)) |
| return 0xb4007000 + offset; |
| |
| /* OUTPUT PORT */ |
| if ((offset >= 0x3fe) && (offset <= 0x3ff)) |
| return 0xb4007400 + offset; |
| |
| return offset + 0xb4000000; /* other I/O (EREA 5)*/ |
| } |
| |
| /* |
| * The Machine Vector |
| */ |
| |
| struct sh_machine_vector mv_cat68701 __initmv = { |
| .mv_nr_irqs = 32, |
| .mv_isa_port2addr = cat68701_isa_port2addr, |
| .mv_irq_demux = cat68701_irq_demux, |
| |
| .mv_init_irq = init_cat68701_IRQ, |
| #ifdef CONFIG_HEARTBEAT |
| .mv_heartbeat = heartbeat_cat68701, |
| #endif |
| }; |
| ALIAS_MV(cat68701) |
| |
| int __init platform_setup(void) |
| { |
| /* dummy read erea5 (CS8900A) */ |
| } |
| |