add 2.6.26 specific files
[librecmc/librecmc.git] / target / linux / adm5120 / files-2.6.26 / arch / mips / adm5120 / infineon / infineon.c
1 /*
2  *  Infineon Reference Boards
3  *
4  *  Copyright (C) 2007-2008 Gabor Juhos <juhosg@openwrt.org>
5  *
6  *  This program is free software; you can redistribute it and/or modify it
7  *  under the terms of the GNU General Public License version 2 as published
8  *  by the Free Software Foundation.
9  *
10  */
11
12 #include "infineon.h"
13
14 #ifdef CONFIG_MTD_PARTITIONS
15 static struct mtd_partition easy_partitions[] = {
16         {
17                 .name   = "admboot",
18                 .offset = 0,
19                 .size   = 64*1024,
20                 .mask_flags = MTD_WRITEABLE,
21         } , {
22                 .name   = "boardcfg",
23                 .offset = MTDPART_OFS_APPEND,
24                 .size   = 64*1024,
25         } , {
26                 .name   = "firmware",
27                 .offset = MTDPART_OFS_APPEND,
28                 .size   = MTDPART_SIZ_FULL,
29         }
30 };
31 #endif /* CONFIG_MTD_PARTITIONS */
32
33 static void switch_bank_gpio3(unsigned bank)
34 {
35         switch (bank) {
36         case 0:
37                 gpio_set_value(ADM5120_GPIO_PIN3, 0);
38                 break;
39         case 1:
40                 gpio_set_value(ADM5120_GPIO_PIN3, 1);
41                 break;
42         }
43 }
44
45 void __init easy_setup_pqfp(void)
46 {
47         /* setup flash A20 line */
48         gpio_request(ADM5120_GPIO_PIN3, NULL);
49         gpio_direction_output(ADM5120_GPIO_PIN3, 0);
50         adm5120_flash0_data.switch_bank = switch_bank_gpio3;
51
52 #ifdef CONFIG_MTD_PARTITIONS
53         adm5120_flash0_data.nr_parts = ARRAY_SIZE(easy_partitions);
54         adm5120_flash0_data.parts = easy_partitions;
55 #endif /* CONFIG_MTD_PARTITIONS */
56
57         adm5120_add_device_flash(0);
58 }
59
60 static void switch_bank_gpio5(unsigned bank)
61 {
62         switch (bank) {
63         case 0:
64                 gpio_set_value(ADM5120_GPIO_PIN5, 0);
65                 break;
66         case 1:
67                 gpio_set_value(ADM5120_GPIO_PIN5, 1);
68                 break;
69         }
70 }
71
72 void __init easy_setup_bga(void)
73 {
74         /* setup flash A20 line */
75         gpio_request(ADM5120_GPIO_PIN5, NULL);
76         gpio_direction_output(ADM5120_GPIO_PIN5, 0);
77         adm5120_flash0_data.switch_bank = switch_bank_gpio5;
78
79 #ifdef CONFIG_MTD_PARTITIONS
80         adm5120_flash0_data.nr_parts = ARRAY_SIZE(easy_partitions);
81         adm5120_flash0_data.parts = easy_partitions;
82 #endif /* CONFIG_MTD_PARTITIONS */
83
84         adm5120_add_device_flash(0);
85 }