]> CyberLeo.Net >> Repos - FreeBSD/releng/7.2.git/blob - tools/tools/nanobsd/FlashDevice.sub
Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.
[FreeBSD/releng/7.2.git] / tools / tools / nanobsd / FlashDevice.sub
1 #!/bin/sh
2 #
3 # Copyright (c) 2005 Poul-Henning Kamp.
4 # All rights reserved.
5 #
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions
8 # are met:
9 # 1. Redistributions of source code must retain the above copyright
10 #    notice, this list of conditions and the following disclaimer.
11 # 2. Redistributions in binary form must reproduce the above copyright
12 #    notice, this list of conditions and the following disclaimer in the
13 #    documentation and/or other materials provided with the distribution.
14 #
15 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 # ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25 # SUCH DAMAGE.
26 #
27 # $FreeBSD$
28 #
29 # Convenience function for commonly used Flash devices.
30 #
31 # There is a hook over in nanobsd.sh which allows you to call into
32 # this function simply with a line like:
33 #
34 #       FlashDevice Sandisk 256
35 #
36 # This file will then set NANO_MEDIASIZE, NANO_HEADS and NANO_SECTS for you.
37 #
38
39 sub_FlashDevice () {
40
41         a1=`echo $1 | tr '[:upper:]' '[:lower:]'`
42         a2=`echo $2 | tr '[:upper:]' '[:lower:]'`
43         case $a1 in
44         integral)
45                 # Source: mich@FreeBSD.org
46                 case $a2 in
47                 256|256mb)
48                         NANO_MEDIASIZE=`expr 259596288 / 512`
49                         NANO_HEADS=16
50                         NANO_SECTS=63
51                         ;;
52                 *)
53                         echo "Unknown Integral i-Pro Flash capacity"
54                         exit 2
55                         ;;
56                 esac
57                 ;;
58         memorycorp)
59                 # Source: simon@FreeBSD.org
60                 case $a2 in
61                 512|512mb)
62                         # MC512CFLS2
63                         NANO_MEDIASIZE=`expr 519192576 / 512`
64                         NANO_HEADS=16
65                         NANO_SECTS=63
66                         ;;
67                 *)
68                         echo "Unknown Memory Corp Flash capacity"
69                         exit 2
70                         ;;
71                 esac
72                 ;;
73         sandisk)
74                 # Source:
75                 #       SanDisk CompactFlash Memory Card
76                 #       Product Manual
77                 #       Version 10.9
78                 #       Document No. 20-10-00038
79                 #       April 2005
80                 # Table 2-7 
81                 # NB: notice math error in SDCFJ-4096-388 line.
82                 #
83                 case $a2 in
84                 32|32mb)
85                         NANO_MEDIASIZE=`expr 32112640 / 512`
86                         NANO_HEADS=4
87                         NANO_SECTS=32
88                         ;;
89                 64|64mb)
90                         NANO_MEDIASIZE=`expr 64225280 / 512`
91                         NANO_HEADS=8
92                         NANO_SECTS=32
93                         ;;
94                 128|128mb)
95                         NANO_MEDIASIZE=`expr 128450560 / 512`
96                         NANO_HEADS=8
97                         NANO_SECTS=32
98                         ;;
99                 256|256mb)
100                         NANO_MEDIASIZE=`expr 256901120 / 512`
101                         NANO_HEADS=16
102                         NANO_SECTS=32
103                         ;;
104                 512|512mb)
105                         NANO_MEDIASIZE=`expr 512483328 / 512`
106                         NANO_HEADS=16
107                         NANO_SECTS=63
108                         ;;
109                 1024|1024mb|1g)
110                         NANO_MEDIASIZE=`expr 1024966656 / 512`
111                         NANO_HEADS=16
112                         NANO_SECTS=63
113                         ;;
114                 2048|2048mb|2g)
115                         NANO_MEDIASIZE=`expr 2048901120 / 512`
116                         NANO_HEADS=16
117                         NANO_SECTS=63
118                         ;;
119                 4096|4096mb|4g)
120                         NANO_MEDIASIZE=`expr -e 4097802240 / 512`
121                         NANO_HEADS=16
122                         NANO_SECTS=63
123                         ;;
124                 *)
125                         echo "Unknown Sandisk Flash capacity"
126                         exit 2
127                         ;;
128                 esac
129                 ;;
130         siliconsystems)
131                 case $a2 in
132                 4096|4g)
133                         NANO_MEDIASIZE=`expr -e 4224761856 / 512`
134                         NANO_HEADS=16
135                         NANO_SECTS=63
136                         ;;
137                 *)
138                         echo "Unknown SiliconSystems Flash capacity"
139                         exit 2
140                         ;;
141                 esac
142                 ;;
143         soekris)
144                 case $a2 in
145                 net4526 | 4526 | net4826 | 4826 | 64 | 64mb)
146                         NANO_MEDIASIZE=125056
147                         NANO_HEADS=4
148                         NANO_SECTS=32
149                         ;;
150                 *)
151                         echo "Unknown Soekris Flash capacity"
152                         exit 2
153                         ;;
154                 esac
155                 ;;
156         transcend)
157                 case $a2 in
158                 dom064m)
159                         NANO_MEDIASIZE=125184
160                         NANO_HEADS=4
161                         NANO_SECTS=32
162                         ;;
163                 2048|2g)
164                         NANO_MEDIASIZE=4061232
165                         NANO_HEADS=16
166                         NANO_SECTS=32
167                         ;;
168                 *)
169                         echo "Unknown Transcend Flash capacity"
170                         exit 2
171                         ;;
172                 esac
173                 ;;
174         *)
175                 echo "Unknown Flash manufacturer"
176                 exit 2
177                 ;;
178         esac
179 }
180