summaryrefslogtreecommitdiffstats
path: root/board/ipe337/ipe337.c
blob: 6d479fcd37426daf22f46737d369f3d97afeacbb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <common.h>
#include <init.h>
#include <driver.h>
#include <asm/cpu/cdefBF561.h>
#include <partition.h>

static struct device_d cfi_dev = {
	.name     = "cfi_flash",
	.id       = "nor0",

	.map_base = 0x20000000,
	.size     = 32 * 1024 * 1024,
};

static struct device_d sdram_dev = {
	.name     = "ram",
	.id       = "ram0",

	.map_base = 0x0,
	.size     = 128 * 1024 * 1024,

	.type     = DEVICE_TYPE_DRAM,
};

static struct device_d smc911x_dev = {
	.name     = "smc911x",
	.id       = "eth0",
	.map_base = 0x24000000,
	.size     = 4096,
	.type     = DEVICE_TYPE_ETHER,
};

static int ipe337_devices_init(void) {
	register_device(&cfi_dev);
	register_device(&sdram_dev);

	/* Reset smc911x */
	*pFIO0_DIR = (1<<12);
	*pFIO0_FLAG_C = (1<<12);
	mdelay(100);
	*pFIO0_FLAG_S = (1<<12);

	register_device(&smc911x_dev);

	devfs_add_partition("nor0", 0x00000, 0x20000, PARTITION_FIXED, "self");
	devfs_add_partition("nor0", 0x20000, 0x20000, PARTITION_FIXED, "env");

	dev_protect(&cfi_dev, 0x20000, 0, 1);

	return 0;
}

device_initcall(ipe337_devices_init);

static struct device_d blackfin_serial_device = {
	.name     = "blackfin_serial",
	.id       = "cs0",
	.map_base = 0,
	.size     = 4096,
	.type     = DEVICE_TYPE_CONSOLE,
};

static int blackfin_console_init(void)
{
	register_device(&blackfin_serial_device);

	return 0;
}

console_initcall(blackfin_console_init);