[ifxmips]
[openwrt/svn-archive/archive.git] / target / linux / ifxmips / files-2.6.33 / arch / mips / ifxmips / danube / arcaydian.c
1 #include <linux/init.h>
2 #include <linux/module.h>
3 #include <linux/types.h>
4 #include <linux/string.h>
5 #include <linux/mtd/physmap.h>
6 #include <linux/kernel.h>
7 #include <linux/reboot.h>
8 #include <linux/platform_device.h>
9 #include <linux/leds.h>
10 #include <linux/etherdevice.h>
11 #include <linux/reboot.h>
12 #include <linux/time.h>
13 #include <linux/io.h>
14 #include <linux/gpio.h>
15
16 #include <ifxmips.h>
17 #include <ifxmips_prom.h>
18
19 #include "arcaydian.h"
20
21 static int ifxmips_brn = 0;
22
23 int __init
24 ifxmix_detect_brn_block(void)
25 {
26 unsigned char temp[8];
27 memcpy_fromio(temp,
28 (void *)KSEG1ADDR(IFXMIPS_FLASH_START + 0x800000 - 0x10000), 8);
29 if (!memcmp(temp, "BRN-BOOT", 8))
30 ifxmips_brn = 1;
31 return !ifxmips_brn;
32 }
33
34 int __init
35 ifxmips_find_brn_mac(unsigned char *ifxmips_ethaddr)
36 {
37 if(!ifxmips_brn)
38 return 1;
39 memcpy_fromio(ifxmips_ethaddr,
40 (void *)KSEG1ADDR(IFXMIPS_FLASH_START +
41 0x800000 - 0x10000 + 0x16), 6);
42 return is_valid_ether_addr(ifxmips_ethaddr);
43 }
44
45 int
46 ifxmips_has_brn_block(void)
47 {
48 return ifxmips_brn;
49 }
50 EXPORT_SYMBOL(ifxmips_has_brn_block);